diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..e6c82cb --- /dev/null +++ b/Makefile.am @@ -0,0 +1,231 @@ +# Tell automake to put the object file for monitord/apple.c in dir monitord/ +AUTOMAKE_OPTIONS := subdir-objects +ACLOCAL_AMFLAGS = -I m4 + +# The installable executable. +bin_PROGRAMS = monitord/monitord + +#========================================================= +# monitord : The application. + +monitord_monitord_SOURCES = \ + monitord/Monitor.cpp \ + monitord/MonitorAudio.cpp \ + monitord/MonitorConfiguration.cpp \ + monitord/MonitorModuleFMS.cpp \ + monitord/MonitorModulePocsag.cpp \ + monitord/MonitorModulePocsag1200.cpp \ + monitord/MonitorModulePocsag512.cpp \ + monitord/MonitorModuleZVEI.cpp \ + monitord/MonitorModules.cpp \ + monitord/MonitorModulesResults.cpp \ + monitord/SndPipe.cpp \ + monitord/SocketServer.cpp \ + monitord/SocketThreadMonitord.cpp \ + monitord/SocketThreadFMS32.cpp \ + monitord/SocketThreadCrusader.cpp \ + monitord/memlock.cpp \ + monitord/xmltools.cpp \ + monitord/MonitorSignals.cpp \ + xmlParser/xmlParser.cpp + + +EXTRA_DIST =\ + xmlParser/xmlParser.h \ + monitord/*.h \ + monitord/plugins/*.h \ + monitord/generators/*.h \ + monitord/posix/*.h \ + monitord/win32/*.h \ + jthread-1.2.1/src/*.h \ + simpleopt/*.h \ + monitord/lua.hpp \ + sample-config/*xml* + +monitord_monitord_CPPFLAGS = -Ijthread-1.2.1/src -D_DEBUG -Wall +# ausgeschaltet -pedantic +monitord_monitord_LDFLAGS = -g +monitord_monitord_LDADD = + + +if LINUX +monitord_monitord_SOURCES += \ + jthread-1.2.1/src/pthread/jmutex.cpp \ + jthread-1.2.1/src/pthread/jthread.cpp +monitord_monitord_LDFLAGS += -lpthread + +if ALSA +monitord_monitord_SOURCES += \ + monitord/posix/MonitorAudioALSA.cpp +monitord_monitord_LDFLAGS += @ALSA_LIBS@ +else +monitord_monitord_SOURCES += \ + monitord/posix/MonitorAudioOSS.cpp +endif +endif + +# LUA Headers und Libs einbinden +monitord_monitord_CPPFLAGS += @LUA_INCLUDE@ +monitord_monitord_LDFLAGS += @LUA_LIB@ + + +if WINDOWS +monitord_monitord_SOURCES += \ + jthread-1.2.1/src/win32/jmutex.cpp \ + jthread-1.2.1/src/win32/jthread.cpp \ + monitord/win32/MonitorAudioWin32.cpp \ + monitord/win32/MonitorService.cpp +monitord_monitord_CPPFLAGS += -I${PWD} +monitord_monitord_LDADD += -lwinmm -lws2_32 +monitord_monitord_LDFLAGS += -Wl,--subsystem,console -mconsole + +.rc.o: + @WINDRES@ -o $@ $< +endif + + +if PLUGINS +monitord_monitord_CPPFLAGS += -frtti -DPLUGINS +monitord_monitord_SOURCES += \ + monitord/PluginThread.cpp \ + monitord/plugins/mplugin.cpp \ + monitord/plugins/mpluginAudio.cpp + +if LINUX +monitord_monitord_CPPFLAGS += -fPIC -rdynamic +monitord_monitord_LDFLAGS += -ldl +monitord_monitord_SOURCES += \ + monitord/plugins/dll-elf.cpp +DLL = -shared -frtti +endif + +if WINDOWS +monitord_monitord_CPPFLAGS += -DWIN32 +monitord_monitord_LDFLAGS += -lkernel32 -lstdc++ +DLL = -shared -Wl,--export-dynamic -Wl,--output-def=cxxdll.def -Wl,--enable-auto-image-base +monitord_monitord_SOURCES += \ + monitord/plugins/dll-win32.cpp +endif + + +if SOX + +pkglib_LTLIBRARIES= \ + monitord/plugins/libmplugin_audiorecorderSOX.la + +else +pkglib_LTLIBRARIES= \ + monitord/plugins/libmplugin_audiorecorder.la + +endif + +monitord_plugins_common= \ + monitord/xmltools.cpp \ + xmlParser/xmlParser.cpp +# -------------------------------------------------------- +# Monitor-Plugin: MySQL +# + +if MYSQLSTORAGE +pkglib_LTLIBRARIES+= \ + monitord/plugins/libmplugin_mysql.la + +monitord_plugins_libmplugin_mysql_la_SOURCES=\ + ${monitord_plugins_common} \ + monitord/plugins/mplugin.cpp \ + monitord/plugins/libmplugin_mysql.cpp + +monitord_plugins_libmplugin_mysql_la_CPPFLAGS =\ + ${monitord_monitord_CPPFLAGS} \ + -DMYSQLSTORAGE \ + ${DLL} + +monitord_plugins_libmplugin_mysql_la_LDFLAGS=\ + -no-undefined \ + ${LIBMYSQLCLIENT} \ + ${DLL} + +monitord_plugins_libmplugin_mysql_la_LIBS=\ + ${LIBMYSQLCLIENT} + +endif # mysql Support ? + +# -------------------------------------------------------- +# Audio-Plugin: Recorder +# +monitord_plugins_libmplugin_audiorecorder_la_SOURCES=\ + ${monitord_plugins_common} \ + monitord/plugins/mplugin.cpp \ + monitord/plugins/mpluginAudio.cpp \ + monitord/plugins/libmplugin_audiorecorder.cpp + +monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS =\ + ${monitord_monitord_CPPFLAGS} \ + ${DLL} + +monitord_plugins_libmplugin_audiorecorder_la_LDFLAGS=\ + -no-undefined \ + ${DLL} + +if LAME +monitord_plugins_libmplugin_audiorecorder_la_LDFLAGS+=\ + ${LIBMP3LAME} + +if LINUX +monitord_plugins_libmplugin_audiorecorder_la_LDFLAGS+=\ + -lm + +endif # LAME && LINUX + +endif # LAME + +if SOX +# -------------------------------------------------------- +# Audio-Plugin: Recorder (SOX) +# +monitord_plugins_libmplugin_audiorecorderSOX_la_SOURCES=\ + ${monitord_plugins_common} \ + monitord/plugins/mplugin.cpp \ + monitord/plugins/mpluginAudio.cpp \ + monitord/plugins/libmplugin_audiorecorderSOX.cpp + +monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS =\ + ${monitord_monitord_CPPFLAGS} \ + ${DLL} + +monitord_plugins_libmplugin_audiorecorderSOX_la_LDFLAGS=\ + -no-undefined \ + ${LIBSOX} \ + ${DLL} + + +if LINUX +monitord_plugins_libmplugin_audiorecorderSOX_la_LDFLAGS+=\ + -lm +endif # SOX && LINUX + +endif # SOX + +endif # PLUGINS + + +#========================================================= + +dok: + (cd monitord && doxygen doxygen.config) + +if WINDOWS +nightly: @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.exe @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.zip + +@PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.exe: monitord/monitord.exe win32-nsis/monitor.nsi + makensis -NOCD win32-nsis/monitor.nsi + +@PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.zip: monitord/monitord.exe + if [ -d @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ ]; then rm -rf @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@; fi + mkdir @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ + cp monitord/monitord.exe @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ + cp sample-config/monitord.xml.win32 @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@/monitord.xml + zip -r9 @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.zip @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ + rm -rf @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ +endif # WINDOWS + diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..e1d302a --- /dev/null +++ b/Makefile.in @@ -0,0 +1,1794 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = monitord/monitord$(EXEEXT) +@LINUX_TRUE@am__append_1 = \ +@LINUX_TRUE@ jthread-1.2.1/src/pthread/jmutex.cpp \ +@LINUX_TRUE@ jthread-1.2.1/src/pthread/jthread.cpp + +@LINUX_TRUE@am__append_2 = -lpthread +@ALSA_TRUE@@LINUX_TRUE@am__append_3 = \ +@ALSA_TRUE@@LINUX_TRUE@ monitord/posix/MonitorAudioALSA.cpp + +@ALSA_TRUE@@LINUX_TRUE@am__append_4 = @ALSA_LIBS@ +@ALSA_FALSE@@LINUX_TRUE@am__append_5 = \ +@ALSA_FALSE@@LINUX_TRUE@ monitord/posix/MonitorAudioOSS.cpp + +@WINDOWS_TRUE@am__append_6 = \ +@WINDOWS_TRUE@ jthread-1.2.1/src/win32/jmutex.cpp \ +@WINDOWS_TRUE@ jthread-1.2.1/src/win32/jthread.cpp \ +@WINDOWS_TRUE@ monitord/win32/MonitorAudioWin32.cpp \ +@WINDOWS_TRUE@ monitord/win32/MonitorService.cpp + +@WINDOWS_TRUE@am__append_7 = -I${PWD} +@WINDOWS_TRUE@am__append_8 = -lwinmm -lws2_32 +@WINDOWS_TRUE@am__append_9 = -Wl,--subsystem,console -mconsole +@PLUGINS_TRUE@am__append_10 = -frtti -DPLUGINS +@PLUGINS_TRUE@am__append_11 = \ +@PLUGINS_TRUE@ monitord/PluginThread.cpp \ +@PLUGINS_TRUE@ monitord/plugins/mplugin.cpp \ +@PLUGINS_TRUE@ monitord/plugins/mpluginAudio.cpp + +@LINUX_TRUE@@PLUGINS_TRUE@am__append_12 = -fPIC -rdynamic +@LINUX_TRUE@@PLUGINS_TRUE@am__append_13 = -ldl +@LINUX_TRUE@@PLUGINS_TRUE@am__append_14 = \ +@LINUX_TRUE@@PLUGINS_TRUE@ monitord/plugins/dll-elf.cpp + +@PLUGINS_TRUE@@WINDOWS_TRUE@am__append_15 = -DWIN32 +@PLUGINS_TRUE@@WINDOWS_TRUE@am__append_16 = -lkernel32 -lstdc++ +@PLUGINS_TRUE@@WINDOWS_TRUE@am__append_17 = \ +@PLUGINS_TRUE@@WINDOWS_TRUE@ monitord/plugins/dll-win32.cpp + +# -------------------------------------------------------- +# Monitor-Plugin: MySQL +# +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@am__append_18 = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ monitord/plugins/libmplugin_mysql.la + +@LAME_TRUE@@PLUGINS_TRUE@am__append_19 = \ +@LAME_TRUE@@PLUGINS_TRUE@ ${LIBMP3LAME} + +@LAME_TRUE@@LINUX_TRUE@@PLUGINS_TRUE@am__append_20 = \ +@LAME_TRUE@@LINUX_TRUE@@PLUGINS_TRUE@ -lm + +@LINUX_TRUE@@PLUGINS_TRUE@@SOX_TRUE@am__append_21 = \ +@LINUX_TRUE@@PLUGINS_TRUE@@SOX_TRUE@ -lm + +subdir = . +DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure \ + $(top_srcdir)/win32-nsis/monitor.nsi.in config.guess \ + config.sub depcomp install-sh ltmain.sh missing mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/alsa.m4 $(top_srcdir)/m4/lua.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = win32-nsis/monitor.nsi +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +monitord_plugins_libmplugin_audiorecorder_la_LIBADD = +am__monitord_plugins_libmplugin_audiorecorder_la_SOURCES_DIST = \ + monitord/xmltools.cpp xmlParser/xmlParser.cpp \ + monitord/plugins/mplugin.cpp monitord/plugins/mpluginAudio.cpp \ + monitord/plugins/libmplugin_audiorecorder.cpp +am__dirstamp = $(am__leading_dot)dirstamp +@PLUGINS_TRUE@am__objects_1 = monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo \ +@PLUGINS_TRUE@ xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo +@PLUGINS_TRUE@am_monitord_plugins_libmplugin_audiorecorder_la_OBJECTS = \ +@PLUGINS_TRUE@ $(am__objects_1) \ +@PLUGINS_TRUE@ monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo \ +@PLUGINS_TRUE@ monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo \ +@PLUGINS_TRUE@ monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo +monitord_plugins_libmplugin_audiorecorder_la_OBJECTS = \ + $(am_monitord_plugins_libmplugin_audiorecorder_la_OBJECTS) +monitord_plugins_libmplugin_audiorecorder_la_LINK = $(LIBTOOL) \ + --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(monitord_plugins_libmplugin_audiorecorder_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +@PLUGINS_TRUE@@SOX_FALSE@am_monitord_plugins_libmplugin_audiorecorder_la_rpath = \ +@PLUGINS_TRUE@@SOX_FALSE@ -rpath $(libdir) +monitord_plugins_libmplugin_audiorecorderSOX_la_LIBADD = +am__monitord_plugins_libmplugin_audiorecorderSOX_la_SOURCES_DIST = \ + monitord/xmltools.cpp xmlParser/xmlParser.cpp \ + monitord/plugins/mplugin.cpp monitord/plugins/mpluginAudio.cpp \ + monitord/plugins/libmplugin_audiorecorderSOX.cpp +@PLUGINS_TRUE@am__objects_2 = monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo \ +@PLUGINS_TRUE@ xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo +@PLUGINS_TRUE@@SOX_TRUE@am_monitord_plugins_libmplugin_audiorecorderSOX_la_OBJECTS = \ +@PLUGINS_TRUE@@SOX_TRUE@ $(am__objects_2) \ +@PLUGINS_TRUE@@SOX_TRUE@ monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo \ +@PLUGINS_TRUE@@SOX_TRUE@ monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo \ +@PLUGINS_TRUE@@SOX_TRUE@ monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo +monitord_plugins_libmplugin_audiorecorderSOX_la_OBJECTS = \ + $(am_monitord_plugins_libmplugin_audiorecorderSOX_la_OBJECTS) +monitord_plugins_libmplugin_audiorecorderSOX_la_LINK = $(LIBTOOL) \ + --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(monitord_plugins_libmplugin_audiorecorderSOX_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +@PLUGINS_TRUE@@SOX_TRUE@am_monitord_plugins_libmplugin_audiorecorderSOX_la_rpath = \ +@PLUGINS_TRUE@@SOX_TRUE@ -rpath $(libdir) +monitord_plugins_libmplugin_mysql_la_LIBADD = +am__monitord_plugins_libmplugin_mysql_la_SOURCES_DIST = \ + monitord/xmltools.cpp xmlParser/xmlParser.cpp \ + monitord/plugins/mplugin.cpp \ + monitord/plugins/libmplugin_mysql.cpp +@PLUGINS_TRUE@am__objects_3 = monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo \ +@PLUGINS_TRUE@ xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@am_monitord_plugins_libmplugin_mysql_la_OBJECTS = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ $(am__objects_3) \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo +monitord_plugins_libmplugin_mysql_la_OBJECTS = \ + $(am_monitord_plugins_libmplugin_mysql_la_OBJECTS) +monitord_plugins_libmplugin_mysql_la_LINK = $(LIBTOOL) --tag=CXX \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ + $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(monitord_plugins_libmplugin_mysql_la_LDFLAGS) $(LDFLAGS) -o \ + $@ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@@SOX_FALSE@am_monitord_plugins_libmplugin_mysql_la_rpath = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@@SOX_FALSE@ -rpath $(libdir) +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@@SOX_TRUE@am_monitord_plugins_libmplugin_mysql_la_rpath = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@@SOX_TRUE@ -rpath $(libdir) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am__monitord_monitord_SOURCES_DIST = monitord/Monitor.cpp \ + monitord/MonitorAudio.cpp monitord/MonitorConfiguration.cpp \ + monitord/MonitorModuleFMS.cpp monitord/MonitorModulePocsag.cpp \ + monitord/MonitorModulePocsag1200.cpp \ + monitord/MonitorModulePocsag512.cpp \ + monitord/MonitorModuleZVEI.cpp monitord/MonitorModules.cpp \ + monitord/MonitorModulesResults.cpp monitord/SndPipe.cpp \ + monitord/SocketServer.cpp monitord/SocketThreadMonitord.cpp \ + monitord/SocketThreadFMS32.cpp \ + monitord/SocketThreadCrusader.cpp monitord/memlock.cpp \ + monitord/xmltools.cpp monitord/MonitorSignals.cpp \ + xmlParser/xmlParser.cpp jthread-1.2.1/src/pthread/jmutex.cpp \ + jthread-1.2.1/src/pthread/jthread.cpp \ + monitord/posix/MonitorAudioALSA.cpp \ + monitord/posix/MonitorAudioOSS.cpp \ + jthread-1.2.1/src/win32/jmutex.cpp \ + jthread-1.2.1/src/win32/jthread.cpp \ + monitord/win32/MonitorAudioWin32.cpp \ + monitord/win32/MonitorService.cpp monitord/PluginThread.cpp \ + monitord/plugins/mplugin.cpp monitord/plugins/mpluginAudio.cpp \ + monitord/plugins/dll-elf.cpp monitord/plugins/dll-win32.cpp +@LINUX_TRUE@am__objects_4 = jthread-1.2.1/src/pthread/monitord_monitord-jmutex.$(OBJEXT) \ +@LINUX_TRUE@ jthread-1.2.1/src/pthread/monitord_monitord-jthread.$(OBJEXT) +@ALSA_TRUE@@LINUX_TRUE@am__objects_5 = monitord/posix/monitord_monitord-MonitorAudioALSA.$(OBJEXT) +@ALSA_FALSE@@LINUX_TRUE@am__objects_6 = monitord/posix/monitord_monitord-MonitorAudioOSS.$(OBJEXT) +@WINDOWS_TRUE@am__objects_7 = jthread-1.2.1/src/win32/monitord_monitord-jmutex.$(OBJEXT) \ +@WINDOWS_TRUE@ jthread-1.2.1/src/win32/monitord_monitord-jthread.$(OBJEXT) \ +@WINDOWS_TRUE@ monitord/win32/monitord_monitord-MonitorAudioWin32.$(OBJEXT) \ +@WINDOWS_TRUE@ monitord/win32/monitord_monitord-MonitorService.$(OBJEXT) +@PLUGINS_TRUE@am__objects_8 = monitord/monitord_monitord-PluginThread.$(OBJEXT) \ +@PLUGINS_TRUE@ monitord/plugins/monitord_monitord-mplugin.$(OBJEXT) \ +@PLUGINS_TRUE@ monitord/plugins/monitord_monitord-mpluginAudio.$(OBJEXT) +@LINUX_TRUE@@PLUGINS_TRUE@am__objects_9 = monitord/plugins/monitord_monitord-dll-elf.$(OBJEXT) +@PLUGINS_TRUE@@WINDOWS_TRUE@am__objects_10 = monitord/plugins/monitord_monitord-dll-win32.$(OBJEXT) +am_monitord_monitord_OBJECTS = \ + monitord/monitord_monitord-Monitor.$(OBJEXT) \ + monitord/monitord_monitord-MonitorAudio.$(OBJEXT) \ + monitord/monitord_monitord-MonitorConfiguration.$(OBJEXT) \ + monitord/monitord_monitord-MonitorModuleFMS.$(OBJEXT) \ + monitord/monitord_monitord-MonitorModulePocsag.$(OBJEXT) \ + monitord/monitord_monitord-MonitorModulePocsag1200.$(OBJEXT) \ + monitord/monitord_monitord-MonitorModulePocsag512.$(OBJEXT) \ + monitord/monitord_monitord-MonitorModuleZVEI.$(OBJEXT) \ + monitord/monitord_monitord-MonitorModules.$(OBJEXT) \ + monitord/monitord_monitord-MonitorModulesResults.$(OBJEXT) \ + monitord/monitord_monitord-SndPipe.$(OBJEXT) \ + monitord/monitord_monitord-SocketServer.$(OBJEXT) \ + monitord/monitord_monitord-SocketThreadMonitord.$(OBJEXT) \ + monitord/monitord_monitord-SocketThreadFMS32.$(OBJEXT) \ + monitord/monitord_monitord-SocketThreadCrusader.$(OBJEXT) \ + monitord/monitord_monitord-memlock.$(OBJEXT) \ + monitord/monitord_monitord-xmltools.$(OBJEXT) \ + monitord/monitord_monitord-MonitorSignals.$(OBJEXT) \ + xmlParser/monitord_monitord-xmlParser.$(OBJEXT) \ + $(am__objects_4) $(am__objects_5) $(am__objects_6) \ + $(am__objects_7) $(am__objects_8) $(am__objects_9) \ + $(am__objects_10) +monitord_monitord_OBJECTS = $(am_monitord_monitord_OBJECTS) +am__DEPENDENCIES_1 = +monitord_monitord_DEPENDENCIES = $(am__DEPENDENCIES_1) +monitord_monitord_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(monitord_monitord_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(monitord_plugins_libmplugin_audiorecorder_la_SOURCES) \ + $(monitord_plugins_libmplugin_audiorecorderSOX_la_SOURCES) \ + $(monitord_plugins_libmplugin_mysql_la_SOURCES) \ + $(monitord_monitord_SOURCES) +DIST_SOURCES = $(am__monitord_plugins_libmplugin_audiorecorder_la_SOURCES_DIST) \ + $(am__monitord_plugins_libmplugin_audiorecorderSOX_la_SOURCES_DIST) \ + $(am__monitord_plugins_libmplugin_mysql_la_SOURCES_DIST) \ + $(am__monitord_monitord_SOURCES_DIST) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALSA_CFLAGS = @ALSA_CFLAGS@ +ALSA_LIBS = @ALSA_LIBS@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBMP3LAME = @LIBMP3LAME@ +LIBMYSQLCLIENT = @LIBMYSQLCLIENT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSOX = @LIBSOX@ +LIBTOOL = @LIBTOOL@ +LIBVORBIS = @LIBVORBIS@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LUA_INCLUDE = @LUA_INCLUDE@ +LUA_LIB = @LUA_LIB@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Tell automake to put the object file for monitord/apple.c in dir monitord/ +AUTOMAKE_OPTIONS := subdir-objects + +#========================================================= +# monitord : The application. +monitord_monitord_SOURCES = monitord/Monitor.cpp \ + monitord/MonitorAudio.cpp monitord/MonitorConfiguration.cpp \ + monitord/MonitorModuleFMS.cpp monitord/MonitorModulePocsag.cpp \ + monitord/MonitorModulePocsag1200.cpp \ + monitord/MonitorModulePocsag512.cpp \ + monitord/MonitorModuleZVEI.cpp monitord/MonitorModules.cpp \ + monitord/MonitorModulesResults.cpp monitord/SndPipe.cpp \ + monitord/SocketServer.cpp monitord/SocketThreadMonitord.cpp \ + monitord/SocketThreadFMS32.cpp \ + monitord/SocketThreadCrusader.cpp monitord/memlock.cpp \ + monitord/xmltools.cpp monitord/MonitorSignals.cpp \ + xmlParser/xmlParser.cpp $(am__append_1) $(am__append_3) \ + $(am__append_5) $(am__append_6) $(am__append_11) \ + $(am__append_14) $(am__append_17) + +# LUA Headers und Libs einbinden +monitord_monitord_CPPFLAGS = -Ijthread-1.2.1/src -D_DEBUG -Wall \ + @LUA_INCLUDE@ $(am__append_7) $(am__append_10) \ + $(am__append_12) $(am__append_15) +# ausgeschaltet -pedantic +monitord_monitord_LDFLAGS = -g $(am__append_2) $(am__append_4) \ + @LUA_LIB@ $(am__append_9) $(am__append_13) $(am__append_16) +monitord_monitord_LDADD = $(am__append_8) +@LINUX_TRUE@@PLUGINS_TRUE@DLL = -shared -frtti +@PLUGINS_TRUE@@WINDOWS_TRUE@DLL = -shared -Wl,--export-dynamic -Wl,--output-def=cxxdll.def -Wl,--enable-auto-image-base +@PLUGINS_TRUE@@SOX_FALSE@lib_LTLIBRARIES = monitord/plugins/libmplugin_audiorecorder.la \ +@PLUGINS_TRUE@@SOX_FALSE@ $(am__append_18) +@PLUGINS_TRUE@@SOX_TRUE@lib_LTLIBRARIES = monitord/plugins/libmplugin_audiorecorderSOX.la \ +@PLUGINS_TRUE@@SOX_TRUE@ $(am__append_18) +@PLUGINS_TRUE@monitord_plugins_common = \ +@PLUGINS_TRUE@ monitord/xmltools.cpp \ +@PLUGINS_TRUE@ xmlParser/xmlParser.cpp + +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@monitord_plugins_libmplugin_mysql_la_SOURCES = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ ${monitord_plugins_common} \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ monitord/plugins/mplugin.cpp \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ monitord/plugins/libmplugin_mysql.cpp + +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@monitord_plugins_libmplugin_mysql_la_CPPFLAGS = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ ${monitord_monitord_CPPFLAGS} \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ -DMYSQLSTORAGE \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ ${DLL} + +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@monitord_plugins_libmplugin_mysql_la_LDFLAGS = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ -no-undefined \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ ${LIBMYSQLCLIENT} \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ ${DLL} + +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@monitord_plugins_libmplugin_mysql_la_LIBS = \ +@MYSQLSTORAGE_TRUE@@PLUGINS_TRUE@ ${LIBMYSQLCLIENT} + + +# -------------------------------------------------------- +# Audio-Plugin: Recorder +# +@PLUGINS_TRUE@monitord_plugins_libmplugin_audiorecorder_la_SOURCES = \ +@PLUGINS_TRUE@ ${monitord_plugins_common} \ +@PLUGINS_TRUE@ monitord/plugins/mplugin.cpp \ +@PLUGINS_TRUE@ monitord/plugins/mpluginAudio.cpp \ +@PLUGINS_TRUE@ monitord/plugins/libmplugin_audiorecorder.cpp + +@PLUGINS_TRUE@monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS = \ +@PLUGINS_TRUE@ ${monitord_monitord_CPPFLAGS} \ +@PLUGINS_TRUE@ ${DLL} + +@PLUGINS_TRUE@monitord_plugins_libmplugin_audiorecorder_la_LDFLAGS = \ +@PLUGINS_TRUE@ -no-undefined ${DLL} $(am__append_19) \ +@PLUGINS_TRUE@ $(am__append_20) + +# -------------------------------------------------------- +# Audio-Plugin: Recorder (SOX) +# +@PLUGINS_TRUE@@SOX_TRUE@monitord_plugins_libmplugin_audiorecorderSOX_la_SOURCES = \ +@PLUGINS_TRUE@@SOX_TRUE@ ${monitord_plugins_common} \ +@PLUGINS_TRUE@@SOX_TRUE@ monitord/plugins/mplugin.cpp \ +@PLUGINS_TRUE@@SOX_TRUE@ monitord/plugins/mpluginAudio.cpp \ +@PLUGINS_TRUE@@SOX_TRUE@ monitord/plugins/libmplugin_audiorecorderSOX.cpp + +@PLUGINS_TRUE@@SOX_TRUE@monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS = \ +@PLUGINS_TRUE@@SOX_TRUE@ ${monitord_monitord_CPPFLAGS} \ +@PLUGINS_TRUE@@SOX_TRUE@ ${DLL} + +@PLUGINS_TRUE@@SOX_TRUE@monitord_plugins_libmplugin_audiorecorderSOX_la_LDFLAGS = \ +@PLUGINS_TRUE@@SOX_TRUE@ -no-undefined ${LIBSOX} ${DLL} \ +@PLUGINS_TRUE@@SOX_TRUE@ $(am__append_21) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj .rc +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +win32-nsis/monitor.nsi: $(top_builddir)/config.status $(top_srcdir)/win32-nsis/monitor.nsi.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +monitord/$(am__dirstamp): + @$(MKDIR_P) monitord + @: > monitord/$(am__dirstamp) +monitord/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) monitord/$(DEPDIR) + @: > monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo: \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +xmlParser/$(am__dirstamp): + @$(MKDIR_P) xmlParser + @: > xmlParser/$(am__dirstamp) +xmlParser/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) xmlParser/$(DEPDIR) + @: > xmlParser/$(DEPDIR)/$(am__dirstamp) +xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo: \ + xmlParser/$(am__dirstamp) xmlParser/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/$(am__dirstamp): + @$(MKDIR_P) monitord/plugins + @: > monitord/plugins/$(am__dirstamp) +monitord/plugins/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) monitord/plugins/$(DEPDIR) + @: > monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/libmplugin_audiorecorder.la: $(monitord_plugins_libmplugin_audiorecorder_la_OBJECTS) $(monitord_plugins_libmplugin_audiorecorder_la_DEPENDENCIES) monitord/plugins/$(am__dirstamp) + $(monitord_plugins_libmplugin_audiorecorder_la_LINK) $(am_monitord_plugins_libmplugin_audiorecorder_la_rpath) $(monitord_plugins_libmplugin_audiorecorder_la_OBJECTS) $(monitord_plugins_libmplugin_audiorecorder_la_LIBADD) $(LIBS) +monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo: \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo: \ + xmlParser/$(am__dirstamp) xmlParser/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/libmplugin_audiorecorderSOX.la: $(monitord_plugins_libmplugin_audiorecorderSOX_la_OBJECTS) $(monitord_plugins_libmplugin_audiorecorderSOX_la_DEPENDENCIES) monitord/plugins/$(am__dirstamp) + $(monitord_plugins_libmplugin_audiorecorderSOX_la_LINK) $(am_monitord_plugins_libmplugin_audiorecorderSOX_la_rpath) $(monitord_plugins_libmplugin_audiorecorderSOX_la_OBJECTS) $(monitord_plugins_libmplugin_audiorecorderSOX_la_LIBADD) $(LIBS) +monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo: \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo: \ + xmlParser/$(am__dirstamp) xmlParser/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo: \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/libmplugin_mysql.la: $(monitord_plugins_libmplugin_mysql_la_OBJECTS) $(monitord_plugins_libmplugin_mysql_la_DEPENDENCIES) monitord/plugins/$(am__dirstamp) + $(monitord_plugins_libmplugin_mysql_la_LINK) $(am_monitord_plugins_libmplugin_mysql_la_rpath) $(monitord_plugins_libmplugin_mysql_la_OBJECTS) $(monitord_plugins_libmplugin_mysql_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +monitord/monitord_monitord-Monitor.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorAudio.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorConfiguration.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorModuleFMS.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorModulePocsag.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorModulePocsag1200.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorModulePocsag512.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorModuleZVEI.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorModules.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorModulesResults.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-SndPipe.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-SocketServer.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-SocketThreadMonitord.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-SocketThreadFMS32.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-SocketThreadCrusader.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-memlock.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-xmltools.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-MonitorSignals.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +xmlParser/monitord_monitord-xmlParser.$(OBJEXT): \ + xmlParser/$(am__dirstamp) xmlParser/$(DEPDIR)/$(am__dirstamp) +jthread-1.2.1/src/pthread/$(am__dirstamp): + @$(MKDIR_P) jthread-1.2.1/src/pthread + @: > jthread-1.2.1/src/pthread/$(am__dirstamp) +jthread-1.2.1/src/pthread/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) jthread-1.2.1/src/pthread/$(DEPDIR) + @: > jthread-1.2.1/src/pthread/$(DEPDIR)/$(am__dirstamp) +jthread-1.2.1/src/pthread/monitord_monitord-jmutex.$(OBJEXT): \ + jthread-1.2.1/src/pthread/$(am__dirstamp) \ + jthread-1.2.1/src/pthread/$(DEPDIR)/$(am__dirstamp) +jthread-1.2.1/src/pthread/monitord_monitord-jthread.$(OBJEXT): \ + jthread-1.2.1/src/pthread/$(am__dirstamp) \ + jthread-1.2.1/src/pthread/$(DEPDIR)/$(am__dirstamp) +monitord/posix/$(am__dirstamp): + @$(MKDIR_P) monitord/posix + @: > monitord/posix/$(am__dirstamp) +monitord/posix/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) monitord/posix/$(DEPDIR) + @: > monitord/posix/$(DEPDIR)/$(am__dirstamp) +monitord/posix/monitord_monitord-MonitorAudioALSA.$(OBJEXT): \ + monitord/posix/$(am__dirstamp) \ + monitord/posix/$(DEPDIR)/$(am__dirstamp) +monitord/posix/monitord_monitord-MonitorAudioOSS.$(OBJEXT): \ + monitord/posix/$(am__dirstamp) \ + monitord/posix/$(DEPDIR)/$(am__dirstamp) +jthread-1.2.1/src/win32/$(am__dirstamp): + @$(MKDIR_P) jthread-1.2.1/src/win32 + @: > jthread-1.2.1/src/win32/$(am__dirstamp) +jthread-1.2.1/src/win32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) jthread-1.2.1/src/win32/$(DEPDIR) + @: > jthread-1.2.1/src/win32/$(DEPDIR)/$(am__dirstamp) +jthread-1.2.1/src/win32/monitord_monitord-jmutex.$(OBJEXT): \ + jthread-1.2.1/src/win32/$(am__dirstamp) \ + jthread-1.2.1/src/win32/$(DEPDIR)/$(am__dirstamp) +jthread-1.2.1/src/win32/monitord_monitord-jthread.$(OBJEXT): \ + jthread-1.2.1/src/win32/$(am__dirstamp) \ + jthread-1.2.1/src/win32/$(DEPDIR)/$(am__dirstamp) +monitord/win32/$(am__dirstamp): + @$(MKDIR_P) monitord/win32 + @: > monitord/win32/$(am__dirstamp) +monitord/win32/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) monitord/win32/$(DEPDIR) + @: > monitord/win32/$(DEPDIR)/$(am__dirstamp) +monitord/win32/monitord_monitord-MonitorAudioWin32.$(OBJEXT): \ + monitord/win32/$(am__dirstamp) \ + monitord/win32/$(DEPDIR)/$(am__dirstamp) +monitord/win32/monitord_monitord-MonitorService.$(OBJEXT): \ + monitord/win32/$(am__dirstamp) \ + monitord/win32/$(DEPDIR)/$(am__dirstamp) +monitord/monitord_monitord-PluginThread.$(OBJEXT): \ + monitord/$(am__dirstamp) monitord/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_monitord-mplugin.$(OBJEXT): \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_monitord-mpluginAudio.$(OBJEXT): \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_monitord-dll-elf.$(OBJEXT): \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/plugins/monitord_monitord-dll-win32.$(OBJEXT): \ + monitord/plugins/$(am__dirstamp) \ + monitord/plugins/$(DEPDIR)/$(am__dirstamp) +monitord/monitord$(EXEEXT): $(monitord_monitord_OBJECTS) $(monitord_monitord_DEPENDENCIES) monitord/$(am__dirstamp) + @rm -f monitord/monitord$(EXEEXT) + $(monitord_monitord_LINK) $(monitord_monitord_OBJECTS) $(monitord_monitord_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f jthread-1.2.1/src/pthread/monitord_monitord-jmutex.$(OBJEXT) + -rm -f jthread-1.2.1/src/pthread/monitord_monitord-jthread.$(OBJEXT) + -rm -f jthread-1.2.1/src/win32/monitord_monitord-jmutex.$(OBJEXT) + -rm -f jthread-1.2.1/src/win32/monitord_monitord-jthread.$(OBJEXT) + -rm -f monitord/monitord_monitord-Monitor.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorAudio.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorConfiguration.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorModuleFMS.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorModulePocsag.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorModulePocsag1200.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorModulePocsag512.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorModuleZVEI.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorModules.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorModulesResults.$(OBJEXT) + -rm -f monitord/monitord_monitord-MonitorSignals.$(OBJEXT) + -rm -f monitord/monitord_monitord-PluginThread.$(OBJEXT) + -rm -f monitord/monitord_monitord-SndPipe.$(OBJEXT) + -rm -f monitord/monitord_monitord-SocketServer.$(OBJEXT) + -rm -f monitord/monitord_monitord-SocketThreadCrusader.$(OBJEXT) + -rm -f monitord/monitord_monitord-SocketThreadFMS32.$(OBJEXT) + -rm -f monitord/monitord_monitord-SocketThreadMonitord.$(OBJEXT) + -rm -f monitord/monitord_monitord-memlock.$(OBJEXT) + -rm -f monitord/monitord_monitord-xmltools.$(OBJEXT) + -rm -f monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.$(OBJEXT) + -rm -f monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo + -rm -f monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.$(OBJEXT) + -rm -f monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo + -rm -f monitord/monitord_plugins_libmplugin_mysql_la-xmltools.$(OBJEXT) + -rm -f monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo + -rm -f monitord/plugins/monitord_monitord-dll-elf.$(OBJEXT) + -rm -f monitord/plugins/monitord_monitord-dll-win32.$(OBJEXT) + -rm -f monitord/plugins/monitord_monitord-mplugin.$(OBJEXT) + -rm -f monitord/plugins/monitord_monitord-mpluginAudio.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo + -rm -f monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo + -rm -f monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.$(OBJEXT) + -rm -f monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo + -rm -f monitord/posix/monitord_monitord-MonitorAudioALSA.$(OBJEXT) + -rm -f monitord/posix/monitord_monitord-MonitorAudioOSS.$(OBJEXT) + -rm -f monitord/win32/monitord_monitord-MonitorAudioWin32.$(OBJEXT) + -rm -f monitord/win32/monitord_monitord-MonitorService.$(OBJEXT) + -rm -f xmlParser/monitord_monitord-xmlParser.$(OBJEXT) + -rm -f xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.$(OBJEXT) + -rm -f xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo + -rm -f xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.$(OBJEXT) + -rm -f xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo + -rm -f xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.$(OBJEXT) + -rm -f xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jmutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jthread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jmutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jthread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-Monitor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorAudio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorConfiguration.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorModuleFMS.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag1200.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag512.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorModuleZVEI.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorModules.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorModulesResults.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-MonitorSignals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-PluginThread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-SndPipe.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-SocketServer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-SocketThreadCrusader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-SocketThreadFMS32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-SocketThreadMonitord.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-memlock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_monitord-xmltools.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmltools.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmltools.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_monitord-dll-elf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_monitord-dll-win32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_monitord-mplugin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_monitord-mpluginAudio.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mplugin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-mplugin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioALSA.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioOSS.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/win32/$(DEPDIR)/monitord_monitord-MonitorAudioWin32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@monitord/win32/$(DEPDIR)/monitord_monitord-MonitorService.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xmlParser/$(DEPDIR)/monitord_monitord-xmlParser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmlParser.Plo@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo: monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo -MD -MP -MF monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmltools.Tpo -c -o monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmltools.Tpo monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmltools.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/xmltools.cpp' object='monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_plugins_libmplugin_audiorecorder_la-xmltools.lo `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp + +xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo: xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo -MD -MP -MF xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.Tpo -c -o xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ mv -f xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.Tpo xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='xmlParser/xmlParser.cpp' object='xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xmlParser/monitord_plugins_libmplugin_audiorecorder_la-xmlParser.lo `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp + +monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo: monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mplugin.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mplugin.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mplugin.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mplugin.cpp' object='monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mplugin.lo `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp + +monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo: monitord/plugins/mpluginAudio.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo `test -f 'monitord/plugins/mpluginAudio.cpp' || echo '$(srcdir)/'`monitord/plugins/mpluginAudio.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mpluginAudio.cpp' object='monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-mpluginAudio.lo `test -f 'monitord/plugins/mpluginAudio.cpp' || echo '$(srcdir)/'`monitord/plugins/mpluginAudio.cpp + +monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo: monitord/plugins/libmplugin_audiorecorder.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo `test -f 'monitord/plugins/libmplugin_audiorecorder.cpp' || echo '$(srcdir)/'`monitord/plugins/libmplugin_audiorecorder.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/libmplugin_audiorecorder.cpp' object='monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorder_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorder_la-libmplugin_audiorecorder.lo `test -f 'monitord/plugins/libmplugin_audiorecorder.cpp' || echo '$(srcdir)/'`monitord/plugins/libmplugin_audiorecorder.cpp + +monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo: monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo -MD -MP -MF monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.Tpo -c -o monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.Tpo monitord/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/xmltools.cpp' object='monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_plugins_libmplugin_audiorecorderSOX_la-xmltools.lo `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp + +xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo: xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo -MD -MP -MF xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.Tpo -c -o xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ mv -f xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.Tpo xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='xmlParser/xmlParser.cpp' object='xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xmlParser/monitord_plugins_libmplugin_audiorecorderSOX_la-xmlParser.lo `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp + +monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo: monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mplugin.cpp' object='monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mplugin.lo `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp + +monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo: monitord/plugins/mpluginAudio.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo `test -f 'monitord/plugins/mpluginAudio.cpp' || echo '$(srcdir)/'`monitord/plugins/mpluginAudio.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mpluginAudio.cpp' object='monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-mpluginAudio.lo `test -f 'monitord/plugins/mpluginAudio.cpp' || echo '$(srcdir)/'`monitord/plugins/mpluginAudio.cpp + +monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo: monitord/plugins/libmplugin_audiorecorderSOX.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo `test -f 'monitord/plugins/libmplugin_audiorecorderSOX.cpp' || echo '$(srcdir)/'`monitord/plugins/libmplugin_audiorecorderSOX.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/libmplugin_audiorecorderSOX.cpp' object='monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_audiorecorderSOX_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_audiorecorderSOX_la-libmplugin_audiorecorderSOX.lo `test -f 'monitord/plugins/libmplugin_audiorecorderSOX.cpp' || echo '$(srcdir)/'`monitord/plugins/libmplugin_audiorecorderSOX.cpp + +monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo: monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo -MD -MP -MF monitord/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmltools.Tpo -c -o monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmltools.Tpo monitord/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmltools.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/xmltools.cpp' object='monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_plugins_libmplugin_mysql_la-xmltools.lo `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp + +xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo: xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo -MD -MP -MF xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmlParser.Tpo -c -o xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ mv -f xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmlParser.Tpo xmlParser/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-xmlParser.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='xmlParser/xmlParser.cpp' object='xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xmlParser/monitord_plugins_libmplugin_mysql_la-xmlParser.lo `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp + +monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo: monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-mplugin.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-mplugin.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-mplugin.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mplugin.cpp' object='monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_mysql_la-mplugin.lo `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp + +monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo: monitord/plugins/libmplugin_mysql.cpp +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.Tpo -c -o monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo `test -f 'monitord/plugins/libmplugin_mysql.cpp' || echo '$(srcdir)/'`monitord/plugins/libmplugin_mysql.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.Tpo monitord/plugins/$(DEPDIR)/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/libmplugin_mysql.cpp' object='monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_plugins_libmplugin_mysql_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_plugins_libmplugin_mysql_la-libmplugin_mysql.lo `test -f 'monitord/plugins/libmplugin_mysql.cpp' || echo '$(srcdir)/'`monitord/plugins/libmplugin_mysql.cpp + +monitord/monitord_monitord-Monitor.o: monitord/Monitor.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-Monitor.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-Monitor.Tpo -c -o monitord/monitord_monitord-Monitor.o `test -f 'monitord/Monitor.cpp' || echo '$(srcdir)/'`monitord/Monitor.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-Monitor.Tpo monitord/$(DEPDIR)/monitord_monitord-Monitor.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/Monitor.cpp' object='monitord/monitord_monitord-Monitor.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-Monitor.o `test -f 'monitord/Monitor.cpp' || echo '$(srcdir)/'`monitord/Monitor.cpp + +monitord/monitord_monitord-Monitor.obj: monitord/Monitor.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-Monitor.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-Monitor.Tpo -c -o monitord/monitord_monitord-Monitor.obj `if test -f 'monitord/Monitor.cpp'; then $(CYGPATH_W) 'monitord/Monitor.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/Monitor.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-Monitor.Tpo monitord/$(DEPDIR)/monitord_monitord-Monitor.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/Monitor.cpp' object='monitord/monitord_monitord-Monitor.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-Monitor.obj `if test -f 'monitord/Monitor.cpp'; then $(CYGPATH_W) 'monitord/Monitor.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/Monitor.cpp'; fi` + +monitord/monitord_monitord-MonitorAudio.o: monitord/MonitorAudio.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorAudio.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorAudio.Tpo -c -o monitord/monitord_monitord-MonitorAudio.o `test -f 'monitord/MonitorAudio.cpp' || echo '$(srcdir)/'`monitord/MonitorAudio.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorAudio.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorAudio.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorAudio.cpp' object='monitord/monitord_monitord-MonitorAudio.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorAudio.o `test -f 'monitord/MonitorAudio.cpp' || echo '$(srcdir)/'`monitord/MonitorAudio.cpp + +monitord/monitord_monitord-MonitorAudio.obj: monitord/MonitorAudio.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorAudio.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorAudio.Tpo -c -o monitord/monitord_monitord-MonitorAudio.obj `if test -f 'monitord/MonitorAudio.cpp'; then $(CYGPATH_W) 'monitord/MonitorAudio.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorAudio.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorAudio.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorAudio.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorAudio.cpp' object='monitord/monitord_monitord-MonitorAudio.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorAudio.obj `if test -f 'monitord/MonitorAudio.cpp'; then $(CYGPATH_W) 'monitord/MonitorAudio.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorAudio.cpp'; fi` + +monitord/monitord_monitord-MonitorConfiguration.o: monitord/MonitorConfiguration.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorConfiguration.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorConfiguration.Tpo -c -o monitord/monitord_monitord-MonitorConfiguration.o `test -f 'monitord/MonitorConfiguration.cpp' || echo '$(srcdir)/'`monitord/MonitorConfiguration.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorConfiguration.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorConfiguration.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorConfiguration.cpp' object='monitord/monitord_monitord-MonitorConfiguration.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorConfiguration.o `test -f 'monitord/MonitorConfiguration.cpp' || echo '$(srcdir)/'`monitord/MonitorConfiguration.cpp + +monitord/monitord_monitord-MonitorConfiguration.obj: monitord/MonitorConfiguration.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorConfiguration.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorConfiguration.Tpo -c -o monitord/monitord_monitord-MonitorConfiguration.obj `if test -f 'monitord/MonitorConfiguration.cpp'; then $(CYGPATH_W) 'monitord/MonitorConfiguration.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorConfiguration.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorConfiguration.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorConfiguration.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorConfiguration.cpp' object='monitord/monitord_monitord-MonitorConfiguration.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorConfiguration.obj `if test -f 'monitord/MonitorConfiguration.cpp'; then $(CYGPATH_W) 'monitord/MonitorConfiguration.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorConfiguration.cpp'; fi` + +monitord/monitord_monitord-MonitorModuleFMS.o: monitord/MonitorModuleFMS.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModuleFMS.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModuleFMS.Tpo -c -o monitord/monitord_monitord-MonitorModuleFMS.o `test -f 'monitord/MonitorModuleFMS.cpp' || echo '$(srcdir)/'`monitord/MonitorModuleFMS.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModuleFMS.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModuleFMS.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModuleFMS.cpp' object='monitord/monitord_monitord-MonitorModuleFMS.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModuleFMS.o `test -f 'monitord/MonitorModuleFMS.cpp' || echo '$(srcdir)/'`monitord/MonitorModuleFMS.cpp + +monitord/monitord_monitord-MonitorModuleFMS.obj: monitord/MonitorModuleFMS.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModuleFMS.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModuleFMS.Tpo -c -o monitord/monitord_monitord-MonitorModuleFMS.obj `if test -f 'monitord/MonitorModuleFMS.cpp'; then $(CYGPATH_W) 'monitord/MonitorModuleFMS.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModuleFMS.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModuleFMS.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModuleFMS.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModuleFMS.cpp' object='monitord/monitord_monitord-MonitorModuleFMS.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModuleFMS.obj `if test -f 'monitord/MonitorModuleFMS.cpp'; then $(CYGPATH_W) 'monitord/MonitorModuleFMS.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModuleFMS.cpp'; fi` + +monitord/monitord_monitord-MonitorModulePocsag.o: monitord/MonitorModulePocsag.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulePocsag.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag.Tpo -c -o monitord/monitord_monitord-MonitorModulePocsag.o `test -f 'monitord/MonitorModulePocsag.cpp' || echo '$(srcdir)/'`monitord/MonitorModulePocsag.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulePocsag.cpp' object='monitord/monitord_monitord-MonitorModulePocsag.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulePocsag.o `test -f 'monitord/MonitorModulePocsag.cpp' || echo '$(srcdir)/'`monitord/MonitorModulePocsag.cpp + +monitord/monitord_monitord-MonitorModulePocsag.obj: monitord/MonitorModulePocsag.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulePocsag.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag.Tpo -c -o monitord/monitord_monitord-MonitorModulePocsag.obj `if test -f 'monitord/MonitorModulePocsag.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulePocsag.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulePocsag.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulePocsag.cpp' object='monitord/monitord_monitord-MonitorModulePocsag.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulePocsag.obj `if test -f 'monitord/MonitorModulePocsag.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulePocsag.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulePocsag.cpp'; fi` + +monitord/monitord_monitord-MonitorModulePocsag1200.o: monitord/MonitorModulePocsag1200.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulePocsag1200.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag1200.Tpo -c -o monitord/monitord_monitord-MonitorModulePocsag1200.o `test -f 'monitord/MonitorModulePocsag1200.cpp' || echo '$(srcdir)/'`monitord/MonitorModulePocsag1200.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag1200.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag1200.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulePocsag1200.cpp' object='monitord/monitord_monitord-MonitorModulePocsag1200.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulePocsag1200.o `test -f 'monitord/MonitorModulePocsag1200.cpp' || echo '$(srcdir)/'`monitord/MonitorModulePocsag1200.cpp + +monitord/monitord_monitord-MonitorModulePocsag1200.obj: monitord/MonitorModulePocsag1200.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulePocsag1200.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag1200.Tpo -c -o monitord/monitord_monitord-MonitorModulePocsag1200.obj `if test -f 'monitord/MonitorModulePocsag1200.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulePocsag1200.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulePocsag1200.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag1200.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag1200.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulePocsag1200.cpp' object='monitord/monitord_monitord-MonitorModulePocsag1200.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulePocsag1200.obj `if test -f 'monitord/MonitorModulePocsag1200.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulePocsag1200.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulePocsag1200.cpp'; fi` + +monitord/monitord_monitord-MonitorModulePocsag512.o: monitord/MonitorModulePocsag512.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulePocsag512.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag512.Tpo -c -o monitord/monitord_monitord-MonitorModulePocsag512.o `test -f 'monitord/MonitorModulePocsag512.cpp' || echo '$(srcdir)/'`monitord/MonitorModulePocsag512.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag512.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag512.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulePocsag512.cpp' object='monitord/monitord_monitord-MonitorModulePocsag512.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulePocsag512.o `test -f 'monitord/MonitorModulePocsag512.cpp' || echo '$(srcdir)/'`monitord/MonitorModulePocsag512.cpp + +monitord/monitord_monitord-MonitorModulePocsag512.obj: monitord/MonitorModulePocsag512.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulePocsag512.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag512.Tpo -c -o monitord/monitord_monitord-MonitorModulePocsag512.obj `if test -f 'monitord/MonitorModulePocsag512.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulePocsag512.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulePocsag512.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag512.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulePocsag512.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulePocsag512.cpp' object='monitord/monitord_monitord-MonitorModulePocsag512.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulePocsag512.obj `if test -f 'monitord/MonitorModulePocsag512.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulePocsag512.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulePocsag512.cpp'; fi` + +monitord/monitord_monitord-MonitorModuleZVEI.o: monitord/MonitorModuleZVEI.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModuleZVEI.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModuleZVEI.Tpo -c -o monitord/monitord_monitord-MonitorModuleZVEI.o `test -f 'monitord/MonitorModuleZVEI.cpp' || echo '$(srcdir)/'`monitord/MonitorModuleZVEI.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModuleZVEI.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModuleZVEI.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModuleZVEI.cpp' object='monitord/monitord_monitord-MonitorModuleZVEI.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModuleZVEI.o `test -f 'monitord/MonitorModuleZVEI.cpp' || echo '$(srcdir)/'`monitord/MonitorModuleZVEI.cpp + +monitord/monitord_monitord-MonitorModuleZVEI.obj: monitord/MonitorModuleZVEI.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModuleZVEI.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModuleZVEI.Tpo -c -o monitord/monitord_monitord-MonitorModuleZVEI.obj `if test -f 'monitord/MonitorModuleZVEI.cpp'; then $(CYGPATH_W) 'monitord/MonitorModuleZVEI.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModuleZVEI.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModuleZVEI.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModuleZVEI.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModuleZVEI.cpp' object='monitord/monitord_monitord-MonitorModuleZVEI.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModuleZVEI.obj `if test -f 'monitord/MonitorModuleZVEI.cpp'; then $(CYGPATH_W) 'monitord/MonitorModuleZVEI.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModuleZVEI.cpp'; fi` + +monitord/monitord_monitord-MonitorModules.o: monitord/MonitorModules.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModules.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModules.Tpo -c -o monitord/monitord_monitord-MonitorModules.o `test -f 'monitord/MonitorModules.cpp' || echo '$(srcdir)/'`monitord/MonitorModules.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModules.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModules.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModules.cpp' object='monitord/monitord_monitord-MonitorModules.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModules.o `test -f 'monitord/MonitorModules.cpp' || echo '$(srcdir)/'`monitord/MonitorModules.cpp + +monitord/monitord_monitord-MonitorModules.obj: monitord/MonitorModules.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModules.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModules.Tpo -c -o monitord/monitord_monitord-MonitorModules.obj `if test -f 'monitord/MonitorModules.cpp'; then $(CYGPATH_W) 'monitord/MonitorModules.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModules.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModules.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModules.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModules.cpp' object='monitord/monitord_monitord-MonitorModules.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModules.obj `if test -f 'monitord/MonitorModules.cpp'; then $(CYGPATH_W) 'monitord/MonitorModules.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModules.cpp'; fi` + +monitord/monitord_monitord-MonitorModulesResults.o: monitord/MonitorModulesResults.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulesResults.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulesResults.Tpo -c -o monitord/monitord_monitord-MonitorModulesResults.o `test -f 'monitord/MonitorModulesResults.cpp' || echo '$(srcdir)/'`monitord/MonitorModulesResults.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulesResults.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulesResults.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulesResults.cpp' object='monitord/monitord_monitord-MonitorModulesResults.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulesResults.o `test -f 'monitord/MonitorModulesResults.cpp' || echo '$(srcdir)/'`monitord/MonitorModulesResults.cpp + +monitord/monitord_monitord-MonitorModulesResults.obj: monitord/MonitorModulesResults.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorModulesResults.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorModulesResults.Tpo -c -o monitord/monitord_monitord-MonitorModulesResults.obj `if test -f 'monitord/MonitorModulesResults.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulesResults.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulesResults.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorModulesResults.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorModulesResults.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorModulesResults.cpp' object='monitord/monitord_monitord-MonitorModulesResults.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorModulesResults.obj `if test -f 'monitord/MonitorModulesResults.cpp'; then $(CYGPATH_W) 'monitord/MonitorModulesResults.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorModulesResults.cpp'; fi` + +monitord/monitord_monitord-SndPipe.o: monitord/SndPipe.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SndPipe.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SndPipe.Tpo -c -o monitord/monitord_monitord-SndPipe.o `test -f 'monitord/SndPipe.cpp' || echo '$(srcdir)/'`monitord/SndPipe.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SndPipe.Tpo monitord/$(DEPDIR)/monitord_monitord-SndPipe.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SndPipe.cpp' object='monitord/monitord_monitord-SndPipe.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SndPipe.o `test -f 'monitord/SndPipe.cpp' || echo '$(srcdir)/'`monitord/SndPipe.cpp + +monitord/monitord_monitord-SndPipe.obj: monitord/SndPipe.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SndPipe.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SndPipe.Tpo -c -o monitord/monitord_monitord-SndPipe.obj `if test -f 'monitord/SndPipe.cpp'; then $(CYGPATH_W) 'monitord/SndPipe.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SndPipe.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SndPipe.Tpo monitord/$(DEPDIR)/monitord_monitord-SndPipe.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SndPipe.cpp' object='monitord/monitord_monitord-SndPipe.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SndPipe.obj `if test -f 'monitord/SndPipe.cpp'; then $(CYGPATH_W) 'monitord/SndPipe.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SndPipe.cpp'; fi` + +monitord/monitord_monitord-SocketServer.o: monitord/SocketServer.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketServer.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketServer.Tpo -c -o monitord/monitord_monitord-SocketServer.o `test -f 'monitord/SocketServer.cpp' || echo '$(srcdir)/'`monitord/SocketServer.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketServer.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketServer.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketServer.cpp' object='monitord/monitord_monitord-SocketServer.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketServer.o `test -f 'monitord/SocketServer.cpp' || echo '$(srcdir)/'`monitord/SocketServer.cpp + +monitord/monitord_monitord-SocketServer.obj: monitord/SocketServer.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketServer.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketServer.Tpo -c -o monitord/monitord_monitord-SocketServer.obj `if test -f 'monitord/SocketServer.cpp'; then $(CYGPATH_W) 'monitord/SocketServer.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketServer.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketServer.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketServer.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketServer.cpp' object='monitord/monitord_monitord-SocketServer.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketServer.obj `if test -f 'monitord/SocketServer.cpp'; then $(CYGPATH_W) 'monitord/SocketServer.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketServer.cpp'; fi` + +monitord/monitord_monitord-SocketThreadMonitord.o: monitord/SocketThreadMonitord.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketThreadMonitord.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketThreadMonitord.Tpo -c -o monitord/monitord_monitord-SocketThreadMonitord.o `test -f 'monitord/SocketThreadMonitord.cpp' || echo '$(srcdir)/'`monitord/SocketThreadMonitord.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketThreadMonitord.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketThreadMonitord.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketThreadMonitord.cpp' object='monitord/monitord_monitord-SocketThreadMonitord.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketThreadMonitord.o `test -f 'monitord/SocketThreadMonitord.cpp' || echo '$(srcdir)/'`monitord/SocketThreadMonitord.cpp + +monitord/monitord_monitord-SocketThreadMonitord.obj: monitord/SocketThreadMonitord.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketThreadMonitord.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketThreadMonitord.Tpo -c -o monitord/monitord_monitord-SocketThreadMonitord.obj `if test -f 'monitord/SocketThreadMonitord.cpp'; then $(CYGPATH_W) 'monitord/SocketThreadMonitord.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketThreadMonitord.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketThreadMonitord.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketThreadMonitord.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketThreadMonitord.cpp' object='monitord/monitord_monitord-SocketThreadMonitord.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketThreadMonitord.obj `if test -f 'monitord/SocketThreadMonitord.cpp'; then $(CYGPATH_W) 'monitord/SocketThreadMonitord.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketThreadMonitord.cpp'; fi` + +monitord/monitord_monitord-SocketThreadFMS32.o: monitord/SocketThreadFMS32.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketThreadFMS32.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketThreadFMS32.Tpo -c -o monitord/monitord_monitord-SocketThreadFMS32.o `test -f 'monitord/SocketThreadFMS32.cpp' || echo '$(srcdir)/'`monitord/SocketThreadFMS32.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketThreadFMS32.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketThreadFMS32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketThreadFMS32.cpp' object='monitord/monitord_monitord-SocketThreadFMS32.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketThreadFMS32.o `test -f 'monitord/SocketThreadFMS32.cpp' || echo '$(srcdir)/'`monitord/SocketThreadFMS32.cpp + +monitord/monitord_monitord-SocketThreadFMS32.obj: monitord/SocketThreadFMS32.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketThreadFMS32.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketThreadFMS32.Tpo -c -o monitord/monitord_monitord-SocketThreadFMS32.obj `if test -f 'monitord/SocketThreadFMS32.cpp'; then $(CYGPATH_W) 'monitord/SocketThreadFMS32.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketThreadFMS32.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketThreadFMS32.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketThreadFMS32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketThreadFMS32.cpp' object='monitord/monitord_monitord-SocketThreadFMS32.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketThreadFMS32.obj `if test -f 'monitord/SocketThreadFMS32.cpp'; then $(CYGPATH_W) 'monitord/SocketThreadFMS32.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketThreadFMS32.cpp'; fi` + +monitord/monitord_monitord-SocketThreadCrusader.o: monitord/SocketThreadCrusader.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketThreadCrusader.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketThreadCrusader.Tpo -c -o monitord/monitord_monitord-SocketThreadCrusader.o `test -f 'monitord/SocketThreadCrusader.cpp' || echo '$(srcdir)/'`monitord/SocketThreadCrusader.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketThreadCrusader.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketThreadCrusader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketThreadCrusader.cpp' object='monitord/monitord_monitord-SocketThreadCrusader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketThreadCrusader.o `test -f 'monitord/SocketThreadCrusader.cpp' || echo '$(srcdir)/'`monitord/SocketThreadCrusader.cpp + +monitord/monitord_monitord-SocketThreadCrusader.obj: monitord/SocketThreadCrusader.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-SocketThreadCrusader.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-SocketThreadCrusader.Tpo -c -o monitord/monitord_monitord-SocketThreadCrusader.obj `if test -f 'monitord/SocketThreadCrusader.cpp'; then $(CYGPATH_W) 'monitord/SocketThreadCrusader.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketThreadCrusader.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-SocketThreadCrusader.Tpo monitord/$(DEPDIR)/monitord_monitord-SocketThreadCrusader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/SocketThreadCrusader.cpp' object='monitord/monitord_monitord-SocketThreadCrusader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-SocketThreadCrusader.obj `if test -f 'monitord/SocketThreadCrusader.cpp'; then $(CYGPATH_W) 'monitord/SocketThreadCrusader.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/SocketThreadCrusader.cpp'; fi` + +monitord/monitord_monitord-memlock.o: monitord/memlock.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-memlock.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-memlock.Tpo -c -o monitord/monitord_monitord-memlock.o `test -f 'monitord/memlock.cpp' || echo '$(srcdir)/'`monitord/memlock.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-memlock.Tpo monitord/$(DEPDIR)/monitord_monitord-memlock.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/memlock.cpp' object='monitord/monitord_monitord-memlock.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-memlock.o `test -f 'monitord/memlock.cpp' || echo '$(srcdir)/'`monitord/memlock.cpp + +monitord/monitord_monitord-memlock.obj: monitord/memlock.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-memlock.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-memlock.Tpo -c -o monitord/monitord_monitord-memlock.obj `if test -f 'monitord/memlock.cpp'; then $(CYGPATH_W) 'monitord/memlock.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/memlock.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-memlock.Tpo monitord/$(DEPDIR)/monitord_monitord-memlock.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/memlock.cpp' object='monitord/monitord_monitord-memlock.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-memlock.obj `if test -f 'monitord/memlock.cpp'; then $(CYGPATH_W) 'monitord/memlock.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/memlock.cpp'; fi` + +monitord/monitord_monitord-xmltools.o: monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-xmltools.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-xmltools.Tpo -c -o monitord/monitord_monitord-xmltools.o `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-xmltools.Tpo monitord/$(DEPDIR)/monitord_monitord-xmltools.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/xmltools.cpp' object='monitord/monitord_monitord-xmltools.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-xmltools.o `test -f 'monitord/xmltools.cpp' || echo '$(srcdir)/'`monitord/xmltools.cpp + +monitord/monitord_monitord-xmltools.obj: monitord/xmltools.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-xmltools.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-xmltools.Tpo -c -o monitord/monitord_monitord-xmltools.obj `if test -f 'monitord/xmltools.cpp'; then $(CYGPATH_W) 'monitord/xmltools.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/xmltools.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-xmltools.Tpo monitord/$(DEPDIR)/monitord_monitord-xmltools.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/xmltools.cpp' object='monitord/monitord_monitord-xmltools.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-xmltools.obj `if test -f 'monitord/xmltools.cpp'; then $(CYGPATH_W) 'monitord/xmltools.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/xmltools.cpp'; fi` + +monitord/monitord_monitord-MonitorSignals.o: monitord/MonitorSignals.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorSignals.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorSignals.Tpo -c -o monitord/monitord_monitord-MonitorSignals.o `test -f 'monitord/MonitorSignals.cpp' || echo '$(srcdir)/'`monitord/MonitorSignals.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorSignals.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorSignals.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorSignals.cpp' object='monitord/monitord_monitord-MonitorSignals.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorSignals.o `test -f 'monitord/MonitorSignals.cpp' || echo '$(srcdir)/'`monitord/MonitorSignals.cpp + +monitord/monitord_monitord-MonitorSignals.obj: monitord/MonitorSignals.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-MonitorSignals.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-MonitorSignals.Tpo -c -o monitord/monitord_monitord-MonitorSignals.obj `if test -f 'monitord/MonitorSignals.cpp'; then $(CYGPATH_W) 'monitord/MonitorSignals.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorSignals.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-MonitorSignals.Tpo monitord/$(DEPDIR)/monitord_monitord-MonitorSignals.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/MonitorSignals.cpp' object='monitord/monitord_monitord-MonitorSignals.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-MonitorSignals.obj `if test -f 'monitord/MonitorSignals.cpp'; then $(CYGPATH_W) 'monitord/MonitorSignals.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/MonitorSignals.cpp'; fi` + +xmlParser/monitord_monitord-xmlParser.o: xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xmlParser/monitord_monitord-xmlParser.o -MD -MP -MF xmlParser/$(DEPDIR)/monitord_monitord-xmlParser.Tpo -c -o xmlParser/monitord_monitord-xmlParser.o `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ mv -f xmlParser/$(DEPDIR)/monitord_monitord-xmlParser.Tpo xmlParser/$(DEPDIR)/monitord_monitord-xmlParser.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='xmlParser/xmlParser.cpp' object='xmlParser/monitord_monitord-xmlParser.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xmlParser/monitord_monitord-xmlParser.o `test -f 'xmlParser/xmlParser.cpp' || echo '$(srcdir)/'`xmlParser/xmlParser.cpp + +xmlParser/monitord_monitord-xmlParser.obj: xmlParser/xmlParser.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xmlParser/monitord_monitord-xmlParser.obj -MD -MP -MF xmlParser/$(DEPDIR)/monitord_monitord-xmlParser.Tpo -c -o xmlParser/monitord_monitord-xmlParser.obj `if test -f 'xmlParser/xmlParser.cpp'; then $(CYGPATH_W) 'xmlParser/xmlParser.cpp'; else $(CYGPATH_W) '$(srcdir)/xmlParser/xmlParser.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f xmlParser/$(DEPDIR)/monitord_monitord-xmlParser.Tpo xmlParser/$(DEPDIR)/monitord_monitord-xmlParser.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='xmlParser/xmlParser.cpp' object='xmlParser/monitord_monitord-xmlParser.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xmlParser/monitord_monitord-xmlParser.obj `if test -f 'xmlParser/xmlParser.cpp'; then $(CYGPATH_W) 'xmlParser/xmlParser.cpp'; else $(CYGPATH_W) '$(srcdir)/xmlParser/xmlParser.cpp'; fi` + +jthread-1.2.1/src/pthread/monitord_monitord-jmutex.o: jthread-1.2.1/src/pthread/jmutex.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/pthread/monitord_monitord-jmutex.o -MD -MP -MF jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jmutex.Tpo -c -o jthread-1.2.1/src/pthread/monitord_monitord-jmutex.o `test -f 'jthread-1.2.1/src/pthread/jmutex.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/pthread/jmutex.cpp +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jmutex.Tpo jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jmutex.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/pthread/jmutex.cpp' object='jthread-1.2.1/src/pthread/monitord_monitord-jmutex.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/pthread/monitord_monitord-jmutex.o `test -f 'jthread-1.2.1/src/pthread/jmutex.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/pthread/jmutex.cpp + +jthread-1.2.1/src/pthread/monitord_monitord-jmutex.obj: jthread-1.2.1/src/pthread/jmutex.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/pthread/monitord_monitord-jmutex.obj -MD -MP -MF jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jmutex.Tpo -c -o jthread-1.2.1/src/pthread/monitord_monitord-jmutex.obj `if test -f 'jthread-1.2.1/src/pthread/jmutex.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/pthread/jmutex.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/pthread/jmutex.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jmutex.Tpo jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jmutex.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/pthread/jmutex.cpp' object='jthread-1.2.1/src/pthread/monitord_monitord-jmutex.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/pthread/monitord_monitord-jmutex.obj `if test -f 'jthread-1.2.1/src/pthread/jmutex.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/pthread/jmutex.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/pthread/jmutex.cpp'; fi` + +jthread-1.2.1/src/pthread/monitord_monitord-jthread.o: jthread-1.2.1/src/pthread/jthread.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/pthread/monitord_monitord-jthread.o -MD -MP -MF jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jthread.Tpo -c -o jthread-1.2.1/src/pthread/monitord_monitord-jthread.o `test -f 'jthread-1.2.1/src/pthread/jthread.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/pthread/jthread.cpp +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jthread.Tpo jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jthread.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/pthread/jthread.cpp' object='jthread-1.2.1/src/pthread/monitord_monitord-jthread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/pthread/monitord_monitord-jthread.o `test -f 'jthread-1.2.1/src/pthread/jthread.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/pthread/jthread.cpp + +jthread-1.2.1/src/pthread/monitord_monitord-jthread.obj: jthread-1.2.1/src/pthread/jthread.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/pthread/monitord_monitord-jthread.obj -MD -MP -MF jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jthread.Tpo -c -o jthread-1.2.1/src/pthread/monitord_monitord-jthread.obj `if test -f 'jthread-1.2.1/src/pthread/jthread.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/pthread/jthread.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/pthread/jthread.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jthread.Tpo jthread-1.2.1/src/pthread/$(DEPDIR)/monitord_monitord-jthread.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/pthread/jthread.cpp' object='jthread-1.2.1/src/pthread/monitord_monitord-jthread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/pthread/monitord_monitord-jthread.obj `if test -f 'jthread-1.2.1/src/pthread/jthread.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/pthread/jthread.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/pthread/jthread.cpp'; fi` + +monitord/posix/monitord_monitord-MonitorAudioALSA.o: monitord/posix/MonitorAudioALSA.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/posix/monitord_monitord-MonitorAudioALSA.o -MD -MP -MF monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioALSA.Tpo -c -o monitord/posix/monitord_monitord-MonitorAudioALSA.o `test -f 'monitord/posix/MonitorAudioALSA.cpp' || echo '$(srcdir)/'`monitord/posix/MonitorAudioALSA.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioALSA.Tpo monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioALSA.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/posix/MonitorAudioALSA.cpp' object='monitord/posix/monitord_monitord-MonitorAudioALSA.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/posix/monitord_monitord-MonitorAudioALSA.o `test -f 'monitord/posix/MonitorAudioALSA.cpp' || echo '$(srcdir)/'`monitord/posix/MonitorAudioALSA.cpp + +monitord/posix/monitord_monitord-MonitorAudioALSA.obj: monitord/posix/MonitorAudioALSA.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/posix/monitord_monitord-MonitorAudioALSA.obj -MD -MP -MF monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioALSA.Tpo -c -o monitord/posix/monitord_monitord-MonitorAudioALSA.obj `if test -f 'monitord/posix/MonitorAudioALSA.cpp'; then $(CYGPATH_W) 'monitord/posix/MonitorAudioALSA.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/posix/MonitorAudioALSA.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioALSA.Tpo monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioALSA.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/posix/MonitorAudioALSA.cpp' object='monitord/posix/monitord_monitord-MonitorAudioALSA.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/posix/monitord_monitord-MonitorAudioALSA.obj `if test -f 'monitord/posix/MonitorAudioALSA.cpp'; then $(CYGPATH_W) 'monitord/posix/MonitorAudioALSA.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/posix/MonitorAudioALSA.cpp'; fi` + +monitord/posix/monitord_monitord-MonitorAudioOSS.o: monitord/posix/MonitorAudioOSS.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/posix/monitord_monitord-MonitorAudioOSS.o -MD -MP -MF monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioOSS.Tpo -c -o monitord/posix/monitord_monitord-MonitorAudioOSS.o `test -f 'monitord/posix/MonitorAudioOSS.cpp' || echo '$(srcdir)/'`monitord/posix/MonitorAudioOSS.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioOSS.Tpo monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioOSS.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/posix/MonitorAudioOSS.cpp' object='monitord/posix/monitord_monitord-MonitorAudioOSS.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/posix/monitord_monitord-MonitorAudioOSS.o `test -f 'monitord/posix/MonitorAudioOSS.cpp' || echo '$(srcdir)/'`monitord/posix/MonitorAudioOSS.cpp + +monitord/posix/monitord_monitord-MonitorAudioOSS.obj: monitord/posix/MonitorAudioOSS.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/posix/monitord_monitord-MonitorAudioOSS.obj -MD -MP -MF monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioOSS.Tpo -c -o monitord/posix/monitord_monitord-MonitorAudioOSS.obj `if test -f 'monitord/posix/MonitorAudioOSS.cpp'; then $(CYGPATH_W) 'monitord/posix/MonitorAudioOSS.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/posix/MonitorAudioOSS.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioOSS.Tpo monitord/posix/$(DEPDIR)/monitord_monitord-MonitorAudioOSS.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/posix/MonitorAudioOSS.cpp' object='monitord/posix/monitord_monitord-MonitorAudioOSS.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/posix/monitord_monitord-MonitorAudioOSS.obj `if test -f 'monitord/posix/MonitorAudioOSS.cpp'; then $(CYGPATH_W) 'monitord/posix/MonitorAudioOSS.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/posix/MonitorAudioOSS.cpp'; fi` + +jthread-1.2.1/src/win32/monitord_monitord-jmutex.o: jthread-1.2.1/src/win32/jmutex.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/win32/monitord_monitord-jmutex.o -MD -MP -MF jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jmutex.Tpo -c -o jthread-1.2.1/src/win32/monitord_monitord-jmutex.o `test -f 'jthread-1.2.1/src/win32/jmutex.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/win32/jmutex.cpp +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jmutex.Tpo jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jmutex.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/win32/jmutex.cpp' object='jthread-1.2.1/src/win32/monitord_monitord-jmutex.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/win32/monitord_monitord-jmutex.o `test -f 'jthread-1.2.1/src/win32/jmutex.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/win32/jmutex.cpp + +jthread-1.2.1/src/win32/monitord_monitord-jmutex.obj: jthread-1.2.1/src/win32/jmutex.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/win32/monitord_monitord-jmutex.obj -MD -MP -MF jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jmutex.Tpo -c -o jthread-1.2.1/src/win32/monitord_monitord-jmutex.obj `if test -f 'jthread-1.2.1/src/win32/jmutex.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/win32/jmutex.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/win32/jmutex.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jmutex.Tpo jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jmutex.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/win32/jmutex.cpp' object='jthread-1.2.1/src/win32/monitord_monitord-jmutex.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/win32/monitord_monitord-jmutex.obj `if test -f 'jthread-1.2.1/src/win32/jmutex.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/win32/jmutex.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/win32/jmutex.cpp'; fi` + +jthread-1.2.1/src/win32/monitord_monitord-jthread.o: jthread-1.2.1/src/win32/jthread.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/win32/monitord_monitord-jthread.o -MD -MP -MF jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jthread.Tpo -c -o jthread-1.2.1/src/win32/monitord_monitord-jthread.o `test -f 'jthread-1.2.1/src/win32/jthread.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/win32/jthread.cpp +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jthread.Tpo jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jthread.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/win32/jthread.cpp' object='jthread-1.2.1/src/win32/monitord_monitord-jthread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/win32/monitord_monitord-jthread.o `test -f 'jthread-1.2.1/src/win32/jthread.cpp' || echo '$(srcdir)/'`jthread-1.2.1/src/win32/jthread.cpp + +jthread-1.2.1/src/win32/monitord_monitord-jthread.obj: jthread-1.2.1/src/win32/jthread.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread-1.2.1/src/win32/monitord_monitord-jthread.obj -MD -MP -MF jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jthread.Tpo -c -o jthread-1.2.1/src/win32/monitord_monitord-jthread.obj `if test -f 'jthread-1.2.1/src/win32/jthread.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/win32/jthread.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/win32/jthread.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jthread.Tpo jthread-1.2.1/src/win32/$(DEPDIR)/monitord_monitord-jthread.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='jthread-1.2.1/src/win32/jthread.cpp' object='jthread-1.2.1/src/win32/monitord_monitord-jthread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread-1.2.1/src/win32/monitord_monitord-jthread.obj `if test -f 'jthread-1.2.1/src/win32/jthread.cpp'; then $(CYGPATH_W) 'jthread-1.2.1/src/win32/jthread.cpp'; else $(CYGPATH_W) '$(srcdir)/jthread-1.2.1/src/win32/jthread.cpp'; fi` + +monitord/win32/monitord_monitord-MonitorAudioWin32.o: monitord/win32/MonitorAudioWin32.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/win32/monitord_monitord-MonitorAudioWin32.o -MD -MP -MF monitord/win32/$(DEPDIR)/monitord_monitord-MonitorAudioWin32.Tpo -c -o monitord/win32/monitord_monitord-MonitorAudioWin32.o `test -f 'monitord/win32/MonitorAudioWin32.cpp' || echo '$(srcdir)/'`monitord/win32/MonitorAudioWin32.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/win32/$(DEPDIR)/monitord_monitord-MonitorAudioWin32.Tpo monitord/win32/$(DEPDIR)/monitord_monitord-MonitorAudioWin32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/win32/MonitorAudioWin32.cpp' object='monitord/win32/monitord_monitord-MonitorAudioWin32.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/win32/monitord_monitord-MonitorAudioWin32.o `test -f 'monitord/win32/MonitorAudioWin32.cpp' || echo '$(srcdir)/'`monitord/win32/MonitorAudioWin32.cpp + +monitord/win32/monitord_monitord-MonitorAudioWin32.obj: monitord/win32/MonitorAudioWin32.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/win32/monitord_monitord-MonitorAudioWin32.obj -MD -MP -MF monitord/win32/$(DEPDIR)/monitord_monitord-MonitorAudioWin32.Tpo -c -o monitord/win32/monitord_monitord-MonitorAudioWin32.obj `if test -f 'monitord/win32/MonitorAudioWin32.cpp'; then $(CYGPATH_W) 'monitord/win32/MonitorAudioWin32.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/win32/MonitorAudioWin32.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/win32/$(DEPDIR)/monitord_monitord-MonitorAudioWin32.Tpo monitord/win32/$(DEPDIR)/monitord_monitord-MonitorAudioWin32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/win32/MonitorAudioWin32.cpp' object='monitord/win32/monitord_monitord-MonitorAudioWin32.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/win32/monitord_monitord-MonitorAudioWin32.obj `if test -f 'monitord/win32/MonitorAudioWin32.cpp'; then $(CYGPATH_W) 'monitord/win32/MonitorAudioWin32.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/win32/MonitorAudioWin32.cpp'; fi` + +monitord/win32/monitord_monitord-MonitorService.o: monitord/win32/MonitorService.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/win32/monitord_monitord-MonitorService.o -MD -MP -MF monitord/win32/$(DEPDIR)/monitord_monitord-MonitorService.Tpo -c -o monitord/win32/monitord_monitord-MonitorService.o `test -f 'monitord/win32/MonitorService.cpp' || echo '$(srcdir)/'`monitord/win32/MonitorService.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/win32/$(DEPDIR)/monitord_monitord-MonitorService.Tpo monitord/win32/$(DEPDIR)/monitord_monitord-MonitorService.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/win32/MonitorService.cpp' object='monitord/win32/monitord_monitord-MonitorService.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/win32/monitord_monitord-MonitorService.o `test -f 'monitord/win32/MonitorService.cpp' || echo '$(srcdir)/'`monitord/win32/MonitorService.cpp + +monitord/win32/monitord_monitord-MonitorService.obj: monitord/win32/MonitorService.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/win32/monitord_monitord-MonitorService.obj -MD -MP -MF monitord/win32/$(DEPDIR)/monitord_monitord-MonitorService.Tpo -c -o monitord/win32/monitord_monitord-MonitorService.obj `if test -f 'monitord/win32/MonitorService.cpp'; then $(CYGPATH_W) 'monitord/win32/MonitorService.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/win32/MonitorService.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/win32/$(DEPDIR)/monitord_monitord-MonitorService.Tpo monitord/win32/$(DEPDIR)/monitord_monitord-MonitorService.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/win32/MonitorService.cpp' object='monitord/win32/monitord_monitord-MonitorService.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/win32/monitord_monitord-MonitorService.obj `if test -f 'monitord/win32/MonitorService.cpp'; then $(CYGPATH_W) 'monitord/win32/MonitorService.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/win32/MonitorService.cpp'; fi` + +monitord/monitord_monitord-PluginThread.o: monitord/PluginThread.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-PluginThread.o -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-PluginThread.Tpo -c -o monitord/monitord_monitord-PluginThread.o `test -f 'monitord/PluginThread.cpp' || echo '$(srcdir)/'`monitord/PluginThread.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-PluginThread.Tpo monitord/$(DEPDIR)/monitord_monitord-PluginThread.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/PluginThread.cpp' object='monitord/monitord_monitord-PluginThread.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-PluginThread.o `test -f 'monitord/PluginThread.cpp' || echo '$(srcdir)/'`monitord/PluginThread.cpp + +monitord/monitord_monitord-PluginThread.obj: monitord/PluginThread.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/monitord_monitord-PluginThread.obj -MD -MP -MF monitord/$(DEPDIR)/monitord_monitord-PluginThread.Tpo -c -o monitord/monitord_monitord-PluginThread.obj `if test -f 'monitord/PluginThread.cpp'; then $(CYGPATH_W) 'monitord/PluginThread.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/PluginThread.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/$(DEPDIR)/monitord_monitord-PluginThread.Tpo monitord/$(DEPDIR)/monitord_monitord-PluginThread.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/PluginThread.cpp' object='monitord/monitord_monitord-PluginThread.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/monitord_monitord-PluginThread.obj `if test -f 'monitord/PluginThread.cpp'; then $(CYGPATH_W) 'monitord/PluginThread.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/PluginThread.cpp'; fi` + +monitord/plugins/monitord_monitord-mplugin.o: monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-mplugin.o -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-mplugin.Tpo -c -o monitord/plugins/monitord_monitord-mplugin.o `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-mplugin.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-mplugin.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mplugin.cpp' object='monitord/plugins/monitord_monitord-mplugin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-mplugin.o `test -f 'monitord/plugins/mplugin.cpp' || echo '$(srcdir)/'`monitord/plugins/mplugin.cpp + +monitord/plugins/monitord_monitord-mplugin.obj: monitord/plugins/mplugin.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-mplugin.obj -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-mplugin.Tpo -c -o monitord/plugins/monitord_monitord-mplugin.obj `if test -f 'monitord/plugins/mplugin.cpp'; then $(CYGPATH_W) 'monitord/plugins/mplugin.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/mplugin.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-mplugin.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-mplugin.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mplugin.cpp' object='monitord/plugins/monitord_monitord-mplugin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-mplugin.obj `if test -f 'monitord/plugins/mplugin.cpp'; then $(CYGPATH_W) 'monitord/plugins/mplugin.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/mplugin.cpp'; fi` + +monitord/plugins/monitord_monitord-mpluginAudio.o: monitord/plugins/mpluginAudio.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-mpluginAudio.o -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-mpluginAudio.Tpo -c -o monitord/plugins/monitord_monitord-mpluginAudio.o `test -f 'monitord/plugins/mpluginAudio.cpp' || echo '$(srcdir)/'`monitord/plugins/mpluginAudio.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-mpluginAudio.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-mpluginAudio.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mpluginAudio.cpp' object='monitord/plugins/monitord_monitord-mpluginAudio.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-mpluginAudio.o `test -f 'monitord/plugins/mpluginAudio.cpp' || echo '$(srcdir)/'`monitord/plugins/mpluginAudio.cpp + +monitord/plugins/monitord_monitord-mpluginAudio.obj: monitord/plugins/mpluginAudio.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-mpluginAudio.obj -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-mpluginAudio.Tpo -c -o monitord/plugins/monitord_monitord-mpluginAudio.obj `if test -f 'monitord/plugins/mpluginAudio.cpp'; then $(CYGPATH_W) 'monitord/plugins/mpluginAudio.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/mpluginAudio.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-mpluginAudio.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-mpluginAudio.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/mpluginAudio.cpp' object='monitord/plugins/monitord_monitord-mpluginAudio.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-mpluginAudio.obj `if test -f 'monitord/plugins/mpluginAudio.cpp'; then $(CYGPATH_W) 'monitord/plugins/mpluginAudio.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/mpluginAudio.cpp'; fi` + +monitord/plugins/monitord_monitord-dll-elf.o: monitord/plugins/dll-elf.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-dll-elf.o -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-dll-elf.Tpo -c -o monitord/plugins/monitord_monitord-dll-elf.o `test -f 'monitord/plugins/dll-elf.cpp' || echo '$(srcdir)/'`monitord/plugins/dll-elf.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-dll-elf.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-dll-elf.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/dll-elf.cpp' object='monitord/plugins/monitord_monitord-dll-elf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-dll-elf.o `test -f 'monitord/plugins/dll-elf.cpp' || echo '$(srcdir)/'`monitord/plugins/dll-elf.cpp + +monitord/plugins/monitord_monitord-dll-elf.obj: monitord/plugins/dll-elf.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-dll-elf.obj -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-dll-elf.Tpo -c -o monitord/plugins/monitord_monitord-dll-elf.obj `if test -f 'monitord/plugins/dll-elf.cpp'; then $(CYGPATH_W) 'monitord/plugins/dll-elf.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/dll-elf.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-dll-elf.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-dll-elf.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/dll-elf.cpp' object='monitord/plugins/monitord_monitord-dll-elf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-dll-elf.obj `if test -f 'monitord/plugins/dll-elf.cpp'; then $(CYGPATH_W) 'monitord/plugins/dll-elf.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/dll-elf.cpp'; fi` + +monitord/plugins/monitord_monitord-dll-win32.o: monitord/plugins/dll-win32.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-dll-win32.o -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-dll-win32.Tpo -c -o monitord/plugins/monitord_monitord-dll-win32.o `test -f 'monitord/plugins/dll-win32.cpp' || echo '$(srcdir)/'`monitord/plugins/dll-win32.cpp +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-dll-win32.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-dll-win32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/dll-win32.cpp' object='monitord/plugins/monitord_monitord-dll-win32.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-dll-win32.o `test -f 'monitord/plugins/dll-win32.cpp' || echo '$(srcdir)/'`monitord/plugins/dll-win32.cpp + +monitord/plugins/monitord_monitord-dll-win32.obj: monitord/plugins/dll-win32.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT monitord/plugins/monitord_monitord-dll-win32.obj -MD -MP -MF monitord/plugins/$(DEPDIR)/monitord_monitord-dll-win32.Tpo -c -o monitord/plugins/monitord_monitord-dll-win32.obj `if test -f 'monitord/plugins/dll-win32.cpp'; then $(CYGPATH_W) 'monitord/plugins/dll-win32.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/dll-win32.cpp'; fi` +@am__fastdepCXX_TRUE@ mv -f monitord/plugins/$(DEPDIR)/monitord_monitord-dll-win32.Tpo monitord/plugins/$(DEPDIR)/monitord_monitord-dll-win32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='monitord/plugins/dll-win32.cpp' object='monitord/plugins/monitord_monitord-dll-win32.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(monitord_monitord_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o monitord/plugins/monitord_monitord-dll-win32.obj `if test -f 'monitord/plugins/dll-win32.cpp'; then $(CYGPATH_W) 'monitord/plugins/dll-win32.cpp'; else $(CYGPATH_W) '$(srcdir)/monitord/plugins/dll-win32.cpp'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + -rm -rf monitord/.libs monitord/_libs + -rm -rf monitord/plugins/.libs monitord/plugins/_libs + -rm -rf xmlParser/.libs xmlParser/_libs + +distclean-libtool: + -rm -f libtool + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) config.h +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -rm -f jthread-1.2.1/src/pthread/$(DEPDIR)/$(am__dirstamp) + -rm -f jthread-1.2.1/src/pthread/$(am__dirstamp) + -rm -f jthread-1.2.1/src/win32/$(DEPDIR)/$(am__dirstamp) + -rm -f jthread-1.2.1/src/win32/$(am__dirstamp) + -rm -f monitord/$(DEPDIR)/$(am__dirstamp) + -rm -f monitord/$(am__dirstamp) + -rm -f monitord/plugins/$(DEPDIR)/$(am__dirstamp) + -rm -f monitord/plugins/$(am__dirstamp) + -rm -f monitord/posix/$(DEPDIR)/$(am__dirstamp) + -rm -f monitord/posix/$(am__dirstamp) + -rm -f monitord/win32/$(DEPDIR)/$(am__dirstamp) + -rm -f monitord/win32/$(am__dirstamp) + -rm -f xmlParser/$(DEPDIR)/$(am__dirstamp) + -rm -f xmlParser/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf jthread-1.2.1/src/pthread/$(DEPDIR) jthread-1.2.1/src/win32/$(DEPDIR) monitord/$(DEPDIR) monitord/plugins/$(DEPDIR) monitord/posix/$(DEPDIR) monitord/win32/$(DEPDIR) xmlParser/$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf jthread-1.2.1/src/pthread/$(DEPDIR) jthread-1.2.1/src/win32/$(DEPDIR) monitord/$(DEPDIR) monitord/plugins/$(DEPDIR) monitord/posix/$(DEPDIR) monitord/win32/$(DEPDIR) xmlParser/$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ + clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \ + dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-libLTLIBRARIES + + +@WINDOWS_TRUE@.rc.o: +@WINDOWS_TRUE@ @WINDRES@ -o $@ $< + +#========================================================= + +dok: + (cd monitord && doxygen doxygen.config) + +@WINDOWS_TRUE@nightly: @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.exe @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.zip + +@WINDOWS_TRUE@@PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.exe: monitord/monitord.exe win32-nsis/monitor.nsi +@WINDOWS_TRUE@ makensis -NOCD win32-nsis/monitor.nsi + +@WINDOWS_TRUE@@PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.zip: monitord/monitord.exe +@WINDOWS_TRUE@ if [ -d @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ ]; then rm -rf @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@; fi +@WINDOWS_TRUE@ mkdir @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ +@WINDOWS_TRUE@ cp monitord/monitord.exe @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ +@WINDOWS_TRUE@ cp sample-config/monitord.xml.win32 @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@/monitord.xml +@WINDOWS_TRUE@ zip -r9 @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.zip @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ +@WINDOWS_TRUE@ rm -rf @PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..f99d6be --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,7522 @@ +# generated automatically by aclocal 1.10.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(AC_AUTOCONF_VERSION, [2.61],, +[m4_warning([this file was generated for autoconf 2.61. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 52 Debian 1.5.26-1ubuntu1 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +_LT_REQUIRED_DARWIN_CHECKS + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# -------------------------- +# Check for some things on darwin +AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + echo "int foo(void){return 1;}" > conftest.c + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib ${wl}-single_module conftest.c + if test -f libconftest.dylib; then + lt_cv_apple_cc_single_mod=yes + rm -rf libconftest.dylib* + fi + rm conftest.c + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + case $host_os in + rhapsody* | darwin1.[[0123]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil="~$DSYMUTIL \$lib || :" + else + _lt_dsymutil= + fi + ;; + esac +]) + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +m4_if($1,[],[ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`echo $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec], +[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], +[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognize shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognize a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= +_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + if test "$GXX" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix[[3-9]]*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + # + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + if test "$solaris_use_stlport4" != yes; then + _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) +case " $_LT_AC_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac +])# AC_LIBTOOL_POSTDEP_PREDEP + +# AC_LIBTOOL_LANG_F77_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) +AC_DEFUN([_LT_AC_LANG_F77_CONFIG], +[AC_REQUIRE([AC_PROG_F77]) +AC_LANG_PUSH(Fortran 77) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="\ + subroutine t + return + end +" + +# Code to be used in simple link tests +lt_simple_link_test_code="\ + program t + end +" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +_LT_AC_TAGVAR(GCC, $1)="$G77" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_F77_CONFIG + + +# AC_LIBTOOL_LANG_GCJ_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) +AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], +[AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_GCJ_CONFIG + + +# AC_LIBTOOL_LANG_RC_CONFIG +# ------------------------- +# Ensure that the configuration vars for the Windows resource compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) +AC_DEFUN([_LT_AC_LANG_RC_CONFIG], +[AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_RC_CONFIG + + +# AC_LIBTOOL_CONFIG([TAGNAME]) +# ---------------------------- +# If TAGNAME is not passed, then create an initial libtool script +# with a default configuration from the untagged config vars. Otherwise +# add code to config.status for appending the configuration named by +# TAGNAME from the matching tagged config vars. +AC_DEFUN([AC_LIBTOOL_CONFIG], +[# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + _LT_AC_TAGVAR(compiler, $1) \ + _LT_AC_TAGVAR(CC, $1) \ + _LT_AC_TAGVAR(LD, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ + _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ + _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ + _LT_AC_TAGVAR(old_archive_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ + _LT_AC_TAGVAR(predep_objects, $1) \ + _LT_AC_TAGVAR(postdep_objects, $1) \ + _LT_AC_TAGVAR(predeps, $1) \ + _LT_AC_TAGVAR(postdeps, $1) \ + _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ + _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \ + _LT_AC_TAGVAR(archive_cmds, $1) \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ + _LT_AC_TAGVAR(postinstall_cmds, $1) \ + _LT_AC_TAGVAR(postuninstall_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ + _LT_AC_TAGVAR(allow_undefined_flag, $1) \ + _LT_AC_TAGVAR(no_undefined_flag, $1) \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ + _LT_AC_TAGVAR(hardcode_automatic, $1) \ + _LT_AC_TAGVAR(module_cmds, $1) \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) \ + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ + _LT_AC_TAGVAR(fix_srcfile_path, $1) \ + _LT_AC_TAGVAR(exclude_expsyms, $1) \ + _LT_AC_TAGVAR(include_expsyms, $1); do + + case $var in + _LT_AC_TAGVAR(old_archive_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ + _LT_AC_TAGVAR(archive_cmds, $1) | \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(module_cmds, $1) | \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\[$]0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` + ;; + esac + +ifelse([$1], [], + [cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + AC_MSG_NOTICE([creating $ofile])], + [cfgfile="$ofile"]) + + cat <<__EOF__ >> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([LT_AC_PROG_SED]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + + +# Cheap backport of AS_EXECUTABLE_P and required macros +# from Autoconf 2.59; we should not use $as_executable_p directly. + +# _AS_TEST_PREPARE +# ---------------- +m4_ifndef([_AS_TEST_PREPARE], +[m4_defun([_AS_TEST_PREPARE], +[if test -x / >/dev/null 2>&1; then + as_executable_p='test -x' +else + as_executable_p='test -f' +fi +])])# _AS_TEST_PREPARE + +# AS_EXECUTABLE_P +# --------------- +# Check whether a file is executable. +m4_ifndef([AS_EXECUTABLE_P], +[m4_defun([AS_EXECUTABLE_P], +[AS_REQUIRE([_AS_TEST_PREPARE])dnl +$as_executable_p $1[]dnl +])])# AS_EXECUTABLE_P + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.10' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.10.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.10.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 13 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/alsa.m4]) +m4_include([m4/lua.m4]) diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..7a9c5ef --- /dev/null +++ b/autogen.sh @@ -0,0 +1,1491 @@ +#!/bin/sh +# a u t o g e n . s h +# +# Copyright (c) 2005-2007 United States Government as represented by +# the U.S. Army Research Laboratory. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# 3. The name of the author may not be used to endorse or promote +# products derived from this software without specific prior written +# permission. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS +# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +### +# +# Script for automatically preparing the sources for compilation by +# performing the myrid of necessary steps. The script attempts to +# detect proper version support, and outputs warnings about particular +# systems that have autotool peculiarities. +# +# Basically, if everything is set up and installed correctly, the +# script will validate that minimum versions of the GNU Build System +# tools are installed, account for several common configuration +# issues, and then simply run autoreconf for you. +# +# If autoreconf fails, which can happen for many valid configurations, +# this script proceeds to run manual preparation steps effectively +# providing a POSIX shell script (mostly complete) reimplementation of +# autoreconf. +# +# The AUTORECONF, AUTOCONF, AUTOMAKE, LIBTOOLIZE, ACLOCAL, AUTOHEADER +# environment variables and corresponding _OPTIONS variables (e.g. +# AUTORECONF_OPTIONS) may be used to override the default automatic +# detection behaviors. Similarly the _VERSION variables will override +# the minimum required version numbers. +# +# Examples: +# +# To obtain help on usage: +# ./autogen.sh --help +# +# To obtain verbose output: +# ./autogen.sh --verbose +# +# To skip autoreconf and prepare manually: +# AUTORECONF=false ./autogen.sh +# +# To verbosely try running with an older (unsupported) autoconf: +# AUTOCONF_VERSION=2.50 ./autogen.sh --verbose +# +# Author: Christopher Sean Morrison +# +###################################################################### + +# set to minimum acceptible version of autoconf +if [ "x$AUTOCONF_VERSION" = "x" ] ; then + AUTOCONF_VERSION=2.52 +fi +# set to minimum acceptible version of automake +if [ "x$AUTOMAKE_VERSION" = "x" ] ; then + AUTOMAKE_VERSION=1.6.0 +fi +# set to minimum acceptible version of libtool +if [ "x$LIBTOOL_VERSION" = "x" ] ; then + LIBTOOL_VERSION=1.4.2 +fi + + +################## +# ident function # +################## +ident ( ) { + # extract copyright from header + __copyright="`grep Copyright $AUTOGEN_SH | head -${HEAD_N}1 | awk '{print $4}'`" + if [ "x$__copyright" = "x" ] ; then + __copyright="`date +%Y`" + fi + + # extract version from CVS Id string + __id="$Id: autogen.sh,v 14.97 2007/06/18 22:25:02 brlcad Exp $" + __version="`echo $__id | sed 's/.*\([0-9][0-9][0-9][0-9]\)[-\/]\([0-9][0-9]\)[-\/]\([0-9][0-9]\).*/\1\2\3/'`" + if [ "x$__version" = "x" ] ; then + __version="" + fi + + echo "autogen.sh build preparation script by Christopher Sean Morrison" + echo "revised 3-clause BSD-style license, copyright (c) $__copyright" + echo "script version $__version, ISO/IEC 9945 POSIX shell script" +} + + +################## +# USAGE FUNCTION # +################## +usage ( ) { + echo "Usage: $AUTOGEN_SH [-h|--help] [-v|--verbose] [-q|--quiet] [--version]" + echo " --help Help on $NAME_OF_AUTOGEN usage" + echo " --verbose Verbose progress output" + echo " --quiet Quiet suppressed progress output" + echo " --version Only perform GNU Build System version checks" + echo + echo "Description: This script will validate that minimum versions of the" + echo "GNU Build System tools are installed and then run autoreconf for you." + echo "Should autoreconf fail, manual preparation steps will be run" + echo "potentially accounting for several common preparation issues. The" + + echo "AUTORECONF, AUTOCONF, AUTOMAKE, LIBTOOLIZE, ACLOCAL, AUTOHEADER," + echo "PROJECT, & CONFIGURE environment variables and corresponding _OPTIONS" + echo "variables (e.g. AUTORECONF_OPTIONS) may be used to override the" + echo "default automatic detection behavior." + echo + + ident + + return 0 +} + + +########################## +# VERSION_ERROR FUNCTION # +########################## +version_error ( ) { + if [ "x$1" = "x" ] ; then + echo "INTERNAL ERROR: version_error was not provided a version" + exit 1 + fi + if [ "x$2" = "x" ] ; then + echo "INTERNAL ERROR: version_error was not provided an application name" + exit 1 + fi + $ECHO + $ECHO "ERROR: To prepare the ${PROJECT} build system from scratch," + $ECHO " at least version $1 of $2 must be installed." + $ECHO + $ECHO "$NAME_OF_AUTOGEN does not need to be run on the same machine that will" + $ECHO "run configure or make. Either the GNU Autotools will need to be installed" + $ECHO "or upgraded on this system, or $NAME_OF_AUTOGEN must be run on the source" + $ECHO "code on another system and then transferred to here. -- Cheers!" + $ECHO +} + +########################## +# VERSION_CHECK FUNCTION # +########################## +version_check ( ) { + if [ "x$1" = "x" ] ; then + echo "INTERNAL ERROR: version_check was not provided a minimum version" + exit 1 + fi + _min="$1" + if [ "x$2" = "x" ] ; then + echo "INTERNAL ERROR: version check was not provided a comparison version" + exit 1 + fi + _cur="$2" + + # needed to handle versions like 1.10 and 1.4-p6 + _min="`echo ${_min}. | sed 's/[^0-9]/./g' | sed 's/\.\././g'`" + _cur="`echo ${_cur}. | sed 's/[^0-9]/./g' | sed 's/\.\././g'`" + + _min_major="`echo $_min | cut -d. -f1`" + _min_minor="`echo $_min | cut -d. -f2`" + _min_patch="`echo $_min | cut -d. -f3`" + + _cur_major="`echo $_cur | cut -d. -f1`" + _cur_minor="`echo $_cur | cut -d. -f2`" + _cur_patch="`echo $_cur | cut -d. -f3`" + + if [ "x$_min_major" = "x" ] ; then + _min_major=0 + fi + if [ "x$_min_minor" = "x" ] ; then + _min_minor=0 + fi + if [ "x$_min_patch" = "x" ] ; then + _min_patch=0 + fi + if [ "x$_cur_minor" = "x" ] ; then + _cur_major=0 + fi + if [ "x$_cur_minor" = "x" ] ; then + _cur_minor=0 + fi + if [ "x$_cur_patch" = "x" ] ; then + _cur_patch=0 + fi + + $VERBOSE_ECHO "Checking if ${_cur_major}.${_cur_minor}.${_cur_patch} is greater than ${_min_major}.${_min_minor}.${_min_patch}" + + if [ $_min_major -lt $_cur_major ] ; then + return 0 + elif [ $_min_major -eq $_cur_major ] ; then + if [ $_min_minor -lt $_cur_minor ] ; then + return 0 + elif [ $_min_minor -eq $_cur_minor ] ; then + if [ $_min_patch -lt $_cur_patch ] ; then + return 0 + elif [ $_min_patch -eq $_cur_patch ] ; then + return 0 + fi + fi + fi + return 1 +} + + +###################################### +# LOCATE_CONFIGURE_TEMPLATE FUNCTION # +###################################### +locate_configure_template ( ) { + _pwd="`pwd`" + if test -f "./configure.ac" ; then + echo "./configure.ac" + elif test -f "./configure.in" ; then + echo "./configure.in" + elif test -f "$_pwd/configure.ac" ; then + echo "$_pwd/configure.ac" + elif test -f "$_pwd/configure.in" ; then + echo "$_pwd/configure.in" + elif test -f "$PATH_TO_AUTOGEN/configure.ac" ; then + echo "$PATH_TO_AUTOGEN/configure.ac" + elif test -f "$PATH_TO_AUTOGEN/configure.in" ; then + echo "$PATH_TO_AUTOGEN/configure.in" + fi +} + + +################## +# argument check # +################## +ARGS="$*" +PATH_TO_AUTOGEN="`dirname $0`" +NAME_OF_AUTOGEN="`basename $0`" +AUTOGEN_SH="$PATH_TO_AUTOGEN/$NAME_OF_AUTOGEN" + +LIBTOOL_M4="${PATH_TO_AUTOGEN}/misc/libtool.m4" + +if [ "x$HELP" = "x" ] ; then + HELP=no +fi +if [ "x$QUIET" = "x" ] ; then + QUIET=no +fi +if [ "x$VERBOSE" = "x" ] ; then + VERBOSE=no +fi +if [ "x$VERSION_ONLY" = "x" ] ; then + VERSION_ONLY=no +fi +if [ "x$AUTORECONF_OPTIONS" = "x" ] ; then + AUTORECONF_OPTIONS="-i -f" +fi +if [ "x$AUTOCONF_OPTIONS" = "x" ] ; then + AUTOCONF_OPTIONS="-f" +fi +if [ "x$AUTOMAKE_OPTIONS" = "x" ] ; then + AUTOMAKE_OPTIONS="-a -c -f" +fi +ALT_AUTOMAKE_OPTIONS="-a -c" +if [ "x$LIBTOOLIZE_OPTIONS" = "x" ] ; then + LIBTOOLIZE_OPTIONS="--automake -c -f" +fi +ALT_LIBTOOLIZE_OPTIONS="--automake --copy --force" +if [ "x$ACLOCAL_OPTIONS" = "x" ] ; then + ACLOCAL_OPTIONS="" +fi +if [ "x$AUTOHEADER_OPTIONS" = "x" ] ; then + AUTOHEADER_OPTIONS="" +fi +for arg in $ARGS ; do + case "x$arg" in + x--help) HELP=yes ;; + x-[hH]) HELP=yes ;; + x--quiet) QUIET=yes ;; + x-[qQ]) QUIET=yes ;; + x--verbose) VERBOSE=yes ;; + x-[vV]) VERBOSE=yes ;; + x--version) VERSION_ONLY=yes ;; + *) + echo "Unknown option: $arg" + echo + usage + exit 1 + ;; + esac +done + + +##################### +# environment check # +##################### + +# sanity check before recursions potentially begin +if [ ! -f "$AUTOGEN_SH" ] ; then + echo "INTERNAL ERROR: $AUTOGEN_SH does not exist" + if [ ! "x$0" = "x$AUTOGEN_SH" ] ; then + echo "INTERNAL ERROR: dirname/basename inconsistency: $0 != $AUTOGEN_SH" + fi + exit 1 +fi + +# force locale setting to C so things like date output as expected +LC_ALL=C + +# commands that this script expects +for __cmd in echo head tail pwd ; do + echo "test" | $__cmd > /dev/null 2>&1 + if [ $? != 0 ] ; then + echo "INTERNAL ERROR: '${__cmd}' command is required" + exit 2 + fi +done +echo "test" | grep "test" > /dev/null 2>&1 +if test ! x$? = x0 ; then + echo "INTERNAL ERROR: grep command is required" + exit 1 +fi +echo "test" | sed "s/test/test/" > /dev/null 2>&1 +if test ! x$? = x0 ; then + echo "INTERNAL ERROR: sed command is required" + exit 1 +fi + + +# determine the behavior of echo +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +# determine the behavior of head +case "x`echo 'head' | head -n 1 2>&1`" in + *xhead*) HEAD_N="n " ;; + *) HEAD_N="" ;; +esac + +# determine the behavior of tail +case "x`echo 'tail' | tail -n 1 2>&1`" in + *xtail*) TAIL_N="n " ;; + *) TAIL_N="" ;; +esac + +VERBOSE_ECHO=: +ECHO=: +if [ "x$QUIET" = "xyes" ] ; then + if [ "x$VERBOSE" = "xyes" ] ; then + echo "Verbose output quelled by quiet option. Further output disabled." + fi +else + ECHO=echo + if [ "x$VERBOSE" = "xyes" ] ; then + echo "Verbose output enabled" + VERBOSE_ECHO=echo + fi +fi + + +# allow a recursive run to disable further recursions +if [ "x$RUN_RECURSIVE" = "x" ] ; then + RUN_RECURSIVE=yes +fi + + +################################################ +# check for help arg and bypass version checks # +################################################ +if [ "x`echo $ARGS | sed 's/.*[hH][eE][lL][pP].*/help/'`" = "xhelp" ] ; then + HELP=yes +fi +if [ "x$HELP" = "xyes" ] ; then + usage + $ECHO "---" + $ECHO "Help was requested. No preparation or configuration will be performed." + exit 0 +fi + + +####################### +# set up signal traps # +####################### +untrap_abnormal ( ) { + for sig in 1 2 13 15; do + trap - $sig + done +} + +# do this cleanup whenever we exit. +trap ' + # start from the root + if test -d "$START_PATH" ; then + cd "$START_PATH" + fi + + # restore/delete backup files + if test "x$PFC_INIT" = "x1" ; then + recursive_restore + fi +' 0 + +# trap SIGHUP (1), SIGINT (2), SIGPIPE (13), SIGTERM (15) +for sig in 1 2 13 15; do + trap ' + $ECHO "" + $ECHO "Aborting $NAME_OF_AUTOGEN: caught signal '$sig'" + + # start from the root + if test -d "$START_PATH" ; then + cd "$START_PATH" + fi + + # clean up on abnormal exit + $VERBOSE_ECHO "rm -rf autom4te.cache" + rm -rf autom4te.cache + + if test -f "acinclude.m4.$$.backup" ; then + $VERBOSE_ECHO "cat acinclude.m4.$$.backup > acinclude.m4" + chmod u+w acinclude.m4 + cat acinclude.m4.$$.backup > acinclude.m4 + + $VERBOSE_ECHO "rm -f acinclude.m4.$$.backup" + rm -f acinclude.m4.$$.backup + fi + + { (exit 1); exit 1; } +' $sig +done + + +############################# +# look for a configure file # +############################# +if [ "x$CONFIGURE" = "x" ] ; then + CONFIGURE="`locate_configure_template`" + if [ ! "x$CONFIGURE" = "x" ] ; then + $VERBOSE_ECHO "Found a configure template: $CONFIGURE" + fi +else + $ECHO "Using CONFIGURE environment variable override: $CONFIGURE" +fi +if [ "x$CONFIGURE" = "x" ] ; then + if [ "x$VERSION_ONLY" = "xyes" ] ; then + CONFIGURE=/dev/null + else + $ECHO + $ECHO "A configure.ac or configure.in file could not be located implying" + $ECHO "that the GNU Build System is at least not used in this directory. In" + $ECHO "any case, there is nothing to do here without one of those files." + $ECHO + $ECHO "ERROR: No configure.in or configure.ac file found in `pwd`" + exit 1 + fi +fi + +#################### +# get project name # +#################### +if [ "x$PROJECT" = "x" ] ; then + PROJECT="`grep AC_INIT $CONFIGURE | grep -v '.*#.*AC_INIT' | tail -${TAIL_N}1 | sed 's/^[ ]*AC_INIT(\([^,)]*\).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`" + if [ "x$PROJECT" = "xAC_INIT" ] ; then + # projects might be using the older/deprecated arg-less AC_INIT .. look for AM_INIT_AUTOMAKE instead + PROJECT="`grep AM_INIT_AUTOMAKE $CONFIGURE | grep -v '.*#.*AM_INIT_AUTOMAKE' | tail -${TAIL_N}1 | sed 's/^[ ]*AM_INIT_AUTOMAKE(\([^,)]*\).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`" + fi + if [ "x$PROJECT" = "xAM_INIT_AUTOMAKE" ] ; then + PROJECT="project" + fi + if [ "x$PROJECT" = "x" ] ; then + PROJECT="project" + fi +else + $ECHO "Using PROJECT environment variable override: $PROJECT" +fi +$ECHO "Preparing the $PROJECT build system...please wait" +$ECHO + + +######################## +# check for autoreconf # +######################## +HAVE_AUTORECONF=no +if [ "x$AUTORECONF" = "x" ] ; then + for AUTORECONF in autoreconf ; do + $VERBOSE_ECHO "Checking autoreconf version: $AUTORECONF --version" + $AUTORECONF --version > /dev/null 2>&1 + if [ $? = 0 ] ; then + HAVE_AUTORECONF=yes + break + fi + done +else + HAVE_AUTORECONF=yes + $ECHO "Using AUTORECONF environment variable override: $AUTORECONF" +fi + + +########################## +# autoconf version check # +########################## +_acfound=no +if [ "x$AUTOCONF" = "x" ] ; then + for AUTOCONF in autoconf ; do + $VERBOSE_ECHO "Checking autoconf version: $AUTOCONF --version" + $AUTOCONF --version > /dev/null 2>&1 + if [ $? = 0 ] ; then + _acfound=yes + break + fi + done +else + _acfound=yes + $ECHO "Using AUTOCONF environment variable override: $AUTOCONF" +fi + +_report_error=no +if [ ! "x$_acfound" = "xyes" ] ; then + $ECHO "ERROR: Unable to locate GNU Autoconf." + _report_error=yes +else + _version="`$AUTOCONF --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`" + if [ "x$_version" = "x" ] ; then + _version="0.0.0" + fi + $ECHO "Found GNU Autoconf version $_version" + version_check "$AUTOCONF_VERSION" "$_version" + if [ $? -ne 0 ] ; then + _report_error=yes + fi +fi +if [ "x$_report_error" = "xyes" ] ; then + version_error "$AUTOCONF_VERSION" "GNU Autoconf" + exit 1 +fi + + +########################## +# automake version check # +########################## +_amfound=no +if [ "x$AUTOMAKE" = "x" ] ; then + for AUTOMAKE in automake ; do + $VERBOSE_ECHO "Checking automake version: $AUTOMAKE --version" + $AUTOMAKE --version > /dev/null 2>&1 + if [ $? = 0 ] ; then + _amfound=yes + break + fi + done +else + _amfound=yes + $ECHO "Using AUTOMAKE environment variable override: $AUTOMAKE" +fi + + +_report_error=no +if [ ! "x$_amfound" = "xyes" ] ; then + $ECHO + $ECHO "ERROR: Unable to locate GNU Automake." + _report_error=yes +else + _version="`$AUTOMAKE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`" + if [ "x$_version" = "x" ] ; then + _version="0.0.0" + fi + $ECHO "Found GNU Automake version $_version" + version_check "$AUTOMAKE_VERSION" "$_version" + if [ $? -ne 0 ] ; then + _report_error=yes + fi +fi +if [ "x$_report_error" = "xyes" ] ; then + version_error "$AUTOMAKE_VERSION" "GNU Automake" + exit 1 +fi + + +######################## +# check for libtoolize # +######################## +HAVE_LIBTOOLIZE=yes +HAVE_ALT_LIBTOOLIZE=no +_ltfound=no +if [ "x$LIBTOOLIZE" = "x" ] ; then + LIBTOOLIZE=libtoolize + $VERBOSE_ECHO "Checking libtoolize version: $LIBTOOLIZE --version" + $LIBTOOLIZE --version > /dev/null 2>&1 + if [ ! $? = 0 ] ; then + HAVE_LIBTOOLIZE=no + $ECHO + if [ "x$HAVE_AUTORECONF" = "xno" ] ; then + $ECHO "Warning: libtoolize does not appear to be available." + else + $ECHO "Warning: libtoolize does not appear to be available. This means that" + $ECHO "the automatic build preparation via autoreconf will probably not work." + $ECHO "Preparing the build by running each step individually, however, should" + $ECHO "work and will be done automatically for you if autoreconf fails." + fi + + # look for some alternates + for tool in glibtoolize libtoolize15 libtoolize14 libtoolize13 ; do + $VERBOSE_ECHO "Checking libtoolize alternate: $tool --version" + _glibtoolize="`$tool --version > /dev/null 2>&1`" + if [ $? = 0 ] ; then + $VERBOSE_ECHO "Found $tool --version" + _glti="`which $tool`" + if [ "x$_glti" = "x" ] ; then + $VERBOSE_ECHO "Cannot find $tool with which" + continue; + fi + if test ! -f "$_glti" ; then + $VERBOSE_ECHO "Cannot use $tool, $_glti is not a file" + continue; + fi + _gltidir="`dirname $_glti`" + if [ "x$_gltidir" = "x" ] ; then + $VERBOSE_ECHO "Cannot find $tool path with dirname of $_glti" + continue; + fi + if test ! -d "$_gltidir" ; then + $VERBOSE_ECHO "Cannot use $tool, $_gltidir is not a directory" + continue; + fi + HAVE_ALT_LIBTOOLIZE=yes + LIBTOOLIZE="$tool" + $ECHO + $ECHO "Fortunately, $tool was found which means that your system may simply" + $ECHO "have a non-standard or incomplete GNU Autotools install. If you have" + $ECHO "sufficient system access, it may be possible to quell this warning by" + $ECHO "running:" + $ECHO + sudo -V > /dev/null 2>&1 + if [ $? = 0 ] ; then + $ECHO " sudo ln -s $_glti $_gltidir/libtoolize" + $ECHO + else + $ECHO " ln -s $_glti $_gltidir/libtoolize" + $ECHO + $ECHO "Run that as root or with proper permissions to the $_gltidir directory" + $ECHO + fi + _ltfound=yes + break + fi + done + else + _ltfound=yes + fi +else + _ltfound=yes + $ECHO "Using LIBTOOLIZE environment variable override: $LIBTOOLIZE" +fi + + +############################ +# libtoolize version check # +############################ +_report_error=no +if [ ! "x$_ltfound" = "xyes" ] ; then + $ECHO + $ECHO "ERROR: Unable to locate GNU Libtool." + _report_error=yes +else + _version="`$LIBTOOLIZE --version | head -${HEAD_N}1 | sed 's/[^0-9]*\([0-9\.][0-9\.]*\)/\1/'`" + if [ "x$_version" = "x" ] ; then + _version="0.0.0" + fi + $ECHO "Found GNU Libtool version $_version" + version_check "$LIBTOOL_VERSION" "$_version" + if [ $? -ne 0 ] ; then + _report_error=yes + fi +fi +if [ "x$_report_error" = "xyes" ] ; then + version_error "$LIBTOOL_VERSION" "GNU Libtool" + exit 1 +fi + + +##################### +# check for aclocal # +##################### +if [ "x$ACLOCAL" = "x" ] ; then + for ACLOCAL in aclocal ; do + $VERBOSE_ECHO "Checking aclocal version: $ACLOCAL --version" + $ACLOCAL --version > /dev/null 2>&1 + if [ $? = 0 ] ; then + break + fi + done +else + $ECHO "Using ACLOCAL environment variable override: $ACLOCAL" +fi + + +######################## +# check for autoheader # +######################## +if [ "x$AUTOHEADER" = "x" ] ; then + for AUTOHEADER in autoheader ; do + $VERBOSE_ECHO "Checking autoheader version: $AUTOHEADER --version" + $AUTOHEADER --version > /dev/null 2>&1 + if [ $? = 0 ] ; then + break + fi + done +else + $ECHO "Using AUTOHEADER environment variable override: $AUTOHEADER" +fi + + +######################### +# check if version only # +######################### +$VERBOSE_ECHO "Checking whether to only output version information" +if [ "x$VERSION_ONLY" = "xyes" ] ; then + $ECHO + ident + $ECHO "---" + $ECHO "Version requested. No preparation or configuration will be performed." + exit 0 +fi + + +################################# +# PROTECT_FROM_CLOBBER FUNCTION # +################################# +protect_from_clobber ( ) { + PFC_INIT=1 + + # protect COPYING & INSTALL from overwrite by automake. the + # automake force option will (inappropriately) ignore the existing + # contents of a COPYING and/or INSTALL files (depending on the + # version) instead of just forcing *missing* files like it does + # for AUTHORS, NEWS, and README. this is broken but extremely + # prevalent behavior, so we protect against it by keeping a backup + # of the file that can later be restored. + + if test -f COPYING ; then + if test -f COPYING.$$.protect_from_automake.backup ; then + $VERBOSE_ECHO "Already backed up COPYING in `pwd`" + else + $VERBOSE_ECHO "Backing up COPYING in `pwd`" + $VERBOSE_ECHO "cp -p COPYING COPYING.$$.protect_from_automake.backup" + cp -p COPYING COPYING.$$.protect_from_automake.backup + fi + fi + if test -f INSTALL ; then + if test -f INSTALL.$$.protect_from_automake.backup ; then + $VERBOSE_ECHO "Already backed up INSTALL in `pwd`" + else + $VERBOSE_ECHO "Backing up INSTALL in `pwd`" + $VERBOSE_ECHO "cp -p INSTALL INSTALL.$$.protect_from_automake.backup" + cp -p INSTALL INSTALL.$$.protect_from_automake.backup + fi + fi +} + + +############################## +# RECURSIVE_PROTECT FUNCTION # +############################## +recursive_protect ( ) { + + # for projects using recursive configure, run the build + # preparation steps for the subdirectories. this function assumes + # START_PATH was set to pwd before recursion begins so that + # relative paths work. + + # git 'r done, protect COPYING and INSTALL from being clobbered + protect_from_clobber + + if test -d autom4te.cache ; then + $VERBOSE_ECHO "Found an autom4te.cache directory, deleting it" + $VERBOSE_ECHO "rm -rf autom4te.cache" + rm -rf autom4te.cache + fi + + # find configure template + _configure="`locate_configure_template`" + if [ "x$_configure" = "x" ] ; then + return + fi + # $VERBOSE_ECHO "Looking for configure template found `pwd`/$_configure" + + # look for subdirs + # $VERBOSE_ECHO "Looking for subdirs in `pwd`" + _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $_configure | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ ]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`" + CHECK_DIRS="" + for dir in $_det_config_subdirs ; do + if test -d "`pwd`/$dir" ; then + CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\"" + fi + done + + # process subdirs + if [ ! "x$CHECK_DIRS" = "x" ] ; then + $VERBOSE_ECHO "Recursively scanning the following directories:" + $VERBOSE_ECHO " $CHECK_DIRS" + for dir in $CHECK_DIRS ; do + $VERBOSE_ECHO "Protecting files from automake in $dir" + cd "$START_PATH" + eval "cd $dir" + + # recursively git 'r done + recursive_protect + done + fi +} # end of recursive_protect + + +############################# +# RESTORE_CLOBBERED FUNCION # +############################# +restore_clobbered ( ) { + + # The automake (and autoreconf by extension) -f/--force-missing + # option may overwrite COPYING and INSTALL even if they do exist. + # Here we restore the files if necessary. + + spacer=no + + # COPYING + if test -f COPYING.$$.protect_from_automake.backup ; then + if test -f COPYING ; then + # compare entire content, restore if needed + if test "x`cat COPYING`" != "x`cat COPYING.$$.protect_from_automake.backup`" ; then + if test "x$spacer" = "xno" ; then + $VERBOSE_ECHO + spacer=yes + fi + # restore the backup + $VERBOSE_ECHO "Restoring COPYING from backup (automake -f likely clobbered it)" + $VERBOSE_ECHO "rm -f COPYING" + rm -f COPYING + $VERBOSE_ECHO "mv COPYING.$$.protect_from_automake.backup COPYING" + mv COPYING.$$.protect_from_automake.backup COPYING + fi # check contents + elif test -f COPYING.$$.protect_from_automake.backup ; then + $VERBOSE_ECHO "mv COPYING.$$.protect_from_automake.backup COPYING" + mv COPYING.$$.protect_from_automake.backup COPYING + fi # -f COPYING + + # just in case + $VERBOSE_ECHO "rm -f COPYING.$$.protect_from_automake.backup" + rm -f COPYING.$$.protect_from_automake.backup + fi # -f COPYING.$$.protect_from_automake.backup + + # INSTALL + if test -f INSTALL.$$.protect_from_automake.backup ; then + if test -f INSTALL ; then + # compare entire content, restore if needed + if test "x`cat INSTALL`" != "x`cat INSTALL.$$.protect_from_automake.backup`" ; then + if test "x$spacer" = "xno" ; then + $VERBOSE_ECHO + spacer=yes + fi + # restore the backup + $VERBOSE_ECHO "Restoring INSTALL from backup (automake -f likely clobbered it)" + $VERBOSE_ECHO "rm -f INSTALL" + rm -f INSTALL + $VERBOSE_ECHO "mv INSTALL.$$.protect_from_automake.backup INSTALL" + mv INSTALL.$$.protect_from_automake.backup INSTALL + fi # check contents + elif test -f INSTALL.$$.protect_from_automake.backup ; then + $VERBOSE_ECHO "mv INSTALL.$$.protect_from_automake.backup INSTALL" + mv INSTALL.$$.protect_from_automake.backup INSTALL + fi # -f INSTALL + + # just in case + $VERBOSE_ECHO "rm -f INSTALL.$$.protect_from_automake.backup" + rm -f INSTALL.$$.protect_from_automake.backup + fi # -f INSTALL.$$.protect_from_automake.backup + + CONFIGURE="`locate_configure_template`" + if [ "x$CONFIGURE" = "x" ] ; then + return + fi + + _aux_dir="`grep AC_CONFIG_AUX_DIR $CONFIGURE | grep -v '.*#.*AC_CONFIG_AUX_DIR' | tail -${TAIL_N}1 | sed 's/^[ ]*AC_CONFIG_AUX_DIR(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`" + if test ! -d "$_aux_dir" ; then + _aux_dir=. + fi + + for file in config.guess config.sub ltmain.sh ; do + if test -f "${_aux_dir}/${file}" ; then + $VERBOSE_ECHO "rm -f \"${_aux_dir}/${file}.backup\"" + rm -f "${_aux_dir}/${file}.backup" + fi + done +} # end of restore_clobbered + + +############################## +# RECURSIVE_RESTORE FUNCTION # +############################## +recursive_restore ( ) { + + # restore COPYING and INSTALL from backup if they were clobbered + # for each directory recursively. + + # git 'r undone + restore_clobbered + + # find configure template + _configure="`locate_configure_template`" + if [ "x$_configure" = "x" ] ; then + return + fi + + # look for subdirs + _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $_configure | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ ]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`" + CHECK_DIRS="" + for dir in $_det_config_subdirs ; do + if test -d "`pwd`/$dir" ; then + CHECK_DIRS="$CHECK_DIRS \"`pwd`/$dir\"" + fi + done + + # process subdirs + if [ ! "x$CHECK_DIRS" = "x" ] ; then + $VERBOSE_ECHO "Recursively scanning the following directories:" + $VERBOSE_ECHO " $CHECK_DIRS" + for dir in $CHECK_DIRS ; do + $VERBOSE_ECHO "Checking files for automake damage in $dir" + cd "$START_PATH" + eval "cd $dir" + + # recursively git 'r undone + recursive_restore + done + fi +} # end of recursive_restore + + +####################### +# INITIALIZE FUNCTION # +####################### +initialize ( ) { + + # this routine performs a variety of directory-specific + # initializations. some are sanity checks, some are preventive, + # and some are necessary setup detection. + # + # this function sets: + # CONFIGURE + # SEARCH_DIRS + # CONFIG_SUBDIRS + + ################################## + # check for a configure template # + ################################## + CONFIGURE="`locate_configure_template`" + if [ "x$CONFIGURE" = "x" ] ; then + $ECHO + $ECHO "A configure.ac or configure.in file could not be located implying" + $ECHO "that the GNU Build System is at least not used in this directory. In" + $ECHO "any case, there is nothing to do here without one of those files." + $ECHO + $ECHO "ERROR: No configure.in or configure.ac file found in `pwd`" + exit 1 + fi + + ##################### + # detect an aux dir # + ##################### + _aux_dir="`grep AC_CONFIG_AUX_DIR $CONFIGURE | grep -v '.*#.*AC_CONFIG_AUX_DIR' | tail -${TAIL_N}1 | sed 's/^[ ]*AC_CONFIG_AUX_DIR(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`" + if test ! -d "$_aux_dir" ; then + _aux_dir=. + else + $VERBOSE_ECHO "Detected auxillary directory: $_aux_dir" + fi + + ################################ + # detect a recursive configure # + ################################ + CONFIG_SUBDIRS="" + _det_config_subdirs="`grep AC_CONFIG_SUBDIRS $CONFIGURE | grep -v '.*#.*AC_CONFIG_SUBDIRS' | sed 's/^[ ]*AC_CONFIG_SUBDIRS(\(.*\)).*/\1/' | sed 's/.*\[\(.*\)\].*/\1/'`" + for dir in $_det_config_subdirs ; do + if test -d "`pwd`/$dir" ; then + $VERBOSE_ECHO "Detected recursive configure directory: `pwd`/$dir" + CONFIG_SUBDIRS="$CONFIG_SUBDIRS `pwd`/$dir" + fi + done + + ########################################## + # make sure certain required files exist # + ########################################## + for file in AUTHORS COPYING ChangeLog INSTALL NEWS README ; do + if test ! -f $file ; then + $VERBOSE_ECHO "Touching ${file} since it does not exist" + touch $file + fi + done + + ################################################## + # make sure certain generated files do not exist # + ################################################## + for file in config.guess config.sub ltmain.sh ; do + if test -f "${_aux_dir}/${file}" ; then + $VERBOSE_ECHO "mv -f \"${_aux_dir}/${file}\" \"${_aux_dir}/${file}.backup\"" + mv -f "${_aux_dir}/${file}" "${_aux_dir}/${file}.backup" + fi + done + + ############################ + # search alternate m4 dirs # + ############################ + SEARCH_DIRS="" + for dir in m4 ; do + if [ -d $dir ] ; then + $VERBOSE_ECHO "Found extra aclocal search directory: $dir" + SEARCH_DIRS="$SEARCH_DIRS -I $dir" + fi + done + + ###################################### + # remove any previous build products # + ###################################### + if test -d autom4te.cache ; then + $VERBOSE_ECHO "Found an autom4te.cache directory, deleting it" + $VERBOSE_ECHO "rm -rf autom4te.cache" + rm -rf autom4te.cache + fi +# tcl/tk (and probably others) have a customized aclocal.m4, so can't delete it +# if test -f aclocal.m4 ; then +# $VERBOSE_ECHO "Found an aclocal.m4 file, deleting it" +# $VERBOSE_ECHO "rm -f aclocal.m4" +# rm -f aclocal.m4 +# fi + +} # end of initialize() + + +############## +# initialize # +############## + +# stash path +START_PATH="`pwd`" + +# Before running autoreconf or manual steps, some prep detection work +# is necessary or useful. Only needs to occur once per directory, but +# does need to traverse the entire subconfigure hierarchy to protect +# files from being clobbered even by autoreconf. +recursive_protect + +# start from where we started +cd "$START_PATH" + +# get ready to process +initialize + + +############################################ +# prepare build via autoreconf or manually # +############################################ +reconfigure_manually=no +if [ "x$HAVE_AUTORECONF" = "xyes" ] ; then + $ECHO + $ECHO $ECHO_N "Automatically preparing build ... $ECHO_C" + + $VERBOSE_ECHO "$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS" + autoreconf_output="`$AUTORECONF $SEARCH_DIRS $AUTORECONF_OPTIONS 2>&1`" + ret=$? + $VERBOSE_ECHO "$autoreconf_output" + + if [ ! $ret = 0 ] ; then + if [ "x$HAVE_ALT_LIBTOOLIZE" = "xyes" ] ; then + if [ ! "x`echo \"$autoreconf_output\" | grep libtoolize | grep \"No such file or directory\"`" = "x" ] ; then + $ECHO + $ECHO "Warning: autoreconf failed but due to what is usually a common libtool" + $ECHO "misconfiguration issue. This problem is encountered on systems that" + $ECHO "have installed libtoolize under a different name without providing a" + $ECHO "symbolic link or without setting the LIBTOOLIZE environment variable." + $ECHO + $ECHO "Restarting the preparation steps with LIBTOOLIZE set to $LIBTOOLIZE" + + export LIBTOOLIZE + RUN_RECURSIVE=no + export RUN_RECURSIVE + untrap_abnormal + + $VERBOSE_ECHO sh $AUTOGEN_SH "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" + sh "$AUTOGEN_SH" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" + exit $? + fi + fi + + $ECHO "Warning: $AUTORECONF failed" + + if test -f ltmain.sh ; then + $ECHO "libtoolize being run by autoreconf is not creating ltmain.sh in the auxillary directory like it should" + fi + + $ECHO "Attempting to run the preparation steps individually" + reconfigure_manually=yes + fi +else + reconfigure_manually=yes +fi + + +############################ +# LIBTOOL_FAILURE FUNCTION # +############################ +libtool_failure ( ) { + + # libtool is rather error-prone in comparison to the other + # autotools and this routine attempts to compensate for some + # common failures. the output after a libtoolize failure is + # parsed for an error related to AC_PROG_LIBTOOL and if found, we + # attempt to inject a project-provided libtool.m4 file. + + _autoconf_output="$1" + + if [ "x$RUN_RECURSIVE" = "xno" ] ; then + # we already tried the libtool.m4, don't try again + return 1 + fi + + if test -f "$LIBTOOL_M4" ; then + found_libtool="`$ECHO $_autoconf_output | grep AC_PROG_LIBTOOL`" + if test ! "x$found_libtool" = "x" ; then + if test -f acinclude.m4 ; then + rm -f acinclude.m4.$$.backup + $VERBOSE_ECHO "cat acinclude.m4 > acinclude.m4.$$.backup" + cat acinclude.m4 > acinclude.m4.$$.backup + fi + $VERBOSE_ECHO "cat \"$LIBTOOL_M4\" >> acinclude.m4" + chmod u+w acinclude.m4 + cat "$LIBTOOL_M4" >> acinclude.m4 + + # don't keep doing this + RUN_RECURSIVE=no + export RUN_RECURSIVE + untrap_abnormal + + $ECHO + $ECHO "Restarting the preparation steps with libtool macros in acinclude.m4" + $VERBOSE_ECHO sh $AUTOGEN_SH "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" + sh "$AUTOGEN_SH" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" + exit $? + fi + fi +} + + +########################### +# MANUAL_AUTOGEN FUNCTION # +########################### +manual_autogen ( ) { + + ################################################## + # Manual preparation steps taken are as follows: # + # aclocal [-I m4] # + # libtoolize --automake -c -f # + # aclocal [-I m4] # + # autoconf -f # + # autoheader # + # automake -a -c -f # + ################################################## + + ########### + # aclocal # + ########### + $VERBOSE_ECHO "$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS" + aclocal_output="`$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS 2>&1`" + ret=$? + $VERBOSE_ECHO "$aclocal_output" + if [ ! $ret = 0 ] ; then $ECHO "ERROR: $ACLOCAL failed" && exit 2 ; fi + + ############## + # libtoolize # + ############## + need_libtoolize=no + for feature in AC_PROG_LIBTOOL LT_INIT ; do + $VERBOSE_ECHO "Searching for $feature in $CONFIGURE" + found="`grep \"^$feature.*\" $CONFIGURE`" + if [ ! "x$found" = "x" ] ; then + need_libtoolize=yes + break + fi + done + if [ "x$need_libtoolize" = "xyes" ] ; then + if [ "x$HAVE_LIBTOOLIZE" = "xyes" ] ; then + $VERBOSE_ECHO "$LIBTOOLIZE $LIBTOOLIZE_OPTIONS" + libtoolize_output="`$LIBTOOLIZE $LIBTOOLIZE_OPTIONS 2>&1`" + ret=$? + $VERBOSE_ECHO "$libtoolize_output" + + if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi + else + if [ "x$HAVE_ALT_LIBTOOLIZE" = "xyes" ] ; then + $VERBOSE_ECHO "$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS" + libtoolize_output="`$LIBTOOLIZE $ALT_LIBTOOLIZE_OPTIONS 2>&1`" + ret=$? + $VERBOSE_ECHO "$libtoolize_output" + + if [ ! $ret = 0 ] ; then $ECHO "ERROR: $LIBTOOLIZE failed" && exit 2 ; fi + fi + fi + + ########### + # aclocal # + ########### + # re-run again as instructed by libtoolize + $VERBOSE_ECHO "$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS" + aclocal_output="`$ACLOCAL $SEARCH_DIRS $ACLOCAL_OPTIONS 2>&1`" + ret=$? + $VERBOSE_ECHO "$aclocal_output" + + # libtoolize might put ltmain.sh in the wrong place + if test -f ltmain.sh ; then + if test ! -f "${_aux_dir}/ltmain.sh" ; then + $ECHO + $ECHO "Warning: $LIBTOOLIZE is creating ltmain.sh in the wrong directory" + $ECHO + $ECHO "Fortunately, the problem can be worked around by simply copying the" + $ECHO "file to the appropriate location (${_aux_dir}/). This has been done for you." + $ECHO + $VERBOSE_ECHO "cp -p ltmain.sh \"${_aux_dir}/ltmain.sh\"" + cp -p ltmain.sh "${_aux_dir}/ltmain.sh" + $ECHO $ECHO_N "Continuing build preparation ... $ECHO_C" + fi + fi # ltmain.sh + fi # need_libtoolize + + ############ + # autoconf # + ############ + $VERBOSE_ECHO + $VERBOSE_ECHO "$AUTOCONF $AUTOCONF_OPTIONS" + autoconf_output="`$AUTOCONF $AUTOCONF_OPTIONS 2>&1`" + ret=$? + $VERBOSE_ECHO "$autoconf_output" + + if [ ! $ret = 0 ] ; then + # retry without the -f and check for usage of macros that are too new + ac2_59_macros="AC_C_RESTRICT AC_INCLUDES_DEFAULT AC_LANG_ASSERT AC_LANG_WERROR AS_SET_CATFILE" + ac2_55_macros="AC_COMPILER_IFELSE AC_FUNC_MBRTOWC AC_HEADER_STDBOOL AC_LANG_CONFTEST AC_LANG_SOURCE AC_LANG_PROGRAM AC_LANG_CALL AC_LANG_FUNC_TRY_LINK AC_MSG_FAILURE AC_PREPROC_IFELSE" + ac2_54_macros="AC_C_BACKSLASH_A AC_CONFIG_LIBOBJ_DIR AC_GNU_SOURCE AC_PROG_EGREP AC_PROG_FGREP AC_REPLACE_FNMATCH AC_FUNC_FNMATCH_GNU AC_FUNC_REALLOC AC_TYPE_MBSTATE_T" + + macros_to_search="" + ac_major="`echo ${AUTOCONF_VERSION}. | cut -d. -f1 | sed 's/[^0-9]//g'`" + ac_minor="`echo ${AUTOCONF_VERSION}. | cut -d. -f2 | sed 's/[^0-9]//g'`" + + if [ $ac_major -lt 2 ] ; then + macros_to_search="$ac2_59_macros $ac2_55_macros $ac2_54_macros" + else + if [ $ac_minor -lt 54 ] ; then + macros_to_search="$ac2_59_macros $ac2_55_macros $ac2_54_macros" + elif [ $ac_minor -lt 55 ] ; then + macros_to_search="$ac2_59_macros $ac2_55_macros" + elif [ $ac_minor -lt 59 ] ; then + macros_to_search="$ac2_59_macros" + fi + fi + + configure_ac_macros=__none__ + for feature in $macros_to_search ; do + $VERBOSE_ECHO "Searching for $feature in $CONFIGURE" + found="`grep \"^$feature.*\" $CONFIGURE`" + if [ ! "x$found" = "x" ] ; then + if [ "x$configure_ac_macros" = "x__none__" ] ; then + configure_ac_macros="$feature" + else + configure_ac_macros="$feature $configure_ac_macros" + fi + fi + done + if [ ! "x$configure_ac_macros" = "x__none__" ] ; then + $ECHO + $ECHO "Warning: Unsupported macros were found in $CONFIGURE" + $ECHO + $ECHO "The `echo $CONFIGURE | basename` file was scanned in order to determine if any" + $ECHO "unsupported macros are used that exceed the minimum version" + $ECHO "settings specified within this file. As such, the following macros" + $ECHO "should be removed from configure.ac or the version numbers in this" + $ECHO "file should be increased:" + $ECHO + $ECHO "$configure_ac_macros" + $ECHO + $ECHO $ECHO_N "Ignorantly continuing build preparation ... $ECHO_C" + fi + + ################### + # autoconf, retry # + ################### + $VERBOSE_ECHO + $VERBOSE_ECHO "$AUTOCONF" + autoconf_output="`$AUTOCONF 2>&1`" + ret=$? + $VERBOSE_ECHO "$autoconf_output" + + if [ ! $ret = 0 ] ; then + # test if libtool is busted + libtool_failure "$autoconf_output" + + # let the user know what went wrong + cat <. +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..4dec23c --- /dev/null +++ b/config.h.in @@ -0,0 +1,79 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `asound' library (-lasound). */ +#undef HAVE_LIBASOUND + +/* Define to 1 if you have the `m' library (-lm). */ +#undef HAVE_LIBM + +/* Define if you have libmp3lame */ +#undef HAVE_LIBMP3LAME + +/* Define if you have libmysqlclient */ +#undef HAVE_LIBMYSQLCLIENT + +/* Define if you have libsox */ +#undef HAVE_LIBSOX + +/* Define if you have libvorbis */ +#undef HAVE_LIBVORBIS + +/* Define to 1 if you have the header file. */ +#undef HAVE_LUALIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LUA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff --git a/config.sub b/config.sub new file mode 100644 index 0000000..6759825 --- /dev/null +++ b/config.sub @@ -0,0 +1,1658 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. + +timestamp='2008-01-16' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | score \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100644 index 0000000..284b1de --- /dev/null +++ b/configure @@ -0,0 +1,23297 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61 for monitord 2.0svn. +# +# Report bugs to . +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME='monitord' +PACKAGE_TARNAME='monitord' +PACKAGE_VERSION='2.0svn' +PACKAGE_STRING='monitord 2.0svn' +PACKAGE_BUGREPORT='monitor@lists.jhr-online.de' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +target +target_cpu +target_vendor +target_os +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +am__isrc +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +CXX +CXXFLAGS +ac_ct_CXX +CXXDEPMODE +am__fastdepCXX_TRUE +am__fastdepCXX_FALSE +CPP +GREP +EGREP +ALSA_CFLAGS +ALSA_LIBS +ALSA_TRUE +ALSA_FALSE +LIBMYSQLCLIENT +LIBMP3LAME +LIBSOX +LIBVORBIS +MYSQLSTORAGE_TRUE +MYSQLSTORAGE_FALSE +LINUX_TRUE +LINUX_FALSE +WINDOWS_TRUE +WINDOWS_FALSE +PLUGINS_TRUE +PLUGINS_FALSE +LAME_TRUE +LAME_FALSE +SOX_TRUE +SOX_FALSE +VORBIS_TRUE +VORBIS_FALSE +LUA_LIB +LUA_INCLUDE +WINDRES +SED +LN_S +ECHO +AR +RANLIB +DSYMUTIL +NMEDIT +DLLTOOL +AS +OBJDUMP +CXXCPP +F77 +FFLAGS +ac_ct_F77 +LIBTOOL +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +CPP +CXXCPP +F77 +FFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures monitord 2.0svn to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/monitord] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of monitord 2.0svn:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --disable-alsatest Do not try to compile and run a test Alsa program + --enable-plugins enable experimental plugin support (default is no) + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-lua-prefix=DIR Lua files are in DIR + --with-lua-suffix=ARG Lua binary and library files are suffixed with ARG + --with-lua-includes=DIR Lua include files are in DIR + --with-lua-libraries=DIR + Lua library files are in DIR + --with-alsa enable ALSA support (default is yes) + --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional) + --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional) + --with-mysql enable experimental mysql support (default is no) + --with-lame enable experimental mp3 lame support (default is no) + --with-sox enable experimental libsox support (default is no) + --with-libvorbis enable experimental ogg vorbis support (default is + no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CPP C preprocessor + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +monitord configure 2.0svn +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by monitord $as_me 2.0svn, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +{ echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; } +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; } +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6; } +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +am__api_version='1.10' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm -f conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +echo "${ECHO_T}$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } +set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + SET_MAKE= +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='monitord' + VERSION='2.0svn' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +#AC_C_CONST +#AC_PROG_RANLIB + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +# Check whether --with-lua-prefix was given. +if test "${with_lua_prefix+set}" = set; then + withval=$with_lua_prefix; +fi + + +# Check whether --with-lua-suffix was given. +if test "${with_lua_suffix+set}" = set; then + withval=$with_lua_suffix; +fi + + +# Check whether --with-lua-includes was given. +if test "${with_lua_includes+set}" = set; then + withval=$with_lua_includes; +fi + + +# Check whether --with-lua-libraries was given. +if test "${with_lua_libraries+set}" = set; then + withval=$with_lua_libraries; +fi + + if test "x$with_lua_includes" != x; then + LUA_INCLUDE="-I$with_lua_includes" + elif test "x$with_lua_prefix" != x; then + LUA_INCLUDE="-I$with_lua_prefix/include" + fi + LUA_OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $LUA_INCLUDE" + + +for ac_header in lua.h lualib.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to monitor@lists.jhr-online.de ## +## ------------------------------------------ ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + CPPFLAGS="$LUA_OLD_CPPFLAGS" + +# Check whether --with-lua-prefix was given. +if test "${with_lua_prefix+set}" = set; then + withval=$with_lua_prefix; +fi + + +# Check whether --with-lua-suffix was given. +if test "${with_lua_suffix+set}" = set; then + withval=$with_lua_suffix; +fi + + +# Check whether --with-lua-includes was given. +if test "${with_lua_includes+set}" = set; then + withval=$with_lua_includes; +fi + + +# Check whether --with-lua-libraries was given. +if test "${with_lua_libraries+set}" = set; then + withval=$with_lua_libraries; +fi + + if test "x$with_lua_libraries" != x; then + LUA_LIB="-L$with_lua_libraries" + elif test "x$with_lua_prefix" != x; then + LUA_LIB="-L$with_lua_prefix/lib" + fi + { echo "$as_me:$LINENO: checking for exp in -lm" >&5 +echo $ECHO_N "checking for exp in -lm... $ECHO_C" >&6; } +if test "${ac_cv_lib_m_exp+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char exp (); +int +main () +{ +return exp (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_m_exp=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_m_exp=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_exp" >&5 +echo "${ECHO_T}$ac_cv_lib_m_exp" >&6; } +if test $ac_cv_lib_m_exp = yes; then + lua_extra_libs="$lua_extra_libs -lm" +fi + + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lua_extra_libs="$lua_extra_libs -ldl" +fi + + as_ac_Lib=`echo "ac_cv_lib_lua$with_lua_suffix''_lua_call" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for lua_call in -llua$with_lua_suffix" >&5 +echo $ECHO_N "checking for lua_call in -llua$with_lua_suffix... $ECHO_C" >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-llua$with_lua_suffix $LUA_LIB $lua_extra_libs $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char lua_call (); +int +main () +{ +return lua_call (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval echo '${'$as_ac_Lib'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Lib'}'` = yes; then + LUA_LIB="$LUA_LIB -llua$with_lua_suffix $lua_extra_libs" +fi + + + +case "$host_os" in + linux*) + LINUX=true + WINDOWS=false + LAMELIBNAME=mp3lame + LAMELIBDLL=libmp3lame.so + VORBISLIBDLL=libvorbis.so + VORBISLIBNAME=vorbis + VORBISENCLIBDLL=libvorbisenc.so + VORBISENCLIBNAME=vorbisenc + SOXLIBNAME=sox + SOXLIBDLL=libsox.so + MYSQLLIBNAME=mysqlclient + MYSQLLIBDLL=libmysqlclient.so + ;; + mingw32*) + WINDOWS=true + LINUX=false + LAMELIBNAME=mp3lame-0 + LAMELIBDLL=libmp3lame-0.dll + SOXLIBNAME=sox-1 + SOXLIBDLL=libsox-1.dll + VORBISLIBDLL=libvorbis-0.dll + VORBISLIBNAME=vorbis-0 + VORBISENCLIBDLL=libvorbisenc-2.dll + VORBISENCLIBNAME=vorbisenc-0 + MYSQLLIBNAME=mysql + MYSQLLIBDLL=libmysql.dll + + + ;; +esac + +if test x$WINDOWS != xtrue; then + +# Check whether --with-alsa was given. +if test "${with_alsa+set}" = set; then + withval=$with_alsa; use_alsa=$withval +else + use_alsa=yes +fi + + if test "x$use_alsa" != xno; then + alsa_save_CFLAGS="$CFLAGS" +alsa_save_LDFLAGS="$LDFLAGS" +alsa_save_LIBS="$LIBS" +alsa_found=yes + + +# Check whether --with-alsa-prefix was given. +if test "${with_alsa_prefix+set}" = set; then + withval=$with_alsa_prefix; alsa_prefix="$withval" +else + alsa_prefix="" +fi + + + +# Check whether --with-alsa-inc-prefix was given. +if test "${with_alsa_inc_prefix+set}" = set; then + withval=$with_alsa_inc_prefix; alsa_inc_prefix="$withval" +else + alsa_inc_prefix="" +fi + + +# Check whether --enable-alsatest was given. +if test "${enable_alsatest+set}" = set; then + enableval=$enable_alsatest; enable_alsatest="$enableval" +else + enable_alsatest=yes +fi + + +{ echo "$as_me:$LINENO: checking for ALSA CFLAGS" >&5 +echo $ECHO_N "checking for ALSA CFLAGS... $ECHO_C" >&6; } +if test "$alsa_inc_prefix" != "" ; then + ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" + CFLAGS="$CFLAGS -I$alsa_inc_prefix" +fi +{ echo "$as_me:$LINENO: result: $ALSA_CFLAGS" >&5 +echo "${ECHO_T}$ALSA_CFLAGS" >&6; } +CFLAGS="$alsa_save_CFLAGS" + +{ echo "$as_me:$LINENO: checking for ALSA LDFLAGS" >&5 +echo $ECHO_N "checking for ALSA LDFLAGS... $ECHO_C" >&6; } +if test "$alsa_prefix" != "" ; then + ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" + LDFLAGS="$LDFLAGS $ALSA_LIBS" +fi + +ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" +LIBS="$ALSA_LIBS $LIBS" +{ echo "$as_me:$LINENO: result: $ALSA_LIBS" >&5 +echo "${ECHO_T}$ALSA_LIBS" >&6; } + +min_alsa_version=0.9.1 +{ echo "$as_me:$LINENO: checking for libasound headers version >= $min_alsa_version" >&5 +echo $ECHO_N "checking for libasound headers version >= $min_alsa_version... $ECHO_C" >&6; } +no_alsa="" + alsa_min_major_version=`echo $min_alsa_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + alsa_min_minor_version=`echo $min_alsa_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + alsa_min_micro_version=`echo $min_alsa_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include + +int +main () +{ + +/* ensure backward compatibility */ +#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) +#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR +#endif +#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) +#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR +#endif +#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) +#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR +#endif + +# if(SND_LIB_MAJOR > $alsa_min_major_version) + exit(0); +# else +# if(SND_LIB_MAJOR < $alsa_min_major_version) +# error not present +# endif + +# if(SND_LIB_MINOR > $alsa_min_minor_version) + exit(0); +# else +# if(SND_LIB_MINOR < $alsa_min_minor_version) +# error not present +# endif + +# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) +# error not present +# endif +# endif +# endif +exit(0); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { echo "$as_me:$LINENO: result: found." >&5 +echo "${ECHO_T}found." >&6; } +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + { echo "$as_me:$LINENO: result: not present." >&5 +echo "${ECHO_T}not present." >&6; } + + alsa_found=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +if test "x$enable_alsatest" = "xyes"; then + +{ echo "$as_me:$LINENO: checking for snd_ctl_open in -lasound" >&5 +echo $ECHO_N "checking for snd_ctl_open in -lasound... $ECHO_C" >&6; } +if test "${ac_cv_lib_asound_snd_ctl_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lasound $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char snd_ctl_open (); +int +main () +{ +return snd_ctl_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_asound_snd_ctl_open=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_asound_snd_ctl_open=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_asound_snd_ctl_open" >&5 +echo "${ECHO_T}$ac_cv_lib_asound_snd_ctl_open" >&6; } +if test $ac_cv_lib_asound_snd_ctl_open = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBASOUND 1 +_ACEOF + + LIBS="-lasound $LIBS" + +else + + alsa_found=no + +fi + +fi + +LDFLAGS="$alsa_save_LDFLAGS" +LIBS="$alsa_save_LIBS" + +if test "x$alsa_found" = "xyes" ; then + HAVE_ALSA=yes +else + ALSA_CFLAGS="" + ALSA_LIBS="" + HAVE_ALSA=no +fi + + + + +fi + +fi + if test x$HAVE_ALSA = xyes; then + ALSA_TRUE= + ALSA_FALSE='#' +else + ALSA_TRUE='#' + ALSA_FALSE= +fi + + + +if test x$WINDOWS != xtrue; then + # Linux OS: + # First check for libm - otherwise libmp3lame will always fail + # Since we need libm this is no restriction + +{ echo "$as_me:$LINENO: checking for cos in -lm" >&5 +echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6; } +if test "${ac_cv_lib_m_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_m_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_m_cos=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_m_cos" >&6; } +if test $ac_cv_lib_m_cos = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + +fi + +# Check whether --enable-plugins was given. +if test "${enable_plugins+set}" = set; then + enableval=$enable_plugins; plugins=true + +fi + + + +# Check whether --with-mysql was given. +if test "${with_mysql+set}" = set; then + withval=$with_mysql; use_mysql=$withval +else + use_mysql=no +fi + + +# Check whether --with-lame was given. +if test "${with_lame+set}" = set; then + withval=$with_lame; use_lame=$withval +else + use_lame=no +fi + + +# Check whether --with-sox was given. +if test "${with_sox+set}" = set; then + withval=$with_sox; use_sox=$withval +else + use_sox=no +fi + + +# Check whether --with-libvorbis was given. +if test "${with_libvorbis+set}" = set; then + withval=$with_libvorbis; use_vorbis=$withval +else + use_vorbis=no +fi + + +if test x$plugins != xtrue; then + lame=false + mysql=false + if test "x$use_mysql" != xno; then + { { echo "$as_me:$LINENO: error: mysql support is not supported without --enable-plugins" >&5 +echo "$as_me: error: mysql support is not supported without --enable-plugins" >&2;} + { (exit 1); exit 1; }; } + fi + + if test "x$use_lame" != xno; then + { { echo "$as_me:$LINENO: error: lame support is not supported without --enable-plugins" >&5 +echo "$as_me: error: lame support is not supported without --enable-plugins" >&2;} + { (exit 1); exit 1; }; } + fi + + if test "x$use_sox" != xno; then + { { echo "$as_me:$LINENO: error: sox support is not supported without --enable-plugins" >&5 +echo "$as_me: error: sox support is not supported without --enable-plugins" >&2;} + { (exit 1); exit 1; }; } + fi + + if test "x$use_vorbis" != xno; then + { { echo "$as_me:$LINENO: error: vorbis support is not supported without --enable-plugins" >&5 +echo "$as_me: error: vorbis support is not supported without --enable-plugins" >&2;} + { (exit 1); exit 1; }; } + fi +else + if test "x$use_mysql" != xno; then + if test "${ac_cv_header_mysql_mysql_h+set}" = set; then + { echo "$as_me:$LINENO: checking for mysql/mysql.h" >&5 +echo $ECHO_N "checking for mysql/mysql.h... $ECHO_C" >&6; } +if test "${ac_cv_header_mysql_mysql_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_mysql_mysql_h" >&5 +echo "${ECHO_T}$ac_cv_header_mysql_mysql_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking mysql/mysql.h usability" >&5 +echo $ECHO_N "checking mysql/mysql.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking mysql/mysql.h presence" >&5 +echo $ECHO_N "checking mysql/mysql.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: mysql/mysql.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: mysql/mysql.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: mysql/mysql.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: mysql/mysql.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: mysql/mysql.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: mysql/mysql.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: mysql/mysql.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: mysql/mysql.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: mysql/mysql.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to monitor@lists.jhr-online.de ## +## ------------------------------------------ ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for mysql/mysql.h" >&5 +echo $ECHO_N "checking for mysql/mysql.h... $ECHO_C" >&6; } +if test "${ac_cv_header_mysql_mysql_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_mysql_mysql_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_mysql_mysql_h" >&5 +echo "${ECHO_T}$ac_cv_header_mysql_mysql_h" >&6; } + +fi +if test $ac_cv_header_mysql_mysql_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: mysql.h not found" >&5 +echo "$as_me: error: mysql.h not found" >&2;} + { (exit 1); exit 1; }; } +fi + + + + fi + + LIBMYSQLCLIENT= + if test "x$use_mysql" != xno ; then + as_ac_Lib=`echo "ac_cv_lib_$MYSQLLIBNAME''_mysql_init" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for mysql_init in -l$MYSQLLIBNAME" >&5 +echo $ECHO_N "checking for mysql_init in -l$MYSQLLIBNAME... $ECHO_C" >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$MYSQLLIBNAME $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char mysql_init (); +int +main () +{ +return mysql_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval echo '${'$as_ac_Lib'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Lib'}'` = yes; then + LIBMYSQLCLIENT="-l$MYSQLLIBNAME" + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBMYSQLCLIENT 1 +_ACEOF + + mysql=true + +else + if test "x$use_mysql" != xcheck; then + mysql=true + { { echo "$as_me:$LINENO: error: --with-mysql was given, but test for $MYSQLLIBNAME failed +See \`config.log' for more details." >&5 +echo "$as_me: error: --with-mysql was given, but test for $MYSQLLIBNAME failed +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + +fi + + +fi + + + LIBMP3LAME= + if test "x$use_lame" != xno; then + as_ac_Lib=`echo "ac_cv_lib_$LAMELIBNAME''_lame_init" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for lame_init in -l$LAMELIBNAME" >&5 +echo $ECHO_N "checking for lame_init in -l$LAMELIBNAME... $ECHO_C" >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$LAMELIBNAME $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char lame_init (); +int +main () +{ +return lame_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval echo '${'$as_ac_Lib'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Lib'}'` = yes; then + LIBMP3LAME="-l$LAMELIBNAME" + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBMP3LAME 1 +_ACEOF + + lame=true + #[monitord_postdep_objects]=[$LAMELIBDLL] + +else + if test "x$use_lame" != xcheck; then + { { echo "$as_me:$LINENO: error: --with-lame was given, but test for $LAMELIBNAME failed +See \`config.log' for more details." >&5 +echo "$as_me: error: --with-lame was given, but test for $LAMELIBNAME failed +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + +fi + + +fi + + + if test "x$use_sox" != xno; then + if test "${ac_cv_header_sox_h+set}" = set; then + { echo "$as_me:$LINENO: checking for sox.h" >&5 +echo $ECHO_N "checking for sox.h... $ECHO_C" >&6; } +if test "${ac_cv_header_sox_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_sox_h" >&5 +echo "${ECHO_T}$ac_cv_header_sox_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking sox.h usability" >&5 +echo $ECHO_N "checking sox.h usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking sox.h presence" >&5 +echo $ECHO_N "checking sox.h presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: sox.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: sox.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: sox.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: sox.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: sox.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: sox.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: sox.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: sox.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: sox.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: sox.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: sox.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: sox.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: sox.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: sox.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: sox.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: sox.h: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to monitor@lists.jhr-online.de ## +## ------------------------------------------ ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for sox.h" >&5 +echo $ECHO_N "checking for sox.h... $ECHO_C" >&6; } +if test "${ac_cv_header_sox_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_sox_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_sox_h" >&5 +echo "${ECHO_T}$ac_cv_header_sox_h" >&6; } + +fi +if test $ac_cv_header_sox_h = yes; then + : +else + { { echo "$as_me:$LINENO: error: sox.h not found" >&5 +echo "$as_me: error: sox.h not found" >&2;} + { (exit 1); exit 1; }; } +fi + + + fi + + LIBSOX= + if test "x$use_sox" != xno; then + as_ac_Lib=`echo "ac_cv_lib_$SOXLIBNAME''_sox_init" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for sox_init in -l$SOXLIBNAME" >&5 +echo $ECHO_N "checking for sox_init in -l$SOXLIBNAME... $ECHO_C" >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$SOXLIBNAME $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sox_init (); +int +main () +{ +return sox_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval echo '${'$as_ac_Lib'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Lib'}'` = yes; then + LIBSOX="-l$SOXLIBNAME" + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBSOX 1 +_ACEOF + + sox=true + #[monitord_postdep_objects]=[$SOXLIBDLL] + +else + if test "x$use_lame" != xcheck; then + { { echo "$as_me:$LINENO: error: --with-sox was given, but test for $SOXLIBNAME failed +See \`config.log' for more details." >&5 +echo "$as_me: error: --with-sox was given, but test for $SOXLIBNAME failed +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + +fi + + +fi + + + + LIBVORBIS= + if test "x$use_vorbis" != xno; then + as_ac_Lib=`echo "ac_cv_lib_$VORBISLIBNAME''_vorbis_block_init" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for vorbis_block_init in -l$VORBISLIBNAME" >&5 +echo $ECHO_N "checking for vorbis_block_init in -l$VORBISLIBNAME... $ECHO_C" >&6; } +if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$VORBISLIBNAME $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char vorbis_block_init (); +int +main () +{ +return vorbis_block_init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Lib=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +ac_res=`eval echo '${'$as_ac_Lib'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Lib'}'` = yes; then + LIBVORBIS="-l$VORBISLIBNAME -$VORBISENCLIBDLL" + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LIBVORBIS 1 +_ACEOF + + vorbis=true + #[monitord_postdep_objects]=[$VORBISLIBDLL] + +else + if test "x$use_vorbis" != xcheck; then + { { echo "$as_me:$LINENO: error: --with-vorbis was given, but test for $VORBISLIBNAME failed +See \`config.log' for more details." >&5 +echo "$as_me: error: --with-vorbis was given, but test for $VORBISLIBNAME failed +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + +fi + + +fi + + +fi + + if test x$mysql = xtrue; then + MYSQLSTORAGE_TRUE= + MYSQLSTORAGE_FALSE='#' +else + MYSQLSTORAGE_TRUE='#' + MYSQLSTORAGE_FALSE= +fi + + if test x$LINUX = xtrue; then + LINUX_TRUE= + LINUX_FALSE='#' +else + LINUX_TRUE='#' + LINUX_FALSE= +fi + + if test x$WINDOWS = xtrue; then + WINDOWS_TRUE= + WINDOWS_FALSE='#' +else + WINDOWS_TRUE='#' + WINDOWS_FALSE= +fi + + if test x$plugins = xtrue; then + PLUGINS_TRUE= + PLUGINS_FALSE='#' +else + PLUGINS_TRUE='#' + PLUGINS_FALSE= +fi + + if test x$lame = xtrue; then + LAME_TRUE= + LAME_FALSE='#' +else + LAME_TRUE='#' + LAME_FALSE= +fi + + if test x$sox = xtrue; then + SOX_TRUE= + SOX_FALSE='#' +else + SOX_TRUE='#' + SOX_FALSE= +fi + + if test x$vorbis = xtrue; then + VORBIS_TRUE= + VORBIS_FALSE='#' +else + VORBIS_TRUE='#' + VORBIS_FALSE= +fi + + + + + +if test x$WINDOWS = xtrue; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. +set dummy ${ac_tool_prefix}windres; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_WINDRES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$WINDRES"; then + ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_WINDRES="${ac_tool_prefix}windres" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +WINDRES=$ac_cv_prog_WINDRES +if test -n "$WINDRES"; then + { echo "$as_me:$LINENO: result: $WINDRES" >&5 +echo "${ECHO_T}$WINDRES" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_WINDRES"; then + ac_ct_WINDRES=$WINDRES + # Extract the first word of "windres", so it can be a program name with args. +set dummy windres; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_WINDRES+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_WINDRES"; then + ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_WINDRES="windres" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES +if test -n "$ac_ct_WINDRES"; then + { echo "$as_me:$LINENO: result: $ac_ct_WINDRES" >&5 +echo "${ECHO_T}$ac_ct_WINDRES" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_WINDRES" = x; then + WINDRES="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + WINDRES=$ac_ct_WINDRES + fi +else + WINDRES="$ac_cv_prog_WINDRES" +fi + +fi + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + +# Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; } +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED + +{ echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6; } + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; } +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 +echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 7023 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_cc_needs_belf=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-cygwin* | *-*-mingw* | *-*-pw32*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_DLLTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { echo "$as_me:$LINENO: result: $DLLTOOL" >&5 +echo "${ECHO_T}$DLLTOOL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 +echo "${ECHO_T}$ac_ct_DLLTOOL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { echo "$as_me:$LINENO: result: $AS" >&5 +echo "${ECHO_T}$AS" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 +echo "${ECHO_T}$ac_ct_AS" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { echo "$as_me:$LINENO: result: $OBJDUMP" >&5 +echo "${ECHO_T}$OBJDUMP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 +echo "${ECHO_T}$ac_ct_OBJDUMP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; + +esac + +need_locks="$enable_libtool_lock" + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to monitor@lists.jhr-online.de ## +## ------------------------------------------ ## +_ASBOX + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; } +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +# find the maximum length of command line arguments +{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; } +else + { echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6; } +fi + + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } +else + { echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6; } +fi + +{ echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6; } +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 +echo "${ECHO_T}$DSYMUTIL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 +echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { echo "$as_me:$LINENO: result: $NMEDIT" >&5 +echo "${ECHO_T}$NMEDIT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 +echo "${ECHO_T}$ac_ct_NMEDIT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + + { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 +echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; } +if test "${lt_cv_apple_cc_single_mod+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + echo "int foo(void){return 1;}" > conftest.c + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib ${wl}-single_module conftest.c + if test -f libconftest.dylib; then + lt_cv_apple_cc_single_mod=yes + rm -rf libconftest.dylib* + fi + rm conftest.c + fi +fi +{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 +echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; } + { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 +echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; } +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + lt_cv_ld_exported_symbols_list=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_ld_exported_symbols_list=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 +echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[0123]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil="~$DSYMUTIL \$lib || :" + else + _lt_dsymutil= + fi + ;; + esac + + +enable_dlopen=no +enable_win32_dll=yes + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9424: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:9428: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9714: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:9718: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:9818: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:9822: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs=no + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`echo $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + ;; + *) + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + { echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; } +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_shl_load || defined __stub___shl_load +choke me +#endif + +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6; } +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_shl_load=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; } +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + { echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_dlopen || defined __stub___dlopen +choke me +#endif + +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_svld_dlopen=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; } +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_dld_link=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; } +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + compiler_lib_search_dirs \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + fix_srcfile_path \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags was given. +if test "${with_tags+set}" = set; then + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= +compiler_lib_search_dirs_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; } +else + { echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + if test "$GXX" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + else + ld_shlibs_CXX=no + fi + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +compiler_lib_search_dirs_CXX= +if test -n "$compiler_lib_search_path_CXX"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + # + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14696: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14700: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14800: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14804: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + ;; + linux* | k*bsd*-gnu) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + +{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + compiler_lib_search_dirs_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + fix_srcfile_path_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="\ + subroutine t + return + end +" + +# Code to be used in simple link tests +lt_simple_link_test_code="\ + program t + end +" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6; } + +{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16398: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16402: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_F77=yes + fi + else + lt_cv_prog_compiler_static_works_F77=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16502: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16506: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix[3-9]*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_F77=no + else + ld_shlibs_F77=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_F77=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + compiler_lib_search_dirs_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + fix_srcfile_path_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:18722: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:18726: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:19012: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:19016: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_GCJ=yes + fi + else + lt_cv_prog_compiler_static_works_GCJ=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:19116: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:19120: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6; } + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix[3-9]*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_GCJ=no + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_GCJ=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + compiler_lib_search_dirs_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + fix_srcfile_path_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + compiler_lib_search_dirs_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + fix_srcfile_path_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + +#AM_PROG_LIBTOOL + +ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files Makefile win32-nsis/monitor.nsi" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# 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. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${ALSA_TRUE}" && test -z "${ALSA_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ALSA\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ALSA\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${MYSQLSTORAGE_TRUE}" && test -z "${MYSQLSTORAGE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MYSQLSTORAGE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MYSQLSTORAGE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${LINUX_TRUE}" && test -z "${LINUX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${WINDOWS_TRUE}" && test -z "${WINDOWS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"WINDOWS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"WINDOWS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${PLUGINS_TRUE}" && test -z "${PLUGINS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"PLUGINS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"PLUGINS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${LAME_TRUE}" && test -z "${LAME_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"LAME\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"LAME\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${SOX_TRUE}" && test -z "${SOX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"SOX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"SOX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${VORBIS_TRUE}" && test -z "${VORBIS_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"VORBIS\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"VORBIS\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by monitord $as_me 2.0svn, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +monitord config.status 2.0svn +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "win32-nsis/monitor.nsi") CONFIG_FILES="$CONFIG_FILES win32-nsis/monitor.nsi" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +build!$build$ac_delim +build_cpu!$build_cpu$ac_delim +build_vendor!$build_vendor$ac_delim +build_os!$build_os$ac_delim +host!$host$ac_delim +host_cpu!$host_cpu$ac_delim +host_vendor!$host_vendor$ac_delim +host_os!$host_os$ac_delim +target!$target$ac_delim +target_cpu!$target_cpu$ac_delim +target_vendor!$target_vendor$ac_delim +target_os!$target_os$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +am__isrc!$am__isrc$ac_delim +CYGPATH_W!$CYGPATH_W$ac_delim +PACKAGE!$PACKAGE$ac_delim +VERSION!$VERSION$ac_delim +ACLOCAL!$ACLOCAL$ac_delim +AUTOCONF!$AUTOCONF$ac_delim +AUTOMAKE!$AUTOMAKE$ac_delim +AUTOHEADER!$AUTOHEADER$ac_delim +MAKEINFO!$MAKEINFO$ac_delim +install_sh!$install_sh$ac_delim +STRIP!$STRIP$ac_delim +INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim +mkdir_p!$mkdir_p$ac_delim +AWK!$AWK$ac_delim +SET_MAKE!$SET_MAKE$ac_delim +am__leading_dot!$am__leading_dot$ac_delim +AMTAR!$AMTAR$ac_delim +am__tar!$am__tar$ac_delim +am__untar!$am__untar$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +DEPDIR!$DEPDIR$ac_delim +am__include!$am__include$ac_delim +am__quote!$am__quote$ac_delim +AMDEP_TRUE!$AMDEP_TRUE$ac_delim +AMDEP_FALSE!$AMDEP_FALSE$ac_delim +AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim +CCDEPMODE!$CCDEPMODE$ac_delim +am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim +am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim +CXX!$CXX$ac_delim +CXXFLAGS!$CXXFLAGS$ac_delim +ac_ct_CXX!$ac_ct_CXX$ac_delim +CXXDEPMODE!$CXXDEPMODE$ac_delim +am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim +am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +ALSA_CFLAGS!$ALSA_CFLAGS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +CEOF$ac_eof +_ACEOF + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +ALSA_LIBS!$ALSA_LIBS$ac_delim +ALSA_TRUE!$ALSA_TRUE$ac_delim +ALSA_FALSE!$ALSA_FALSE$ac_delim +LIBMYSQLCLIENT!$LIBMYSQLCLIENT$ac_delim +LIBMP3LAME!$LIBMP3LAME$ac_delim +LIBSOX!$LIBSOX$ac_delim +LIBVORBIS!$LIBVORBIS$ac_delim +MYSQLSTORAGE_TRUE!$MYSQLSTORAGE_TRUE$ac_delim +MYSQLSTORAGE_FALSE!$MYSQLSTORAGE_FALSE$ac_delim +LINUX_TRUE!$LINUX_TRUE$ac_delim +LINUX_FALSE!$LINUX_FALSE$ac_delim +WINDOWS_TRUE!$WINDOWS_TRUE$ac_delim +WINDOWS_FALSE!$WINDOWS_FALSE$ac_delim +PLUGINS_TRUE!$PLUGINS_TRUE$ac_delim +PLUGINS_FALSE!$PLUGINS_FALSE$ac_delim +LAME_TRUE!$LAME_TRUE$ac_delim +LAME_FALSE!$LAME_FALSE$ac_delim +SOX_TRUE!$SOX_TRUE$ac_delim +SOX_FALSE!$SOX_FALSE$ac_delim +VORBIS_TRUE!$VORBIS_TRUE$ac_delim +VORBIS_FALSE!$VORBIS_FALSE$ac_delim +LUA_LIB!$LUA_LIB$ac_delim +LUA_INCLUDE!$LUA_INCLUDE$ac_delim +WINDRES!$WINDRES$ac_delim +SED!$SED$ac_delim +LN_S!$LN_S$ac_delim +ECHO!$ECHO$ac_delim +AR!$AR$ac_delim +RANLIB!$RANLIB$ac_delim +DSYMUTIL!$DSYMUTIL$ac_delim +NMEDIT!$NMEDIT$ac_delim +DLLTOOL!$DLLTOOL$ac_delim +AS!$AS$ac_delim +OBJDUMP!$OBJDUMP$ac_delim +CXXCPP!$CXXCPP$ac_delim +F77!$F77$ac_delim +FFLAGS!$FFLAGS$ac_delim +ac_ct_F77!$ac_ct_F77$ac_delim +LIBTOOL!$LIBTOOL$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 41; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : +do + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines conftest.tail + +echo "ac_result=$ac_in" >>$CONFIG_STATUS +cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f $ac_file + mv "$tmp/config.h" $ac_file + fi + else + echo "/* $configure_input */" + cat "$ac_result" + fi + rm -f "$tmp/out12" +# Compute $ac_file's index in $config_headers. +_am_arg=$ac_file +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..d2f5d32 --- /dev/null +++ b/configure.ac @@ -0,0 +1,215 @@ +AC_INIT([monitord], [2.0svn], [monitor@lists.jhr-online.de]) +AC_CANONICAL_SYSTEM +AM_INIT_AUTOMAKE([-Wall -Werror foreign]) + + +AC_PROG_CC +AC_PROG_CXX +#AC_C_CONST +#AC_PROG_RANLIB + +AX_LUA_HEADERS +AX_LUA_LIBS + + +case "$host_os" in + linux*) + LINUX=true + WINDOWS=false + LAMELIBNAME=[mp3lame] + LAMELIBDLL=[libmp3lame.so] + VORBISLIBDLL=[libvorbis.so] + VORBISLIBNAME=[vorbis] + VORBISENCLIBDLL=[libvorbisenc.so] + VORBISENCLIBNAME=[vorbisenc] + SOXLIBNAME=[sox] + SOXLIBDLL=[libsox.so] + MYSQLLIBNAME=[mysqlclient] + MYSQLLIBDLL=[libmysqlclient.so] + ;; + mingw32*) + WINDOWS=true + LINUX=false + LAMELIBNAME=[mp3lame-0] + LAMELIBDLL=[libmp3lame-0.dll] + SOXLIBNAME=[sox-1] + SOXLIBDLL=[libsox-1.dll] + VORBISLIBDLL=[libvorbis-0.dll] + VORBISLIBNAME=[vorbis-0] + VORBISENCLIBDLL=[libvorbisenc-2.dll] + VORBISENCLIBNAME=[vorbisenc-0] + MYSQLLIBNAME=[mysql] + MYSQLLIBDLL=[libmysql.dll] + AC_LIBTOOL_WIN32_DLL + ;; +esac + +if test x$WINDOWS != xtrue; then + AC_ARG_WITH([alsa], + [AC_HELP_STRING([--with-alsa], + [enable ALSA support (default is yes)])], + [use_alsa=$withval], + [use_alsa=yes]) + AS_IF([test "x$use_alsa" != xno], + [AM_PATH_ALSA(0.9.1, HAVE_ALSA=yes, HAVE_ALSA=no)]) +fi +AM_CONDITIONAL(ALSA, test x$HAVE_ALSA = xyes) + + +if test x$WINDOWS != xtrue; then + # Linux OS: + # First check for libm - otherwise libmp3lame will always fail + # Since we need libm this is no restriction + AC_CHECK_LIB(m, cos) +fi + +AC_ARG_ENABLE([plugins], + [AC_HELP_STRING([--enable-plugins], + [enable experimental plugin support (default is no)])], + [plugins=yes], + [plugins=no]) +AC_ARG_WITH([mysql], + [AC_HELP_STRING([--with-mysql], + [enable experimental mysql support (default is no)])], + [], + [use_mysql=no]) +AC_ARG_WITH([lame], + [AC_HELP_STRING([--with-lame], + [enable experimental mp3 lame support (default is no)])], + [], + [use_lame=no]) +AC_ARG_WITH([sox], + [AC_HELP_STRING([--with-sox], + [enable experimental libsox support (default is no)])], + [use_sox=$withval], + [use_sox=no]) +AC_ARG_WITH([libvorbis], + [AC_HELP_STRING([--with-libvorbis], + [enable experimental ogg vorbis support (default is no)])], + [use_vorbis=$withval], + [use_vorbis=no]) + +if test x$plugins == xno; then + lame=false + mysql=false + if test "x$use_mysql" != xno; then + AC_MSG_ERROR([[mysql support is not supported without --enable-plugins]]) + fi + + if test "x$use_lame" != xno; then + AC_MSG_ERROR([[lame support is not supported without --enable-plugins]]) + fi + + if test "x$use_sox" != xno; then + AC_MSG_ERROR([[sox support is not supported without --enable-plugins]]) + fi + + if test "x$use_vorbis" != xno; then + AC_MSG_ERROR([[vorbis support is not supported without --enable-plugins]]) + fi +else + if test "x$use_mysql" != xno; then + AC_CHECK_HEADER([mysql/mysql.h], + , + [AC_MSG_ERROR([mysql.h not found])]) + + fi + + LIBMYSQLCLIENT= + AS_IF([test "x$use_mysql" != xno] , + [AC_CHECK_LIB([$MYSQLLIBNAME],[mysql_init], + [AC_SUBST([LIBMYSQLCLIENT], ["-l$MYSQLLIBNAME"]) + AC_DEFINE([HAVE_LIBMYSQLCLIENT], [1], + [Define if you have libmysqlclient]) + mysql=true + ], + [if test "x$use_mysql" != xcheck; then + mysql=true + AC_MSG_FAILURE( + [--with-mysql was given, but test for $MYSQLLIBNAME failed]) + fi + ]) + ]) + + LIBMP3LAME= + AS_IF([test "x$use_lame" != xno], + [AC_CHECK_LIB([$LAMELIBNAME],[lame_init], + [AC_SUBST([LIBMP3LAME], ["-l$LAMELIBNAME"]) + AC_DEFINE([HAVE_LIBMP3LAME], [1], + [Define if you have libmp3lame]) + lame=true + #[monitord_postdep_objects]=[$LAMELIBDLL] + ], + [if test "x$use_lame" != xcheck; then + AC_MSG_FAILURE( + [--with-lame was given, but test for $LAMELIBNAME failed]) + fi + ]) + ]) + + if test "x$use_sox" != xno; then + AC_CHECK_HEADER([sox.h], + , + [AC_MSG_ERROR([sox.h not found])]) + fi + + LIBSOX= + AS_IF([test "x$use_sox" != xno], + [AC_CHECK_LIB([$SOXLIBNAME],[sox_init], + [AC_SUBST([LIBSOX], ["-l$SOXLIBNAME"]) + AC_DEFINE([HAVE_LIBSOX], [1], + [Define if you have libsox]) + sox=true + #[monitord_postdep_objects]=[$SOXLIBDLL] + ], + [if test "x$use_lame" != xcheck; then + AC_MSG_FAILURE( + [--with-sox was given, but test for $SOXLIBNAME failed]) + fi + ]) + ]) + + + LIBVORBIS= + AS_IF([test "x$use_vorbis" != xno], + [AC_CHECK_LIB([$VORBISLIBNAME],[vorbis_block_init], + [AC_SUBST([LIBVORBIS], ["-l$VORBISLIBNAME -$VORBISENCLIBDLL"]) + AC_DEFINE([HAVE_LIBVORBIS], [1], + [Define if you have libvorbis]) + vorbis=true + #[monitord_postdep_objects]=[$VORBISLIBDLL] + ], + [if test "x$use_vorbis" != xcheck; then + AC_MSG_FAILURE( + [--with-vorbis was given, but test for $VORBISLIBNAME failed]) + fi + ]) + ]) + +fi + +AM_CONDITIONAL(MYSQLSTORAGE, test x$mysql = xtrue) +AM_CONDITIONAL(LINUX, test x$LINUX = xtrue) +AM_CONDITIONAL(WINDOWS, test x$WINDOWS = xtrue) +AM_CONDITIONAL(PLUGINS, test x$plugins = xyes) +AM_CONDITIONAL(LAME, test x$lame = xtrue) +AM_CONDITIONAL(SOX, test x$sox = xtrue) +AM_CONDITIONAL(VORBIS, test x$vorbis = xtrue) + +AC_SUBST(LUA_LIB) +AC_SUBST(LUA_INCLUDE) + +if test x$WINDOWS = xtrue; then + AC_CHECK_TOOL(WINDRES, windres) +fi + +AC_PROG_LIBTOOL +#AM_PROG_LIBTOOL + +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_FILES([ + Makefile + win32-nsis/monitor.nsi +]) +AC_OUTPUT diff --git a/cxxdll.def b/cxxdll.def new file mode 100644 index 0000000..d45f06b --- /dev/null +++ b/cxxdll.def @@ -0,0 +1,444 @@ +EXPORTS + factory0 @1 + +IMPORTS + + libsox-1.dll.__getopt_initialized + libsox-1.dll._getopt_internal + libsox-1.dll.clear_fft_cache + libsox-1.dll.getopt_long_only + libsox-1.dll.init_fft_cache + libsox-1.dll.lsx_13linear2alaw + libsox-1.dll.lsx_14linear2ulaw + libsox-1.dll.lsx_Gsm_Coder + libsox-1.dll.lsx_Gsm_Decoder + libsox-1.dll.lsx_Gsm_LPC_Analysis + libsox-1.dll.lsx_Gsm_Long_Term_Predictor + libsox-1.dll.lsx_Gsm_Long_Term_Synthesis_Filtering + libsox-1.dll.lsx_Gsm_Preprocess + libsox-1.dll.lsx_Gsm_RPE_Decoding + libsox-1.dll.lsx_Gsm_RPE_Encoding + libsox-1.dll.lsx_Gsm_Short_Term_Analysis_Filter + libsox-1.dll.lsx_Gsm_Short_Term_Synthesis_Filter + libsox-1.dll.lsx_adpcm_decode + libsox-1.dll.lsx_adpcm_encode + libsox-1.dll.lsx_adpcm_flush + libsox-1.dll.lsx_adpcm_ima_start + libsox-1.dll.lsx_adpcm_init + libsox-1.dll.lsx_adpcm_oki_start + libsox-1.dll.lsx_adpcm_read + libsox-1.dll.lsx_adpcm_reset + libsox-1.dll.lsx_adpcm_stopread + libsox-1.dll.lsx_adpcm_stopwrite + libsox-1.dll.lsx_adpcm_write + libsox-1.dll.lsx_aifc_format_fn + libsox-1.dll.lsx_aifcstartwrite + libsox-1.dll.lsx_aifcstopwrite + libsox-1.dll.lsx_aiff_format_fn + libsox-1.dll.lsx_aiffstartread + libsox-1.dll.lsx_aiffstartwrite + libsox-1.dll.lsx_aiffstopread + libsox-1.dll.lsx_aiffstopwrite + libsox-1.dll.lsx_al_format_fn + libsox-1.dll.lsx_alaw2linear16 + libsox-1.dll.lsx_allpass_effect_fn + libsox-1.dll.lsx_apply_bartlett + libsox-1.dll.lsx_apply_blackman + libsox-1.dll.lsx_apply_blackman_nutall + libsox-1.dll.lsx_apply_hamming + libsox-1.dll.lsx_apply_hann + libsox-1.dll.lsx_apply_hann_f + libsox-1.dll.lsx_apply_kaiser + libsox-1.dll.lsx_au_format_fn + libsox-1.dll.lsx_avr_format_fn + libsox-1.dll.lsx_band_effect_fn + libsox-1.dll.lsx_bandpass_effect_fn + libsox-1.dll.lsx_bandreject_effect_fn + libsox-1.dll.lsx_bass_effect_fn + libsox-1.dll.lsx_bend_effect_fn + libsox-1.dll.lsx_bessel_I_0 + libsox-1.dll.lsx_biquad_effect_fn + libsox-1.dll.lsx_biquad_flow + libsox-1.dll.lsx_biquad_getopts + libsox-1.dll.lsx_biquad_start + libsox-1.dll.lsx_cat_comments + libsox-1.dll.lsx_cdft + libsox-1.dll.lsx_cdr_format_fn + libsox-1.dll.lsx_channels_effect_fn + libsox-1.dll.lsx_check_read_params + libsox-1.dll.lsx_chorus_effect_fn + libsox-1.dll.lsx_clearerr + libsox-1.dll.lsx_compand_effect_fn + libsox-1.dll.lsx_compandt_kill + libsox-1.dll.lsx_compandt_parse + libsox-1.dll.lsx_compandt_show + libsox-1.dll.lsx_contrast_effect_fn + libsox-1.dll.lsx_crop_effect_fn + libsox-1.dll.lsx_cvsd_format_fn + libsox-1.dll.lsx_cvsdread + libsox-1.dll.lsx_cvsdstartread + libsox-1.dll.lsx_cvsdstartwrite + libsox-1.dll.lsx_cvsdstopread + libsox-1.dll.lsx_cvsdstopwrite + libsox-1.dll.lsx_cvsdwrite + libsox-1.dll.lsx_cvu_format_fn + libsox-1.dll.lsx_dat_format_fn + libsox-1.dll.lsx_dcshift_effect_fn + libsox-1.dll.lsx_ddct + libsox-1.dll.lsx_ddst + libsox-1.dll.lsx_debug + libsox-1.dll.lsx_debug_more + libsox-1.dll.lsx_debug_most + libsox-1.dll.lsx_deemph_effect_fn + libsox-1.dll.lsx_delay_effect_fn + libsox-1.dll.lsx_design_lpf + libsox-1.dll.lsx_dfct + libsox-1.dll.lsx_dfst + libsox-1.dll.lsx_dft_filter_effect_fn + libsox-1.dll.lsx_dither_effect_fn + libsox-1.dll.lsx_divide_effect_fn + libsox-1.dll.lsx_dvms_format_fn + libsox-1.dll.lsx_dvmsstartread + libsox-1.dll.lsx_dvmsstartwrite + libsox-1.dll.lsx_dvmsstopwrite + libsox-1.dll.lsx_earwax_effect_fn + libsox-1.dll.lsx_echo_effect_fn + libsox-1.dll.lsx_echos_effect_fn + libsox-1.dll.lsx_effect_set_imin + libsox-1.dll.lsx_effects_init + libsox-1.dll.lsx_effects_quit + libsox-1.dll.lsx_enum_option + libsox-1.dll.lsx_eof + libsox-1.dll.lsx_equalizer_effect_fn + libsox-1.dll.lsx_error + libsox-1.dll.lsx_f4_format_fn + libsox-1.dll.lsx_f8_format_fn + libsox-1.dll.lsx_fade_effect_fn + libsox-1.dll.lsx_fail + libsox-1.dll.lsx_fail_errno + libsox-1.dll.lsx_fft_br + libsox-1.dll.lsx_fft_sc + libsox-1.dll.lsx_filelength + libsox-1.dll.lsx_filter_effect_fn + libsox-1.dll.lsx_find_enum_text + libsox-1.dll.lsx_find_enum_value + libsox-1.dll.lsx_find_file_extension + libsox-1.dll.lsx_fir_effect_fn + libsox-1.dll.lsx_fir_to_phase + libsox-1.dll.lsx_firfit_effect_fn + libsox-1.dll.lsx_flanger_effect_fn + libsox-1.dll.lsx_flow_copy + libsox-1.dll.lsx_flush + libsox-1.dll.lsx_g721_decoder + libsox-1.dll.lsx_g721_encoder + libsox-1.dll.lsx_g723_24_decoder + libsox-1.dll.lsx_g723_24_encoder + libsox-1.dll.lsx_g723_40_decoder + libsox-1.dll.lsx_g723_40_encoder + libsox-1.dll.lsx_g72x_init_state + libsox-1.dll.lsx_g72x_predictor_pole + libsox-1.dll.lsx_g72x_predictor_zero + libsox-1.dll.lsx_g72x_quantize + libsox-1.dll.lsx_g72x_reconstruct + libsox-1.dll.lsx_g72x_step_size + libsox-1.dll.lsx_g72x_tandem_adjust_alaw + libsox-1.dll.lsx_g72x_tandem_adjust_ulaw + libsox-1.dll.lsx_g72x_update + libsox-1.dll.lsx_gain_effect_fn + libsox-1.dll.lsx_generate_wave_table + libsox-1.dll.lsx_getopt + libsox-1.dll.lsx_getopt_long + libsox-1.dll.lsx_gsm_A + libsox-1.dll.lsx_gsm_B + libsox-1.dll.lsx_gsm_DLB + libsox-1.dll.lsx_gsm_FAC + libsox-1.dll.lsx_gsm_H + libsox-1.dll.lsx_gsm_INVA + libsox-1.dll.lsx_gsm_L_add + libsox-1.dll.lsx_gsm_L_asl + libsox-1.dll.lsx_gsm_L_asr + libsox-1.dll.lsx_gsm_L_mult + libsox-1.dll.lsx_gsm_L_sub + libsox-1.dll.lsx_gsm_MAC + libsox-1.dll.lsx_gsm_MIC + libsox-1.dll.lsx_gsm_NRFAC + libsox-1.dll.lsx_gsm_QLB + libsox-1.dll.lsx_gsm_abs + libsox-1.dll.lsx_gsm_add + libsox-1.dll.lsx_gsm_asl + libsox-1.dll.lsx_gsm_asr + libsox-1.dll.lsx_gsm_create + libsox-1.dll.lsx_gsm_decode + libsox-1.dll.lsx_gsm_destroy + libsox-1.dll.lsx_gsm_div + libsox-1.dll.lsx_gsm_encode + libsox-1.dll.lsx_gsm_format_fn + libsox-1.dll.lsx_gsm_mult + libsox-1.dll.lsx_gsm_mult_r + libsox-1.dll.lsx_gsm_norm + libsox-1.dll.lsx_gsm_option + libsox-1.dll.lsx_gsm_sub + libsox-1.dll.lsx_hcom_format_fn + libsox-1.dll.lsx_highpass_effect_fn + libsox-1.dll.lsx_htk_format_fn + libsox-1.dll.lsx_ima_block_expand_i + libsox-1.dll.lsx_ima_block_expand_m + libsox-1.dll.lsx_ima_block_mash_i + libsox-1.dll.lsx_ima_bytes_per_block + libsox-1.dll.lsx_ima_format_fn + libsox-1.dll.lsx_ima_init_table + libsox-1.dll.lsx_ima_samples_in + libsox-1.dll.lsx_ima_start + libsox-1.dll.lsx_input_effect_fn + libsox-1.dll.lsx_kaiser_beta + libsox-1.dll.lsx_key_effect_fn + libsox-1.dll.lsx_la_format_fn + libsox-1.dll.lsx_loudness_effect_fn + libsox-1.dll.lsx_lowpass_effect_fn + libsox-1.dll.lsx_lpc10_analys_ + libsox-1.dll.lsx_lpc10_bsynz_ + libsox-1.dll.lsx_lpc10_chanrd_ + libsox-1.dll.lsx_lpc10_chanwr_ + libsox-1.dll.lsx_lpc10_contrl_ + libsox-1.dll.lsx_lpc10_create_decoder_state + libsox-1.dll.lsx_lpc10_create_encoder_state + libsox-1.dll.lsx_lpc10_dcbias_ + libsox-1.dll.lsx_lpc10_decode + libsox-1.dll.lsx_lpc10_decode_ + libsox-1.dll.lsx_lpc10_deemp_ + libsox-1.dll.lsx_lpc10_difmag_ + libsox-1.dll.lsx_lpc10_dyptrk_ + libsox-1.dll.lsx_lpc10_encode + libsox-1.dll.lsx_lpc10_encode_ + libsox-1.dll.lsx_lpc10_energy_ + libsox-1.dll.lsx_lpc10_format_fn + libsox-1.dll.lsx_lpc10_ham84_ + libsox-1.dll.lsx_lpc10_hp100_ + libsox-1.dll.lsx_lpc10_i_nint + libsox-1.dll.lsx_lpc10_init_decoder_state + libsox-1.dll.lsx_lpc10_init_encoder_state + libsox-1.dll.lsx_lpc10_invert_ + libsox-1.dll.lsx_lpc10_irc2pc_ + libsox-1.dll.lsx_lpc10_ivfilt_ + libsox-1.dll.lsx_lpc10_lpcini_ + libsox-1.dll.lsx_lpc10_lpfilt_ + libsox-1.dll.lsx_lpc10_median_ + libsox-1.dll.lsx_lpc10_mload_ + libsox-1.dll.lsx_lpc10_onset_ + libsox-1.dll.lsx_lpc10_pitsyn_ + libsox-1.dll.lsx_lpc10_placea_ + libsox-1.dll.lsx_lpc10_placev_ + libsox-1.dll.lsx_lpc10_pow_ii + libsox-1.dll.lsx_lpc10_preemp_ + libsox-1.dll.lsx_lpc10_prepro_ + libsox-1.dll.lsx_lpc10_r_sign + libsox-1.dll.lsx_lpc10_random_ + libsox-1.dll.lsx_lpc10_rcchk_ + libsox-1.dll.lsx_lpc10_synths_ + libsox-1.dll.lsx_lpc10_tbdm_ + libsox-1.dll.lsx_lpc10_voicin_ + libsox-1.dll.lsx_lpc10_vparms_ + libsox-1.dll.lsx_lpf_num_taps + libsox-1.dll.lsx_lu_format_fn + libsox-1.dll.lsx_makeFilter + libsox-1.dll.lsx_make_lpf + libsox-1.dll.lsx_maud_format_fn + libsox-1.dll.lsx_mcompand_effect_fn + libsox-1.dll.lsx_mixer_effect_fn + libsox-1.dll.lsx_mp3_format_fn + libsox-1.dll.lsx_ms_adpcm_block_expand_i + libsox-1.dll.lsx_ms_adpcm_block_mash_i + libsox-1.dll.lsx_ms_adpcm_bytes_per_block + libsox-1.dll.lsx_ms_adpcm_i_coef + libsox-1.dll.lsx_ms_adpcm_samples_in + libsox-1.dll.lsx_noiseprof_effect_fn + libsox-1.dll.lsx_noisered_effect_fn + libsox-1.dll.lsx_norm_effect_fn + libsox-1.dll.lsx_nul_format_fn + libsox-1.dll.lsx_offset_seek + libsox-1.dll.lsx_oops_effect_fn + libsox-1.dll.lsx_open_input_file + libsox-1.dll.lsx_optarg + libsox-1.dll.lsx_optind + libsox-1.dll.lsx_output_effect_fn + libsox-1.dll.lsx_overdrive_effect_fn + libsox-1.dll.lsx_pad_effect_fn + libsox-1.dll.lsx_padbytes + libsox-1.dll.lsx_pan_effect_fn + libsox-1.dll.lsx_parse_frequency_k + libsox-1.dll.lsx_parse_note + libsox-1.dll.lsx_parsesamples + libsox-1.dll.lsx_phaser_effect_fn + libsox-1.dll.lsx_pitch_effect_fn + libsox-1.dll.lsx_plot_fir + libsox-1.dll.lsx_polyphase_effect_fn + libsox-1.dll.lsx_power_spectrum + libsox-1.dll.lsx_power_spectrum_f + libsox-1.dll.lsx_prc_format_fn + libsox-1.dll.lsx_prepare_spline3 + libsox-1.dll.lsx_rabbit_effect_fn + libsox-1.dll.lsx_rate_effect_fn + libsox-1.dll.lsx_raw_format_fn + libsox-1.dll.lsx_rawread + libsox-1.dll.lsx_rawseek + libsox-1.dll.lsx_rawstart + libsox-1.dll.lsx_rawwrite + libsox-1.dll.lsx_rdft + libsox-1.dll.lsx_read3 + libsox-1.dll.lsx_read_3_buf + libsox-1.dll.lsx_read_b_buf + libsox-1.dll.lsx_read_df_buf + libsox-1.dll.lsx_read_dw_buf + libsox-1.dll.lsx_read_f_buf + libsox-1.dll.lsx_read_qw_buf + libsox-1.dll.lsx_read_w_buf + libsox-1.dll.lsx_readb + libsox-1.dll.lsx_readbuf + libsox-1.dll.lsx_readchars + libsox-1.dll.lsx_readdf + libsox-1.dll.lsx_readdw + libsox-1.dll.lsx_readf + libsox-1.dll.lsx_readqw + libsox-1.dll.lsx_reads + libsox-1.dll.lsx_readw + libsox-1.dll.lsx_realloc + libsox-1.dll.lsx_remix_effect_fn + libsox-1.dll.lsx_repeat_effect_fn + libsox-1.dll.lsx_report + libsox-1.dll.lsx_resample_effect_fn + libsox-1.dll.lsx_reverb_effect_fn + libsox-1.dll.lsx_reverse_effect_fn + libsox-1.dll.lsx_rewind + libsox-1.dll.lsx_riaa_effect_fn + libsox-1.dll.lsx_s1_format_fn + libsox-1.dll.lsx_s2_format_fn + libsox-1.dll.lsx_s3_format_fn + libsox-1.dll.lsx_s4_format_fn + libsox-1.dll.lsx_safe_cdft + libsox-1.dll.lsx_safe_rdft + libsox-1.dll.lsx_seeki + libsox-1.dll.lsx_set_dft_filter + libsox-1.dll.lsx_set_dft_length + libsox-1.dll.lsx_set_signal_defaults + libsox-1.dll.lsx_sf_format_fn + libsox-1.dll.lsx_sigfigs3 + libsox-1.dll.lsx_sigfigs3p + libsox-1.dll.lsx_silence_effect_fn + libsox-1.dll.lsx_sinc_effect_fn + libsox-1.dll.lsx_skel_effect_fn + libsox-1.dll.lsx_skel_format_fn + libsox-1.dll.lsx_skipbytes + libsox-1.dll.lsx_smp_format_fn + libsox-1.dll.lsx_sounder_format_fn + libsox-1.dll.lsx_soundtool_format_fn + libsox-1.dll.lsx_sox_format_fn + libsox-1.dll.lsx_speed_effect_fn + libsox-1.dll.lsx_sphere_format_fn + libsox-1.dll.lsx_splice_effect_fn + libsox-1.dll.lsx_spline3 + libsox-1.dll.lsx_stat_effect_fn + libsox-1.dll.lsx_stats_effect_fn + libsox-1.dll.lsx_strends + libsox-1.dll.lsx_stretch_effect_fn + libsox-1.dll.lsx_svx_format_fn + libsox-1.dll.lsx_swap_effect_fn + libsox-1.dll.lsx_synth_effect_fn + libsox-1.dll.lsx_tell + libsox-1.dll.lsx_tempo_effect_fn + libsox-1.dll.lsx_tmpfile + libsox-1.dll.lsx_treble_effect_fn + libsox-1.dll.lsx_tremolo_effect_fn + libsox-1.dll.lsx_trim_effect_fn + libsox-1.dll.lsx_txw_format_fn + libsox-1.dll.lsx_u1_format_fn + libsox-1.dll.lsx_u2_format_fn + libsox-1.dll.lsx_u3_format_fn + libsox-1.dll.lsx_u4_format_fn + libsox-1.dll.lsx_ul_format_fn + libsox-1.dll.lsx_ulaw2linear16 + libsox-1.dll.lsx_unreadb + libsox-1.dll.lsx_usage + libsox-1.dll.lsx_usage_lines + libsox-1.dll.lsx_vad_effect_fn + libsox-1.dll.lsx_voc_format_fn + libsox-1.dll.lsx_vol_effect_fn + libsox-1.dll.lsx_vox_format_fn + libsox-1.dll.lsx_vox_read + libsox-1.dll.lsx_vox_start + libsox-1.dll.lsx_vox_stopread + libsox-1.dll.lsx_vox_stopwrite + libsox-1.dll.lsx_vox_write + libsox-1.dll.lsx_warn + libsox-1.dll.lsx_wav_format_fn + libsox-1.dll.lsx_wave_enum + libsox-1.dll.lsx_write3 + libsox-1.dll.lsx_write_3_buf + libsox-1.dll.lsx_write_b_buf + libsox-1.dll.lsx_write_df_buf + libsox-1.dll.lsx_write_dw_buf + libsox-1.dll.lsx_write_f_buf + libsox-1.dll.lsx_write_qw_buf + libsox-1.dll.lsx_write_w_buf + libsox-1.dll.lsx_writeb + libsox-1.dll.lsx_writebuf + libsox-1.dll.lsx_writedf + libsox-1.dll.lsx_writedw + libsox-1.dll.lsx_writef + libsox-1.dll.lsx_writeqw + libsox-1.dll.lsx_writes + libsox-1.dll.lsx_writesb + libsox-1.dll.lsx_writesw + libsox-1.dll.lsx_writew + libsox-1.dll.lsx_wve_format_fn + libsox-1.dll.lsx_xa_format_fn + libsox-1.dll.opterr + libsox-1.dll.optopt + libsox-1.dll.sox_add_effect + libsox-1.dll.sox_append_comment + libsox-1.dll.sox_append_comments + libsox-1.dll.sox_close + libsox-1.dll.sox_copy_comments + libsox-1.dll.sox_create_effect + libsox-1.dll.sox_create_effects_chain + libsox-1.dll.sox_crop_clear_start + libsox-1.dll.sox_crop_get_start + libsox-1.dll.sox_delete_comments + libsox-1.dll.sox_delete_effect + libsox-1.dll.sox_delete_effect_last + libsox-1.dll.sox_delete_effects + libsox-1.dll.sox_delete_effects_chain + libsox-1.dll.sox_effect_fns + libsox-1.dll.sox_effect_options + libsox-1.dll.sox_effects_clips + libsox-1.dll.sox_effects_globals + libsox-1.dll.sox_encodings_info + libsox-1.dll.sox_find_comment + libsox-1.dll.sox_find_effect + libsox-1.dll.sox_find_format + libsox-1.dll.sox_flow_effects + libsox-1.dll.sox_format_fns + libsox-1.dll.sox_format_init + libsox-1.dll.sox_format_quit + libsox-1.dll.sox_format_supports_encoding + libsox-1.dll.sox_globals + libsox-1.dll.sox_init + libsox-1.dll.sox_init_encodinginfo + libsox-1.dll.sox_is_playlist + libsox-1.dll.sox_num_comments + libsox-1.dll.sox_open_read + libsox-1.dll.sox_open_write + libsox-1.dll.sox_output_message + libsox-1.dll.sox_parse_playlist + libsox-1.dll.sox_pop_effect_last + libsox-1.dll.sox_precision + libsox-1.dll.sox_push_effect_last + libsox-1.dll.sox_quit + libsox-1.dll.sox_read + libsox-1.dll.sox_seek + libsox-1.dll.sox_stop_effect + libsox-1.dll.sox_strerror + libsox-1.dll.sox_trim_clear_start + libsox-1.dll.sox_trim_get_start + libsox-1.dll.sox_version + libsox-1.dll.sox_write + libsox-1.dll.sox_write_handler diff --git a/depcomp b/depcomp new file mode 100644 index 0000000..ca5ea4e --- /dev/null +++ b/depcomp @@ -0,0 +1,584 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2006-10-15.18 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software +# Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/developer/.svn/all-wcprops b/developer/.svn/all-wcprops new file mode 100644 index 0000000..a2fa375 --- /dev/null +++ b/developer/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/328/monitor/trunk/developer +END +set_svn_properties.sh +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/328/monitor/trunk/developer/set_svn_properties.sh +END diff --git a/developer/.svn/entries b/developer/.svn/entries new file mode 100644 index 0000000..357298a --- /dev/null +++ b/developer/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/developer +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +set_svn_properties.sh +file + + + + +2012-01-23T14:07:02.474486Z +6f422fd3cc8605f5bc91a41c827d0963 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +6981 + diff --git a/developer/.svn/prop-base/set_svn_properties.sh.svn-base b/developer/.svn/prop-base/set_svn_properties.sh.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/developer/.svn/prop-base/set_svn_properties.sh.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/developer/.svn/text-base/set_svn_properties.sh.svn-base b/developer/.svn/text-base/set_svn_properties.sh.svn-base new file mode 100644 index 0000000..645ee7b --- /dev/null +++ b/developer/.svn/text-base/set_svn_properties.sh.svn-base @@ -0,0 +1,99 @@ + +# this script will set the proper svn properties on all the files in the tree +# It pretty much requires a gnu compatible xargs (for the -r flag). Running +# on Linux is probably the best option +# Note: use the following line if you want to remove svn:keywords +for ext in nsi in cpp h java php xml xsl xsd wsdl properties txt htm* css js ; do find . -path '*/.svn' -prune -o -name "*.$ext" -print0 | xargs -0 -r svn propdel svn:keywords ; done + + +find . -path '*/.svn' -prune -o -name "*.nsi" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.in" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.cpp" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.h" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.java" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.php" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.xml" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.xml" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.xsl" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.xsl" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.xsd" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.xsd" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.wsdl" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.wsdl" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.properties" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.properties" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.txt" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.txt" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "*.htm*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.htm*" -print0 | xargs -0 -r svn propset svn:mime-type text/html + +find . -path '*/.svn' -prune -o -name "*.css" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.css" -print0 | xargs -0 -r svn propset svn:mime-type text/css + +find . -path '*/.svn' -prune -o -name "*.js" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.js" -print0 | xargs -0 -r svn propset svn:mime-type text/javascript + +find . -path '*/.svn' -prune -o -name "README*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "README*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "LICENSE*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "LICENSE*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "NOTICE*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "NOTICE*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "TODO*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "TODO*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "KEYS*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "KEYS*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "*.png" -print0 | xargs -0 -r svn propset svn:mime-type image/png +find . -path '*/.svn' -prune -o -name "*.gif" -print0 | xargs -0 -r svn propset svn:mime-type image/gif +find . -path '*/.svn' -prune -o -name "*.jpg" -print0 | xargs -0 -r svn propset svn:mime-type image/jpeg +find . -path '*/.svn' -prune -o -name "*.jpeg" -print0 | xargs -0 -r svn propset svn:mime-type image/jpeg + +find . -path '*/.svn' -prune -o -name "*.fragment" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.fragment" -print0 | xargs -0 -r svn propset svn:mime-type text/xml + +find . -path '*/.svn' -prune -o -name "*.wsdd" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.wsdd" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "ChangeLog*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "ChangeLog*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "*.sh" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.sh" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.sh" -print0 | xargs -0 -r svn propset svn:executable "" + +find . -path '*/.svn' -prune -o -name "*.bat" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.bat" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.bat" -print0 | xargs -0 -r svn propset svn:executable "" + +find . -path '*/.svn' -prune -o -name "*.cmd" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.cmd" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.cmd" -print0 | xargs -0 -r svn propset svn:executable "" + +find . -path '*/.svn' -prune -o -name "INSTALL*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "INSTALL*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "COPYING*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "COPYING*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "NEWS*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "NEWS*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "DISCLAIMER*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "DISCLAIMER*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain diff --git a/developer/set_svn_properties.sh b/developer/set_svn_properties.sh new file mode 100755 index 0000000..645ee7b --- /dev/null +++ b/developer/set_svn_properties.sh @@ -0,0 +1,99 @@ + +# this script will set the proper svn properties on all the files in the tree +# It pretty much requires a gnu compatible xargs (for the -r flag). Running +# on Linux is probably the best option +# Note: use the following line if you want to remove svn:keywords +for ext in nsi in cpp h java php xml xsl xsd wsdl properties txt htm* css js ; do find . -path '*/.svn' -prune -o -name "*.$ext" -print0 | xargs -0 -r svn propdel svn:keywords ; done + + +find . -path '*/.svn' -prune -o -name "*.nsi" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.in" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.cpp" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.h" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.java" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.php" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.xml" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.xml" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.xsl" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.xsl" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.xsd" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.xsd" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.wsdl" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.wsdl" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.properties" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.properties" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "*.txt" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.txt" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "*.htm*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.htm*" -print0 | xargs -0 -r svn propset svn:mime-type text/html + +find . -path '*/.svn' -prune -o -name "*.css" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.css" -print0 | xargs -0 -r svn propset svn:mime-type text/css + +find . -path '*/.svn' -prune -o -name "*.js" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.js" -print0 | xargs -0 -r svn propset svn:mime-type text/javascript + +find . -path '*/.svn' -prune -o -name "README*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "README*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "LICENSE*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "LICENSE*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "NOTICE*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "NOTICE*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "TODO*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "TODO*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "KEYS*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "KEYS*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "*.png" -print0 | xargs -0 -r svn propset svn:mime-type image/png +find . -path '*/.svn' -prune -o -name "*.gif" -print0 | xargs -0 -r svn propset svn:mime-type image/gif +find . -path '*/.svn' -prune -o -name "*.jpg" -print0 | xargs -0 -r svn propset svn:mime-type image/jpeg +find . -path '*/.svn' -prune -o -name "*.jpeg" -print0 | xargs -0 -r svn propset svn:mime-type image/jpeg + +find . -path '*/.svn' -prune -o -name "*.fragment" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.fragment" -print0 | xargs -0 -r svn propset svn:mime-type text/xml + +find . -path '*/.svn' -prune -o -name "*.wsdd" -print0 | xargs -0 -r svn propset svn:mime-type text/xml +find . -path '*/.svn' -prune -o -name "*.wsdd" -print0 | xargs -0 -r svn propset svn:eol-style native + +find . -path '*/.svn' -prune -o -name "ChangeLog*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "ChangeLog*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "*.sh" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.sh" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.sh" -print0 | xargs -0 -r svn propset svn:executable "" + +find . -path '*/.svn' -prune -o -name "*.bat" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.bat" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.bat" -print0 | xargs -0 -r svn propset svn:executable "" + +find . -path '*/.svn' -prune -o -name "*.cmd" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "*.cmd" -print0 | xargs -0 -r svn propset svn:mime-type text/plain +find . -path '*/.svn' -prune -o -name "*.cmd" -print0 | xargs -0 -r svn propset svn:executable "" + +find . -path '*/.svn' -prune -o -name "INSTALL*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "INSTALL*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "COPYING*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "COPYING*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "NEWS*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "NEWS*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain + +find . -path '*/.svn' -prune -o -name "DISCLAIMER*" -print0 | xargs -0 -r svn propset svn:eol-style native +find . -path '*/.svn' -prune -o -name "DISCLAIMER*" -print0 | xargs -0 -r svn propset svn:mime-type text/plain diff --git a/dispatcher.lua b/dispatcher.lua new file mode 100644 index 0000000..ee69eb8 --- /dev/null +++ b/dispatcher.lua @@ -0,0 +1,23 @@ +-- dispatcher.lua + +-- +-- Filter f�r den Globaldispatcher +-- +-- Globales Array "arg" enth�lt die Daten vom Auswertermodul +-- +-- R�ckgabewert: 0 = an Clients senden, 1= nicht an Clients senden +-- + +local sperrliste = {"0174784", "1398098"} ; + +function filter() +-- wird f�r jedes Telegramm (pocsag, fms, zvei) aufgerufen + for index,testwert in pairs(sperrliste) do + if (testwert==arg["ric"]) then + return 1 + end + end + + return 0; +end + diff --git a/install-sh b/install-sh new file mode 100644 index 0000000..4fbbae7 --- /dev/null +++ b/install-sh @@ -0,0 +1,507 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2006-10-14.15 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +posix_glob= +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chmodcmd=$chmodprog +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + shift + shift + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac +done + +if test $# -ne 0 && test -z "$dir_arg$dstarg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix=/ ;; + -*) prefix=./ ;; + *) prefix= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir + shift + $posix_glob && set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ + || { + echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + } || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/jthread-1.2.1/.svn/all-wcprops b/jthread-1.2.1/.svn/all-wcprops new file mode 100644 index 0000000..d7b18f0 --- /dev/null +++ b/jthread-1.2.1/.svn/all-wcprops @@ -0,0 +1,155 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/329/monitor/trunk/jthread-1.2.1 +END +configure +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/configure +END +jthread_wce.vcproj +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread_wce.vcproj +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/Makefile.in +END +jthread.ncb +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread.ncb +END +jthread.vcproj +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread.vcproj +END +configure.in +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/configure.in +END +jthread.suo +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread.suo +END +depcomp +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/depcomp +END +ChangeLog +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/ChangeLog +END +config.guess +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/config.guess +END +config.sub +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/config.sub +END +ltmain.sh +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/ltmain.sh +END +jthread_wce5.sln +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread_wce5.sln +END +TODO +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/TODO +END +jthread_wce5.vcproj +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread_wce5.vcproj +END +jthread.dsp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread.dsp +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/Makefile.am +END +missing +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/missing +END +LICENSE.MIT +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/LICENSE.MIT +END +jthread_wce.sln +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread_wce.sln +END +README.TXT +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/README.TXT +END +jthread.sln +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread.sln +END +jthread.dsw +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/jthread.dsw +END +aclocal.m4 +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/aclocal.m4 +END +install-sh +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/install-sh +END diff --git a/jthread-1.2.1/.svn/entries b/jthread-1.2.1/.svn/entries new file mode 100644 index 0000000..81297d7 --- /dev/null +++ b/jthread-1.2.1/.svn/entries @@ -0,0 +1,887 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/jthread-1.2.1 +http://svn.monitord.de + + + +2008-07-25T23:20:46.314897Z +329 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +configure +file + + + + +2012-01-23T14:07:05.286495Z +f99796aa2e8a8f75007af0c64d2de3b0 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +662379 + +jthread_wce.vcproj +file + + + + +2012-01-23T14:07:05.284544Z +b40c413ff62a002360474412e5c0dc9d +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4540 + +Makefile.in +file + + + + +2012-01-23T14:07:05.287490Z +8cde87deb5e892207c1a085dc6515dcc +2008-07-25T23:20:46.314897Z +329 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +19073 + +jthread.ncb +file + + + + +2012-01-23T14:07:05.286495Z +2ef2e1c1d93b6c4544b591366c41d7fb +2007-11-15T17:57:46.787418Z +150 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +35840 + +jthread.vcproj +file + + + + +2012-01-23T14:07:05.287490Z +998b8aabca1eb980ae29964cd239bd48 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4606 + +configure.in +file + + + + +2012-01-23T14:07:05.288496Z +f4a1b8fa54bc45e023fb3d2b181b0516 +2008-07-25T23:20:46.314897Z +329 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +741 + +jthread.suo +file + + + + +2012-01-23T14:07:05.287490Z +5d3fe2827f9822b1dcc5f678816d5cde +2007-11-15T17:57:46.787418Z +150 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +10240 + +depcomp +file + + + + +2012-01-23T14:07:05.289501Z +82f329b2b329780d9836e1ae5ddd0854 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +15112 + +ChangeLog +file + + + + +2012-01-23T14:07:05.288496Z +b644708d1b3604e92651e0ab99054963 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2008 + +src +dir + +config.guess +file + + + + +2012-01-23T14:07:05.289501Z +24cc880101f03147b04e06e386c45050 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +43609 + +config.sub +file + + + + +2012-01-23T14:07:05.299489Z +5efd4f335eaecca6a494fd65b2ea64da +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +31160 + +ltmain.sh +file + + + + +2012-01-23T14:07:05.299489Z +e112867921e7d6f38281b55b50fa5133 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +183740 + +jthread_wce5.sln +file + + + + +2012-01-23T14:07:05.299489Z +525f50045e8c025d560c7938049ddb50 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +1622 + +doc +dir + +TODO +file + + + + +2012-01-23T14:07:05.300548Z +68b329da9893e34099c7d8ad5cb9c940 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1 + +jthread.dsp +file + + + + +2012-01-23T14:07:05.300548Z +56646a7fb775cb13a06e95ff5952cc3c +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +3158 + +jthread_wce5.vcproj +file + + + + +2012-01-23T14:07:05.300548Z +6c44fcce72baf6500f991fddbcc73edc +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4634 + +pkgconfig +dir + +Makefile.am +file + + + + +2012-01-23T14:07:05.300548Z +bc9ecd4d00fa718b3dee3ed5ffc4521d +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +670 + +missing +file + + + + +2012-01-23T14:07:05.301492Z +d1e9ac50f3bf49004061ea85f565cbce +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +10678 + +LICENSE.MIT +file + + + + +2012-01-23T14:07:05.301492Z +094638e2302e0269e1c895bfb10e8022 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1026 + +jthread_wce.sln +file + + + + +2012-01-23T14:07:05.301492Z +4f8182c677f05d6ed3239355a173f7dd +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +1294 + +README.TXT +file + + + + +2012-01-23T14:07:05.301492Z +6684a150303c574b7be3c61bfba0dd4f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2231 + +jthread.sln +file + + + + +2012-01-23T14:07:05.305492Z +4f73aa942313494fb101f2db3bc3693e +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +903 + +jthread.dsw +file + + + + +2012-01-23T14:07:05.305492Z +f7954692d17c453879b98ac31c81f683 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +537 + +aclocal.m4 +file + + + + +2012-01-23T14:07:05.306494Z +45c16f338d0c361409d1a8edb0a96a1b +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +244979 + +install-sh +file + + + + +2012-01-23T14:07:05.306494Z +8422c755522bd72b49eb7cab70deed6b +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +9505 + diff --git a/jthread-1.2.1/.svn/prop-base/ChangeLog.svn-base b/jthread-1.2.1/.svn/prop-base/ChangeLog.svn-base new file mode 100644 index 0000000..138f983 --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/ChangeLog.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/jthread-1.2.1/.svn/prop-base/LICENSE.MIT.svn-base b/jthread-1.2.1/.svn/prop-base/LICENSE.MIT.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/LICENSE.MIT.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/jthread-1.2.1/.svn/prop-base/Makefile.in.svn-base b/jthread-1.2.1/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/.svn/prop-base/README.TXT.svn-base b/jthread-1.2.1/.svn/prop-base/README.TXT.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/README.TXT.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/jthread-1.2.1/.svn/prop-base/TODO.svn-base b/jthread-1.2.1/.svn/prop-base/TODO.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/TODO.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/jthread-1.2.1/.svn/prop-base/configure.in.svn-base b/jthread-1.2.1/.svn/prop-base/configure.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/configure.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/.svn/prop-base/jthread.ncb.svn-base b/jthread-1.2.1/.svn/prop-base/jthread.ncb.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/jthread.ncb.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/jthread-1.2.1/.svn/prop-base/jthread.suo.svn-base b/jthread-1.2.1/.svn/prop-base/jthread.suo.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/jthread.suo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/jthread-1.2.1/.svn/prop-base/ltmain.sh.svn-base b/jthread-1.2.1/.svn/prop-base/ltmain.sh.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/jthread-1.2.1/.svn/prop-base/ltmain.sh.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/jthread-1.2.1/.svn/text-base/ChangeLog.svn-base b/jthread-1.2.1/.svn/text-base/ChangeLog.svn-base new file mode 100644 index 0000000..81fadd9 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/ChangeLog.svn-base @@ -0,0 +1,54 @@ + June 20, 2006 + + + + JThread ChangeLog + + --------- + + + 1.2.1 (June 2006) + * In the pthread implementation the thread is now created in the + detached state. This makes sure the resources of a thread are + freed when the thread ends. Thanks to Julien K�nzi + (julien.kuenzi@epfl.ch) for bringing this to my attention. + + 1.2.0 (March 2006) + * Added JMutexAutoLock class. Thanks to Jeremy Noring + (jnoring@wilife.com) for suggesting this. + * On MS-Windows platforms, you now have the choice between two + mutex implementations. Besides the implementation present in + previous releases, you can now also use a CRITICAL_SECTION + object. This was suggested by Jeremy Noring (jnoring@wilife.com). + * Added pkg-config stuff. Thanks to Philippe Khalaf + (burger@speedy.org) for supplying the patches. + + 1.1.2 (September 2005) + * Win32 version now uses _beginthreadex instead of CreateThread. + This should be a safer function. Thanks to Zhu Jin Hong + (labile@21cn.com) for pointing this out. + * Added WinCE support. + * Switched to automake. + + 1.1.1 (December 2004) + * Added necessary 'CloseHandle' calls for the thread handle in + the Win32 version of 'jthread.cpp'. Thanks to Nils O. Selasdal + (NOS@Utel.no) for pointing out the handle leak. + + 1.1.0 (September 2004) + * Important change: In your own void *Thread() function, you + now have to call JThread::ThreadStarted() at the start of + the function. Until this function is called, the Start() + function blocks. This way, when the Start() function is + finished, we can be really really sure that our own thread + is running. + + 1.0.1 (August 2004) + * configure now detects pdflatex and listings package: + only if these are found, documentation is built. + + 1.0.0 (February 2001) + * Initial release + * Thanks to Stijn Vansummeren (stijnvs@lumumba.luc.ac.be) for fixing + a bug in the JThread::GetReturnValue() function + diff --git a/jthread-1.2.1/.svn/text-base/LICENSE.MIT.svn-base b/jthread-1.2.1/.svn/text-base/LICENSE.MIT.svn-base new file mode 100644 index 0000000..c55f070 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/LICENSE.MIT.svn-base @@ -0,0 +1,19 @@ + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + diff --git a/jthread-1.2.1/.svn/text-base/Makefile.am.svn-base b/jthread-1.2.1/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..f099a1e --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,16 @@ +SUBDIRS = src doc pkgconfig +EXTRA_DIST = LICENSE.MIT ChangeLog README.TXT jthread.dsw jthread.dsp jthread.vcproj jthread.sln \ + jthread_wce.sln jthread_wce.vcproj jthread_wce5.sln jthread_wce5.vcproj + +dist-hook: distclean + mv $(distdir)/jthread.dsw $(distdir)/jthread.dsw.tmp + mv $(distdir)/jthread.dsp $(distdir)/jthread.dsp.tmp + todos < $(distdir)/jthread.dsw.tmp > $(distdir)/jthread.dsw + todos < $(distdir)/jthread.dsp.tmp > $(distdir)/jthread.dsp + rm $(distdir)/jthread.dsw.tmp + rm $(distdir)/jthread.dsp.tmp + chmod a-x $(distdir)/jthread_wce.vcproj + chmod a-x $(distdir)/jthread_wce.sln + chmod a-x $(distdir)/jthread.vcproj + chmod a-x $(distdir)/jthread.sln + diff --git a/jthread-1.2.1/.svn/text-base/Makefile.in.svn-base b/jthread-1.2.1/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..0705206 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,606 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure ChangeLog TODO \ + config.guess config.sub depcomp install-sh ltmain.sh missing +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = src doc pkgconfig +EXTRA_DIST = LICENSE.MIT ChangeLog README.TXT jthread.dsw jthread.dsp jthread.vcproj jthread.sln \ + jthread_wce.sln jthread_wce.vcproj jthread_wce5.sln jthread_wce5.vcproj + +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/pkgconfig + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-libtool clean-recursive \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am + + +dist-hook: distclean + mv $(distdir)/jthread.dsw $(distdir)/jthread.dsw.tmp + mv $(distdir)/jthread.dsp $(distdir)/jthread.dsp.tmp + todos < $(distdir)/jthread.dsw.tmp > $(distdir)/jthread.dsw + todos < $(distdir)/jthread.dsp.tmp > $(distdir)/jthread.dsp + rm $(distdir)/jthread.dsw.tmp + rm $(distdir)/jthread.dsp.tmp + chmod a-x $(distdir)/jthread_wce.vcproj + chmod a-x $(distdir)/jthread_wce.sln + chmod a-x $(distdir)/jthread.vcproj + chmod a-x $(distdir)/jthread.sln +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/.svn/text-base/README.TXT.svn-base b/jthread-1.2.1/.svn/text-base/README.TXT.svn-base new file mode 100644 index 0000000..c4cb208 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/README.TXT.svn-base @@ -0,0 +1,60 @@ + June 20, 2006 + + + Notes about JThread (v1.2.1) + + + +LIBRARY LOCATION AND CONTACT +============================ + +Normally, you should be able to download the latest version of the library +from this url: + http://research.edm.uhasselt.be/jori/jthread/jthread.html + +If you have questions about the library, you can mail me at: + jori.liesenborgs@gmail.com + + +DISCLAIMER & COPYRIGHT +====================== + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + + +INSTALLATION NOTES +================== + +* To compile the library on a unix-like platform, just start the configure + script. + + This should generate a makefile which you can use to start building the + library using 'make'. + +* To compile the library on a MS-Windows platform using Visual C++, you can + use the project files included in the archive. + + IMPORTANT: As of version 1.2.0, you can choose between two mutex + implementations on the MS-Windows platform. By default, the + same implementation is used as in previous versions. However, + if you'd like the JMutex class to use a CRITICAL_SECTION + object rather than a mutex handle, you should uncomment the + JMUTEX_CRITICALSECTION define in jmutex.h before compiling + the library. + diff --git a/jthread-1.2.1/.svn/text-base/TODO.svn-base b/jthread-1.2.1/.svn/text-base/TODO.svn-base new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/TODO.svn-base @@ -0,0 +1 @@ + diff --git a/jthread-1.2.1/.svn/text-base/aclocal.m4.svn-base b/jthread-1.2.1/.svn/text-base/aclocal.m4.svn-base new file mode 100644 index 0000000..0044e21 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/aclocal.m4.svn-base @@ -0,0 +1,6881 @@ +# generated automatically by aclocal 1.9.5 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided and an installed libltdl is not found, it is +# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_builddir and top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# --------------- +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + ;; + cxx) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDRT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)=$_LT_AC_TAGVAR(archive_cmds, $1) + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.5])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/jthread-1.2.1/.svn/text-base/config.guess.svn-base b/jthread-1.2.1/.svn/text-base/config.guess.svn-base new file mode 100644 index 0000000..51fab47 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/config.guess.svn-base @@ -0,0 +1,1459 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2004-03-12' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amd64:OpenBSD:*:*) + echo x86_64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + cats:OpenBSD:*:*) + echo arm-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pegasos:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit 0 ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + # GNU/KFreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/jthread-1.2.1/.svn/text-base/config.sub.svn-base b/jthread-1.2.1/.svn/text-base/config.sub.svn-base new file mode 100644 index 0000000..ba33103 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/config.sub.svn-base @@ -0,0 +1,1549 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2004-03-12' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/jthread-1.2.1/.svn/text-base/configure.in.svn-base b/jthread-1.2.1/.svn/text-base/configure.in.svn-base new file mode 100644 index 0000000..a28f7d2 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/configure.in.svn-base @@ -0,0 +1,28 @@ +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(jthread,1.2.1) + +if test "BLA$CXXFLAGS" = "BLA" ; then + dnl CXXFLAGS="-g -Werror -Wall" + CXXFLAGS="-O2 " +fi + +dnl --------------------------------------------------------------------------- +dnl Set language to C++ and do libtool stuff +dnl --------------------------------------------------------------------------- + +AC_LANG(C++) + +AM_PROG_LIBTOOL + +dnl --------------------------------------------------------------------------- +dnl Finish up... +dnl --------------------------------------------------------------------------- + +AC_OUTPUT(Makefile \ + src/Makefile \ + doc/Makefile \ + pkgconfig/Makefile \ + pkgconfig/jthread.pc \ + pkgconfig/jthread-uninstalled.pc \ + ) + diff --git a/jthread-1.2.1/.svn/text-base/configure.svn-base b/jthread-1.2.1/.svn/text-base/configure.svn-base new file mode 100644 index 0000000..ff3d056 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/configure.svn-base @@ -0,0 +1,20482 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="configure.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] + include additional configurations [automatic] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + +am__api_version="1.9" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=jthread + VERSION=1.2.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +if test "BLA$CXXFLAGS" = "BLA" ; then + CXXFLAGS="-O2 " +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 3657 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5236:" \ + "checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDRT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_static" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6305: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6309: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-static' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + solaris*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6560: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6564: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6620: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6624: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + archive_expsym_cmds=$archive_cmds + fi + else + ld_shlibs=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which librarie types wil actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-tags was given. +if test "${with_tags+set}" = set; then + withval="$with_tags" + tagnames="$withval" +fi; + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC) + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + ;; + cxx) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-static' + ;; + cxx) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11138: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11142: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11198: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11202: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + test "$enable_shared" = yes && enable_static=no + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-static' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + solaris*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13514: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13518: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13574: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13578: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + archive_expsym_cmds_F77=$archive_cmds_F77 + fi + else + ld_shlibs_F77=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15630: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15634: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-static' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + solaris*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15885: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15889: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15945: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15949: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + archive_expsym_cmds_GCJ=$archive_cmds_GCJ + fi + else + ld_shlibs_GCJ=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + + + ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile pkgconfig/Makefile pkgconfig/jthread.pc pkgconfig/jthread-uninstalled.pc" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# 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 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "pkgconfig/Makefile" ) CONFIG_FILES="$CONFIG_FILES pkgconfig/Makefile" ;; + "pkgconfig/jthread.pc" ) CONFIG_FILES="$CONFIG_FILES pkgconfig/jthread.pc" ;; + "pkgconfig/jthread-uninstalled.pc" ) CONFIG_FILES="$CONFIG_FILES pkgconfig/jthread-uninstalled.pc" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # 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_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # 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" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`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 + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + diff --git a/jthread-1.2.1/.svn/text-base/depcomp.svn-base b/jthread-1.2.1/.svn/text-base/depcomp.svn-base new file mode 100644 index 0000000..25bdb18 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/depcomp.svn-base @@ -0,0 +1,526 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2004-04-25.13 + +# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit 0 + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit 0 + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # Dependencies are output in .lo.d with libtool 1.4. + # They are output in .o.d with libtool 1.5. + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.o.d" + tmpdepfile3="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + tmpdepfile3="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + elif test -f "$tmpdepfile2"; then + tmpdepfile="$tmpdepfile2" + else + tmpdepfile="$tmpdepfile3" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/jthread-1.2.1/.svn/text-base/install-sh.svn-base b/jthread-1.2.1/.svn/text-base/install-sh.svn-base new file mode 100644 index 0000000..e4160c9 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/install-sh.svn-base @@ -0,0 +1,325 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2004-04-01.17 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename= +transform_arg= +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= + +usage="Usage: $0 [OPTION]... SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 -d DIRECTORIES... + +In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. +In the second, create the directory path DIR. + +Options: +-b=TRANSFORMBASENAME +-c copy source (using $cpprog) instead of moving (using $mvprog). +-d create directories instead of installing files. +-g GROUP $chgrp installed files to GROUP. +-m MODE $chmod installed files to MODE. +-o USER $chown installed files to USER. +-s strip installed files (using $stripprog). +-t=TRANSFORM +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit 0;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + --version) echo "$0 $scriptversion"; exit 0;; + + *) # When -d is used, all remaining arguments are directories to create. + test -n "$dir_arg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + instcmd=: + chmodcmd= + else + instcmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$instcmd $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" || lasterr=$? + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; } + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $instcmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + # If we're going to rename the final executable, determine the name now. + if test -z "$transformarg"; then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename \ + | sed $transformarg`$transformbasename + fi + + # don't allow the sed command to completely eliminate the filename. + test -z "$dstfile" && dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Move or copy the file name to the temp name + $doit $instcmd "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $instcmd $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/jthread-1.2.1/.svn/text-base/jthread.dsp.svn-base b/jthread-1.2.1/.svn/text-base/jthread.dsp.svn-base new file mode 100644 index 0000000..cebda65 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread.dsp.svn-base @@ -0,0 +1,112 @@ +# Microsoft Developer Studio Project File - Name="jthread" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=jthread - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "jthread.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "jthread.mak" CFG="jthread - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "jthread - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "jthread - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "jthread - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I ".\src" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "jthread - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".\src" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "jthread - Win32 Release" +# Name "jthread - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\src\win32\jmutex.cpp +# End Source File +# Begin Source File + +SOURCE=.\src\win32\jthread.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\src\jmutex.h +# End Source File +# Begin Source File + +SOURCE=.\src\jmutexautolock.h +# End Source File +# Begin Source File + +SOURCE=.\src\jthread.h +# End Source File +# End Group +# End Target +# End Project diff --git a/jthread-1.2.1/.svn/text-base/jthread.dsw.svn-base b/jthread-1.2.1/.svn/text-base/jthread.dsw.svn-base new file mode 100644 index 0000000..af0f8cc --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread.dsw.svn-base @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "jthread"=.\jthread.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/jthread-1.2.1/.svn/text-base/jthread.ncb.svn-base b/jthread-1.2.1/.svn/text-base/jthread.ncb.svn-base new file mode 100644 index 0000000..26b5a77 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread.ncb.svn-base Binary files differ diff --git a/jthread-1.2.1/.svn/text-base/jthread.sln.svn-base b/jthread-1.2.1/.svn/text-base/jthread.sln.svn-base new file mode 100644 index 0000000..716074f --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread.sln.svn-base @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jthread", "jthread.vcproj", "{EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Debug.ActiveCfg = Debug|Win32 + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Debug.Build.0 = Debug|Win32 + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Release.ActiveCfg = Release|Win32 + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/jthread-1.2.1/.svn/text-base/jthread.suo.svn-base b/jthread-1.2.1/.svn/text-base/jthread.suo.svn-base new file mode 100644 index 0000000..a97cff2 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread.suo.svn-base Binary files differ diff --git a/jthread-1.2.1/.svn/text-base/jthread.vcproj.svn-base b/jthread-1.2.1/.svn/text-base/jthread.vcproj.svn-base new file mode 100644 index 0000000..ddbe15f --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread.vcproj.svn-base @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jthread-1.2.1/.svn/text-base/jthread_wce.sln.svn-base b/jthread-1.2.1/.svn/text-base/jthread_wce.sln.svn-base new file mode 100644 index 0000000..693e2d9 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread_wce.sln.svn-base @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jthread_wce", "jthread_wce.vcproj", "{97019D39-C7F4-4F37-B2F3-88C313445A3B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Pocket PC 2003 (ARMV4) = Debug|Pocket PC 2003 (ARMV4) + Release|Pocket PC 2003 (ARMV4) = Release|Pocket PC 2003 (ARMV4) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/jthread-1.2.1/.svn/text-base/jthread_wce.vcproj.svn-base b/jthread-1.2.1/.svn/text-base/jthread_wce.vcproj.svn-base new file mode 100644 index 0000000..9b31d06 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread_wce.vcproj.svn-base @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jthread-1.2.1/.svn/text-base/jthread_wce5.sln.svn-base b/jthread-1.2.1/.svn/text-base/jthread_wce5.sln.svn-base new file mode 100644 index 0000000..7c76c3f --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread_wce5.sln.svn-base @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jthread_wce5", "jthread_wce5.vcproj", "{B3F17D43-8427-438F-BEB1-EF5DB36295DA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/jthread-1.2.1/.svn/text-base/jthread_wce5.vcproj.svn-base b/jthread-1.2.1/.svn/text-base/jthread_wce5.vcproj.svn-base new file mode 100644 index 0000000..a651871 --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/jthread_wce5.vcproj.svn-base @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jthread-1.2.1/.svn/text-base/ltmain.sh.svn-base b/jthread-1.2.1/.svn/text-base/ltmain.sh.svn-base new file mode 100644 index 0000000..70f0b2d --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/ltmain.sh.svn-base @@ -0,0 +1,6422 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.6 +TIMESTAMP=" (1.1220.2.94 2004/04/10 16:27:27)" + + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () { + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () { + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2003 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $EXIT_SUCCESS + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $EXIT_SUCCESS + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $EXIT_SUCCESS + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) prevopt="--tag" prev=tag ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case "$arg_mode" in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit $EXIT_FAILURE + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # gcc -m* arguments should be passed to the linker via $compiler_flags + # in order to pass architecture information to the linker + # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo + # but this is not reliable with gcc because gcc may use -mfoo to + # select a different linker, different libraries, etc, while + # -Wl,-mfoo simply passes -mfoo to the linker. + -m*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + if test "$deplibs_check_method" != pass_all; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5* ) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$deplibs $path" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$save_output-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$save_output-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$save_output-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadale object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + cwrappersource=`$echo ${objdir}/lt-${output}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +#define DIR_SEPARATOR '/' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +#define HAVE_DOS_BASED_FILE_SYSTEM +#ifndef DIR_SEPARATOR_2 +#define DIR_SEPARATOR_2 '\\' +#endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + # GNU ar 2.10+ was changed to match POSIX; thus no paths are + # encoded into archives. This makes 'ar r' malfunction in + # this piecewise linking case whenever conflicting object + # names appear in distinct ar calls; check, warn and compensate. + if (for obj in $save_oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 + $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 + AR_FLAGS=cq + fi + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask + else + umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "----------------------------------------------------------------------" + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "----------------------------------------------------------------------" + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $EXIT_SUCCESS + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/jthread-1.2.1/.svn/text-base/missing.svn-base b/jthread-1.2.1/.svn/text-base/missing.svn-base new file mode 100644 index 0000000..e7ef83a --- /dev/null +++ b/jthread-1.2.1/.svn/text-base/missing.svn-base @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2003-09-02.23 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/jthread-1.2.1/ChangeLog b/jthread-1.2.1/ChangeLog new file mode 100644 index 0000000..81fadd9 --- /dev/null +++ b/jthread-1.2.1/ChangeLog @@ -0,0 +1,54 @@ + June 20, 2006 + + + + JThread ChangeLog + + --------- + + + 1.2.1 (June 2006) + * In the pthread implementation the thread is now created in the + detached state. This makes sure the resources of a thread are + freed when the thread ends. Thanks to Julien K�nzi + (julien.kuenzi@epfl.ch) for bringing this to my attention. + + 1.2.0 (March 2006) + * Added JMutexAutoLock class. Thanks to Jeremy Noring + (jnoring@wilife.com) for suggesting this. + * On MS-Windows platforms, you now have the choice between two + mutex implementations. Besides the implementation present in + previous releases, you can now also use a CRITICAL_SECTION + object. This was suggested by Jeremy Noring (jnoring@wilife.com). + * Added pkg-config stuff. Thanks to Philippe Khalaf + (burger@speedy.org) for supplying the patches. + + 1.1.2 (September 2005) + * Win32 version now uses _beginthreadex instead of CreateThread. + This should be a safer function. Thanks to Zhu Jin Hong + (labile@21cn.com) for pointing this out. + * Added WinCE support. + * Switched to automake. + + 1.1.1 (December 2004) + * Added necessary 'CloseHandle' calls for the thread handle in + the Win32 version of 'jthread.cpp'. Thanks to Nils O. Selasdal + (NOS@Utel.no) for pointing out the handle leak. + + 1.1.0 (September 2004) + * Important change: In your own void *Thread() function, you + now have to call JThread::ThreadStarted() at the start of + the function. Until this function is called, the Start() + function blocks. This way, when the Start() function is + finished, we can be really really sure that our own thread + is running. + + 1.0.1 (August 2004) + * configure now detects pdflatex and listings package: + only if these are found, documentation is built. + + 1.0.0 (February 2001) + * Initial release + * Thanks to Stijn Vansummeren (stijnvs@lumumba.luc.ac.be) for fixing + a bug in the JThread::GetReturnValue() function + diff --git a/jthread-1.2.1/LICENSE.MIT b/jthread-1.2.1/LICENSE.MIT new file mode 100644 index 0000000..c55f070 --- /dev/null +++ b/jthread-1.2.1/LICENSE.MIT @@ -0,0 +1,19 @@ + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + diff --git a/jthread-1.2.1/Makefile.am b/jthread-1.2.1/Makefile.am new file mode 100644 index 0000000..f099a1e --- /dev/null +++ b/jthread-1.2.1/Makefile.am @@ -0,0 +1,16 @@ +SUBDIRS = src doc pkgconfig +EXTRA_DIST = LICENSE.MIT ChangeLog README.TXT jthread.dsw jthread.dsp jthread.vcproj jthread.sln \ + jthread_wce.sln jthread_wce.vcproj jthread_wce5.sln jthread_wce5.vcproj + +dist-hook: distclean + mv $(distdir)/jthread.dsw $(distdir)/jthread.dsw.tmp + mv $(distdir)/jthread.dsp $(distdir)/jthread.dsp.tmp + todos < $(distdir)/jthread.dsw.tmp > $(distdir)/jthread.dsw + todos < $(distdir)/jthread.dsp.tmp > $(distdir)/jthread.dsp + rm $(distdir)/jthread.dsw.tmp + rm $(distdir)/jthread.dsp.tmp + chmod a-x $(distdir)/jthread_wce.vcproj + chmod a-x $(distdir)/jthread_wce.sln + chmod a-x $(distdir)/jthread.vcproj + chmod a-x $(distdir)/jthread.sln + diff --git a/jthread-1.2.1/Makefile.in b/jthread-1.2.1/Makefile.in new file mode 100644 index 0000000..0705206 --- /dev/null +++ b/jthread-1.2.1/Makefile.in @@ -0,0 +1,606 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure ChangeLog TODO \ + config.guess config.sub depcomp install-sh ltmain.sh missing +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = src doc pkgconfig +EXTRA_DIST = LICENSE.MIT ChangeLog README.TXT jthread.dsw jthread.dsp jthread.vcproj jthread.sln \ + jthread_wce.sln jthread_wce.vcproj jthread_wce5.sln jthread_wce5.vcproj + +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/pkgconfig + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-libtool clean-recursive \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am + + +dist-hook: distclean + mv $(distdir)/jthread.dsw $(distdir)/jthread.dsw.tmp + mv $(distdir)/jthread.dsp $(distdir)/jthread.dsp.tmp + todos < $(distdir)/jthread.dsw.tmp > $(distdir)/jthread.dsw + todos < $(distdir)/jthread.dsp.tmp > $(distdir)/jthread.dsp + rm $(distdir)/jthread.dsw.tmp + rm $(distdir)/jthread.dsp.tmp + chmod a-x $(distdir)/jthread_wce.vcproj + chmod a-x $(distdir)/jthread_wce.sln + chmod a-x $(distdir)/jthread.vcproj + chmod a-x $(distdir)/jthread.sln +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/README.TXT b/jthread-1.2.1/README.TXT new file mode 100644 index 0000000..c4cb208 --- /dev/null +++ b/jthread-1.2.1/README.TXT @@ -0,0 +1,60 @@ + June 20, 2006 + + + Notes about JThread (v1.2.1) + + + +LIBRARY LOCATION AND CONTACT +============================ + +Normally, you should be able to download the latest version of the library +from this url: + http://research.edm.uhasselt.be/jori/jthread/jthread.html + +If you have questions about the library, you can mail me at: + jori.liesenborgs@gmail.com + + +DISCLAIMER & COPYRIGHT +====================== + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. + + +INSTALLATION NOTES +================== + +* To compile the library on a unix-like platform, just start the configure + script. + + This should generate a makefile which you can use to start building the + library using 'make'. + +* To compile the library on a MS-Windows platform using Visual C++, you can + use the project files included in the archive. + + IMPORTANT: As of version 1.2.0, you can choose between two mutex + implementations on the MS-Windows platform. By default, the + same implementation is used as in previous versions. However, + if you'd like the JMutex class to use a CRITICAL_SECTION + object rather than a mutex handle, you should uncomment the + JMUTEX_CRITICALSECTION define in jmutex.h before compiling + the library. + diff --git a/jthread-1.2.1/TODO b/jthread-1.2.1/TODO new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/jthread-1.2.1/TODO @@ -0,0 +1 @@ + diff --git a/jthread-1.2.1/aclocal.m4 b/jthread-1.2.1/aclocal.m4 new file mode 100644 index 0000000..0044e21 --- /dev/null +++ b/jthread-1.2.1/aclocal.m4 @@ -0,0 +1,6881 @@ +# generated automatically by aclocal 1.9.5 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided and an installed libltdl is not found, it is +# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_builddir and top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# --------------- +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC) + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + ;; + cxx) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDRT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)=$_LT_AC_TAGVAR(archive_cmds, $1) + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.5])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/jthread-1.2.1/config.guess b/jthread-1.2.1/config.guess new file mode 100644 index 0000000..51fab47 --- /dev/null +++ b/jthread-1.2.1/config.guess @@ -0,0 +1,1459 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2004-03-12' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amd64:OpenBSD:*:*) + echo x86_64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + cats:OpenBSD:*:*) + echo arm-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pegasos:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit 0 ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + # GNU/KFreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/jthread-1.2.1/config.sub b/jthread-1.2.1/config.sub new file mode 100644 index 0000000..ba33103 --- /dev/null +++ b/jthread-1.2.1/config.sub @@ -0,0 +1,1549 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2004-03-12' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/jthread-1.2.1/configure b/jthread-1.2.1/configure new file mode 100644 index 0000000..ff3d056 --- /dev/null +++ b/jthread-1.2.1/configure @@ -0,0 +1,20482 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="configure.in" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] + include additional configurations [automatic] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + +am__api_version="1.9" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=jthread + VERSION=1.2.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +if test "BLA$CXXFLAGS" = "BLA" ; then + CXXFLAGS="-O2 " +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 3657 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------------ ## +## Report this to the AC_PACKAGE_NAME lists. ## +## ------------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5236:" \ + "checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDRT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_static" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6305: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6309: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-static' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + solaris*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6560: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6564: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6620: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6624: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + archive_expsym_cmds=$archive_cmds + fi + else + ld_shlibs=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which librarie types wil actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-tags was given. +if test "${with_tags+set}" = set; then + withval="$with_tags" + tagnames="$withval" +fi; + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC) + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + ;; + cxx) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-static' + ;; + cxx) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11138: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11142: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11198: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11202: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + test "$enable_shared" = yes && enable_static=no + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-static' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + solaris*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13514: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13518: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13574: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13578: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + archive_expsym_cmds_F77=$archive_cmds_F77 + fi + else + ld_shlibs_F77=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15630: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15634: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case "$cc_basename" in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc | pgf77 | pgf90) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-static' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + solaris*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15885: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15889: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s conftest.err; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15945: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15949: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test ! -s out/conftest.err; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $CC,$host_cpu in + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + tmp_addflag=' -fpic' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ +cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +$echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + else + archive_expsym_cmds_GCJ=$archive_cmds_GCJ + fi + else + ld_shlibs_GCJ=no + fi + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case "$cc_basename" in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + + + ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile pkgconfig/Makefile pkgconfig/jthread.pc pkgconfig/jthread-uninstalled.pc" +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# 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 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "pkgconfig/Makefile" ) CONFIG_FILES="$CONFIG_FILES pkgconfig/Makefile" ;; + "pkgconfig/jthread.pc" ) CONFIG_FILES="$CONFIG_FILES pkgconfig/jthread.pc" ;; + "pkgconfig/jthread-uninstalled.pc" ) CONFIG_FILES="$CONFIG_FILES pkgconfig/jthread-uninstalled.pc" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # 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_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # 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" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`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 + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + diff --git a/jthread-1.2.1/configure.in b/jthread-1.2.1/configure.in new file mode 100644 index 0000000..a28f7d2 --- /dev/null +++ b/jthread-1.2.1/configure.in @@ -0,0 +1,28 @@ +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(jthread,1.2.1) + +if test "BLA$CXXFLAGS" = "BLA" ; then + dnl CXXFLAGS="-g -Werror -Wall" + CXXFLAGS="-O2 " +fi + +dnl --------------------------------------------------------------------------- +dnl Set language to C++ and do libtool stuff +dnl --------------------------------------------------------------------------- + +AC_LANG(C++) + +AM_PROG_LIBTOOL + +dnl --------------------------------------------------------------------------- +dnl Finish up... +dnl --------------------------------------------------------------------------- + +AC_OUTPUT(Makefile \ + src/Makefile \ + doc/Makefile \ + pkgconfig/Makefile \ + pkgconfig/jthread.pc \ + pkgconfig/jthread-uninstalled.pc \ + ) + diff --git a/jthread-1.2.1/depcomp b/jthread-1.2.1/depcomp new file mode 100644 index 0000000..25bdb18 --- /dev/null +++ b/jthread-1.2.1/depcomp @@ -0,0 +1,526 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2004-04-25.13 + +# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit 0 + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit 0 + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # Dependencies are output in .lo.d with libtool 1.4. + # They are output in .o.d with libtool 1.5. + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.o.d" + tmpdepfile3="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + tmpdepfile3="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + elif test -f "$tmpdepfile2"; then + tmpdepfile="$tmpdepfile2" + else + tmpdepfile="$tmpdepfile3" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/jthread-1.2.1/doc/.svn/all-wcprops b/jthread-1.2.1/doc/.svn/all-wcprops new file mode 100644 index 0000000..d0a3f98 --- /dev/null +++ b/jthread-1.2.1/doc/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/doc +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/doc/Makefile.in +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/doc/Makefile.am +END +manual.tex +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/doc/manual.tex +END diff --git a/jthread-1.2.1/doc/.svn/entries b/jthread-1.2.1/doc/.svn/entries new file mode 100644 index 0000000..2d94cbb --- /dev/null +++ b/jthread-1.2.1/doc/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/jthread-1.2.1/doc +http://svn.monitord.de + + + +2008-07-25T23:20:46.314897Z +329 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Makefile.in +file + + + + +2012-01-23T14:07:05.244491Z +72ff3b8e004d6d2d3c1925e1fd14a6d7 +2008-07-25T23:20:46.314897Z +329 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +8348 + +Makefile.am +file + + + + +2012-01-23T14:07:05.244491Z +bc8df2d1266c219488265a3ee014a7a4 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +24 + +manual.tex +file + + + + +2012-01-23T14:07:05.248507Z +f3287131f6670ba2c713ddefba6f3b42 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +5099 + diff --git a/jthread-1.2.1/doc/.svn/prop-base/Makefile.in.svn-base b/jthread-1.2.1/doc/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/doc/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/doc/.svn/text-base/Makefile.am.svn-base b/jthread-1.2.1/doc/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..89dda11 --- /dev/null +++ b/jthread-1.2.1/doc/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1 @@ +EXTRA_DIST = manual.tex diff --git a/jthread-1.2.1/doc/.svn/text-base/Makefile.in.svn-base b/jthread-1.2.1/doc/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..1b08ea4 --- /dev/null +++ b/jthread-1.2.1/doc/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,308 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = manual.tex +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/doc/.svn/text-base/manual.tex.svn-base b/jthread-1.2.1/doc/.svn/text-base/manual.tex.svn-base new file mode 100644 index 0000000..dc99ccc --- /dev/null +++ b/jthread-1.2.1/doc/.svn/text-base/manual.tex.svn-base @@ -0,0 +1,146 @@ +\documentclass[a4paper,12pt]{article} +\usepackage{listings} +\lstset{language=C++} +\lstset{tabsize=4} +\begin{document} + \title{JThread manual (v1.2.1)} + \author{Jori Liesenborgs\\ + {\tt jori.liesenborgs@gmail.com} } + \date{June 20, 2006} + \maketitle + + \section{Introduction} + + A lot of projects on which I'm working use threads. To be able to + use the same code on both unix and MS-Windows platforms, I decided + to write some simple wrapper classes for the existing thread functions + on those platforms. + + The JThread package is very simple: currently, it only contains three + classes, namely {\tt JThread}, {\tt JMutex} and {\tt JMutexAutoLock}. + As their names might + suggest, {\tt JThread} represents a thread and {\tt JMutex} a mutex. + The thread class only contains very basic functions, for example to + start or kill a thread. + + \section{Copyright \& disclaimer} + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + + \section{Usage} + + Here follows a description of the {\tt JThread}, {\tt JMutex} and + {\tt JMutexAutoLock} classes. + Note that functions with return type {\tt int} always return a value of zero + or more on success and a negative value in case something went wrong. + + \subsection{{\tt JMutex}} + + The class definition of {\tt JMutex} is shown below. Before you can use an + instance of this type, you must first call the {\tt Init} function. You can + check if the mutex was already initialized by checking the return value + of {\tt IsInitialized}. After the initialization, the mutex can be locked + and unlocked by calling the functions {\tt Lock} and {\tt Unlock} respectively. + +\begin{lstlisting}[frame=tb]{} +class JMutex +{ +public: + JMutex(); + ~JMutex(); + int Init(); + int Lock(); + int Unlock(); + bool IsInitialized(); +}; +\end{lstlisting} + + \subsection{{\tt JMutexAutoLock}} + + The class definition of {\tt JMutexAutoLock} is shown below. It is meant + to make it easier to implement thread-safe functions, without having to + worry about when to unlock a mutex. + +\begin{lstlisting}[frame=tb]{} +class JMutexAutoLock +{ +public: + JMutexAutoLock(JMutex &m); + ~JMutexAutoLock(); +}; +\end{lstlisting} + + The code below illustrates the way this class can be used: + +\begin{lstlisting}[frame=tb]{} +void MyClass::MyFunction() +{ + JMutexAutoLock autoLock(m_myMutex); + + // Do operations protected by mutex 'm_myMutex' here +} +\end{lstlisting} + + When the {\tt autoLock} variable is created, it automatically locks the + mutex {\tt m\_myMutex} specified in the constructor. The destructor of + the {\tt autoLock} variable makes sure the lock is released again. + + \subsection{{\tt JThread}} + + To create your own thread, you have to derive a class from {\tt JThread}, + which is depicted below. In your derived class, you have to implement + a member function {\tt Thread}, which will be executed in the new thread. + Your own {\tt Thread} implementation should call {\tt ThreadStarted} + immediately. + + To start your thread, you simply have to call the {\tt Start} function. + This function finishes when your own {\tt Thread} function has called + {\tt ThreadStarted}. This way, when the {\tt Start} function + finishes, you can be really sure that your own {\tt Thread} implementation + is really running. + + You can check if the thread is still running by calling {\tt IsRunning}. + If the thread has finished, you can check its return value by calling + {\tt GetReturnValue}. Finally, in case your thread gets stuck, you can + end it by using the {\tt Kill} function. + + You should be careful with this {\tt Kill} function: if you call it when + the thread is working with a mutex (for example an internal mutex), this + mutex can be left in a locked state, which in turn can cause another thread + to block. You should only use the {\tt Kill} function when you're absolutely + sure that the thread is stuck in some loop and cannot be ended otherwise. + +\begin{lstlisting}[frame=tb]{} +class JThread +{ +public: + JThread(); + virtual ~JThread(); + int Start(); + int Kill(); + virtual void *Thread() = 0; + bool IsRunning(); + void *GetReturnValue(); +protected: + void ThreadStarted(); +}; +\end{lstlisting} + +\end{document} + diff --git a/jthread-1.2.1/doc/Makefile.am b/jthread-1.2.1/doc/Makefile.am new file mode 100644 index 0000000..89dda11 --- /dev/null +++ b/jthread-1.2.1/doc/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = manual.tex diff --git a/jthread-1.2.1/doc/Makefile.in b/jthread-1.2.1/doc/Makefile.in new file mode 100644 index 0000000..1b08ea4 --- /dev/null +++ b/jthread-1.2.1/doc/Makefile.in @@ -0,0 +1,308 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +EXTRA_DIST = manual.tex +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/doc/manual.tex b/jthread-1.2.1/doc/manual.tex new file mode 100644 index 0000000..dc99ccc --- /dev/null +++ b/jthread-1.2.1/doc/manual.tex @@ -0,0 +1,146 @@ +\documentclass[a4paper,12pt]{article} +\usepackage{listings} +\lstset{language=C++} +\lstset{tabsize=4} +\begin{document} + \title{JThread manual (v1.2.1)} + \author{Jori Liesenborgs\\ + {\tt jori.liesenborgs@gmail.com} } + \date{June 20, 2006} + \maketitle + + \section{Introduction} + + A lot of projects on which I'm working use threads. To be able to + use the same code on both unix and MS-Windows platforms, I decided + to write some simple wrapper classes for the existing thread functions + on those platforms. + + The JThread package is very simple: currently, it only contains three + classes, namely {\tt JThread}, {\tt JMutex} and {\tt JMutexAutoLock}. + As their names might + suggest, {\tt JThread} represents a thread and {\tt JMutex} a mutex. + The thread class only contains very basic functions, for example to + start or kill a thread. + + \section{Copyright \& disclaimer} + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + + \section{Usage} + + Here follows a description of the {\tt JThread}, {\tt JMutex} and + {\tt JMutexAutoLock} classes. + Note that functions with return type {\tt int} always return a value of zero + or more on success and a negative value in case something went wrong. + + \subsection{{\tt JMutex}} + + The class definition of {\tt JMutex} is shown below. Before you can use an + instance of this type, you must first call the {\tt Init} function. You can + check if the mutex was already initialized by checking the return value + of {\tt IsInitialized}. After the initialization, the mutex can be locked + and unlocked by calling the functions {\tt Lock} and {\tt Unlock} respectively. + +\begin{lstlisting}[frame=tb]{} +class JMutex +{ +public: + JMutex(); + ~JMutex(); + int Init(); + int Lock(); + int Unlock(); + bool IsInitialized(); +}; +\end{lstlisting} + + \subsection{{\tt JMutexAutoLock}} + + The class definition of {\tt JMutexAutoLock} is shown below. It is meant + to make it easier to implement thread-safe functions, without having to + worry about when to unlock a mutex. + +\begin{lstlisting}[frame=tb]{} +class JMutexAutoLock +{ +public: + JMutexAutoLock(JMutex &m); + ~JMutexAutoLock(); +}; +\end{lstlisting} + + The code below illustrates the way this class can be used: + +\begin{lstlisting}[frame=tb]{} +void MyClass::MyFunction() +{ + JMutexAutoLock autoLock(m_myMutex); + + // Do operations protected by mutex 'm_myMutex' here +} +\end{lstlisting} + + When the {\tt autoLock} variable is created, it automatically locks the + mutex {\tt m\_myMutex} specified in the constructor. The destructor of + the {\tt autoLock} variable makes sure the lock is released again. + + \subsection{{\tt JThread}} + + To create your own thread, you have to derive a class from {\tt JThread}, + which is depicted below. In your derived class, you have to implement + a member function {\tt Thread}, which will be executed in the new thread. + Your own {\tt Thread} implementation should call {\tt ThreadStarted} + immediately. + + To start your thread, you simply have to call the {\tt Start} function. + This function finishes when your own {\tt Thread} function has called + {\tt ThreadStarted}. This way, when the {\tt Start} function + finishes, you can be really sure that your own {\tt Thread} implementation + is really running. + + You can check if the thread is still running by calling {\tt IsRunning}. + If the thread has finished, you can check its return value by calling + {\tt GetReturnValue}. Finally, in case your thread gets stuck, you can + end it by using the {\tt Kill} function. + + You should be careful with this {\tt Kill} function: if you call it when + the thread is working with a mutex (for example an internal mutex), this + mutex can be left in a locked state, which in turn can cause another thread + to block. You should only use the {\tt Kill} function when you're absolutely + sure that the thread is stuck in some loop and cannot be ended otherwise. + +\begin{lstlisting}[frame=tb]{} +class JThread +{ +public: + JThread(); + virtual ~JThread(); + int Start(); + int Kill(); + virtual void *Thread() = 0; + bool IsRunning(); + void *GetReturnValue(); +protected: + void ThreadStarted(); +}; +\end{lstlisting} + +\end{document} + diff --git a/jthread-1.2.1/install-sh b/jthread-1.2.1/install-sh new file mode 100644 index 0000000..e4160c9 --- /dev/null +++ b/jthread-1.2.1/install-sh @@ -0,0 +1,325 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2004-04-01.17 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename= +transform_arg= +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= + +usage="Usage: $0 [OPTION]... SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 -d DIRECTORIES... + +In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. +In the second, create the directory path DIR. + +Options: +-b=TRANSFORMBASENAME +-c copy source (using $cpprog) instead of moving (using $mvprog). +-d create directories instead of installing files. +-g GROUP $chgrp installed files to GROUP. +-m MODE $chmod installed files to MODE. +-o USER $chown installed files to USER. +-s strip installed files (using $stripprog). +-t=TRANSFORM +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit 0;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + --version) echo "$0 $scriptversion"; exit 0;; + + *) # When -d is used, all remaining arguments are directories to create. + test -n "$dir_arg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + instcmd=: + chmodcmd= + else + instcmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$instcmd $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" || lasterr=$? + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; } + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $instcmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + # If we're going to rename the final executable, determine the name now. + if test -z "$transformarg"; then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename \ + | sed $transformarg`$transformbasename + fi + + # don't allow the sed command to completely eliminate the filename. + test -z "$dstfile" && dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Move or copy the file name to the temp name + $doit $instcmd "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $instcmd $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/jthread-1.2.1/jthread.dsp b/jthread-1.2.1/jthread.dsp new file mode 100644 index 0000000..cebda65 --- /dev/null +++ b/jthread-1.2.1/jthread.dsp @@ -0,0 +1,112 @@ +# Microsoft Developer Studio Project File - Name="jthread" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=jthread - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "jthread.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "jthread.mak" CFG="jthread - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "jthread - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "jthread - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "jthread - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I ".\src" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "jthread - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".\src" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "jthread - Win32 Release" +# Name "jthread - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\src\win32\jmutex.cpp +# End Source File +# Begin Source File + +SOURCE=.\src\win32\jthread.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\src\jmutex.h +# End Source File +# Begin Source File + +SOURCE=.\src\jmutexautolock.h +# End Source File +# Begin Source File + +SOURCE=.\src\jthread.h +# End Source File +# End Group +# End Target +# End Project diff --git a/jthread-1.2.1/jthread.dsw b/jthread-1.2.1/jthread.dsw new file mode 100644 index 0000000..af0f8cc --- /dev/null +++ b/jthread-1.2.1/jthread.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "jthread"=.\jthread.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/jthread-1.2.1/jthread.ncb b/jthread-1.2.1/jthread.ncb new file mode 100644 index 0000000..26b5a77 --- /dev/null +++ b/jthread-1.2.1/jthread.ncb Binary files differ diff --git a/jthread-1.2.1/jthread.sln b/jthread-1.2.1/jthread.sln new file mode 100644 index 0000000..716074f --- /dev/null +++ b/jthread-1.2.1/jthread.sln @@ -0,0 +1,21 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jthread", "jthread.vcproj", "{EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Debug.ActiveCfg = Debug|Win32 + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Debug.Build.0 = Debug|Win32 + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Release.ActiveCfg = Release|Win32 + {EB9BF42C-305F-4F1E-9A05-DF3498F7BD90}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/jthread-1.2.1/jthread.suo b/jthread-1.2.1/jthread.suo new file mode 100644 index 0000000..a97cff2 --- /dev/null +++ b/jthread-1.2.1/jthread.suo Binary files differ diff --git a/jthread-1.2.1/jthread.vcproj b/jthread-1.2.1/jthread.vcproj new file mode 100644 index 0000000..ddbe15f --- /dev/null +++ b/jthread-1.2.1/jthread.vcproj @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jthread-1.2.1/jthread_wce.sln b/jthread-1.2.1/jthread_wce.sln new file mode 100644 index 0000000..693e2d9 --- /dev/null +++ b/jthread-1.2.1/jthread_wce.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jthread_wce", "jthread_wce.vcproj", "{97019D39-C7F4-4F37-B2F3-88C313445A3B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Pocket PC 2003 (ARMV4) = Debug|Pocket PC 2003 (ARMV4) + Release|Pocket PC 2003 (ARMV4) = Release|Pocket PC 2003 (ARMV4) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Debug|Pocket PC 2003 (ARMV4).ActiveCfg = Debug|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Debug|Pocket PC 2003 (ARMV4).Build.0 = Debug|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Debug|Pocket PC 2003 (ARMV4).Deploy.0 = Debug|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Release|Pocket PC 2003 (ARMV4).ActiveCfg = Release|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Release|Pocket PC 2003 (ARMV4).Build.0 = Release|Pocket PC 2003 (ARMV4) + {97019D39-C7F4-4F37-B2F3-88C313445A3B}.Release|Pocket PC 2003 (ARMV4).Deploy.0 = Release|Pocket PC 2003 (ARMV4) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/jthread-1.2.1/jthread_wce.vcproj b/jthread-1.2.1/jthread_wce.vcproj new file mode 100644 index 0000000..9b31d06 --- /dev/null +++ b/jthread-1.2.1/jthread_wce.vcproj @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jthread-1.2.1/jthread_wce5.sln b/jthread-1.2.1/jthread_wce5.sln new file mode 100644 index 0000000..7c76c3f --- /dev/null +++ b/jthread-1.2.1/jthread_wce5.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jthread_wce5", "jthread_wce5.vcproj", "{B3F17D43-8427-438F-BEB1-EF5DB36295DA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + {B3F17D43-8427-438F-BEB1-EF5DB36295DA}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/jthread-1.2.1/jthread_wce5.vcproj b/jthread-1.2.1/jthread_wce5.vcproj new file mode 100644 index 0000000..a651871 --- /dev/null +++ b/jthread-1.2.1/jthread_wce5.vcproj @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jthread-1.2.1/ltmain.sh b/jthread-1.2.1/ltmain.sh new file mode 100755 index 0000000..70f0b2d --- /dev/null +++ b/jthread-1.2.1/ltmain.sh @@ -0,0 +1,6422 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.6 +TIMESTAMP=" (1.1220.2.94 2004/04/10 16:27:27)" + + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () { + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () { + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2003 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $EXIT_SUCCESS + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $EXIT_SUCCESS + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $EXIT_SUCCESS + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) prevopt="--tag" prev=tag ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case "$arg_mode" in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit $EXIT_FAILURE + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # gcc -m* arguments should be passed to the linker via $compiler_flags + # in order to pass architecture information to the linker + # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo + # but this is not reliable with gcc because gcc may use -mfoo to + # select a different linker, different libraries, etc, while + # -Wl,-mfoo simply passes -mfoo to the linker. + -m*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + if test "$deplibs_check_method" != pass_all; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5* ) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$deplibs $path" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$save_output-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$save_output-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$save_output-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadale object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + cwrappersource=`$echo ${objdir}/lt-${output}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +#define DIR_SEPARATOR '/' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +#define HAVE_DOS_BASED_FILE_SYSTEM +#ifndef DIR_SEPARATOR_2 +#define DIR_SEPARATOR_2 '\\' +#endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "$mkdir $xdir" + $run $mkdir "$xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$xdir"; then + exit $status + fi + # We will extract separately just the conflicting names and we will no + # longer touch any unique names. It is faster to leave these extract + # automatically by $AR in one run. + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 + $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 + $AR t "$xabs" | sort | uniq -cd | while read -r count name + do + i=1 + while test "$i" -le "$count" + do + # Put our $i before any first dot (extension) + # Never overwrite any file + name_to="$name" + while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" + do + name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` + done + $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" + $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? + i=`expr $i + 1` + done + done + fi + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + # GNU ar 2.10+ was changed to match POSIX; thus no paths are + # encoded into archives. This makes 'ar r' malfunction in + # this piecewise linking case whenever conflicting object + # names appear in distinct ar calls; check, warn and compensate. + if (for obj in $save_oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 + $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 + AR_FLAGS=cq + fi + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask + else + umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "----------------------------------------------------------------------" + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "----------------------------------------------------------------------" + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $EXIT_SUCCESS + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/jthread-1.2.1/missing b/jthread-1.2.1/missing new file mode 100644 index 0000000..e7ef83a --- /dev/null +++ b/jthread-1.2.1/missing @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2003-09-02.23 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/jthread-1.2.1/pkgconfig/.svn/all-wcprops b/jthread-1.2.1/pkgconfig/.svn/all-wcprops new file mode 100644 index 0000000..decd448 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/pkgconfig +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/pkgconfig/Makefile.in +END +jthread-uninstalled.pc.in +K 25 +svn:wc:ra_dav:version-url +V 77 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/pkgconfig/jthread-uninstalled.pc.in +END +jthread.pc.in +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/pkgconfig/jthread.pc.in +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/pkgconfig/Makefile.am +END diff --git a/jthread-1.2.1/pkgconfig/.svn/entries b/jthread-1.2.1/pkgconfig/.svn/entries new file mode 100644 index 0000000..c9cd9f0 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/jthread-1.2.1/pkgconfig +http://svn.monitord.de + + + +2008-07-25T23:20:46.314897Z +329 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Makefile.in +file + + + + +2012-01-23T14:07:05.258491Z +84ecaf217b91ae8bc78f9d0324a3df57 +2008-07-25T23:20:46.314897Z +329 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +10326 + +jthread-uninstalled.pc.in +file + + + + +2012-01-23T14:07:05.258491Z +404e0b270b4aea6436d7bcbb802cc112 +2008-07-25T23:20:46.314897Z +329 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +335 + +jthread.pc.in +file + + + + +2012-01-23T14:07:05.259491Z +9fa9c2278d9d21382c822669c08d3c7d +2008-07-25T23:20:46.314897Z +329 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +236 + +Makefile.am +file + + + + +2012-01-23T14:07:05.259491Z +53dec471aa75d85b6eb6680f89544d46 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +367 + diff --git a/jthread-1.2.1/pkgconfig/.svn/prop-base/Makefile.in.svn-base b/jthread-1.2.1/pkgconfig/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/pkgconfig/.svn/prop-base/jthread-uninstalled.pc.in.svn-base b/jthread-1.2.1/pkgconfig/.svn/prop-base/jthread-uninstalled.pc.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/prop-base/jthread-uninstalled.pc.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/pkgconfig/.svn/prop-base/jthread.pc.in.svn-base b/jthread-1.2.1/pkgconfig/.svn/prop-base/jthread.pc.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/prop-base/jthread.pc.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/pkgconfig/.svn/text-base/Makefile.am.svn-base b/jthread-1.2.1/pkgconfig/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..d61d4a6 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,17 @@ +### all of the standard pc files we need to generate +pcfiles = \ + jthread.pc + +pcfiles_uninstalled = \ + jthread-uninstalled.pc + +all-local: $(pcfiles) $(pcfiles_uninstalled) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = $(pcfiles) + +EXTRA_DIST = \ + jthread.pc.in \ + jthread-uninstalled.pc.in + +CLEANFILES = $(pcfiles) $(pcfiles_uninstalled) diff --git a/jthread-1.2.1/pkgconfig/.svn/text-base/Makefile.in.svn-base b/jthread-1.2.1/pkgconfig/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..185d6ae --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,361 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pkgconfig +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/jthread-uninstalled.pc.in $(srcdir)/jthread.pc.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = jthread.pc jthread-uninstalled.pc +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgconfig_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +### all of the standard pc files we need to generate +pcfiles = \ + jthread.pc + +pcfiles_uninstalled = \ + jthread-uninstalled.pc + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = $(pcfiles) +EXTRA_DIST = \ + jthread.pc.in \ + jthread-uninstalled.pc.in + +CLEANFILES = $(pcfiles) $(pcfiles_uninstalled) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pkgconfig/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pkgconfig/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +jthread.pc: $(top_builddir)/config.status $(srcdir)/jthread.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +jthread-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/jthread-uninstalled.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) all-local +installdirs: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pkgconfigDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pkgconfigDATA + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-pkgconfigDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am uninstall-pkgconfigDATA + + +all-local: $(pcfiles) $(pcfiles_uninstalled) +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/pkgconfig/.svn/text-base/jthread-uninstalled.pc.in.svn-base b/jthread-1.2.1/pkgconfig/.svn/text-base/jthread-uninstalled.pc.in.svn-base new file mode 100644 index 0000000..d29d55b --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/text-base/jthread-uninstalled.pc.in.svn-base @@ -0,0 +1,12 @@ +# the standard variables don't make sense for an uninstalled copy +prefix= +exec_prefix= +libdir=${pcfiledir}/.. +includedir=${pcfiledir}/.. + +Name: Jthread Uninstalled +Description: Multi-platform thread/mutex library, Not Installed +Version: @VERSION@ +Requires: +Libs: ${libdir}/src/libjthread.la +Cflags: -I${includedir} -I${includedir}/src diff --git a/jthread-1.2.1/pkgconfig/.svn/text-base/jthread.pc.in.svn-base b/jthread-1.2.1/pkgconfig/.svn/text-base/jthread.pc.in.svn-base new file mode 100644 index 0000000..e237076 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/.svn/text-base/jthread.pc.in.svn-base @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@/jthread + +Name: Jthread +Description: Multi-platform thread/mutex library +Requires: +Version: @VERSION@ +Libs: -L${libdir} -ljthread +Cflags: -I${includedir} diff --git a/jthread-1.2.1/pkgconfig/Makefile.am b/jthread-1.2.1/pkgconfig/Makefile.am new file mode 100644 index 0000000..d61d4a6 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/Makefile.am @@ -0,0 +1,17 @@ +### all of the standard pc files we need to generate +pcfiles = \ + jthread.pc + +pcfiles_uninstalled = \ + jthread-uninstalled.pc + +all-local: $(pcfiles) $(pcfiles_uninstalled) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = $(pcfiles) + +EXTRA_DIST = \ + jthread.pc.in \ + jthread-uninstalled.pc.in + +CLEANFILES = $(pcfiles) $(pcfiles_uninstalled) diff --git a/jthread-1.2.1/pkgconfig/Makefile.in b/jthread-1.2.1/pkgconfig/Makefile.in new file mode 100644 index 0000000..185d6ae --- /dev/null +++ b/jthread-1.2.1/pkgconfig/Makefile.in @@ -0,0 +1,361 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = pkgconfig +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/jthread-uninstalled.pc.in $(srcdir)/jthread.pc.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = jthread.pc jthread-uninstalled.pc +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgconfig_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +### all of the standard pc files we need to generate +pcfiles = \ + jthread.pc + +pcfiles_uninstalled = \ + jthread-uninstalled.pc + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = $(pcfiles) +EXTRA_DIST = \ + jthread.pc.in \ + jthread-uninstalled.pc.in + +CLEANFILES = $(pcfiles) $(pcfiles_uninstalled) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign pkgconfig/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign pkgconfig/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +jthread.pc: $(top_builddir)/config.status $(srcdir)/jthread.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +jthread-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/jthread-uninstalled.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) all-local +installdirs: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pkgconfigDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pkgconfigDATA + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-pkgconfigDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am uninstall-pkgconfigDATA + + +all-local: $(pcfiles) $(pcfiles_uninstalled) +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/pkgconfig/jthread-uninstalled.pc.in b/jthread-1.2.1/pkgconfig/jthread-uninstalled.pc.in new file mode 100644 index 0000000..d29d55b --- /dev/null +++ b/jthread-1.2.1/pkgconfig/jthread-uninstalled.pc.in @@ -0,0 +1,12 @@ +# the standard variables don't make sense for an uninstalled copy +prefix= +exec_prefix= +libdir=${pcfiledir}/.. +includedir=${pcfiledir}/.. + +Name: Jthread Uninstalled +Description: Multi-platform thread/mutex library, Not Installed +Version: @VERSION@ +Requires: +Libs: ${libdir}/src/libjthread.la +Cflags: -I${includedir} -I${includedir}/src diff --git a/jthread-1.2.1/pkgconfig/jthread.pc.in b/jthread-1.2.1/pkgconfig/jthread.pc.in new file mode 100644 index 0000000..e237076 --- /dev/null +++ b/jthread-1.2.1/pkgconfig/jthread.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@/jthread + +Name: Jthread +Description: Multi-platform thread/mutex library +Requires: +Version: @VERSION@ +Libs: -L${libdir} -ljthread +Cflags: -I${includedir} diff --git a/jthread-1.2.1/src/.svn/all-wcprops b/jthread-1.2.1/src/.svn/all-wcprops new file mode 100644 index 0000000..33faccc --- /dev/null +++ b/jthread-1.2.1/src/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/src +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/329/monitor/trunk/jthread-1.2.1/src/Makefile.in +END +jmutex.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/src/jmutex.h +END +jmutexautolock.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/src/jmutexautolock.h +END +jthread.h +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/jthread-1.2.1/src/jthread.h +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/src/Makefile.am +END diff --git a/jthread-1.2.1/src/.svn/entries b/jthread-1.2.1/src/.svn/entries new file mode 100644 index 0000000..91f5b71 --- /dev/null +++ b/jthread-1.2.1/src/.svn/entries @@ -0,0 +1,204 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/jthread-1.2.1/src +http://svn.monitord.de + + + +2008-07-25T23:20:46.314897Z +329 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +win32 +dir + +Makefile.in +file + + + + +2012-01-23T14:07:05.212496Z +9346391c6674737931b179541385cf1e +2008-07-25T23:20:46.314897Z +329 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +17425 + +jmutex.h +file + + + + +2012-01-23T14:07:05.213491Z +fcd311e8636113a8ab4fd4f511d0e831 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2144 + +jmutexautolock.h +file + + + + +2012-01-23T14:07:05.213491Z +d12454a8548249311c85e08300f67d63 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1580 + +pthread +dir + +jthread.h +file + + + + +2012-01-23T14:07:05.213491Z +d3600ed7eaedecf9af36adae54e10951 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2265 + +Makefile.am +file + + + + +2012-01-23T14:07:05.214491Z +e767b25240980ef477ae0833922eea50 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +286 + diff --git a/jthread-1.2.1/src/.svn/prop-base/Makefile.in.svn-base b/jthread-1.2.1/src/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/src/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/src/.svn/prop-base/jmutex.h.svn-base b/jthread-1.2.1/src/.svn/prop-base/jmutex.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/src/.svn/prop-base/jmutex.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/src/.svn/prop-base/jmutexautolock.h.svn-base b/jthread-1.2.1/src/.svn/prop-base/jmutexautolock.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/src/.svn/prop-base/jmutexautolock.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/src/.svn/prop-base/jthread.h.svn-base b/jthread-1.2.1/src/.svn/prop-base/jthread.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/jthread-1.2.1/src/.svn/prop-base/jthread.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/jthread-1.2.1/src/.svn/text-base/Makefile.am.svn-base b/jthread-1.2.1/src/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..5273fd9 --- /dev/null +++ b/jthread-1.2.1/src/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,7 @@ +lib_LTLIBRARIES = libjthread.la +libjthread_la_SOURCES = pthread/jmutex.cpp pthread/jthread.cpp +libjthread_la_LDFLAGS = -release 1.2.1 +libjrtpinclude_HEADERS = jmutex.h jthread.h jmutexautolock.h +libjrtpincludedir = ${includedir}/jthread +EXTRA_DIST = win32/jthread.cpp win32/jmutex.cpp + diff --git a/jthread-1.2.1/src/.svn/text-base/Makefile.in.svn-base b/jthread-1.2.1/src/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..f5d24fb --- /dev/null +++ b/jthread-1.2.1/src/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,493 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +SOURCES = $(libjthread_la_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src +DIST_COMMON = $(libjrtpinclude_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" \ + "$(DESTDIR)$(libjrtpincludedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libjthread_la_LIBADD = +am_libjthread_la_OBJECTS = jmutex.lo jthread.lo +libjthread_la_OBJECTS = $(am_libjthread_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libjthread_la_SOURCES) +DIST_SOURCES = $(libjthread_la_SOURCES) +libjrtpincludeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(libjrtpinclude_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +lib_LTLIBRARIES = libjthread.la +libjthread_la_SOURCES = pthread/jmutex.cpp pthread/jthread.cpp +libjthread_la_LDFLAGS = -release 1.2.1 +libjrtpinclude_HEADERS = jmutex.h jthread.h jmutexautolock.h +libjrtpincludedir = ${includedir}/jthread +EXTRA_DIST = win32/jthread.cpp win32/jmutex.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libjthread.la: $(libjthread_la_OBJECTS) $(libjthread_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libjthread_la_LDFLAGS) $(libjthread_la_OBJECTS) $(libjthread_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jmutex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jthread.Plo@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +jmutex.lo: pthread/jmutex.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jmutex.lo -MD -MP -MF "$(DEPDIR)/jmutex.Tpo" -c -o jmutex.lo `test -f 'pthread/jmutex.cpp' || echo '$(srcdir)/'`pthread/jmutex.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/jmutex.Tpo" "$(DEPDIR)/jmutex.Plo"; else rm -f "$(DEPDIR)/jmutex.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pthread/jmutex.cpp' object='jmutex.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jmutex.lo `test -f 'pthread/jmutex.cpp' || echo '$(srcdir)/'`pthread/jmutex.cpp + +jthread.lo: pthread/jthread.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread.lo -MD -MP -MF "$(DEPDIR)/jthread.Tpo" -c -o jthread.lo `test -f 'pthread/jthread.cpp' || echo '$(srcdir)/'`pthread/jthread.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/jthread.Tpo" "$(DEPDIR)/jthread.Plo"; else rm -f "$(DEPDIR)/jthread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pthread/jthread.cpp' object='jthread.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread.lo `test -f 'pthread/jthread.cpp' || echo '$(srcdir)/'`pthread/jthread.cpp + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-libjrtpincludeHEADERS: $(libjrtpinclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(libjrtpincludedir)" || $(mkdir_p) "$(DESTDIR)$(libjrtpincludedir)" + @list='$(libjrtpinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(libjrtpincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libjrtpincludedir)/$$f'"; \ + $(libjrtpincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libjrtpincludedir)/$$f"; \ + done + +uninstall-libjrtpincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libjrtpinclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libjrtpincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(libjrtpincludedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/win32 + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libjrtpincludedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-libjrtpincludeHEADERS + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libjrtpincludeHEADERS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-libjrtpincludeHEADERS \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libjrtpincludeHEADERS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/src/.svn/text-base/jmutex.h.svn-base b/jthread-1.2.1/src/.svn/text-base/jmutex.h.svn-base new file mode 100644 index 0000000..94371d2 --- /dev/null +++ b/jthread-1.2.1/src/.svn/text-base/jmutex.h.svn-base @@ -0,0 +1,70 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#ifndef JMUTEX_H + +#define JMUTEX_H + +#if (defined(WIN32) || defined(_WIN32_WCE)) + #ifndef _WIN32_WCE + #include + #endif // _WIN32_WCE + #include + #include + + //#define JMUTEX_CRITICALSECTION +#else // using pthread + #include +#endif // WIN32 + +#define ERR_JMUTEX_ALREADYINIT -1 +#define ERR_JMUTEX_NOTINIT -2 +#define ERR_JMUTEX_CANTCREATEMUTEX -3 + +class JMutex +{ +public: + JMutex(); + ~JMutex(); + int Init(); + int Lock(); + int Unlock(); + bool IsInitialized() { return initialized; } +private: +#if (defined(WIN32) || defined(_WIN32_WCE)) +#ifdef JMUTEX_CRITICALSECTION + CRITICAL_SECTION mutex; +#else // Use standard mutex + HANDLE mutex; +#endif // JMUTEX_CRITICALSECTION +#else // pthread mutex + pthread_mutex_t mutex; +#endif // WIN32 + bool initialized; +}; + +#endif // JMUTEX_H diff --git a/jthread-1.2.1/src/.svn/text-base/jmutexautolock.h.svn-base b/jthread-1.2.1/src/.svn/text-base/jmutexautolock.h.svn-base new file mode 100644 index 0000000..6020a5c --- /dev/null +++ b/jthread-1.2.1/src/.svn/text-base/jmutexautolock.h.svn-base @@ -0,0 +1,43 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#ifndef JMUTEXAUTOLOCK_H + +#define JMUTEXAUTOLOCK_H + +#include "jmutex.h" + +class JMutexAutoLock +{ +public: + JMutexAutoLock(JMutex &m) : mutex(m) { mutex.Lock(); } + ~JMutexAutoLock() { mutex.Unlock(); } +private: + JMutex &mutex; +}; + +#endif // JMUTEXAUTOLOCK_H diff --git a/jthread-1.2.1/src/.svn/text-base/jthread.h.svn-base b/jthread-1.2.1/src/.svn/text-base/jthread.h.svn-base new file mode 100644 index 0000000..9440a15 --- /dev/null +++ b/jthread-1.2.1/src/.svn/text-base/jthread.h.svn-base @@ -0,0 +1,77 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#ifndef JTHREAD_H + +#define JTHREAD_H + +#include "jmutex.h" + +#define ERR_JTHREAD_CANTINITMUTEX -1 +#define ERR_JTHREAD_CANTSTARTTHREAD -2 +#define ERR_JTHREAD_THREADFUNCNOTSET -3 +#define ERR_JTHREAD_NOTRUNNING -4 +#define ERR_JTHREAD_ALREADYRUNNING -5 + +class JThread +{ +public: + JThread(); + virtual ~JThread(); + int Start(); + int Kill(); + virtual void *Thread() = 0; + bool IsRunning(); + void *GetReturnValue(); +protected: + void ThreadStarted(); +private: + +#if (defined(WIN32) || defined(_WIN32_WCE)) +#ifdef _WIN32_WCE + DWORD threadid; + static DWORD WINAPI TheThread(void *param); +#else + static UINT __stdcall TheThread(void *param); + UINT threadid; +#endif // _WIN32_WCE + HANDLE threadhandle; +#else // pthread type threads + static void *TheThread(void *param); + + pthread_t threadid; +#endif // WIN32 + void *retval; + bool running; + + JMutex runningmutex; + JMutex continuemutex,continuemutex2; + bool mutexinit; +}; + +#endif // JTHREAD_H + diff --git a/jthread-1.2.1/src/Makefile.am b/jthread-1.2.1/src/Makefile.am new file mode 100644 index 0000000..5273fd9 --- /dev/null +++ b/jthread-1.2.1/src/Makefile.am @@ -0,0 +1,7 @@ +lib_LTLIBRARIES = libjthread.la +libjthread_la_SOURCES = pthread/jmutex.cpp pthread/jthread.cpp +libjthread_la_LDFLAGS = -release 1.2.1 +libjrtpinclude_HEADERS = jmutex.h jthread.h jmutexautolock.h +libjrtpincludedir = ${includedir}/jthread +EXTRA_DIST = win32/jthread.cpp win32/jmutex.cpp + diff --git a/jthread-1.2.1/src/Makefile.in b/jthread-1.2.1/src/Makefile.in new file mode 100644 index 0000000..f5d24fb --- /dev/null +++ b/jthread-1.2.1/src/Makefile.in @@ -0,0 +1,493 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +SOURCES = $(libjthread_la_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src +DIST_COMMON = $(libjrtpinclude_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" \ + "$(DESTDIR)$(libjrtpincludedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libjthread_la_LIBADD = +am_libjthread_la_OBJECTS = jmutex.lo jthread.lo +libjthread_la_OBJECTS = $(am_libjthread_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libjthread_la_SOURCES) +DIST_SOURCES = $(libjthread_la_SOURCES) +libjrtpincludeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(libjrtpinclude_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +lib_LTLIBRARIES = libjthread.la +libjthread_la_SOURCES = pthread/jmutex.cpp pthread/jthread.cpp +libjthread_la_LDFLAGS = -release 1.2.1 +libjrtpinclude_HEADERS = jmutex.h jthread.h jmutexautolock.h +libjrtpincludedir = ${includedir}/jthread +EXTRA_DIST = win32/jthread.cpp win32/jmutex.cpp +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libjthread.la: $(libjthread_la_OBJECTS) $(libjthread_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libjthread_la_LDFLAGS) $(libjthread_la_OBJECTS) $(libjthread_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jmutex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jthread.Plo@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +jmutex.lo: pthread/jmutex.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jmutex.lo -MD -MP -MF "$(DEPDIR)/jmutex.Tpo" -c -o jmutex.lo `test -f 'pthread/jmutex.cpp' || echo '$(srcdir)/'`pthread/jmutex.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/jmutex.Tpo" "$(DEPDIR)/jmutex.Plo"; else rm -f "$(DEPDIR)/jmutex.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pthread/jmutex.cpp' object='jmutex.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jmutex.lo `test -f 'pthread/jmutex.cpp' || echo '$(srcdir)/'`pthread/jmutex.cpp + +jthread.lo: pthread/jthread.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT jthread.lo -MD -MP -MF "$(DEPDIR)/jthread.Tpo" -c -o jthread.lo `test -f 'pthread/jthread.cpp' || echo '$(srcdir)/'`pthread/jthread.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/jthread.Tpo" "$(DEPDIR)/jthread.Plo"; else rm -f "$(DEPDIR)/jthread.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pthread/jthread.cpp' object='jthread.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o jthread.lo `test -f 'pthread/jthread.cpp' || echo '$(srcdir)/'`pthread/jthread.cpp + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-libjrtpincludeHEADERS: $(libjrtpinclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(libjrtpincludedir)" || $(mkdir_p) "$(DESTDIR)$(libjrtpincludedir)" + @list='$(libjrtpinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(libjrtpincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libjrtpincludedir)/$$f'"; \ + $(libjrtpincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libjrtpincludedir)/$$f"; \ + done + +uninstall-libjrtpincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libjrtpinclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libjrtpincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(libjrtpincludedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/win32 + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libjrtpincludedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-libjrtpincludeHEADERS + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libjrtpincludeHEADERS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-libjrtpincludeHEADERS \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libjrtpincludeHEADERS + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/jthread-1.2.1/src/jmutex.h b/jthread-1.2.1/src/jmutex.h new file mode 100644 index 0000000..94371d2 --- /dev/null +++ b/jthread-1.2.1/src/jmutex.h @@ -0,0 +1,70 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#ifndef JMUTEX_H + +#define JMUTEX_H + +#if (defined(WIN32) || defined(_WIN32_WCE)) + #ifndef _WIN32_WCE + #include + #endif // _WIN32_WCE + #include + #include + + //#define JMUTEX_CRITICALSECTION +#else // using pthread + #include +#endif // WIN32 + +#define ERR_JMUTEX_ALREADYINIT -1 +#define ERR_JMUTEX_NOTINIT -2 +#define ERR_JMUTEX_CANTCREATEMUTEX -3 + +class JMutex +{ +public: + JMutex(); + ~JMutex(); + int Init(); + int Lock(); + int Unlock(); + bool IsInitialized() { return initialized; } +private: +#if (defined(WIN32) || defined(_WIN32_WCE)) +#ifdef JMUTEX_CRITICALSECTION + CRITICAL_SECTION mutex; +#else // Use standard mutex + HANDLE mutex; +#endif // JMUTEX_CRITICALSECTION +#else // pthread mutex + pthread_mutex_t mutex; +#endif // WIN32 + bool initialized; +}; + +#endif // JMUTEX_H diff --git a/jthread-1.2.1/src/jmutexautolock.h b/jthread-1.2.1/src/jmutexautolock.h new file mode 100644 index 0000000..6020a5c --- /dev/null +++ b/jthread-1.2.1/src/jmutexautolock.h @@ -0,0 +1,43 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#ifndef JMUTEXAUTOLOCK_H + +#define JMUTEXAUTOLOCK_H + +#include "jmutex.h" + +class JMutexAutoLock +{ +public: + JMutexAutoLock(JMutex &m) : mutex(m) { mutex.Lock(); } + ~JMutexAutoLock() { mutex.Unlock(); } +private: + JMutex &mutex; +}; + +#endif // JMUTEXAUTOLOCK_H diff --git a/jthread-1.2.1/src/jthread.h b/jthread-1.2.1/src/jthread.h new file mode 100644 index 0000000..9440a15 --- /dev/null +++ b/jthread-1.2.1/src/jthread.h @@ -0,0 +1,77 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#ifndef JTHREAD_H + +#define JTHREAD_H + +#include "jmutex.h" + +#define ERR_JTHREAD_CANTINITMUTEX -1 +#define ERR_JTHREAD_CANTSTARTTHREAD -2 +#define ERR_JTHREAD_THREADFUNCNOTSET -3 +#define ERR_JTHREAD_NOTRUNNING -4 +#define ERR_JTHREAD_ALREADYRUNNING -5 + +class JThread +{ +public: + JThread(); + virtual ~JThread(); + int Start(); + int Kill(); + virtual void *Thread() = 0; + bool IsRunning(); + void *GetReturnValue(); +protected: + void ThreadStarted(); +private: + +#if (defined(WIN32) || defined(_WIN32_WCE)) +#ifdef _WIN32_WCE + DWORD threadid; + static DWORD WINAPI TheThread(void *param); +#else + static UINT __stdcall TheThread(void *param); + UINT threadid; +#endif // _WIN32_WCE + HANDLE threadhandle; +#else // pthread type threads + static void *TheThread(void *param); + + pthread_t threadid; +#endif // WIN32 + void *retval; + bool running; + + JMutex runningmutex; + JMutex continuemutex,continuemutex2; + bool mutexinit; +}; + +#endif // JTHREAD_H + diff --git a/jthread-1.2.1/src/pthread/.svn/all-wcprops b/jthread-1.2.1/src/pthread/.svn/all-wcprops new file mode 100644 index 0000000..6ee6387 --- /dev/null +++ b/jthread-1.2.1/src/pthread/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/209/monitor/trunk/jthread-1.2.1/src/pthread +END +jthread.cpp +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/src/pthread/jthread.cpp +END +jmutex.cpp +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/src/pthread/jmutex.cpp +END diff --git a/jthread-1.2.1/src/pthread/.svn/dir-prop-base b/jthread-1.2.1/src/pthread/.svn/dir-prop-base new file mode 100644 index 0000000..eefa0ac --- /dev/null +++ b/jthread-1.2.1/src/pthread/.svn/dir-prop-base @@ -0,0 +1,7 @@ +K 10 +svn:ignore +V 16 +.deps +.dirstamp + +END diff --git a/jthread-1.2.1/src/pthread/.svn/entries b/jthread-1.2.1/src/pthread/.svn/entries new file mode 100644 index 0000000..29476f5 --- /dev/null +++ b/jthread-1.2.1/src/pthread/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/jthread-1.2.1/src/pthread +http://svn.monitord.de + + + +2007-12-10T22:35:50.139365Z +209 +buebchen +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +jthread.cpp +file + + + + +2012-01-23T14:07:05.207484Z +d2b58c54ce260e421e1c847b492077ba +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +3737 + +jmutex.cpp +file + + + + +2012-01-23T14:07:05.207484Z +b11c3c82b3aa65bf4799028483bd2b28 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +1828 + diff --git a/jthread-1.2.1/src/pthread/.svn/text-base/jmutex.cpp.svn-base b/jthread-1.2.1/src/pthread/.svn/text-base/jmutex.cpp.svn-base new file mode 100644 index 0000000..6bc3ae5 --- /dev/null +++ b/jthread-1.2.1/src/pthread/.svn/text-base/jmutex.cpp.svn-base @@ -0,0 +1,67 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jmutex.h" + +JMutex::JMutex() +{ + initialized = false; +} + +JMutex::~JMutex() +{ + if (initialized) + pthread_mutex_destroy(&mutex); +} + +int JMutex::Init() +{ + if (initialized) + return ERR_JMUTEX_ALREADYINIT; + + pthread_mutex_init(&mutex,NULL); + initialized = true; + return 0; +} + +int JMutex::Lock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; + + pthread_mutex_lock(&mutex); + return 0; +} + +int JMutex::Unlock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; + + pthread_mutex_unlock(&mutex); + return 0; +} diff --git a/jthread-1.2.1/src/pthread/.svn/text-base/jthread.cpp.svn-base b/jthread-1.2.1/src/pthread/.svn/text-base/jthread.cpp.svn-base new file mode 100644 index 0000000..978cac2 --- /dev/null +++ b/jthread-1.2.1/src/pthread/.svn/text-base/jthread.cpp.svn-base @@ -0,0 +1,180 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jthread.h" +#include +#include +#include + +JThread::JThread() +{ + retval = NULL; + mutexinit = false; + running = false; +} + +JThread::~JThread() +{ + Kill(); +} + +int JThread::Start() +{ + int status; + + if (!mutexinit) + { + if (!runningmutex.IsInitialized()) + { + if (runningmutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex.IsInitialized()) + { + if (continuemutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex2.IsInitialized()) + { + if (continuemutex2.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + mutexinit = true; + } + + runningmutex.Lock(); + if (running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_ALREADYRUNNING; + } + runningmutex.Unlock(); + + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); + + continuemutex.Lock(); + status = pthread_create(&threadid,&attr,TheThread,this); + pthread_attr_destroy(&attr); + if (status != 0) + { + continuemutex.Unlock(); + return ERR_JTHREAD_CANTSTARTTHREAD; + } + + /* Wait until 'running' is set */ + + runningmutex.Lock(); + while (!running) + { + runningmutex.Unlock(); + + struct timespec req,rem; + + req.tv_sec = 0; + req.tv_nsec = 1000000; + nanosleep(&req,&rem); + + runningmutex.Lock(); + } + runningmutex.Unlock(); + + continuemutex.Unlock(); + + continuemutex2.Lock(); + continuemutex2.Unlock(); + return 0; +} + +int JThread::Kill() +{ + runningmutex.Lock(); + if (!running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_NOTRUNNING; + } + pthread_cancel(threadid); + running = false; + runningmutex.Unlock(); + return 0; +} + +bool JThread::IsRunning() +{ + bool r; + + runningmutex.Lock(); + r = running; + runningmutex.Unlock(); + return r; +} + +void *JThread::GetReturnValue() +{ + void *val; + + runningmutex.Lock(); + if (running) + val = NULL; + else + val = retval; + runningmutex.Unlock(); + return val; +} + +void *JThread::TheThread(void *param) +{ + JThread *jthread; + void *ret; + + jthread = (JThread *)param; + + jthread->continuemutex2.Lock(); + jthread->runningmutex.Lock(); + jthread->running = true; + jthread->runningmutex.Unlock(); + + jthread->continuemutex.Lock(); + jthread->continuemutex.Unlock(); + + ret = jthread->Thread(); + + jthread->runningmutex.Lock(); + jthread->running = false; + jthread->retval = ret; + jthread->runningmutex.Unlock(); + + return NULL; +} + +void JThread::ThreadStarted() +{ + continuemutex2.Unlock(); +} + diff --git a/jthread-1.2.1/src/pthread/jmutex.cpp b/jthread-1.2.1/src/pthread/jmutex.cpp new file mode 100644 index 0000000..6bc3ae5 --- /dev/null +++ b/jthread-1.2.1/src/pthread/jmutex.cpp @@ -0,0 +1,67 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jmutex.h" + +JMutex::JMutex() +{ + initialized = false; +} + +JMutex::~JMutex() +{ + if (initialized) + pthread_mutex_destroy(&mutex); +} + +int JMutex::Init() +{ + if (initialized) + return ERR_JMUTEX_ALREADYINIT; + + pthread_mutex_init(&mutex,NULL); + initialized = true; + return 0; +} + +int JMutex::Lock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; + + pthread_mutex_lock(&mutex); + return 0; +} + +int JMutex::Unlock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; + + pthread_mutex_unlock(&mutex); + return 0; +} diff --git a/jthread-1.2.1/src/pthread/jthread.cpp b/jthread-1.2.1/src/pthread/jthread.cpp new file mode 100644 index 0000000..978cac2 --- /dev/null +++ b/jthread-1.2.1/src/pthread/jthread.cpp @@ -0,0 +1,180 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jthread.h" +#include +#include +#include + +JThread::JThread() +{ + retval = NULL; + mutexinit = false; + running = false; +} + +JThread::~JThread() +{ + Kill(); +} + +int JThread::Start() +{ + int status; + + if (!mutexinit) + { + if (!runningmutex.IsInitialized()) + { + if (runningmutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex.IsInitialized()) + { + if (continuemutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex2.IsInitialized()) + { + if (continuemutex2.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + mutexinit = true; + } + + runningmutex.Lock(); + if (running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_ALREADYRUNNING; + } + runningmutex.Unlock(); + + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); + + continuemutex.Lock(); + status = pthread_create(&threadid,&attr,TheThread,this); + pthread_attr_destroy(&attr); + if (status != 0) + { + continuemutex.Unlock(); + return ERR_JTHREAD_CANTSTARTTHREAD; + } + + /* Wait until 'running' is set */ + + runningmutex.Lock(); + while (!running) + { + runningmutex.Unlock(); + + struct timespec req,rem; + + req.tv_sec = 0; + req.tv_nsec = 1000000; + nanosleep(&req,&rem); + + runningmutex.Lock(); + } + runningmutex.Unlock(); + + continuemutex.Unlock(); + + continuemutex2.Lock(); + continuemutex2.Unlock(); + return 0; +} + +int JThread::Kill() +{ + runningmutex.Lock(); + if (!running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_NOTRUNNING; + } + pthread_cancel(threadid); + running = false; + runningmutex.Unlock(); + return 0; +} + +bool JThread::IsRunning() +{ + bool r; + + runningmutex.Lock(); + r = running; + runningmutex.Unlock(); + return r; +} + +void *JThread::GetReturnValue() +{ + void *val; + + runningmutex.Lock(); + if (running) + val = NULL; + else + val = retval; + runningmutex.Unlock(); + return val; +} + +void *JThread::TheThread(void *param) +{ + JThread *jthread; + void *ret; + + jthread = (JThread *)param; + + jthread->continuemutex2.Lock(); + jthread->runningmutex.Lock(); + jthread->running = true; + jthread->runningmutex.Unlock(); + + jthread->continuemutex.Lock(); + jthread->continuemutex.Unlock(); + + ret = jthread->Thread(); + + jthread->runningmutex.Lock(); + jthread->running = false; + jthread->retval = ret; + jthread->runningmutex.Unlock(); + + return NULL; +} + +void JThread::ThreadStarted() +{ + continuemutex2.Unlock(); +} + diff --git a/jthread-1.2.1/src/win32/.svn/all-wcprops b/jthread-1.2.1/src/win32/.svn/all-wcprops new file mode 100644 index 0000000..d861fb0 --- /dev/null +++ b/jthread-1.2.1/src/win32/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/224/monitor/trunk/jthread-1.2.1/src/win32 +END +jthread.cpp +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/src/win32/jthread.cpp +END +jmutex.cpp +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/173/monitor/trunk/jthread-1.2.1/src/win32/jmutex.cpp +END diff --git a/jthread-1.2.1/src/win32/.svn/dir-prop-base b/jthread-1.2.1/src/win32/.svn/dir-prop-base new file mode 100644 index 0000000..56a1490 --- /dev/null +++ b/jthread-1.2.1/src/win32/.svn/dir-prop-base @@ -0,0 +1,8 @@ +K 10 +svn:ignore +V 25 +.deps +.dirstamp +.libs + +END diff --git a/jthread-1.2.1/src/win32/.svn/entries b/jthread-1.2.1/src/win32/.svn/entries new file mode 100644 index 0000000..6492d2d --- /dev/null +++ b/jthread-1.2.1/src/win32/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/jthread-1.2.1/src/win32 +http://svn.monitord.de + + + +2007-12-16T12:11:54.052657Z +224 +buebchen +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +jthread.cpp +file + + + + +2012-01-23T14:07:05.195492Z +ed91fdbbe9c26dfee6ac8c6efb25d6d2 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +3804 + +jmutex.cpp +file + + + + +2012-01-23T14:07:05.195492Z +e52562c3e22dbd982cea177e00be58f0 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +2279 + diff --git a/jthread-1.2.1/src/win32/.svn/text-base/jmutex.cpp.svn-base b/jthread-1.2.1/src/win32/.svn/text-base/jmutex.cpp.svn-base new file mode 100644 index 0000000..000461e --- /dev/null +++ b/jthread-1.2.1/src/win32/.svn/text-base/jmutex.cpp.svn-base @@ -0,0 +1,83 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jmutex.h" + +JMutex::JMutex() +{ + initialized = false; +} + +JMutex::~JMutex() +{ + if (initialized) +#ifdef JMUTEX_CRITICALSECTION + DeleteCriticalSection(&mutex); +#else + CloseHandle(mutex); +#endif // JMUTEX_CRITICALSECTION +} + +int JMutex::Init() +{ + if (initialized) + return ERR_JMUTEX_ALREADYINIT; +#ifdef JMUTEX_CRITICALSECTION + InitializeCriticalSection(&mutex); +#else + mutex = CreateMutex(NULL,FALSE,NULL); + if (mutex == NULL) + return ERR_JMUTEX_CANTCREATEMUTEX; +#endif // JMUTEX_CRITICALSECTION + initialized = true; + return 0; +} + +int JMutex::Lock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; +#ifdef JMUTEX_CRITICALSECTION + EnterCriticalSection(&mutex); +#else + WaitForSingleObject(mutex,INFINITE); +#endif // JMUTEX_CRITICALSECTION + return 0; +} + +int JMutex::Unlock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; +#ifdef JMUTEX_CRITICALSECTION + LeaveCriticalSection(&mutex); +#else + ReleaseMutex(mutex); +#endif // JMUTEX_CRITICALSECTION + return 0; +} + diff --git a/jthread-1.2.1/src/win32/.svn/text-base/jthread.cpp.svn-base b/jthread-1.2.1/src/win32/.svn/text-base/jthread.cpp.svn-base new file mode 100644 index 0000000..54b110b --- /dev/null +++ b/jthread-1.2.1/src/win32/.svn/text-base/jthread.cpp.svn-base @@ -0,0 +1,177 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jthread.h" + +#ifndef _WIN32_WCE + #include +#endif // _WIN32_WCE + +JThread::JThread() +{ + retval = NULL; + mutexinit = false; + running = false; +} + +JThread::~JThread() +{ + Kill(); +} + +int JThread::Start() +{ + if (!mutexinit) + { + if (!runningmutex.IsInitialized()) + { + if (runningmutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex.IsInitialized()) + { + if (continuemutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex2.IsInitialized()) + { + if (continuemutex2.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } mutexinit = true; + } + + runningmutex.Lock(); + if (running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_ALREADYRUNNING; + } + runningmutex.Unlock(); + + continuemutex.Lock(); +#ifndef _WIN32_WCE + threadhandle = (HANDLE)_beginthreadex(NULL,0,TheThread,this,0,&threadid); +#else + threadhandle = CreateThread(NULL,0,TheThread,this,0,&threadid); +#endif // _WIN32_WCE + if (threadhandle == NULL) + { + continuemutex.Unlock(); + return ERR_JTHREAD_CANTSTARTTHREAD; + } + + /* Wait until 'running' is set */ + + runningmutex.Lock(); + while (!running) + { + runningmutex.Unlock(); + Sleep(1); + runningmutex.Lock(); + } + runningmutex.Unlock(); + + continuemutex.Unlock(); + + continuemutex2.Lock(); + continuemutex2.Unlock(); + + return 0; +} + +int JThread::Kill() +{ + runningmutex.Lock(); + if (!running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_NOTRUNNING; + } + TerminateThread(threadhandle,0); + CloseHandle(threadhandle); + running = false; + runningmutex.Unlock(); + return 0; +} + +bool JThread::IsRunning() +{ + bool r; + + runningmutex.Lock(); + r = running; + runningmutex.Unlock(); + return r; +} + +void *JThread::GetReturnValue() +{ + void *val; + + runningmutex.Lock(); + if (running) + val = NULL; + else + val = retval; + runningmutex.Unlock(); + return val; +} + +#ifndef _WIN32_WCE +UINT __stdcall JThread::TheThread(void *param) +#else +DWORD WINAPI JThread::TheThread(void *param) +#endif // _WIN32_WCE +{ + JThread *jthread; + void *ret; + + jthread = (JThread *)param; + + jthread->continuemutex2.Lock(); + jthread->runningmutex.Lock(); + jthread->running = true; + jthread->runningmutex.Unlock(); + + jthread->continuemutex.Lock(); + jthread->continuemutex.Unlock(); + + ret = jthread->Thread(); + + jthread->runningmutex.Lock(); + jthread->running = false; + jthread->retval = ret; + CloseHandle(jthread->threadhandle); + jthread->runningmutex.Unlock(); + return 0; +} + +void JThread::ThreadStarted() +{ + continuemutex2.Unlock(); +} + diff --git a/jthread-1.2.1/src/win32/jmutex.cpp b/jthread-1.2.1/src/win32/jmutex.cpp new file mode 100644 index 0000000..000461e --- /dev/null +++ b/jthread-1.2.1/src/win32/jmutex.cpp @@ -0,0 +1,83 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jmutex.h" + +JMutex::JMutex() +{ + initialized = false; +} + +JMutex::~JMutex() +{ + if (initialized) +#ifdef JMUTEX_CRITICALSECTION + DeleteCriticalSection(&mutex); +#else + CloseHandle(mutex); +#endif // JMUTEX_CRITICALSECTION +} + +int JMutex::Init() +{ + if (initialized) + return ERR_JMUTEX_ALREADYINIT; +#ifdef JMUTEX_CRITICALSECTION + InitializeCriticalSection(&mutex); +#else + mutex = CreateMutex(NULL,FALSE,NULL); + if (mutex == NULL) + return ERR_JMUTEX_CANTCREATEMUTEX; +#endif // JMUTEX_CRITICALSECTION + initialized = true; + return 0; +} + +int JMutex::Lock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; +#ifdef JMUTEX_CRITICALSECTION + EnterCriticalSection(&mutex); +#else + WaitForSingleObject(mutex,INFINITE); +#endif // JMUTEX_CRITICALSECTION + return 0; +} + +int JMutex::Unlock() +{ + if (!initialized) + return ERR_JMUTEX_NOTINIT; +#ifdef JMUTEX_CRITICALSECTION + LeaveCriticalSection(&mutex); +#else + ReleaseMutex(mutex); +#endif // JMUTEX_CRITICALSECTION + return 0; +} + diff --git a/jthread-1.2.1/src/win32/jthread.cpp b/jthread-1.2.1/src/win32/jthread.cpp new file mode 100644 index 0000000..54b110b --- /dev/null +++ b/jthread-1.2.1/src/win32/jthread.cpp @@ -0,0 +1,177 @@ +/* + + This file is a part of the JThread package, which contains some object- + oriented thread wrappers for different thread implementations. + + Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com) + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + +*/ + +#include "jthread.h" + +#ifndef _WIN32_WCE + #include +#endif // _WIN32_WCE + +JThread::JThread() +{ + retval = NULL; + mutexinit = false; + running = false; +} + +JThread::~JThread() +{ + Kill(); +} + +int JThread::Start() +{ + if (!mutexinit) + { + if (!runningmutex.IsInitialized()) + { + if (runningmutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex.IsInitialized()) + { + if (continuemutex.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } + if (!continuemutex2.IsInitialized()) + { + if (continuemutex2.Init() < 0) + return ERR_JTHREAD_CANTINITMUTEX; + } mutexinit = true; + } + + runningmutex.Lock(); + if (running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_ALREADYRUNNING; + } + runningmutex.Unlock(); + + continuemutex.Lock(); +#ifndef _WIN32_WCE + threadhandle = (HANDLE)_beginthreadex(NULL,0,TheThread,this,0,&threadid); +#else + threadhandle = CreateThread(NULL,0,TheThread,this,0,&threadid); +#endif // _WIN32_WCE + if (threadhandle == NULL) + { + continuemutex.Unlock(); + return ERR_JTHREAD_CANTSTARTTHREAD; + } + + /* Wait until 'running' is set */ + + runningmutex.Lock(); + while (!running) + { + runningmutex.Unlock(); + Sleep(1); + runningmutex.Lock(); + } + runningmutex.Unlock(); + + continuemutex.Unlock(); + + continuemutex2.Lock(); + continuemutex2.Unlock(); + + return 0; +} + +int JThread::Kill() +{ + runningmutex.Lock(); + if (!running) + { + runningmutex.Unlock(); + return ERR_JTHREAD_NOTRUNNING; + } + TerminateThread(threadhandle,0); + CloseHandle(threadhandle); + running = false; + runningmutex.Unlock(); + return 0; +} + +bool JThread::IsRunning() +{ + bool r; + + runningmutex.Lock(); + r = running; + runningmutex.Unlock(); + return r; +} + +void *JThread::GetReturnValue() +{ + void *val; + + runningmutex.Lock(); + if (running) + val = NULL; + else + val = retval; + runningmutex.Unlock(); + return val; +} + +#ifndef _WIN32_WCE +UINT __stdcall JThread::TheThread(void *param) +#else +DWORD WINAPI JThread::TheThread(void *param) +#endif // _WIN32_WCE +{ + JThread *jthread; + void *ret; + + jthread = (JThread *)param; + + jthread->continuemutex2.Lock(); + jthread->runningmutex.Lock(); + jthread->running = true; + jthread->runningmutex.Unlock(); + + jthread->continuemutex.Lock(); + jthread->continuemutex.Unlock(); + + ret = jthread->Thread(); + + jthread->runningmutex.Lock(); + jthread->running = false; + jthread->retval = ret; + CloseHandle(jthread->threadhandle); + jthread->runningmutex.Unlock(); + return 0; +} + +void JThread::ThreadStarted() +{ + continuemutex2.Unlock(); +} + diff --git a/lame-3.97/.svn/all-wcprops b/lame-3.97/.svn/all-wcprops new file mode 100644 index 0000000..b21bf7e --- /dev/null +++ b/lame-3.97/.svn/all-wcprops @@ -0,0 +1,239 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/328/monitor/trunk/lame-3.97 +END +configure +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/238/monitor/trunk/lame-3.97/configure +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/328/monitor/trunk/lame-3.97/Makefile.in +END +lame.bat +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/321/monitor/trunk/lame-3.97/lame.bat +END +INSTALL.configure +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/INSTALL.configure +END +depcomp +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/238/monitor/trunk/lame-3.97/depcomp +END +lame_vc6.dsw +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/lame_vc6.dsw +END +config.guess +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/config.guess +END +configMS.h +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/321/monitor/trunk/lame-3.97/configMS.h +END +config.sub +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/config.sub +END +ltmain.sh +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/321/monitor/trunk/lame-3.97/ltmain.sh +END +README.WINGTK +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/321/monitor/trunk/lame-3.97/README.WINGTK +END +Makefile.unix +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/238/monitor/trunk/lame-3.97/Makefile.unix +END +ltconfig +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/238/monitor/trunk/lame-3.97/ltconfig +END +INSTALL +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/321/monitor/trunk/lame-3.97/INSTALL +END +testcase.wav +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/testcase.wav +END +COPYING +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/321/monitor/trunk/lame-3.97/COPYING +END +API +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/238/monitor/trunk/lame-3.97/API +END +lame.spec.in +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/328/monitor/trunk/lame-3.97/lame.spec.in +END +DEFINES +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/238/monitor/trunk/lame-3.97/DEFINES +END +mkinstalldirs +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/238/monitor/trunk/lame-3.97/mkinstalldirs +END +LICENSE +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/321/monitor/trunk/lame-3.97/LICENSE +END +Makefile.MSVC +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/238/monitor/trunk/lame-3.97/Makefile.MSVC +END +configure.in +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/328/monitor/trunk/lame-3.97/configure.in +END +ChangeLog +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/321/monitor/trunk/lame-3.97/ChangeLog +END +lame_vc7.sln +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/lame_vc7.sln +END +lame_projects_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/lame_projects_vc6.dsp +END +README +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/321/monitor/trunk/lame-3.97/README +END +config.h.in +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/328/monitor/trunk/lame-3.97/config.h.in +END +HACKING +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/238/monitor/trunk/lame-3.97/HACKING +END +USAGE +K 25 +svn:wc:ra_dav:version-url +V 43 +/!svn/ver/238/monitor/trunk/lame-3.97/USAGE +END +TODO +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/321/monitor/trunk/lame-3.97/TODO +END +acinclude.m4 +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/acinclude.m4 +END +Makefile.am.global +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/Makefile.am.global +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/238/monitor/trunk/lame-3.97/Makefile.am +END +missing +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/238/monitor/trunk/lame-3.97/missing +END +testcase.mp3 +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/testcase.mp3 +END +aclocal.m4 +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/aclocal.m4 +END +STYLEGUIDE +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/STYLEGUIDE +END +install-sh +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/install-sh +END diff --git a/lame-3.97/.svn/entries b/lame-3.97/.svn/entries new file mode 100644 index 0000000..73a5128 --- /dev/null +++ b/lame-3.97/.svn/entries @@ -0,0 +1,1387 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97 +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +frontend +dir + +configure +file + + + + +2012-01-23T14:07:04.929494Z +5f95e8f4cb11a75c86ed0e12cd4f23cd +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1007701 + +debian +dir + +Makefile.in +file + + + + +2012-01-23T14:07:04.936488Z +e4ae992f21de8aaf6c6c4683588d2079 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +21957 + +lame.bat +file + + + + +2012-01-23T14:07:04.936488Z +fdcfb9e2967562bbb46d0f9d2b9f13d2 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1105 + +libmp3lame +dir + +INSTALL.configure +file + + + + +2012-01-23T14:07:04.937765Z +5622c25036db5080cae7b5bf50512aed +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +7832 + +depcomp +file + + + + +2012-01-23T14:07:04.937765Z +d7d8db17e074dcabf513d766b728993d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15936 + +lame_vc6.dsw +file + + + + +2012-01-23T14:07:04.937765Z +46f470ef4aa397bb34743a3e3d23fb21 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3383 + +config.guess +file + + + + +2012-01-23T14:07:04.938498Z +510429fd06b6d6ed70295881a9f7a811 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +42037 + +configMS.h +file + + + + +2012-01-23T14:07:04.938498Z +695364d1005c0b36b00c23b0a2cfbb54 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2788 + +ltmain.sh +file + + + + +2012-01-23T14:07:04.947503Z +ce47f9183418485d95466bddbdd02bf4 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +185918 + +config.sub +file + + + + +2012-01-23T14:07:04.940493Z +b1b08ce880350a495f673f07442d707c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +30315 + +Makefile.unix +file + + + + +2012-01-23T14:07:04.948535Z +14ee073deb2183da2793d582bf182db6 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +18548 + +README.WINGTK +file + + + + +2012-01-23T14:07:04.948535Z +13c31bd50ff6c1bdeadc601069696da6 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2128 + +mac +dir + +ltconfig +file + + + + +2012-01-23T14:07:04.950496Z +17fa686f98db76b921623b7e9c314de1 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +97032 + +doc +dir + +INSTALL +file + + + + +2012-01-23T14:07:04.950496Z +2170e21527d66c84d9b6344df1cae85f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +7219 + +testcase.wav +file + + + + +2012-01-23T14:07:04.951509Z +f50499fded70a74c810dbcadb3f28062 +2007-12-20T22:24:54.554753Z +238 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +100044 + +COPYING +file + + + + +2012-01-23T14:07:04.952495Z +3bf50002aefd002f49e7bb854063f7e7 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +25292 + +API +file + + + + +2012-01-23T14:07:04.952495Z +454bc7b298f9337e20cb203a32f771fb +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3671 + +mpglib +dir + +Dll +dir + +lame.spec.in +file + + + + +2012-01-23T14:07:04.952495Z +7c88ec9489afe23a60edfd4f242f8bf8 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +6092 + +DEFINES +file + + + + +2012-01-23T14:07:04.953493Z +ca886a6357f84aa8d175e3aa40a14f36 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +940 + +mkinstalldirs +file + + + + +2012-01-23T14:07:04.953493Z +64e8ff72710e830f15a347863b848c7d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3474 + +LICENSE +file + + + + +2012-01-23T14:07:04.953493Z +d83cc5a5e2fc3067b816c3dde356828f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +707 + +include +dir + +dshow +dir + +Makefile.MSVC +file + + + + +2012-01-23T14:07:04.954498Z +226ae0be052afd5a51e949dae74b5761 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15713 + +configure.in +file + + + + +2012-01-23T14:07:04.955492Z +e4edef74415192ecb6e6a72a6697333b +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +30739 + +ChangeLog +file + + + + +2012-01-23T14:07:04.957494Z +9c1b5527a7b0eeee6831334e3f5b62f6 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +752393 + +lame_vc7.sln +file + + + + +2012-01-23T14:07:04.958498Z +e7e0b7875cfb1ef34ef07283f80bd4fe +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +12424 + +lame_projects_vc6.dsp +file + + + + +2012-01-23T14:07:04.958498Z +b32a448292128328e6a054f6bea98563 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +2464 + +misc +dir + +README +file + + + + +2012-01-23T14:07:04.958498Z +012731d809789abbb09177bbc6731caa +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1801 + +ACM +dir + +config.h.in +file + + + + +2012-01-23T14:07:04.959536Z +246ddf014521cc8311bb7683e43d1a03 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +8396 + +USAGE +file + + + + +2012-01-23T14:07:04.959536Z +f1d06ac394387edf92feab37ef7bf571 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +30053 + +HACKING +file + + + + +2012-01-23T14:07:04.959536Z +7a4cc73ae186f77292b103320bd173f5 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3984 + +TODO +file + + + + +2012-01-23T14:07:04.960492Z +90b4ed0acbf35e45fe52736780e24578 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4420 + +acinclude.m4 +file + + + + +2012-01-23T14:07:04.960492Z +ddc76c3fa8f63b758eaf409b4ac3bb38 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +2516 + +Makefile.am.global +file + + + + +2012-01-23T14:07:04.961492Z +b6f6b0fed3f1d864100e8c42f5bf7d40 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +187 + +Makefile.am +file + + + + +2012-01-23T14:07:04.961492Z +bccc08cdf19ecb5240c60c9689cc2a2d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1732 + +missing +file + + + + +2012-01-23T14:07:04.961492Z +5d58f0dd4262171a71b65bd515d85d07 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +11014 + +testcase.mp3 +file + + + + +2012-01-23T14:07:04.961492Z +d5f6ccaf2ca02ffdb14b9ceabd0e2eb1 +2007-12-20T22:24:54.554753Z +238 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +10448 + +aclocal.m4 +file + + + + +2012-01-23T14:07:04.962501Z +23752577c05d773d1819cfeefd8cd26c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +261713 + +STYLEGUIDE +file + + + + +2012-01-23T14:07:04.962501Z +4877022558909d8cda8c5242499468c6 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +7005 + +install-sh +file + + + + +2012-01-23T14:07:04.963503Z +aded5875c5d5830de6653181e8ced19c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9233 + diff --git a/lame-3.97/.svn/prop-base/COPYING.svn-base b/lame-3.97/.svn/prop-base/COPYING.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/.svn/prop-base/COPYING.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/ChangeLog.svn-base b/lame-3.97/.svn/prop-base/ChangeLog.svn-base new file mode 100644 index 0000000..138f983 --- /dev/null +++ b/lame-3.97/.svn/prop-base/ChangeLog.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/INSTALL.configure.svn-base b/lame-3.97/.svn/prop-base/INSTALL.configure.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/.svn/prop-base/INSTALL.configure.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/INSTALL.svn-base b/lame-3.97/.svn/prop-base/INSTALL.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/.svn/prop-base/INSTALL.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/LICENSE.svn-base b/lame-3.97/.svn/prop-base/LICENSE.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/.svn/prop-base/LICENSE.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/.svn/prop-base/README.WINGTK.svn-base b/lame-3.97/.svn/prop-base/README.WINGTK.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/.svn/prop-base/README.WINGTK.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/README.svn-base b/lame-3.97/.svn/prop-base/README.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/.svn/prop-base/README.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/TODO.svn-base b/lame-3.97/.svn/prop-base/TODO.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/.svn/prop-base/TODO.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/config.h.in.svn-base b/lame-3.97/.svn/prop-base/config.h.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/.svn/prop-base/config.h.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/.svn/prop-base/configMS.h.svn-base b/lame-3.97/.svn/prop-base/configMS.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/.svn/prop-base/configMS.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/.svn/prop-base/configure.in.svn-base b/lame-3.97/.svn/prop-base/configure.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/.svn/prop-base/configure.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/.svn/prop-base/lame.bat.svn-base b/lame-3.97/.svn/prop-base/lame.bat.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/lame-3.97/.svn/prop-base/lame.bat.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/lame.spec.in.svn-base b/lame-3.97/.svn/prop-base/lame.spec.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/.svn/prop-base/lame.spec.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/.svn/prop-base/ltmain.sh.svn-base b/lame-3.97/.svn/prop-base/ltmain.sh.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/lame-3.97/.svn/prop-base/ltmain.sh.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/.svn/prop-base/testcase.mp3.svn-base b/lame-3.97/.svn/prop-base/testcase.mp3.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/lame-3.97/.svn/prop-base/testcase.mp3.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lame-3.97/.svn/prop-base/testcase.wav.svn-base b/lame-3.97/.svn/prop-base/testcase.wav.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/lame-3.97/.svn/prop-base/testcase.wav.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lame-3.97/.svn/text-base/API.svn-base b/lame-3.97/.svn/text-base/API.svn-base new file mode 100644 index 0000000..c850df5 --- /dev/null +++ b/lame-3.97/.svn/text-base/API.svn-base @@ -0,0 +1,107 @@ +The LAME API + +This is the simple interface to the encoding part of libmp3lame.so. +The library also contains routines for adding id3 tags and +mp3 decoding. These routines are not fully documented, +but you can figure them out by looking at "include/lame.h" and the +example frontend encoder/decoder source code in frontend/main.c + +All of these steps should be done for every MP3 to be encoded. + + +========================================================================= + +1. (optional) Get the version number of the encoder, if you are interested. + void get_lame_version(char *strbuf, size_t buflen, const char *prefix); + + +2. Error messages. By default, LAME will write error messages to +stderr using vfprintf(). For GUI applications, this is often a problem +and you need to set your own error message handlers: + + lame_set_errorf(gfp,error_handler_function); + lame_set_debugf(gfp,error_handler_function); + lame_set_msgf(gfp,error_handler_function); + +See lame.h for details. + + +3. Initialize the encoder. sets default for all encoder parameters. + + #include "lame.h" + lame_global_flags *gfp; + gfp = lame_init(); + +The default (if you set nothing) is a J-Stereo, 44.1khz +128kbps CBR mp3 file at quality 5. Override various default settings +as necessary, for example: + + lame_set_num_channels(gfp,2); + lame_set_in_samplerate(gfp,44100); + lame_set_brate(gfp,128); + lame_set_mode(gfp,1); + lame_set_quality(gfp,2); /* 2=high 5 = medium 7=low */ + + +See lame.h for the complete list of options. Note that there are +some lame_set_*() calls not documented in lame.h. These functions +are experimental and for testing only. They may be removed in +the future. + + + +4. Set more internal configuration based on data provided above, + as well as checking for problems. Check that ret_code >= 0. + + ret_code = lame_init_params(gfp); + + + +5. Encode some data. input pcm data, output (maybe) mp3 frames. +This routine handles all buffering, resampling and filtering for you. +The required mp3buffer_size can be computed from num_samples, +samplerate and encoding rate, but here is a worst case estimate: +mp3buffer_size (in bytes) = 1.25*num_samples + 7200. +num_samples = the number of PCM samples in each channel. It is +not the sum of the number of samples in the L and R channels. + +The return code = number of bytes output in mp3buffer. This can be 0. +If it is <0, an error occured. + + int lame_encode_buffer(lame_global_flags *gfp, + short int leftpcm[], short int rightpcm[], + int num_samples,char *mp3buffer,int mp3buffer_size); + + +There are also routines for various types of input +(float, long, interleaved, etc). See lame.h for details. + + +6. lame_encode_flush will flush the buffers and may return a +final few mp3 frames. mp3buffer should be at least 7200 bytes. +return code = number of bytes output to mp3buffer. This can be 0. + +int lame_encode_flush(lame_global_flags *,char *mp3buffer, int mp3buffer_size); + + +7. Write the Xing VBR/INFO tag to mp3 file. + +void lame_mp3_tags_fid(lame_global_flags *,FILE* fid); + +This adds a valid mp3 frame which contains information about the +bitstream some players may find usefull. It is used for CBR,ABR and +VBR. The routine will attempt to rewind the output stream to the +beginning. If this is not possible, (for example, you are encoding to +stdout) you should specifically disable the tag by calling +lame_set_bWriteVbrTag(gfp,0) in step 3 above, and call +lame_mp3_tags_fid() with fid=NULL. If the rewind fails and +the tag was not disabled, the first mp3 frame in the bitstream +will be all 0's. + + + +8. free the internal data structures. + +void lame_close(lame_global_flags *); + + diff --git a/lame-3.97/.svn/text-base/COPYING.svn-base b/lame-3.97/.svn/text-base/COPYING.svn-base new file mode 100644 index 0000000..bf50f20 --- /dev/null +++ b/lame-3.97/.svn/text-base/COPYING.svn-base @@ -0,0 +1,482 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307 USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/lame-3.97/.svn/text-base/ChangeLog.svn-base b/lame-3.97/.svn/text-base/ChangeLog.svn-base new file mode 100644 index 0000000..048f8a0 --- /dev/null +++ b/lame-3.97/.svn/text-base/ChangeLog.svn-base @@ -0,0 +1,33713 @@ + + ChangeLog for LAME +-==================- + + - All dates/times are in GMT. + - This file contains the complete changelog, even commit logs of + non official branches. An entry of the form "filename (branchname):" + may not apply to the source you get with this package. + - Generated from cvs log entries + (cvs2cl --gmt -S --branches --no-wrap --header ChangeLog.header) + +-- + +2005-09-04 19:45 aleidinger + + * configure: + + Regen. + +2005-09-04 19:35 aleidinger + + * config.h.in: + + Add the bits for largefile support. + + Submitted by: Diego "Flameeyes" Pettenò + Bug ID: 1271744 + +2005-09-04 19:11 aleidinger + + * configure.in: + + Remove some flags which gcc 4.x doesn't understand anymore. + + Noticed by: Rogério Brito + +2005-09-04 19:05 aleidinger + + * aclocal.m4, config.h.in, Makefile.in, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: + + Regen. + +2005-09-04 19:05 aleidinger + + * depcomp, install-sh, ltmain.sh, missing, mkinstalldirs, + frontend/depcomp, libmp3lame/depcomp, misc/depcomp, + mpglib/depcomp: + + Update to recent autotools. + +2005-09-04 19:02 aleidinger + + * frontend/Makefile.am: + + Play catchup with the autotools. + +2005-09-04 18:54 aleidinger + + * configure.in: + + Initialize autoconf correctly (with lame mailinglist address). + +2005-09-04 16:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix adptive threshold calculation. + +2005-09-04 12:03 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + little bit better lossless coding + +2005-09-04 11:52 rbrito + + * doc/man/lame.1: + + Fixed typo in manpage. + +2005-09-04 07:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better skip method for not audible scalefactor band. + +2005-09-04 06:56 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not calculate not audible scalefactor band. + +2005-09-04 06:16 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + forgot to commit when adding sfb energy caching. sorry. + +2005-09-04 03:10 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + caching sfb energy = sum of xr^2 + +2005-09-04 03:09 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + suppress conditional jump + +2005-09-04 02:21 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + better pipelining and use of pshufd in ix_max_SSE2 + +2005-09-04 02:09 takehiro + + * libmp3lame/: tables.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + SSE2 version of ix_max() + +2005-09-04 02:08 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-09-03 15:38 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up coding. + +2005-09-03 14:49 takehiro + + * libmp3lame/: quantize.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + changed parameter of xrmax_MMX() + +2005-09-03 13:38 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-09-03 13:31 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + added sumofsqr_SSE() for ia32 + +2005-09-03 13:10 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + use aligned memory access + +2005-09-03 12:45 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + use SSE register for data backup. + +2005-09-03 12:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + xrmax_SSE() support on x86_64 + +2005-09-03 11:16 takehiro + + * libmp3lame/: quantize.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + SSE version of xrmax() + +2005-09-02 18:09 bouvigne + + * frontend/parse.c: + + fixed a stupid bug with --preset medium/standard/extreme + +2005-09-02 17:16 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + changed default setting of replaygain analysis, "enable fast" -> "disable all". + +2005-09-01 18:12 bouvigne + + * libmp3lame/VbrTag.c: + + 320kbps cbr was flagged as "non optimal" in the info header + +2005-08-31 16:21 takehiro + + * libmp3lame/quantize.c, libmp3lame/lame-analysis.h, + frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + display how many bits used in the "large value" region and count1 region. + +2005-08-28 17:30 bouvigne + + * frontend/parse.c, libmp3lame/version.h: + + Changed the way "--preset xxx" is handled, + as I've seen many users passing "--preset standard --vbr-new". + Presets are now evaluated during initialisation, so this kind of command + line now properly works. + +2005-08-28 17:02 bouvigne + + * libmp3lame/lame.c, Makefile.MSVC, libmp3lame/version.c, + libmp3lame/version.h, frontend/parse.c: + + 64bits build from within win64 platform sdk + +2005-08-28 12:19 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use 128bit constants + +2005-08-28 12:11 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + better pipelining + +2005-08-27 12:03 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use cos(2x) = cos(x)*cos(x) - sin(x)*sin(x) = 1 - 2*sin(x)*sin(x) + +2005-08-27 08:25 takehiro + + * configure, configure.in: + + fix for configure problem reported by Steven P. Ulrick. + +2005-08-27 08:10 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + clean up. + +2005-08-27 07:58 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + clean up counter register usage + +2005-08-25 16:28 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + suppress table size + +2005-08-25 12:14 takehiro + + * debian/: Makefile.am, Makefile.in: + + follow the file name change. + +2005-08-23 15:50 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + new tonality -> masking ratio conversion method and masking ratio limitation + in the lower frequency region. + +2005-08-23 14:15 takehiro + + * libmp3lame/: encoder.h, lame.c, newmdct.c, psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + rename internal variable name, start_sfb_* -> max_sfb_* + update verbose print of internal setting. + +2005-08-22 16:20 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + do not call best_scalefac_store() when no noise shaping, becase in such case + all the scalefac values are always zero. + +2005-08-22 15:21 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + do not calculate MDCT beyond cutoff even when adaptive cutoff is enabled. + +2005-08-22 13:47 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + display internal setting for "adaptive lowpass cutoff" + +2005-08-22 13:46 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fix "optimal setting" flag is always cleared when the input file is below 32kH + +2005-08-22 13:11 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + do not process filtering when no filter enabled. + +2005-08-21 17:32 bouvigne + + * Makefile.am, ACM/Makefile.am, ACM/lameACM_vc7.vcproj, + ACM/ADbg/ADbg_vc7.vcproj, ACM/ADbg/Makefile.am, + ACM/tinyxml/Makefile.am, ACM/tinyxml/tinyxml_vc7.vcproj, + Dll/LameDll_vc7.vcproj, Dll/Makefile.am, frontend/Makefile.am, + frontend/lame_vc7.vcproj, frontend/mp3x_vc7.vcproj, + libmp3lame/Makefile.am, libmp3lame/libmp3lame_vc7.vcproj, + mpglib/Makefile.am, mpglib/mpglib_vc7.vcproj: + + added project files for VC7 + +2005-08-21 17:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + use adaptive cutoff when no lowpass filter setting ("-k" option) + +2005-08-21 15:25 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix default cutoff setting when adaptive cutoff. + +2005-08-21 14:15 takehiro + + * libmp3lame/: encoder.h, lame.c, psymodel.c, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + adaptive cutoff frequency calculation. + very experimental and not works correctly (of course is not enabled by default) + +2005-08-21 08:40 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + revive -q settings for VBR/ABR + +2005-08-21 08:05 takehiro + + * libmp3lame/i386/: fftsse.nas, quantSSE.nas + (takehiro-2002_05_07-experimental): + + clean up + +2005-08-21 06:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up x86_64 code. + +2005-08-21 06:09 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use loopalign instead of align + +2005-08-21 05:54 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use movlps instead of movups + +2005-08-21 05:42 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + trivial + +2005-08-21 04:50 takehiro + + * libmp3lame/i386/: choose_table.nas, quantSSE.nas + (takehiro-2002_05_07-experimental): + + small asm-coding hack. + +2005-08-21 03:32 takehiro + + * libmp3lame/: encoder.h, tags.c + (takehiro-2002_05_07-experimental): + + Support generic genre name like "MyOriginalGenre" (bugid #1265218 @ sf.net) + +2005-08-20 18:34 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + clean up. + +2005-08-20 18:05 takehiro + + * libmp3lame/: util.c, util.h (takehiro-2002_05_07-experimental): + + one more support for SSE on x86_64 + +2005-08-20 18:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + ASM code support for x86_64 environment (only tested with FedoraCore3@cf.sf.net) + +2005-08-20 17:48 bouvigne + + * doc/html/switchs.html: + + typo + +2005-08-20 16:47 takehiro + + * configure, configure.in, libmp3lame/Makefile.am, + libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + auto* things for x86_64 related files. + +2005-08-20 14:21 takehiro + + * libmp3lame/i386/ssesub.c (takehiro-2002_05_07-experimental): + + remove unused files/dirs + +2005-08-20 13:42 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + remove redundant operation and fix comments. + +2005-08-20 11:32 takehiro + + * libmp3lame/: lame.c, psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + modification related to asm version of lr2ms (forgot to commit. oops) + +2005-08-20 09:25 takehiro + + * libmp3lame/: util.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + SSE version of LR -> MS. gains 1% speed. + +2005-08-20 08:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-08-16 07:56 rbrito + + * debian/: changelog, control: + + Make libmp3lame0 provide and replace liblame0, not conflict with it. + +2005-08-16 07:11 rbrito + + * debian/: changelog, control, libmp3lame0-dev.files: + + Fixed development package to not include shared libraries. + Other misc fixes. + + Yet more to come. + +2005-08-16 01:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimized pow075() for generic CPU. + remove C++ style comments. + +2005-08-15 04:25 rbrito + + * debian/: changelog, control, liblame0-dev.docs, + liblame0-dev.files, liblame0.files, libmp3lame0-dev.docs, + libmp3lame0-dev.files, libmp3lame0.files, rules: + + Update Debian packaging so that the library packages follow the SONAME + rules. + + Also incorporate some changes from Christian Marillat's packages in the + basic lame package. + + More changes to come soon. + +2005-08-14 07:05 takehiro + + * libmp3lame/: bitstream.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-08-13 14:12 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + optimize quad-code writing routine. + +2005-08-13 12:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + move the comments at more suitable place. + +2005-08-13 12:08 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimizations. + +2005-08-13 09:17 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + faster count bits for quad-code region. + +2005-08-11 14:43 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + reduce memory access by caching data to be written. + +2005-08-10 15:22 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + caching huffman code to be written to reduce bitwise operation. + +2005-08-10 14:55 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + more pruning at lossless coding. same result, faster calculation. + +2005-08-08 17:22 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + one more pruning of lossless coding. + +2005-08-08 16:33 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimize speed of lossless coding with better pruning. + +2005-08-07 14:07 takehiro + + * doc/man/lame.1: + + when the input is raw, the input file will be treated as native endian. + (bugid 1158189) + +2005-08-07 13:24 bouvigne + + * doc/html/switchs.html: + + update of stereo modes description + +2005-08-07 12:34 takehiro + + * configure, aclocal.m4 (takehiro-2002_05_07-experimental): + + regen + +2005-08-07 10:44 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + surpress memcpy + +2005-08-07 09:37 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix debug build + +2005-08-06 17:29 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce table size. + +2005-08-06 17:20 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + surpress warnings + +2005-08-06 17:14 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + fix comments + +2005-08-06 14:51 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix typo. + +2005-08-06 06:37 takehiro + + * libmp3lame/: psymodel.c, i386/ssesub.c + (takehiro-2002_05_07-experimental): + + trivial + +2005-08-06 06:09 takehiro + + * libmp3lame/: machine.h, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + cleanup and suppress memory usage when SMALL_CACHE and IEEE754 + +2005-08-06 04:46 takehiro + + * frontend/timestatus.c (takehiro-2002_05_07-experimental): + + fix --nohist switch. + +2005-08-05 15:22 takehiro + + * doc/man/lame.1: + + added "per sample" for the description of --bitwidth option. (bugid #1158196) + +2005-08-05 09:22 vitaly-ivanov + + * dshow/: Mpegac.cpp, Mpegac.h: + + Another timestamp fix. Added additional resynchronization points (now there are 4 resynch points) in order to implement absolutely accurate in-out synchronization + +2005-08-04 15:15 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix MPEG2 Layer3 VBR encoding (correct form of rev.1.178.2.223). + +2005-08-04 14:56 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix short block encoding. It may select the subblock gain which makes quantized + values larger than the IXMAX. + +2005-08-04 14:01 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + revert last (rev.1.178.2.223) changes. + +2005-08-04 14:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not use preflag when MPEG2 + +2005-08-04 11:27 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix for MPEG2 VBR coding. Still MPEG2-VBR needs many tweaking. + +2005-08-04 06:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial simplification. + +2005-08-04 02:30 takehiro + + * libmp3lame/: encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + fix bitrate histgram display when mono. + +2005-08-04 01:42 rbrito + + * debian/: changelog, control, rules: + + Updates for Debian packaging. + +2005-08-04 01:40 rbrito + + * doc/man/lame.1: + + Documentation of switches: --{un,}signed and --{big,little}-endian. + +2005-08-03 14:40 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + supress warnings on 64bit environment. + +2005-08-03 14:04 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + more clean up when with --nohist or --silent. + +2005-08-03 07:11 takehiro + + * libmp3lame/i386/nasm.h (takehiro-2002_05_07-experimental): + + Add magic words from libflac to tell LAME does not need exectable stack. + +2005-08-02 13:30 takehiro + + * frontend/main.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix brhist display when CBR + +2005-08-01 17:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + update comments + +2005-08-01 15:51 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + more MAX_BITS off-by-one fixes, including comments. + +2005-08-01 13:10 vitaly-ivanov + + * dshow/: Mpegac.cpp, Property.rc: + + Output timestamps fix. There was a serious bug when input audio samples had time gaps between each other - DirectShow timestamps for output samples were calculated wrong in this case + +2005-08-01 07:06 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix off by one of MAX_BITS. + +2005-08-01 06:30 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + supress table size. + +2005-07-30 16:30 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not use 4096 bits/granule limits when not strict ISO mode. + +2005-07-28 13:05 rbrito + + * doc/html/: basic.html, contributors.html, examples.html, + history.html, id3.html, switchs.html: + + Minor spelling corrections and other fixes to documentation. + +2005-07-28 13:02 rbrito + + * debian/rules: + + Safe version for compilation with GCC 4. + +2005-07-27 21:49 rbrito + + * doc/html/: presets.html, switchs.html: + + Spelling fixes for documentation. + +2005-07-27 21:38 rbrito + + * doc/man/lame.1: + + Include description of the "medium" preset in the manpage. + + Fix some spelling errors on the manpage. + +2005-07-27 08:43 rbrito + + * debian/changelog, debian/control, debian/lame.manpages, + debian/rules, doc/man/lame.1: + + Small fixes for lame manpage to make lintian happy. More updates to come. + +2005-07-27 07:41 rbrito + + * debian/changelog: + + Preparation for the new beta release. More changes to come. + +2005-07-26 23:31 takehiro + + * config.h.in, configure.in, frontend/main.c + (takehiro-2002_05_07-experimental): + + experimental patch to autodetect UTF-8 ID3v2 tag by Edmund GRIMLEY EVANS. + +2005-07-26 13:59 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix 4096bits limits for one _granule_ when VBR. + old code mistook it for one _channel and granule_. + +2005-07-24 16:54 takehiro + + * libmp3lame/: lame.c, psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + suppress warnings + +2005-07-24 16:52 takehiro + + * libmp3lame/: lame.c, psymodel.c, util.c + (takehiro-2002_05_07-experimental): + + added lr2ms() function and use it. This is the preparation for future asm-optimizations. + +2005-07-24 16:51 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fixed reservoir limitation setup. + +2005-07-24 16:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added some comments arround the bit reservoir. + +2005-07-24 16:28 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + [no log message] + +2005-07-24 16:11 takehiro + + * libmp3lame/: lame.c, quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + SSE2 version of quntize_ISO (from gogo) + +2005-07-24 13:02 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix bit/byte confusion. + +2005-07-20 14:30 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fixed compilation problem on some OS which has a "trancate" + +2005-07-20 14:22 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + update comments. + +2005-07-16 08:30 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fixed tarck tag ID. + +2005-07-16 08:04 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, + libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + ID3 tag update. + - merged UTF-8 patch from egrimleyevans + (http://sourceforge.net/tracker/index.php?func=detail&aid=1192706&group_id=290&atid=300290) + + - Fixed ID3v1 track number tag. When the track number is larger than 255, it was recoded as "track number % 256" in the ID3v1. + + - Changed internal track number representation to char* from int. It may allow + to use "leading zero" track number in ID3v2 tag, like "01/23". + +2005-07-16 07:30 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added "--ignore-tag-errors" to the usage message + +2005-07-10 16:13 bouvigne + + * libmp3lame/: presets.c, version.h: + + alpha 11: update of abr/cbr 160-320 + +2005-06-29 12:26 vitaly-ivanov + + * dshow/: Encoder.cpp, PropPage.cpp, PropPage_adv.cpp, Property.rc: + + Joint / Standard stereo selection fix. Got rid of automatic joint stereo encoding when the bit rate is relatively low, now it's up to the user + +2005-06-25 08:14 vitaly-ivanov + + * dshow/: Encoder.h, Property.rc, aboutprp.cpp, .cvsignore: + + [no log message] + +2005-06-24 10:03 vitaly-ivanov + + * dshow/: .cvsignore, Encoder.cpp, Encoder.h, Mpegac.cpp, + Mpegac.def, Mpegac.h, PropPage.cpp, PropPage.h, PropPage_adv.cpp, + PropPage_adv.h, Property.rc, README, REG.CPP, UIDS.H, + aboutprp.cpp, aboutprp.h, dshow.dsp, dshow.dsw, iaudioprops.h, + resource.h: + + [no log message] + +2005-06-24 09:37 vitaly-ivanov + + * dshow/REG.H: + + [no log message] + +2005-06-04 16:06 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + fix for configure with --disable-shared. + +2005-05-29 16:41 takehiro + + * Makefile.in, aclocal.m4, configure, ltmain.sh, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen with automake1.9.5 + +2005-05-29 16:40 takehiro + + * libmp3lame/: tables.c, psymodel.c + (takehiro-2002_05_07-experimental): + + psymodel parameter tuning (1) + +2005-05-29 16:10 takehiro + + * debian/: changelog, control: + + fixed version number (upstream -> downstream) + + patch from Jack, from + http://sourceforge.net/tracker/index.php?func=detail&aid=1201172&group_id=290&atid=100290 + +2005-05-29 15:59 takehiro + + * debian/rules (takehiro-2002_05_07-experimental): + + added files to remove when clean. + +2005-05-29 14:43 takehiro + + * libmp3lame/: tables.c, takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix sing handling. + It somtime makes assertion failure on MMX2 supported machines. + +2005-05-29 14:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimized init_global_gain(), by initializing gi->count1, gi->big_values + only when it is "really" needed. + +2005-05-25 14:17 takehiro + + * frontend/: get_audio.c, parse.c: + + fixed output message even when "--silent" + (bug #1145932) + +2005-05-25 13:56 takehiro + + * libmp3lame/lame.c: + + fix format strings to print out the "float" value. + (bug #1207470) + +2005-05-25 13:47 takehiro + + * frontend/parse.c: + + removed -Z option description, which has no effects currently. + +2005-05-21 09:07 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + suppress magic number. + +2005-05-20 14:46 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + clean up the new workarround for the frequency resolution + in the lower frequency. + +2005-05-17 15:46 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + Do not calculate the simultaneous masking in the lower frequency, where the + frequency resolution is not sufficient. + + This is a temporaly code. This should be done by changing the spread function. + +2005-05-14 17:45 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + dirty hack arround truncate() + +2005-05-14 16:28 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + reduce division by changing log(x/y) -> log(x) - log(y), part 2. + supress magic numbers. + +2005-05-14 16:27 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix assertion failure when a quantized value exceeds IXMAX(8206) + +2005-05-14 13:47 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-05-14 13:16 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + remove some optimization options which is not supported by gcc4. + +2005-05-14 12:31 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix debug built problem on the machine without memset() + +2005-05-14 08:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed log(x/y) as log(x)-log(y), when FAST_LOG. + +2005-05-14 06:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix built problem when USE_IEEE754_HACK but not USE_FAST_LOG. + +2005-05-14 03:43 takehiro + + * debian/: changelog, control (takehiro-2002_05_07-experimental): + + patch from Jack (jablko), including the bug report #1201172 + +2005-05-12 17:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + supress magic numbers + +2005-05-11 15:51 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + for better portability, do not use "long long", use uint64_t instead. + +2005-05-11 15:50 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + remove unused portion of window coefs. + +2005-05-11 15:14 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimizing mask_add(), part 2. + - faster log() -> trncate() calculation for IEEE754 HACK. + +2005-05-11 14:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimizing mask_add() (part 1) + +2005-05-10 17:24 takehiro + + * libmp3lame/: psymodel.c, machine.h + (takehiro-2002_05_07-experimental): + + optimizing PE calculation. + +2005-05-10 17:10 takehiro + + * libmp3lame/: tables.c, machine.h + (takehiro-2002_05_07-experimental): + + use integer calculation @ fast_log2(). + This is a preparation for farther speed optimizations. + +2005-05-06 01:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix typo. + +2005-05-04 17:21 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + fix typo + +2005-05-04 17:01 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen by hand. + +2005-05-04 17:00 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + - do not use "-march" option for the case of cross build. + - added comments about SPARC + IEEE754 hack + +2005-05-04 16:58 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + update x^(3/4) hack. + - use IEEE754 HACK version of fabs() + - better "digital silent" detection. not use sum, but use maximum. + +2005-05-04 16:57 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + common expression reduction. + +2005-04-26 16:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix selection of the band to increase the scalefactor, when all the band have no + audible noise. + +2005-04-25 16:35 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix handling of SCALEFAC_ANYTHING_GOES in calc_noise(). + This sometimes makes assertion failure when with --substep option. + +2005-04-24 10:28 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix it skips clipping when with --decode option. + +2005-04-23 18:25 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + clean up. + +2005-04-23 18:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Handmade aprox. code to calculate x^(3/4) for IEEE754 machines. + On MacOSX + G4, the speed gain is arround 14% ! + +2005-04-23 15:31 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + supress warnings + +2005-04-23 15:11 takehiro + + * testcase.mp3, frontend/get_audio.c, frontend/get_audio.h, + frontend/gtkanal.c, frontend/main.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c + (takehiro-2002_05_07-experimental): + + use floating values for the data between frontend and encoding core. + +2005-04-23 10:10 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + prevent to re-initialization. + +2005-04-23 10:08 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + add error check for lame_decoe_init() + fix comment. + +2005-04-23 09:57 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + clean up + +2005-04-23 09:56 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + clean up endianness. + fix mp3 decoding. + +2005-04-23 08:42 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning masking parameter balance for long/short blocks. + +2005-04-23 08:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix memory copy size in CBR_2nd_iteration(). + This bug causes assertion failure when CBR with -h option. + +2005-04-23 08:07 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce memory copy size. + +2005-04-23 07:57 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + little bit better initial value for quantization factor search. + +2005-04-23 07:55 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + reduce memory copy size. + +2005-04-22 17:39 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + supress warnings with GCC4.0 + +2005-04-21 16:36 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + oops, stupid bug in loop counter... sorry. + +2005-04-21 15:42 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + improve the spreading function for the lower frequency, + where the resolution of frequency is not sufficient for phsycho-analysis. + +2005-04-21 15:36 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + clean up. + +2005-04-21 15:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + verbose the configuration message. + +2005-04-17 17:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + clean up arround lame_print_internals() + +2005-04-17 16:16 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, main.h, parse.c + (takehiro-2002_05_07-experimental): + + clean up endianness detection and configuration. + +2005-04-17 15:49 takehiro + + * frontend/: get_audio.c, get_audio.h + (takehiro-2002_05_07-experimental): + + clean up MAX_U_32_NUM definition + +2005-04-17 15:42 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + general clean up. + +2005-04-17 15:35 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix assertion failure when CBR encoding. + +2005-04-17 12:49 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + clean up options. + - make some options as experimental. + - fix floating point/integer argument. + +2005-04-17 11:01 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimized best_huffman_divide(), by removing needless call of choose_table(). + +2005-04-16 15:58 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + general clean up. + - supress magic numbers + - use putbits16() instead of putbits24(), where it can. + - trivial loop counter optimization + +2005-04-16 13:55 takehiro + + * testcase.mp3, libmp3lame/psymodel.c + (takehiro-2002_05_07-experimental): + + ATH value adjustment for M/S channels. + +2005-04-16 13:53 takehiro + + * libmp3lame/bitstream.c, frontend/brhist.c, frontend/main.c + (takehiro-2002_05_07-experimental): + + supress warnings + +2005-04-16 10:42 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + reduce conditional jumps + +2005-04-16 10:42 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + added (FLOAT) cast in fast_log() macros. + +2005-04-13 14:12 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + oops, I disabled the new code... + +2005-04-13 14:11 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + one more fix for the delay. + +2005-04-13 13:50 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix frame delay + +2005-04-13 13:41 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimize lossless coding efficiency and speed (mainly for low bitrate). + +2005-04-09 17:50 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimized bitstream copy code. + +2005-04-09 17:29 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + one more reduction of needless divide point search in best_huffman_divide() + +2005-04-09 09:58 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + prevent needless search of best_huffman_divide(). + +2005-04-04 01:20 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimize best_scalefac_store() + - only call noquant_count_bits() when it is really needed. + - skip the band with the SCALEFAC_ANYTHING_GOES. + +2005-04-03 18:28 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + little bit better lossless coding. + +2005-04-03 18:27 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + make assertion condition strictly. + +2005-04-03 17:42 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + one more off by one... oops. + +2005-04-03 17:24 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix off-by-one bug. + +2005-04-03 12:25 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + use the theoretical minimum value of xr34. + +2005-04-03 11:57 takehiro + + * frontend/: gtkanal.c, mp3x.c (takehiro-2002_05_07-experimental): + + fix (part of) mp3x display delay problem + +2005-04-03 11:32 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix table selection + +2005-04-03 05:50 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce calling ixmax() and simplify count_bits() + +2005-04-02 18:32 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + potential fix for floating point exception when analysing MPEG2 Layer3 encoding by mp3x. + +2005-04-02 17:06 takehiro + + * frontend/timestatus.c (takehiro-2002_05_07-experimental): + + reduce calling GetRealTime() + +2005-04-02 16:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Try to find the better quantization factor in the higher frequncy band, + even when it fails to encode without the noise in the lower frequency band. + +2005-04-02 16:21 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + simplify the loop condition. + +2005-04-02 14:54 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + do not use putbits24(), where the length to write is lesser than 18. + +2005-04-02 14:02 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix off-by-one bug in best_huffman_divide() + +2005-04-02 12:21 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix comments and reduce the table size. + +2005-04-02 12:13 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + simplify cont_bit_noESC_from4() and add comments. + +2005-04-02 11:56 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + remove needless memory clear. + +2005-04-02 07:28 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + Now alpha 14. + - Dramatical VBR speed improvement. + 10-20% on typical archtecture (i86, Alpha, Sparc), and 95% on G4. + CBR also gains but it is little (2% on the typical arch, 30% on G4). + - New and improved ATH level autoadjustment. + - Use subblock gain more (CBR and VBR). + - Fix quantization bug in count1 region, which causes annoying noise in high-freq. + +2005-04-02 07:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + supress magic numbers. + +2005-03-29 15:07 takehiro + + * libmp3lame/: machine.h, quantize.c, tables.c, takehiro.c + (takehiro-2002_05_07-experimental): + + supress magic numbers. + +2005-03-28 17:26 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + it seems thmath.h decreases spped very much on Alpha system. + +2005-03-28 16:58 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix debug/release build is reverted and warnings + +2005-03-28 16:57 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix built on 64bit machines (I checked it on Alpha and AMD64) + +2005-03-28 09:44 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + adjust message width + +2005-03-28 03:51 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + fix SCALEFAC_ANYTHING_GOES bug finally! now it gains speed improvement arround 15%. + + and fix count1 region quantization. + +2005-03-28 03:50 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added alignment check when debug build. + +2005-03-27 17:48 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix treatment of scale factor band with "anything goes". + But it seems there're still bugs arround it. + +2005-03-27 16:45 takehiro + + * libmp3lame/: machine.h, quantize.c, quantize_pvt.h, tables.c, + tables.h, takehiro.c (takehiro-2002_05_07-experimental): + + fix it may use preflag on short blocks. + use integer value of quantization adjustments. + +2005-03-27 15:22 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix comments one more. + +2005-03-27 11:57 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fixed comments + +2005-03-27 09:32 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + code clean up. + +2005-03-26 19:58 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix comment + +2005-03-26 19:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not call scale_bitcounter() to check the scalefac values is valid or not. + (spped up arround 1.5%) + +2005-03-26 19:37 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it recognize (scalefac=SCALEFAC_ANYTHING_GOES) + (subblock gain = 2) as + not an amplified band. + +2005-03-26 10:39 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + suppress magic numbers + +2005-03-26 09:48 takehiro + + * frontend/: main.c, timestatus.c + (takehiro-2002_05_07-experimental): + + reduce calling lame_get_frameNum() + +2005-03-23 03:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use subblock_gain more when VBR. + +2005-03-23 03:06 takehiro + + * libmp3lame/: machine.h, tables.c + (takehiro-2002_05_07-experimental): + + cleanup + +2005-03-22 16:58 takehiro + + * libmp3lame/: tables.c, takehiro.c, tables.h + (takehiro-2002_05_07-experimental): + + make scfsi_band[] as static variable. + +2005-03-22 13:42 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove gabages. + oops... + +2005-03-22 13:40 takehiro + + * libmp3lame/: quantize_pvt.h, tables.c + (takehiro-2002_05_07-experimental): + + more precise ROUNDFAC definition. + +2005-03-22 07:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix built problem on old (not C99) compilers. + +2005-03-21 16:24 takehiro + + * libmp3lame/: encoder.h, quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + reduce memory copy size. + +2005-03-21 14:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Fix loop variable initialization. + This will fix decreasing bitrate too much on VBR. + + Zerofy "not audible" region at first to increase the speed. + +2005-03-20 17:28 bouvigne + + * libmp3lame/: encoder.c, lame.c, presets.c, quantize.c, + quantize.h: + + allow masking adjustements in ABR/CBR + +2005-03-19 18:34 bouvigne + + * libmp3lame/version.h: + + alpha 10 + +2005-03-19 17:51 bouvigne + + * libmp3lame/presets.c: + + updated vbr 0/1/2/3 presets + +2005-03-19 16:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix MPEG2/Layer3 encoding. + +2005-03-19 16:05 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2005-03-19 16:04 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + try to use "preflag" more often. + +2005-03-19 15:04 bouvigne + + * libmp3lame/quantize_pvt.c: + + also use nssfb21 in short blocks + +2005-03-19 15:03 bouvigne + + * libmp3lame/quantize.c: + + typo + +2005-03-19 14:44 bouvigne + + * libmp3lame/quantize.c: + + updated psfb21 analog silence detection + +2005-03-19 10:41 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + improve (lossless) scalefactor compression + +2005-03-19 09:43 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + supress magic numbers + +2005-03-19 08:48 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + reduce table size. + +2005-03-19 08:21 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-19 08:08 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix CPU specific optimization option. + +2005-03-19 07:33 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-03-18 16:31 takehiro + + * libmp3lame/: bitstream.c, machine.h, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + sign bit hack for IEEE754 + +2005-03-18 16:03 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + simplify + +2005-03-18 13:24 takehiro + + * debian/: control, rules (takehiro-2002_05_07-experimental): + + sync with the HEAD. + +2005-03-18 05:26 rbrito + + * debian/changelog, debian/control, debian/rules, doc/man/lame.1: + + Slight modifications to debian packaging (with more to come). + Minor changes to the frontend manpage. + +2005-03-17 16:46 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added (FLOAT) cast (I hope this is last). + +2005-03-17 16:41 takehiro + + * libmp3lame/: gain_analysis.c, lame.c, psymodel.c, quantize.c, + tags.c (takehiro-2002_05_07-experimental): + + added "(FLOAT)" cast + remove redundant #include + +2005-03-17 15:03 takehiro + + * frontend/rtp.c (takehiro-2002_05_07-experimental): + + fix build problem on cygwin. + +2005-03-17 14:34 takehiro + + * config.h.in, configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-17 14:28 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + do not check the winsocket. + this is the preparation for fixing bugid #1164417 + +2005-03-16 16:07 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + IEEE754 hack for quantizing 0/1 region. + +2005-03-16 14:53 takehiro + + * config.h.in, configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-16 14:52 takehiro + + * configure.in, libmp3lame/machine.h + (takehiro-2002_05_07-experimental): + + check tgmath.h and use it. + +2005-03-15 16:31 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + do not output error message when with --silent. + +2005-03-15 15:49 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen. + +2005-03-15 15:48 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + play with compiler options on G4. I've got 14% gain from it. + +2005-03-15 15:37 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + supress warning. + +2005-03-15 00:26 robert + + * libmp3lame/vbrquantize.c: + + yet another -Y thing: calc_xmin does not compute upto max_nonzero_coeff + in the -Y case. + +2005-03-14 22:32 robert + + * libmp3lame/vbrquantize.c: + + bugfix for vbr-new when sub block gain violates IXMAXVAL constrain in -Y case + +2005-03-14 21:53 robert + + * libmp3lame/quantize_pvt.c: + + removed an assert in calc_noise_core_c + cod_info->count1 == 0 seems to be a common case + +2005-03-14 15:18 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial clean up. + +2005-03-14 14:53 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + Separate preflag check from scale bit counting. + It changes preflag, but it is undesirable for VBR encoding. + +2005-03-14 14:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + IEEE754 hack for quantization in count1 region. + +2005-03-14 13:31 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + display 'LR+i' as '%' character. + +2005-03-13 17:20 robert + + * libmp3lame/presets.c: + + removing placebo -bx from fast presets + it's a placebo with vbr-old too, but keep it that way a little bit longer + +2005-03-13 17:14 takehiro + + * configure.in, configure (takehiro-2002_05_07-experimental): + + yasm needs -m amd64 to output the elf64 objects. + +2005-03-13 17:11 takehiro + + * libmp3lame/i386/: cpua.nas, nasm.h + (takehiro-2002_05_07-experimental): + + now it can be compiled on x86-64 linux (FC3). but still remains lot of work... + +2005-03-13 17:01 robert + + * frontend/mp3x.c: + + forgot to commit this one, removed unused parameter from usage parameter list + +2005-03-13 14:46 robert + + * libmp3lame/: encoder.c, set_get.c, version.c, version.h: + + removing unused ATH auto adjust types. JDs is now the only one + +2005-03-13 14:43 robert + + * ACM/ACM.cpp: + + version + +2005-03-13 14:42 robert + + * frontend/: main.c, parse.c, parse.h: + + print helptext for internal switches only when internal switches are available + +2005-03-13 12:58 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + changed include path option, -i -> -I + +2005-03-13 12:31 takehiro + + * libmp3lame/: lame.c, i386/Makefile.am, i386/Makefile.in, + i386/cpu_feat.nas, i386/cpua.nas + (takehiro-2002_05_07-experimental): + + changed CPU feature detection code (which is from GOGO3), + because the old one uses pushad/popad which is not supported on x86-64. + +2005-03-13 10:16 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-13 10:15 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + added yasm check, to prepare for asm code on i86_64. + +2005-03-12 23:01 robert + + * libmp3lame/vbrquantize.c: + + vbr-new: fixing the -Y bug, that sfb21 wasn't quantized at all + +2005-03-12 20:41 takehiro + + * libmp3lame/: bitstream.c, encoder.h, takehiro.c + (takehiro-2002_05_07-experimental): + + simplify scfsi[] flag. + +2005-03-12 20:41 takehiro + + * libmp3lame/: machine.h, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + clean up "(double)" cast. + +2005-03-12 18:12 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + oops. too much optimized... gi->scalefac[0] may be lesser than 0. + +2005-03-12 17:39 bouvigne + + * libmp3lame/lame.c: + + fix: q2 and higher were NOT enabling substep shaping 2 + +2005-03-12 17:38 bouvigne + + * mpglib/mpg123.h: + + fix for replaygain-accurate + +2005-03-12 17:17 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix "stupid" message when -S + (bugid #1145932) + +2005-03-12 13:58 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + follow variable type change + +2005-03-12 13:54 takehiro + + * configure, configure.in, libmp3lame/Makefile.am, + libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + added ppc directory + +2005-03-12 12:35 takehiro + + * libmp3lame/: bitstream.c, encoder.h, quantize_pvt.h, tables.c, + tables.h, takehiro.c (takehiro-2002_05_07-experimental): + + reduce variable size and changed these order, to archive better cache performance. + +2005-03-11 19:26 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + added "(FLOAT)" cast. + +2005-03-11 17:45 takehiro + + * mpglib/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-11 17:44 takehiro + + * mpglib/Makefile.am (takehiro-2002_05_07-experimental): + + added layer[123].h to the distribution. + +2005-03-11 17:18 takehiro + + * Makefile.in, aclocal.m4, ACM/Makefile.in, ACM/ADbg/Makefile.in, + ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in (takehiro-2002_05_07-experimental): + + regen with the latest gtk.m4 + +2005-03-11 16:49 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + use max value of loudness. + +2005-03-11 16:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix a comment + +2005-03-11 15:31 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + ATH value should be always same value whatever the value of ATHAdjustLimit is. + +2005-03-11 15:29 takehiro + + * libmp3lame/: psymodel.c, version.h + (takehiro-2002_05_07-experimental): + + implement tonality-aware ATH adjustment. + +2005-03-11 15:28 takehiro + + * libmp3lame/psymodel.h (takehiro-2002_05_07-experimental): + + enlarge ATH adjustment range to clarify the flaw of ATH adjustment algorithm. + +2005-03-11 13:58 takehiro + + * debian/Makefile.in (takehiro-2002_05_07-experimental): + + regen... soryy I made it on cygwin... + +2005-03-11 11:14 takehiro + + * libmp3lame/: bitstream.c, newmdct.c, takehiro.c + (takehiro-2002_05_07-experimental): + + added "(FLOAT)" cast. + +2005-03-11 10:27 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + remove C++ style comments + +2005-03-11 10:18 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + make sfBandIndex[] as static. + +2005-03-11 10:11 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix build problem when without decoder (--disable-decoder) + +2005-03-11 09:41 takehiro + + * configMS.h (takehiro-2002_05_07-experimental): + + fix build problem with Makefile.unix + +2005-03-11 09:40 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + supress warnings when without decoder (--disable-decoder) + +2005-03-11 09:40 takehiro + + * frontend/: brhist.c, brhist.h (takehiro-2002_05_07-experimental): + + make Console_IO as static. + +2005-03-11 09:38 takehiro + + * Makefile.unix (takehiro-2002_05_07-experimental): + + TAKEHIRO_IEEE754_HACK -> USE_IEEE754_HACK + +2005-03-11 09:29 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + remove redundant pragma. this one is declared in configMS.h + +2005-03-11 03:06 takehiro + + * Makefile.in, ACM/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-11 03:05 takehiro + + * ACM/Makefile.am (takehiro-2002_05_07-experimental): + + remove unused file + +2005-03-08 23:07 robert + + * Makefile.unix, frontend/parse.c, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/presets.c, + libmp3lame/set_get.c, libmp3lame/util.h: + + removing some unused member of lame_internal_flags structure + +2005-03-06 18:59 bouvigne + + * libmp3lame/takehiro.c: + + faster noquant_count_bits + +2005-03-06 16:56 bouvigne + + * doc/html/history.html: + + history + +2005-03-06 16:17 bouvigne + + * libmp3lame/: presets.c, version.h: + + updated V3 and V2 presets + +2005-03-06 13:17 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed 2.0f -> (FLOAT)2.0, for --enable-all-double + +2005-03-05 18:26 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + slightly faster quantization (not totally sure if it is really faster) + + Also fixed a severe bug in ISO quantization when not using the IEEE hack + +2005-03-05 13:45 bouvigne + + * configMS.h, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/util.h: + + update of the intrinsics coding style + +2005-03-05 12:40 bouvigne + + * libmp3lame/quantize_pvt.c: + + minor speed increase in calc_noise + +2005-03-03 17:01 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + fix IS ratio display. + +2005-03-03 16:59 takehiro + + * frontend/: main.c, timestatus.c + (takehiro-2002_05_07-experimental): + + print out histgram even when CBR encoding. + +2005-03-02 17:50 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-02 17:46 takehiro + + * configure, configure.in (takehiro-2002_05_07-experimental): + + fix --enable-double-float does not work at all. + +2005-03-02 17:01 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + the previous one contains gabages... regen. + +2005-03-02 16:59 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + fix debug build on some non-x86 linux machines. + +2005-03-02 16:58 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix for some 64bit machines (ie. Alpha) + +2005-03-02 15:35 takehiro + + * configure, config.h.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-01 16:59 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + add check for vecLib/vDSP.h, to prepare for Altivec optimization. + +2005-02-28 22:45 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, util.h: + + calc_noise is back to the C version + +2005-02-28 16:52 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + some IEEE754 hack for the CPU with small cache. + +2005-02-27 22:03 bouvigne + + * libmp3lame/quantize_pvt.c: + + calc_noise: + fixed an assertion failure in frames with no big_values + +2005-02-27 20:43 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, util.h: + + sse version of calc_noise (speedup is very small) + +2005-02-27 17:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes fail to encode the short block. + +2005-02-27 15:08 bouvigne + + * configMS.h, libmp3lame/quantize.c, libmp3lame/util.h: + + slightly faster init_xrpow_core_sse + +2005-02-27 14:25 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + now alpha13 + + - replaygain radio/accurate is implemented. + * including replaygain support even when the input is mp3 file. + this is not supported on the current LAME3.x + + - support "TLEN" ID3v2 tag. + + - fix frame # estimation when the input is mp3. + + - fix VBR tag infomation leakage. + + - fix mpeg1 layer1,2 decoder bug. + + - Robert's new eye candy for the frontend. + + - one more reentrant work for the MP3 decoder + + - SSE version of FFT, done by Gilad Raichshtain + + - small optimizations. but replaygain makes it slow down much, + the optimizations are hidden by it... + + - some PPC code added from Robert Stiles and Hans-Peter Dusel. + But not work at all, at least currently. + +2005-02-27 14:16 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + sync with the main branch. + - Robert's new eye candy. + +2005-02-26 14:06 takehiro + + * frontend/: brhist.c, main.c, main.h, parse.c, timestatus.c + (takehiro-2002_05_07-experimental): + + fix duplicated variable of "brhist" + +2005-02-26 09:38 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + added TLEN tag when id3v2 tag is used. + (RFE #1064076) + +2005-02-26 06:21 takehiro + + * frontend/get_audio.c: + + fix mp3 frame # estimation (bugid #934072). + +2005-02-26 05:41 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix # of mp3 frames estimation (bugid #934072). + +2005-02-25 19:01 bouvigne + + * configMS.h: + + intrinsics support for ICL + +2005-02-25 01:21 robert + + * frontend/: brhist.c, timestatus.c: + + RH_HIST: don't print unused channel modes and block types + +2005-02-24 00:27 robert + + * frontend/brhist.c: + + fix scrolling problem I introduced with the last commit + +2005-02-23 17:58 bouvigne + + * libmp3lame/quantize_pvt.c: + + slightly faster calc_noise + +2005-02-22 02:06 robert + + * libmp3lame/psymodel.c: + + Compile time option to enable GPSYCHO like block type switching in NSPSYTUNE. + Due to differences in convolution, the switching does not happen exactly + as in GPSYCHO. (disabled by default, edit psymodel.c to activate) + +2005-02-19 22:47 robert + + * frontend/: brhist.c, brhist.h, main.c: + + some statistics about block type distribution + +2005-02-19 18:48 bouvigne + + * configMS.h: + + conditionnal intrinsics support for MSVC (probably also works for ICL) + +2005-02-19 15:32 bouvigne + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + util.h: + + SSE intrinsic version of init_xrpow + It is now using 1% of total time (using 4% in the standard version) + +2005-02-15 06:39 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix for old compilers. + +2005-02-14 17:01 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added MP3 transcoding TODO. + +2005-02-14 15:46 takehiro + + * libmp3lame/tags.c, testcase.mp3 + (takehiro-2002_05_07-experimental): + + fix information leakage when VBR tag write out. + +2005-02-14 15:14 takehiro + + * Makefile.am, Makefile.in, testcase.mp3 + (takehiro-2002_05_07-experimental): + + added tag itself to test when "make test" + +2005-02-14 13:15 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix it crashes with floating point exception when without --clipdetect option. + +2005-02-14 13:12 takehiro + + * libmp3lame/: bitstream.c, encoder.h, tags.c + (takehiro-2002_05_07-experimental): + + make the clip detection work. + +2005-02-14 13:11 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + do not use "double" + +2005-02-14 12:58 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2005-02-14 12:54 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + clean up. + - remove duplicated pragma. + - do not unroll manually. + +2005-02-13 16:35 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + make it reentrant. + +2005-02-13 14:42 bouvigne + + * libmp3lame/psymodel.c: + + minor speedup + +2005-02-12 16:51 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + oops, enbugged... + now --replaygain-accurate runs (at least it does not crash). + +2005-02-12 16:31 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix decoder initialization when --replaygain-accurate. + +2005-02-12 16:30 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + cleanup + +2005-02-12 15:59 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + prepare for --replaygain-accurate. only preparation. not works. + +2005-02-12 15:58 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + added/cleaned up the replaygain related APIs. + +2005-02-12 08:32 takehiro + + * frontend/main.c, frontend/main.h, frontend/parse.c, + libmp3lame/bitstream.c, libmp3lame/encoder.h, + libmp3lame/gain_analysis.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + replaygain support (1) + - fast replaygain now works. + +2005-02-09 01:45 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + code simplification + +2005-02-08 11:06 takehiro + + * libmp3lame/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + fix mingw build problem, as is done on the main branch by Robert. + +2005-02-07 22:02 robert + + * configure.in, libmp3lame/Makefile.am, libmp3lame/Makefile.in: + + fixing mingw32 configure problems + +2005-02-07 13:45 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + added (FLOAT) cast to the floating point constants.(one more) + +2005-02-07 12:28 takehiro + + * libmp3lame/: encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + reduce malloc/free as is done in the main branch by Robert. + +2005-02-06 23:05 robert + + * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h: + + some MSVC warning level 4 issues resolved + +2005-02-06 20:23 robert + + * libmp3lame/: quantize.c, takehiro.c, vbrquantize.c: + + resolved compiler warnings + +2005-02-06 19:49 robert + + * libmp3lame/: lame.c, machine.h, quantize_pvt.c, util.c, util.h, + vbrquantize.c: + + lame.c: fixed lost break in lame_init_parms + reduced calloc/free calls (where called once per frame, now once per run) + machine.h: removed IIPOW20 + util.c, util.h: removed VBR_t, added in_buffer_[0/1] to lame_internal_flags + vbrquantize.c: fixed some small rounding problem in quantize routines + +2005-02-05 14:14 robert + + * libmp3lame/vbrquantize.c: + + eleminating dead code + expanding preprocessor defines + works probably not with GPsycho anymore, but NSPSYTUNE only (G.not tested) + doesn't try to use 126 bits at minimum per granule anymore, less bloating + on mono like signals where the difference signal is almost zero. + +2005-02-05 13:32 bouvigne + + * libmp3lame/version.h: + + bumped alpha + +2005-02-05 13:31 bouvigne + + * libmp3lame/lame.c: + + enabled ath adjustment for abr/cbr + +2005-02-04 18:34 bouvigne + + * libmp3lame/lame.c: + + sorry, I shouldn't have commited this one + +2005-02-02 04:35 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + remove comma, which is not allowed in C++ (but allowed in C) + +2005-02-02 04:11 takehiro + + * libmp3lame/: psymodel.c, set_get.c + (takehiro-2002_05_07-experimental): + + reduce warning when with "-W" option. + +2005-02-01 10:29 bouvigne + + * libmp3lame/: bitstream.c, lame.c, takehiro.c: + + reduced warnings + +2005-01-30 22:31 robert + + * Makefile.unix, libmp3lame/vbrquantize.c: + + scalefactor allocation should work now as expected + +2005-01-30 22:27 robert + + * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h: + + off by one bug: + we do access iipow20 by values in [0,Q_MAX2] inclusive, + that makes Q_MAX2+1 entries in total + +2005-01-30 19:34 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + there's no GPSYCHO. + +2005-01-30 19:13 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-01-30 19:13 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix automatic CPU specific optimization on cygwin. + +2005-01-30 18:01 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen. + +2005-01-30 18:00 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + hope this will fix the build failure on MinGW + NASM + +2005-01-30 16:00 takehiro + + * libmp3lame/: encoder.h, lame.c, tables.c + (takehiro-2002_05_07-experimental): + + optimize the layout of the coefficients for resampling. + +2005-01-30 15:51 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix it outputs message even when with --silent. + +2005-01-30 14:49 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + added cast to the floating point constants (one more) + +2005-01-30 14:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added cast to floating point constants. + +2005-01-30 12:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use bit-consumption to estimate the "goodness" of quantization, + as is done in LAME 3.x. + +2005-01-29 19:40 bouvigne + + * libmp3lame/presets.c: + + updated vbr presets 9 to 4 + +2005-01-29 18:42 bouvigne + + * libmp3lame/takehiro.c: + + fixed a crash + +2005-01-29 18:11 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c: + + quantize_xrpow: also re-use previously computed data in short blocks + +2005-01-25 21:47 bouvigne + + * libmp3lame/quantize.c: + + X9: more bits into reservoir + +2005-01-23 18:07 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + added replaygain/nogap API + added replaygain commandline option. + +2005-01-23 18:07 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + cosmetic + +2005-01-23 18:06 takehiro + + * HACKING (takehiro-2002_05_07-experimental): + + update current state. + +2005-01-23 16:25 bouvigne + + * libmp3lame/takehiro.c: + + oops, quantize_xrpow optimization has been accidentally disabled in november + +2005-01-23 14:27 bouvigne + + * libmp3lame/lame.c: + + reinstated old q1 (increase only 1 sf per iteration) + +2005-01-22 18:15 bouvigne + + * libmp3lame/quantize_pvt.c: + + problem with q1 and q0 finally found. + I am unable to trace it prior to "the big 3.94 merge". + +2005-01-22 09:19 takehiro + + * libmp3lame/: tags.c, tags.h (takehiro-2002_05_07-experimental): + + fix for unsigned/singed comparison warning. + +2005-01-20 17:10 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + added fftsse.nas support + /\\ - \\/ + +2005-01-20 17:07 takehiro + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + support SSE version of FFT. + +2005-01-20 16:38 takehiro + + * libmp3lame/quantize.c: + + to clarify the relationship of "if-then-else" and suppress warnings from gcc, + added braces. + +2005-01-20 16:35 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in, choose_table.nas, + fftsse.nas, ffttbl.nas (takehiro-2002_05_07-experimental): + + clean up. remove unused code and tables, and update comments. + +2005-01-20 16:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + cosmetic + +2005-01-20 16:28 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-01-19 16:08 takehiro + + * libmp3lame/: tables.c, i386/Makefile.am, i386/Makefile.in, + i386/fftsse.nas, i386/ffttbl.nas + (takehiro-2002_05_07-experimental): + + patched version of FHT_SSE (by Gilad Raichshtain). + and support code for it (by me). + +2005-01-18 07:04 takehiro + + * libmp3lame/bitstream.c, frontend/get_audio.c + (takehiro-2002_05_07-experimental): + + suppress warnings on MSVC6 + +2005-01-16 18:19 takehiro + + * libmp3lame/bitstream.c, libmp3lame/lame.c, mpglib/interface.h + (takehiro-2002_05_07-experimental): + + fix for when --disable-decoder + +2005-01-16 18:12 takehiro + + * mpglib/interface.h (takehiro-2002_05_07-experimental): + + added prototype declaration of decode_init_for_replaygain() + +2005-01-16 18:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix memory leak when RG used. This is enbugged by the previos commit. + +2005-01-16 18:00 takehiro + + * libmp3lame/: bitstream.c, lame.c, mpglib_interface.c + (takehiro-2002_05_07-experimental): + + prepare for ReplayGain merge. + +2005-01-15 18:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + to prevent a floating point exception, add a limit to retry. + +2005-01-15 18:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-01-15 17:15 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + use libsndfile when input is unknown RIFF-wave format + +2005-01-15 14:15 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + libmp3lame/version.c was removed. + +2005-01-15 14:08 takehiro + + * .cvsignore (takehiro-2002_05_07-experimental): + + added configure-stamp + +2005-01-15 14:07 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update frontend TODO. + +2005-01-15 14:02 takehiro + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + libmp3lame/version.c was removed. + +2005-01-15 12:56 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-01-15 12:56 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + always use libsndfile if it is found. + +2005-01-15 12:30 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix mp3 input....oops. + +2005-01-15 12:27 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix endianness of RIFF wave PCM. + +2005-01-15 12:05 takehiro + + * frontend/: get_audio.c, get_audio.h, gtkanal.c, main.c, main.h, + parse.c (takehiro-2002_05_07-experimental): + + cleaning up LIBSNDFILE, part 3. + + use libsndfile only when the frontend does not know how to handle the + input file format. + +2005-01-15 10:54 takehiro + + * frontend/rtp.h (takehiro-2002_05_07-experimental): + + make them static + +2005-01-15 10:53 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + make those which can be static as static. + +2005-01-15 09:43 takehiro + + * frontend/: get_audio.c, parse.c + (takehiro-2002_05_07-experimental): + + clean up arround libsndfile, part 2. + +2005-01-15 09:30 takehiro + + * frontend/: get_audio.c, get_audio.h + (takehiro-2002_05_07-experimental): + + part of cleaning up LIBSNDFILE + +2005-01-15 07:25 takehiro + + * frontend/: get_audio.c, get_audio.h, gtkanal.c, parse.c + (takehiro-2002_05_07-experimental): + + clean up MPEG Layer 1,2,3 input + +2005-01-13 19:18 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2005-01-13 19:17 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.h: + + use bits in quant_comp + +2005-01-13 18:54 bouvigne + + * libmp3lame/presets.c: + + updated ath values for abr/cbr + +2005-01-13 18:20 bouvigne + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h: + + Replaced X9 by the former X10 (ssd). + The abr/cbr modes are using this comparison + +2005-01-13 16:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix rounding of bitrate calculation + +2005-01-12 18:24 takehiro + + * mpglib/: common.c, layer1.c, layer2.c + (takehiro-2002_05_07-experimental): + + patches from the latest debian package, including some boundary check code. + +2005-01-10 17:38 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + changed one function name, iteration_loop -> CBR_iteration_loop + +2005-01-10 17:11 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix it always output the banner even when with --silent/--quiet. + +2005-01-10 14:48 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + testcase for alpha12 + +2005-01-10 13:17 takehiro + + * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): + + remove outdated comments + +2005-01-10 13:16 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + update alpha version and psymodel version + - fix too much slow down with higher VBR quality (like -V0) + - changed long/short block switching code. + +2005-01-10 13:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + changed VBR strategy to prevent "slow down" when the higher quality (like -V0) + is selected. + + When we cannot encode the frame without noticible distortion with the allowed + bitrate, simply encode the frame with the highest allowed bitrate. + +2005-01-10 13:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it abort when higher VBR. enbug at the previous comit. sorry. + +2005-01-10 12:38 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + for better error message + +2005-01-10 12:21 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + better use of "anything goes" scalefactor band when VBR. + faster and smaller bitrate without any quality regression (theoretically) + +2005-01-10 10:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed block switching to use "sum" of energy in subblocks, + instead of their "max". + + and improve comments. + +2005-01-10 09:23 takehiro + + * libmp3lame/quantize_pvt.c: + + seems it cannot build on Linux and some Unix. + to fix this, I changed max() -> Max(). + +2005-01-09 17:31 bouvigne + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h: + + display SSD in mp3x + +2005-01-09 17:31 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + do not compute noise if best quant has no distorted band and current quant + is bigger than the best one + +2005-01-09 09:19 takehiro + + * frontend/: get_audio.h, gtkanal.c, mp3x.c + (takehiro-2002_05_07-experimental): + + cosmetic changes (fix comments and so on) + +2005-01-09 09:14 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + clean up, mainly fixing comments + +2005-01-09 09:06 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, set_get.c, version.c + (takehiro-2002_05_07-experimental): + + merged version.c into set_get.c and fixed comments (there's no GPSYCHO support) + +2005-01-08 11:47 bouvigne + + * libmp3lame/version.h: + + bumped alpha + +2005-01-08 11:46 bouvigne + + * libmp3lame/psymodel.c: + + limited ATH effect in short blocks. + This is fundamentally wrong, but otherwise it produces bad quality + +2005-01-08 10:58 bouvigne + + * libmp3lame/: lame.c, presets.c, quantize.c, quantize_pvt.c, + quantize_pvt.h: + + updated VBR presets to match the cbr/abr changes + (also corrected the --cbr behavior) + +2005-01-08 10:56 bouvigne + + * doc/html/history.html: + + history + +2005-01-05 14:23 takehiro + + * frontend/: main.c, main.h, mp3x.c, parse.c + (takehiro-2002_05_07-experimental): + + remove "lame_XXX" function to separate name space + +2005-01-05 11:08 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated. BTW, it seems plusv site is vanished... + +2005-01-01 18:19 takehiro + + * configure, configure.in (takehiro-2002_05_07-experimental): + + adjust spacing + +2004-12-31 14:42 takehiro + + * frontend/: get_audio.c, main.c, main.h, parse.c + (takehiro-2002_05_07-experimental): + + one more clean up arround get_audio + +2004-12-31 14:33 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + simplify + +2004-12-31 12:22 takehiro + + * frontend/.cvsignore (takehiro-2002_05_07-experimental): + + added mp3rtp to ignore + +2004-12-31 12:07 takehiro + + * frontend/main.c: + + merge 1.73.2.34 -> 1.73.2.35 + fix it outputs CR even when --silent/--quiet + (bug #973302) + +2004-12-31 11:56 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix it outputs CR even when --silent/--quiet + (bug #973302) + +2004-12-31 11:26 takehiro + + * frontend/mp3rtp.c: + + fix buffer overrun(same in my experimental branch). + +2004-12-31 11:23 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + fix buffer overrun(related to bug #1036590) + + # but still it does not work correctly + +2004-12-31 07:37 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + adjust ABR quality/bitrate control + +2004-12-27 16:13 bouvigne + + * libmp3lame/lame.c: + + cbr/abr: adjusted lowpass + +2004-12-27 15:32 bouvigne + + * libmp3lame/presets.c: + + abr/cbr: adjusted m/s and short/long + +2004-12-27 10:03 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + added for large(>2GB) file support. + +2004-12-19 18:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix scalefactor band region... oops. + +2004-12-19 18:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix the calculation of scalefactor value when VBR. + + In the band whose allowed noise threshold is very high, we do not need to + encode the quantized values. Now LAME uses it properly. + +2004-12-19 17:16 takehiro + + * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): + + added parenthis to avoid some side effects. + +2004-12-13 18:16 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + changed the order of members to localize the write access of memory. + +2004-12-13 18:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added hard limits of threshold for ABR, to prevent too much degration + +2004-12-13 17:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes slows down too much. + +2004-12-13 17:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + change threshold for short blocks same as that of long blocks. + +2004-12-13 17:04 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + TAKEHIRO_IEEE754 -> USE_IEEE754 + +2004-12-13 15:09 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-12-13 14:01 takehiro + + * DEFINES, Makefile.MSVC, configMS.h, configure.in, + libmp3lame/bitstream.c, libmp3lame/machine.h, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c + (takehiro-2002_05_07-experimental): + + TAKEHIRO_IEEE754_HACK -> USE_IEEE754_HACK + +2004-12-13 14:01 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + changed a commet. + +2004-12-13 12:40 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix MPEG2 decoding, from foobar2k + +2004-12-12 18:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + use MDCT filter in -q5 and the better. + +2004-12-12 17:52 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix typo + +2004-12-12 17:52 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix table value initialization. + +2004-12-12 17:51 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + fix filtering not working completely... oops. + +2004-12-12 10:57 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix comment + +2004-12-12 10:47 takehiro + + * libmp3lame/: encoder.h, lame.c, newmdct.c, tables.c + (takehiro-2002_05_07-experimental): + + new filtering algorithm. Better resolution (110Hz @ fs=44.1kHz) + and "not" slow much. + + but not enabled by default. + +2004-12-12 08:26 takehiro + + * libmp3lame/i386/ssesub.c (takehiro-2002_05_07-experimental): + + test implementation of SSE support with imtrinsic. + + TODO: + - how to build it and configure support ? + - need more functions to implement. + +2004-12-10 17:56 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization in lossless coding. + +2004-12-10 02:35 takehiro + + * libmp3lame/: encoder.h, lame.c, tables.c, i386/choose_table.nas, + i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + MMX2 support + +2004-12-10 00:21 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-12-09 17:36 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + cosmetic changes & reduce warnings. + +2004-12-09 17:29 takehiro + + * libmp3lame/: quantize.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + MMX version of xr_max() + make VBR/ABR 1% faster. + +2004-12-09 17:05 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + merge from main branch. + - changed words; "default: foobar" -> "default=foobar" + - enable bitrate histogram by default + +2004-12-05 18:10 takehiro + + * libmp3lame/: bitstream.c, takehiro.c + (takehiro-2002_05_07-experimental): + + fix encoding failure of velvet.wav with CBR 128 + +2004-12-05 18:09 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + cosmetic change + +2004-12-05 17:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + considering the shape of window function when long/short block switching. + +2004-12-05 12:18 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen with "tag fixed" version. + +2004-12-05 12:16 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fix VBR(LAME) tag contains a gabage. + +2004-12-02 16:29 takehiro + + * frontend/.indent.pro, libmp3lame/.indent.pro, misc/.indent.pro + (takehiro-2002_05_07-experimental): + + I think no one uses .indent.pro + so I remove them. + +2004-12-02 16:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better threshold controll for ABR. + +2004-11-30 19:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it may overflow + +2004-11-30 18:57 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + VBR speed optimization + +2004-11-30 18:55 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix assertion + +2004-11-30 18:54 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimization by changing table values. + +2004-11-30 10:19 takehiro + + * configMS.h (takehiro-2002_05_07-experimental): + + fix for MSVC "inline" keyword + +2004-11-30 09:39 takehiro + + * libmp3lame/: encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + precalculate width information + +2004-11-30 08:58 takehiro + + * libmp3lame/: encoder.h, lame.c, quantize.c, quantize_pvt.h, + takehiro.c (takehiro-2002_05_07-experimental): + + table size reduction + +2004-11-30 08:55 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + clean up. + +2004-11-30 07:59 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + generalized signbits encoding hack for IEEE754 + +2004-11-30 07:52 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + IEEE754 hack for sign bit. + +2004-11-30 07:41 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix decoding... oops... + +2004-11-30 01:07 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + cleanup + +2004-11-30 01:05 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + tuning VBR scalefactor prediction and fix treatment of almost silent scalefactor. + +2004-11-29 23:41 takehiro + + * libmp3lame/psymodel.c: + + fix ATHlower is always "0". + +2004-11-29 18:01 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix comments + +2004-11-29 18:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + changed VBR scalefactor prediction method. + use "previous" scalefactor's values as predicted value. + +2004-11-29 16:46 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix for out of memory. + +2004-11-29 04:51 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + remove unused definitions + +2004-11-29 04:51 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + remove console.h + +2004-11-28 19:10 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c: + + some FLOAT -> int + +2004-11-28 19:09 takehiro + + * frontend/: Makefile.am, Makefile.in, console.c, console.h + (takehiro-2002_05_07-experimental): + + remove unused files. + +2004-11-28 18:21 takehiro + + * Dll/BladeMP3EncDLL.c: + + added brancket to fix bugid#1003342 on sf.net + +2004-11-28 17:15 takehiro + + * frontend/get_audio.c, frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + "-s" option is now prior to the frequency data in .wav file header. + +2004-11-28 15:21 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed double constants into FLOAT type + +2004-11-28 14:47 takehiro + + * libmp3lame/: lame.c, mpglib_interface.c, quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + To optimize more, changed sign of gfc->width[] (now they are minus value) + +2004-11-28 14:24 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-11-28 14:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-11-28 14:01 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + now ABR is based on VBR, so the -q setting has no meaning. + +2004-11-28 13:58 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed table type int -> char, to avoid cache line conflict. + +2004-11-28 13:40 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + little bit optimizing + +2004-11-28 12:58 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-11-28 12:57 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + oops... use "-mcpu" and "-mtune" by checking gcc version. + +2004-11-28 11:38 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + use calculation instead of table. + (encoding results may be different from previous versions, but that's "lossless" difference) + +2004-11-28 11:06 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + make them static + +2004-11-28 10:33 takehiro + + * configure, configure.in (takehiro-2002_05_07-experimental): + + changed -mcpu -> -mtune, because newer gcc doesn't like -mcpu. + +2004-11-28 08:47 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-11-28 08:47 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + changed optimization option + +2004-11-27 19:43 takehiro + + * Makefile.MSVC, Makefile.in, Makefile.unix, aclocal.m4, configure, + ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.am, frontend/Makefile.in, + frontend/get_audio.c, frontend/get_audio.h, + frontend/lame_vc6.dsp, frontend/main.c, frontend/mp3rtp.c, + frontend/mp3x_vc6.dsp, frontend/portableio.c, + frontend/portableio.h, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + remove portableio.[ch] + use automake 1.9.2 to regen the auto* stuffs. + +2004-11-27 17:28 takehiro + + * frontend/: get_audio.c, portableio.c, portableio.h + (takehiro-2002_05_07-experimental): + + remove Read32BitsHighLow() + +2004-11-27 17:21 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix file size reading + +2004-11-27 17:21 takehiro + + * frontend/: portableio.c, portableio.h + (takehiro-2002_05_07-experimental): + + remove unused functions. + +2004-11-27 09:57 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + remove AIFF support from LAME standard input code. + if you need an AIFF support, use libsndfile instead. + +2004-11-23 18:38 takehiro + + * configure, configure.in, frontend/get_audio.c + (takehiro-2002_05_07-experimental): + + support libsndfile 1.0.x + (and remove support that of 0.x) + +2004-11-23 15:18 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2004-11-23 15:18 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + - ABR quality adjustment. + (oops, I forget to commit in the previous one) + +2004-11-23 15:17 takehiro + + * libmp3lame/: quantize.c, encoder.h + (takehiro-2002_05_07-experimental): + + - ABR quality adjustment (little bit). + - manually inlining finish_VBR_coding() + +2004-11-23 09:46 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + supress magic numbers + +2004-11-23 08:27 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization by reducing branch. + +2004-11-21 18:45 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + now alpha 11, including new ABR + +2004-11-21 18:45 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + clean up + +2004-11-21 18:41 takehiro + + * libmp3lame/: encoder.h, quantize.c + (takehiro-2002_05_07-experimental): + + brand new ABR algorith. + - simply adjust the psycho-threshold by checking (target bitrate) vs. + (current bitrate) + +2004-11-21 18:32 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fix VBR tag is completely messed up! + +2004-11-21 12:28 takehiro + + * libmp3lame/: bitstream.c, encoder.h, lame.c, psymodel.c, + quantize.c, quantize_pvt.h, tables.c + (takehiro-2002_05_07-experimental): + + simplify the initialization of gr_info[][] + +2004-11-21 12:26 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + cosmetic change + +2004-11-21 12:25 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + changed comments + +2004-11-21 12:23 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + optimize in the case of width = 2. + +2004-11-21 10:45 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c + (takehiro-2002_05_07-experimental): + + use 32bit input even when MP3 decoding, to prepare better precision mp3 decoder. + remove "get_audio16()" function, because now it is not needed at all. + +2004-11-20 18:43 takehiro + + * frontend/: gtkanal.c, main.c (takehiro-2002_05_07-experimental): + + To make mp3x use 32bit integer encoding interface. + Because it has used 16bit interface, it could not analyze the 32bit input data. + Now it is fixed. + +2004-11-20 11:49 takehiro + + * frontend/gpkplotting.c (takehiro-2002_05_07-experimental): + + merge from main branch. + - more explicit display of noise values + +2004-11-17 19:54 bouvigne + + * libmp3lame/: quantize.c, util.h: + + noise shaping type 3: + amplify bands within 50% of distortion, + then refine by amplifying the most distorted band + +2004-10-24 14:26 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2004-10-24 14:25 bouvigne + + * libmp3lame/lame.c: + + reworked -q values: + noise_shaping_amp 2 removed + full Huffman search removed in q0 + full outer loop search enabled in q0 + +2004-10-24 14:21 bouvigne + + * libmp3lame/: quantize.c, util.h: + + full outer loop search: + allows to search for better quantization until global_gain==255 + +2004-09-18 10:20 takehiro + + * ACM/ACM.cpp (takehiro-2002_05_07-experimental): + + sync with main branch (r1.17) + - fix by Dmitriy Startsev + +2004-09-18 10:09 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + fix bug item #1003342 + +2004-08-19 19:49 bouvigne + + * doc/html/history.html: + + added 3.96.1 + +2004-08-19 19:36 bouvigne + + * doc/html/modes.html: + + spelling, clarifications + +2004-07-28 20:33 robert + + * configure, configure.in (RELEASE__3_96-bugfix-branch): + + updating configure to version number 3.96.1 + +2004-07-21 18:59 bouvigne + + * doc/html/: history.html, index.html + (RELEASE__3_96-bugfix-branch): + + updated for 3.96.1 + +2004-07-21 18:52 bouvigne + + * ACM/: ACM.cpp, ACMStream.cpp, acm.rc + (RELEASE__3_96-bugfix-branch): + + sync fixes from main branch + +2004-07-21 18:46 bouvigne + + * ACM/ACM.cpp: + + fix by Dmitriy Startsev + +2004-07-11 18:12 bouvigne + + * ACM/acm.rc: + + updated version number because of recent fixes + +2004-07-11 18:11 bouvigne + + * ACM/ACMStream.cpp: + + fixed a potential crash + +2004-07-11 18:05 bouvigne + + * ACM/ACM.cpp: + + Should fix the display issue under win95 + +2004-07-11 17:11 bouvigne + + * ACM/ACM.cpp: + + fix crash when used through directshow. + It still does not work in this configuration, but at least it does not crash anymore. + +2004-06-27 19:32 robert + + * libmp3lame/psymodel.c (RELEASE__3_96-bugfix-branch): + + fixed short block detection using mid and side channels + +2004-06-27 13:02 bouvigne + + * libmp3lame/psymodel.c: + + fixed short block detection using mid and side channels + +2004-06-26 17:08 robert + + * Makefile.unix, ACM/ACM.cpp, libmp3lame/gain_analysis.c, + libmp3lame/gain_analysis.h, libmp3lame/lame.c, + libmp3lame/psymodel.c, libmp3lame/vbrquantize.c, + libmp3lame/version.c, libmp3lame/version.h + (RELEASE__3_96-bugfix-branch): + + back porting some bug fixes into 3.96 stable branch + + patch by takehiro: + + fix bug id 921798 + http://sourceforge.net/tracker/index.php?func=detail&aid=921798&group_id=290&atid=100290 + + This is reported as bug for "BCC", but it may happen for every compiler. + + patch by olcios: + + A better fix for the FP x86 problem. Provided by Andrew Church. Modified by olcios. + + patch by bouvigne: + + restored use of padding when not using bit reservoir + + patch by robert: + + bug fix for lame crashing occasionally when using --vbr-new + +2004-06-26 15:35 bouvigne + + * libmp3lame/encoder.c: + + lame_encode_frame_init + +2004-06-20 17:28 bouvigne + + * doc/html/history.html, libmp3lame/lame.c: + + restored use of padding when not using bit reservoir + +2004-06-18 19:15 bouvigne + + * libmp3lame/: bitstream.c, encoder.c, l3side.h, lame.c, + mpglib_interface.c, newmdct.c, psymodel.c, quantize.c, + quantize_pvt.c, quantize_pvt.h, reservoir.c, takehiro.c, util.c, + VbrTag.c, util.h, vbrquantize.c, vbrquantize.h, version.h: + + FLOAT8 -> FLOAT + +2004-06-06 15:31 bouvigne + + * frontend/: gpkplotting.c, gtkanal.c: + + more explicit display of noise values + +2004-06-06 14:15 bouvigne + + * frontend/gtkanal.c: + + display more scalefactor band splitting lines. + (as in exp branch) + +2004-06-06 09:48 bouvigne + + * doc/html/history.html: + + history + +2004-06-05 15:46 bouvigne + + * libmp3lame/quantize.c: + + small speedup: init_xrpow only up to max non-zero coeff + +2004-05-31 17:35 bouvigne + + * libmp3lame/takehiro.c: + + reduced the number of calls to quantization function + +2004-05-27 23:55 robert + + * libmp3lame/version.h: + + now at 3.97 alpha 2 + +2004-05-27 23:52 robert + + * libmp3lame/: takehiro.c, vbrquantize.c: + + bug fix for lame crashing occasionally when using --vbr-new + PS: scalefactor allocation is still not optimal + +2004-05-26 21:37 bouvigne + + * libmp3lame/takehiro.c: + + fixed a stupid bug + +2004-05-26 21:04 bouvigne + + * libmp3lame/takehiro.c: + + fixed a bug in quantize_xrpow, but it is still crashing + Oddly, cbr/abr are working fine, and low vbr settings are also working fine. + -V2 is not working + +2004-05-23 13:16 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c, util.h: + + Use function pointer to select between quantization methods. + This should ease plugin of vectorized versions + +2004-05-23 12:47 bouvigne + + * libmp3lame/takehiro.c: + + factorized code which is selecting which lines to quantize + +2004-05-23 12:43 bouvigne + + * configMS.h: + + version + +2004-05-23 06:23 takehiro + + * libmp3lame/: tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + make some tables as static + +2004-05-23 04:23 takehiro + + * libmp3lame/i386/: choose_table.nas, fft3dn.nas, quantSSE.nas + (takehiro-2002_05_07-experimental): + + fix possible link problem on cygwin + +2004-05-22 16:18 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix cygwin build + +2004-05-22 14:26 takehiro + + * libmp3lame/: encoder.h, quantize_pvt.h, tables.c, takehiro.c, + i386/choose_table.nas (takehiro-2002_05_07-experimental): + + reduce MMX code, because C code is faster than asm one :p + and trivial coding tweaks. + +2004-05-22 14:02 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimization by reducing conditional jumps + +2004-05-22 13:53 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimization by changing multiply -> shift + +2004-05-22 10:54 takehiro + + * libmp3lame/: takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + faster choose_table_*() implimentation. use cached value of ix_max(). + +2004-05-22 09:14 takehiro + + * libmp3lame/: takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + changed choose_table_*() API, for further optimizations. + +2004-05-16 16:57 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + choose_from2 is only used when table=1 or 3. + +2004-05-16 16:54 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + added ReplayGain tag output. + +2004-05-16 16:49 takehiro + + * include/lame.h, libmp3lame/encoder.h, libmp3lame/lame.c, + libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + Changed API of tag-output function making it possible to return the error code. + and clean up arround tag output code. + +2004-05-16 16:47 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-05-16 16:46 takehiro + + * frontend/: get_audio.c, main.c, portableio.c, portableio.h + (takehiro-2002_05_07-experimental): + + trivial + +2004-05-16 12:48 takehiro + + * Makefile.unix (takehiro-2002_05_07-experimental): + + to follow that amiga_mpega.c is removed. + +2004-05-16 12:47 takehiro + + * frontend/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2004-05-15 13:06 takehiro + + * Makefile.MSVC, libmp3lame/libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + added gain_analysis.[ch] + +2004-05-15 13:04 takehiro + + * ACM/LameACM.inf (takehiro-2002_05_07-experimental): + + (very experimental thing) added "register/unregister program" + +2004-05-15 13:03 takehiro + + * ACM/TODO (takehiro-2002_05_07-experimental): + + it always "preset" so the itmes are removed. + +2004-05-15 12:58 takehiro + + * Makefile.unix (takehiro-2002_05_07-experimental): + + fix testcase + added gain_analysis + +2004-05-15 10:37 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-05-15 10:09 takehiro + + * frontend/: Makefile.am, amiga_mpega.c + (takehiro-2002_05_07-experimental): + + do not use amiga_mpega.c. use mpg123 instead. + +2004-05-15 08:56 takehiro + + * libmp3lame/: bitstream.c, encoder.h, gain_analysis.c + (takehiro-2002_05_07-experimental): + + added replaygain calculation code. + (but not enabled yet) + +2004-05-14 19:29 aleidinger + + * Makefile.in, ACM/Makefile.in, ACM/ADbg/Makefile.in, + ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + regen with new auto* version + +2004-05-14 19:26 aleidinger + + * configure: + + regen with new auto* version + +2004-05-14 19:22 aleidinger + + * aclocal.m4: + + regen with new auto* version + +2004-05-14 19:20 aleidinger + + * frontend/depcomp, libmp3lame/depcomp, mpglib/depcomp, depcomp, + install-sh, missing: + + update to a new version + +2004-05-14 19:12 aleidinger + + * testcase.mp3: + + update it to have a more sane number + +2004-05-14 19:11 aleidinger + + * Makefile.am: + + Tell the users that they do not have to care about the output of make test. + +2004-05-14 17:29 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2004-05-14 17:11 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + reduce warning + +2004-05-14 16:55 takehiro + + * libmp3lame/Makefile.am (takehiro-2002_05_07-experimental): + + added gain_analysis.[ch] + +2004-05-05 06:34 takehiro + + * libmp3lame/: lame.c, mpglib_interface.c + (takehiro-2002_05_07-experimental): + + free the decoding work area of replaygain analysis. + +2004-05-05 06:29 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix memory leakage when it uses decoding functions. + +2004-05-05 06:29 takehiro + + * libmp3lame/: gain_analysis.c, gain_analysis.h + (takehiro-2002_05_07-experimental): + + sync with the latest version + +2004-05-05 06:27 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix for the machine without memset() + +2004-05-05 06:23 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix for the machine without memset() + +2004-05-05 06:22 takehiro + + * frontend/: get_audio.c, main.c + (takehiro-2002_05_07-experimental): + + one more AIFF cleanup + +2004-05-05 06:18 takehiro + + * frontend/: get_audio.c, get_audio.h, portableio.h + (takehiro-2002_05_07-experimental): + + clean up AIFF related code. but still it cannot read AIFF file... + +2004-05-05 06:02 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, mp3rtp.c + (takehiro-2002_05_07-experimental): + + reduce warning + +2004-05-05 05:55 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + remove AMIGA_MPEG support. + use mpg123 instead. + +2004-04-25 13:08 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix "stop/plot" button working. + Thanx reporting, Gaby. + +2004-04-25 12:42 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix obvious bugs... + +2004-04-25 12:33 bouvigne + + * frontend/gtkanal.c: + + fixed mp3x monopolizing processor in its idle loop + +2004-04-25 10:18 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + merged into lame.c + +2004-04-25 10:07 takehiro + + * libmp3lame/: Makefile.in, libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + regen + +2004-04-25 09:47 takehiro + + * Makefile.MSVC, Makefile.unix, frontend/brhist.c, include/lame.h, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/encoder.h, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + merged encoder.c into lame.c. + + remove lame_bitrate_kpbs(). use bitrate_table[][] directly instead of it. + +2004-04-25 09:06 takehiro + + * libmp3lame/: encoder.h, quantize.c + (takehiro-2002_05_07-experimental): + + reduce memory usage by moving maxXR[] from gi to gfc. + +2004-04-25 06:13 takehiro + + * libmp3lame/psymodel.c: + + fix bug id 921798 + http://sourceforge.net/tracker/index.php?func=detail&aid=921798&group_id=290&atid=100290 + + This is reported as bug for "BCC", but it may happen for every compiler. + +2004-04-24 18:29 olcios + + * libmp3lame/gain_analysis.h: + + changed some constants' types to long + +2004-04-24 17:47 olcios + + * libmp3lame/: gain_analysis.c, gain_analysis.h: + + A better fix for the FP x86 problem. Provided by Andrew Church. Modified by olcios. + +2004-04-24 17:02 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix it access to the log2tab[LARGE_BITS] + +2004-04-24 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it always use the bit pressure algorith for short blocks on long blocks. + +2004-04-24 16:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + remove one mp3x TODO item (but still many TODOs about mp3x...) + +2004-04-24 16:33 takehiro + + * testcase.mp3, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/tags.c + (takehiro-2002_05_07-experimental): + + one more error code clean up. + +2004-04-24 16:31 takehiro + + * mpglib/: interface.c, layer3.c + (takehiro-2002_05_07-experimental): + + cosmetic change and comment style fix. + +2004-04-24 16:30 takehiro + + * mpglib/mpglib.h (takehiro-2002_05_07-experimental): + + patch from Dmitriy Startsev. + (yes, this is from Dmitriy... sorry) + +2004-04-24 16:27 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + to check the "free-ed memory access" + +2004-04-24 16:26 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix mp3x cannot displays short mp3 file (it segfaults). + +2004-04-24 13:36 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix flush code + +2004-04-24 13:09 takehiro + + * include/lame.h, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + update error code. + +2004-04-24 11:09 takehiro + + * libmp3lame/: bitstream.c, encoder.h, quantize.c + (takehiro-2002_05_07-experimental): + + fix comments and cosmetic change + +2004-04-24 10:44 takehiro + + * libmp3lame/: bitstream.c, lame.c, tags.c, tags.h, util.c + (takehiro-2002_05_07-experimental): + + fix CRC calculation + remove redundant include + added some comments about flushing + +2004-04-24 10:40 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + remove commnts, which are the same as in lame.h + +2004-04-24 10:39 takehiro + + * libmp3lame/psymodel.c, libmp3lame/quantize.c, include/lame.h, + libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-04-18 18:11 takehiro + + * libmp3lame/: lame.c, tables.c, tags.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + clean up arround VBR Tag frame size. + clean up arround "POSTDELAY" + +2004-04-18 17:30 takehiro + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + follow the filename changes + +2004-04-18 17:24 takehiro + + * libmp3lame/: util.c, util.h (takehiro-2002_05_07-experimental): + + fix build problem on Linux + +2004-04-18 17:16 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + follow the file name change. + +2004-04-18 17:10 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + remove redundant include + +2004-04-18 17:10 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2004-04-18 17:09 takehiro + + * libmp3lame/: Makefile.am, VbrTag.c, VbrTag.h, bitstream.c, + bitstream.h, encoder.c, id3tag.c, id3tag.h, lame.c, tags.c, + tags.h, util.c, util.h (takehiro-2002_05_07-experimental): + + merged "VbrTag.c" and "id3tag.c" into one (tags.c) + merged "VbrTag.h" and "id3tag.h" into one (tags.h) + simplify the CRC related code. + +2004-04-18 12:59 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + fix mpglib problem. The patch is from Kristian Hermansen. + (forwarded by Dmitriy Startsev) + +2004-04-18 12:43 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + encoder.h, id3tag.c, id3tag.h, lame.c, newmdct.c, psymodel.c, + quantize_pvt.h, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + * large clean up arround Tags and Header. + - directly output the Tags/Headers instead of using add_dummy_byte() + + reduce memory usage by using "union" + +2004-04-18 11:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added MP3X bug as TODO. + +2004-04-18 11:11 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, encoder.h, lame.c, + newmdct.c, psymodel.c, quantize.c, tables.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + clean up lame_t structure. + +2004-04-18 10:32 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix MP3X monopolizing the processor in its idle loop. + +2004-04-14 22:15 robert + + * frontend/get_audio.c, mpglib/common.c, mpglib/common.h, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/interface.c, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer2.h, + mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, + mpglib/mpglib.h, mpglib/tabinit.c: + + fixing the decoding issue with the reported "Christmas" song. + I've taken Takehiro's modifications and getting the same output + as he does on his 4.0 branch. Imho this is not the best solution + to the given problem, but it works for now. + +2004-04-14 16:48 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + fix build problem reported by PAN-san. + +2004-04-13 17:21 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix fatal bug in scalefactor value lossless coding. + +2004-04-12 12:29 aleidinger + + * debian/lame.docs: + + PRESETS.draft does not exists anymore. + +2004-04-11 18:16 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + adjust ATH adjustment. + +2004-04-11 18:15 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix "1 sample" delay + +2004-04-11 17:24 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix mp3x FFT energy display. + +2004-04-11 15:39 glessard + + * frontend/main.c, include/lame.h, libmp3lame/set_get.c: + + Added two sets of set/get functions to the API. They modify and read the + nogap_total and nogap_current variables of the internal_flags struct. + Added calls to these functions to the gapless-encoding loop of the frontend. + +2004-04-11 15:06 aleidinger + + * ChangeLog: + + update + +2004-04-11 15:04 aleidinger + + * configure: + + regen + +2004-04-11 15:00 aleidinger + + * config.h.in: + + Add some missing LARGEFILE pieces. This patch is also in the generated + lame-3.96 tarball, it just enters the CVS repository for 3.97 for + organizational reasons. + +2004-04-11 14:58 aleidinger + + * configure.in: + + Welcome to lame 3.97. + +2004-04-11 14:27 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c, set_get.c, tables.c + (takehiro-2002_05_07-experimental): + + merged gfc->num_channels & gfc->channels_in + some trivial clean up. + +2004-04-11 13:54 takehiro + + * libmp3lame/VbrTag.c, libmp3lame/encoder.h, libmp3lame/lame.c, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.c, + libmp3lame/util.h, include/lame.h + (takehiro-2002_05_07-experimental): + + changed error/debug/normal message output code. + +2004-04-11 13:10 takehiro + + * debian/: changelog, lame.docs, rules + (takehiro-2002_05_07-experimental): + + updated for lame4 + +2004-04-11 13:09 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c, mpglib_interface.c, + tables.c (takehiro-2002_05_07-experimental): + + clean up the members of structure lame_t. + +2004-04-11 13:08 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + fix build problem when --disable-analysis-hook + +2004-04-11 13:05 bouvigne + + * libmp3lame/version.h: + + 3.97a1 + +2004-04-11 13:03 bouvigne + + * libmp3lame/version.h: + + release 3.96 + +2004-04-11 13:03 bouvigne + + * doc/html/history.html: + + history + +2004-04-11 13:02 bouvigne + + * debian/changelog: + + updated debian changelog + +2004-04-11 13:01 bouvigne + + * libmp3lame/presets.c: + + use X9 to select abr/cbr quantization, + use sfscale up to 160kbps + +2004-04-11 12:50 bouvigne + + * Makefile.in: + + manually updated Makefile.in + +2004-04-11 12:12 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen (by hand) + +2004-04-11 12:10 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix confusion arround "decoder" and "decode" + +2004-04-11 11:58 takehiro + + * libmp3lame/lame-analysis.h, frontend/gtkanal.c + (takehiro-2002_05_07-experimental): + + trivial + +2004-04-11 11:57 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + one more fix for "very the beginig samples" + +2004-04-11 11:55 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes goes into infinite loop when with i-stereo. + +2004-04-10 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x display delay. + +2004-04-10 16:56 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + remove redandunt code. + +2004-04-10 16:48 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c, newmdct.c, psymodel.c, + quantize.c, set_get.c (takehiro-2002_05_07-experimental): + + fix "start" delay and reduce buffer size. + still there's known bugs in mp3x and the tail part encoding. + +2004-04-10 16:15 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix trivial bug when stereo input + +2004-04-10 15:43 takehiro + + * frontend/: get_audio.c, get_audio.h, gtkanal.c, lametime.c, + lametime.h, main.c, mp3rtp.c (takehiro-2002_05_07-experimental): + + frontend code fix and clean up. + - fix it cut the beginning 17 samples when input is .wav file. + - fix function names. remove "lame_" prefix from the functions which is not + LAME API. + - and some trivial clean up. + +2004-04-10 13:23 takehiro + + * frontend/gpkplotting.c (takehiro-2002_05_07-experimental): + + remove unused definition + +2004-04-10 12:08 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + clarify the comment + +2004-04-04 15:13 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + reduce POSTDELAY when MPEG2 layer3 + +2004-04-04 12:49 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, + libmp3lame/lame.c, libmp3lame/set_get.c, libmp3lame/tables.c + (takehiro-2002_05_07-experimental): + + rename ns-(bass|alto|treble) options and their implementation. + +2004-04-04 12:45 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + always support MPEG1. + +2004-04-04 12:33 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial + +2004-04-04 11:55 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-04-04 11:54 takehiro + + * libmp3lame/: util.c, machine.h + (takehiro-2002_05_07-experimental): + + include file clean up. + +2004-04-04 11:52 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + replace snprintf() with strncat() and so on, for some old systems. + +2004-04-03 19:30 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + work arround for short blocks with i-stereo bug. + and some simplification of i-stereo code. + +2004-04-03 19:25 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + display more scalefactor band splitting lines. + +2004-04-03 17:35 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix uninitialized memory access (found by valgrind). + +2004-04-03 17:28 bouvigne + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h: + + Add X9 quantization selection method. + It increases applaud.wav substancially. + Not enabled by default + +2004-04-03 17:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + try to find better scalefactor combination when i-stereo. + +2004-04-03 17:07 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove one condition which is always stisfied. + +2004-04-03 13:17 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better bit allocation when substep noise shaping. + +2004-04-02 16:37 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix "all even" hack. + +2004-04-02 15:54 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + better bit allocation for CBR. + - increase bit allocation on start/end blocks, where the effect of + best_huffman_divide() is very weak. + - increase bit allocation when --substep is enabled. + + some trivial clean up. + +2004-03-30 15:49 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix it sometimes crashes with -q0 or -q1 + CBR + +2004-03-28 16:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2004-03-28 13:11 bouvigne + + * libmp3lame/version.h: + + 3.96 beta 2 + +2004-03-28 13:10 bouvigne + + * doc/html/history.html: + + history + +2004-03-28 13:10 bouvigne + + * libmp3lame/presets.c: + + updated minimal bitrate for V1 and V2 + +2004-03-28 12:41 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + reduce array size + +2004-03-28 12:16 takehiro + + * libmp3lame/: bitstream.c, encoder.c, encoder.h, lame.c, + quantize.c, tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + warning fix, cleanup, and cosmetic change. + +2004-03-28 12:16 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + there is already VC6 project file. We (maybe) need .net project/solution file. + +2004-03-28 11:29 takehiro + + * frontend/mp3x.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + remove lame_encode_finish() API + +2004-03-28 11:28 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fixed mixed block statics + trivial optimization/clean up + +2004-03-27 17:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + - use calc_sfb_noise() and calc_sfb_noise_fast() do not return minus value. + - little better CBR_2nd_bitalloc() + +2004-03-27 14:50 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + reduce table size. + +2004-03-27 14:49 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix warnings + +2004-03-27 12:38 takehiro + + * libmp3lame/: bitstream.c, quantize.c + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-03-27 11:18 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + simplification arround huffman code output + +2004-03-27 09:47 takehiro + + * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.h, tables.c, + takehiro.c (takehiro-2002_05_07-experimental): + + clean up. fix warning and trivial optimizations. + +2004-03-27 08:31 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2004-03-27 07:48 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + simplify the code arround huffman coding with the escape sequence. + +2004-03-23 22:17 robert + + * libmp3lame/vbrquantize.c, Makefile.unix: + + rewritten vbr-new + + the scalefactor allocation functions take into account now, that some + minimal scalefactor has to be used (the less IXMAX_VAL case) + + the output of vbr-new is not bit identical to previous ones, but the + code is much more straight forward now. + +2004-03-23 22:11 robert + + * libmp3lame/util.c: + + patch for resampling code, found by Takehiro + + this patch removes some unneccessary integer rounding + resulting mp3s where bit identical, but resampling is faster now + +2004-03-23 03:07 olcios + + * frontend/parse.c: + + fixed a compile-time issue in --longhelp + +2004-03-23 01:57 olcios + + * USAGE, doc/html/switchs.html, doc/man/lame.1, frontend/main.c, + frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.h: + + 1. added --noreplaygain switch that disables RG 2. added --replaygain-fast switch that complements --replaygain-accurate. The new switch is enabled by default in the frontend. 3. Made RG analysis no longer default in libmp3lib. RG can still be fully controlled via the libmp3lib interface, but for other interfaces, like DLL or ACM, that provide no RG control, RG analysis is now _disabled_. 4. updated documentation + +2004-03-21 17:53 takehiro + + * frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c, libmp3lame/version.c, mpglib/interface.c + (takehiro-2002_05_07-experimental): + + more API clean up and cosmetic changes. + +2004-03-21 17:51 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + faster float comparison when FLOAT is float. + some cosmetic changes + +2004-03-21 17:14 takehiro + + * libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/id3tag.c, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/machine.h, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.h, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/takehiro.c, mpglib/interface.c + (takehiro-2002_05_07-experimental): + + clean up APIs and variable names (to fix warnings when -Wshadow) + +2004-03-21 16:27 takehiro + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/id3tag.c, + libmp3lame/lame-analysis.h, libmp3lame/machine.h, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/takehiro.c, libmp3lame/version.h + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-03-21 15:51 takehiro + + * libmp3lame/: machine.h, psymodel.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + clean up arround IEEE754 hack. + +2004-03-21 15:47 takehiro + + * libmp3lame/: VbrTag.c, encoder.h + (takehiro-2002_05_07-experimental): + + remove unused "nogap" related variables. + +2004-03-21 15:41 takehiro + + * libmp3lame/: VbrTag.c, encoder.c, encoder.h + (takehiro-2002_05_07-experimental): + + fix invalid vbr header output when ABR. + merge gfc->frameNum and gfc->nVbrNumFrames. + +2004-03-21 14:51 takehiro + + * libmp3lame/: encoder.h, psymodel.c, psymodel.h, quantize.c + (takehiro-2002_05_07-experimental): + + remove magic numbers + +2004-03-21 14:32 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + header file style/comment fix. + +2004-03-21 14:32 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial + +2004-03-21 14:31 takehiro + + * mpglib/: layer3.c, mpg123.h (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-03-21 14:31 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + remove obsolete API. + +2004-03-21 13:51 takehiro + + * ACM/DecodeStream.h, frontend/gtkanal.c, frontend/mp3x.c, + frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/id3tag.c, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/set_get.c, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/util.h, libmp3lame/version.c, mpglib/layer3.c, + mpglib/mpglib.h (takehiro-2002_05_07-experimental): + + clean up header files. + +2004-03-21 13:00 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + new testcase + +2004-03-21 12:37 takehiro + + * libmp3lame/: encoder.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + clean up APIs of set_frame_pinfo() + +2004-03-21 12:34 takehiro + + * libmp3lame/: lame.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + clean up arround buffer flush. + and remove "mf_samples_to_encode" from lame_t. + +2004-03-21 12:33 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2004-03-21 11:55 takehiro + + * libmp3lame/: encoder.c, lame.c, quantize.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + clean up and "possible" bug of resampling code. + - calculate resampling value with "sample_t" instead of "int". + - moved resampling initialization code into tables.c + +2004-03-21 10:37 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + oops, remove gabage... + +2004-03-21 10:34 takehiro + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + clean up internal APIs + +2004-03-21 10:33 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix prototype declaration, to clarify all the ASM code cannot run when FLOAT!=float + +2004-03-21 07:12 takehiro + + * libmp3lame/: lame.c, util.c (takehiro-2002_05_07-experimental): + + header file clean up (I hope it works...) + +2004-03-21 07:10 takehiro + + * libmp3lame/: encoder.c, lame.c, util.h + (takehiro-2002_05_07-experimental): + + do not use calloc in lame_encode_* functions. + and moved some functions for better conjunctions. + +2004-03-21 07:09 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial + +2004-03-21 05:08 takehiro + + * ACM/main.cpp (takehiro-2002_05_07-experimental): + + fix build problem on mingw + +2004-03-20 17:28 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + move fill_buffer() function and make it static and bit optimizing. + +2004-03-20 16:04 takehiro + + * libmp3lame/: quantize.c, util.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + Faster quantization code, based on the ideas from the main line (done by Gaby). + about 2% faster on VBR. The same algorithm can be applied to the CBR, but + currently is not. + +2004-03-19 22:09 olcios + + * libmp3lame/gain_analysis.c: + + changed the pre-processor condition related to the x86's extended FP bug when compiled by GCC with optimizations + +2004-03-19 18:18 olcios + + * libmp3lame/gain_analysis.c: + + improved comment + +2004-03-19 13:17 olcios + + * libmp3lame/gain_analysis.c: + + workaround for the gcc ceil() bug when compiled with optimizations + +2004-03-18 22:00 olcios + + * libmp3lame/gain_analysis.h: + + fixed compile-time problem with uint32_t on gcc + +2004-03-18 16:11 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix uninitialized memory access. + +2004-03-18 14:27 aleidinger + + * libmp3lame/: gain_analysis.c, gain_analysis.h: + + Replace Uint32_t and Int32_t with uint32_t and int32_t. There are only few + instances of them used, so there's no need to typedef new types for them. + + I hope this fixes problems on OSX reported on lame-dev. + + While I'm here, fix a cast (rgData->sampleWindow is long, not int). + +2004-03-17 18:56 aleidinger + + * libmp3lame/: bitstream.c, gain_analysis.c, gain_analysis.h, + lame.c: + + - remove config.h (prerequisite) include from gain_analysis.h + - make sure prerequisites get included in every file before gain_analysis.h + +2004-03-14 18:22 bouvigne + + * libmp3lame/gain_analysis.h: + + solved the potential data type problem + +2004-03-14 17:13 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/bitstream.c, + libmp3lame/encoder.c, libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.h, + libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + mpglib/layer3.c, mpglib/mpg123.h, mpglib/tabinit.c + (takehiro-2002_05_07-experimental): + + cosmetic changes. + +2004-03-14 16:19 takehiro + + * ACM/readme.txt (takehiro-2002_05_07-experimental): + + sync main branch + +2004-03-14 16:18 takehiro + + * ACM/ACMStream.cpp (takehiro-2002_05_07-experimental): + + sync main branch. + +2004-03-14 16:15 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + fix MSVC6+NASM compilation + +2004-03-14 16:00 takehiro + + * ACM/main.cpp (takehiro-2002_05_07-experimental): + + oops, I removed too much. + +2004-03-14 13:47 takehiro + + * frontend/brhist.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c + (takehiro-2002_05_07-experimental): + + cosmetic and reduce warnings + +2004-03-14 12:46 takehiro + + * libmp3lame/: bitstream.h, machine.h, psymodel.c, quantize_pvt.h, + tables.c, util.h (takehiro-2002_05_07-experimental): + + fix build problem on vanilla(without ICC) VC6. + better ATH handling for psymodel + and some minor cosmetic change + +2004-03-14 12:44 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-03-14 12:43 takehiro + + * libmp3lame/: gain_analysis.c, gain_analysis.h + (takehiro-2002_05_07-experimental): + + backport from the main branch. + (only copied. not working currently). + +2004-03-14 11:50 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better 8kHz/128kbps bit allocation. + +2004-03-14 06:17 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + sync main branch (fix freeformat decoding bug done by Robert Hegemann) + +2004-03-13 14:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix a warning. + +2004-03-13 13:00 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + fix build problem on VC6+debug mode + +2004-03-13 12:59 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + fix build problem on VC6 + +2004-03-11 23:43 olcios + + * libmp3lame/bitstream.c: + + fixed a bug related to the usage of mpglib when decoding on the fly + +2004-03-11 19:35 olcios + + * libmp3lame/lame.c: + + fixed compile-time problem when mpglib is disabled + +2004-03-10 20:49 robert + + * doc/html/: contributors.html, history.html: + + history + +2004-03-10 00:50 robert + + * mpglib/interface.c: + + patch for freeformat decoding bug + +2004-03-09 19:04 bouvigne + + * libmp3lame/lame.c: + + typo + +2004-03-09 00:35 robert + + * libmp3lame/vbrquantize.c: + + found a sample which did not give bit identical result with the previous + patch. found out why and corrected it, so now the results for + find_scalefac_ave_[x34|ISO] are identical to the original code, + but --preset fast standard is ~7 percent faster now. + +2004-03-08 04:13 takehiro + + * mpglib/layer1.c (takehiro-2002_05_07-experimental): + + fix layer1 compilation problem. + +2004-03-08 04:12 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + remove unused label + +2004-03-08 04:04 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix alignment work and build problem with icl(MS-Windows) + +2004-03-08 00:54 robert + + * libmp3lame/vbrquantize.c: + + faster "find_scalefac_ave_[x34|ISO]": + this patch gave bit identical results on all tested samples compared to + previous version, so I'm pretty much confident that I don't introduce + a new bug here. + the speeding up of this functions results in an overall speed increase of + almost 7 percent for --preset fast standard + +2004-03-07 23:55 robert + + * Makefile.unix, Makefile.MSVC: + + in case of single precision (FLOAT8==float) we have to make sure that + the mpglib uses REAL==float too. otherwise the decoder will moan about + too small buffers + +2004-03-07 14:18 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + no Xing-VBR header except layer 3 + +2004-03-06 17:52 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix it ignores --scale option. + +2004-03-06 17:37 takehiro + + * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): + + remove Japanese comments. + +2004-03-06 16:32 takehiro + + * libmp3lame/: psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + revert the last psymodel change, and implement the better way to archive + more precise frequency analysis in the lower frequency region. This is + done by changing frequency -> bark conversion equation. + +2004-03-06 16:02 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + remove Jananese comments. + +2004-03-06 15:36 bouvigne + + * libmp3lame/version.h: + + entering beta stage + +2004-03-06 15:34 bouvigne + + * doc/html/history.html: + + history + +2004-03-01 22:21 robert + + * configMS.h, libmp3lame/version.h: + + we are now at 3.96 alpha 4 + +2004-03-01 22:20 robert + + * libmp3lame/psymodel.c: + + bug fix: the highly optimized loops did an off by one access resulting + in often invalid energy and threshold calculations. (both psy models + affected). added a workaround and some assertions. + +2004-03-01 15:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for testcase... (oops, simple mistake) + +2004-02-29 19:55 robert + + * libmp3lame/: bitstream.c, takehiro.c: + + fixing the "huffman decode overrun" and "mp3x problem" + +2004-02-29 18:20 bouvigne + + * doc/html/: contributors.html, history.html: + + no message + +2004-02-29 18:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for 8kHz with 128kbps. + +2004-02-29 17:58 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c, util.h + (takehiro-2002_05_07-experimental): + + better partitioning for psymodel calculation (very much experimental!) + +2004-02-29 17:17 takehiro + + * mpglib/layer1.c: + + fix layer1 decoding bug + +2004-02-29 17:16 takehiro + + * mpglib/layer1.c (takehiro-2002_05_07-experimental): + + fix monural file decoding bug in layer1, reported by Goran Markovic. + +2004-02-26 17:20 takehiro + + * frontend/get_audio.c: + + fixed Layer2 decoding bug reported by Goran Markovic + +2004-02-26 16:31 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fixed Layer2 decoding issue, reported by Goran Markovic. + +2004-02-25 22:10 robert + + * libmp3lame/util.c: + + fixing some aliasing problem in fastlog2 calculation + +2004-02-25 21:46 robert + + * libmp3lame/vbrquantize.c: + + getting rid of a warning about a function being defined but not used + +2004-02-25 21:46 robert + + * libmp3lame/gain_analysis.c: + + fixing code relying on compiler implementation details + +2004-02-25 21:41 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/VbrTag.c, libmp3lame/set_get.c, + libmp3lame/util.c: + + getting rid of some compiler warnings: + - about too long string constants + - about C++ stylish comments + there is still a warning about the use of a C99 hexadecimal floating + constant in portableio.c. will this compile on older C-compilers? + +2004-02-24 02:18 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + testcase with new huffman coding. + +2004-02-24 01:57 olcios + + * libmp3lame/lame.c: + + fixed a bug with --resample and ReplayGain analysis of input data. With certain parameters the data sent to analysis was mangled (some samples missing, some doubled, some in the wrong order). With most natural music the error wasn't vast (below 1dB), but with e.g. a sine wave the gain error was audible. + +2004-02-23 19:48 bouvigne + + * libmp3lame/gain_analysis.h: + + now works under gcc, but I am not sure about the typedefs on different platforms. + +2004-02-23 18:53 bouvigne + + * libmp3lame/: gain_analysis.h, util.h: + + moved replaygain_t to gain_analysis.h + +2004-02-23 14:50 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + improve lossless coding when all the quantized values in the same scalefactor band are even number. + +2004-02-22 21:17 bouvigne + + * libmp3lame/: bitstream.c, gain_analysis.c, gain_analysis.h, + lame.c, util.c, util.h: + + made ReplayGain reentrant + +2004-02-22 21:16 bouvigne + + * libmp3lame/quantize_pvt.c: + + yet another "usefullsize" bug (found by passing the python tests) + +2004-02-22 21:14 bouvigne + + * test/: CBRABR.op, VBR.op, misc.op, shortCBRABR.op, shortVBR.op: + + Updated test files. + As the cbr/abr and vbr ones are quite long, I also added some short ones. + +2004-02-17 00:37 robert + + * libmp3lame/lame.c: + + bug fix: in mono mode all block type where of short type due to forced + block type coupling + +2004-02-16 21:51 robert + + * libmp3lame/gain_analysis.c: + + bug fix by John Edwards (48 kHz replay gain segmentation fault) + +2004-02-15 21:39 robert + + * libmp3lame/: lame.c, vbrquantize.c: + + standard ISO quantization for vbr-mtrh + +2004-02-15 19:05 robert + + * libmp3lame/: lame.c, takehiro.c: + + bug fix: usefullsize may become negativ due to some optimizations + +2004-02-15 13:09 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + sprintf -> snprintf and some trivial clean up. + +2004-02-15 01:20 robert + + * libmp3lame/takehiro.c: + + a simple -V9 -f line lets LAME crash, + there seems to be something wrong with scalefactor width + at least my inserted assertions indicate this + +2004-02-10 02:04 robert + + * libmp3lame/vbrquantize.c: + + try to make some use of max_nonzero_coeff in vbr-mtrh + +2004-02-08 21:58 takehiro + + * frontend/: brhist.c, get_audio.c, get_audio.h, gtkanal.c, + lame.dsp, main.c, mp3rtp.c, parse.c, timestatus.c, timestatus.h + (takehiro-2002_05_07-experimental): + + misc clean ups. + - gfp/gfc things + - mp3 decoding patch from Dmitriy Startsev + - remove an old file + +2004-02-08 21:57 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + mp3 decoding patch from Dmitriy Startsev + +2004-02-08 19:00 bouvigne + + * libmp3lame/presets.c: + + reduced the number of short blocks + +2004-02-08 14:08 bouvigne + + * Makefile.am, lame.dsw: + + removed old workspace + +2004-02-08 12:44 bouvigne + + * libmp3lame/: quantize_pvt.c, takehiro.c: + + inverted a while statement, some int ->unsigned. + I hope that they will be safe this time. + +2004-02-08 03:10 robert + + * libmp3lame/takehiro.c: + + sorry Gabriel, reverting your signed->unsigned patch due to exceptions + while encoding awe32_20sec.wav using --preset standard + +2004-02-08 03:06 robert + + * libmp3lame/quantize_pvt.c: + + sorry Gabriel, reverting your signed->unsigned patch because of + exceptions in awe32_20sec.wav using --preset standard + +2004-02-08 03:01 robert + + * libmp3lame/vbrquantize.c: + + bug fix: scalefactors may have been read from uninitialized memory + +2004-02-08 02:12 robert + + * libmp3lame/: takehiro.c, vbrquantize.c: + + calculating xrpow_max for vbr_mtrh too + +2004-02-07 19:38 bouvigne + + * libmp3lame/: quantize_pvt.c, takehiro.c: + + some int -> unsigned int + +2004-02-06 16:56 takehiro + + * frontend/get_audio.c, mpglib/interface.c: + + mp3 decoding patch from Dmitriy Startsev + +2004-02-04 20:17 bouvigne + + * libmp3lame/version.h: + + bump alpha because of the fixed crash + +2004-02-04 20:16 bouvigne + + * libmp3lame/takehiro.c: + + fixed a crash in quantize_xrpow occuring when using low bitrates (32kbps) + +2004-02-02 15:20 olcios + + * USAGE, doc/html/switchs.html: + + reworded the RG part. Discussed with: Alexander Leidinger + +2004-02-02 14:17 olcios + + * testcase.mp3: + + oops, committed an experimental file, reverting back to 1.80 + +2004-02-02 13:28 aleidinger + + * configure: + + regen + +2004-02-02 13:25 aleidinger + + * configure.in: + + Add a check for 64 bit off_t's ("LARGEFILE" support). + + This may not be enough as lame uses ints and longs where other types + may be more correct, but it may work in some cases. + + HOWTO provided by: Dan Nelson + +2004-02-02 13:02 aleidinger + + * doc/man/lame.1: + + - reformatted the replaygain part (less than 80 characters per line) + - reworded some parts + - add a note about the decoder requierement for the --decode, + --replaygain-accurate and --clipdetect options + + Discussed with: Aleksander Korzynski + +2004-02-02 12:58 aleidinger + + * config.h.in, configure: + + regen + +2004-02-02 12:57 aleidinger + + * configMS.h: + + Add the DECODE_ON_THE_FLY define in the HAVE_MPGLIB case. + +2004-02-02 12:57 aleidinger + + * configure.in, include/lame.h: + + - enable bitrate histogram by default + discussed with Gabriel in Sept. 03 + + - define DECODE_ON_THE_FLY for the replaygain feature in the HAVE_MPGLIB + case too (moved from include/lame.h, I think it's cleaner this way) + discussed with Aleksander Korzynski + +2004-02-02 12:38 aleidinger + + * libmp3lame/id3tag.c: + + Patch from Ti Kan : + ---snip--- + Below is a patch to make Lame 3.95.1 compile and run on AIX, HP-UX, + IRIX, Solaris, UnixWare, SCO Open Server and SunOS 4.1.x. + + The change involves the call to snprintf() in libmp3lame/id3tag.c., + but snprintf() is not available on many of these platforms. I know + that in general replacing snprintf() with sprintf() removes a layer + of string buffer overflow protection, but in this case it should + be safe because the size of string is bounded. + ---snip--- + +2004-01-31 20:05 olcios + + * testcase.mp3, frontend/main.c, libmp3lame/lame.c: + + disabled peak sample detection when LAME tag is not written into the file + +2004-01-29 16:39 bouvigne + + * doc/html/history.html: + + history + +2004-01-29 16:31 bouvigne + + * libmp3lame/version.h: + + bump alpha because of the fixed crashes + +2004-01-29 16:26 bouvigne + + * libmp3lame/takehiro.c: + + fixed bug #886989 + +2004-01-26 14:00 olcios + + * USAGE, doc/html/switchs.html, doc/man/lame.1, frontend/parse.c: + + updated documentation and --longhelp on RG + +2004-01-26 12:05 olcios + + * frontend/main.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/lame.c, libmp3lame/set_get.c, + libmp3lame/util.h: + + removed ReportLameTagProgress (it is not LAME API). Fixed --replaygain-accurate and --clipdetect. + +2004-01-25 10:12 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + fix a bug when the malloc is failed. + +2004-01-25 10:06 takehiro + + * libmp3lame/: lame.c, VbrTag.c (takehiro-2002_05_07-experimental): + + fix id3v2 tag output + +2004-01-25 10:05 takehiro + + * libmp3lame/: VbrTag.h, id3tag.c, id3tag.h, quantize.h + (takehiro-2002_05_07-experimental): + + trivial + +2004-01-25 08:44 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + fix total track number buffer overrun bug. + +2004-01-25 08:34 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + remove unused prototype + +2004-01-25 08:33 takehiro + + * frontend/parse.c, libmp3lame/id3tag.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + total track ID3 tag, requested at sf.net (Request ID #630803) + http://sourceforge.net/tracker/index.php?func=detail&aid=630803&group_id=290&atid=350290 + +2004-01-25 08:30 takehiro + + * lame_vc6.dsw (takehiro-2002_05_07-experimental): + + sync with the main branch.(related mp3x projects) + +2004-01-25 08:28 takehiro + + * frontend/lame.dsw (takehiro-2002_05_07-experimental): + + remove old files. + +2004-01-25 05:45 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added message about "--preset medium" + +2004-01-24 17:37 takehiro + + * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, ACMStream.h, + AEncodeProperties.cpp, DecodeStream.cpp, main.cpp + (takehiro-2002_05_07-experimental): + + fix build problem(I hope...) + +2004-01-24 17:31 takehiro + + * frontend/main.h (takehiro-2002_05_07-experimental): + + sync the main branch. + - include limits.h only when there's the header. + +2004-01-24 17:28 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + sync with the main branch. + - remove message output during reading AIFF file. + +2004-01-21 13:50 aleidinger + + * Makefile.in, ACM/Makefile.in, Dll/Makefile.in, + frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: + + regen + +2004-01-21 13:48 aleidinger + + * frontend/main.h: + + only include limits.h if it is present on the system + +2004-01-21 10:17 bouvigne + + * libmp3lame/quantize.c: + + missing {} in last fix + +2004-01-21 09:41 bouvigne + + * ACM/ACM.dsw, ACM/Makefile.am, ACM/lameACM.dsp, Makefile.B32, + Makefile.DJGPP, Makefile.am, PRESETS.draft, README.B32, + README.DJGPP, Dll/Example.dsp, Dll/Example.dsw, + Dll/MP3EncDll.dsp, Dll/MP3EncDll.dsw, Dll/Makefile.am, + frontend/Makefile.am, frontend/lame.dsp, frontend/lame.dsw, + frontend/mp3x.dsp, frontend/mp3x.dsw, libmp3lame/Makefile.am, + libmp3lame/libmp3lame.dsp, mpglib/Makefile.am, mpglib/mpglib.dsp: + + removed old unmaintained files + +2004-01-20 18:41 bouvigne + + * libmp3lame/quantize.c: + + fixed a crash: + sometimes quantization could overflow because of big xr_pow values + +2004-01-20 17:04 takehiro + + * Dll/Makefile.mingw32 (takehiro-2002_05_07-experimental): + + remove unused include path + +2004-01-20 16:24 takehiro + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, + Makefile.mingw32 (takehiro-2002_05_07-experimental): + + DLL build and minor message fix. but we may need API fix, too... + +2004-01-20 06:22 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + do not include "internal" header file. + +2004-01-18 15:54 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-01-18 15:52 takehiro + + * config.h.in, configure.in, mac/Precompile_Common.h + (takehiro-2002_05_07-experimental): + + remove ieee754_float64_t + +2004-01-18 13:51 takehiro + + * frontend/gtkanal.c, libmp3lame/quantize.c + (takehiro-2002_05_07-experimental): + + mp3x: fix mean bits display when mono or mpeg2 + +2004-01-18 13:48 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + make it sure not to call "experimental" switches when it is not DEBUG mode or ALPHA version. + +2004-01-18 13:21 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix typo + +2004-01-18 12:52 takehiro + + * Makefile.am, Makefile.in, PRESETS.draft, lame.dsw, ACM/ACM.dsw, + ACM/Makefile.am, ACM/Makefile.in, ACM/lameACM.dsp, + Dll/Example.dsp, Dll/Example.dsw, Dll/MP3EncDll.dsp, + Dll/MP3EncDll.dsw, Dll/Makefile.am, Dll/Makefile.in, + frontend/Makefile.am, frontend/Makefile.in, frontend/mp3x.dsp, + frontend/mp3x.dsw, frontend/mp3x_vc6.dsp, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/libmp3lame.dsp, + mpglib/Makefile.am, mpglib/Makefile.in, mpglib/mpglib.dsp + (takehiro-2002_05_07-experimental): + + remove all the outdated files. + copied mp3x_vc6.dsp from main branch. + +2004-01-18 12:51 takehiro + + * libmp3lame/: quantize.c, lame.c + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-18 12:47 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-01-18 12:47 takehiro + + * config.h.in, configure.in, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/takehiro.c + (takehiro-2002_05_07-experimental): + + replace "unsigned long long" -> "uint64_t" + +2004-01-18 12:46 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-17 18:33 takehiro + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, mpglib/interface.c + (takehiro-2002_05_07-experimental): + + moved VBR header related code. now the vbr header structure is in lame.h. + This means applications can use the VBR header information via it. + +2004-01-17 18:21 takehiro + + * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + remove unused definition + +2004-01-17 18:19 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-17 18:14 takehiro + + * libmp3lame/: bitstream.c, lame.c + (takehiro-2002_05_07-experimental): + + fix assert() condition. + remove unused function. + +2004-01-17 18:08 takehiro + + * frontend/main.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h + (takehiro-2002_05_07-experimental): + + remove ReportLameTagProgress(). it is not LAME API at all... + +2004-01-17 18:07 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-17 17:56 takehiro + + * libmp3lame/: encoder.h, lame.c, machine.h, util.h + (takehiro-2002_05_07-experimental): + + include file clean up. + +2004-01-17 17:44 takehiro + + * libmp3lame/mpglib_interface.c, mpglib/interface.c, + mpglib/interface.h, mpglib/mpglib.h + (takehiro-2002_05_07-experimental): + + changed InitMP3() and ExitMP3() API. + +2004-01-17 17:37 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + remove freegfc() prototype + +2004-01-17 17:35 takehiro + + * libmp3lame/: util.c, lame.c (takehiro-2002_05_07-experimental): + + simplify freegfc() + +2004-01-17 17:04 takehiro + + * frontend/brhist.c, frontend/console.c, frontend/get_audio.c, + frontend/gpkplotting.c, frontend/gtkanal.c, frontend/main.c, + frontend/mp3rtp.c, frontend/rtp.c, include/lame.h, + libmp3lame/lame-analysis.h, libmp3lame/machine.h, + libmp3lame/mpglib_interface.c, mpglib/common.c, + mpglib/decode_i386.c, mpglib/interface.c, mpglib/layer1.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/mpg123.h + (takehiro-2002_05_07-experimental): + + renamed "stereo" -> "channels" to make things more clear. + remove unused definitions. + +2004-01-17 14:25 takehiro + + * README.B32, README.DJGPP (takehiro-2002_05_07-experimental): + + too much old. removed. + +2004-01-17 14:23 takehiro + + * API, HACKING, ACM/ACMStream.h, ACM/DecodeStream.h, + Dll/BladeMP3EncDLL.c, Dll/Makefile.mingw32, dshow/Encoder.h, + frontend/brhist.c, frontend/brhist.h, frontend/get_audio.c, + frontend/get_audio.h, frontend/gtkanal.c, frontend/gtkanal.h, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/parse.h, frontend/timestatus.c, + frontend/timestatus.h, include/lame.h, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/id3tag.c, + libmp3lame/id3tag.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/libmp3lame_vc6.dsp, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/quantize_pvt.h, + libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + mpglib/Makefile.am, mpglib/Makefile.in, mpglib/common.c, + mpglib/common.h, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/interface.h, mpglib/layer1.c, + mpglib/layer1.h, mpglib/layer2.c, mpglib/layer2.h, + mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, + mpglib/mpglib.h (takehiro-2002_05_07-experimental): + + Large API clean up. + To make MP3 decoding function reentrant, we need to replace the all API... + + all the variables are now marked as "INTERNAL" and applications cannot + access them directly. + + "lame_global_flags" structure is removed. Use "lame_t" instead. + +2004-01-17 14:11 takehiro + + * Makefile.B32, Makefile.DJGPP (takehiro-2002_05_07-experimental): + + They are too much outdated. removed. + +2004-01-17 11:34 takehiro + + * config.h.in, configure.in, frontend/brhist.c, + frontend/get_audio.c, frontend/get_audio.h, + frontend/gpkplotting.c, frontend/gtkanal.c, frontend/main.c, + frontend/main.h, frontend/parse.c, frontend/portableio.c, + libmp3lame/mpglib_interface.c, mac/Precompile_Common.h, + mpglib/common.c, mpglib/interface.c, mpglib/layer2.c, + mpglib/layer3.c, mpglib/mpg123.h + (takehiro-2002_05_07-experimental): + + cleanup. remove unused functions/definitions. + +2004-01-17 10:51 takehiro + + * frontend/parse.h (takehiro-2002_05_07-experimental): + + fix warning + +2004-01-17 10:45 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix usage message of --priority + +2004-01-17 10:17 takehiro + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + frontend/portableio.c, frontend/portableio.h, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/lame.c, libmp3lame/tables.c, + mpglib/common.c, mpglib/common.h, mpglib/tabinit.c + (takehiro-2002_05_07-experimental): + + remove unused code and old APIs. + make some functions/arrays static. + +2004-01-17 09:35 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix it does not write id3v2 at all. + make bitrate table static. + +2004-01-15 19:05 aleidinger + + * frontend/parse.c: + + We should not need errno... introduced in the last commit, remove it. + +2004-01-15 19:04 aleidinger + + * frontend/parse.c: + + Different fix for the priority parsing bug, uses less code. + + Tested by: Gabriel + +2004-01-15 13:54 bouvigne + + * doc/html/history.html, ACM/TODO, doc/html/index.html, + doc/html/switchs.html: + + doc, history + +2004-01-15 11:15 bouvigne + + * include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + made lame.h identical with or without DECODE_ON_THE_FLY. + made gfp identical with or without DECODE_ON_THE_FLY. + +2004-01-15 01:24 olcios + + * USAGE, frontend/parse.c, libmp3lame/lame.c: + + changed the behaviour of --clipdetect to force RG analysis on decoded data (not input data). Updated --longhelp and documentation + +2004-01-14 14:38 bouvigne + + * libmp3lame/psymodel.c: + + minor code change in mask_add + +2004-01-14 14:16 bouvigne + + * libmp3lame/psymodel.c: + + minor code change in mask_add + +2004-01-13 19:23 bouvigne + + * frontend/parse.c: + + isnumber ->is_number + +2004-01-13 18:35 glessard + + * frontend/get_audio.c: + + Removed a spurious fprintf that occurred during AIFF-C decoding. + +2004-01-13 17:36 bouvigne + + * USAGE: + + ReplayGain ->89dB + +2004-01-13 17:30 takehiro + + * frontend/get_audio.c: + + fix mp3 decoding... + +2004-01-13 13:30 bouvigne + + * frontend/parse.c: + + fixed issue when --priority is not followed by a number but by another + argument. + + Btw, the situation is the same with a lot of other settings. + +2004-01-13 12:36 bouvigne + + * libmp3lame/version.h: + + 3.96a1 + +2004-01-12 18:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + bit better diveding point of huffman coding. + +2004-01-12 17:23 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2004-01-12 16:54 takehiro + + * libmp3lame/: lame.c, quantize.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + implement lame_set_maskingadjust() and lame_set_maskingadjust_short() as is in LAME3.x branch. + + get_XX functions are not yet coded. + +2004-01-12 16:50 takehiro + + * libmp3lame/: lame.c, set_get.c, tables.c + (takehiro-2002_05_07-experimental): + + fix it ignores --athlower and --athcurve option (always use default setting) + and clean up ATH related functions. + +2004-01-12 14:49 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + better mp3 file header analysis (and bugfix). + +2004-01-12 13:44 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + consider subblock position when calculating the PE value + (usually, subblock 3 needs more bits than subblock 1) + +2004-01-12 13:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-12 09:03 bouvigne + + * doc/html/history.html: + + history + +2004-01-12 08:59 bouvigne + + * libmp3lame/gain_analysis.c: + + changed RG level to 89dB + +2004-01-12 08:42 bouvigne + + * libmp3lame/version.h: + + back into 3.95 because of the fixed crash + +2004-01-12 08:41 bouvigne + + * libmp3lame/takehiro.c: + + fixed a potential crash with fast vbr (introduced by myself) + +2004-01-12 07:17 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + added "--sameblock" option, to help the playback problems on some buggy decoders.(like some DVD/CD-R mp3 player) + +2004-01-12 06:50 takehiro + + * frontend/parse.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + clean up quality setting. + +2004-01-11 15:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for short block i-stereo band mis-selection. + +2004-01-11 15:01 bouvigne + + * libmp3lame/lame.c: + + small cleanup in the lowpass/samplefreq selection code + +2004-01-11 14:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + quick fix for i-stereo. it accidentially uses i-stereo on the scalefactor + where we do not want to use (and where we do not set the direction). + +2004-01-11 14:04 takehiro + + * config.h.in, configure (takehiro-2002_05_07-experimental): + + regen + +2004-01-11 13:37 takehiro + + * configure.in, mac/Precompile_Common.h + (takehiro-2002_05_07-experimental): + + remove IEEE854_float80 + +2004-01-11 12:46 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2004-01-11 12:45 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix the fatal reservoir usage bug. + - meaning of "--nores" was opposite. + - it does not use reservoir at all when VBR. + +2004-01-11 12:02 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + fix Tag problem when CBR. + +2004-01-11 12:01 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-11 11:56 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + rtp cannot send vbr header. + +2004-01-11 11:37 takehiro + + * libmp3lame/: VbrTag.c, VbrTag.h + (takehiro-2002_05_07-experimental): + + make PutLameVBR() as static + +2004-01-11 11:22 aleidinger + + * configure: + + regen + +2004-01-11 11:20 aleidinger + + * configure.in: + + Welcome to 3.96. + +2004-01-11 10:21 bouvigne + + * libmp3lame/version.h: + + We are now in 3.96 + +2004-01-11 10:03 takehiro + + * frontend/: get_audio.c, get_audio.h + (takehiro-2002_05_07-experimental): + + ignore the MPEG header whose layer is not same as the filename. + +2004-01-11 09:56 takehiro + + * frontend/get_audio.h (takehiro-2002_05_07-experimental): + + fix build problem with libsndfile. + +2004-01-11 02:21 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove unused tables. + +2004-01-11 01:19 takehiro + + * testcase.mp3, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + choose from 4 code table when ixmax = 2, 3, ..., 7 + +2004-01-10 22:47 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-10 21:20 olcios + + * doc/html/history.html: + + cosmetic + +2004-01-10 20:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x sometimes crashes. + +2004-01-10 20:31 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen by hand + +2004-01-10 20:29 takehiro + + * Makefile.B32, Makefile.unix, config.h.in, configure.in, + frontend/mp3x.dsp (takehiro-2002_05_07-experimental): + + remove symbol HAVE_GTK + +2004-01-10 20:20 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial + +2004-01-10 20:16 takehiro + + * frontend/mp3x.c, libmp3lame/lame.c, libmp3lame/set_get.c, + libmp3lame/set_get.h, mpglib/layer3.c + (takehiro-2002_05_07-experimental): + + clean up and fix analyzer hook related code. + +2004-01-10 20:15 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial + +2004-01-10 19:34 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c, + i386/choose_table.nas (takehiro-2002_05_07-experimental): + + clean up huffman coding tables. + +2004-01-10 19:24 takehiro + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + little bit better huffman coding when ix_max = 2 + +2004-01-10 18:25 takehiro + + * testcase.mp3, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + little bit better huffman coding when ix_max is 1. + +2004-01-10 17:28 olcios + + * USAGE: + + cosmetic change + +2004-01-10 16:14 takehiro + + * libmp3lame/lame.c: + + fix the display of lowpass fileter config. + +2004-01-10 16:01 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + main line merge. + - Gaby's VBRtag fix (do not include the vbr header into the vbr seek table as it breaks a player). + +2004-01-10 15:57 takehiro + + * ACM/ACMStream.cpp (takehiro-2002_05_07-experimental): + + main line merge + - Gaby's buffer size fix. + +2004-01-10 12:59 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added one more error check. + +2004-01-10 12:31 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update + +2004-01-10 12:29 aleidinger + + * testcase.mp3: + + testcase for 3.95 + +2004-01-10 12:29 takehiro + + * doc/html/history.html: + + added mpglib fix + +2004-01-10 12:18 aleidinger + + * ChangeLog: + + update CVS history + +2004-01-10 12:13 aleidinger + + * libmp3lame/version.h: + + Preperation for 3.95 RELEASE. + + Please notify me and Gabriel in case you change something from this + point in time upto the 3.96 version bump. + +2004-01-10 12:10 aleidinger + + * doc/html/history.html: + + faster on PPC + +2004-01-10 12:03 aleidinger + + * libmp3lame/util.h: + + do not use FastLog implicitely + +2004-01-10 12:02 aleidinger + + * configMS.h: + + explicit use of FastLog + +2004-01-10 11:42 aleidinger + + * configure: + + regen + +2004-01-10 11:35 aleidinger + + * configure.in: + + - use the IEEE 754 hack and FastLog on x86 and PPC only + - make the use of FastLog explicit + + PPC performance: + 1GHz G4 + "Standard" : 396 s (100%) + FastLog : 371 s ( 93%) + FastLog, 754 : 365 s ( 92%) + 754 : 388 s ( 98%) + + 2GHz G5 (dual), cbr, vbr + "Standard" : 166 s (100%), 328 s (100%) + FastLog : 169 s (102%), 338 s (102%) + FastLog, 754 : 148 s ( 90%), 288 s ( 88%) + 754 : 145 s ( 87%), 279 s ( 85%) + + On a G5 we shouldn't use FastLog (I assume highly optimized for G5 log*() + routines in the standard math library), but configure doesn't know ATM how + do check for a G5. + +2004-01-10 10:38 takehiro + + * frontend/get_audio.c: + + backport from my experimental branch to fix the crash when invalid input. + +2004-01-10 10:27 takehiro + + * mpglib/: common.c, interface.c, layer1.c, layer3.c: + + backport from my experimenhtal branch, to fix the crash when invalid input. + +2004-01-10 09:55 takehiro + + * doc/html/history.html: + + effetc->affect reported at sf.net (BugID #867502) + +2004-01-08 19:55 olcios + + * libmp3lame/gain_analysis.c: + + comment update (clarification) + +2004-01-08 19:14 olcios + + * USAGE: + + Removed --replaygain from USAGE, because it had been defaulted and the option removed from LAME. Updated information on --replaygain-accurate. + +2004-01-08 15:58 bouvigne + + * configMS.h, doc/html/history.html, doc/html/index.html: + + predicted release date: January 11th + +2004-01-07 17:58 aleidinger + + * frontend/Makefile.in: + + regen + +2004-01-07 17:57 aleidinger + + * frontend/Makefile.am: + + Add mp3x_vc6.dsp. + + Requested by: Gabriel + +2004-01-07 17:35 bouvigne + + * README.WINGTK, lame_vc6.dsw, frontend/lame_vc6.dsp, + frontend/mp3x_vc6.dsp, libmp3lame/libmp3lame_vc6.dsp, + mpglib/mpglib_vc6.dsp: + + added back mp3x to the VC6 projects + +2004-01-07 15:57 aleidinger + + * configure: + + regen + +2004-01-07 15:51 aleidinger + + * configure.in: + + - bump version to 3.95 + - disable layer1 decoding by default + - reword the layer options and some option descriptions + - enable the use of the fast log function on every CPU (for x86 this + is implicit by the ieee hack) + +2004-01-07 15:26 aleidinger + + * config.h.in: + + add the fast log option + +2004-01-07 13:26 bouvigne + + * mpglib/mpglib_vc6.dsp: + + disable layer I + +2004-01-06 14:38 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2004-01-06 13:53 bouvigne + + * libmp3lame/VbrTag.c: + + do not include the vbr header into the vbr seek table as it breaks a player + +2004-01-05 18:58 takehiro + + * libmp3lame/: lame.c, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + fix ABR bitrate + changed VBR quality <-> compression ratio mapping. + changed gfc->masking_lower setting + +2004-01-05 17:51 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix a warning. + reduce prefetch length. + +2004-01-05 16:25 bouvigne + + * doc/html/history.html: + + history + +2004-01-05 16:19 bouvigne + + * ACM/ACMStream.cpp: + + fixed a buffer requirement error + +2004-01-05 09:45 bouvigne + + * libmp3lame/: l3side.h, quantize.c, takehiro.c: + + faster count_bits + +2004-01-05 07:35 takehiro + + * mpglib/common.c (takehiro-2002_05_07-experimental): + + one more fix for seg.fault + +2004-01-05 07:30 takehiro + + * mpglib/common.c (takehiro-2002_05_07-experimental): + + fix seg.fault (not good way, indeed) + +2004-01-05 07:16 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix typo and disable LAYER1 decoding by default. + +2004-01-05 07:15 takehiro + + * libmp3lame/i386/Makefile.in, configure + (takehiro-2002_05_07-experimental): + + regen + +2004-01-05 07:14 takehiro + + * libmp3lame/i386/Makefile.am (takehiro-2002_05_07-experimental): + + fix build problem + +2004-01-05 06:47 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + more strict syncword check when no LAYER1/2 support. + +2004-01-04 19:45 takehiro + + * libmp3lame/: lame.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + finished fixing mono encoding (initialization problem of inter-channel masking value) + remove useless code in stereo->mono mix down. + fix ATH adjustment code initialization. + +2004-01-04 17:35 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix mono-mode bitrate selection. + +2004-01-04 15:39 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix the condition to use freeformat or not. + +2004-01-04 11:04 bouvigne + + * libmp3lame/lame.c: + + corrected -k + +2004-01-03 17:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + trivial clean up and fix comments. + +2004-01-03 16:47 bouvigne + + * doc/html/history.html: + + history + +2004-01-03 16:22 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix possible highpass filter display problem. + +2004-01-03 16:17 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + changed short block switching threshold for 8/16 kbps. + +2004-01-03 04:11 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix "FATAL" typo. + some code clean up. + +2004-01-03 04:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for mono encoding. + +2004-01-02 19:53 bouvigne + + * libmp3lame/lame.c: + + changed quality mapping + +2004-01-02 19:51 bouvigne + + * libmp3lame/takehiro.c: + + faster count_bits + +2004-01-02 19:49 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + Faster quantizations + Only 5% speedup when using Takehiro's ieee754 hack, but about 60% + speedup otherwise. (Should please Mac users) + +2004-01-02 09:02 takehiro + + * mpglib/common.c (takehiro-2002_05_07-experimental): + + check emphasis bits in mpeg header. + +2004-01-01 17:52 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix warning on mingw (and probabry VC) + +2004-01-01 17:51 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + changed function name, lame_decode_fromfile -> decode_fromfile because it is not LAME standard API. + +2004-01-01 17:23 takehiro + + * mpglib/layer1.c (takehiro-2002_05_07-experimental): + + fix stereo value handling. + +2004-01-01 15:22 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix location where emphasis is recorded. + +2004-01-01 15:21 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + prepare for better MP3 header detection. + +2003-12-31 19:07 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix assertion condition. + fix i-stereo bit usage counting. + +2003-12-31 04:27 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-12-30 19:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up.(code to check the MAX_BITS is moved) + +2003-12-30 18:52 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + ok, new years present. + here goes alpha10! + +2003-12-30 18:47 takehiro + + * ACM/ddk/.cvsignore (takehiro-2002_05_07-experimental): + + added to ignore Makefile + +2003-12-30 18:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it makes invalid mp3 file when 320kbps. + +2003-12-30 18:45 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added one more check. + trivial coding clean up. + +2003-12-30 17:12 takehiro + + * Makefile.in, aclocal.m4, configure, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen with automake1.7.9, autoconf 2.59 on cygwin. + +2003-12-30 13:03 takehiro + + * testcase.mp3, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-12-30 12:28 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix masking_lower hadling + +2003-12-30 12:26 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + do not store FFT value when not using analyzer + +2003-12-30 10:23 takehiro + + * configure, ACM/Makefile.in, ACM/ddk/Makefile.in + (takehiro-2002_05_07-experimental): + + regen + +2003-12-30 10:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2003-12-29 18:45 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + hadling masking_lower is moved to quantize.c from psymodel.c + fix bug in threshold calculation of short block last sfb. + better intensity stereo band selection.(do not use IS at lower frequency) + fix comments + +2003-12-29 18:09 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + omit MDCT calculation beyond cutoff. + The gain(for MDCT) is arround 15% when 18kHz cutoff. + +2003-12-29 08:05 takehiro + + * libmp3lame/: set_get.c, tables.c + (takehiro-2002_05_07-experimental): + + reservoir size fix for 320kbps over. + +2003-12-29 08:05 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added one error check. + +2003-12-28 15:41 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix reservoir max size configuration. + +2003-12-28 13:57 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix free format detection. 320kbps is not always free format. + +2003-12-28 12:48 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix MPEG2 scalefactor output. + +2003-12-28 12:47 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + better error detection for debug mode. + +2003-12-28 12:11 takehiro + + * frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix -k option. + +2003-12-28 11:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix warning + +2003-12-28 11:48 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + many cosmetic change and clean up. + +2003-12-27 17:45 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + use more fine resolution infomation for block switching. + +2003-12-27 14:55 takehiro + + * testcase.mp3, libmp3lame/psymodel.c + (takehiro-2002_05_07-experimental): + + update testcase + clean up psymodel.c + +2003-12-27 14:24 takehiro + + * frontend/gtkanal.c, libmp3lame/encoder.c, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.h, + libmp3lame/version.h (takehiro-2002_05_07-experimental): + + now psymodel version 0.91-3 + - new ATH adjustment. + * ATH adjustment per channel, not per granule. + - display ATH adjustment value in mp3x. + - new long/short block switching code. + * now it is aware of post masking. + * switch to short block when post echo may happen. + - better long->short masking (threshold/energy) conversion. + +2003-12-23 10:29 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + added one comment. + +2003-12-23 10:22 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-12-23 10:13 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning/fixing norm[] values of the spreading function. + +2003-12-22 16:36 bouvigne + + * doc/html/history.html: + + history + +2003-12-22 09:44 bouvigne + + * libmp3lame/quantize_pvt.c: + + reduced warnings + +2003-12-21 18:41 bouvigne + + * frontend/: get_audio.c, main.c, parse.c: + + reduced warnings + +2003-12-21 18:14 bouvigne + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, quantize.c, + quantize_pvt.c, quantize_pvt.h, util.h: + + FLOAT8 -> FLOAT + +2003-12-21 16:09 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + safer threshold calculation arround attack detected position. + +2003-12-21 15:12 takehiro + + * configure.in, ACM/Makefile.am (takehiro-2002_05_07-experimental): + + added ACM/ddk directory + +2003-12-21 15:06 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + update comment as is done in main line. + +2003-12-21 15:03 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix short block ATH scaling and masking threshold. + +2003-12-21 13:30 takehiro + + * libmp3lame/: psymodel.c, lame.c, tables.c + (takehiro-2002_05_07-experimental): + + - temporal masking aware short/long block switching. + - tuning reduce side value. + - fixed long->short block threshold conversion factor. + - fixed array declaration bug in short block threshold calculation. + +2003-12-21 12:46 bouvigne + + * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, + psymodel.h, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, util.h: + + FLOAT8 -> FLOAT + +2003-12-21 12:30 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove bval_width[] related code. + +2003-12-21 12:25 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix 8kbps decode bug (backport from main line) + +2003-12-21 10:16 bouvigne + + * libmp3lame/: VbrTag.c, lame.c, psymodel.c, util.c, util.h: + + FLOAT8 -> FLOAT + +2003-12-20 14:48 bouvigne + + * libmp3lame/psymodel.c: + + fixed calc_interchannel_masking when encoding to mono + +2003-12-20 14:33 bouvigne + + * libmp3lame/lame.c: + + fixed lowpass value for high bitrate vbr profiles + +2003-12-20 14:31 bouvigne + + * libmp3lame/version.h: + + Using 3.95 as version number. + We will decide latter what to choose about version numbers + +2003-12-19 13:55 bouvigne + + * libmp3lame/version.h: + + Moved back to 3.94b in order to not have some 3.95b spreading on the web. + We now have to decide if we should go in the 3.94release direction or in the 3.95b direction + +2003-12-18 18:47 bouvigne + + * libmp3lame/version.h: + + welcome in 3.95 + +2003-12-18 17:13 aleidinger + + * ChangeLog: + + ChangeLog for 3.94b. + +2003-12-18 15:46 bouvigne + + * libmp3lame/version.h: + + 3.94b + +2003-12-18 12:54 aleidinger + + * frontend/get_audio.c: + + Takehiro noticed a bug in the pipe fix, it results in a click sound at + the end of the encoding of BlackBirds.wav. + + This fix is a merge from the experimental branch and doesn't seem to be + harmful while encoding over a pipe, but I'm not sure if I was able to + reproduce the situation where the original fix was needed. + + I've tested: + mkfifo pipetest + lame -preset 96 pipetest pipetest.mp3 + other shell: cat wav >pipetest + +2003-12-17 18:45 bouvigne + + * frontend/parse.c: + + help + +2003-12-17 11:52 bouvigne + + * libmp3lame/psymodel.c: + + updated comment regarding spreading function + +2003-12-15 17:07 bouvigne + + * mpglib/layer3.c: + + fixed 8kHz decoding + +2003-12-15 11:48 takehiro + + * ACM/ddk/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + sync with main line + +2003-12-14 17:56 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added some new items. + - highpass filter for psycho-analysis. + - temporal-masking-aware block switching. + +2003-12-14 17:52 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + clean up s3_func() (no results difference) + remove normalization and bark width consideration. + # hehe, it's now obvious to see which frequency makes strong masking :p + +2003-12-12 18:22 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + coding style update. + check the INFO sub-chunk in LIST chunk. + +2003-12-12 18:21 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix it treat the chunk after data chunk as part of data chunk. + +2003-12-12 17:24 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + trivial style update (including comment style, etc). + +2003-12-12 16:52 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + remove nb_1 from gfc. + +2003-12-12 16:15 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix last change (oops, I checked-in the wrong version...) + +2003-12-12 16:12 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix bit reservoir handling when looooooooow bit rate. + +2003-12-12 14:31 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-12-12 14:31 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added error check code. + +2003-12-12 13:29 takehiro + + * frontend/main.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + clean up variables in gfc and gfp. + +2003-12-09 17:22 olcios + + * frontend/parse.c: + + Fixed typo. + +2003-12-09 17:19 olcios + + * frontend/parse.c: + + Fixed an error message. + +2003-12-09 16:08 aleidinger + + * ACM/Makefile.in: + + regen + +2003-12-09 16:01 aleidinger + + * configure: + + regen + +2003-12-09 15:51 aleidinger + + * ACM/ddk/Makefile.in: + + Add the autoconf Makefile. + +2003-12-09 15:49 aleidinger + + * configure.in: + + Add the ACM/ddk subdirectory. + +2003-12-09 15:49 aleidinger + + * ACM/Makefile.am: + + Add the ddk subdirectory. + +2003-12-09 15:48 aleidinger + + * ACM/ddk/Makefile.am: + + Add an automake Makefile. + +2003-12-09 15:06 bouvigne + + * libmp3lame/version.h: + + Bump alpha + +2003-12-09 15:05 bouvigne + + * frontend/parse.c: + + do not display --r3mix in help + +2003-12-09 15:03 bouvigne + + * doc/html/history.html: + + 3.94 release date? + +2003-12-09 14:59 bouvigne + + * doc/html/: basic.html, examples.html, history.html, index.html, + modes.html, presets.html, switchs.html: + + 3.94 documentation + +2003-12-08 16:52 bouvigne + + * libmp3lame/VbrTag.c: + + Use integer format for ReplayGain peak value + +2003-12-06 20:54 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2003-12-06 20:10 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + make best_huffman_divide() as static. + make it do not call best_huffman_divide() twice when vbr. + +2003-12-06 19:00 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix warning of quantize_sfb_3DN() prototype declaration. + fix pseudo half step bug on 3DNow!/SSE machines. + +2003-12-06 17:17 takehiro + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + remove experimental switches from context structure. + +2003-12-06 13:37 takehiro + + * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-12-06 11:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + reduce subblock gain value. + +2003-12-06 07:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + VBR code update. + - fixed sf value range limit(not fatal, but possible quality degrade in higher VBR quality mode). + - adjust the initiail value of scalefactor search for speed up(arround 1 or 2%).CVS: ---------------------------------------------------------------------- + +2003-12-05 12:49 aleidinger + + * libmp3lame/i386/Makefile.in: + + add missing " + +2003-12-04 12:26 aleidinger + + * libmp3lame/i386/Makefile.in: + + nasm -> NASM fix + +2003-12-03 16:35 takehiro + + * testcase.mp3, libmp3lame/quantize.c + (takehiro-2002_05_07-experimental): + + changed short block noise estimation (max noise -> sum noise). + +2003-12-03 15:32 takehiro + + * frontend/rtp.c (takehiro-2002_05_07-experimental): + + sync with main line. + +2003-12-03 03:09 olcios + + * include/lame.h: + + comments / doc + +2003-12-03 02:18 olcios + + * frontend/get_audio.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c: + + Brought back the possibility to run lame_decode_init() more than once + +2003-12-03 01:44 olcios + + * frontend/get_audio.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/set_get.c: + + Made it impossible to simultaneously use mp3 input and decoding on the fly. + +2003-12-01 17:45 takehiro + + * configure, Dll/Makefile.in, frontend/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen + +2003-12-01 17:44 takehiro + + * libmp3lame/i386/Makefile.am (takehiro-2002_05_07-experimental): + + backport Alex's dirty hack, which is less dirty than mine :) + +2003-12-01 17:43 takehiro + + * ltmain.sh (takehiro-2002_05_07-experimental): + + replaced the one from libtool 1.5 + +2003-12-01 15:45 takehiro + + * frontend/depcomp, libmp3lame/depcomp, misc/depcomp, + mpglib/depcomp (takehiro-2002_05_07-experimental): + + removed unused file (build system uses ../depcomp) + +2003-11-29 12:14 aleidinger + + * ChangeLog: + + update + +2003-11-29 12:10 aleidinger + + * test/cvscheck.sh: + + add the automated test script which mt used to run every day + +2003-11-29 12:09 aleidinger + + * configure: + + regen with autoconf 2.57 + +2003-11-29 12:06 aleidinger + + * ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, + Dll/Makefile.in, Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: + + regen with automake 1.7 + +2003-11-29 12:05 aleidinger + + * configure.in: + + - Check for some features a little bit earlier. + - Fix a AC_DEFINE so the newer tools don't moan. + +2003-11-29 12:03 aleidinger + + * libmp3lame/i386/Makefile.am: + + HACK HACK HACK, UGLY UGLY HACK! + + make this work with libtool 1.5 + + If anybody knows how do this in a more sane way, please teach me how to + do it. + +2003-11-29 12:01 aleidinger + + * ltmain.sh: + + update with libtool 1.5 version + +2003-11-29 12:00 aleidinger + + * aclocal.m4: + + update with newer autotools + +2003-11-29 11:59 aleidinger + + * config.h.in: + + add some missing undefs + +2003-11-29 11:16 aleidinger + + * frontend/rtp.c: + + fix some errors which are new with gcc 3.x + +2003-11-29 09:49 aleidinger + + * frontend/depcomp, libmp3lame/depcomp, mpglib/depcomp: + + use the ones provided by automake 1.7 + +2003-11-29 09:45 aleidinger + + * missing, mkinstalldirs, depcomp, install-sh: + + use the ones provided by automake 1.7 + +2003-11-29 09:44 aleidinger + + * config.guess, config.sub: + + use the ones provided with libtool 1.5 + +2003-11-28 18:23 takehiro + + * frontend/brhist.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/lame.c, libmp3lame/tables.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + clean up bitrate histgram code. + +2003-11-28 17:53 takehiro + + * libmp3lame/: bitstream.c, lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + remove unused definition (resample_t) + rename Bit_stream_struct -> bit_stream_t + +2003-11-28 17:30 takehiro + + * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c, + tables.c, util.h (takehiro-2002_05_07-experimental): + + move and rename "gfp->exp_nspsytune" => "gfc->nsPsy.tune" + +2003-11-28 17:20 takehiro + + * libmp3lame/: psymodel.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + remove "ath_over" from III_psy_ratio + +2003-11-28 17:17 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + make lame_decode1_headersB_clipchoice() as static + +2003-11-28 16:48 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + remove unused code + +2003-11-28 16:46 takehiro + + * libmp3lame/: util.c, util.h, i386/cpu_feat.nas + (takehiro-2002_05_07-experimental): + + simplify the CPU feature detection code. + +2003-11-28 16:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + divide TODO item about encoding quality problem into 2 piece. + +2003-11-28 16:38 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix comments. + +2003-11-28 16:24 takehiro + + * libmp3lame/: encoder.c, lame.c + (takehiro-2002_05_07-experimental): + + trivial + +2003-11-28 16:24 takehiro + + * libmp3lame/: quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + fix warning + simplify the code. + +2003-11-28 16:11 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + sync main branch (lowpass adjustment when mono) + and trivial clean up. + +2003-11-28 16:04 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove unused definition + +2003-11-28 16:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + do not use reservoir when -q 9 + +2003-11-28 15:58 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + remove documents about removed options + +2003-11-28 15:53 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/quantize.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + clean up VBR finish code and remove "-F" option. + LAME always use VBR_hard_min now. + + The option is quite "FAQ"ed and hacky/dirty work arround to conceal + the psymodel flaw. + +2003-11-28 15:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + changed ResvFrameBegin() arguments. + +2003-11-28 15:29 takehiro + + * libmp3lame/: VbrTag.c, encoder.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + clean up pinfo setting code (for analyzer) + +2003-11-28 15:16 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial simplification. + +2003-11-28 15:16 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + make gcd() as static. + +2003-11-28 15:02 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + resampling code bug is fixed. + +2003-11-28 15:01 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + make fill_buffer_resample as static function. + fix the bug in resampling (like from 44099 to 44100) and remove work arround code. + +2003-11-28 14:27 bouvigne + + * libmp3lame/set_get.c: + + Disabled replaygain decode because it crashes when using mp3 input + +2003-11-28 12:22 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + simplify the loudness approx code. + +2003-11-27 12:27 takehiro + + * ACM/ddk/msacmdrv.h (takehiro-2002_05_07-experimental): + + sync with mainline + +2003-11-27 12:20 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, tables.c, + takehiro.c (takehiro-2002_05_07-experimental): + + simplify the function interfaces. + remove unused definitions. + trivial style update. + +2003-11-27 08:24 bouvigne + + * ACM/: readme.txt, ddk/msacmdrv.h: + + Allow compilation of ACM codec without Microsoft platform DDK + +2003-11-26 13:06 bouvigne + + * lame_vc6.dsw: + + Updated ACM dependencies + +2003-11-25 17:32 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial + +2003-11-25 17:22 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + loop hoisting: loop for writing sideinfo and loop for writing part2/part2_3 is now integrated. + +2003-11-25 17:14 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial + +2003-11-25 17:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix byte/bit confusion. + +2003-11-25 16:53 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + do not write magic strings in the post drain part. + +2003-11-25 16:48 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, + config.h.in, configure, configure.in + (takehiro-2002_05_07-experimental): + + update build-system related files for new asm code. + (I hope they runs correctly) + +2003-11-25 16:43 takehiro + + * frontend/gtkanal.c, libmp3lame/encoder.c, libmp3lame/encoder.h, + libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x block-type display + +2003-11-25 15:55 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + psymodel.h is not system header file. + +2003-11-25 15:52 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + remove priority setting code. + we already have a --priority switch on Windows environment, so we do not + need it. + +2003-11-25 15:43 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + one more... + +2003-11-25 15:20 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, quantize.c, tables.c, + util.h (takehiro-2002_05_07-experimental): + + more simplification arround bit stream write out code. + +2003-11-24 18:26 takehiro + + * libmp3lame/: bitstream.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + clean up bitstream write out code. + - header(side info) output code is now very simplified. + - variable length bitstream output code is now simple and fast. + +2003-11-24 17:05 bouvigne + + * libmp3lame/lame.c: + + Do not compute ReplayGain when not using vbr header + +2003-11-24 16:13 takehiro + + * libmp3lame/: bitstream.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + simplify the bitstream output code. + +2003-11-24 14:42 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + added SSE version of quantize_ISO() + +2003-11-24 13:52 bouvigne + + * libmp3lame/lame.c: + + Reduced bandwith when encoding in mono + +2003-11-24 13:39 bouvigne + + * libmp3lame/lame.c: + + Fixed low bitrates lowpass and sampling rate values + (I probably broke it recently) + +2003-11-23 20:13 takehiro + + * frontend/gtkanal.c, libmp3lame/encoder.c, + libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + update mp3x display (arround block switching parameter). + +2003-11-23 20:05 takehiro + + * frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + remvoe unused features and variables + - ms_sparsing() + - tune() + +2003-11-23 19:47 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/set_get.c, + libmp3lame/set_get.h, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + now it always uses same short block switching threshold for L/R/M channel and S channel. + +2003-11-23 19:41 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 19:31 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + short block threshold tuning. + (of course, need more...) + +2003-11-23 11:22 takehiro + + * libmp3lame/: encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + clean up mode extension update code. + +2003-11-23 10:45 takehiro + + * libmp3lame/: bitstream.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + simplify bitstream writing code. + +2003-11-23 10:27 takehiro + + * libmp3lame/: bitstream.c, psymodel.c + (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-11-23 10:04 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix comments and comment out the unused definitions. + +2003-11-23 10:03 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 10:03 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix and simplify the usage message. + +2003-11-23 09:47 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up block type update code + +2003-11-23 09:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 09:14 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix for MPEG2.5 (for the case band width = 2) + +2003-11-23 09:09 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + clean up writing table-id code. + +2003-11-23 09:08 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 08:36 takehiro + + * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): + + remove unused code. + +2003-11-22 19:41 takehiro + + * libmp3lame/: bitstream.c, util.h + (takehiro-2002_05_07-experimental): + + optimize bitstream output code. + +2003-11-22 19:14 takehiro + + * libmp3lame/i386/: fft.nas, ffttbl.nas + (takehiro-2002_05_07-experimental): + + remove unused files + +2003-11-22 19:14 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + remove unused extra-dist files + +2003-11-22 18:58 takehiro + + * libmp3lame/: bitstream.c, util.h + (takehiro-2002_05_07-experimental): + + optimize writeheader() + +2003-11-22 18:39 takehiro + + * ACM/TODO (takehiro-2002_05_07-experimental): + + update + +2003-11-22 18:39 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of count1 region quantization + +2003-11-22 18:12 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix message. + +2003-11-22 18:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-22 18:09 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + added version string to SSE and E3DNow. + +2003-11-22 17:43 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix ABR mode sometimes uses 640kbps (!) + +2003-11-22 17:40 takehiro + + * libmp3lame/: lame.c, tables.c, i386/fft3dn.nas + (takehiro-2002_05_07-experimental): + + E3DNow! version of fht() + +2003-11-22 17:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2003-11-22 13:30 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up and merge CBR/ABR code. + +2003-11-22 13:19 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of quantize_ISO() + +2003-11-22 13:03 takehiro + + * Dll/Example_vc6.dsw (takehiro-2002_05_07-experimental): + + sync main branch + - Corrected the dll example project + +2003-11-22 09:03 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-11-22 08:45 takehiro + + * libmp3lame/: quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix warning and build problem + +2003-11-22 07:57 takehiro + + * Dll/MP3export.pas (takehiro-2002_05_07-experimental): + + sync main branch. + - fix calling convention + +2003-11-22 07:56 takehiro + + * Dll/BladeMP3EncDLL.def (takehiro-2002_05_07-experimental): + + added some interface. + +2003-11-22 07:55 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + sync main branch + - display issue fix. + +2003-11-22 07:51 takehiro + + * Dll/Makefile.am (takehiro-2002_05_07-experimental): + + sync main branch. + - added files for vc6 and mingw. + +2003-11-21 17:07 bouvigne + + * Dll/BladeMP3EncDLL.c: + + Display issues + +2003-11-21 17:03 takehiro + + * libmp3lame/: quantize.c, takehiro.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of quantization. + and some asm code optimization/clean up. + +2003-11-21 16:50 bouvigne + + * Dll/BladeMP3EncDLL.c: + + Minor corrections + +2003-11-20 16:04 bouvigne + + * Dll/MP3export.pas: + + Fixed calling convention + +2003-11-20 13:30 bouvigne + + * Dll/Example_vc6.dsw: + + Corrected the dll example project + +2003-11-20 11:16 bouvigne + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + include/lame.h, libmp3lame/set_get.c: + + Changed some Vorbis messages + +2003-11-20 11:08 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + Removed mode_automs + +2003-11-20 10:57 bouvigne + + * libmp3lame/: fft.c, lame.c, util.c, util.h: + + Removed CPU_features.i387 + +2003-11-20 10:46 bouvigne + + * libmp3lame/presets.c: + + Aliased r3mix to vbr-mtrh V3 + +2003-11-19 13:00 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + anihilated streaming/radio/portable named presets, leaving only the -Vx + +2003-11-18 16:18 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix warning + +2003-11-18 16:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + new reservoir handling code for ABR. + +2003-11-18 15:37 takehiro + + * testcase.mp3, libmp3lame/bitstream.c + (takehiro-2002_05_07-experimental): + + simplify the sign hadling code. + +2003-11-18 15:29 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + simplify the error check code. + +2003-11-18 15:21 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimize self check code. + +2003-11-18 14:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + For better/faster encoding, narrowen the frequency region when lower -q. + +2003-11-18 13:59 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-11-18 13:57 takehiro + + * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix bit overflow when i-stereo + tuning CBR bit allocation (on_pe() function) + clean up finish_iteratio_one(). + +2003-11-18 13:20 bouvigne + + * libmp3lame/presets.c: + + low vbr-mtrh presets + +2003-11-18 12:52 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-11-18 12:51 takehiro + + * libmp3lame/: lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + fix CBR_2nd_bitalloc() (it may makes invalid mp3 frame). + remapping -q setting. old -q2 is now -q1 + enable CBR_2nd_bitalloc() when -q 0,1 and 2 + +2003-11-18 12:22 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-18 12:18 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + new CBR bit allocation/reservoir handling code. + still need tuning (there remains some killer samples), + but usually brings better result. + +2003-11-17 02:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix substep noise shaping. + +2003-11-16 18:07 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix possible bit counting bug when CBR and higher -q option. + +2003-11-16 18:05 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + do not display the CPU have i387. + +2003-11-16 17:57 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix typo + +2003-11-16 17:02 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x display. + +2003-11-16 16:11 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix ID3v2 tag length when --keeptag. + +2003-11-16 12:43 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c + (takehiro-2002_05_07-experimental): + + now --keeptag keeps ID3v2 tag when transcoding. + +2003-11-16 11:04 takehiro + + * libmp3lame/: lame.c, machine.h, psymodel.c, set_get.c, tables.c, + util.c, util.h, version.c (takehiro-2002_05_07-experimental): + + update comment style (// -> /* */) + +2003-11-16 11:04 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2003-11-16 10:47 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix one more l3_enc initialization + +2003-11-16 10:31 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix segmentation fault especially when higher VBR quality like -V0. + +2003-11-16 10:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix trivial(but fatal) bug in short block threshold calculation loop... + +2003-11-16 10:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix count1 bit-counting (we must zered all zero region because we use 4-stride in count1 region). + +2003-11-16 09:55 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix i-stereo+VBR fails to encode (internal buffer inconsistency). + +2003-11-15 18:15 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimize Huffmancode() by dividing it into tableindex > 15 or not. + +2003-11-15 18:14 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-11-15 17:07 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix warning + +2003-11-15 17:05 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, takehiro.c, + util.h (takehiro-2002_05_07-experimental): + + always use quantize_best() except init_globalgain(). + and some code clean up. + +2003-11-15 11:21 takehiro + + * configure: + + regen + +2003-11-15 11:14 takehiro + + * configure.in: + + fix migw build(as is done in the experimental branch) + +2003-11-15 10:50 takehiro + + * frontend/get_audio.c: + + fix ambiguous message (Bug ID #830035) + +2003-11-14 16:13 bouvigne + + * libmp3lame/lame.c: + + use presets by default when using vbr-mtrh + +2003-11-14 13:24 bouvigne + + * libmp3lame/presets.c: + + vbr-mtrh high vbr presets + +2003-11-12 17:12 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + check and display if the CPU supports Extended 3DNow! + (no E3DNow! code available yet.) + +2003-11-12 15:47 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix build problem for newer NASM ... + +2003-11-12 06:43 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix build problem (on some old nasm) + +2003-11-12 06:43 takehiro + + * libmp3lame/i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + fix build problem + +2003-11-11 04:27 takehiro + + * libmp3lame/i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + added Extended 3DNow! check code. + +2003-11-11 04:26 takehiro + + * libmp3lame/: lame.c, quantize.c, util.c, util.h, + i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + sync main branch (SIMD->SSE change) + +2003-11-10 15:41 bouvigne + + * libmp3lame/: fft.c, lame.c, util.c, util.h, i386/cpu_feat.nas: + + SIMD->SSE + +2003-11-10 15:31 bouvigne + + * libmp3lame/: lame.c, presets.c: + + Add missing values for vbr_rh -Vx scale + +2003-11-10 15:27 takehiro + + * libmp3lame/i386/fft3dn.nas: + + fix cygwin build (with nasm) + +2003-11-10 15:27 takehiro + + * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): + + fix cygwin build with nasm + +2003-11-10 14:58 bouvigne + + * libmp3lame/: lame.c, presets.c: + + fix lowpass values for low vbr presets + +2003-11-10 12:06 bouvigne + + * libmp3lame/: lame.c, presets.c, set_get.c: + + Use presets by default when using vbr_rh + +2003-11-09 17:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix warning + +2003-11-09 17:38 takehiro + + * libmp3lame/: quantize.c, tables.c, tables.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of calc_sfb_noise() (for CBR/VBR/ABR) + and simplify the look up table structure. + +2003-11-09 15:28 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of calc_sfb_noise_fast() (for VBR) + +2003-11-09 14:35 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not call CBR_2nd_bitalloc() when -q >= 6. + sometimes it results in an invalid mp3 file. + +2003-11-09 14:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + revert some part of 1.110.2.190->1.110.2.191. + +2003-11-09 09:43 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of calc_noise() + +2003-11-09 09:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-09 07:54 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove fftsse, fftfpu related code. + +2003-11-09 06:24 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + always use -q 5 when VBR because VBR mode needs -q 5 + (higher -q setting makes no output change and lower -q setting sometimes makes it to encode invalid mp3 file) + +2003-11-08 17:51 takehiro + + * libmp3lame/: takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + revert part of last change, because it may seg-faults when -q 6,7,8,9 + +2003-11-08 17:45 takehiro + + * libmp3lame/: quantize.c, takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + changed quantization code. Now it quantizes >8191+15 values into 8191+15. + +2003-11-08 17:44 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix precision problem. + +2003-11-08 16:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + VBR code cleanup and fix minor bug + - when there's not enough bits, it may decrease bitrate too much. + +2003-11-08 07:00 takehiro + + * libmp3lame/i386/: fftfpu.nas, fftsse.nas + (takehiro-2002_05_07-experimental): + + I cannot make it work and run faster than compiler output. so I removed. + +2003-11-07 16:52 takehiro + + * libmp3lame/: encoder.c, takehiro.c + (takehiro-2002_05_07-experimental): + + trivial code clean up + +2003-11-07 16:46 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimization + - precalc adjusted ATH and use them when mask_add() + +2003-11-07 14:54 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + optimize asm code by dirty hack + +2003-11-07 14:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization(loop hoist) + +2003-11-07 14:37 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR mode... + +2003-11-06 17:37 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix trivial bug when non-nasm case + +2003-11-06 17:18 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix substep shaping. + +2003-11-06 17:13 takehiro + + * libmp3lame/: psymodel.c, quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + - prevent "double ATH handling" problem. + - new xr^(3/4) code for 3DNow! (From the latest gogo) + - added multiplication function to sumofsqr_3DN() + +2003-11-05 17:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize calc_noise() at "0 or 1" region + +2003-11-05 14:03 bouvigne + + * libmp3lame/: presets.c, psymodel.c: + + Use Vx scale for presets + +2003-11-03 23:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix subblock_gain is not used(it ignores the switch). + added ugly optimization arround calc_sfb_noise() and calc_sfb_noise_fast(). + +2003-11-03 22:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up substep shaping code bit. + +2003-11-03 18:41 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use 3DNow! more. + +2003-11-03 18:16 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial bug fix... + +2003-11-03 18:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it always uses substep noise shaping (it ignore the option) when VBR. + +2003-11-03 18:09 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + added pow075_3DN (3DNow! version of calculating xr^(3/4)) + added "sum x^2" code for 3DNow! and use it. + +2003-11-03 17:44 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + considering the Fourier analysis limitation, it should estimate loudness + of lower frequency region when ATH adjustment. + +2003-11-03 15:00 bouvigne + + * libmp3lame/: lame.c, presets.c: + + allow vbr presets to not be enforced (preparative work before defaulting) + +2003-11-03 14:04 takehiro + + * testcase.mp3, libmp3lame/quantize.c + (takehiro-2002_05_07-experimental): + + fix infinite loop when short blocks. (oops, trivial bug...) + +2003-11-02 12:10 takehiro + + * libmp3lame/: machine.h, quantize.c, quantize_pvt.h, takehiro.c, + util.h, i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + Precalculate the fabs(xr). + moved xr34[] and absxr[](=fabs(xr)) into gfc. + better alignment work for the compiler not support "align". + +2003-11-01 20:06 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + more comments update and clean up + +2003-11-01 19:50 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize substep noise shaping (trancate_smallspectrums()) + and count_bits() related code. + +2003-11-01 19:30 takehiro + + * libmp3lame/: quantize.c, util.h + (takehiro-2002_05_07-experimental): + + clean up(fix comments and misleading variable names). + +2003-11-01 19:14 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + more clean up. + +2003-11-01 18:47 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + clean up the comments + +2003-11-01 18:33 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + more coding style and comment clean up. + do not quantize all the band in CBR_2nd_bitalloc(). this increase the speed and fix bug when -q6,7,8 + +2003-11-01 18:16 takehiro + + * libmp3lame/: bitstream.c, quantize.c, tables.c, tables.h, + takehiro.c (takehiro-2002_05_07-experimental): + + general code clean up + reduce division in calc_noise() + +2003-11-01 14:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix bug in sfb21 handling code(it mistook dB scale and real scale). + +2003-11-01 12:44 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + coding clean up + +2003-10-30 15:29 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + optimize quantization of "must be quantized to 0 or 1" region. + +2003-10-30 15:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added new setting, "-q 6" + +2003-10-30 14:57 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix small quantization bug in VBR. + +2003-10-30 14:17 takehiro + + * libmp3lame/: encoder.c, quantize.c + (takehiro-2002_05_07-experimental): + + fix low bitrate and intensity stereo. + +2003-10-30 13:09 bouvigne + + * libmp3lame/lame.c: + + Moved replaygain analysis after resampling. It was causing problems when + used with non standard sampling frequencies. + +2003-10-27 15:57 takehiro + + * configure.in, configure (takehiro-2002_05_07-experimental): + + added to use TAKEHIRO_IEEE754_HACK on AMD64 machines. + +2003-10-26 17:58 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-10-26 16:50 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + update -q mapping and comment. + now -q0/-q1 is same as -q2 (-h) + +2003-10-26 16:26 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + more alignment work. + +2003-10-26 16:26 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize calc_noise(). as in main branch, it re-uses the previous + calc_noise result where its scalefactor value is not changed + +2003-10-26 15:22 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added "SIMD (asm used)" message + +2003-10-26 15:22 takehiro + + * libmp3lame/: quantize.c, machine.h + (takehiro-2002_05_07-experimental): + + more alignment work. + +2003-10-26 14:54 takehiro + + * libmp3lame/: machine.h, util.h + (takehiro-2002_05_07-experimental): + + alignment work + +2003-10-26 14:48 takehiro + + * libmp3lame/: quantize.c, takehiro.c, util.h, i386/Makefile.am, + i386/Makefile.in, i386/nasm.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + SSE version of calculate xr^(3/4), from gogo-no-coda. + +2003-10-26 14:46 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2003-10-26 12:44 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/tables.c, libmp3lame/takehiro.c + (takehiro-2002_05_07-experimental): + + update substep noise shaping. + - pseudo half step is now default when -q 0 to 4. + - in VBR mode, use substep noise shaping if 320kbps is not enough. + - changed behaivior of --substep option (see the usage message) + +2003-10-26 11:52 takehiro + + * libmp3lame/: encoder.c, quantize.c + (takehiro-2002_05_07-experimental): + + more generalized optimization by using gfc->xrMaxNum. + - we can also use it now with VBR. + +2003-10-26 11:27 takehiro + + * frontend/mp3x.c, include/lame.h + (takehiro-2002_05_07-experimental): + + fix build problem... + +2003-10-26 07:43 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use adjust_global_gain() function when pseudohalf step noise shaping. + fix it sometimes exceed the global_gain limit. + +2003-10-26 07:38 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix build problem when with DECODE_ON_THE_FLY + +2003-10-26 07:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix when subblock_gain or scalefactor_scale is used. + +2003-10-25 20:53 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + re-quantizing only on the sfb where "distortion" is found. (faster !) + + revert "double"->"FLOAT" conversion. + - it makes some problems on the machine of which FLOAT is REALLY FLOAT + (only 32it precision) + +2003-10-25 19:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize/debug gi->xrNumMax usage. + +2003-10-25 19:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added loop break code by looking the noise in sfb21 because there's no sfb value and we can do nothing with it. + +2003-10-25 19:30 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + off by one of max bitrate in VBR. + +2003-10-25 19:28 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, encoder.c, lame.c, + set_get.c (takehiro-2002_05_07-experimental): + + clean up + +2003-10-25 19:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR/ABR with --nores encode. + + and clean up reservoir code. + +2003-10-25 19:27 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + fix VbrInit code. + +2003-10-25 18:12 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix + (takehiro-2002_05_07-experimental): + + fix dependency (remove reservoir.c) + +2003-10-25 18:10 takehiro + + * libmp3lame/: encoder.c, lame.c, lame_global_flags.h, + mpglib_interface.c, psymodel.c, quantize.c, quantize.h, + set_get.c, util.h (takehiro-2002_05_07-experimental): + + analysis hook code clean up. + +2003-10-25 18:10 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added decoder thread unsafe problem. + +2003-10-25 18:02 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix build problem + +2003-10-25 15:52 takehiro + + * configure, configure.in, libmp3lame/machine.h + (takehiro-2002_05_07-experimental): + + remove --enable-all-float option from configure, and make --enable-double-float instead. + +2003-10-25 07:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + faster calc_noise() by using max number of xr. + +2003-10-25 07:15 takehiro + + * libmp3lame/: encoder.c, quantize.c, tables.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + precise number of max xr for long blocks. (faster CBR/ABR) + code clean up. + +2003-10-25 06:31 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added mp3x bug. + +2003-10-23 12:09 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets + +2003-10-22 16:22 takehiro + + * libmp3lame/: encoder.c, quantize.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + count bits/quantization optimization. + - do not quantize/search all zero region where obviously all zero region. + (use previous quantization result to determine the region) + +2003-10-22 13:55 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + remove unused definition + +2003-10-22 10:21 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + changed "double" -> "FLOAT" + +2003-10-22 10:17 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix sometimes preflag does not decrease the bitrate. + +2003-10-22 10:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-10-22 08:26 takehiro + + * libmp3lame/takehiro.c: + + fix assertion failure reported by Gabriel. + +2003-10-22 07:33 takehiro + + * libmp3lame/bitstream.c: + + better debug message + +2003-10-22 07:11 takehiro + + * libmp3lame/: libmp3lame.dsp, libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + update for reservoir code clean up. + +2003-10-21 16:31 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, id3tag.c + (takehiro-2002_05_07-experimental): + + one more clean up + +2003-10-21 16:31 takehiro + + * DEFINES, TODO (takehiro-2002_05_07-experimental): + + NEW_DRAIN is now defaulted and it solves wmp6.4 problem + +2003-10-21 16:22 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + remove duplicated error check + make NEW_DRAIN as default + code clean up. + +2003-10-21 09:05 bouvigne + + * libmp3lame/: set_get.c, set_get.h, vbrquantize.c: + + cleanup + +2003-10-20 16:10 olcios + + * doc/html/history.html: + + Added the word "Radio" to the description of the ReplayGain contribution, as it is actually the "Radio" ReplayGain that is computed. + +2003-10-20 15:02 takehiro + + * libmp3lame/: VbrTag.c, VbrTag.h, encoder.c + (takehiro-2002_05_07-experimental): + + clean up VBRTAG related code. + - now the tag is same when --freeformat 128 and when -b 128 + - do not make seek table when CBR + +2003-10-20 13:19 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, VbrTag.c, bitstream.c, + quantize.c, quantize_pvt.h, reservoir.c, reservoir.h, tables.c, + util.h (takehiro-2002_05_07-experimental): + + large clean up arround reservoir related code + +2003-10-20 12:30 bouvigne + + * doc/html/history.html: + + history + +2003-10-20 11:08 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-10-20 07:20 bouvigne + + * libmp3lame/quantize_pvt.c: + + fixed build problem + +2003-10-19 23:26 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix comments. + +2003-10-19 17:19 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-10-19 17:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify the short block noise calculation. + +2003-10-19 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR when i-stereo and completely mono. + +2003-10-19 14:14 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + update + +2003-10-19 14:05 takehiro + + * libmp3lame/: machine.h, mpglib_interface.c, newmdct.c, + quantize.c, tables.c, util.c (takehiro-2002_05_07-experimental): + + remove FLOAT8 at all. + +2003-10-19 14:04 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + "floating" scalefactor optimization when preflag is enabled. + +2003-10-19 13:42 takehiro + + * libmp3lame/: bitstream.c, quantize.c, tables.c, takehiro.c + (takehiro-2002_05_07-experimental): + + fix MPEG2 Layer3 scalefactor store code. + - fix i-stereo mode. + - fix preflag usage. + +2003-10-19 13:13 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + remove unused member + +2003-10-19 12:50 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + Fix subband filtering initialization code. + I hope this solves "very the 1st frame" problem. + +2003-10-19 12:20 takehiro + + * libmp3lame/: bitstream.c, takehiro.c + (takehiro-2002_05_07-experimental): + + use preflag when MPEG2 + added istereo bitstream output code when MPEG2 + (only output code. not support at the bit-allocation). + +2003-10-19 11:41 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + oops, I checked in the wrong version ... + +2003-10-19 11:39 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update + +2003-10-19 11:37 takehiro + + * libmp3lame/: encoder.c, lame.c, newmdct.c, psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + fix very the 1st frame encoding. + at least MPEG2 Layer3 works, but still there's problem... + +2003-10-19 06:24 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix warning when not HAVE_GTK + +2003-10-19 04:45 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated and renumbered. + +2003-10-19 04:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix max sfb value when preflag+IS + +2003-10-19 04:41 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + update comment + +2003-10-18 18:05 takehiro + + * libmp3lame/: encoder.c, quantize.c, tables.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + small clean ups and remove outdated comments. + +2003-10-18 17:19 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.h, libmp3lame/set_get.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + use always max_noise as the noise estimation and remove the "quantcomp" selection + +2003-10-18 16:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up and simplify bin_search_StepSize(). + +2003-10-18 16:46 takehiro + + * libmp3lame/: bitstream.c, quantize.c, reservoir.c, reservoir.h + (takehiro-2002_05_07-experimental): + + fix for NEW_DRAIN + fix for target bitrate display in mp3x + and code clean up. + +2003-10-18 16:17 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + small clean up + +2003-10-18 16:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + widen the scalefactor search range when VBR. + and use previous frame information to find the scalefactor. + +2003-10-18 13:44 takehiro + + * libmp3lame/: VbrTag.c, VbrTag.h, bitstream.c, lame.c, psymodel.c, + quantize.c, util.c, util.h (takehiro-2002_05_07-experimental): + + fix warnings + +2003-10-18 13:43 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + short block threshold tuning. + +2003-10-18 12:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes drains too much bits into the ancillary. + +2003-10-18 10:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added quality problem. + +2003-10-17 14:39 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h: + + One more speedup in calc_noise, but the function is now a little messy + +2003-10-17 13:50 bouvigne + + * configMS.h: + + updated version number + +2003-10-17 11:49 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + Speedup calc_noise (about 5-10%) by re-using noise values per sfb between + successive calls + +2003-10-16 15:36 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning short block masking threshold calculation. + +2003-10-16 15:12 takehiro + + * libmp3lame/: bitstream.c, encoder.h, newmdct.c, psymodel.c + (takehiro-2002_05_07-experimental): + + simplify the block type update code. + +2003-10-16 15:10 takehiro + + * libmp3lame/: lame.c, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + trivial coding clean up. + +2003-10-16 13:26 bouvigne + + * libmp3lame/: VbrTag.c, presets.c: + + Put preset used in tag even when just using -b or --abr + +2003-10-16 12:55 bouvigne + + * libmp3lame/VbrTag.c: + + fixed a Lame header bug: + -b xxx --preset yyy was putting xxx as minimum bitrate value in the + tag instead of the value defined in the preset yyy + +2003-10-16 01:32 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix warning when not DEBUG mode + +2003-10-16 01:30 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + one more cleanup + +2003-10-14 17:56 takehiro + + * libmp3lame/: encoder.c, lame-analysis.h, psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + one more general code clean up. + +2003-10-14 17:37 takehiro + + * testcase.mp3, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c, + libmp3lame/reservoir.h, libmp3lame/tables.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + general clean up. + +2003-10-14 16:57 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + write down "i-stereo used or not" to LAME tag. + +2003-10-14 16:56 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + remove automs code + +2003-10-14 16:54 takehiro + + * testcase.mp3, frontend/parse.c, include/lame.h, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove lame_(set|get)_automs + remove "-m a" option + + simplify when no psymodel case (but it has bug in reservoir handling.) + +2003-10-14 16:46 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + compress "floating" scalefactors + +2003-10-14 12:56 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + treat "LR-i" as same as "LR" when display LR/MS history bar. + +2003-10-14 12:23 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix MS_MD_LR_LR will never be selected ... + +2003-10-14 12:21 takehiro + + * libmp3lame/: lame.c, psymodel.c + (takehiro-2002_05_07-experimental): + + update mode/block type selection (mode_ext) code. + - now it uses "START-STOP" block type transition. + - istereo selection code is now simplified. + - and small general code clean ups. + +2003-10-13 17:56 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up istereo related code. + +2003-10-13 17:52 takehiro + + * Makefile.am, Makefile.in (takehiro-2002_05_07-experimental): + + fix testcase failure when not HAVE_GTK + +2003-10-13 17:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x sometime assertion failure. + +2003-10-13 17:21 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix it forgot to reset the istereo usage sfb when LR_I -> LR_MS + +2003-10-13 15:57 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + widen the sf search range on short block. + some code clean up. + +2003-10-13 15:56 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + tuning tonality estimation of "middle" frequency area. + +2003-10-13 15:25 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up VBR code. + +2003-10-13 13:50 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update with alpha 9 + +2003-10-13 13:48 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + nuke ".raw" from output filename. + fix possible buffer overrun. + +2003-10-13 13:26 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use substep noise shaping even when short block. + do not substep noise shaping on digital silent channel. + +2003-10-13 13:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + init code optimization (do not calculate xr^(3/4) beyond cutoff). + +2003-10-13 13:19 takehiro + + * libmp3lame/: lame.c, tables.c (takehiro-2002_05_07-experimental): + + use same ath adjustment code for VBR/CBR/ABR + +2003-10-13 11:05 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix LR-i stereo selection on short blocks. (I forgot to commit this in alpha9) + +2003-10-13 11:02 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix comment. + +2003-10-13 10:20 takehiro + + * testcase.mp3, libmp3lame/version.h + (takehiro-2002_05_07-experimental): + + here goes alpha9 + +2003-10-13 10:19 takehiro + + * libmp3lame/: encoder.c, lame.c, quantize.c, quantize_pvt.h, + takehiro.c (takehiro-2002_05_07-experimental): + + clean up preflag/istereo code. + +2003-10-13 10:17 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + one more fix about i-stereo aging bug. + +2003-10-13 09:53 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix --allshort and --shortthreshold + +2003-10-11 20:17 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + changed variable name, cod_info_w -> gi_w + +2003-10-11 20:11 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + use best_scalefac when istereo. + +2003-10-11 19:45 takehiro + + * libmp3lame/: lame.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + clean up ATH adjustment code. + +2003-10-11 19:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not use athAdjust() + +2003-10-11 19:36 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + prepare for "START-STOP" sequence. + +2003-10-11 15:11 takehiro + + * libmp3lame/: encoder.c, psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + fix i-stereo aging bug. + +2003-10-11 14:11 takehiro + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, quantize.c, + quantize.h, util.h (takehiro-2002_05_07-experimental): + + trivial optimization (more and more) + +2003-10-11 13:42 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + trivial optimization + +2003-10-11 13:39 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-10-11 13:19 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use subblock_gain and scalefac_scale when i-stereo and CBR/ABR. + +2003-10-11 13:13 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + i-stereo with VBR. + +2003-10-11 11:21 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + work arround for mono-input problem when istereo. + +2003-10-11 11:09 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix cutoff when i-stereo enabled but not using istereo frame. + +2003-10-11 11:05 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + make check_istereo() to be aware of the cutoff. + +2003-10-11 10:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix off by one bug in loop_break() + +2003-10-11 10:29 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix off by one bug in PE calculation (and some code clean up). + +2003-10-06 05:09 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + istereo selection code optimization + +2003-10-06 04:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix scalefactor breakage when istereo case + +2003-10-05 18:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + reduce istereo usage ratio. + +2003-10-05 18:04 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + small clean up + +2003-10-05 17:59 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + sync with main branch + - Gaby's freeformat vbrtag fix(rev 1.67->1.68). + +2003-10-05 17:48 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix LR-i mode selection. + +2003-10-05 17:05 takehiro + + * testcase.mp3, frontend/gtkanal.c, libmp3lame/encoder.c, + libmp3lame/quantize.c, libmp3lame/quantize.h + (takehiro-2002_05_07-experimental): + + general mp3x cleanup. + +2003-10-05 16:36 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + remove magic numbers + +2003-10-05 14:17 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + pe -> bit-allocation update.(revert old one) + +2003-10-05 13:59 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix when almost mono input. + +2003-10-05 13:29 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + one more --athonly hack. + +2003-10-05 13:21 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + simplify calc_xmin when "ATH only". + +2003-10-05 12:15 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix sfb buffer overrun when i-stereo. + +2003-10-05 11:54 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + update the algorithm to select the sfb where it uses i-stereo. + +2003-10-05 10:37 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix short block cutoff sfb calculation. + +2003-10-04 18:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + small optimization + - noise calculation in "all zero" region. + - sfb21 shaping aware loop_break() + +2003-10-04 18:26 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + small clean up + +2003-10-04 16:57 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + VBR quality over 9 (not tuned yet at all). + +2003-10-04 16:52 takehiro + + * libmp3lame/: tables.c, util.h, encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + make it default to do noise shaping in sfb21. + cutoff-aware PE(perceptual entropy) calculation. + +2003-10-02 09:25 takehiro + + * frontend/parse.c: + + fix build problem.(I made a mistake when back porting ...) + +2003-10-01 16:13 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix build problem + +2003-09-29 17:47 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + tonality estimation tuning ... still need more. + +2003-09-29 14:00 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2003-09-29 00:35 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix typo + +2003-09-28 16:44 takehiro + + * configMS.h (takehiro-2002_05_07-experimental): + + fix version + +2003-09-28 16:42 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + small update. + +2003-09-28 16:32 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + re-enable scfsi usage. + +2003-09-28 16:30 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + use scalefactor() macro more. + +2003-09-28 16:19 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tonality estimation fix #1 + - safer tonality estimation at lower frequency. + - tuned sine wave (arround 20Hz) with the option "-v --substep 1" + + - we still need tuning sine wave arround 1kHz. + +2003-09-27 18:39 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + "smoothing" the istereo/narrow-stereo/reduce-side values for default setting. + and code clean up. + +2003-09-27 18:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + many small clean up. + + and mp3x update. + - display number of scalefactor bands with a distortion. + - display total noise. + +2003-09-27 17:15 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix display of istereo-ratio and reduce-side factor + +2003-09-27 17:14 takehiro + + * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + remove unused definition + +2003-09-27 17:14 takehiro + + * INSTALL (takehiro-2002_05_07-experimental): + + updated for LAME4 + - remove outdated compile time options including configure option. + +2003-09-27 15:50 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix narrow stereo default setting bug. + +2003-09-27 13:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + It assumes the noise is monotonic function of the scalefactor, but it is not true. + To fix it, I added CBR_2nd_bitalloc() function. + +2003-09-27 13:05 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix "%" display. + +2003-09-27 09:58 takehiro + + * frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + added --reduce-side option + + added to display side-channel pe reduction factor and narrowen stereo factor, + when --verbose. + +2003-09-27 08:24 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize.c, set_get.c, + set_get.h, util.h (takehiro-2002_05_07-experimental): + + reduce_ratio option to control MS/LR ratio. + need more tuning. + +2003-09-27 06:16 takehiro + + * frontend/parse.c: + + added priority control on WIN32, backport from experimental branch. + +2003-09-26 13:52 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + remove outdated comment. + +2003-09-26 03:50 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-09-25 16:27 takehiro + + * frontend/parse.c, libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/set_get.h, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + - added --narrowen-stereo option + - use narrowen stereo default when lower than 90kbps. + +2003-09-25 15:54 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added priority control option on MS-Windows. + (request #649324 @ sf.net) + +2003-09-25 13:21 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen by hand. + +2003-09-25 13:21 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix typo + +2003-09-25 13:15 takehiro + + * libmp3lame/i386/Makefile.in (takehiro-2002_05_07-experimental): + + fix automake bug by hand (work arround) + +2003-09-24 23:18 takehiro + + * Makefile.in, aclocal.m4, config.guess, config.sub, configure, + depcomp, install-sh, missing, mkinstalldirs, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + frontend/rtp.c, include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in (takehiro-2002_05_07-experimental): + + regen with aclocl-1.7, automake-1.7, autoconf-2.57 + +2003-09-24 23:15 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fixed mingw build. + - socket patch from leighsmith, patch ID #809315 @ sf.net + + socket function is not mandatory when mp3rtp is not built. + - bug report from gadibergman, Bug ID #809678 @ sf.net + +2003-09-23 18:29 takehiro + + * DEFINES (takehiro-2002_05_07-experimental): + + updated + +2003-09-23 18:04 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + it sometime goes into infinite loop when imcomplete wave file... + +2003-09-23 17:28 takehiro + + * libmp3lame/: encoder.c, quantize.c + (takehiro-2002_05_07-experimental): + + added "narrow stereo image" function. + I will add new "right" switch to enable it, but till then, + use -X n (0 + +2003-08-10 12:48 bouvigne + + * include/lame.h, libmp3lame/lame.c, libmp3lame/presets.c, + libmp3lame/psymodel.h, libmp3lame/set_get.c, + libmp3lame/set_get.h: + + use presets by default for abr/cbr + +2003-08-10 10:11 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2003-08-10 10:09 takehiro + + * libmp3lame/: libmp3lame.dsp, libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + new interface to change internal flags + +2003-08-10 10:06 takehiro + + * libmp3lame/Makefile.am (takehiro-2002_05_07-experimental): + + new interface to change internal flags. + +2003-08-10 10:05 takehiro + + * libmp3lame/lame.c, libmp3lame/set_get.c, frontend/parse.c, + include/lame.h, libmp3lame/set_get.h + (takehiro-2002_05_07-experimental): + + sync with main branch and fix comments. + - changed API name + - hidden "internal" flags when stable release (when it will be...) + +2003-08-10 10:03 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + fix comment. + +2003-08-10 10:03 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix it may use i-stereo at sfb21. + +2003-08-10 10:00 takehiro + + * debian/: control, copyright, lame.docs, lame.files, rules + (takehiro-2002_05_07-experimental): + + sync with main branch, except changelog itself. + +2003-08-09 18:55 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix for when there's no LIST chunk. + +2003-08-09 12:54 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix warning one more. + +2003-08-09 12:00 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix aliasing warning + +2003-08-09 11:30 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + added definition for MSVC (as Gabriel did in main branch) + +2003-07-16 01:29 rbrito + + * debian/: changelog, control, copyright, lame.docs, lame.files, + rules: + + Updated debian packaging. + +2003-07-13 10:11 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + RIFF->ID3Tag conversion patch from Charlie Lenahan + +2003-07-11 16:35 aleidinger + + * doc/html/id3.html, doc/man/lame.1, frontend/parse.c: + + Add --ignore-tag-errors, mostly submitted by Adam Luter + . + +2003-06-29 15:43 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + revert the latest psymodel update... + +2003-06-15 16:52 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial coding style update (comment style change, // ... -> /* ... */ ) + +2003-06-15 16:48 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + do not output unused information to avoid any confusion. + +2003-06-15 15:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix almost all the VBR infinite loop problem (I hope) + + general code simplification + +2003-06-14 17:52 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplified VBR code. + +2003-06-14 17:36 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify the VBR code. + + fix more infinite loop in VBR, but still .... + +2003-06-14 14:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix method 2 of substep shaping. + added VBR_3rd_bitalloc() to reduce bitrate little bit. + +2003-06-14 14:33 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one more safer tonality estimation in lower frequency, especially for human voice. + +2003-06-14 14:32 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-06-14 09:32 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix compilation problem on MSVC reported by Yaroslav Efimov + +2003-06-14 07:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix possible VBR infinite loop... but there are still problems. + +2003-06-08 18:19 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR code assumes noise<->scalefactor is a monotonic function. + + some trivial style update + +2003-06-08 17:05 takehiro + + * include/lame.h, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + remove nspsytune2 + +2003-06-08 16:58 takehiro + + * include/lame.h, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + always use ATH adaptive adjustment + +2003-06-08 16:56 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-06-08 16:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + experimental LR-i check code (not enabled yet) + +2003-06-04 17:47 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + sync main branch + +2003-06-04 17:42 takehiro + + * Dll/BladeMP3EncDLL.c: + + fix quality setting API(patch for BugID 746439 at sf.net, reported by mikokong). + +2003-06-01 18:22 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2003-06-01 18:22 aleidinger + + * libmp3lame/Makefile.am: + + add new private header + +2003-06-01 17:20 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/libmp3lame_vc6.dsp, + libmp3lame/presets.c, libmp3lame/set_get.c, libmp3lame/set_get.h: + + private header for internal set/get interfaces + +2003-06-01 16:12 bouvigne + + * libmp3lame/id3tag.c: + + let's use snprintf, with a define for msvc + +2003-06-01 12:34 takehiro + + * libmp3lame/: lame.c, takehiro.c + (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-06-01 12:25 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added --is-ratio switches to set the is-ratio. + + remove descriptions about -X,-Y and -Z. + +2003-06-01 12:24 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added istereo-ratio to display. + +2003-06-01 12:19 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update TODOs and categorize them. + +2003-06-01 09:16 takehiro + + * libmp3lame/: lame.c, quantize.c + (takehiro-2002_05_07-experimental): + + tuning lower bitrate (arround 64kbps). + - improve pe -> bit allocation + - changed cutoff, short-threshold. + +2003-06-01 09:14 bouvigne + + * libmp3lame/VbrTag.c: + + fix seek table for freeformat + + There is still something strange because with + -b128 and + -b128 --freeformat + I do not get the same seek table + +2003-06-01 09:06 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + scfsi debug. + - it forgot to initialize scfsi flag when it changes "not istereo" frame to "istereo" frame. + - when scfsi is not used at all, do not re-calculate the how many bits are needed to store the scalefactors. + +2003-05-31 18:28 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + initialize gfc->l3_side.is_start_sfb_l/s in case not using istereo. + +2003-05-31 18:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + do not do the istereo related processes when dual stereo mode. + +2003-05-31 14:05 bouvigne + + * libmp3lame/id3tag.c: + + ID3 TAG of "Encoder name", backported from experimental branch. + Btw snprintf does not exist under msvc, so I used sprintf. + +2003-05-31 13:52 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + sync with the main branch (fix VBR tag when freeformat by Gabriel) + +2003-05-31 13:30 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + ID3 TAG of "Encoder name". + This is based on the patch from danchr, at http://www.hydrogenaudio.org/index.php?act=ST&f=15&t=9858& + +2003-05-31 13:16 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + do not use istereo when "analog-monaural". + +2003-05-25 17:00 takehiro + + * libmp3lame/: encoder.c, psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + fix i-stereo frame timing delay. + + do not use i-stereo when completely mono. + +2003-05-25 15:34 bouvigne + + * libmp3lame/VbrTag.c: + + corrected the bitrate index of LAME tag in case of freeformat, + but the seek table is still wrong + +2003-05-25 13:21 takehiro + + * Makefile.in, debian/Makefile.in + (takehiro-2002_05_07-experimental): + + regen + +2003-05-25 13:14 takehiro + + * Makefile.am, debian/Makefile.am + (takehiro-2002_05_07-experimental): + + moved dist-hook, as is in the head branch. + +2003-05-25 13:09 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix initialization of "istereo used band" when istereo is not used at all. + +2003-05-25 13:04 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix istereo stereo image bug when mono. + +2003-05-25 12:28 takehiro + + * include/lame.h, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + psymodel for i-stereo. + determine which sfb to use i-stereo by checking similarity of the masking/energy ratios. + +2003-05-25 07:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize CBR/VBR mode pe<->bit allocation + + trivial simplification arround VBR. + +2003-05-25 03:25 takehiro + + * libmp3lame/: encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + i-stereo improvement. + - auto switching LR-i <=> MS-i + - i-stereo aware pe calculation + +2003-05-25 01:19 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + added i-stereo frame count display. + +2003-05-25 00:59 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + slightly updated about i-stereo. + +2003-05-20 12:19 aleidinger + + * debian/Makefile.in, configure: + + regen + +2003-05-20 12:17 aleidinger + + * aclocal.m4: + + remove gtk12-config + +2003-05-20 12:14 aleidinger + + * Makefile.am, debian/Makefile.am: + + move the dist-hook into the directory where the action happens + +2003-05-20 12:13 aleidinger + + * configure.in: + + some enhancements for compiler problems and detection of the right size of some types + +2003-05-19 04:20 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2003-05-19 04:19 takehiro + + * Makefile.in, aclocal.m4, config.guess, config.sub, ltmain.sh, + ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, + Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen with libtool-1.4.2/automake-1.5 to fix nasm enabled build + +2003-05-19 04:17 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix compilation problem on "old" compilers + +2003-05-19 04:09 takehiro + + * .cvsignore (takehiro-2002_05_07-experimental): + + added stamp-h?, remove stamp-h1 + +2003-05-18 17:20 takehiro + + * libmp3lame/: bitstream.c, encoder.c, lame.c, lame_global_flags.h, + psymodel.c, quantize.c, tables.c, takehiro.c, util.h, version.h + (takehiro-2002_05_07-experimental): + + initial support of intensity stereo for lower bitrate + it will be enabled when 64-112kbps by default. + + now bump up the alpha7. + +2003-05-18 16:13 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + when NASM is not enabled, do not print message about "MMX" or "3dNow!" + +2003-05-18 15:05 takehiro + + * Makefile.am: + + added chmod +x debian/rules when make dist. + +2003-05-18 15:03 takehiro + + * Makefile.am, Makefile.in, misc/Makefile.am, misc/Makefile.in + (takehiro-2002_05_07-experimental): + + moved lame.bat + added "chmod +x debian/rules" when "make dist" to resolve BugID #578129 + +2003-05-18 14:15 takehiro + + * Dll/BladeMP3EncDLL.h: + + patch from sf.net, Dll compile with gcc. + +2003-05-18 07:04 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix for the environment which "long" is 64bit. + +2003-05-18 03:45 takehiro + + * frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + simplify the opening message + +2003-05-18 02:35 takehiro + + * frontend/: main.h, parse.c (takehiro-2002_05_07-experimental): + + trivial change and fix warnings + +2003-05-18 02:34 takehiro + + * config.guess (takehiro-2002_05_07-experimental): + + oops, I overwrote the older file. revert. + +2003-05-18 02:31 takehiro + + * config.sub (takehiro-2002_05_07-experimental): + + oops, I overwrite the older file. + +2003-05-18 02:27 takehiro + + * stamp-h.in (takehiro-2002_05_07-experimental): + + removed + +2003-05-18 02:21 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + remove -d and --voice + changed recommended setting + +2003-05-17 18:49 takehiro + + * frontend/: main.c, mp3x.c, parse.c + (takehiro-2002_05_07-experimental): + + simplify the startup messages + fix typo in warning mesage + +2003-05-17 18:35 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + remove all the presets + +2003-05-17 17:55 takehiro + + * acconfig.h, ltconfig (takehiro-2002_05_07-experimental): + + removed + +2003-05-17 17:51 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2003-05-17 17:50 takehiro + + * Makefile.in, aclocal.m4, config.guess, config.h.in, config.sub, + configure.in, ltmain.sh, ACM/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, ACM/ADbg/Makefile.in, + ACM/tinyxml/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + libmp3lame/i386/Makefile.in (takehiro-2002_05_07-experimental): + + regen with autoconf-2.54, automake-1.6, libtool-1.4 + +2003-05-17 17:22 takehiro + + * Dll/BladeMP3EncDLL.h (takehiro-2002_05_07-experimental): + + BladeMP3EncDLL.h patch for GCC from sf.net + +2003-05-15 17:04 takehiro + + * frontend/lametime.c (takehiro-2002_05_07-experimental): + + Fix for SunOS 4, reported by Ti Kan. + +2003-05-15 17:02 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix for sunos 4.x, reported by Ti Kan. + +2003-05-15 16:57 takehiro + + * configure.in, frontend/brhist.c + (takehiro-2002_05_07-experimental): + + fix for BSDI, which does not have term.h (reported by Ti Kan) + +2003-05-15 16:55 takehiro + + * lame.bat, misc/lame.bat (takehiro-2002_05_07-experimental): + + moved lame.bat into misc directory + +2003-05-15 15:09 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-05-15 15:08 takehiro + + * include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + remove set_preset_* functions public. + +2003-05-15 15:07 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + new pseudo sfb21 ath handling code (of course, experimental) + +2003-05-15 14:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Partial fix of VBR code assuming the qunatizing noise always increase + when the scalefactor increase. This makes reduce bitrate arround 40kbps + with bloat_test.wav. + + This fix is not perfect, because it still assumes the qunatizing noise always + decrease when the scalefactor decrease. + +2003-05-15 12:48 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + update default short block threshold + +2003-05-15 12:04 takehiro + + * libmp3lame/: psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + tuning MSFIX value with creaking.wav + simplified and ATH aware msfix() routine. + +2003-05-11 15:03 bouvigne + + * libmp3lame/presets.c: + + updated low bitrate presets. + Considering quality, we have: + ns1 comp1 > ns1 comp3 >ns2 comp3 >ns2 comp1 + +2003-05-11 13:15 bouvigne + + * libmp3lame/lame.c, frontend/parse.c, include/lame.h, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + --sfscale, inhibited -Z + +2003-05-11 11:33 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, lame.c + (takehiro-2002_05_07-experimental): + + simplified calc_noise() and better_quant(). + + update comments. + + tuning ABR/CBR 64/80/192/224 kbps. + +2003-05-11 10:18 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added comments on vbr code (from main branch). + + trivial simplification in find_scalefac() + + prepare for fixing VBR code assumes "quantize noise always decrease when + scalefactor decrease". + +2003-05-11 09:49 bouvigne + + * libmp3lame/lame.c, libmp3lame/quantize.c, libmp3lame/set_get.c, + frontend/parse.c, include/lame.h, libmp3lame/util.h: + + --sbgain + +2003-05-10 17:56 takehiro + + * testcase.mp3, frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix for -k option (reported by Robert. thanx) + +2003-05-09 14:06 aleidinger + + * frontend/: main.c, lametime.c: + + Fix on SunOs 4, Submitted by: Ti Kan + +2003-05-09 13:44 aleidinger + + * frontend/brhist.c: + + fix on BSD/OS 3.x, Submitted by: Ti Kan + +2003-05-09 13:14 bouvigne + + * libmp3lame/quantize.c: + + re-enabling the psfb12 analog silence detection. This time, the coeffs should + be correct. + However, the coding gain is now quite small + +2003-05-08 12:58 bouvigne + + * libmp3lame/quantize.c: + + I am disabling the code for psfb12 analog + silence detection, as it produces some kind of + dropouts. It probably means that there is a bug + somewhere inside. + +2003-05-04 15:36 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-05-04 15:35 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + working on presets + +2003-05-03 14:34 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + ability to set vbr smooth (for vbr-mtrh) + +2003-05-02 17:38 bouvigne + + * frontend/parse.c: + + internal command line options only available in debug or in alpha. + + This way we should not be worried again by users using non docummented options: + they will not be available for them + +2003-05-02 16:18 bouvigne + + * libmp3lame/vbrquantize.c: + + comments based on some mails exchanged with Robert + +2003-05-01 15:23 bouvigne + + * libmp3lame/lame.c: + + maskingadjust/maskingadjust_short available for vbr-mtrh + +2003-04-27 15:18 bouvigne + + * libmp3lame/: encoder.h, l3side.h, lame.c, quantize.c, + quantize_pvt.c, util.h: + + Analog silence detection in partitionned sfb21 or sfb12 for short blocks + +2003-04-20 17:32 bouvigne + + * libmp3lame/presets.c: + + changed short block quantization comparison to method 0 + for abr/cbr on medium bitrates (because of spahm, fatboy and the likes) , + as suggested by Takehiro. + +2003-04-20 17:03 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-04-20 16:56 bouvigne + + * libmp3lame/quantize.c: + + trivial coding change in psfb21_analogsilence + +2003-04-20 16:25 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + bump up alpha version + +2003-04-20 16:25 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + safer tonality estimation for lower frequency, for better human voice encoding. + + prevent frequent much MS/LR switching. + +2003-04-20 16:22 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning ATH scaling. + +2003-04-20 15:57 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + presets (testing) + +2003-04-20 13:28 bouvigne + + * libmp3lame/: lame.c, util.c, util.h: + + simplified prototype of FindNearestBitrate + +2003-04-20 12:58 bouvigne + + * libmp3lame/presets.c: + + preset insane is now aliased to preset 320 + +2003-04-20 12:53 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + removed some old experimental presets + +2003-04-20 12:33 bouvigne + + * libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/presets.c, + frontend/parse.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + removed presetTune struct + +2003-04-19 16:34 bouvigne + + * libmp3lame/presets.c: + + fixed medium bitrates cbr/abr presets + +2003-04-19 10:19 bouvigne + + * TODO: + + updated the TODO file + +2003-04-12 13:47 bouvigne + + * doc/html/: contributors.html, history.html: + + history + +2003-04-12 10:20 bouvigne + + * libmp3lame/lame.c, include/lame.h, frontend/parse.c: + + enable fast replaygain analysis by default + define DECODE_ON_THE_FLY if compiled with mpglib + +2003-04-07 10:14 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix build problem + +2003-04-07 00:57 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-04-06 12:03 takehiro + + * libmp3lame/: lame.c, set_get.c + (takehiro-2002_05_07-experimental): + + fix higher bitrate CBR/ABR preset + first attempt of tuning VBR preset + + fix athaa_sensitivity display and code (there was some confusion arround dB/power) + fix warning of some compare. + +2003-04-06 12:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix masking handling code for pre-echo prevention works too much aggressively. + +2003-04-06 11:59 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning ATH value of MDCT region. + +2003-04-05 17:56 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added ATHlower to display when verbose mode. + +2003-04-05 17:20 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + improve short block "pre-surge" masking control. + and simplify the code. + +2003-04-05 17:19 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix 1st frame psycho analysis. + +2003-04-05 16:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + update lower bitrate ABR/CBR preset. + remove outdated comments + +2003-03-31 16:32 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + - remove long block pre-echo handling code (we don't need it when nspsytune). + - fix the lowpass filter index to determine L/R channnel long/short block switching. + - lower the lowpass filter index to determine long/short block. + +2003-03-30 15:11 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + presets portable/portable1 + +2003-03-24 21:21 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-03-24 21:19 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + presets + +2003-03-24 20:32 bouvigne + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/quantize.c, libmp3lame/set_get.c, libmp3lame/util.h, + include/lame.h, frontend/parse.c: + + maskingadjust/maskingadjustshort for vbr-rh + +2003-03-18 15:56 takehiro + + * libmp3lame/: VbrTag.c, encoder.c, util.c + (takehiro-2002_05_07-experimental): + + trivial coding change + +2003-03-16 18:02 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + update comments and clean up. + +2003-03-16 17:53 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + new bs.totbit overflow handling strategy + +2003-03-16 17:53 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove quantize cmpare method 3 and 10. + update comments of over_noise and tot_noise. + +2003-03-16 17:51 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + trivial coding style update + +2003-03-08 13:56 takehiro + + * libmp3lame/: util.c, lame.c (takehiro-2002_05_07-experimental): + + - fix to work --quantcomp/--shortthreshold(it was ignored and LAME uses always the default) + - bit clean up resample. + +2003-03-08 10:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify the inc_subblock_gain() by using table. + +2003-03-04 18:00 takehiro + + * libmp3lame/: bitstream.c, encoder.c, tables.c, tables.h, + takehiro.c, util.h (takehiro-2002_05_07-experimental): + + large clean up arround bit stream code. much simple, faster and small. + + fix and optimize MPEG2/2.5 scalefactor value recoding code + there's still some problem using table 1 and sometime makes invalid bitstream... + +2003-03-03 18:54 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + MPEG2/2.5 scalefactor bit recording optimization. + - now it try to use table 1 + - much simplified code. + +2003-03-03 18:01 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix gr_info initilization when MPEG2/2.5, short blocks. + +2003-03-03 17:59 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix best_huffman_divide() sometime fails the assertion. + do not use "extra" preflag when MPEG2/2.5 (it fails to record scalefactors) + simplify the scale_bitcount_lsf() + +2003-03-03 17:13 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + large clean up and simplification.(result is not changed) + +2003-03-03 17:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + general clean up and simplification. + +2003-03-03 17:04 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization (use shift instead of division) + +2003-03-03 10:02 takehiro + + * libmp3lame/: util.h, tables.c, psymodel.c + (takehiro-2002_05_07-experimental): + + first attempt of block switching for not 44.1kHz. + - use "variable" lowpass index for "constant" lowpass frequency. + +2003-03-03 04:14 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + tuning long/short threshold for arround 128kbps. + clean up scaling related code. + +2003-03-03 04:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2003-03-03 02:48 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + revert substep=2 tuning. + +2003-03-02 18:08 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + comment style update. + some code simplification + +2003-03-02 17:56 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial style change + +2003-03-02 17:53 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + all "cod_info" are changed "gi" + precisely change the scalefactor when substep = 2 + simplify the pinfo calculation(for mp3x) + +2003-03-02 17:50 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + all "cod_info" is changed to "gi" + optimized best_huffman_divide() little. + update comments. + +2003-03-02 16:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + comment update + +2003-03-02 16:40 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + tuning trancation threshold used in pseudo half step method. + more simplication and comment updation. + +2003-03-02 16:03 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + update comments and simplification. + teration_finish_one() is moved from quantize.c to takehiro.c for better conjunction. + +2003-03-02 16:01 takehiro + + * libmp3lame/: tables.c, machine.h, tables.h + (takehiro-2002_05_07-experimental): + + remove IIPOW20() related macro/arrays, all of which are not used. + +2003-03-02 15:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + more clean up and simplification. + +2003-03-02 15:06 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix warning. + +2003-03-02 15:05 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix prototype. + +2003-03-02 14:53 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, takehiro.c, + util.h (takehiro-2002_05_07-experimental): + + large simplification mainly arround scale_bitcount() + +2003-03-02 11:39 takehiro + + * libmp3lame/: reservoir.c, reservoir.h + (takehiro-2002_05_07-experimental): + + changed ResvAdjust() as macro. + +2003-03-02 11:35 takehiro + + * libmp3lame/: VbrTag.c, id3tag.h, util.h + (takehiro-2002_05_07-experimental): + + simplify the tag related header files. + +2003-03-02 11:20 takehiro + + * libmp3lame/: tables.c, takehiro.c, version.c + (takehiro-2002_05_07-experimental): + + build problem fix when NASM is not enabled + +2003-03-02 11:19 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + one more initialization simplification. + +2003-03-02 11:13 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + simplify the default setting choosing method. + - use optimum_samplefreq() to determine the output sampling rate, as suggested + by Gabriel. + - use MMX_choose_table always if it uses NASM. + +2003-02-27 17:57 bouvigne + + * libmp3lame/libmp3lame_vc6.dsp: + + fix MSVC build (replay gain) + +2003-02-27 17:46 bouvigne + + * libmp3lame/: encoder.h, l3side.h, lame.c, quantize.c, + quantize_pvt.c, quantize_pvt.h, util.c, util.h: + + analog silence detection in partitionned sfb21 + +2003-02-27 03:55 takehiro + + * libmp3lame/: lame.c, quantize.c + (takehiro-2002_05_07-experimental): + + some substep=2 optimization. + - only do substep-shaping in the last quantization step. + +2003-02-27 03:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix amp_scalefac_bands loop exit condition. + +2003-02-27 03:38 takehiro + + * libmp3lame/: psymodel.c, util.h, tables.c, takehiro.c + (takehiro-2002_05_07-experimental): + + optimized little on the case not NASM enabled. + +2003-02-24 03:21 takehiro + + * include/lame.h, libmp3lame/lame.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + more ABR/CBR default mode setting (use ABR/CBR preset) + +2003-02-23 18:32 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + sync with the mainline (average compression ratio of VBR mode). + +2003-02-23 18:30 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix quantize_xrpow_ISO() as same as in quantize_xrpow() + +2003-02-23 18:22 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix short block window ID initialization. + +2003-02-23 17:16 takehiro + + * libmp3lame/: set_get.c, lame.c + (takehiro-2002_05_07-experimental): + + always uses abr/cbr preset, when abr/cbr coding. + The cutoff frequency is changed as is in the main branch. + +2003-02-23 16:30 olcios + + * libmp3lame/lame.c: + + fixed bug with --resample and --replaygain (input data analysis) + +2003-02-23 16:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify amp_scalefac_bands() + +2003-02-23 16:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify inc_subblock_gain() + +2003-02-23 16:07 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix sfb21 does not quantize if some case. + +2003-02-23 10:29 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + general clean up and optimization. + - amplify band selection cleanup + - skip amplify-method 1 when the max_noise is already lesser than 1.0 + - clean up substep shaping in VBR mode + +2003-02-22 19:06 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + new optimized noise shaping strategy. + start with "sparse" noise_shaping_amp method and retry with the finer method, + when we continuously failed. + + This makes CBR/ABR coding quite faster. + + comment style update.(// -> /* */) + +2003-02-22 19:03 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + clean up init_gr_info + +2003-02-22 17:20 takehiro + + * config.guess, config.sub (takehiro-2002_05_07-experimental): + + sync with the mainline. + - update config files (by CISC) + +2003-02-22 17:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR code for new quantize strategy. + +2003-02-22 02:21 olcios + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, + USAGE, configMS.h, frontend/parse.c, include/lame.h, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/gain_analysis.c, libmp3lame/gain_analysis.h, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c, libmp3lame/util.h: + + ReplayGain analysis of a single file (RadioGain) + +2003-02-21 15:54 cisc + + * config.guess, config.sub: + + Update to latest config files to support more hosts/targets. + +2003-02-21 04:53 takehiro + + * libmp3lame/: machine.h, quantize.c, tables.c, tables.h, + takehiro.c (takehiro-2002_05_07-experimental): + + new quantization strategy. + - the code handling quantization factor moved to quantize_xrpow() and + quantize_xrpow_ISO(). This is preparing for "quantizing only the scalefactor + band whose q-factor is changed" and so on. + - now xrpow[] is constant. + +2003-02-21 04:50 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + clean up initialization + +2003-02-21 01:36 takehiro + + * libmp3lame/: mpglib_interface.c, util.h + (takehiro-2002_05_07-experimental): + + sync mainline. + - changed comment style (// -> /* */) by Robert. + - Extending mpglib by the option to return unclipped floating-point values of samples by olcios. + +2003-02-20 23:13 takehiro + + * libmp3lame/: takehiro.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + optimized quantization + - remove QUANTFAC() macro. + - check the max value in quantization routine (loop hoisting) + +2003-02-20 22:43 takehiro + + * mpglib/: common.c, decode_i386.c, decode_i386.h, huffman.h, + interface.c, interface.h, l2tables.h, layer1.c, layer2.c, + layer2.h, layer3.c, layer3.h (takehiro-2002_05_07-experimental): + + sync mainline. + - changed comment style (// -> /* */) by Robert. + - Extending mpglib by the option to return unclipped floating-point values of samples by olcios. + +2003-02-19 19:46 olcios + + * libmp3lame/mpglib_interface.c, libmp3lame/util.h, + mpglib/decode_i386.c, mpglib/decode_i386.h, mpglib/interface.c, + mpglib/interface.h, mpglib/layer3.c, mpglib/layer3.h: + + Extending mpglib by the option to return unclipped floating-point values of samples. + +2003-02-19 16:40 takehiro + + * libmp3lame/: quantize.c, set_get.c + (takehiro-2002_05_07-experimental): + + ATH related tuning for ABR/CBR preset. + + ABR bit-allocation tuning on short blocks + +2003-02-19 12:14 takehiro + + * libmp3lame/presets.c: + + fix comment style. ( // -> /* */ ) + +2003-02-19 12:10 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + cleanup and ABR 128-160kbps shortthreshold change. + +2003-02-19 10:05 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix comments + +2003-02-19 09:48 takehiro + + * libmp3lame/: encoder.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + remove PE FIR filter. It does not work now. + +2003-02-18 14:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + on short blocks, use subblock gain first, instead of scalefac_scale + +2003-02-18 14:46 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + update PE calculation and pe based bit allocation(CBR,ABR) + do not spend too much on short blocks. + +2003-02-18 14:41 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove SNR parameter (attack position aware masking calculation code will replace this). + +2003-02-18 01:11 olcios + + * Makefile.DJGPP: + + Workaround for a problem with make clean, regarding long filenames on some systems. + +2003-02-17 01:02 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix threshold at [SBMAX_s-1] of short blocks + +2003-02-16 19:07 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one and one more brand-new S(L-R) channel short block switching strategy + +2003-02-16 18:53 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up in bitpressure_strategy() + +2003-02-16 18:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix overflow in pulse-like signal detection. + +2003-02-16 18:46 bouvigne + + * libmp3lame/presets.c: + + cbr/abr presets (still not finished?) + +2003-02-16 18:40 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + ATH value scaling clean up and one more revert short block strategy... + +2003-02-16 18:07 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + clean up arround initialization of short blocks. + +2003-02-16 18:06 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up in inc_scalefac_scale() + +2003-02-16 18:05 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + better verbose mode printing + +2003-02-16 13:23 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + bump up alpha5 + +2003-02-16 13:22 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + update testcase + +2003-02-16 13:20 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/tables.c + (takehiro-2002_05_07-experimental): + + ATH related code clean up (always use ATH type 4). + +2003-02-16 13:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better noise estimation + +2003-02-16 13:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimized calc_xmin() + +2003-02-16 08:38 takehiro + + * libmp3lame/psymodel.c: + + PE calculation improvement (backported from experimental branch). + Better pe calculation for nspsytune. This brings + - better MS/LR switching + - better reservoir handling (brings better ABR/CBR result) + + I hope the trouble on "SeriousTrouble.wav" is partially fixed (not perfect ?). + +2003-02-16 08:25 takehiro + + * libmp3lame/quantize_pvt.h: + + fix build problem (calc_xmin() prototype fix) + +2003-02-16 08:22 takehiro + + * libmp3lame/quantize.c: + + fix one more subblock_gain handling code. + +2003-02-15 14:07 bouvigne + + * libmp3lame/quantize.c: + + init max_nonzero_coeff to 575 instead of 0 + +2003-02-14 17:41 bouvigne + + * libmp3lame/: l3side.h, quantize.c, quantize_pvt.c, takehiro.c: + + do not calc noise in upper 0 part + +2003-02-10 03:26 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix long->short masking threshold conversion (still experimental). + revert S(L-R) channel blocktype switching strategy. + 1st attempt of short block pre-echo prevention code(lessen masking before the surge on shortblocks, for preecho prevention). + +2003-02-10 03:21 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + verbose mode:added if it uses subblock gain or not. + +2003-02-09 18:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + one more tuning short block noise calculation + - max_noise handling fix. + + changed quantcomp_s and quamtcomp + - use quantcomp_s only for short blocks. (do not use for start/end) + +2003-02-09 17:43 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce memory copy in best_huffman_divide() + +2003-02-09 16:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + oops, fix short block noise calculation... + +2003-02-09 16:41 takehiro + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h, + libmp3lame/psymodel.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + changed mp3x "surge intensity" display. + + fix psymodel mis-enables the short blocks when MS stereo. + + changed short blcok setting strategy on the S(L-R) channel. + Although this brings better LR/MS handling for fatboy.wav et.al., this is not true idea but work arround. we should get better ns_msfix(). + + simplify the surge detection in psymodel.c + + added comments on psymodel.c for mp3x display and the window position. + +2003-02-09 16:36 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-02-09 16:35 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + new calc noise for short blocks. + it calculates the sum of noise in 3 subblocks at same frequency region. + + I hope this makes --quantcomp hack obsolete. + +2003-02-09 15:19 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + sync main: comments update by Mark. + +2003-02-09 12:36 bouvigne + + * libmp3lame/quantize_pvt.c: + + revert speedup + +2003-02-09 01:25 markt + + * include/lame.h: + + added a comment about reading the file API + +2003-02-08 17:46 bouvigne + + * libmp3lame/: presets.c, version.h: + + presets + +2003-02-08 13:53 bouvigne + + * libmp3lame/quantize_pvt.c: + + small speedup + +2003-02-08 09:51 takehiro + + * frontend/main.c: + + trivial simplification + +2003-02-08 07:22 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + sync main line: comments about lame_init() + +2003-02-07 18:17 bouvigne + + * DEFINES: + + KLEMM_44 + +2003-02-06 20:04 markt + + * include/lame.h: + + updated comments about lame_init() from Kendrick Hamilton + +2003-02-06 06:29 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix analog silence detection + +2003-02-05 09:27 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-02-05 09:26 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix subband filtering (always mono...) + +2003-02-04 18:27 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix --keeptag option + +2003-02-04 17:16 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + oops, trivial mistake... + +2003-02-04 17:11 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + some tuning arround attack threshold. not so far from good... + +2003-02-04 17:10 takehiro + + * libmp3lame/: psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + update comment and remove unused lines. + +2003-02-04 17:01 takehiro + + * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/tables.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + use subband filter sample to determine block type. + it still remains parameter tuning, but it works. + +2003-02-04 16:11 takehiro + + * libmp3lame/: encoder.c, newmdct.c, newmdct.h, psymodel.c, + psymodel.h, tables.c, tables.h, util.h + (takehiro-2002_05_07-experimental): + + prepare for using subband filtered samples to determine block switching. + This will archive faster, and better block switching. + + And using this, we can get more precise short block threshold calculation, I hope. + +2003-02-04 16:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix comment and trivial optimization. + +2003-02-04 15:59 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + regen + +2003-02-04 15:59 takehiro + + * configure (takehiro-2002_05_07-experimental): + + to avoid confusion, make version 4.00 + +2003-02-04 15:01 takehiro + + * frontend/: brhist.c, console.c, gtkanal.c, main.c, parse.c, + rtp.c, timestatus.c (takehiro-2002_05_07-experimental): + + sync with main + - comment fix // -> /* */ + - nogap related updates + +2003-02-04 13:18 takehiro + + * libmp3lame/lame.c, libmp3lame/util.h, include/lame.h + (takehiro-2002_05_07-experimental): + + sync main. + - remove coding_t + - update comment + +2003-02-03 18:41 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + remove unused code + +2003-02-03 18:40 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + sync with the head. + +2003-02-03 18:29 takehiro + + * frontend/: get_audio.c, main.h, parse.c + (takehiro-2002_05_07-experimental): + + added --keeptag option and clean up tag copy code. + currently it works only with ID3v1. + +2003-02-02 18:51 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-02-02 18:50 bouvigne + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + include/lame.h, libmp3lame/presets.c, libmp3lame/set_get.c, + frontend/parse.c: + + preset medium + +2003-02-02 17:30 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + keep id3tag when reencoding mp3(experimental). + 1. it sometimes mis-recognize the tag. (but this is the same behavior of madplay) + 2. we should add some option to enable/disable this function. + + after 2 is solved, I will backport it to the head branch. + +2003-02-02 17:15 takehiro + + * frontend/: get_audio.c, gtkanal.c + (takehiro-2002_05_07-experimental): + + trivial comment/style update + +2003-02-02 17:10 bouvigne + + * libmp3lame/: lame.c, util.c, util.h: + + removed KLEMM_44 + +2003-02-02 15:50 bouvigne + + * libmp3lame/: lame.c, util.h: + + removed useless structure (coding_t) + +2003-02-02 14:45 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets: standard should be fine, working on medium + +2003-02-02 10:15 bouvigne + + * libmp3lame/psymodel.c: + + comments regarding TMN and NMT (thank you Takehiro) + +2003-02-01 21:59 takehiro + + * libmp3lame/: encoder.c, lame.c, newmdct.c, util.h + (takehiro-2002_05_07-experimental): + + prepare for subband filter output to determine long/short block switching. + - subband filtering in next frame. + - encode delay setting + +2003-02-01 20:06 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + precise error message about nspsytune2 + +2003-02-01 11:49 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + clean up and optimization. + +2003-01-30 12:13 takehiro + + * frontend/get_audio.c: + + bit better mp3 input file sync. but we need one more for Chris.mp3.... + +2003-01-30 08:48 markt + + * libmp3lame/: encoder.c, lame.c: + + + + Formula for the amount of data that had to be in the buffer + before it could be encoded was incorrect. Old formula + (for the polyphase filterbank) was: + + old formula: 286+576*(1+gfc->mode_gr) = 2014 (MPEG1) + + Correct formula is: 512+framesize -32 = 1632 + + Best way to see this is to go through window_subband() in newmdct.c + It access samples x[32*i] through x[510+32*i] for i=0..17. + + So our old condition was too conservative. + + However, the FFT still requires 1904 samples, so the + net change is just to lower the requirement from 2014 to 1904. + +2003-01-28 03:12 takehiro + + * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + fix build problem on not HAVE_GTK environment + +2003-01-28 00:29 markt + + * libmp3lame/lame.c: + + short blocks are coupled, even in regular stereo mode. + This is to fix bugs reported in several different hardware decoders. + see comments in lame.c + +2003-01-27 12:22 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + added comments ... + +2003-01-27 11:39 takehiro + + * libmp3lame/VbrTag.c: + + fix warning(added return value) + +2003-01-26 17:37 takehiro + + * frontend/get_audio.c: + + added ID3tag v2 skipping function. + +2003-01-26 12:37 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + tuned long block PE calculation parameter. + +2003-01-26 12:09 bouvigne + + * libmp3lame/version.h: + + bumped alpha + +2003-01-26 12:08 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets (under testing) + +2003-01-26 12:02 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + tuned short block PE calculation parameter. + +2003-01-26 11:31 bouvigne + + * libmp3lame/lame.c: + + verbose + +2003-01-26 10:04 takehiro + + * libmp3lame/: takehiro.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + fix wrong "const" declaration. + +2003-01-25 11:02 bouvigne + + * libmp3lame/: lame.c, quantize.c: + + changed -q mapping + +2003-01-24 19:26 bouvigne + + * doc/html/history.html: + + history + +2003-01-22 17:15 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix best_huffman_divide MPEG2 short block treatment. + This is the same bug in count_bits(). + +2003-01-22 15:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove inner loop iteration limit (age) and some simple optimization. + +2003-01-21 02:45 takehiro + + * frontend/: parse.c (takehiro-2002_05_07-experimental), parse.c: + + added \n in --preset help + +2003-01-20 18:09 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets (under testing) + +2003-01-19 15:55 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets (under testing) + +2003-01-19 09:13 takehiro + + * libmp3lame/: encoder.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix fatal bit-counting bug in MPEG2/2.5 short block. + +2003-01-19 06:30 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + oops, type mismatch... + +2003-01-18 14:44 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + added new API, lame_set_use_subblockgain() to set if it uses subblock gain or not. + +2003-01-18 14:42 takehiro + + * frontend/parse.c, libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + added "--sfscale" and "--sbgain" options. + This is replacement of old ambiguous "-Z" option. + +2003-01-13 16:34 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + use --preset insane when --preset 320 + +2003-01-13 13:19 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + 10th quantcomp method, based on 3rd method, but uses over_noise instead of tot_noise. + +2003-01-13 13:11 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix fatal bug which happens when the last partition is wider than the last scalefactor band. + +2003-01-13 11:46 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix "off by one" in short block masking calculation. + +2003-01-13 11:45 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + use automatic resample even when ABR. + +2003-01-13 11:34 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + changed DEBUGF -> printf (to fix debug build). + vorbis removing related fix. + +2003-01-13 08:53 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + oops... fix auto short block switching threshold adjustment. + +2003-01-13 08:43 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + oops... fix --quantcomp option. + +2003-01-13 00:49 glessard + + * frontend/: get_audio.c, main.c, main.h, parse.c: + + NOGAP-related changes. + - added '-T' option to force VBR/INFO tag inclusion. + - moved a VBR/INFO tag inclusion decision to parse.c, eliminating the use + of a global variable across modules. + - fixed reading of multiple little-endian AIFF-C files in get_audio.c. For + those files, 'swapbytes' was getting toggled for each file opened in the + sequence, so only every other output file was correct. + +2003-01-12 15:18 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + added --quantcomp option. + +2003-01-12 12:37 takehiro + + * libmp3lame/: VbrTag.c, lame_global_flags.h, util.c + (takehiro-2002_05_07-experimental): + + sync with the head arround VbrTag. + +2003-01-12 12:35 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + ABR/CBR preset sync with the head branch. + +2003-01-12 12:33 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2003-01-11 18:40 bouvigne + + * libmp3lame/presets.c: + + low bitrates presets + +2003-01-11 17:56 markt + + * libmp3lame/: VbrTag.c, lame_global_flags.h, util.c: + + reorganized VBR tag initialization code so that it + could be reset/initialized several times + (for use when encoding in nogap mode) + +2003-01-11 17:42 markt + + * libmp3lame/lame_global_flags.h: + + removed comment within comment delimiter + +2003-01-11 17:41 markt + + * include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/lame_global_flags.h: + + cleaned up some comments about VBR tags being written + to the mp3 file after internal data structures are free + (this has not been true for a long time) + + na + +2003-01-11 15:43 bouvigne + + * libmp3lame/presets.c: + + low bitrates presets + +2003-01-11 13:05 takehiro + + * libmp3lame/: encoder.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + remove an unused argument of VBR_iteration() + +2003-01-11 12:55 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix mono ABR/VBR encoding + +2003-01-11 12:46 takehiro + + * libmp3lame/lame.c: + + fix ath curve initialization. + +2003-01-11 12:25 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix config print code + +2003-01-11 11:10 takehiro + + * frontend/rtp.c (takehiro-2002_05_07-experimental): + + sync with the head branch + - Include alloca.h if neccessary. (by Alex) + +2003-01-11 11:09 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + sync with the head branch + - GB's Ability to change ath4 shape independantly from vbr_q + +2003-01-11 11:08 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + sync with the head branch (GB's change, "Add the Info frame to the number of frames reported by the Info/vbr tag") + +2003-01-11 11:07 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + update bit. + +2003-01-11 11:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + use "safe" way of short block long->short threshold conversion + better ns_msfix by using the fatc that noise in sfb couldn't exceed its energy. + do not use ns_msfix when we used msfix. + do not long block msfix when the block IS short. + +2003-01-11 04:16 markt + + * frontend/main.c, libmp3lame/VbrTag.c: + + in nogap mode, with VBR tags, we were calling init_bitstream() + (which resets VBR tag data) before writing the VBR tag data. + This is now fixed, but there is still a bug when initializing the + VBR data for the 2nd (or more) encoding in the nogap series. + +2003-01-10 21:22 markt + + * frontend/parse.c: + + forgot a \n in the --longhelp documentation + +2003-01-10 20:18 markt + + * USAGE: + + note that --voice option is obsolete + +2003-01-10 20:12 markt + + * frontend/: main.c, main.h, parse.c: + + added the "--nogaptags" option. + + this will allow VBR tags even for gapless encoding. + The default behavoir is to disable tags for gapless encoding. + +2003-01-10 20:07 markt + + * frontend/parse.c, libmp3lame/VbrTag.c: + + Updated the TOC calculation in the VBR tag to also count + the size of the VBR tag itself. + + This is to make the VBR tag consistent with the recent change + in the VBR frame count (changed so that it also counts the + VBR tag as a frame) + +2003-01-10 19:06 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix usage message arround ns(-bass|-alto|-treble|-sfb21|msfix). + +2003-01-10 18:58 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial cleanup (when JOINT_STEREO and no-psymodel, it is always MS stereo) + +2003-01-10 18:57 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix some initilization when ABR. + (It seems ATH-adjust type 3 does not works fine with ABR mode ...) + +2003-01-05 16:49 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + fix compiling error(oops, trivial mistake...) + +2003-01-05 16:36 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + - use ns-(bass|alto|treble|sfb21) in psymodel. And now ATH values are not + affected by these values. + + - sfb21 aware pe(perceptual entropy) calculation. I hope it brings + better LR/MS switching, but CBR/ABR is now not good as it was because of this. + I'm afraid it needs overhaul.... + + - analog silence detection code is moved to pecalc_[ls] functions. + +2003-01-05 14:56 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + removed unused code + +2003-01-05 08:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + one more fix for inc_subblock_gain(). + and some clean up. + +2003-01-05 08:14 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + pe calculation of over 16kHz region. + +2003-01-05 07:22 takehiro + + * libmp3lame/: lame-analysis.h, quantize.h + (takehiro-2002_05_07-experimental): + + move set_frame_pinfo() definition to fix mp3x built + +2003-01-05 07:21 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + remove unused code to fix mp3x built + +2003-01-05 04:28 takehiro + + * DEFINES (takehiro-2002_05_07-experimental): + + completely updated (from Alex's comment). + +2003-01-05 04:11 takehiro + + * libmp3lame/: bitstream.c, encoder.c, quantize.c, reservoir.c, + reservoir.h (takehiro-2002_05_07-experimental): + + - general clean up mainly arround reservoir. + - use faster and not exact quantizing method for the 1st step of VBR. + (It estimates scalefactor step roughly and not needed exactness) + +2003-01-05 03:36 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + remove u_char definition (sync head branch) + +2003-01-02 18:42 bouvigne + + * libmp3lame/psymodel.c: + + In psymodel_init set blocktype_old to NORM_TYPE because the VBR header is long blocks. This might be the problem encountered in some WMP 6.4 + +2003-01-02 18:37 bouvigne + + * libmp3lame/VbrTag.c: + + Add the Info frame to the number of frames reported by the Info/vbr tag + +2003-01-02 18:30 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + reduced 63 warnings to 55 under visual c++. Those were mainly differences between function prototypes in declarations and implementations. + +2003-01-02 18:27 bouvigne + + * libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.c, libmp3lame/util.h, frontend/parse.c, + include/lame.h: + + Ability to change ath4 shape independantly from vbr_q + +2003-01-01 16:14 aleidinger + + * libmp3lame/machine.h: + + Removed u_char typedefs, u_char is not used in the tree (according to grep -r u_char). + +2003-01-01 16:12 aleidinger + + * frontend/rtp.c: + + Include alloca.h if neccessary. + + Noticed by: Tomi Vainio + +2002-12-31 14:00 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/libmp3lame.dsp, libmp3lame/libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + vbrquantize.[ch] and quantize_pvt.c is merged into quantize.c + +2002-12-31 13:58 takehiro + + * libmp3lame/: bitstream.c, encoder.c, lame.c, lame_global_flags.h, + reservoir.c, tables.c, util.c, util.h, version.h + (takehiro-2002_05_07-experimental): + + general cleanup + gfp->VBR_mean_bitrate_kbps and gfp->brate is merged. + + init_bit_stream_w is moved to lame.c from bitstream.c + + FindNearestBitrate(), map2MP3Frequency(), SmpFrqIndex() + are moved to lame.c from util.c + + fix VBR lowest/highest bitrate in mono-mode + + now alpha 4 + +2002-12-31 13:56 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h, + quantize.h, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + removed analog silence related code in calc_xmin(). + + ABR/CBR code integration. + caller of init_outer_loop() and calc_xmin() is moved to outer_loop() + + off by one fix of global_gain (from the mainline), in outer_loop() + + new vbr code. but still needs more fix. + remove unused code in VBR_prepare() + + vbrquantize.[ch] and quantize_pvt.c is merged into quantize.c + + one more inc_subblock_gain() fix. + +2002-12-31 13:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + some cleanup arround pointer. + + analog silence detection in psymodel.c. + + skip short block FFT calculation of joint stereo, if it is not needed. + +2002-12-29 16:48 takehiro + + * frontend/main.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c, + libmp3lame/set_get.c, libmp3lame/tables.c + (takehiro-2002_05_07-experimental): + + cleanups + - all vbr modes are into one. + - more initilization code organization + + experimental tuning of short block switching threshold in ABR presets. + +2002-12-29 16:44 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + update mainly due to long->short threshold convertion + +2002-12-29 09:09 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + follow new APIs + +2002-12-29 08:57 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, lame.c, + lame_global_flags.h, machine.h, psymodel.c, psymodel.h, tables.c, + tables.h, util.c, util.h, version.h + (takehiro-2002_05_07-experimental): + + general cleanups + - removed KLEMM_44 (I plan to replace the resampling code with ssrc) + - VBR/CBR/ABR related initialization cleanup + - moved initialization related code in lame.c/util.c -> tables.c + - most of "preset" settings are defaulted. + + experimenal tuning + - substep method and use_scalefac_scale setting are removed + from -q option mapping + +2002-12-29 08:51 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + - simplify/removed not needed VBR code. + *** There is still problem which it assumes the quantization noise is + *** monotone function of the scalefactor(quantization factor). + +2002-12-29 08:49 takehiro + + * libmp3lame/: lame-analysis.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c (takehiro-2002_05_07-experimental): + + - use athAdjust() always (in quantize.c) + - removed unused quantcomp_method + +2002-12-29 08:43 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + * follow API changes. + * clean up options. + added options + --shortthreshold + removed options + --r3mix, --phone, --voice, --radio, --tape, --cd, --studio, + --cwlimit, --nspsytune, + --vbr-old, --vbr-new, --vbr-mrth + --short + changed options + --allshort, --noshort (implemented by shortthreshold API) + +2002-12-29 08:40 takehiro + + * libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/libmp3lame_vc6.dsp, libmp3lame/presets.c, + libmp3lame/set_get.c, Makefile.DJGPP, Makefile.MSVC, + Makefile.unix (takehiro-2002_05_07-experimental): + + presets.c is merged into set_get.c + API change + - CHANGED: expX -> "quantocomp_method" + - CHANGED: expZ -> "use_large_scalefac" + - REMOVED: cwlimit related APIs + - REMOVED: short blocks on/off/forced APIs + - NEW: short blocks switching threshold API + +2002-12-27 04:42 takehiro + + * libmp3lame/psymodel.c: + + use ATH value as short block masking lower limit. + +2002-12-27 04:21 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/set_get.c, + libmp3lame/version.h: + + new option --shortthreshold and bump up version number(alpha 8) + and new psymodel version(0.90) for ATHadjust aware psymodel + +2002-12-27 04:17 takehiro + + * libmp3lame/psymodel.c: + + fix assertion failure (oops, my mistake in ATH handling change) + +2002-12-26 05:43 takehiro + + * libmp3lame/: lame.c, psymodel.c, psymodel.h: + + cleanup psymodel initialization preparing for --shortthreshold option. + +2002-12-25 12:13 takehiro + + * libmp3lame/: psymodel.c, quantize.c, set_get.c, util.h, + vbrquantize.c: + + ATH handling fix and simplification. + - use ATH adjust in ns_msfix(), mask_add(), and masking lower limit calculation. + - all ATH adjust related thresholding(ns_msfix, quantcompare and scalefac_scale) is removed. + +2002-12-21 07:12 takehiro + + * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.c, tables.c + (takehiro-2002_05_07-experimental): + + masking_lower related fix for shortblock ATH handling and clean up. + +2002-12-21 07:10 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + trivial style change + +2002-12-21 05:52 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization (when joint stereo, it is always STEREO and channels_out = 2) + +2002-12-21 05:51 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix it uses LR threshold for MS when -m f + +2002-12-21 05:45 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + zero prevention (adding 1e-37) is not needed. + +2002-12-21 04:55 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix + (takehiro-2002_05_07-experimental): + + fix for removing vorbis support + +2002-12-21 04:53 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + short block ATH scaling fix. + +2002-12-18 16:29 takehiro + + * libmp3lame/libmp3lame_vc6.dsp: + + removed tools.h + +2002-12-18 16:27 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, debugscalefac.c, tools.c, + tools.h: + + remove unused files and regen Makefile + +2002-12-16 19:02 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix inc_subblock_gain() to properly handle sfb12 (16kHz over region) MDCT coefs. + +2002-12-16 18:46 takehiro + + * libmp3lame/quantize.c: + + oops, I checked in the wrong version... + +2002-12-16 18:45 takehiro + + * libmp3lame/quantize.c: + + fix inc_subblock_gain() to properly handle sfb12 (16kHz over region) MDCT coefs. + +2002-12-16 18:14 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + initial attempt to long->short masking threshold conversion + fix FFT routine selection code. + + adjust masking threshold scaling for VBR. + + fix ATH handling for long block masking threshold. + +2002-12-16 18:10 takehiro + + * libmp3lame/: encoder.c, lame-analysis.h + (takehiro-2002_05_07-experimental): + + mp3x displays MS/LR masking pe difference + +2002-12-15 17:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + cleanup related removing vbr-old + +2002-12-15 17:39 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + cleanup related removing vbr-old + +2002-12-15 17:37 takehiro + + * libmp3lame/lame_global_flags.h + (takehiro-2002_05_07-experimental): + + remove an unused variable + +2002-12-15 17:36 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix short block scaling for ATH handling + +2002-12-15 16:25 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix fatal short block ATH handling... + +2002-12-15 12:56 bouvigne + + * libmp3lame/lame.c, frontend/parse.c: + + warning about alpha versions + +2002-12-15 11:59 takehiro + + * ACM/ACMStream.cpp: + + fix access violation when LAME failed to initilize. + I hope this fixes BUG ID 646894 (at sf.net). + +2002-12-15 11:11 takehiro + + * libmp3lame/lame.c: + + fix warning (reported at sf.net by krick.) + +2002-12-15 11:10 takehiro + + * libmp3lame/: util.h, takehiro.c: + + fix warning (reported at sf.net by krick. + +2002-12-15 10:07 takehiro + + * libmp3lame/: presets.c, quantize.c + (takehiro-2002_05_07-experimental): + + remove vbr-old and its presets + +2002-12-15 09:47 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + adjust masking threshold for new mask_add() strategy. + +2002-12-15 09:11 takehiro + + * libmp3lame/lame.c: + + fix -q0 convined with --substep x option. + +2002-12-15 08:56 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix: + + fix for vorbis support remove (I hope) + +2002-12-14 19:19 robert + + * ChangeLog, Makefile.MSVC, lame.bat, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/quantize.c, libmp3lame/util.c, + misc/lame4dos.bat, misc/mlame: + + removed my email address + +2002-12-14 18:56 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix for ATH handling and short block VBR threshold. + +2002-12-14 17:38 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + more fix for msfix and its comment. + +2002-12-14 11:08 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix better ns_msfix (and better MS/LR switching). + +2002-12-14 08:01 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix msfix for symmetric L/R treatment. + +2002-12-13 17:48 takehiro + + * libmp3lame/quantize.c: + + off by one fix for global_gain. + +2002-12-13 17:42 takehiro + + * libmp3lame/: encoder.h, psymodel.c, quantize.c, set_get.c, + tables.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + ATH adjustment related code cleanup (for mostly preset). + and possible fix for "global_gain > 255" (backport from mainline). + +2002-12-13 16:58 takehiro + + * configure, frontend/main.h, libmp3lame/Makefile.in: + + remove vorbis support and regen. + +2002-12-13 16:54 takehiro + + * configure.in, config.h.in, frontend/get_audio.c, frontend/main.c, + frontend/parse.c, libmp3lame/Makefile.am, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/vorbis_interface.c: + + remove vorbis support. + +2002-12-13 14:34 takehiro + + * libmp3lame/lame.c: + + fix for 64bit environment, reported by Tomi Vainio + +2002-12-09 19:00 bouvigne + + * libmp3lame/: quantize.c, version.h: + + fixed the quant_comp problem (probably introduced by me) + so bump the alpha version number + +2002-12-08 17:40 takehiro + + * libmp3lame/version.h: + + now 3.94 alpha 6 + - changed default block switching threshold + - fixed mpglib crash. + +2002-12-08 17:35 takehiro + + * libmp3lame/psymodel.c: + + changed long/short block switching threshold. + +2002-12-08 17:23 takehiro + + * testcase.mp3: + + new testcase for the new default cutoff frequency. + +2002-12-08 17:07 takehiro + + * mpglib/interface.c: + + null pointer check patch from Peter Pawlowski , to prevent the random crash. + +2002-12-08 17:02 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.am, + Makefile.in, Makefile.unix, configMS.h, configure, configure.in, + testcase.mp3, frontend/brhist.c, frontend/brhist.h, + frontend/console.c, frontend/console.h, frontend/get_audio.c, + frontend/get_audio.h, frontend/gpkplotting.h, frontend/gtkanal.c, + frontend/gtkanal.h, frontend/lametime.c, frontend/lametime.h, + frontend/main.c, frontend/main.h, frontend/parse.c, + frontend/parse.h, frontend/portableio.h, frontend/rtp.c, + frontend/rtp.h, frontend/timestatus.c, frontend/timestatus.h, + include/lame.h, libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/fft.c, libmp3lame/fft.h, + libmp3lame/gain_analysis.c, libmp3lame/gain_analysis.h, + libmp3lame/id3tag.h, libmp3lame/l3side.h, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/libmp3lame.dsp, + libmp3lame/machine.h, libmp3lame/mpglib_interface.c, + libmp3lame/newmdct.c, libmp3lame/newmdct.h, libmp3lame/presets.c, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/reservoir.h, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h, + libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/vorbis_interface.c, libmp3lame/i386/Makefile.am, + libmp3lame/i386/Makefile.in, mpglib/common.c, mpglib/common.h, + mpglib/dct64_i386.h, mpglib/decode_i386.h, mpglib/huffman.h, + mpglib/interface.c, mpglib/interface.h, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer1.h, mpglib/layer2.c, + mpglib/layer2.h, mpglib/layer3.c, mpglib/layer3.h, + mpglib/mpg123.h, mpglib/mpglib.h, mpglib/tabinit.h: + + overwrite by takehiro_stable branch. + +2002-12-08 16:59 takehiro + + * mac/.cvsignore: + + added + +2002-12-02 20:26 bouvigne + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/presets.c, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, include/lame.h, frontend/parse.c + (takehiro-stable-2002_10_15): + + quant_comp and quant_comp_short + +2002-12-01 17:47 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + now alpha4 + - fix -q0 and -q1 + - -X and -Z option update + + I think we should "-X1,0" as default for ABR/CBR/VBR-old, including all presets. (except fast presets) + please test and tell your result. + +2002-12-01 17:43 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c + (takehiro-stable-2002_10_15): + + added "-Z -1" to enable scalefactor scale only(disable subblock gain) + +2002-12-01 16:32 aleidinger + + * ChangeLog: + + update for 3.93.1 + +2002-12-01 16:18 aleidinger + + * configure: + + regen + +2002-12-01 16:15 aleidinger + + * configure.in: + + change version to 3.93.1 + +2002-12-01 16:12 aleidinger + + * configure: + + regen + +2002-12-01 16:10 aleidinger + + * doc/html/history.html: + + sync with webpages + +2002-12-01 16:06 aleidinger + + * configure.in: + + Check for socket() in libsocket if it isn't in libc so rtp can get compiled + on Solaris. + + Noticed by: "Niki W. Waibel" + + While I'm here, bail out if some other functions aren't there. + +2002-12-01 15:42 takehiro + + * libmp3lame/lame.c (takehiro-stable-2002_10_15): + + fix -q0 and -q1. This makes -q0 very very slow. + +2002-12-01 15:36 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/vbrquantize.c + (takehiro-stable-2002_10_15): + + now you can specify the method how to compare the quantization + for long/short block independently by -X option.(-X n,m) + +2002-12-01 13:18 takehiro + + * libmp3lame/set_get.c (takehiro-stable-2002_10_15): + + fix comment + +2002-11-30 18:18 bouvigne + + * libmp3lame/version.h: + + version + +2002-11-29 17:07 bouvigne + + * Dll/BladeMP3EncDLL.def: + + dll exports + +2002-11-28 21:05 bouvigne + + * doc/html/: history.html, index.html: + + docs + +2002-11-28 18:06 bouvigne + + * libmp3lame/version.h: + + go back to 3.93 + +2002-11-28 18:04 bouvigne + + * libmp3lame/lame.c: + + revert back q0 to q1 state (due to reports about quality problems) + +2002-11-26 15:45 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + alpha4 solves the fatal error in outer_loop(). it should not select the + data whose global_gain is greater than 255. + +2002-11-25 18:00 bouvigne + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + sync presets with the executable front-end and libmp3lame + +2002-11-25 01:36 takehiro + + * libmp3lame/: Makefile.am, Makefile.in + (takehiro-stable-2002_10_15): + + fix build problem + +2002-11-24 18:37 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + Fix not to select the data whose global_gain is greater than 255. + and inner_loop() manual inlining. + This fix is based on the R.A.F.'s bug report at HA. Thanx R.A.F. + +2002-11-23 18:54 bouvigne + + * libmp3lame/psymodel.c: + + quick fix of nspsytune + +2002-11-17 16:39 takehiro + + * libmp3lame/.indent.pro (takehiro-stable-2002_10_15): + + I forgot to sync this with the head branch. + +2002-11-17 16:34 takehiro + + * Makefile.in, configure, Dll/Makefile.in, libmp3lame/Makefile.in + (takehiro-stable-2002_10_15): + + regen (by hand :p) + +2002-11-17 16:33 takehiro + + * ChangeLog, ChangeLog.header, Makefile.am, configure.in, + Dll/Makefile.am, libmp3lame/Makefile.am + (takehiro-stable-2002_10_15): + + sync with head branch (releasing 3.93 related things). + +2002-11-17 15:59 takehiro + + * doc/html/history.html (takehiro-stable-2002_10_15): + + copy from webpage/history.html + +2002-11-17 11:11 aleidinger + + * configure.in, libmp3lame/version.h: + + We are now at 3.94alpha... + +2002-11-17 10:41 aleidinger + + * doc/html/history.html: + + Copy history from webpage. + +2002-11-17 10:29 aleidinger + + * ChangeLog: + + ChangeLog for 3.93. + +2002-11-17 10:25 aleidinger + + * Dll/Makefile.in, Makefile.in: + + regen + +2002-11-17 10:24 aleidinger + + * Makefile.am: + + Add lame.dsw. + +2002-11-17 10:23 aleidinger + + * Dll/Makefile.am: + + Oops... add missing backslash. + +2002-11-17 10:18 aleidinger + + * Dll/Makefile.in, libmp3lame/Makefile.in: + + regen + +2002-11-17 10:16 aleidinger + + * libmp3lame/Makefile.am: + + Add gain_analysis.[ch] to the distributed files. + +2002-11-17 10:11 aleidinger + + * Dll/Makefile.am: + + Add some missing files. + +2002-11-17 10:09 aleidinger + + * configure: + + gtk12-config -> gtk-config + +2002-11-17 10:05 aleidinger + + * testcase.mp3: + + "Official" testcase.mp3 for this release. + +2002-11-17 09:51 aleidinger + + * ChangeLog.header: + + Add some information about branches. + +2002-11-17 09:46 aleidinger + + * libmp3lame/version.h: + + We are at 3.93-RELEASE now... + +2002-11-17 09:45 aleidinger + + * doc/man/lame.1, frontend/parse.c: + + Warn about fast presets. + +2002-11-16 13:07 takehiro + + * configure (takehiro-2002_05_07-experimental): + + remove vorbis related things + +2002-11-16 12:44 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + removed vorbis related thing + +2002-11-16 10:07 bouvigne + + * doc/html/presets.html: + + warning about fast presets + +2002-11-13 20:56 bouvigne + + * libmp3lame/: lame.c, presets.c, util.c, util.h + (takehiro-stable-2002_10_15): + + change of the default lowpass values (will break testcases) + +2002-11-13 20:24 bouvigne + + * libmp3lame/: lame.c, presets.c: + + rollback of lowpass change before release + +2002-11-10 12:41 takehiro + + * libmp3lame/: encoder.c, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + prepare for intensity-stereo. + +2002-11-10 12:40 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + some trivial optimizations and make some functions static. + +2002-11-10 12:39 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + trivial macro fix + +2002-11-10 12:38 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + optimize subband filter (lowpass/highpass). + +2002-11-10 12:36 takehiro + + * libmp3lame/i386/: choose_table.nas, fft3dn.nas + (takehiro-2002_05_07-experimental): + + align -> loopalign + better labeling + +2002-11-10 08:24 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + - more db2pow() macro use + - remove traditional code(which do nothing) + +2002-11-10 08:23 takehiro + + * libmp3lame/psymodel.h (takehiro-2002_05_07-experimental): + + fix warning + +2002-11-10 07:55 takehiro + + * frontend/main.c, frontend/parse.c, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.h, libmp3lame/vorbis_interface.c + (takehiro-2002_05_07-experimental): + + remove vorbis support, which is too much outdated. + +2002-11-10 07:53 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2002-11-09 18:45 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + - optimize ATH handling in mask_add() by changing ATH.cb[] scaling. + - more faster long block masking threshold calculation. + +2002-11-09 18:43 takehiro + + * libmp3lame/: encoder.c, takehiro.c + (takehiro-2002_05_07-experimental): + + cleanup START/STOP type bit calculation + +2002-11-09 18:42 takehiro + + * libmp3lame/i386/: choose_table.nas, nasm.h + (takehiro-2002_05_07-experimental): + + some sync with GOGO. + +2002-11-09 12:34 takehiro + + * libmp3lame/: encoder.c, machine.h, quantize.c, set_get.c, + tables.c (takehiro-2002_05_07-experimental): + + clean up decibel -> power conversion + +2002-11-09 12:33 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up FFT related code. + more acculate condition check whether we need short block masking calculation. + FIR filter loop unrolling + +2002-11-07 18:47 bouvigne + + * libmp3lame/: lame.c, presets.c, util.c, util.h: + + change of the default lowpass values (will break testcases) + +2002-11-04 16:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimize long block masking ratio calculation (partition -> scalefactor band transformation) + +2002-11-04 16:49 takehiro + + * testcase.mp3, libmp3lame/psymodel.c + (takehiro-2002_05_07-experimental): + + fix short block masking calcultion(patition to scalefactor band transformation) + and trivial cleanups, as is always :) + +2002-11-04 16:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix mp3x FFT display. + +2002-11-04 15:56 takehiro + + * testcase.mp3, libmp3lame/encoder.c, libmp3lame/psymodel.c, + libmp3lame/reservoir.c, libmp3lame/version.h + (takehiro-2002_05_07-experimental): + + now here goes alpha 2. + - some trivial optimizaions and cleanups on psymodel. + - cleanup mp3x arround + +2002-11-04 13:53 takehiro + + * libmp3lame/: VbrTag.h, encoder.c, lame-analysis.h, machine.h, + psymodel.c, psymodel.h, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, set_get.c, tables.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + large cleanup mainly arround psymodel (continue) + - removed all temporary masking related code, because now I found all the + temporal masking code is completely messed up. + + - do not calculate short block masking ratio when it is not needed. + + - mp3x FFT energy display fix. + + - better perceptual entropy calculation, by using ATH. + + - some include file clean up. + + - some trivial code cleanup arround quantize/bit counting. + +2002-11-04 13:49 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix -q 4 setting. + +2002-11-04 13:48 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix FFT energy display. + +2002-11-03 17:56 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen with new psymodel, which increases encode delay. + +2002-11-03 17:30 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, encoder.c, encoder.h, + l3side.h, lame-analysis.h, lame.c, lame_global_flags.h, + newmdct.c, psymodel.c, psymodel.h, quantize.c, quantize_pvt.h, + set_get.c, tables.c, takehiro.c, util.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + large cleanup, mainly on PSYMODEL calculation. + - it calculates masking ratio/pe/tot_energy/block_type/frame_type next FRAME, + not next GRANULE. it increases the encoding delay, but code is very simple. + + - "allow different block_type in each channel (L/R)" could be archived even + when joint stereo. + + - l3side.h is merged into util.h + + - MPEG2/2.5, mp3x's display may corrupt (not tested much). + +2002-11-03 17:23 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial + +2002-11-03 17:22 takehiro + + * frontend/: gpkplotting.c, gpkplotting.h, gtkanal.c + (takehiro-2002_05_07-experimental): + + fix for mp3x MDCT original value display + +2002-11-03 17:00 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + fix abr preset + +2002-11-03 16:55 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + fix for not --enable-all-float + +2002-11-02 17:47 takehiro + + * libmp3lame/: lame.c, util.h (takehiro-2002_05_07-experimental): + + trivial cleanup + +2002-11-02 17:30 takehiro + + * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, + quantize.c, quantize_pvt.h, set_get.c, tables.c, util.h, + vbrquantize.c (takehiro-2002_05_07-experimental): + + cleanup arround preset. + - merged adaptive ATH and msfix parameter into "normal" setting. + - simplified how to compare the quantization/scalefactor. + +2002-11-02 17:26 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + remove unused prototype. + +2002-11-02 15:50 takehiro + + * libmp3lame/: encoder.c, set_get.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + remove meaningless variables in preset modes. + +2002-11-02 12:26 takehiro + + * libmp3lame/: VbrTag.c, lame.c, presets.c, quantize.c, tables.c, + util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): + + - -q option remapping. + new very old(-3.92) old(3.93) + 9 8,9 8,9 + 8 7 7 + 7 5,6 5,6 + 5,6 2,3,4 3,4 + 4 2 + --substep 5 3 + --substep 5 + 3 2 + --substep 7 3 + --substep 7 + 2 cannot emulate 2 + --substep 7 + 1 cannot emulate 1 + --substep 7 + 0 cannot emulate 0 + --substep 7 + + - fast_log2() optimization and cleanup. + +2002-11-02 12:18 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + ATH adjustment aware masking calculation in mask_add() and ms_fix(). + +2002-10-31 14:56 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2002-10-31 14:27 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + some precision fix(maybe) + +2002-10-31 14:26 takehiro + + * doc/html/presets.html (takehiro-2002_05_07-experimental): + + sync with mainline and added some DM presets. + +2002-10-28 11:25 takehiro + + * libmp3lame/: encoder.c, psymodel.h, psymodel.c + (takehiro-2002_05_07-experimental): + + now psymodel never return error. + +2002-10-28 11:15 takehiro + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/l3side.h, libmp3lame/lame.c, libmp3lame/machine.h, + libmp3lame/newmdct.c, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h, libmp3lame/reservoir.c, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c, + libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/vbrquantize.h (takehiro-2002_05_07-experimental): + + changed FLOAT8 -> FLOAT (except one subband filter coefs, which is defined + as "double" in spec). + +2002-10-28 11:12 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix mpglib crash bug, from Mathew Hendry. + +2002-10-28 11:09 takehiro + + * frontend/portableio.h (takehiro-2002_05_07-experimental): + + remove cvs log. + +2002-10-28 10:43 takehiro + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, tables.c, util.h + (takehiro-2002_05_07-experimental): + + remove unused variables + +2002-10-28 10:01 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix long/short typo. + +2002-10-28 10:00 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + added new preset definition + +2002-10-27 14:37 aleidinger + + * configure: + + regen + +2002-10-27 14:36 aleidinger + + * configure.in: + + Forced commit: last commit was - remove -funroll-loops as suggested in the nearby comment Noticed by: takehiro + +2002-10-27 14:32 aleidinger + + * configure.in: + + remove options as suggested in the nearby comment; Noticed by: takehiro + +2002-10-27 13:38 takehiro + + * libmp3lame/: encoder.c, lame.c, lame_global_flags.h, machine.h, + newmdct.c, newmdct.h, presets.c, psymodel.c, psymodel.h, + quantize.c, set_get.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + large update. + - sync mainline, + * side channel sparsing + * new presets, dm-radio and so on. + * blocktype histgram + * fix arround FLOAT_MAX + * tuning substep noise shaping start frequency + + - large code simplification + * cod_info initialization code is moved to encoder.c + * faster psymodel calculation. + +2002-10-27 13:33 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + sync mainline + - fix arround sfb21 and smoothing method 2 + +2002-10-27 13:32 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + To avoid confusing, named it as lame4.0 + +2002-10-27 13:30 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, main.h, mp3rtp.c, + mp3x.c, parse.c, parse.h, timestatus.h + (takehiro-2002_05_07-experimental): + + sync mainline + - fix arround PATHNAMELEN + - new presets + - fix warnings + - fix --silent option + - new option "side channel sparsing" + +2002-10-27 13:29 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + - sync mainline (block type histgram, build fix for cygwin) + +2002-10-27 13:26 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2002-10-27 13:26 takehiro + + * configure.in, doc/html/Makefile.am, doc/html/Makefile.in, + doc/html/contributors.html, doc/html/index.html, doc/man/lame.1 + (takehiro-2002_05_07-experimental): + + sync mainline + +2002-10-27 12:19 robert + + * frontend/portableio.h (takehiro-stable-2002_10_15): + + do we need logging of cvs commits in source files? + small fixes in comments due to cvs log entries + +2002-10-27 08:17 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + bump up version number. alpha3 contains + - tuning substep noise shpaing (by me, Takehiro) + - added side channel sparsing (by Robert) + +2002-10-26 20:41 robert + + * configMS.h, frontend/amiga_mpega.c, frontend/brhist.c, + frontend/brhist.h, frontend/console.c, frontend/console.h, + frontend/get_audio.c, frontend/get_audio.h, + frontend/gpkplotting.c, frontend/gpkplotting.h, + frontend/gtkanal.c, frontend/gtkanal.h, frontend/lametime.c, + frontend/lametime.h, frontend/main.c, frontend/main.h, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, + frontend/parse.h, frontend/portableio.c, frontend/portableio.h, + frontend/rtp.c, frontend/rtp.h, frontend/timestatus.c, + frontend/timestatus.h, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/gain_analysis.c, + libmp3lame/gain_analysis.h, libmp3lame/id3tag.c, + libmp3lame/id3tag.h, libmp3lame/l3side.h, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/machine.h, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/presets.c, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/reservoir.h, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h, + libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/vorbis_interface.c, mpglib/common.c, mpglib/common.h, + mpglib/dct64_i386.c, mpglib/dct64_i386.h, mpglib/decode_i386.c, + mpglib/decode_i386.h, mpglib/huffman.h, mpglib/interface.c, + mpglib/interface.h, mpglib/l2tables.h, mpglib/layer1.c, + mpglib/layer1.h, mpglib/layer2.c, mpglib/layer2.h, + mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, + mpglib/mpglib.h, mpglib/tabinit.c, mpglib/tabinit.h + (takehiro-stable-2002_10_15): + + changed C++ comments into C style comments for + configMS.h + include/*.h + frontend/*.[ch] + mpglib/*.[ch] + libmp3lame/*.[ch] + +2002-10-26 18:53 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-10-26 18:52 takehiro + + * libmp3lame/: Makefile.am, debugscalefac.c + (takehiro-2002_05_07-experimental): + + remove unused debugscalefac.c + +2002-10-26 18:51 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + fix build problem + +2002-10-26 16:48 takehiro + + * libmp3lame/presets.c (takehiro-stable-2002_10_15): + + added interchannel masking to dm-radio-fast preset, too. + +2002-10-26 16:47 takehiro + + * libmp3lame/presets.c (takehiro-stable-2002_10_15): + + lower bitrate adjustment and added inter-channel masking for dm-radio preset. + +2002-10-26 16:32 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + tuned substep-noise-shaping start frequency of short block (--substep 5). + +2002-10-26 12:31 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + fix for not C99 C compiler + +2002-10-26 12:29 takehiro + + * configure (takehiro-stable-2002_10_15): + + regen + +2002-10-26 12:29 takehiro + + * configure.in (takehiro-stable-2002_10_15): + + sync with mainline and added fix for "-funroll-loops" bug on gcc3.0.* + +2002-10-26 12:20 takehiro + + * frontend/parse.c (takehiro-stable-2002_10_15): + + sync mainline... --silent + input from stdin fix. + +2002-10-24 00:04 robert + + * libmp3lame/: vbrquantize.c (takehiro-stable-2002_10_15), + vbrquantize.c: + + bug fix in vbr-new + possible division by zero + +2002-10-23 23:43 robert + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/util.h + (takehiro-stable-2002_10_15): + + added mid/side channel sparsing + --ms-sparsing n | n=0 disable / n=1 mode 1 / n=2 mode 2 + --ms-sparse_low x | default 9 dB + --ms-sparse_high x | default 3 dB + +2002-10-21 01:27 markt + + * frontend/parse.c: + + truely silent when input is stdin patch committed + +2002-10-20 15:38 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + fix possible float exception + +2002-10-20 15:36 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + bump up the alpha2 + +2002-10-20 15:35 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + fix minor boundary check and remove unused variable. + +2002-10-20 13:42 takehiro + + * doc/: html/Makefile.am, html/Makefile.in, html/contributors.html, + html/index.html, html/presets.html, man/lame.1 + (takehiro-stable-2002_10_15): + + sync with mainline + +2002-10-20 13:31 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + work arround of --substep for Tom's Diner. + +2002-10-20 13:09 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + faster mask_add() + +2002-10-20 12:31 takehiro + + * libmp3lame/: psymodel.c, quantize_pvt.c, util.h + (takehiro-stable-2002_10_15): + + more optimized usage of FAST_LOG(). + +2002-10-20 11:39 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c (takehiro-stable-2002_10_15): + + removed mixed block related switches, which is "not" as stable as releasing. + fix block type decision code when LR/MS change occurs. + +2002-10-20 08:41 takehiro + + * libmp3lame/machine.h (takehiro-stable-2002_10_15): + + float max should be arround 1e38 or so. + +2002-10-20 08:39 takehiro + + * include/lame.h, libmp3lame/set_get.c + (takehiro-stable-2002_10_15): + + re-introduce the padding related functions/definitions for backward compatibility. + +2002-10-20 08:38 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, main.h, mp3rtp.c, + mp3x.c, parse.c, parse.h, timestatus.h + (takehiro-stable-2002_10_15): + + sync mainline. + - PATHLEN related fix. + - reduce warning. + +2002-10-20 08:37 takehiro + + * frontend/brhist.c (takehiro-stable-2002_10_15): + + fix for cygwin build. + +2002-10-20 07:34 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + improve attack detection and added release detection for L/S switching. + +2002-10-20 07:27 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + fix warning. + +2002-10-20 07:21 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c + (takehiro-stable-2002_10_15): + + added some presetes for syncing DM series. + fix --preset medium to use -q3, not -q2. + +2002-10-20 07:18 takehiro + + * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): + + sync mainline. XXL is defaulted. + +2002-10-19 02:11 robert + + * frontend/brhist.c: + + little bit prettier printing of block types stats + +2002-10-19 02:10 robert + + * frontend/brhist.c (takehiro-stable-2002_10_15): + + little bit prettier printing of block type stats + +2002-10-18 23:54 robert + + * frontend/brhist.c, frontend/parse.c, include/lame.h, + libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/util.h + (takehiro-stable-2002_10_15): + + merger from main branch: + simple statistics of block types used (seeing with --brief / --verbose) + +2002-10-18 22:54 robert + + * frontend/brhist.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + added some simple statistics about block types used: + added lame_block_type_hist() and lame_bitrate_block_type_hist() to API + using new switch --brief will show one line of percentage types used + using switch --verbose will show in more detail used block types + +2002-10-17 17:05 bouvigne + + * frontend/parse.c: + + removed some unused functions + +2002-10-17 13:03 aleidinger + + * include/lame.h: + + correct comment about *_bWriteVbrTag() + +2002-10-16 21:13 robert + + * libmp3lame/vbrquantize.c: + + fixing compiler warnings (unused code removed), some clean up + +2002-10-16 18:01 bouvigne + + * frontend/get_audio.c, frontend/get_audio.h, frontend/parse.c, + frontend/parse.h, frontend/timestatus.h, include/lame.h, + libmp3lame/set_get.c, libmp3lame/takehiro.c: + + minor code cleanups in order to reduce warnings + +2002-10-15 22:45 robert + + * frontend/main.h, libmp3lame/machine.h + (takehiro-stable-2002_10_15): + + fixing Win32 issues + +2002-10-15 22:02 robert + + * libmp3lame/: encoder.c, version.h (takehiro-stable-2002_10_15): + + Takehiro I hope you don't mind, but I bump the version to 94 alpha 1 + to avoid confusions if binaries are shown up at HA + +2002-10-15 21:29 robert + + * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): + + fix for --vbr-new -Y crash + we have to calc xr34 for the whole range, for sfb21 too + +2002-10-15 19:16 robert + + * Makefile.unix, libmp3lame/psymodel.c, libmp3lame/util.h: + + reenentrant fix for loudness approx. + +2002-10-15 17:07 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + fix short block with -X 0(vbr smooth method 1), especially for --r3mix. + +2002-10-15 16:35 takehiro + + * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): + + fix short block with -X 0(vbr smooth method 1), especially for --r3mix. + +2002-10-15 15:39 takehiro + + * frontend/main.h, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix for no-GTK, and on windows (same as what I've done mainline). + +2002-10-15 15:37 takehiro + + * frontend/main.h (takehiro-stable-2002_10_15): + + ooops, I missed "n". + +2002-10-15 15:35 takehiro + + * libmp3lame/lame.c (takehiro-stable-2002_10_15): + + fix for no-GTK environment. + +2002-10-15 15:30 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix arround FLT_MAX/FLOAT_MAX (I hope) + +2002-10-15 15:24 aleidinger + + * configure.in: + + different way of specifying the gcc version in the sparc section, the did not worked because autoconf does some nasty things with [ and ] + +2002-10-15 11:30 aleidinger + + * doc/man/lame.1: + + catch up with HTML docs + +2002-10-15 09:54 aleidinger + + * doc/html/Makefile.in: + + regen + +2002-10-15 09:54 aleidinger + + * doc/html/Makefile.am: + + add presets.html + +2002-10-15 09:53 aleidinger + + * doc/html/presets.html: + + typo fix + +2002-10-15 09:50 aleidinger + + * configure: + + regen + +2002-10-15 09:49 aleidinger + + * configure.in: + + Use sparc optimization on gcc 3.[123456]. + + Submitted by: "Spud McDuck" + +2002-10-15 09:33 aleidinger + + * frontend/: brhist.c, main.c, main.h, mp3rtp.c, mp3x.c, parse.c: + + PATH_MAX is in POSIX.1 (does not include the trailing NUL, so add +1), not MAXPATHLEN + +2002-10-14 20:06 bouvigne + + * doc/html/: contributors.html, index.html, presets.html: + + html docs + +2002-10-14 16:28 takehiro + + * testcase.mp3 (takehiro-stable-2002_10_15): + + update testcase. + +2002-10-14 16:25 takehiro + + * libmp3lame/: psymodel.c, util.h (takehiro-stable-2002_10_15): + + reenentrant fix for loudness approx. + +2002-10-14 16:06 takehiro + + * Makefile.B32, Makefile.DJGPP, libmp3lame/libmp3lame.dsp + (takehiro-stable-2002_10_15): + + build environment related file update. + I could not test them, but I hope it works. + +2002-10-14 15:53 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + obsoleted --cwlimit option. + +2002-10-14 15:53 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix + (takehiro-2002_05_07-experimental): + + update Makefiles sync with Makefile.am + +2002-10-13 20:35 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, encoder.c, fft.c, fft.h, + lame.c, lame_global_flags.h, libmp3lame.dsp, libmp3lame_vc6.dsp, + psymodel.c, psymodel.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, set_get.c, tables.c, tables.h, takehiro.c, + util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): + + bunch of cleanup for next generation LAME :) + - goodbye gpsycho. only nspsy is supported. + - functions related the initilization are moved to tables.c + - some functions in quantize_pvt.c are moved to quantize.c + - functions in fft.c moved to psymodel.c and fft.[ch] are removed + - fix ATH-adjust to reentrant. + +2002-10-13 17:30 takehiro + + * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c + (takehiro-2002_05_07-experimental): + + sync the head. record preset parameter in LAME tag. + +2002-10-13 15:52 takehiro + + * frontend/main.h (takehiro-2002_05_07-experimental): + + sync with the head branch. + +2002-10-13 15:48 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, set_get.c, + util.h (takehiro-2002_05_07-experimental): + + - tuned impulse like signal detection of threshold calculation. + + - block switching tuning, for impulse like signal by using maximum of filtered + signal, not by sum of its energy. + + - MP3X: print block switching factor(attack_intensity) instead of mx, + for nspsytune mode. + + - small optimization for ns_firfilter + + - prepare for faster nspsy. calculate the blocktype first, and after it, + only calculate the threshold for that blocktype. + + - clean up nspsy variables (remove unused variables). + + - calc_noise optimization for nspsy. + +2002-10-13 11:36 robert + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + removed scalar.obj from targets + +2002-10-13 08:10 takehiro + + * libmp3lame/: encoder.c, lame.c + (takehiro-2002_05_07-experimental): + + oops, I mis-check in th one older version ;( + +2002-10-13 07:58 takehiro + + * libmp3lame/: encoder.c, lame.c, quantize.c, quantize_pvt.c, + quantize_pvt.h, tables.h (takehiro-2002_05_07-experimental): + + trivial changes. + - cleanup initilization code. + - better conjunctions of functions. + +2002-10-09 17:27 takehiro + + * libmp3lame/encoder.c, libmp3lame/lame.c, frontend/parse.c, + include/lame.h, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + large cleanup arround padding + - padding mode is always set by suitable one. + - gfp->padding_type and the functions to set/get it are removed. + + unused function optimum_samplefreq() is removed. + +2002-10-09 17:24 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in, scalar.nas + (takehiro-2002_05_07-experimental): + + remove scalar.nas + +2002-10-09 17:22 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2002-10-09 17:22 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix extopt for gcc 3.1/3.2 + +2002-10-08 19:30 bouvigne + + * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c: + + preset info stored into Info tag + +2002-10-08 17:43 bouvigne + + * frontend/main.h: + + win32 build fix + +2002-10-08 13:59 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-10-08 13:59 takehiro + + * libmp3lame/: Makefile.am, tools.c, tools.h, util.c + (takehiro-2002_05_07-experimental): + + removed unused tools.[hc] + +2002-10-08 13:38 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen once more :( + +2002-10-08 13:35 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2002-10-08 13:34 takehiro + + * ltconfig, acinclude.m4, configure.in + (takehiro-2002_05_07-experimental): + + sync the head branch. + fix gcc options for gcc3.1 after and 3.0.x + +2002-10-08 13:30 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-10-08 13:19 takehiro + + * frontend/: main.c, main.h, mp3rtp.c, mp3x.c, parse.c + (takehiro-2002_05_07-experimental): + + sync the head branch. + - MAXPATHLEN related fix. + - sizeof(short) related fix. + +2002-10-08 13:18 takehiro + + * libmp3lame/lameerror.h, include/lame.h, libmp3lame/Makefile.am + (takehiro-2002_05_07-experimental): + + moved error code definitions into lame.h + +2002-10-08 12:58 takehiro + + * frontend/main.c: + + sync my branch: fix warning of ReportLameTagProgress() definition + +2002-10-08 12:51 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + remove unneeded include + +2002-10-08 12:50 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix NO_PAD + +2002-10-08 09:09 aleidinger + + * configure: + + regen + +2002-10-08 08:59 aleidinger + + * ChangeLog: + + update with uptodate data + +2002-10-08 08:57 aleidinger + + * ChangeLog.header: + + add info how to show the branches in the ChangeLog + +2002-10-08 08:53 aleidinger + + * libmp3lame/version.h: + + bump alpha version + +2002-10-08 08:51 aleidinger + + * configure.in: + + replace the -pipe hack for mips-sgi-irix with a test for GNU ld + (sorry, I forgot who submitted it) + +2002-10-08 08:50 aleidinger + + * acinclude.m4: + + actually commit the generated file with the alignment fix for 64 bit architectures + +2002-10-08 08:50 aleidinger + + * ltconfig: + + improved "deplibs_check_method" for freebsd-elf + +2002-10-08 08:44 aleidinger + + * frontend/: main.c, main.h, mp3rtp.c, mp3x.c, parse.c: + + - spell MAX_NAME_LEN the POSIX way (MAXPATHLEN) and make sure we have + a fallback if it doesn't get defined (please test this on Windows) + - fix for sizeof(short int) != sizeof(int) in mp3rtp.c + + Patches based upon bugreport from Greg Lehey and fixes + in the FreeBSD ports collection from Mikhail Teterin . + +2002-10-07 16:47 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c + (takehiro-2002_05_07-experimental): + + fix warnings + +2002-10-07 16:46 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-10-07 14:24 takehiro + + * libmp3lame/: lame.c, psymodel.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + more nspsytune optimization. + + - use FAST_LOG10 instead of log. this may change the result little bit, + but I think that is rare case and no problem about the quality. + + - presetTune.athadjust_msfix is moved to nsPsy.athadjust_msfix + + - nsPsy.safejoint is removed. + +2002-10-07 13:41 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + more cleanup of perceptual entropy calculation. + - it calculates only one of the long/short block pe, + after the block type is detemined. + +2002-10-07 13:38 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-10-07 12:49 takehiro + + * libmp3lame/: psymodel.c, quantize_pvt.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + trivial code optimizations, no result changes. + - gfp->ATHlower is now stored the number multiplied by -0.1. + + - nspsytune optimization + * precalculate the 1.0/numlines_l[] + * cleanup perceptual entropy storing method and loop hoisting. + * unrolling tonality calculation loop. + +2002-10-07 09:13 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + oops, fix build when BRHIST is enabled. + +2002-10-07 09:11 takehiro + + * frontend/brhist.c, libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + clean up bitrate histgram. + And do not compile the brhist-related code when "./configure --without-brhist" + +2002-10-07 09:09 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-10-07 08:57 takehiro + + * libmp3lame/: encoder.c, fft.c, presets.c, psymodel.c, set_get.c, + util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): + + small code cleanups. all of them does not change the result. + - better conjunctions. + * updateStats() is moved from util.c to encoder.c + * select_kth_int() is moved from util.c to vbrquantize.c + - fft window function table is moved from gfc to static variable in fft.c. + once apon a time, the window function is differed from nspsy/gpsy, so the + table should be stored separetedly for each encoding entity. but now, it + is unified and we can unify the table function. + - presetTune.attackthre and presetTune.attackthre_s are moved to nsPsy. + +2002-10-06 18:14 takehiro + + * libmp3lame/: psymodel.c, quantize.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + preset clean up. + - use the current block_type itself to determine the quantization result + comparing method. + - remove presetTune.quantcomp_current. + - changed presetTune.attackthresh and presetTune.attackthresh_s type (int -> FLOAT). + + I think the 1st one is BUG of preset, affected all preset modes. + It determines how to compare the quantized spectrums by the blocktype of 1st + granule of the next frames, last channel (R or S), for all the channel and + all the granule. + +2002-10-06 18:06 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + due to the nspsy long/short switching mode fix, attack threshold should be + tuned again.I used awe32, fatboy, DEATH2, and other "normal" samples to + determine the threshold. + + now awe32 is not killer sample of --preset standard, I think. + # but the bitrate is increased, of course. + + and it seems vangelis1.wav needs some more tuning, but I am so sleeeeeeepy. + +2002-10-06 16:46 takehiro + + * libmp3lame/: encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + - make adjust_ATH() static and cleanup + (include Gabriel's clean up in the head branch) + - padding code clean up + - block type code cleanup + - ATH related initialization code is moved to psymodel.c + +2002-10-06 16:43 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + sync with the head branch (Gabriel's code cleanup... remove "historical" code) + +2002-10-06 16:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + sync with head.(code cleanup by Gabriel) + +2002-09-30 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + moved substep shaping position. bit slower but better quality for higher bitrate (especially for the case 320kbps is not enough). + +2002-09-30 16:57 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + fix substep 2, 3, 6, and 7. (working area allocation) + +2002-09-30 16:49 bouvigne + + * libmp3lame/: encoder.c, quantize.c, util.c: + + some code cleanups + +2002-09-30 16:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix mdct filter coefs, for -k option(thanx reporting, Robert). + +2002-09-29 15:38 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + fix cygwin build + +2002-09-29 06:02 takehiro + + * libmp3lame/reservoir.c (takehiro-2002_05_07-experimental): + + sync with the head branch. + - bit reservoir handling of freeformat. + +2002-09-28 16:12 takehiro + + * libmp3lame/: util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + small optimizations for --vbr-new + - gfc->VBR->scratch is moved to the local variable. + - remove quality mapping(directly switch statement) + - code clean up. + +2002-09-28 13:27 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + - sync --vbr-new with the head branch. + - better substep shaping for --vbr-new. + - the meaning of best huffman coding with --vbr-new is bit different from + that of head tree. + +2002-09-28 10:36 takehiro + + * frontend/get_audio.c, frontend/parse.c, include/lame.h + (takehiro-2002_05_07-experimental): + + fix warnings. + +2002-09-28 10:36 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + make select_kth() static function. + +2002-09-28 10:26 takehiro + + * Makefile.DJGPP, Makefile.MSVC, Makefile.am, Makefile.in, + README.DJGPP, configure, configure.in, testcase.mp3, + ACM/ACMStream.cpp, ACM/Makefile.in, ACM/ADbg/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/BladeMP3EncDLL.c, + Dll/BladeMP3EncDLL.def, Dll/BladeMP3EncDLL.h, Dll/Example.cpp, + Dll/Example_vc6.dsp, Dll/Example_vc6.dsw, + Dll/LameDLLInterface.htm, Dll/LameDll_vc6.dsp, Dll/Makefile.in, + debian/Makefile.in, debian/changelog, debian/rules, + doc/Makefile.in, doc/html/Makefile.in, + doc/html/contributors.html, doc/html/history.html, + doc/html/index.html, doc/html/switchs.html, doc/man/Makefile.in, + doc/man/lame.1, dshow/Encoder.cpp, dshow/Makefile.in, + frontend/get_audio.c, frontend/parse.c, include/Makefile.in, + include/lame.h, libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/presets.c, + libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/i386/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + large sync with the head branch. almost all the code is now synced with the head. + +2002-09-28 09:30 takehiro + + * libmp3lame/VbrTag.c: + + remove some #include (these header files are included from VbrTag.h.) + +2002-09-28 09:23 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c + (takehiro-2002_05_07-experimental): + + fix all known problems on my tree (I hope). + - fix mishandling of long/short block type when storing pe[]. + - fix psymodel initialization (array index initialization), which fixes + floating exception in psymodel.c. + - one more preecho prevention code fix. + - sync with my psymodel patch in the head branch + + and small improvement. + - implement better block type restriction + (when MS, both channels should be same block type, but when LR, it is not needed). + - faster FIR filter for pe[] adjustment in encoder.c. + +2002-09-28 09:16 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + zeroed all ancillary area, when the debug mode. + +2002-09-23 07:00 bouvigne + + * include/lame.h: + + presets (sorry, this part was missing) + +2002-09-22 16:53 bouvigne + + * frontend/parse.c, libmp3lame/presets.c: + + presets + +2002-09-21 00:31 markt + + * libmp3lame/quantize_pvt.c: + + fixed bug which was causing the calc_noise assert failure. + +2002-09-19 20:39 robert + + * libmp3lame/: encoder.c, lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + merger from mainline: + undo of broken VBR min fill patch + padding code clean up + +2002-09-16 16:28 takehiro + + * configure, configure.in: + + we don't want to run the X :) + +2002-09-16 07:43 takehiro + + * frontend/: brhist.c, console.c + (takehiro-2002_05_07-experimental): + + sync with head branch. + - Mark's compilation fix. + - Alex's warning fix on 64bit environment. + +2002-09-16 07:25 takehiro + + * aclocal.m4 (takehiro-2002_05_07-experimental): + + sync with the head branch. + - prevent unaligned access on some 64 bit arches, by Alexander (and Ti.) + +2002-09-15 17:47 bouvigne + + * libmp3lame/: reservoir.c, set_get.c: + + Relax of freeformat reservoir after discussion with Robert + +2002-09-13 20:04 markt + + * frontend/brhist.c: + + This code: + + #if defined(HAVE_TERMCAP_H) + # include + #elif defined(HAVE_NCURSES_TERMCAP_H) + # include + #endif + + changed to: + + #if defined(HAVE_NCURSES_TERMCAP_H) + # include + #elif defined(HAVE_TERMCAP_H) + # include + #endif + + because on my system, both TERMCAP and NCURSES_TERMCAP were + defined by configure, but term.h and termcap.h have conflicts, + whileterm.h and ncurses/termcap.h works fine. + +2002-09-09 21:43 robert + + * frontend/parse.c, libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/psymodel.c: + + lame.c, encoder.c: fix padding oddities + psymodel.c: fix nspsy code for all/no short blocks + parse.c: -d now obsolete + +2002-09-08 06:36 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one more sync with head branch (ms energy ratio). + +2002-09-07 12:39 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + sync with the head branch psymodel fix. + +2002-09-06 11:11 aleidinger + + * configure: + + regen + +2002-09-06 10:53 aleidinger + + * configure.in: + + - no opts if non empty cflags and no expopt + - accumulate-outgoing-args is x86 only + Noticed by: Atro Tossavainen + - IRIX-gcc doesn't like '-pipe' + Noticed by: Atro Tossavainen + +2002-09-06 09:24 aleidinger + + * frontend/: brhist.c, console.c: + + try to include the right headers for the tgetstr prototype; + should fix problems on 64bit arches + Noticed by: Atro Tossavainen + Ti Kan + Tested by: Ti Kan + +2002-09-06 09:22 aleidinger + + * aclocal.m4: + + prevent unaligned access on some 64 bit arches + Noticed by: Ti Kan + Tested by: Ti Kan + +2002-09-05 16:53 bouvigne + + * libmp3lame/: reservoir.c, set_get.c: + + free format fix + +2002-09-03 11:34 aleidinger + + * frontend/parse.c: + + 1 argument too much for fprintf + +2002-09-03 11:18 aleidinger + + * doc/man/lame.1: + + add --noasm + +2002-09-02 12:02 takehiro + + * doc/html/history.html: + + added my psymodel change, and so on. + +2002-09-02 11:56 takehiro + + * testcase.mp3: + + regen with the latest LAME after psymodel was fixed. + This is produced by the LAME with ./configure --enable-nasm --enable-debug --enable-mp3x, compiled gcc 3.1.1, on linux2.4.19, glibc2.2.2, Duron 1GHz(3DNow! is enabled). + +2002-09-02 11:51 takehiro + + * libmp3lame/lame.c: + + fix for Tru64 UNIX build, reported by Ti Kan. + +2002-09-01 16:08 bouvigne + + * doc/html/contributors.html, doc/html/history.html, + doc/html/index.html, doc/html/switchs.html, frontend/parse.c: + + docs + +2002-09-01 16:03 takehiro + + * libmp3lame/psymodel.c: + + fix small psymodel bugs since long time ago(some of them are since 3.70 era...) + - highpass filter of MS energy calculation to neglect the DC. + - always do the Robert's short block pre-echo prevention and + fix its initialization (the fix is only for nspsy). + - fix energy and threshold of DC and the highest freq. element are halven. + - fix nspsytune FIR filter length + +2002-08-30 20:52 robert + + * Makefile.MSVC: + + MSVC: fix "-GX" typo + ICL: allow special compiles for PII and PIII + +2002-08-27 22:43 rbrito + + * debian/: changelog, rules: + + Update Debian packaging. More changes to come. + +2002-08-26 20:38 robert + + * libmp3lame/: lame.c, quantize.c, util.h: + + undo of VBR bitres min fill patch + +2002-08-25 20:17 bouvigne + + * frontend/parse.c: + + merge of alt presets + +2002-08-25 15:09 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do substep noise shaping in ABR mode, including bitrate compensation. + +2002-08-25 15:08 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + trivial coding optimization of fast_log2 + +2002-08-25 15:08 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + revert some FAST_LOG usage. It sometime happens SIGFPE(overflow). + +2002-08-25 10:54 takehiro + + * libmp3lame/: quantize.c, reservoir.c + (takehiro-2002_05_07-experimental): + + Tuning the bit reservoir filling rate when substep noise shaping method 1, + and do not substep noise shaping if the bit reservoir is almost full. + +2002-08-24 19:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + minor fix for global_gain limitation. + +2002-08-24 17:28 takehiro + + * libmp3lame/: VbrTag.c, lame.c (takehiro-2002_05_07-experimental): + + sync main tree. + - portability fix for sunos 4.x by Alexander Leidinger. + +2002-08-24 17:25 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + quick fix of warning. + +2002-08-24 17:23 takehiro + + * libmp3lame/: quantize.c, set_get.c + (takehiro-2002_05_07-experimental): + + do not do the substep noise shaping when the block type is SHORT, + because it seems short block threshold calculation is very buggy + (both of ns/gpsycho). + + new option: --substep 4,5,6,7 + force substep shaping even on the SHORT block. + +2002-08-24 17:12 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + use FAST_LOG() more. + minimize the ns_hpfsmpl[] array. + better ns_hpfsmpl[] calculation. + +2002-08-24 17:10 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + use of FAST_LOG() more for faster encoding + +2002-08-24 17:09 takehiro + + * libmp3lame/presets.c (takehiro-2002_05_07-experimental): + + I forgot to change the default quality setting of abr mode, + when I remap the quality <-> actual setting. + +2002-08-24 16:08 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + revert some GTK change to fix the mp3x spectrum display of short block. + +2002-08-20 16:59 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix mp3x spectrum display + +2002-08-20 16:51 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + fix mp3x pe[] display. + +2002-08-20 16:28 takehiro + + * libmp3lame/encoder.c: + + fix mp3x spectrum display + +2002-08-20 16:09 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix SIGFPE (divided by 0) of filter init. + +2002-08-20 13:03 takehiro + + * libmp3lame/: lame.c, newmdct.c, util.h + (takehiro-2002_05_07-experimental): + + cleanup polyphase filtering. + - highpass/lowpass coefs. are integrated into one array. + - reordered gfc members to get better cache performance. + - remove gfc->is_mpeg1 + +2002-08-20 12:59 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + remove gfc->is_mpeg1 + +2002-08-20 12:58 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + cleanup arround cw_lower_index + +2002-08-20 12:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove some debug code. + remove gfc->is_mpeg1 + +2002-08-20 12:45 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + moved scfsi_band[] into tables.c + +2002-08-19 15:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + better preflag use by using "all zero" band. + this breaks testcase little bit(make test). + +2002-08-19 04:57 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + psymodel.c cleanup (2) + - remove some constants (bu_?, npart_?_orig, SNR_s, w1_?, w2_?) from gfc. + - do always short block preecho prevention. this makes some breaks for + testcase(make test). + - do always normalize the s3_ss by SNR_s[] for faster calculation for gpsycho. + - optimize tonality computation for gpsycho. + - FFT/energy computation code of [g|ns]psy are integrated. + - GTK code cleanup + - make a new constants bm_?, band middle position table in gfc. + - cleranup table initialization code. + +2002-08-19 04:47 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial cleanup arround joint stereo/GTK code + +2002-08-17 16:41 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + more psymodel cleanup. + - GTK compilation fix + - fix mistake of wsamp_l and wsamp_L + - little block_type_set() cleanup + - gfc->energy[] and energy_s[] are removed. + +2002-08-17 16:37 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial + +2002-08-17 07:09 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + divide psymodel.c into manageable pieces (1) + and some optimization/simplification. + +2002-08-14 04:02 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + small fixes. + - variable type change of PE calculation. + - make it allow the mixed block limitation of MP3 + - cleanup the block type code. + +2002-08-14 03:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + ci to avoid losing works. + - short block detection cleanup and bug fix, for nspsytune (1st attempt) + - preliminal mixed block detection code. + +2002-08-14 03:57 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + optimize calc_xmin() and changed ATH normalization for it. + +2002-08-08 09:03 aleidinger + + * Makefile.in: + + regen + +2002-08-08 09:00 aleidinger + + * Makefile.am: + + Add lame.spec to the distribution tarball, as suggested in bug #580586 + +2002-08-08 08:48 aleidinger + + * README.DJGPP, Makefile.DJGPP: + + Fix from Peder Hedlund, see bug #590981. + +2002-08-05 18:04 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed crashing problem when the INFO TAG was written while it should not + +2002-08-02 20:53 afaber + + * Dll/BladeMP3EncDLL.c: + + Some code clarifications (remarks from Martin Ruckert) + +2002-08-02 20:52 afaber + + * Dll/LameDLLInterface.htm: + + Small textual changes (remarks from Martin Ruckert) + +2002-07-30 20:24 aleidinger + + * frontend/get_audio.c, libmp3lame/VbrTag.c, libmp3lame/lame.c: + + Portability fixes for SunOS 4.x. + +2002-07-30 08:28 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + merge short/long block code (preparing mixed block support) + +2002-07-28 09:56 takehiro + + * Makefile.am, Makefile.in, aclocal.m4, config.h.in, configure, + configure.in, libmp3lame/VbrTag.h + (takehiro-2002_05_07-experimental): + + more sync. arround configure stuff. + +2002-07-28 09:52 takehiro + + * mac/.cvsignore (takehiro-2002_05_07-experimental): + + ignore Makefile et al. + +2002-07-28 09:24 takehiro + + * frontend/get_audio.c, include/lame.h, + libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + syncing. + - fix mpeg decoding memory leak. + - lame.h comment fix. + +2002-07-28 09:18 takehiro + + * include/lame.h: + + fix unclosed comment + fix typo + +2002-07-28 09:08 takehiro + + * libmp3lame/: presets.c, set_get.c + (takehiro-2002_05_07-experimental): + + more sync with main tree about preset API. + +2002-07-28 09:07 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + fix warning + +2002-07-28 09:06 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + simplify the code. + disabled substep method 2 and 3 for vbr-new (forced to change method 1) + +2002-07-28 06:59 rbrito + + * debian/changelog: + + Updating debian/changelog's reported version. + +2002-07-27 10:35 afaber + + * Dll/: Example.cpp, Example_vc6.dsp, Example_vc6.dsw: + + Added example VC6 project files, updated Example.cpp file + +2002-07-27 07:41 takehiro + + * API, DEFINES, INSTALL, Makefile.am, Makefile.unix, lame.spec.in, + ltmain.sh (takehiro-2002_05_07-experimental): + + sync with main tree. no effects the quality. + +2002-07-27 07:39 takehiro + + * frontend/: Makefile.in, timestatus.c + (takehiro-2002_05_07-experimental): + + sync with main tree. time status rollback and newly regened Makefile.in + +2002-07-27 07:03 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + sync with main tree. changed comment style, // to /* */ + +2002-07-27 06:59 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix cygwin/vc compilation problem. + some speed improvement for --substep. + +2002-07-27 06:54 takehiro + + * libmp3lame/presets.c (takehiro-2002_05_07-experimental): + + sync with main tree. + +2002-07-26 22:27 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: + + changes to support encoding of multiple streams + +2002-07-26 18:56 markt + + * frontend/get_audio.c, include/lame.h, + libmp3lame/mpglib_interface.c: + + memory leak in multiple decodes fixed. + +2002-07-26 08:18 takehiro + + * mac/: LAME Carbon Debug.pch, LAME Carbon Final.pch, LAME Classic + Debug.pch, LAME Classic Final.pch, LAME_Carbon_Debug.pch, + LAME_Carbon_Final.pch, LAME_Classic_Debug.pch, + LAME_Classic_Final.pch, Makefile.am + (takehiro-2002_05_07-experimental): + + sync with main tree. (changed file name) + +2002-07-21 22:11 takehiro + + * libmp3lame/: Makefile.am, quantize.c + (takehiro-2002_05_07-experimental): + + fix and cleanup of "pseudo substep" method 1 and 3. + revert Robert's change of VBR bitresevoir handling code. + +2002-07-21 15:15 aleidinger + + * include/lame.h: + + ANSIfy comments. Requested by Ti Kan for xmcd + +2002-07-21 12:17 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, set_get.c, takehiro.c + (takehiro-2002_05_07-experimental): + + implement pseudo substep noise shaping method 1 and 3. + - it reduces about 3% of bitrate without losing any quality (theoretically), + for vbr mode. + - fix "off by one" bug of IPOW[] + - fix comment and substep method range check in set_get.c + + WARNING:there's some bug in the combination of --vbr-new and --substep. + +2002-07-21 12:11 takehiro + + * libmp3lame/: lame.c, util.c (takehiro-2002_05_07-experimental): + + sync with main tree: scaling bug fix. + +2002-07-21 12:10 takehiro + + * mac/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + sync with main tree: added Makefile.* + +2002-07-21 12:09 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + sync with main tree: use FASTLOG as defaulted. + +2002-07-19 17:20 afaber + + * Dll/LameDll_vc6.dsp: + + added ,HAVE_NASM,MMX_choose_table defines to project file, + since beGetBersion did not report that the DLL was compiled with + MMX enabled + +2002-07-15 21:22 markt + + * libmp3lame/: util.c, util.h: + + enabled domd's fast_log code + +2002-07-15 00:52 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one more fix for pe[] calculation of nspsytune. + +2002-07-14 10:41 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix mp3x "bit assumption(of frame)" display imcompatibility of main tree. + +2002-07-14 10:36 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix mp3x "bit assumption" display imcompatibility of main tree. + +2002-07-14 10:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix enbug of pe[] calculation for nspsytune. + prepare for nspsytune cleanup. + +2002-07-13 08:10 aleidinger + + * configure, libmp3lame/Makefile.in: + + regen + +2002-07-13 08:09 aleidinger + + * configure.in: + + Some fixes in the compiler options, removed superfluous BeOS section. + +2002-07-13 08:08 aleidinger + + * libmp3lame/Makefile.am: + + Fixes for BeOS (and perhaps other arches) to allow the build of a + shared lib. + + Submitted by: Andrew Bachmann + +2002-07-05 15:17 afaber + + * Dll/LameDLLInterface.htm: + + fixe a couple of typos' + +2002-07-03 22:28 afaber + + * Dll/BladeMP3EncDLL.c: + + fixed minor problems with the ALT-PRESET CBR/ABR modes + +2002-07-03 21:14 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + avoid crash in beWriteVbrTag when gfp is not allocated, fixed return value of beWriteVbrTag in *.h file + +2002-06-29 12:29 aleidinger + + * libmp3lame/: lame.c, util.c: + + Patch from Simon Blandford : + ---snip--- + The problem: + When in MONO mode, LAME merges the two channels before the left/right + scaling. The left scale acts on the remaining signal and the right scale + is ignored. + + The solution: + The scaling operation is simply moved before the channel merge + operation. Also, all these operations are moved before the re-sample + operation otherwise the signal would have be re-sampled on two channels + even in MONO mode which would be a waste of CPU time. + ---snip--- + +2002-06-23 16:07 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix mp3x display of threshold level (blue/green bar in FFT window). + use FAST_LOG10 in klemm's penalties() function. + trivial fix of max_noise initialization (do not effect anything but for the consistency of comment). + +2002-06-23 16:04 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-06-23 14:40 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix max_noise initilization + and trivial coding style change + +2002-06-23 12:56 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix mp3x display of max_noise, tot_noise, over_noise + +2002-06-23 12:56 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + trivial + +2002-06-23 08:30 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + more faster pe[] calculation on nspsy. + + sync with main tree: + - domd's faster LOG and psymodel_ns optimization + +2002-06-23 06:19 takehiro + + * include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + sync with main tree. + - fixed return type of lame_get_interChRation() + +2002-06-23 05:53 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, libmp3lame_vc6.dsp, pcm.c, + pcm.h (takehiro-2002_05_07-experimental): + + sync with main tree. + - remove pcm.[ch] + +2002-06-17 17:19 domd + + * DEFINES: + + added USE_FAST_LOG define + +2002-06-16 20:16 domd + + * libmp3lame/psymodel.c: + + optimizations on mask_add and L3psycho_anal_ns + +2002-06-16 20:14 domd + + * libmp3lame/quantize_pvt.c: + + optimization : use of FAST_LOG10 macro in calc_noise + +2002-06-16 20:13 domd + + * libmp3lame/: lame.c, util.c, util.h: + + added the FAST_LOG10 and FAST_LOG macros + +2002-06-15 17:56 markt + + * Dll/BladeMP3EncDLL.c: + + added missing ")" + +2002-06-12 18:41 markt + + * dshow/Encoder.cpp: + + directshow, like ACM, cannot support INFO tag. + INFO tag disabled in dshow code. + +2002-06-12 18:36 markt + + * ACM/ACMStream.cpp: + + added note about INFO tag not possible when using ACM codec, + since ACM has no mechanism to rewind output stream when + encoding is finished. + +2002-06-12 18:27 markt + + * API, Dll/BladeMP3EncDLL.c, Dll/Example.cpp, + Dll/LameDLLInterface.htm: + + updated documentation (API and DLL) + to clarify that INFO tag must be written + unless explicitly disabled. + +2002-06-11 09:21 aleidinger + + * configure: + + gtk-config fix (oops... sorry) + +2002-06-09 16:01 takehiro + + * include/lame.h, libmp3lame/set_get.c: + + fix return type of lame_get_interChRatio() + +2002-06-04 19:16 bouvigne + + * libmp3lame/psymodel.c: + + merged little part of Dom's speed optimization + +2002-06-04 15:04 aleidinger + + * configure: + + regen + +2002-06-04 15:03 aleidinger + + * configure.in: + + -maccumulate-outgoing-args is x86 only + + Reported by: "Spud McDuck" + +2002-06-02 19:09 aleidinger + + * configure: + + regen + +2002-06-02 19:08 aleidinger + + * config.h.in, configure.in: + + damn autoconf, hopefully this version works as intended + +2002-06-02 17:02 aleidinger + + * configure: + + regen + +2002-06-02 17:00 aleidinger + + * configure.in: + + use "else if ... fi" instead of "elif ..." + +2002-06-02 17:00 aleidinger + + * libmp3lame/Makefile.in: + + regen (removal of pcm.[ch]) + +2002-06-02 14:50 robert + + * libmp3lame/: Makefile.in, libmp3lame_vc6.dsp: + + moved unused code pcm.[ch] into the Attic + interested parties will find it there + +2002-06-02 14:45 robert + + * libmp3lame/: Makefile.am, pcm.c, pcm.h: + + moved unused code pcm.[ch] into the Attic + interested parties will find it there + +2002-06-02 14:20 aleidinger + + * configure: + + regen + perl -pi -e 's:--no-verify::' configure + + Does anyone know how to do this with autoconf directly? + +2002-06-02 14:17 aleidinger + + * aclocal.m4: + + undo last commit, wrong file and wrong commit message + +2002-06-02 14:16 aleidinger + + * acconfig.h: + + not needed anymore + +2002-06-02 14:15 aleidinger + + * Makefile.in: + + regen after removal of aclocal.m4 + +2002-06-02 14:13 aleidinger + + * config.h.in: + + regen + +2002-06-02 14:13 aleidinger + + * configure.in: + + - redo {,u}int{8,16,32,64}_t stuff with new autoconf 2.53 macros + - fix code which sets experimental options + Thanks to: Akos Maroy + - fix GCC_version for 3.1 + Thanks to: Akos Maroy + - further autoconf 2.53 updates + - minor fixes + +2002-06-02 14:10 aleidinger + + * aclocal.m4: + + is not needed anymore + +2002-06-02 12:21 aleidinger + + * aclocal.m4: + + update to autoconf 2.53 + +2002-06-02 12:17 aleidinger + + * libmp3lame/: VbrTag.c, VbrTag.h, pcm.c, pcm.h, util.h: + + add some includes + +2002-05-28 08:28 aleidinger + + * configure: + + regen + +2002-05-28 08:24 aleidinger + + * ACM/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in, ACM/ADbg/Makefile.in, + ACM/tinyxml/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, libmp3lame/i386/Makefile.in: + + regen + +2002-05-28 08:07 aleidinger + + * configure.in: + + - update to autoconf 2.53 + - add ultrasparc detection and compiler switches in case of gcc 3.1 + +2002-05-28 08:04 aleidinger + + * Makefile.in: + + regen + +2002-05-28 08:04 aleidinger + + * Makefile.am: + + add mac subdir + +2002-05-28 08:03 aleidinger + + * mac/Makefile.in: + + generated Makefile.in + +2002-05-28 07:52 aleidinger + + * mac/Makefile.am: + + add automake clue + +2002-05-28 07:48 aleidinger + + * mac/: LAME Carbon Debug.pch, LAME Carbon Final.pch, LAME Classic + Debug.pch, LAME Classic Final.pch, LAME_Carbon_Debug.pch, + LAME_Carbon_Final.pch, LAME_Classic_Debug.pch, + LAME_Classic_Final.pch: + + rename files because of automake (space to underscore conversation) + +2002-05-26 15:52 takehiro + + * libmp3lame/: lame.c, quantize.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + sync with main tree, except arround vbrquantize.c. + - it calls best_huffman_divide() twice. + - *_block_sf() are out of sync. + +2002-05-25 23:30 markt + + * libmp3lame/lame.c: + + fixed a mono encoding bug found by Justin Schoeman + + For single channel input, the 2nd channel was still required + to exit and have as much data as the 1st channel becaus of + memcpy's (even though this data was never used) + +2002-05-24 17:28 markt + + * Dll/BladeMP3EncDLL.c, libmp3lame/lame.c: + + removed all references to "sample_t" from the DLL. + + someone put in a call to lame_encode_buffer_sample_t + (not a public interface to libmp3lame) + when they should have used lame_encode_buffer_float(), + since they were assuming 'sample_t' was a float. + +2002-05-20 22:21 robert + + * libmp3lame/: lame.c, quantize.c, util.h: + + VBR bitreservoir minimum filling depending on back pointer from largest frame allowed + +2002-05-20 18:22 robert + + * Makefile.unix, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/vbrquantize.c: + + Makefile.unix: + -malign-double enabled, helps memcpy + + lame.c: + new experimental -X{5,9} settings for --vbr-new + + quantize.c: + build up bit reservoir for VBR, allows to limit max frame size with -Bxxx + without a too large quality impact + + vbrquantize.c: + fixing sfb21 issues: -Y did not show the wanted effect + xxx_block_xr34: replaced copy loop by memcpy, not faster but makes things + more obvious + some very minor speed ups + +2002-05-19 22:11 markt + + * frontend/timestatus.c: + + initialize ellapsed time counter to 0. + +2002-05-19 22:03 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + avoid calling best_huffman_divide twice for vbr-new + +2002-05-19 16:43 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/presets.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + experimental mixed block support. + "--mixedblock" option to use it. + + currently, it uses mixed blocks on all short/start/end blocks. + + this is very bad idea. we need a proper psymodel. + till we make it, this option is used only for the testing purpose. + +2002-05-19 16:38 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization arround nspsytune + +2002-05-19 15:13 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + merged little part of Dom's speed optimization. + +2002-05-18 17:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + preparing for mixed block of bitpressure_strategy() + +2002-05-18 17:33 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove magic numbers and prepare for mixed block. + +2002-05-18 16:54 takehiro + + * libmp3lame/: machine.h, newmdct.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + fully cosmetic... changed INLINE -> inline + +2002-05-18 16:53 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + prepare for the substep noise shaping method 1 and 3. + +2002-05-18 16:15 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + trivial optimizations + +2002-05-18 16:08 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + clean up table initialization and bit size optimization. + - remove magic number "128". (and changed 116) + - we don't need to prepare the both of adj43[] and adj43asm[]. + prepare only one of them, if we use asm code or not. + +2002-05-18 16:00 takehiro + + * libmp3lame/: bitstream.c, takehiro.c + (takehiro-2002_05_07-experimental): + + use scfsi more. + if all quantized value is 0, we can use scalefactor with not only 0 but + also any number and in such a situation, we can use the scfsi. + +2002-05-18 15:09 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + don't compile some code if analyzer is not needed. + +2002-05-18 15:07 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c (takehiro-2002_05_07-experimental): + + optimization arround vbr_new with the new data structure. + - merged short_block_xr34() and long_block_xr34() into block_xr34() and clean up + - changed IIPOW20[] and remove some condition code. + +2002-05-18 13:59 takehiro + + * libmp3lame/: quantize.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + arroud substep noise shaping. + - prepare for "method 3". + - start with "pseudo half shaped" state, if we use the method 2 or 3. + +2002-05-18 13:50 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, set_get.c + (takehiro-2002_05_07-experimental): + + simple calc_noise() optimization (remove one log()) + fix quatn_compare() when alt-preset. + +2002-05-18 12:11 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + oops, fix calc_noise() bugfix :) + +2002-05-18 12:10 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + trivial optimization by loop unrolling + +2002-05-18 11:38 takehiro + + * libmp3lame/: machine.h, quantize.c, quantize_pvt.c, + quantize_pvt.h (takehiro-2002_05_07-experimental): + + quick fix for "calc_noise_bug" reported by Mark. + +2002-05-18 11:09 takehiro + + * libmp3lame/: lame.c, presets.c, set_get.c + (takehiro-2002_05_07-experimental): + + changed alt-preset-* and comments to follow the change of quality setting. + +2002-05-18 11:07 takehiro + + * libmp3lame/: machine.h, quantize.c + (takehiro-2002_05_07-experimental): + + fix floating exception when global_gain > 255u. + it frequently happens when best_huffman == 2 + +2002-05-18 10:25 takehiro + + * libmp3lame/: lame-analysis.h, lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + sync with main tree. + - uped READ_AHEAD from 10 to 40 for the frame analyzer (By Mark) + - removed warning when using -Y (By Robert) + - removed unused bitpressure strategie 2 (VBR) (By Robert) + +2002-05-14 21:32 robert + + * libmp3lame/: lame.c, quantize.c, util.h, vbrquantize.c, + vbrquantize.h: + + removed warning when using -Y + removed unused bitpressure strategie 2 (VBR) + +2002-05-14 21:02 robert + + * libmp3lame/.indent.pro: + + changing max line length from 80 to 100 chars + +2002-05-14 16:23 markt + + * frontend/timestatus.c: + + added comment about clock rollover check + +2002-05-14 16:19 markt + + * frontend/: lametime.c, timestatus.c: + + put in rollover check in frontend cpu/wall clock timing routines. + + didn't we used to have this? + + user reported (on a 35min encode) that the output of clock() + (of type clock_t) was rolling over and becoming negative. + On his system, clock_t is a signed 32 bit int. + +2002-05-12 18:47 markt + + * INSTALL: + + removed info about vorbis encoding from INSTALL + +2002-05-12 18:01 markt + + * ltmain.sh: + + applied patch to ltmain.sh + from sourceforge.net bug report. it passes LDFLAGS on to the + linker? + + *** ltmain.sh.org Sun Oct 22 14:06:32 2000 + --- ltmain.sh Sun Apr 28 11:56:54 2002 + *************** + *** 818,824 **** + convenience= + old_convenience= + deplibs= + ! linkopts= + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + --- 818,824 ---- + convenience= + old_convenience= + deplibs= + ! linkopts="$LDFLAGS" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + +2002-05-12 17:20 markt + + * include/lame.h, libmp3lame/lame-analysis.h: + + added documentation to lame.h for lame_decode* functions + + uped READ_AHEAD from 10 to 40 for the frame analyzer + +2002-05-12 13:52 takehiro + + * libmp3lame/: bitstream.c, l3side.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c, util.h, vbrquantize.c, vbrquantize.h + (takehiro-2002_05_07-experimental): + + big data structure update (2) + - this is very alpha. check is not done yet, but I should have sleep tonight :p + - "make test" runs fine. but mp3x, vbr-new needs more test. abr mode aborts floating exception. + - almost all the structured data, like l3_xmin, scalefac, distort, ... are now simple FLOAT8/integer array. + - calc_noise() and so on is very simple code and very fast, because we can handle the long/short block by same code, + - new member "window" and "width" are added to gr_info. + +2002-05-12 09:30 takehiro + + * libmp3lame/quantize.c: + + fix inc_scalefac_scale() ignoring preflag. + +2002-05-12 08:29 takehiro + + * Makefile.in (takehiro-2002_05_07-experimental): + + regen(forgot to check in) + +2002-05-12 08:02 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2002-05-12 08:02 takehiro + + * libmp3lame/reservoir.c (takehiro-2002_05_07-experimental): + + because #define NORES is not working as it was, I remove it. + +2002-05-12 07:48 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + fix mp3x scalefactor display when scfsi used and cleanup on set_pinfo(). + fix warning arround calc_klemm_noise(). + +2002-05-12 07:30 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + noise calculation cleanup. + - delayed calculation of klemm_noise and it is shared to store in max_noise. + - max_noise, tot_noise and over_noise are now "B" order, not "dB". + +2002-05-11 18:49 markt + + * lame.spec.in: + + new lame.spec.in file from Yosi. + +2002-05-11 18:29 markt + + * libmp3lame/: quantize.c, quantize_pvt.c: + + applied Takehiro's bug fix for single channel bit reservoir usage + for pre-echo control. + +2002-05-11 18:28 takehiro + + * Makefile.am, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c, + libmp3lame/takehiro.c, libmp3lame/vbrquantize.c + (takehiro-2002_05_07-experimental): + + not testing much, but I think now best_huffman_divide==2 works. + - default quality setting is changed to 3, and "make test" is done with that. + - quality setting 0,1, and 2 with CBR/ABR/VBR-old mode uses best_huffman_divide==2. + - best_scalefac_store() is not called in inner loop. + - "lame -q 2 foo.wav foo.mp3" runs about half or more slower speed than that of "lame -q 3 ..." + +2002-05-11 17:26 takehiro + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + combination of small patches mainly to get more tight coupling/inlining + optimization. + - in quantize_pvt.c, some functions are now static. + - some "char" type table is now "int" + - quantize_xrpow*() are moved from quantize_pvt.c to takehiro.c, and they are static function. + - slen1_tab[] and slen2_tab[] are moved to takehiro.c + +2002-05-11 16:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + oops, checked in the older one. fix CBR bit allocation. + +2002-05-11 16:28 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, + reservoir.c, reservoir.h (takehiro-2002_05_07-experimental): + + fix --vbr-old for newer resovoir handling code. + now it produces bit-by-bit identical from the main branch with my "limited test". + +2002-05-11 14:39 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + sync with main tree + - Robert's modification, 'more time consuming strategy to handle the case when more bits used than available' + +2002-05-11 14:12 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + fix vbr-new arround bin_search_stepsize(). + it ignores part2_length to calculate cod_info->part2_3_length. + + consider part2_length inside of bin_search_stepsize(), not caller side. + +2002-05-11 13:49 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + fix for vbr-new to work with new bin_search_stepsize() + +2002-05-09 23:25 robert + + * libmp3lame/vbrquantize.c: + + vbr-new: + more time consuming strategy to handle the case when more bits used than available + +2002-05-08 22:28 takehiro + + * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): + + oops I missed the merging. + +2002-05-08 22:27 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, util.h + (takehiro-2002_05_07-experimental): + + bin_stepsearch() hack. + separete stepsize for each channel that we will use next frame + little bit faster. + +2002-05-08 21:30 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-05-08 21:07 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + sync with robert's latest patch on mainline. + - allow best huffman divide to be used in vbr-new + - moved ms_convert() + +2002-05-08 21:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + monoraul bitallocation patch. + + thanx Robert to revert. and sorry for the trouble. + I made my own branch and check the code on this. + if I get the "bit-by-bit identical" output, I will merge the branch. + I will follow the main line changes as possible. + + till then, bye for now. see you later, at the merging time. + +2002-05-07 23:08 robert + + * libmp3lame/: quantize_pvt.h, vbrquantize.c: + + allow best huffman divide to be used in vbr-new + +2002-05-07 21:24 robert + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + moved the tiny function ms_convert from quantize_pvt.c to quantize.c--the + only client for it--giving a little speed increase + +2002-05-07 21:11 robert + + * libmp3lame/: quantize.c, quantize_pvt.h, vbrquantize.c: + + better decoupling of vbrquantize.c and quantice.c + +2002-05-07 20:21 robert + + * libmp3lame/: bitstream.h, quantize_pvt.h, reservoir.h, util.h: + + sorry Takehiro, we are back to the last known working version from Sunday + 13:35 UTC now + +2002-05-07 20:15 robert + + * libmp3lame/: bitstream.c, encoder.c, quantize.c, quantize_pvt.c, + reservoir.c, takehiro.c, util.c, vbrquantize.c: + + sorry Takehiro, we are back to the last known working version from Sunday + 13:35 UTC now + +2002-05-06 16:03 takehiro + + * libmp3lame/quantize.c: + + fix for new reservoir handling code with my ABR patch. + we don't need the totbits, because the reservoir size is reduced in + ResvAdjust() in gr/ch loop and reservoir handler uses it. + +2002-05-06 15:49 takehiro + + * ACM/: .cvsignore, ADbg/.cvsignore, tinyxml/.cvsignore: + + added cvsignore to ignore Makefile, etc. + +2002-05-06 15:30 takehiro + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c: + + cleanup. remove a compiling problem and some warnings. + +2002-05-05 18:34 takehiro + + * libmp3lame/quantize.c: + + one more outer_loop() fix for VBR. + +2002-05-05 18:18 takehiro + + * libmp3lame/quantize.c: + + outer_loop() fix for vbr_rh and vbr_mtrh + +2002-05-05 17:37 takehiro + + * libmp3lame/quantize_pvt.c: + + update comment + +2002-05-05 17:17 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, encoder.c, quantize.c, + reservoir.c, util.c, util.h: + + cleanup arround getframebits(). + +2002-05-05 16:50 takehiro + + * libmp3lame/: quantize.c, reservoir.c: + + fix NORES_TEST. and works not only for CBR (don't tell me that's useful :p) + +2002-05-05 16:40 takehiro + + * libmp3lame/: quantize.c, reservoir.c, reservoir.h: + + oops, I mis-checked in the old files. this is real one. + +2002-05-05 16:29 takehiro + + * libmp3lame/: quantize_pvt.c, reservoir.c, reservoir.h: + + clean up arround reservoir. + +2002-05-05 15:47 takehiro + + * libmp3lame/: quantize.c, reservoir.c, reservoir.h: + + trivial cleanup of arround resvoir. + +2002-05-05 15:34 takehiro + + * libmp3lame/quantize.c: + + cleanup arround inc_scalefac_scale() with new cod_info strcture. + +2002-05-05 14:35 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + cleanup arround calc_noise() with new cod_info strcture. + +2002-05-05 13:59 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + more cleanup of new cod_info structure, arround count_bits() + +2002-05-05 13:48 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h: + + inner_loop() is now static function. + +2002-05-05 13:43 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c: + + changed outer_loop() algorithm. it needs lesser copy and runs faster. + - try with new scalefactor combination on work area, and if we get the better result, copy it to the returning area. + - make bin_search_StepSize() return the global_gain which assures targ_bits > found_bits. + +2002-05-05 13:33 robert + + * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h: + + some clean-up in parameter passings due to recent change in cod_info structure + +2002-05-05 13:01 robert + + * libmp3lame/: encoder.c, quantize.c, quantize.h, vbrquantize.c, + vbrquantize.h: + + removed again some unused code I thought that was removed some long time ago + +2002-05-05 11:58 takehiro + + * libmp3lame/: bitstream.c, encoder.c, l3side.h, quantize.c: + + bit cleanup. removed window_switching_flag in l3side. + +2002-05-05 11:53 takehiro + + * libmp3lame/: quantize.c, quantize.h, vbrquantize.c: + + To fix it does not call the "freorder" and to support for mixed block, + the vbrquantize.c uses init_outer_loop()/init_xrpow() in quantize.c to + initializatoin. this may fix the MPEG2 problem (but not tested). + +2002-05-04 22:49 markt + + * configure, testcase.mp3: + + updated testcase.mp3 + +2002-05-04 15:48 takehiro + + * libmp3lame/: encoder.c, quantize.c, util.c, util.h: + + clean up and speed up (optimize for new data structure). + - devided init_outer_loop() into init_outer_loop() and init_xrpow(). This makes it easy to use GOGO-no-coda's xrpow calculation routine. + # thanx Robert, your fix makes me aware my mistake in VBR mode. + + - restoring duplicated data of VBR loop are removed. + + more mixed_block prepare. freorder() in util.c and its caller in encoder.c are moved into init_outer_loop() in quantize_pvt.c + +2002-05-04 15:36 takehiro + + * libmp3lame/quantize.c: + + trivial optimization + +2002-05-04 14:54 takehiro + + * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.c, + vbrquantize.c: + + the signess process of l3_enc[] are moved from quantize*.c to bistream.c. bit faster, much simpler. + +2002-05-04 13:58 takehiro + + * libmp3lame/quantize_pvt.c: + + removed unused variables. + +2002-05-04 13:55 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c: + + removed log calculation of klemm_noise in main loop + +2002-05-04 09:30 afaber + + * ChangeLog, Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h: + + Added quality setting to lame_enc.dll interface + +2002-04-30 22:20 robert + + * libmp3lame/version.h: + + 3.93 alpha 1 -> 3.93 alpha 2 + +2002-04-30 22:00 robert + + * libmp3lame/: quantize.c, quantize_pvt.c: + + fixing latest floating point exceptions I got for some days + within the calc noise routine + +2002-04-28 08:15 takehiro + + * libmp3lame/quantize_pvt.c: + + Mark, because max_noise is initialized with 1E-20 and refreshes Max(max_noise, sfb_noise), so it will never lesser than 1e-20. + +2002-04-27 21:15 takehiro + + * libmp3lame/takehiro.c: + + bit faster best_huffman_divide(). + - use the pointer to the structure, not structure itself. + +2002-04-27 20:58 takehiro + + * configure, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/l3side.h, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h, libmp3lame/takehiro.c, + libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h: + + large data structure update (1) + - mdct values (xr), encoded values (l3_enc), and scalefactors (scalefac) are in the gr_info structure. + - it runs faster. + - reduce stack size but require large III_side_info_t and lame_global_flags. + +2002-04-27 20:41 takehiro + + * libmp3lame/machine.h: + + fix --enable-all-float. when it enabled, FLOAT8_MAX should be FLT_MAX about 1e37, not 1e99. + +2002-04-27 18:24 takehiro + + * libmp3lame/bitstream.c: + + trivial + +2002-04-24 11:10 aleidinger + + * Makefile.unix: + + add a mingw comment from Hubert Hanghofer + +2002-04-22 17:51 markt + + * libmp3lame/quantize_pvt.c: + + Takehiro, when you changed this code: + + res->max_noise = 10.*log10(Max(1e-20,max_noise )); + res->klemm_noise = 10.*log10(Max(1e-20,klemm_noise)); + + to: + + res->max_noise = 10.*log10(max_noise); + res->klemm_noise = 10.*log10(klemm_noise); + + I started getting FPE (I always compile with --enable-debug + which aborts on FPE). I went ahead and changed it back- it should + have little effect. + +2002-04-21 20:31 afaber + + * Dll/BladeMP3EncDLL.c: + + Added additional debug flags + +2002-04-21 18:10 takehiro + + * libmp3lame/l3side.h: + + remove unused definition + +2002-04-21 18:05 takehiro + + * libmp3lame/lame.c: + + fix typo + +2002-04-21 17:33 takehiro + + * libmp3lame/lame.c: + + trivial(reduce magic number) + +2002-04-21 17:03 afaber + + * Dll/BladeMP3EncDLL.c: + + Avoid the VBR Tag space was written when VBR method was disabled + (caused empty frame in fornt of MPEG stream for certain CBR settings) + +2002-04-21 16:56 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/takehiro.c, libmp3lame/util.h: + + new option, --substep, pseudo substep noise shaping now works. + - new set_get function, lame_set_substep(), lame_get_substep() + - final fix of "do substep" region of selected scalefactor. + - noise_shaping_amp == 3 is removed and the method of how to use substep is selecte by the new member "substep" in structure "lame_internal_flags". + +2002-04-21 13:57 takehiro + + * libmp3lame/bitstream.c: + + trivial optimization: gfp/gfc cleanup + +2002-04-20 22:31 robert + + * Makefile.unix: + + [no log message] + +2002-04-20 20:40 takehiro + + * libmp3lame/: bitstream.c, encoder.c, l3side.h, newmdct.c, + quantize.c, quantize_pvt.c, takehiro.c, vbrquantize.c: + + simplify the structure. + l3_side->gr[gr].ch[ch].tt is now known as l3_side->tt[gr][ch]. + +2002-04-20 20:31 takehiro + + * libmp3lame/l3side.h: + + fix misleading indent + +2002-04-20 20:28 takehiro + + * libmp3lame/takehiro.c: + + prepare for mixed block support: count_bits() and best_scalefac_store(). + fix bug of noise_shaping_amp==3 on a long block. + +2002-04-20 20:17 takehiro + + * libmp3lame/quantize.c: + + more mixed_block preparation: inc_scalefac_scale(), amp_scalefac_bands() + +2002-04-20 20:16 takehiro + + * libmp3lame/quantize_pvt.c: + + for better mixed_blcok support, make calc_xmin() use cod_info->sfb_lmax, etc. + +2002-04-20 19:54 takehiro + + * libmp3lame/quantize.c: + + fix mixed mode (long block max sfb) + +2002-04-20 19:50 takehiro + + * libmp3lame/: l3side.h, quantize.c, quantize_pvt.c: + + more generalized mixed_block support and considering in MPEG2/2.5 + - added new members to cod_info. psy_lmax and psy_smax. + +2002-04-20 19:39 takehiro + + * libmp3lame/quantize.c: + + we don't need two elements of l3_xmin. + +2002-04-20 19:34 takehiro + + * libmp3lame/quantize_pvt.c: + + - calc_xmin() supports mixed_block noise calculation. + - mixed_block parameter(long block end point and short block start point) fix for calc_noise() + +2002-04-20 18:51 takehiro + + * libmp3lame/quantize_pvt.c: + + calc_noise() supports mixed_block noise calculation. + +2002-04-20 18:40 takehiro + + * libmp3lame/quantize_pvt.c: + + remove out-of-date comments + +2002-04-20 18:37 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c: + + first step of clean up calc_noise() for preparing mixed block support. + - removed unused variables + - make the two loops (long and short) same structure. + +2002-04-20 11:49 robux4 + + * ACM/lameACM.dsp: + + Added the preset to compile the project (not used... yet) + +2002-04-19 14:51 bouvigne + + * Dll/BladeMP3EncDLL.c: + + Now the dll should properly applying mono and resampling settings even if presets are used + +2002-04-19 11:23 bouvigne + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + alt-presets now used from inside libmp3lame + +2002-04-17 22:13 robert + + * Makefile.unix: + + missing presets.c added + +2002-04-17 08:11 aleidinger + + * configure: + + regen + +2002-04-17 08:08 aleidinger + + * configure.in: + + bump version + +2002-04-16 19:47 markt + + * testcase.mp3: + + updated testcases (just because CVS version bumped up to 3.93alpha) + +2002-04-15 18:36 markt + + * libmp3lame/version.h: + + updated version to 3.93 alpha 1 + +2002-04-15 16:42 bouvigne + + * frontend/parse.c, libmp3lame/presets.c: + + abr presets now into libmp3lame + +2002-04-15 11:51 bouvigne + + * frontend/parse.c: + + --cbr + +2002-04-15 11:42 bouvigne + + * libmp3lame/lame.c: + + 3dnow identification + +2002-04-15 08:16 aleidinger + + * Makefile.in, configure: + + regen + +2002-04-15 06:58 markt + + * Makefile.in, configure, debian/Makefile.in: + + got automake 1.5 and ran it: + +2002-04-15 06:57 markt + + * debian/Makefile.am: + + updated debian/Makefile.am but my version of automake + is too old: + + debian/Makefile.am:5: require version 1.5, but have 1.4-p5 + +2002-04-15 06:47 markt + + * testcase.mp3, doc/html/history.html, libmp3lame/version.h: + + bumped up version number to 3.92 for release + +2002-04-15 06:46 markt + + * ChangeLog: + + ran cvs2cl.pl + +2002-04-14 12:21 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: + + Added strict-iso option to the interface, added output samplerate parameter to the debug log file + +2002-04-12 19:44 markt + + * libmp3lame/bitstream.c: + + added message regarding "internal buffer inconsistency error" to printout: + + ERRORF(gfc,"This is a fatal error. It has several possible causes:"); + ERRORF(gfc,"90% LAME compiled with buggy version of gcc using advanced optimizations"); + ERRORF(gfc," 9% Your system is overclocked"); + ERRORF(gfc," 1% bug in LAME encoding library"); + +2002-04-10 12:55 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + --noasm option + +2002-04-10 06:37 bouvigne + + * Makefile.MSVC: + + presets.c + +2002-04-09 15:43 bouvigne + + * Dll/BladeMP3EncDLL.c: + + dm presets in the dll are now used from initialized from inside libmp3lame + +2002-04-09 15:28 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2002-04-09 14:46 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/Makefile.am, + libmp3lame/libmp3lame_vc6.dsp, libmp3lame/presets.c, + libmp3lame/set_get.c: + + vbr presets are now part of libmp3lame + +2002-04-09 11:56 bouvigne + + * frontend/parse.c: + + --cbr switch + +2002-04-08 20:30 robux4 + + * ACM/acm.rc: + + minor change on the DLL versioning + +2002-04-08 18:43 robux4 + + * ACM/: ACM.cpp, AEncodeProperties.cpp: + + Added some new defines that might not be in all platform DDKs + (just in case) + +2002-04-08 18:41 aleidinger + + * Makefile.in, ACM/Makefile.in: + + regen + +2002-04-08 18:41 aleidinger + + * Makefile.am, ACM/Makefile.am: + + add new vc6 file + +2002-04-08 12:43 bouvigne + + * lame_vc6.dsw, ACM/lameACM_vc6.dsp: + + added ACM codec to vc6 workspace + +2002-04-08 09:56 bouvigne + + * lame_projects_vc6.dsp, lame_vc6.dsw: + + dummy project to generate all lame projects (select lame_projects in the workspace) + +2002-04-07 14:09 robux4 + + * ACM/TODO: + + Removed the things already done + +2002-04-07 14:07 robux4 + + * ACM/: ACM.cpp, AEncodeProperties.cpp, lameACM.dsp: + + Clicking on the LAME URL will open the default browser + +2002-04-07 13:31 robux4 + + * ACM/: AEncodeProperties.cpp, AEncodeProperties.h: + + Added tool-tips to the configuration dialog + +2002-04-07 12:28 robux4 + + * ACM/: ACM.cpp, acm.rc: + + Improved LAME version display + +2002-04-07 10:17 robux4 + + * ACM/: AEncodeProperties.cpp, AEncodeProperties.h, acm.rc, + lame_acm.xml, resource.h: + + ABR support now complete + +2002-04-06 14:12 aleidinger + + * lame.bat: + + bugfix, sorry, lost the mail for it + +2002-04-06 14:10 aleidinger + + * Makefile.in, ACM/Makefile.in, ACM/tinyxml/Makefile.in, + Dll/Makefile.in, frontend/Makefile.in, libmp3lame/Makefile.in, + mpglib/Makefile.in, configure: + + regen + +2002-04-06 14:09 aleidinger + + * configure.in: + + add tinyxml directory + +2002-04-06 14:08 aleidinger + + * Makefile.am, ACM/Makefile.am, ACM/tinyxml/Makefile.am, + Dll/Makefile.am, frontend/Makefile.am, libmp3lame/Makefile.am, + mpglib/Makefile.am: + + add new files + +2002-04-06 14:01 robux4 + + * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, ACMStream.h: + + Encoding in ABR is starting to work + the different format strings are sorted correctly + +2002-04-06 11:34 robux4 + + * ACM/: ACM.cpp, ACM.h, AEncodeProperties.cpp, AEncodeProperties.h, + acm.rc, resource.h: + + First part of the ABR support + (missing use ABR settings on encoding when applied, configuration of ABR params) + +2002-04-06 11:32 robux4 + + * ACM/tinyxml/: readme.txt, tinyxml.cpp, tinyxml.dsp, tinyxml.h, + tinyxmlparser.cpp, xmltest.cpp: + + Updated with version 2.0 beta + +2002-04-04 13:35 bouvigne + + * lame_vc6.dsw, Dll/LameDll_vc6.dsp, frontend/lame_vc6.dsp, + libmp3lame/libmp3lame_vc6.dsp, mpglib/mpglib_vc6.dsp: + + I was annoyed to not be able to open the VC projects in vc6, so I added vc6 ones + +2002-03-22 18:29 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Added lame presets to DLL interface + +2002-03-16 00:26 robert + + * Makefile.MSVC: + + no fast float to int conversion (Intel compiler) + +2002-03-16 00:21 robert + + * Makefile.MSVC, frontend/parse.c: + + fix for Win2k path seperator issue + found by Peter Hartley + +2002-03-15 23:16 robert + + * libmp3lame/quantize.c: + + bugfix, confusion about sideinfo length + found by "Kei Ishida" + +2002-03-06 00:02 robert + + * lame.dsw: + + VC Workspace for all(?) targets + +2002-03-03 18:57 aleidinger + + * libmp3lame/psymodel.c: + + remove /* withhin comment + +2002-03-03 18:38 markt + + * TODO: + + msvc6 notes + +2002-02-22 11:53 shibatch + + * libmp3lame/quantize_pvt.c: + + mp3x now displays quantization noise correctly when using nspsytune. + +2002-02-21 00:54 rbrito + + * debian/: changelog, control, copyright, lame-dev.docs, + lame-dev.files, lame-extras.files, lame.docs, liblame0-dev.docs, + liblame0-dev.files, liblame0.files, rules: + + Reorganization of the lame/debian directory for generating packages closer + to what the Debian Policy specifies. Still not there (the liblame0 package + still has a dreaded -rpath and thus, is not lintian clean). + +2002-02-17 15:24 takehiro + + * doc/html/: history.html, switchs.html: + + fix option description, and changed & to & + +2002-02-17 14:22 takehiro + + * libmp3lame/psymodel.c: + + now inter-channel masking works even when without --nspsytune or with -m s + +2002-02-17 13:59 takehiro + + * libmp3lame/psymodel.c: + + fix for --enable-all-float. + +2002-02-17 13:55 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/util.h: + + added inter channel masking effect. + gfp->interChRatio is the ratio of inter-channel masking effect, which could + be indicated by --interch X option. + The default value is 0.0, which means there's no inter-channel masking effect. + + I think ratio = 0.01 is OK for lower bitrates (like under 128kbps), + for like old days songs by the Beatles. + +2002-02-17 13:30 bouvigne + + * frontend/parse.c: + + presets down to 8kbps + +2002-02-17 08:12 takehiro + + * libmp3lame/util.h: + + prepare for the interchannel masking and substep noise shaping. + +2002-02-16 17:19 robux4 + + * ACM/tinyxml/: Makefile.tinyxml, changes.txt, dox, makedistlinux, + makedistwin.bat, readme.txt, tinyxml.cpp, tinyxml.dsp, tinyxml.h, + tinyxmlerror.cpp, tinyxmlparser.cpp, xmltest.cpp: + + Update with newer version of TinyXML + +2002-02-15 11:42 shibatch + + * frontend/parse.c, libmp3lame/psymodel.c: + + Now, nspsytune2 should work, maybe... + +2002-02-14 15:38 shibatch + + * libmp3lame/: lame.c, psymodel.c, util.h: + + Preparation work for nspsytune2. + +2002-02-13 16:30 aleidinger + + * frontend/rtp.h: + + compile fix for gcc 3.x from Len Walter + +2002-02-09 18:51 markt + + * frontend/gtkanal.c: + + added preflag count to statics window in mp3x + +2002-02-07 11:58 shibatch + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + frontend/parse.c, include/lame.h, libmp3lame/set_get.c: + + preparation work for nspsytune2 + +2002-02-04 17:10 markt + + * TODO, libmp3lame/util.c: + + temporary fix for resampling code. downsampling from 44101 to 44100 causes + a seg fault. Workaround in place for now: resampling disabled + if input/output samplerates agree to 4 digits. + +2002-02-01 18:58 markt + + * INSTALL, TODO: + + minor edits + +2002-02-01 17:41 markt + + * TODO: + + added notes about building a working, all encompasing MSVC6 + workspace to TODO list + +2002-02-01 17:37 markt + + * INSTALL: + + added nots about the ACM codec and directshow filter + to INSTALL + +2002-02-01 17:08 robux4 + + * ACM/ACM.cpp: + + Correct a problem when more than 2 channels are involved + +2002-01-31 21:17 robux4 + + * libmp3lame/lame.c: + + Less memory copying on interleaved buffer + +2002-01-31 21:03 uid32249 + + * ACM/tinyxml/: Makefile, Makefile.tinyxml: + + replace Makefile with Makefile.tinyxml + +2002-01-30 23:25 robux4 + + * ACM/: ACM.cpp, acm.rc: + + resolved FhG incompatibility, first beta version (can go public), no decoding yet + +2002-01-29 21:20 robux4 + + * ACM/: ACM.cpp, TODO, acm.rc: + + update version and removed unused buffers + +2002-01-29 20:51 robux4 + + * ACM/lameACM.dsp: + + build with special dynamic memory handling for ACM + +2002-01-29 20:37 robux4 + + * configMS.h, ACM/ACM.cpp, ACM/ACMStream.cpp, ACM/main.cpp: + + More debugging, special dynamic memory handling for ACM + +2002-01-28 22:33 ivanski + + * mac/LAME.mcp: + + CW6 Project File + +2002-01-28 22:13 ivanski + + * mac/: .DS_Store, LAME Carbon Debug.pch, LAME Carbon Final.pch, + LAME Classic Debug.pch, LAME Classic Final.pch, MacDLLMain.c, + Precompile_Common.h: + + Initial revision + +2002-01-28 22:13 ivanski + + * mac/: .DS_Store, LAME Carbon Debug.pch, LAME Carbon Final.pch, + LAME Classic Debug.pch, LAME Classic Final.pch, MacDLLMain.c, + Precompile_Common.h: + + Mac support + +2002-01-28 20:12 robux4 + + * ACM/: TODO, acm.rc: + + more TODO, added icon credit + +2002-01-28 18:18 markt + + * libmp3lame/lame.c, test/CBRABR.op: + + set devault qval to 2 for CBR and ABR. + +2002-01-25 18:18 robux4 + + * ACM/: TODO, lame.ico: + + new icon, more to do + +2002-01-25 17:51 robux4 + + * ACM/: ACM.cpp, ACM.h, AEncodeProperties.cpp, DecodeStream.cpp, + acm.rc: + + version 0.7.6, improved the smart output mode, corrected a config saving bug + +2002-01-25 17:47 robux4 + + * ACM/ADbg/: ADbg.cpp, ADbg.h: + + more explicit cast + +2002-01-25 11:27 aleidinger + + * misc/Makefile.in: + + regen + +2002-01-25 11:23 aleidinger + + * misc/Makefile.am: + + add lameid3.pl + +2002-01-25 11:22 aleidinger + + * doc/man/lame.1: + + some fixes + +2002-01-24 19:38 robux4 + + * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, AEncodeProperties.cpp, + AEncodeProperties.h, TODO, acm.rc, lameACM.dsp, lame_acm.xml, + main.cpp, resource.h: + + introducing smart output mode, clean dialog boxes, config saving/loading now works + +2002-01-23 20:51 robux4 + + * ACM/DecodeStream.cpp: + + correct a build problem when ENABLE_DECODING is not defined + +2002-01-23 20:45 robux4 + + * ACM/readme.txt: + + More doc on the release files + +2002-01-23 20:40 robux4 + + * ACM/ADbg/ADbg.dsp: + + removed a minor build problem + +2002-01-23 20:39 robux4 + + * ACM/: ACM.cpp, ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, + AEncodeProperties.cpp, AEncodeProperties.h, DecodeStream.cpp, + DecodeStream.h, LameACM.inf, TODO, acm.rc, lameACM.dsp, + lame_acm.xml, readme.txt, resource.h, tinyxml/Makefile, + tinyxml/changes.txt, tinyxml/readme.txt, tinyxml/test.dsp, + tinyxml/test.dsw, tinyxml/tinyxml.cpp, tinyxml/tinyxml.dsp, + tinyxml/tinyxml.h, tinyxml/tinyxmlerror.cpp, + tinyxml/tinyxmlparser.cpp, tinyxml/xmltest.cpp: + + Initial configuration dialog and XML config saving, initial decoding support (not working yet) + +2002-01-23 20:32 robux4 + + * mpglib/interface.h: + + better handling of C++ include + +2002-01-23 01:23 markt + + * lame.spec.in: + + commiting Yosi's new lame.spec.in file + +2002-01-22 19:45 robux4 + + * ACM/: ACM.cpp, ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, + LameACM.inf, TODO, acm.rc, adebug.h, lameACM.def, lameACM.dsp, + main.cpp, readme.txt: + + clean the code, put LGPL license, add mpglib to the build + +2002-01-21 21:33 markt + + * TODO, configure, configure.in: + + added MAX OSX patch from sf bugtrack page + +2002-01-21 20:24 markt + + * USAGE, misc/lameid3.pl: + + added lameid3.pl script to misc directory. + (use to reencode mp3's and preserve id3 tags) + +2002-01-20 19:29 robux4 + + * libmp3lame/util.h: + + Better C++ handling + +2002-01-20 19:25 robux4 + + * Dll/BladeMP3EncDLL.h: + + Better C++ handling + +2002-01-20 15:05 aleidinger + + * configure: + + regen (ACM) + +2002-01-20 15:05 aleidinger + + * configure.in: + + Add ACM directory + +2002-01-20 15:04 aleidinger + + * ACM/Makefile.in: + + Add generated autoconf glue + +2002-01-20 14:59 aleidinger + + * ACM/ADbg/Makefile.in: + + Add generated autoconf glueACM/Makefile.in + +2002-01-20 14:58 aleidinger + + * ACM/: Makefile.am, ADbg/Makefile.am: + + Add automake clue (for make dist) + +2002-01-20 14:56 robux4 + + * ACM/lameACM.dsp: + + Eanble correct nasm support + +2002-01-20 14:03 robux4 + + * ACM/: ADbg/ADbg.cpp, ADbg/ADbg.dsp, ADbg/ADbg.h, ACM.cpp, + ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, LameACM.inf, acm.rc, + adebug.h, lame.ico, lameACM.def, lameACM.dsp, main.cpp, + readme.txt, resource.h: + + Initial ACM support + +2002-01-19 11:52 bouvigne + + * README, TODO: + + updated TODO + +2002-01-17 16:43 aleidinger + + * Makefile.unix: + + NASM for Windows fixes (Hubert Hanghofer) + +2002-01-17 13:42 aleidinger + + * configure: + + regen + +2002-01-17 13:42 aleidinger + + * configure.in: + + - Update gcc 3.x and --enable-expopt=full flags based upon suggestions + and benchmarks from Hubert Hanghofer and + Craig Okruhlica . + - Remove gcc flags which are marked 'experimental' in the gcc 3.0.3 + documentation (noticed by Hubert Hanghofer). + - Add comment what "expopt" means, and what it doesn't mean. + +2002-01-17 13:42 aleidinger + + * Makefile.unix: + + - Update MINGW part pased upon patches and comments from + Hubert Hanghofer . + - Some minor changes for consistency. + + Note: this file is superseded by configure, except for systems where + configure didn't work, so if something is broken you have to send + patches. + +2002-01-17 05:08 takehiro + + * libmp3lame/i386/.cvsignore: + + added *.lo + +2002-01-09 12:09 takehiro + + * debian/.cvsignore, dshow/.cvsignore: + + added autogen Makefile to ignore + +2002-01-09 12:09 takehiro + + * frontend/.cvsignore, libmp3lame/.cvsignore, mpglib/.cvsignore: + + added *.il, for the intel compiler with ipo option + +2002-01-07 15:51 aleidinger + + * configure: + + oops, forgot to s/gtk12-config/gtk-config/ + +2002-01-07 15:48 aleidinger + + * configure: + + regen + +2002-01-07 15:48 aleidinger + + * configure.in: + + add gcc 3 specific optimizations, based upon suggestions by S�bastien FORESTIER + +2002-01-07 10:35 aleidinger + + * configure, frontend/Makefile.in: + + regen: Fix Cygwin and HPUX problems. + +2002-01-07 10:34 aleidinger + + * configure.in, frontend/Makefile.am: + + Fix Cygwin and HPUX problems. + +2002-01-01 16:55 robert + + * misc/lame4dos.bat: + + modified some remark + +2001-12-30 23:54 markt + + * doc/html/history.html: + + updated hostory.html from master copy in webpages project + +2001-12-29 17:36 takehiro + + * doc/html/history.html: + + fix option for pseudo-half step quantization + +2001-12-29 16:23 aleidinger + + * configure: + + regen: Welcome to 3.92 + +2001-12-29 16:21 aleidinger + + * configMS.h, configure.in, libmp3lame/version.h: + + Welcome to 3.92 + +2001-12-29 15:45 aleidinger + + * doc/html/history.html: + + sync with webpages/history.html + +2001-12-28 18:55 takehiro + + * .cvsignore: + + added stamp-h1 + +2001-12-28 12:47 aleidinger + + * Dll/Example.dsp, Dll/MP3EncDll.dsp, dshow/dshow.dsp, + frontend/lame.dsp, libmp3lame/libmp3lame.dsp, dshow/dshow.dsw, + mpglib/mpglib.dsp: + + unix->dos + +2001-12-27 16:12 aleidinger + + * doc/man/lame.1: + + add --alt-preset + +2001-12-27 12:50 aleidinger + + * misc/Makefile.in: + + regen: add missing files to the distribution + +2001-12-27 12:49 aleidinger + + * misc/Makefile.am: + + add missing files to the distribution + +2001-12-23 20:19 dibrom + + * libmp3lame/set_get.c: + + disable noise shaping 2 for "fast" extreme mode also + +2001-12-23 20:11 dibrom + + * libmp3lame/: set_get.c, vbrquantize.c: + + fix small bug and completely disable noise_shaping 2 with "fast" mode until a better solution can be found. + +2001-12-23 12:25 aleidinger + + * misc/Makefile.in: + + regen: add some files to the distribution + +2001-12-23 12:22 aleidinger + + * misc/Makefile.am: + + add auenc, mugeco,sh and mlame to distrib + +2001-12-22 13:32 aleidinger + + * DEFINES: + + document NON_LINEAR_PSYMODEL, remove KLEMM_43 + +2001-12-22 13:29 aleidinger + + * libmp3lame/psymodel.c: + + non linear psymodel (disabled by default) for GPSYCHO (nspsytune is untouched) + +2001-12-22 13:27 aleidinger + + * configure: + + regen: Welcome to v3.91 + +2001-12-22 13:26 aleidinger + + * configMS.h, configure.in, libmp3lame/version.h: + + Welcome to v3.91 + +2001-12-21 15:09 aleidinger + + * libmp3lame/machine.h: + + add icc check + +2001-12-21 15:05 aleidinger + + * libmp3lame/Makefile.in: + + regen: (add vbrquantize.h) + +2001-12-21 15:05 aleidinger + + * libmp3lame/Makefile.am: + + add vbrquantize.h + +2001-12-21 11:58 jd- + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: + + Added DLL interface function beEncodeChunkFloatS16NI for floating point audio + Samples are input within the range +/- 32768, in non-interleaved channels + +2001-12-21 03:29 markt + + * testcase.mp3: + + updated testcase + +2001-12-21 03:29 markt + + * libmp3lame/: version.c, version.h: + + updated version to lame 3.90 + +2001-12-20 23:11 markt + + * ChangeLog: + + update changelog + +2001-12-20 08:44 dibrom + + * libmp3lame/encoder.c: + + no message + +2001-12-20 08:33 dibrom + + * libmp3lame/: encoder.c, set_get.c, util.h, vbrquantize.c: + + improved quality of "fast" modes in certain situations + +2001-12-18 17:44 dibrom + + * frontend/parse.c: + + removed bitrate compensation stuff for the abr bitrates since it appears no longer necessary + +2001-12-18 17:28 dibrom + + * doc/html/switchs.html: + + added --alt-preset to the list of switches + +2001-12-18 17:13 dibrom + + * doc/html/history.html: + + documented many changes which have been made over 3.90 + +2001-12-18 16:27 dibrom + + * frontend/parse.c: + + small tweak to "standard" preset + +2001-12-18 16:14 dibrom + + * libmp3lame/: psymodel.c, quantize.c, set_get.c, util.h, + vbrquantize.c: + + small quality improvement for "extreme" and "insane", more bitrate tunings for "extreme" -- should average to 256kbps more often + +2001-12-18 11:16 aleidinger + + * configure: + + regen: vorbis changes + +2001-12-18 11:14 aleidinger + + * configure.in: + + - Change vorbis default to disabled + - Added -logg in the vorbis case (seems to be needed, I haven't tested it) + +2001-12-18 11:13 aleidinger + + * libmp3lame/vorbis_interface.c: + + Try to unbreak vorbis support (it can't get worser). + You may need the vorbis source and add -I/path/to/vorbis_src/includes/ to + CFLAGS prior to running configure + + Tested by: Jonathan Ryshpan on RedHat 7.2 + Submitted by: Cyrille Lefevre via FreeBSD problem report + +2001-12-17 04:40 markt + + * libmp3lame/quantize.c: + + Minor changes to Gabriel's adjustment for ABR bitrate. + Updated testcases. + + Added the following comments: + + /* + res_factor is the percentage of the target bitrate that should + be used on average. the remaining bits are added to the + bitreservoir and used for difficult to encode frames. + + Since we are tracking the average bitrate, we should adjust + res_factor "on the fly", increasing it if the average bitrate + is greater than the requested bitrate, and decreasing it + otherwise. Reasonable ranges are from .9 to 1.0 + + Until we get the above suggestion working, we use the following + tuning: + compression ratio res_factor + 5.5 (256kbps) 1.0 no need for bitreservoir + 11 (128kbps) .93 7% held for reservoir + + with linear interpolation for other values. + + */ + res_factor = .93 + .07 * (11.0 - gfp->compression_ratio) / (11.0 - 5.5); + +2001-12-16 16:00 bouvigne + + * libmp3lame/quantize.c: + + better abr bitrate approximation (will break abr testcases) + +2001-12-15 07:31 dibrom + + * libmp3lame/: psymodel.c, set_get.c, util.h, vbrquantize.c: + + More tunings for "fast" options for "standard" and "extreme" modes. + +2001-12-14 16:27 dibrom + + * libmp3lame/set_get.c: + + small tweak to "extreme" mode + +2001-12-14 07:00 dibrom + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + - changed --dm-presets to --alt-presets + - modified preset system + - applied tunings to vbr and psymodel, especially with --alt-preset standard, improves many difficult clips over the default vbr modes/presets (even those such as --r3mix) such as impulse cases (fatboy, spahm, them, gbtinc, ravebase, etc), pre-echo cases (castanets, death2, florida_seq, etc), tonality/js cases (2nd_vent, serioustrouble, bloodline, etc), low volume clips (piano, rach_original), many clips with problems with noise shaping 2, and much much more. Practically all cases should be equal or improved in quality. + - added --no-preset-tune to disable tunings for --alt-preset "modes" + +2001-12-03 18:15 markt + + * USAGE, frontend/parse.c: + + updated descriptions of some command line options, as per Dmitry + +2001-11-30 18:35 markt + + * lame.spec.in: + + patch from lassauge@mail.dotcom.fr for lame.spec.in file. + +2001-11-30 18:05 markt + + * include/lame.h, libmp3lame/lame.c: + + added lame_encode_buffer_long2(), since lame_encode_buffer_long() had + a scaling which restricted the precision of the input to the same + as if the input was 'short int' + + decided to leave the original routine, on the off chance there + is some program out there which uses it. + +2001-11-28 12:30 aleidinger + + * Makefile.in: + + regen + +2001-11-28 12:29 aleidinger + + * Makefile.am: + + change description of make test + +2001-11-26 15:21 takehiro + + * libmp3lame/takehiro.c: + + tuning of "pseudo half step noise shaping" with listening test. + and it works now even when scalefac_scale == 1 + +2001-11-26 15:19 takehiro + + * libmp3lame/: psymodel.c, VbrTag.c: + + fix warning + +2001-11-26 11:00 aleidinger + + * libmp3lame/version.h: + + Bump alpha version. + +2001-11-25 15:24 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, takehiro.c, + util.h: + + new noise shaping algorithm(pseudo half step noise shaping) + it brings slow but more accurate noise shaping. + enables with -q0 when CBR + +2001-11-19 21:26 markt + + * frontend/parse.c, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + Reverted CVS back to before "gglower" option was added. + + --scale is a better way to do this, and contrary to Hans' claims, + --scale is also lossless. + +2001-11-18 22:44 robert + + * frontend/parse.c, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + patch by Hans van der Heijden, original email: + + Datum: Sun, 18 Nov 2001 20:13:11 +0100 + Von: "Hans van der Heijden" + An: + + Hi Robert, + + For the first time, I compiled Lame, being a non-programmer (well, my work + involves programming, but that's a world apart with logic symbols, not C + language). + Because sometimes I have the urge to try something with the sourcecode. + + I'd like to add a switch to avoid the use of --scale for preventing + clipping. It manipulates global_gain, similar as the mp3gain tool does, but + this would be much more convenient of course (and better quality-wise, being + 'lossless'). + + Since I have no programming experience, can you take a look if I implemented + it correctly? The switch is called --gglower x, where each x-step stands for + 1,5 dB. gg is short for global gain. So for example, --gglower 1 will + decrease the output volume with 1,5 dB (0,841). I would probably use this by + default, it will be enough to prevent clipping for all but the oddest + samples/settings. + + I did a lot of copy/pasting from the --athlower switch, otherwise I probably + couldn't figure it all out! + Files involved are parse.c, lame_global_flags.h, set_get.c, lame.h and + bitstream.c. + I attached these files, if you search in each for 'gglower' you'll find the + added code. + Files came from the 11 Nov CVS. + + Also attached is a cygwin lame.exe if you like to play with it. + + Let's add it to CVS if it's OK (don't know how to do that myself, have to + tell Mark?). + + Bye, + Hans + +2001-11-17 11:17 aleidinger + + * Dll/Example.cpp, Makefile.unix, Dll/Makefile.mingw32: + + some mingw fixes from Vladislav Naumov + +2001-11-14 16:25 aleidinger + + * include/lame.h: + + fixes in comments + +2001-11-12 21:58 robert + + * libmp3lame/lame.c: + + [no log message] + +2001-11-12 17:36 aleidinger + + * include/lame.h: + + spelling fixes in comments + +2001-11-11 22:13 afaber + + * Dll/BladeMP3EncDLL.c: + + fixed bugs: 451879 and 438835 + +2001-11-11 15:08 aleidinger + + * doc/man/Makefile.in, configure: + + regen + +2001-11-11 15:06 aleidinger + + * libmp3lame/bitstream.c: + + add CVS Id + +2001-11-11 14:57 aleidinger + + * Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + regen + +2001-11-11 14:53 aleidinger + + * configure.in, frontend/Makefile.am: + + bugfix: --disable-{mp3x,mp3rtp} had build them + add: --disable-fontend + +2001-11-11 14:48 aleidinger + + * include/lame.h, libmp3lame/version.c, libmp3lame/version.h: + + remove mp3x version, it doesn't belong into the lib + (this breaks every app which uses the function, but mp3x should + be the only app which uses it, so this is ok because I moved it + into gtkanal.c) + +2001-11-11 14:47 aleidinger + + * frontend/gtkanal.c: + + move mp3x version here (from libmp3lame/version.[ch]) + +2001-11-11 11:31 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2001-11-11 11:30 aleidinger + + * libmp3lame/Makefile.am: + + add missing headers + +2001-11-10 14:25 aleidinger + + * libmp3lame/VbrTag.c: + + at least fix the bus error on SPARC until Roel or someone else decides if we should fix it in another way + +2001-11-06 14:43 aleidinger + + * doc/html/switchs.html: + + resample only for encoding + +2001-11-06 12:41 aleidinger + + * doc/man/lame.1: + + athaa fixes, resample only for encoding + +2001-11-06 01:31 jd- + + * frontend/parse.c: + + Cleaned up preset help; send explicitly requested help to stdout, not stderr. + Modularized original presets, with aliases to preserve the original behavior. + +2001-11-05 15:26 dibrom + + * frontend/parse.c: + + modify lowpass values for dm-preset abr mode + +2001-11-05 05:46 dibrom + + * frontend/parse.c: + + Updated dm-presets + +2001-11-05 05:20 markt + + * testcase.mp3, libmp3lame/encoder.h: + + updated padding at end of MP3 to be 1152 samples. + So the last frame containing real data will always be followed + by a frame containing silence. (since most decoders will only + decode the second to last frame) + +2001-11-04 23:42 robert + + * Makefile.MSVC: + + lost i added + +2001-11-04 23:39 robert + + * Makefile.MSVC: + + optimizing some intel compile flags + +2001-11-04 18:51 robert + + * configMS.h: + + moved MSVC specific #pragma into MSVC section + +2001-11-04 18:50 robert + + * libmp3lame/quantize.h, DEFINES: + + removed MAXQUANTERROR precompiler define + +2001-11-04 18:48 robert + + * frontend/parse.c, include/lame.h: + + we don't want to make Naoki's msfix part of the API at this time, removed + from lame.h again. + parse.c compilation was broken by JD's presets_alias function. + +2001-11-04 18:31 robert + + * libmp3lame/: encoder.c, quantize.c, vbrquantize.c, vbrquantize.h: + + removed MAXQUANTERROR precompiler define + +2001-11-04 18:20 dibrom + + * frontend/parse.c: + + update dm-presets.. more to come shortly + +2001-11-04 18:19 dibrom + + * include/lame.h: + + added msfix + +2001-11-04 17:28 robert + + * include/lame.h, libmp3lame/lame.c: + + --vbr-mtrh is now known as --vbr-new + +2001-11-04 17:22 robert + + * Dll/BladeMP3EncDLL.c: + + --vbr-mtrh is now known as --vbr-new + +2001-11-04 13:39 aleidinger + + * libmp3lame/set_get.c: + + some fixes in the comments + +2001-11-04 13:39 aleidinger + + * frontend/parse.c: + + mark --{voice,radio,cd,studio,phone} as deprecated + +2001-11-04 13:33 aleidinger + + * doc/man/lame.1: + + remove --voice (deprecated) + +2001-11-04 13:01 jd- + + * frontend/parse.c: + + Moved "--dm-preset *" preset profiles to "--preset dm-*". + Added code for aliasing presets to multiple broad or narrow purpose labels. + +2001-11-04 08:37 jd- + + * frontend/parse.c: + + Allow specifying the r3mix preset with "--preset r3mix" for consistency + +2001-11-03 10:51 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + Renamed experimental switch "--ath-adjust" to "--athaa-type" for consistency. + All switches directly affecting ATH auto-adjustment begin with "--athaa-*". + +2001-11-03 09:31 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/util.h: + + Added a bit of documentation to the long help. + To better reflect purpose, renamed adapt-thres-type and adapt-thres-level + to athaa-loudapprox and athaa-sensitivity, respectively. + +2001-10-30 20:31 markt + + * libmp3lame/VbrTag.c: + + When determining enc_delay and enc_padding from VBR header, check + for reasonable values. + +2001-10-29 22:00 markt + + * frontend/get_audio.c, frontend/main.c, frontend/main.h, + frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, mpglib/interface.c, + mpglib/mpglib.h: + + VbrTag.c: GetVBRTag() updated to parse enc_delay, enc_padding fields + enc_delay is used by 'lame --decode' to determine how many samples + to skip at the beginning during decoding. + +2001-10-29 20:01 markt + + * frontend/main.c: + + for --nogap option, do not allow Xing VBR tag. + + We should also not allow id3 tags and --nogap, but the are not turned on by + default, and it is more than a 3 line fix :-) + +2001-10-29 08:41 bouvigne + + * libmp3lame/: gain_analysis.c, gain_analysis.h: + + adding gain analysis files + +2001-10-29 06:08 markt + + * frontend/main.c, libmp3lame/VbrTag.c, + libmp3lame/lame_global_flags.h, mpglib/interface.c: + + --nogap and --nogapout fixed in frontend. didn't check + if output is really gapless - hopefully no bugs have crept into + that while --nogap was broken. + +2001-10-28 22:24 markt + + * libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/lame_global_flags.h, libmp3lame/tables.c, + libmp3lame/util.c, mpglib/interface.c: + + Fixed bug in VbrTag.c which is why Xing tag was broken for MPEG2 + files. + + This code: + + if( h_id == 0 ) + pTagData->samprate >>= 1; + + was, for unknown reasons, cutting the samplrate down by + a factor of two for MPEG2, causing the framesize of the Xing + header to be too large, causing it to overwrite the first + valid MP3 frame. + +2001-10-25 11:54 roelvdb + + * libmp3lame/VbrTag.c: + + undo previous edit, misunderstanding + +2001-10-24 23:59 roelvdb + + * libmp3lame/VbrTag.c: + + if ABR, {store bitrate <=255} else { use 4 low bits to store bitrateindex so "-b" for VBR(/CBR) is known. 0F for freeformat} + +2001-10-24 20:45 markt + + * testcase.mp3: + + updated testcases + +2001-10-24 16:33 aleidinger + + * doc/man/lame.1: + + sync with HTML + +2001-10-24 12:44 bouvigne + + * doc/html/: basic.html, examples.html, history.html, node6.html, + switchs.html: + + doc fixes + +2001-10-24 12:32 bouvigne + + * doc/html/switchs.html: + + a small athtype doc modif + +2001-10-23 16:35 bouvigne + + * doc/html/switchs.html: + + fixes from Dmitry + +2001-10-23 16:17 bouvigne + + * doc/html/switchs.html: + + fixes from Alexander + +2001-10-23 14:06 aleidinger + + * doc/man/lame.1: + + add line breaks, expand examples section, add ID3 section, fixes + +2001-10-23 14:06 aleidinger + + * frontend/main.c: + + fix for cygwin/mingw from egor duda + +2001-10-22 21:31 roelvdb + + * libmp3lame/VbrTag.c: + + no message + +2001-10-22 13:25 aleidinger + + * doc/man/lame.1: + + update based on HTML version + +2001-10-21 17:00 bouvigne + + * doc/html/: basic.html, switchs.html: + + doc + +2001-10-20 16:32 aleidinger + + * Makefile.unix: + + Submitted by: "Vladislav Naumov" + + I canged number 2 of his fixes to be equal to configure.in + (-O3 is the highest official supportes optimization option, some of + the options are superfluous (because they are included in -O3), some may + perhaps change the ABI (ABI, not API!), e.g. -malign-*). + + Quote: + 1. NOUNIXCMD = YES (don't use shell & sed) + 2. CC_OPTS are set to produce optimized code. Somewhat faster. + 3. frontend_sources & lib_sources are now fixed. + GNU Make version 3.79.1 croaked about recursive variable. + 4. ASFLAGS are correctly set, 'make -fMakefile.unix UNAME=MSDOS HAVE_NASM=YES' + works smoothly (if you have nasm.exe, of course :)) + +2001-10-20 16:28 aleidinger + + * Dll/Makefile.mingw32: + + Submitted by: "Vladislav Naumov" + + Quote: + This makefile compiles lame_enc.dll with mingw32 (and possibly cygwin) + Of course, you must first build ../libmp3lame/libmp3lame.a. + liblame_enc.a can be used to link the lame_enc.dll to your programs. + Tested with EAC 0.9pb9 (my own favorite, http://www.exactaudiocopy.de/). + +2001-10-19 17:39 bouvigne + + * libmp3lame/VbrTag.c: + + headering... + +2001-10-18 19:55 bouvigne + + * doc/html/switchs.html, frontend/parse.c: + + documenting...hopefully nearly finished + +2001-10-17 19:29 robert + + * frontend/main.c: + + patch by Gian-Carlo Pascutto + + I saw someone reported a problem with my --nogapout + switch on the mailinglist. I have done a quick attempt + to fix the problems (and address another potential one). + + I haven't actually tested the fixes, but I'm reasonably + sure they are correct, or at least they show how to + address the problem. + +2001-10-17 13:23 roelvdb + + * libmp3lame/VbrTag.c: + + after discussing with Gabriel added some more AQ flag refinements (--athonly,--noath,--scale-*, free format) + + and + + made #define MAXFRAMESIZE 2880, because LAME used to fill the freeformat 640 LAME Tag with junk at the end. + +2001-10-17 11:31 aleidinger + + * configMS.h: + + fix VERSION after last commit + +2001-10-17 01:41 roelvdb + + * libmp3lame/VbrTag.c: + + added overflow protection to that lowpass field in the LAME Tag, just in case someone enters a very high lowpass value. + +2001-10-17 01:18 roelvdb + + * libmp3lame/lame.c: + + 44.1kHz: + instead of "transition band: 22228 Hz - 22761 Hz" lowpass filter, + "-b320 -a" (mono) will now give "transition band: 21517 Hz - 22050 Hz" + (as in the stereo case) + + likewise on other samplerates. I can imagine this can be done in a much more intelligent fashion. + + also commented out a bit of similar code that seems obsolete now? + +2001-10-16 18:49 bouvigne + + * doc/html/switchs.html: + + documenting - not finished + +2001-10-16 18:07 afaber + + * configMS.h, include/lame.h, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/fft.c, libmp3lame/fft.h, + libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/util.h: + + Fixed some compiler warnings (mainly differences between function declaration and definition) + +2001-10-16 15:00 roelvdb + + * libmp3lame/VbrTag.c: + + added the needed "else", fixed lowpass, added -V0/V1, --nores, -k, ... + +2001-10-16 10:35 bouvigne + + * doc/html/history.html: + + history + +2001-10-15 13:44 roelvdb + + * libmp3lame/VbrTag.c: + + fixed a wrong bracket causing >=256 CBR not to be AQ + added ABR>=256 S as AQ, consistent with CBR >=256S + +2001-10-13 19:00 markt + + * testcase.mp3: + + updated testcases + +2001-10-13 14:02 aleidinger + + * include/lame.h, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.c: + + add --scale-l and --scale-r options + + Requested by: fasttimes@mochamail.com + Written by: mp3gain@hotmail.com + +2001-10-13 14:00 aleidinger + + * doc/man/lame.1: + + update from "lame --longhelp" + +2001-10-13 14:00 aleidinger + + * USAGE, doc/html/switchs.html: + + add --scale-l, --scale-r + +2001-10-12 18:39 bouvigne + + * doc/html/: index.html, switchs.html: + + a few doc updates - not yet finished + +2001-10-11 20:06 bouvigne + + * USAGE, doc/html/basic.html, doc/html/examples.html, + doc/html/history.html, doc/html/id3.html, doc/html/modes.html, + doc/html/node6.html, doc/html/switchs.html: + + [no log message] + +2001-10-11 12:21 aleidinger + + * libmp3lame/: encoder.c, util.h: + + fix misunderstanding of gfc->padding + +2001-10-10 02:17 roelvdb + + * libmp3lame/: VbrTag.c, lame.c: + + consequence, it's "LAME Tag", longhelp said Xing header + +2001-10-10 02:15 roelvdb + + * frontend/parse.c: + + consequence, it's "LAME Tag" + +2001-10-10 02:00 roelvdb + + * frontend/main.c: + + added 13 " if (silent < 10) "s to make "lame --decode --quiet" really silent. there's still a LF I can't locate though... + +2001-10-10 01:42 roelvdb + + * Dll/BladeMP3EncDLL.c: + + removed experimental X from --r3mix + +2001-10-09 23:09 roelvdb + + * libmp3lame/VbrTag.c: + + adds delays/padding to tag, no range check and tested exclusively on windows + +2001-10-09 22:34 roelvdb + + * frontend/parse.c: + + test commit CVS to fix --r3mix size increase (robert identified is as -X being used) + +2001-10-09 14:30 aleidinger + + * libmp3lame/version.h: + + bump alpha version + +2001-10-09 14:26 aleidinger + + * Dll/BladeMP3EncDLL.c, frontend/parse.c, libmp3lame/VbrTag.c, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/util.h: + + Use the official enum names from lame.h instead of numbers or defines. + +2001-10-08 12:54 bouvigne + + * libmp3lame/util.c: + + athtype fix + +2001-10-06 19:25 markt + + * include/lame.h: + + added notes about scaling. there are some inconsistencies in + the API: + + lame_encode_buffer() takes short int as input, range +/- 32768 + lame_encode_float() takes float, but data must be in the range + +/- 32768 + lame_encode_double() takes double, but data must be in the range + +/- 32768 + + lame_encode_int() takes int, but data must be in the range of 'int' + for 32bit ints, this is +/- 2147483684 + +2001-10-06 19:17 markt + + * frontend/get_audio.c: + + updated error messages we now support 8,16,24 and 32 bit input + +2001-10-06 19:05 markt + + * frontend/get_audio.c, frontend/gtkanal.c, frontend/parse.c, + include/lame.h, libmp3lame/lame.c: + + added support for 24 and 32 bit when not using libsndfile. + jd had already added the code to do this, just had to make + the libsndfile --bitwidth option available when not using + libsndfile. Also updated unpack_read_samples to support 32bit. + + Could not test this since I dont have any 24 bit files, and + sox cant seem to create them. + +2001-10-05 22:43 robert + + * libmp3lame/: lame.c, machine.h, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + using -Xn similar to the old code to select different noise measurings with + the newer VBR code. the actual mapping is not final yet. + +2001-10-05 13:00 bouvigne + + * libmp3lame/util.c: + + ath 4 switches to ath 2 in cbr mode + +2001-10-05 12:59 bouvigne + + * libmp3lame/lame.c: + + made NsPsytune stopping using ath0 as default, as everyone is overriding the athwhen using nspsytune + +2001-10-05 12:20 bouvigne + + * Makefile.MSVC, libmp3lame/libmp3lame.dsp: + + makefile.msvc and projects on par? + +2001-10-04 10:01 aleidinger + + * libmp3lame/: VbrTag.c, VbrTag.h: + + fixes for Solaris 8 / add missing include + +2001-10-02 16:02 markt + + * frontend/: main.c, parse.c: + + added nogap patch from Gian-Carlo Pascutto. + + lame --nogapout --nogap file1.wav file2.wav file3.wav ... + + untested. + +2001-10-02 03:54 markt + + * configure: + + ran autoconf to make a new configure script + +2001-10-02 03:53 markt + + * INSTALL, configure.in, frontend/main.c, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/vorbis_interface.c: + + split Vorbis support into two pieces: + + 1. + HAVE_VORBIS (decoding support). This code still works! + (at least it compiles - I have't actually run it). + Can be enabled with ./configure --with-vorbis. Changed the + default in configure.in to define HAVE_VORBIS + + 2. + HAVE_VORBIS_ENCODER + This is the code which hasn't compiled since Vorbis beta1. + Mainly because how you specify varous encoding "modes" has been + changed. It's probably not to much work to get this working, + but there is no reason for this to be in LAME. + +2001-10-02 00:00 markt + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + lame.c: + + Music CRC computed on the fly. Code stubs in place for + decoding on the fly. + +2001-10-01 23:02 markt + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + lame.c, util.h: + + started work to put in the ability to compute MusicCRC on + the fly, as well as decoding on the fly. + +2001-09-30 20:36 robert + + * frontend/parse.c, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/set_get.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + removed some unused variable + +2001-09-28 21:29 markt + + * frontend/main.c: + + cpu affinity back to #define _WIN32 + +2001-09-28 21:13 markt + + * frontend/main.c: + + process affinity patch is back + +2001-09-28 20:46 markt + + * USAGE: + + more small updated to USAGE + +2001-09-28 20:38 markt + + * USAGE: + + updated USAGE to reflect Dmitry's -B comments + +2001-09-28 12:04 bouvigne + + * Makefile.MSVC: + + harmonization between makefile and project + +2001-09-27 13:33 bouvigne + + * libmp3lame/libmp3lame.dsp: + + 3dnow fft assembly + +2001-09-21 04:50 markt + + * testcase.mp3, frontend/main.c: + + updated testcases (lowpass added to Info tag?) + +2001-09-21 04:03 markt + + * frontend/main.c: + + disabled CPU affinity code. + should only be in a #ifdef NT-system, but I dont know what + the ifdef should be. + +2001-09-20 08:38 bouvigne + + * libmp3lame/libmp3lame.dsp, mpglib/mpglib.dsp: + + corrected dsp files for VC++. Should work also under VC5, but not tested. Please report success/error + +2001-09-20 07:15 bouvigne + + * libmp3lame/: VbrTag.c, lame.c: + + default lowpass stored in info tag + +2001-09-19 14:32 markt + + * testcase.mp3: + + updated testcase.mp3 + +2001-09-18 13:37 aleidinger + + * libmp3lame/util.c: + + Fix memory hole (allocation from psymodel_init()). + Found by: Michael Fink + +2001-09-17 23:54 markt + + * libmp3lame/: VbrTag.c, util.c: + + moved a 1M array from stack to heap in VbrTag.c + + Some OS, when launching LAME on a seperate thread, + allocate a tine (128K?) stack. moving this to the heap + is an ugly solution (requires a malloc() and free()) + but lets see if it fixes the reported segfaults. + +2001-09-17 21:17 markt + + * frontend/main.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/lame.c, libmp3lame/util.c: + + more code related to putting encoder padding into VBR tag + +2001-09-17 20:05 markt + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/encoder.h, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c: + + added new call to API, + lame_get_encoder_padding() + which returns the amount of padding appended to the input + during encoding. + +2001-09-17 19:15 markt + + * libmp3lame/util.c: + + moved MSVC cpu affinity code to the top of disable_FPE() + +2001-09-15 09:57 aleidinger + + * configure: + + regen + +2001-09-15 09:49 aleidinger + + * configure.in: + + Bugfix for libffm (Alpha architecture). + Submitted by: Simon Burge + +2001-09-14 17:37 markt + + * HACKING, README: + + added a note about LAME being threadsave to the HACKING file. + +2001-09-14 17:18 markt + + * libmp3lame/util.c: + + put Todd Richmond's EAC/lame SMP fix in util.c, + with all the messy code for setting floating point exceptions. + I put this in the + #if defined(_MSC_VER) + block, so it should only affect people using MSVC. + +2001-09-11 07:47 potsticker + + * libmp3lame/VbrTag.c: + + Changed id string from 'Xing' to 'Info' for CBR files only + +2001-09-08 18:39 potsticker + + * libmp3lame/VbrTag.h, frontend/main.c: + + Don't write Lame Tag status message if --quiet + +2001-09-08 18:35 potsticker + + * libmp3lame/VbrTag.c: + + Don't write Lame Tag status message if --quiet + +2001-09-08 18:27 potsticker + + * libmp3lame/: VbrTag.c, VbrTag.h: + + Don't write Lame Tag status message if --quiet + +2001-09-07 23:42 potsticker + + * libmp3lame/VbrTag.c, libmp3lame/lame.c, frontend/parse.c: + + Write Lame Tag for all files (unless -t switch used) + +2001-09-04 00:06 potsticker + + * libmp3lame/VbrTag.c: + + Implemented most of Lame Tag rev 0 (but no 'replay gain' yet) + +2001-09-03 23:45 potsticker + + * libmp3lame/: VbrTag.c, VbrTag.h: + + Implemented most of Lame Tag rev 0 (but no 'replay gain' yet) + +2001-09-03 23:43 potsticker + + * libmp3lame/id3tag.h: + + Moved some macro definitions into id3tag.h (referenced in VbrTag.c) + +2001-09-03 20:56 robert + + * libmp3lame/id3tag.c: + + cr/lf patch + +2001-09-02 20:07 potsticker + + * libmp3lame/: id3tag.h, id3tag.c: + + Moved some macro definitions into id3tag.h (referenced in VbrTag.c) + +2001-08-31 18:41 markt + + * libmp3lame/util.c: + + lowered tolerence in an assert() in the lowpass filtering + routine. + +2001-08-31 08:17 bouvigne + + * libmp3lame/: VbrTag.c, util.h: + + I hope it's fixed now + +2001-08-29 20:08 bouvigne + + * Dll/BladeMP3EncDLL.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/version.c: + + first implementation of lame Xvbr tag from J Dee + +2001-08-28 18:51 markt + + * API, HACKING, frontend/parse.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c: + + msfix changes. forgot to commit them yesterday + +2001-08-28 17:06 aleidinger + + * Makefile.unix: + + OS/2 mods from slaughter@malaconet.org (in principle, I had to apply them by hand and modified it a little bit) + +2001-08-28 15:41 aleidinger + + * configure: + + oops... wrong gtk-config + +2001-08-27 21:06 aleidinger + + * configure: + + regen (+update to automake 1.5) + +2001-08-27 21:04 aleidinger + + * aclocal.m4, Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.am, mpglib/Makefile.in: + + update to automake 1.5 + +2001-08-27 21:04 aleidinger + + * Makefile.unix: + + USE_FFT3DN died some time ago + +2001-08-27 21:03 aleidinger + + * Makefile.am: + + fixes for the update and diff target if you build in a seperate directory + +2001-08-27 21:01 aleidinger + + * frontend/main.c: + + Bump MAX_NOGAP from 20 to 40, I wanted to make 34 gapless mp3s. + +2001-08-27 20:59 aleidinger + + * Makefile.am.global, config.guess, config.sub, depcomp, missing, + mkinstalldirs, misc/depcomp, mpglib/depcomp: + + update to automake 1.5 + +2001-08-27 20:56 aleidinger + + * DEFINES, Makefile.B32, Makefile.MSVC, Dll/MP3EncDll.dsp, + libmp3lame/libmp3lame.dsp, libmp3lame/vorbis_interface.c: + + remove USE_FFT3DN, this define died some time ago + +2001-08-27 20:55 aleidinger + + * configure.in: + + remove --malign-double completely + +2001-08-27 20:52 aleidinger + + * libmp3lame/fft.c: + + USE_FFT3DN -> HAVE_NASM + +2001-08-27 20:50 aleidinger + + * lame.spec.in: + + - Build and include docs and libs correctly + - Build extra programs + + Submitted by: Markus Linnala + + Note: + I didn't have a rpm based system, if this breaks feel free + to revert my commit, I'm at a "commit what isn't obviously + broken and seems to be a good idea" run at the moment. + +2001-08-27 20:49 aleidinger + + * doc/html/switchs.html, frontend/parse.c, USAGE: + + - OS/2 priority control + Submitted by: "DoC" (with minor changes by me) + +2001-08-27 16:40 markt + + * doc/man/lame.1, misc/Lame.vbs: + + typo in man page fixed, new Lame.vbs from + "Ralf Kempkens" + +2001-08-26 19:01 markt + + * configure.in: + + removed -malign-double, based on Klemm's email. + +2001-08-26 18:59 markt + + * configure.in: + + some missing quotes for AmigaOS section of configure.in, + submitted by Fredrik Mellstrom + + (I cant beieve there are still people out there using + an amiga :-) + +2001-08-26 18:38 markt + + * mpglib/: interface.c, mpglib.h: + + replaced "look_for_xing" variable with more descriptive name + "sync_bitstream". + +2001-08-21 19:48 bouvigne + + * frontend/parse.c: + + switching --vbr-new to mtrh + +2001-08-21 08:57 viral + + * debian/: changelog, control, lame-dev.docs, lame.docs, rules: + + Debian packaging modifications. + +2001-08-20 22:26 afaber + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Updated new R3Mix settings, use lame get/set function and version info + so I got rid of the version.h and lame_global_flag.h include files + +2001-08-20 20:54 robert + + * doc/html/contributors.html: + + adding Darin Morrison (author of dm presets) + +2001-08-16 08:21 robert + + * misc/abx.c: + + update of abx.c by Frank Klemm + +2001-08-15 21:58 robert + + * frontend/parse.c, libmp3lame/lame.c: + + making -Z a truely toggling switch + reordering the longhelp options list + dropping --extrahelp + +2001-08-15 00:37 robert + + * libmp3lame/lame.c: + + dropped a nagging message for --vbr-mtrh (nspsytune tuned for ...) + +2001-08-15 00:12 robert + + * frontend/parse.c, libmp3lame/util.c: + + update for --r3mix by Roel + +2001-08-14 21:46 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize_pvt.c, + libmp3lame/util.h, libmp3lame/version.h: + + some good presets tuned by Dibrom after die hard listening tests + --dm-preset {standard,xtreme,insane,metal} + and a switch to modify the --ns-treble setting for sfb21 by + --ns-sfb21 x + +2001-08-08 10:52 aleidinger + + * configure: + + regen + +2001-08-08 10:51 aleidinger + + * configure.in: + + - remove optimizations which get already switched on by -O2 or better + - new experimental optimizations + - bump version to 3.90 + +2001-08-08 10:50 aleidinger + + * configMS.h: + + bump version to 3.90 + +2001-08-07 20:41 afaber + + * libmp3lame/libmp3lame.dsp: + + Added NASM release build option + +2001-08-02 18:42 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, + MP3EncDll.dsp: + + Added NASM build option, added Very High Quality option + +2001-08-01 21:45 robert + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/quantize_pvt.c, + libmp3lame/set_get.c, libmp3lame/version.h: + + BUG fix in "on_pe", was allocating often more than the absolute limit of 4095 bits per granule + attention: testcases are most likely broken now! + +2001-07-26 23:05 robert + + * libmp3lame/: lame.c, psymodel.c, vbrquantize.c, version.h: + + VBR mtrh related, bring --remix near to --r3mix bitrate wise + +2001-07-25 20:19 robert + + * frontend/main.c: + + Michel SUCH, wildcard expansion for nogap using the OS/2 shell + +2001-07-24 12:13 aleidinger + + * configure: + + regen + +2001-07-24 12:12 aleidinger + + * configure.in: + + gcc 3.0 fix from Daniel T. Chen + +2001-07-23 08:11 aleidinger + + * aclocal.m4, configure: + + update to automake 1.4-p5 + +2001-07-23 08:08 aleidinger + + * Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in, config.guess, config.sub: + + update to automake 1.4-p5 + +2001-07-23 08:05 aleidinger + + * Makefile.am.global: + + update to automake 1.4-p5 + +2001-07-22 19:24 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + small fixes + +2001-07-22 06:37 jd- + + * libmp3lame/encoder.c: + + Pushed the maximum auto-level adjustment of the ATH from 20 dB to 32 dB + +2001-07-20 23:56 robert + + * libmp3lame/quantize.c: + + small speed up for --vbr-old + +2001-07-20 01:01 robert + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, vbrquantize.c, + version.h: + + 1) defaulted the old -Y code for --vbr-old + 2) new behaviour of -Y: turns off sfb21 noise shaping (VBR) + 3) some more tunings for --vbr-old + +2001-07-19 11:36 aleidinger + + * configure: + + regen + +2001-07-19 11:35 aleidinger + + * configure.in: + + - removed useless (because already handled by Cygwin) MS-DOS case + - bug fixes for alpha*-dec-osf*, *sgi-irix* and sparc*-sunos4* + - print a "please contact us" message for sparc*-sunos4* and *beos + (theses parts of configure.in are perhaps not neccessary) + +2001-07-18 20:16 robert + + * frontend/parse.c, libmp3lame/vbrquantize.c: + + vbr-mtrh related: encode sfb21, may bloat on heavy metal music + +2001-07-18 20:14 robert + + * misc/abx.c: + + update by Frank + +2001-07-16 19:35 robert + + * Dll/BladeMP3EncDLL.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/version.h: + + adding a new switch --allshort + this one forces LAME to use short blocks on every granule + useful for testing the short block masking abilities + +2001-07-13 22:37 robert + + * libmp3lame/: psymodel.c, quantize.c, util.h, version.h: + + first try to fix the short block threshold calculation BUG + this patch tries to resolve the shortcommings for the short block + threshold calculation using VBR. Applying this patch for CBR/ABR + would break the testcases. It should not affect the vanilla --nspsy... + too, maybe later. + +2001-07-07 19:54 bouvigne + + * libmp3lame/reservoir.c: + + maxmp3buf was beeing ignored + +2001-07-05 21:25 robert + + * libmp3lame/quantize.c: + + fixing the assertion failures mentioned by Albert Faber + +2001-07-05 15:56 markt + + * configure: + + regenerated configure + +2001-07-05 15:55 markt + + * configure.in: + + updated gcc 2.96 check to use -O instead of -O1 + +2001-07-05 15:55 markt + + * configure: + + [no log message] + +2001-07-05 15:54 markt + + * configure.in: + + gcc 2.96 check + +2001-07-05 15:53 markt + + * libmp3lame/version.h: + + updated repository to 3.90alpha + +2001-07-05 15:35 markt + + * doc/html/history.html: + + updateded history file from web page cvs repository + +2001-07-05 15:32 markt + + * ChangeLog: + + update + +2001-07-05 15:27 markt + + * libmp3lame/version.h: + + updated to 3.89beta + +2001-07-02 21:45 robert + + * libmp3lame/quantize.c: + + bug fix for --nspsytune + minimum bits allocated was too low, resulting in assertion failures + +2001-07-02 21:08 robert + + * libmp3lame/lame.c: + + changing --vbr-new noise measuring back to its usual one + +2001-07-01 20:36 markt + + * libmp3lame/psymodel.c: + + unbreak CBR testcases. + +2001-07-01 20:04 markt + + * frontend/: get_audio.c, main.h, parse.c: + + patch from Nick Duffek + for signed/unsigned and bitwidth options. + +2001-07-01 16:48 robert + + * libmp3lame/lame.c: + + defaulting --vbr-mtrh to -q2 = -h + +2001-07-01 13:11 robert + + * libmp3lame/lame.c: + + allow --vbr-{old,new} to select between different ATH autoadjust types too + +2001-07-01 11:50 robert + + * libmp3lame/: lame.c, set_get.c: + + nspsytune related: + now it is possible to turn the scalefac_feature off again giving + --nspsytune -Z + the change was necessary, because of the hard coded -Z + +2001-07-01 05:24 jd- + + * libmp3lame/: encoder.c, lame.c, psymodel.c, util.h: + + Restructured ATH auto-leveling code to fix bug for "--adapt-thres-type 1"; + relaxed tuning for "--adapt-thres-type 2" for compromise with "--athtype 3" + (the previous bit rate is still available with "--adapt-thres-level -1.25") + +2001-06-30 16:45 robert + + * Makefile.MSVC: + + fix for compiling mp3x on windows using Makefile.MSVC + +2001-06-30 16:40 robert + + * frontend/parse.c: + + fix for compiling mp3x on windows using Makefile.MSVC + +2001-06-30 00:26 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/util.h, libmp3lame/vbrquantize.c: + + 2 new modes for --vbr-mtrh available by different -q n selections: + -q0 truely max noise + -q1 almost max noise + +2001-06-29 20:58 robert + + * libmp3lame/set_get.c: + + revive --nssafejoint --ns-{alto,treble,bass} + lame_set_exp_nspsytune is *not an on/off switch* + +2001-06-29 15:23 markt + + * configure, configure.in, libmp3lame/lame.c: + + patch for configure.in, replaced a bash specific loop, + from Oswald Buddenhagen + +2001-06-27 15:47 aleidinger + + * configure: + + regen + +2001-06-27 15:46 aleidinger + + * configure.in: + + some hardware specific optimization options for gcc + +2001-06-27 14:53 aleidinger + + * libmp3lame/i386/Makefile.in: + + regen + +2001-06-27 14:53 aleidinger + + * libmp3lame/i386/Makefile.am: + + this is nasty, I want native nasm support in libtool, at least it works for me (sort of) + +2001-06-27 14:11 aleidinger + + * libmp3lame/: Makefile.in, i386/Makefile.in: + + regen + +2001-06-27 14:11 aleidinger + + * libmp3lame/: Makefile.am, i386/Makefile.am: + + go back to let libtool compile liblameasmroutines, the static case was broken, now the libtool v1.4 case may be broken + +2001-06-26 11:38 aleidinger + + * configure: + + regen + +2001-06-26 11:36 aleidinger + + * configure.in: + + make the use of nasm a configure option + +2001-06-25 02:14 cisc + + * frontend/main.c: + + Include portableio.h for the WriteBytes() and WriteBytesSwapped() functions. + +2001-06-24 21:01 robert + + * lame.bat: + + some comments updated + +2001-06-24 16:47 robert + + * doc/html/contributors.html, libmp3lame/version.h: + + adding two more contributors + +2001-06-24 15:58 robert + + * Makefile.MSVC: + + FLOAT8=float for IC + +2001-06-24 15:57 robert + + * Makefile.B32: + + let it work again + +2001-06-24 02:04 robert + + * libmp3lame/: quantize.c, quantize.h, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + BUG fix in inc_subblock gain, was amplifying at the wrong place + this fix may break the testcases + some unused parameters removed + +2001-06-23 18:26 robert + + * Dll/MP3EncDll.dsp: + + patch for DLL Project file by Dmitry + +2001-06-23 17:56 robert + + * frontend/lametime.c, frontend/parse.c, mpglib/common.c, + Makefile.MSVC: + + some fixes needed by the Borland Compiler BCC, first attempt to support BCC with Makefile.MSVC, DLL not supported yet, MP1 MP2 reencoding does not work with BCCcd lame (why?) + +2001-06-23 12:19 robert + + * libmp3lame/quantize_pvt.c: + + fix letting Borland C++ compiler getting thru' again, Makefile.B32 is *not uptodate* + +2001-06-23 12:15 robert + + * frontend/get_audio.c: + + BUG fix for mp1 and mp2 input, fixes problem introduced in Revision 1.63 + +2001-06-22 08:55 aleidinger + + * ChangeLog: + + update changelog + +2001-06-22 08:49 aleidinger + + * Makefile.am: + + regen + +2001-06-22 08:48 aleidinger + + * Makefile.in: + + we have a test subdir in cvs, force the test target to be out of date at every invocation of make + +2001-06-21 20:40 bouvigne + + * libmp3lame/reservoir.c: + + change of the max frame size + +2001-06-19 04:46 markt + + * misc/: Lame.vbs, lameGUI.html: + + updates from "Ralf Kempkens" + +2001-06-18 18:51 markt + + * TODO, frontend/get_audio.c, frontend/get_audio.h, + frontend/main.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/set_get.c, mpglib/interface.c, mpglib/mpglib.h: + + added two new functions to return number of PCM samples buffererd + but not encoded, and the number of bytes of mp3 data buffered but + not output. also added some comments to mpglib/interface.c to + make it easier to tell it to look for Xing headers in the middle + of a bitstream. + +2001-06-16 00:40 robert + + * Makefile.MSVC, Makefile.unix: + + CPU feature detection for fft routines + +2001-06-16 00:39 robert + + * libmp3lame/: fft.c, util.h: + + CPU feature autodetection for fft routines + +2001-06-15 22:23 markt + + * TODO, frontend/main.c, include/lame.h, libmp3lame/lame.c: + + Robert's fix to init histgram data with --nogap. + + lame_reinit_bitstream() renamed lame_init_bitstream(), and + it is called by lame_init_params(). It can also be called + after a call to lame_encode_flush_nogap(). + +2001-06-15 21:25 markt + + * TODO, frontend/main.c, include/lame.h, libmp3lame/lame.c: + + some fixes for VBR tags with --nogap option. + +2001-06-14 23:09 robert + + * frontend/parse.c: + + fixed stdin + +2001-06-14 00:58 robert + + * libmp3lame/version.h: + + bumped version to alpha 7 + +2001-06-14 00:43 robert + + * libmp3lame/: lame.c, psymodel.c: + + added JD's loudness approximation to Naoki's duplicated psy routine + as I defaulted JD's adapt stuff I was under the impression that he + added his code to both ones, so... + +2001-06-14 00:19 markt + + * frontend/main.c: + + fix for nogap truncation call. When processing the last + of the .wav files, we need to call lame_encode_flush() + instead of lame_encode_flush_nogap(). + +2001-06-13 22:46 robert + + * frontend/parse.c: + + LFN support for Win32: realized that it would be a good idea to release the search file handle after searching the filename + +2001-06-13 08:44 aleidinger + + * Makefile.DJGPP: + + nasm fix + +2001-06-12 21:58 robert + + * frontend/parse.c: + + long file name support for Win32 systems + works under Win95 using Intel compiler 4.5 / MSVC 4.2 + not tested under NT, and not much tested anyway ;-) + +2001-06-12 21:03 robert + + * Makefile.unix: + + seems to be forgotten by the last committ + +2001-06-12 20:32 markt + + * libmp3lame/bitstream.c: + + old crc code removed from bitstream.c. + I had added this in when looking for the xing/crc bug + +2001-06-12 12:47 aleidinger + + * frontend/lametime.c: + + fix cygwin build, sort some includes + +2001-06-12 12:45 aleidinger + + * libmp3lame/: Makefile.in, i386/Makefile.in: + + regen + +2001-06-12 12:45 aleidinger + + * libmp3lame/: Makefile.am, i386/Makefile.am: + + do not use libtool for the asm lib, libtool did not know about nasm + +2001-06-12 12:42 aleidinger + + * configure, frontend/Makefile.in: + + regen + +2001-06-12 12:42 aleidinger + + * configure.in: + + - enable shared lib + - disable asm routines + - fix build of asm routines in the win32 case + +2001-06-12 12:41 aleidinger + + * frontend/Makefile.am: + + statically link libmp3lame to the frondends + +2001-06-12 05:27 markt + + * libmp3lame/lame.c: + + removed CRC error message + +2001-06-12 05:27 markt + + * libmp3lame/VbrTag.c: + + fix for Xing/CRC problem. + + Xing toc data must start directly after sideinfo data, assuming + no CRC. If CRC is set, then the Xing toc data must *still* start + in the same location (since original Xing demo code does not + check for CRC and modify the toc offset). + +2001-06-12 04:51 markt + + * libmp3lame/: bitstream.c, lame.c: + + put old CRC routine back in (but disabled) + +2001-06-12 03:35 markt + + * Dll/BladeMP3EncDLL.c: + + added some comments about the DLL's non-standard use of libmp3lame.a + +2001-06-12 03:31 markt + + * libmp3lame/Makefile.am: + + Robert created lame_global_flags.h, + so I'm adding it to Makefile.am, in the "noinst" section. + +2001-06-12 00:48 robert + + * Dll/BladeMP3EncDLL.c, libmp3lame/lame_global_flags.h, + libmp3lame/quantize.c, libmp3lame/util.h: + + - fixed Makefile.unix to let mp3rtp compile again (does it still work?) + - had to move lame_global_flags structure into a file of its own, + because the Dll compiled but did not link anymore. + Now it works again, tested on Win95 using Makefile.MSVC + +2001-06-11 23:42 markt + + * Dll/BladeMP3EncDLL.c, include/lame.h, libmp3lame/set_get.c, + libmp3lame/util.h: + + committed Robert's patch. lame_global_flags is gone :-) + +2001-06-11 22:07 robert + + * frontend/main.c: + + some more new API things + +2001-06-11 18:49 markt + + * frontend/: gtkanal.c, parse.c: + + converted rest of frontend code over to "new api" + +2001-06-11 16:35 markt + + * frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, + libmp3lame/mpglib_interface.c, mpglib/interface.c: + + Tracked down a bug in lame_decoder. It was not correctly + flushing the internal mpglib buffers when it hit EOF. + + Problem was most severe with low bitrate example. It the frame size + was 32 bytes, only the first 1/3 of the file would be decoded + and the reamining 2/3 of the entire file would be buffered + inside mpglib. + +2001-06-10 20:35 robert + + * Dll/BladeMP3EncDLL.c, include/lame.h: + + making the old VBR default in preparation for the next release + +2001-06-10 19:19 markt + + * API, USAGE, misc/Lame.vbs, misc/lameGUI.html: + + added new version of Lame.vbs from "Ralf Kempkens" + including a GUI/HTML interface. + +2001-06-08 21:40 markt + + * frontend/: get_audio.c, gtkanal.c, main.c, main.h: + + updated some comments related to restructering main.c + for the --nogap option + +2001-06-08 21:29 markt + + * API, TODO, frontend/get_audio.c, frontend/gtkanal.c, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/parse.h, frontend/timestatus.c, + include/lame.h, libmp3lame/lame.c, libmp3lame/set_get.c: + + preliminary --nogap option added. + + --nogap file1 file2 file3 + + and it produces file1.mp3 file2.mp3 file3.mp3 + + problems: no id3tags, no vbr tags. + +2001-06-08 18:59 markt + + * test/lametest.py: + + fix so lametest.py doesn't crash if lame does not create an + output file. + +2001-06-08 00:00 markt + + * frontend/main.c, libmp3lame/bitstream.c: + + fixed bug with lame_encode_flush_nogap routine + +2001-06-07 22:12 robert + + * DEFINES, TODO: + + [no log message] + +2001-06-07 22:06 robert + + * frontend/parse.c, libmp3lame/encoder.c: + + --ath-adjust 1 (Gaby's original code) was disabled, any reasons for that JD? + +2001-06-07 19:14 markt + + * HACKING, frontend/get_audio.c, frontend/gtkanal.c, + frontend/parse.c, frontend/timestatus.c, libmp3lame/lame.c: + + started updating frontend code to use the new API. + +2001-06-07 14:02 aleidinger + + * libmp3lame/fft.c: + + unbreak (at least it compiles), more work needed + +2001-06-07 10:11 jd- + + * libmp3lame/encoder.c: + + Allow ATH auto-adjust code to begin at the minimum value on the leading frame + +2001-06-07 08:40 jd- + + * libmp3lame/encoder.c: + + Restored some ATH auto-adjust indentation and comments (altered since 3.88 + in a code clean up) + +2001-06-07 06:06 pgubanov + + * libmp3lame/fft.c: + + Choose asm-optimized FHT version if ARCH_X86 defined in fft.c + +2001-06-05 22:13 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Added R3Mix quality setting + +2001-06-05 19:19 aleidinger + + * doc/html/history.html: + + sync my entry with the one at the webpages + +2001-06-05 00:39 markt + + * INSTALL, TODO: + + added note about mpglib i-stereo bug in TODO list. + fixed typo in INSTALL file + +2001-06-04 23:57 markt + + * TODO, libmp3lame/reservoir.c: + + documented some variables in reservoir.c. + + Current status is: + + maxframesize = no restrictions + + if strict_ISO is defined, we use Gaby's less restrictive + interpretation of the standard. + + see TODO version 1.30 for a user who has a hardware player which + cannot handle 320kbps frames if the bit reservoir is used. + + I guess the final verdict is tough luck :-) + +2001-06-04 23:29 markt + + * API, HACKING, frontend/parse.c, libmp3lame/lame.c: + + + print error message and fail if user selects error_protection + (since this is currently broken) + + added some comments to HACKING on how to add a new option. + + updated API to reflect that all lame_set/get functions are now + working. + +2001-06-04 23:10 markt + + * include/lame.h, libmp3lame/lame.c: + + updated comments about lame_encode_flush_nogap() + +2001-06-04 23:08 markt + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c: + + added lame_encode_flush_nogap(). + + This routine will flush all internal mp3 buffers, and pad the + last frame with ancillary data so it is a complete mp3 frame. + + It will then set ResvSize to 0, so we can continue encoding. + + after a call to lame_encode_flush_nogap(), if we close + the mp3 file and open a new one for the future data, + then the two mp3 files should play back 'gapless' + if they are first concatenated together. + +2001-06-04 19:59 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/version.h: + + tweaks to VBR + +2001-06-04 10:02 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Extended interface with VBR method selection + +2001-06-04 10:01 afaber + + * mpglib/layer3.c: + + Removed exit call(s) in error conditions, since these errors seems to be good recoverable + +2001-06-04 01:54 robert + + * libmp3lame/: lame.c, psymodel.c, quantize.c, util.h: + + small tweaks to the VBR codes + +2001-06-02 20:22 robert + + * libmp3lame/: lame.c, quantize.c, util.h, version.h: + + started different bit-pressure strategies (VBR) + +2001-06-02 15:26 aleidinger + + * configure: + + regen + +2001-06-02 15:25 aleidinger + + * configure.in: + + force cygwin users to use "CC=gcc ./configure" + +2001-06-01 19:40 glessard + + * frontend/get_audio.c: + + Added support for non-compressed AIFF-C files in parse_aiff_header(). + +2001-05-30 01:38 markt + + * configure, configure.in: + + removed -pedantic gcc option. + From the gcc man page: "There is no reason to use this + option; it exists only to satisfy pedants". + + And there is a reason not to use it: It causes people to + send me email asking if all the warning messages about c++ comments are ok. + +2001-05-29 22:14 robert + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/set_get.c: + + quick fix for a typo that turned off auto adjust code by accident, sorry + +2001-05-27 18:58 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/version.h: + + made JD's ATH adapt stuff default for --vbr-mtrh + some typings + changed bitpressure strategy for VBR a bit + +2001-05-26 21:31 jd- + + * libmp3lame/util.c: + + use more digestible code in ATHformula_jd for a pre-release compiler bundled + with a popular Linux distribution + +2001-05-26 16:17 robert + + * libmp3lame/lame.c: + + let the user select -qx for --vbr-mtrh, just to avoid useless e-mails + +2001-05-24 22:25 robert + + * libmp3lame/: lame.c, quantize_pvt.c: + + just 5 minutes to add some more on the --verbose printing side + +2001-05-21 18:55 bouvigne + + * doc/html/history.html: + + history + +2001-05-21 18:19 bouvigne + + * libmp3lame/lame.c: + + update of the default lowpass value. Will probably break some testcases + +2001-05-20 20:45 robert + + * libmp3lame/: encoder.c, lame.c, util.h: + + some more --verbose output + +2001-05-19 16:16 robert + + * libmp3lame/psymodel.c: + + typo fixed + +2001-05-19 16:13 robert + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + frontend/timestatus.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/psymodel.c, libmp3lame/util.h: + + starting a very verbose print function about all internal + settings, aiming more transparency for the experienced users + +2001-05-15 01:24 robert + + * libmp3lame/: psymodel.c, quantize_pvt.c, vbrquantize.c: + + some tunings + still problems with fatboy.wav and ns.wav + +2001-05-13 20:59 bouvigne + + * libmp3lame/util.c: + + comments in the ath functions + +2001-05-13 11:33 robert + + * libmp3lame/: lame.c, psymodel.c, util.c, util.h: + + fixing tonality problem for --vbr-mtrh + +2001-05-11 23:33 robert + + * libmp3lame/quantize_pvt.c: + + trying to point out the real difference in l3xmin calculation with nspsytune and without it + +2001-05-11 22:14 robert + + * libmp3lame/lame.c: + + nspsytune & newer vbr + +2001-05-11 01:30 robert + + * frontend/get_audio.c, frontend/main.h, include/lame.h, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/version.h, test/VBR.op: + + compile fixes for Intel Compiler, dropped sfb21 early stopping for vbr-old (found differences) + +2001-05-10 19:01 aleidinger + + * include/lame.h, libmp3lame/set_get.c: + + - Make the last few set/get functions functional. + (TODO: use them in the frontend). + - Converted padding_type to an enum. + - Correct some typos. + - Adjust some lines to conform to the style of the majority of the file. + + TODO: + - Search for XXX and do appropriate actions. + - Search for typos (because of alot of cut&paste programming). + +2001-05-08 15:00 bouvigne + + * frontend/parse.c, libmp3lame/util.c: + + update of --r3mix + +2001-05-06 15:11 robert + + * libmp3lame/: lame.c, quantize.c, vbrquantize.c: + + some desperate values for the fast mtrh VBR mode + +2001-05-04 01:07 jd- + + * libmp3lame/: tools.h, util.c: + + Added "--athtype 5" to better represent higher frequencies (14 - 19 kHz). + Included supporting functions for quadratic interpolation. + +2001-05-03 20:13 robert + + * libmp3lame/: lame.c, quantize.c, util.c, util.h, vbrquantize.c: + + some VBR-codeclean-up + +2001-05-02 21:02 robert + + * misc/lame4dos.bat: + + patch by Alexander Stumpf: + - now works both with drag & drop (SFN) and from the 4DOS-Commandline (LFN) + - Using wildcards when prozessing from mp3 to mp3 caused a loop - fixed + - removed the mp3-extention test since LAME recognizes the input file fomat + correctly for several versions now (i.e. no --mp3input neccessary anymore) + +2001-05-01 22:55 robert + + * libmp3lame/version.h: + + bumped version number + +2001-05-01 22:18 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + new -q2 mode for --vbr-mtrh + +2001-05-01 20:37 bouvigne + + * libmp3lame/reservoir.c: + + change of max frame size + +2001-04-28 15:37 robert + + * libmp3lame/: encoder.c, quantize_pvt.c, util.c, vbrquantize.c: + + --vbr-mtrh uses now -Y by default, some tweaks + +2001-04-27 23:19 robert + + * libmp3lame/: psymodel.c, quantize_pvt.c, util.c, util.h: + + --experimentalY selects a different ATH adjustment + - keeps original noise floor + - affects high freqs more than low ones + +2001-04-26 23:06 cisc + + * config.guess, config.sub: + + Added MorphOS recognition to configure script. + +2001-04-26 04:38 markt + + * README.B32, TODO: + + removed mmx notes from README.B32 + +2001-04-25 16:21 aleidinger + + * configure, libmp3lame/i386/Makefile.in: + + regen + +2001-04-25 16:20 aleidinger + + * configure.in: + + bugfix for gcc version detection + +2001-04-25 16:19 aleidinger + + * libmp3lame/i386/Makefile.am: + + bugfix for non x86 architectures with installed nasm, tested by Karl Pauls on Darwin + +2001-04-25 06:59 markt + + * TODO, frontend/get_audio.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/set_get.c: + + removed 'disable_wave_header' variable from encoding library. + It is in the frontend code only. + +2001-04-24 01:38 markt + + * TODO, frontend/get_audio.c: + + added something to the TODO list. + + changed: + + "buffer[1]+i" code to "&buffer[1][i]" + + in get_audio.c. buffer[1]+i is clever, but it confused the + maintainer of EAC enough to cause him to submit it as a bug + report. + +2001-04-23 19:47 bouvigne + + * libmp3lame/: lame.c, util.c: + + [no log message] + +2001-04-22 22:57 bouvigne + + * libmp3lame/util.c: + + update of the ath functions + +2001-04-22 01:34 jd- + + * frontend/get_audio.c: + + Fixed trailing data bug introduced with the 24 bit input code + +2001-04-21 22:23 jd- + + * frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, + frontend/main.c, frontend/mp3rtp.c, include/lame.h, + libmp3lame/lame.c: + + Add 24-bit PCM waveform input capability (with or without libsndfile), + and glue code to preserve the functionality of routines that only handle + up to 16-bit data. The changes support both little and big endian + architectures. + +2001-04-17 20:04 afaber + + * libmp3lame/libmp3lame.dsp, Dll/BladeMP3EncDLL.c, + mpglib/mpglib.dsp, frontend/lame.dsp: + + Added MMX compile option + +2001-04-17 19:22 bouvigne + + * libmp3lame/util.c: + + auto adjusting ath shape for vbr on ath type 4 + +2001-04-16 21:26 bouvigne + + * libmp3lame/: encoder.c, lame.c, psymodel.c: + + wrapped a few things inside of ifdef HAVE_GTK + +2001-04-16 11:50 takehiro + + * libmp3lame/: psymodel.c, util.h: + + spread function is now packed into linear array. + it reduces memory assumption and improves cache efficienty. + +2001-04-16 08:27 takehiro + + * include/lame.h, libmp3lame/VbrTag.c: + + now try to calculate the CRC of VBR header. + +2001-04-16 07:58 takehiro + + * libmp3lame/: bitstream.c, bitstream.h: + + cleaned and improved CRC calculation method + +2001-04-13 15:13 aleidinger + + * libmp3lame/set_get.c: + + add some comments about converting int->enum + +2001-04-13 15:12 aleidinger + + * frontend/parse.c: + + use some of Marks set-functions, also without error checking (yet) + +2001-04-12 17:40 bouvigne + + * libmp3lame/: encoder.c, lame.c: + + [no log message] + +2001-04-08 07:52 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c: + + portability enchancement(from sourceforge's LAME open discussion forum). + + quantize_pvt.c: changed 1e99 into FLOAT8_MAX + machine.h: defined FLOAT8_MAX + +2001-04-04 21:58 bouvigne + + * libmp3lame/lame.c: + + update of the lowpass values for vbr rh + +2001-04-04 18:11 bouvigne + + * libmp3lame/psymodel.c: + + update of -d for joint stereo + +2001-04-01 03:22 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/set_get.c, libmp3lame/util.h: + + added an --adapt-thres-level option to allow adding an offset (in dB) + to the point below which adaptive ATH level adjustment occurs + +2001-04-01 02:11 jd- + + * include/lame.h: + + added set/get functions to include/lame.h for option --adapt-thres-type + +2001-03-31 23:44 jd- + + * frontend/parse.c, libmp3lame/set_get.c: + + added set/get functions to libmp3lame/set_get.c for option + --adapt-thres-type, and used the set function in frontend + +2001-03-30 18:43 markt + + * testcase.mp3, frontend/get_audio.c, test/lametest.py: + + updated testcase.mp3 + removed some unused code from get_audio.c + +2001-03-30 17:16 markt + + * test/lametest.py: + + delete output mp3 file before running lame. + (before, if lame crashes and does not write any output, the + script would use the old output mp3 file, and if it hadn't changed, + all tests would pass.) + +2001-03-29 18:31 cisc + + * libmp3lame/: version.c, version.h: + + Moved inclusion of lame.h to version.h for lame_version_t in prototype. + +2001-03-27 12:26 jd- + + * libmp3lame/psymodel.c: + + added --adapt-thres-type 2 (auto-level adjustment of the ATH, + with a frequency-based loudness approximation). + +2001-03-27 12:04 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/util.h: + + added option, --adapt-thres-type 2 (auto-level adjustment of the ATH + with a frequency-based loudness approximation). + +2001-03-27 10:56 aleidinger + + * configure: + + regen (do not enable vorbis by default) + +2001-03-27 10:56 aleidinger + + * configure.in: + + do not enable vorbis by default + +2001-03-26 23:02 markt + + * libmp3lame/set_get.c: + + added code to more of the lame_set/lame_get functions- + but without any error checking :-( + + Only 47 more to go! + +2001-03-26 20:46 markt + + * TODO, libmp3lame/util.c: + + dont scale the input if scale=1.0. + +2001-03-26 18:38 markt + + * TODO: + + updated TODO list with some filtering stuff + +2001-03-26 17:42 markt + + * libmp3lame/encoder.c: + + another MPEG2 bug found by: "Jiri Hajek" + + This code: + + > int sum_pe_MS = pe_MS[0][0] + pe_MS[0][1] + pe_MS[1][0] + pe_MS[1][1]; + > int sum_pe_LR = pe [0][0] + pe [0][1] + pe [1][0] + pe [1][1]; + + does not work for MPEG2. now fixed. + +2001-03-26 16:05 aleidinger + + * configure: + + regen (version bump) + +2001-03-26 16:04 aleidinger + + * configure.in: + + Welcome to 3.89 + +2001-03-26 00:38 markt + + * frontend/brhist.c: + + bug in brhist_disp_total() + + for --freeformat bmode, br_frames = 0 (why?) + so sum / br_frames would segfault. + + if br_frames == 0 , routine now just returns without printing + anything. + +2001-03-26 00:12 markt + + * TODO: + + minor editing of TODO file + +2001-03-25 23:18 markt + + * libmp3lame/version.h: + + updated version to 3.89 alpha 1 + +2001-03-25 23:16 markt + + * libmp3lame/version.h: + + updated version to 3.88beta + +2001-03-25 23:14 markt + + * API, README, TODO, libmp3lame/lame.c, libmp3lame/libmp3lame.dsp: + + made ath type 2 the default. + updated test cases + added set_get.c to libmp3lame.dsp + +2001-03-25 21:37 shibatch + + * libmp3lame/psymodel.c: + + Fixed nspsytune. + +2001-03-25 18:43 afaber + + * Dll/BladeMP3EncDLL.def, Dll/MP3EncDll.dsp, + libmp3lame/bitstream.h, libmp3lame/encoder.h, + libmp3lame/psymodel.c, libmp3lame/tables.h: + + Removed the last remainings of KLEMM_43 in order to complet the Windows DLL compilation + +2001-03-20 00:42 markt + + * libmp3lame/util.c: + + added a few more minor comments to resampling code + +2001-03-20 00:28 markt + + * libmp3lame/util.c: + + removed some cruft from blackman() filtering routine + +2001-03-19 21:26 markt + + * frontend/get_audio.c, libmp3lame/util.c, test/lametest.py: + + + Tested fixed resampling code. It seemed to work. + Added a few comments. + + Also added documentation for "-w" for the usage function in lametest.py + +2001-03-18 14:31 aleidinger + + * libmp3lame/vorbis_interface.c: + + use the new MSGF API in Vorbis + +2001-03-18 14:25 aleidinger + + * libmp3lame/vorbis_interface.c, frontend/get_audio.c: + + use the new ERRORF API in Vorbis encoding (+fixes for needed API change to lame_decode_ogg_{initfile,fromfile}()) + +2001-03-15 19:40 markt + + * libmp3lame/util.c: + + Put in fix for resampling bug in fill_buffer_resample. + + Code assumed it would be fed at least BLACKSIZE samples. + For each input buffer, the code would save the last BLACKSIZE + samples for use for the next call to fill_buffer_resample. + + If the code recieves less than blacksize samples, it will + now shift in just as many new samples as are available into + the save buffer. + + Not tested :-( + +2001-03-14 14:38 aleidinger + + * Dll/BladeMP3EncDLL.c, dshow/Encoder.cpp, dshow/Mpegac.cpp, + dshow/PropPage_adv.cpp: + + regexp: MPG_MD_(.*) -> $1 + +2001-03-14 14:38 aleidinger + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix: + + add set_get.c to the build + +2001-03-14 10:57 aleidinger + + * Makefile.in: + + regen + +2001-03-14 10:56 aleidinger + + * Makefile.am: + + do not forget Makfile.am.global at "make dist" + +2001-03-14 10:49 aleidinger + + * ChangeLog: + + update + +2001-03-14 10:40 aleidinger + + * doc/html/Makefile.in, doc/man/Makefile.in, + libmp3lame/i386/Makefile.in: + + regen with automake 1.4d instead of 1.4 + +2001-03-13 06:15 markt + + * libmp3lame/util.c: + + added assert() to resampling code + +2001-03-12 20:58 markt + + * libmp3lame/psymodel.c: + + a few more comments added to psymodel.c + +2001-03-12 20:40 markt + + * libmp3lame/: psymodel.c, tables.c: + + removed ISO TABLE reading code from psymodel.c, + and ISO psy data from tables.c + +2001-03-12 20:31 markt + + * libmp3lame/psymodel.c: + + removed shortlived MINTHMM experiment + +2001-03-12 18:52 markt + + * USAGE, configure: + + updated USAGE. + ran configuer with --enable-maintainer-mode which seems to + have touched all this .in files, sorry about that... + +2001-03-12 07:26 markt + + * API, libmp3lame/vbrquantize.c: + + a few updates to API + +2001-03-12 04:38 markt + + * frontend/get_audio.c, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/lame.c, libmp3lame/set_get.c: + + fixed a few compiler warnings and the assert in lame_get_mode(). + added NOT_SET value to MPEG_mode_e + +2001-03-11 11:25 aleidinger + + * DEFINES: + + - remove outdated entries + - add OLD_ATH_AUTO_ADJUST + +2001-03-11 11:24 aleidinger + + * Makefile.in: + + - regen from Makefile.am (testupdate target) + +2001-03-11 11:24 aleidinger + + * frontend/: depcomp, get_audio.c, gtkanal.c, main.c, mp3x.c, + parse.c, timestatus.c: + + *.c: + - use set/get functions + *** lame_set_quality(): should it check for <0 and >9 itself? (parse.c) + + depcomp: + - update (autotools) + +2001-03-11 11:23 aleidinger + + * libmp3lame/: depcomp, encoder.c, lame.c, psymodel.c, util.c, + util.h: + + libmp3lame/encoder.c: + - MPEG_mode (JOINT_STEREO) change (related to set/get functions change) + - J.D.s improvements to Gabriels ath auto adjust code (VBR) + - move ath auto adjust code into seperate function + + libmp3lame/lame.c: + - errorf/msgf/debugf changes + - MPEG_mode (JOINT_STEREO/...) change (related to set/get functions change) + - remove prototypes of set/get functions + + libmp3lame/psymodel.c: + - MPEG_mode (JOINT_STEREO/...) change (related to set/get functions change) + + libmp3lame/util.[ch]: + - new errorf/msgf/debugf implementation + + libmp3lame/depcomp: + - update (autotools) + +2001-03-11 11:22 aleidinger + + * include/lame.h: + + - set/get functions related cleanup + - errorf/msgf/debugf + +2001-03-11 11:21 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2001-03-11 11:21 aleidinger + + * libmp3lame/Makefile.am: + + - add set_get.c + +2001-03-11 11:20 aleidinger + + * libmp3lame/set_get.c: + + - set and get functions for the gfp + +2001-03-10 19:15 markt + + * libmp3lame/encoder.c: + + a little more tuning of tot_energy for ATH adjust + +2001-03-10 19:06 markt + + * libmp3lame/encoder.c: + + modified ATH adjustment code to use tot_ener returned by psy model + and not the maximum of the PCM sample values. + + We need to replace this with JD's formula. We need to decide + if this is really worth while. My preference is to take the + most conservative ATH possible, but this seems to produce too + high bitrates for VBR modes. (this may no longer be true + not that masings are computed in all scalefactor bands) + +2001-03-10 18:33 markt + + * frontend/get_audio.c: + + added 127 also, on recommendation of JD, to 8bit -> 16bit + conversion routine + +2001-03-10 18:29 markt + + * frontend/get_audio.c: + + fix from "J.D." for + 8 bit input support. + +2001-03-09 17:56 markt + + * test/lametest.py: + + 'os.pathsep' changed to 'os.sep' + + For example, on unix: + + os.pathsep = ":" - the character that seperaters search paths in + the PATH environment variable + + os.sep = "/" - the charcter that seperates directories + +2001-03-07 12:32 aleidinger + + * test/lametest.py: + + - use OS independent path seperator + +2001-03-07 12:31 aleidinger + + * DEFINES: + + - NOTABELS is now the default + +2001-03-05 20:29 markt + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c: + + code (disabled) to use minimum value when going from partition + bands to scalefactor bands (instead of average value) + +2001-03-05 18:21 markt + + * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/quantize_pvt.c: + + Noise calculation: had to switch calculation of tot_noise and + over_noise back to being done in db units. Multiply (to save + the 22 log10() function calls) was overflowing. + + updated testcases to reflect changes + +2001-03-05 01:44 markt + + * testcase.mp3: + + updated testcase.mp3 for NOTABLES code + +2001-03-05 01:26 markt + + * libmp3lame/psymodel.c: + + NOTABLES enabled by default. + + Psycho acoustics computed in *all* scalefactor bands. + + cvs tag before this change: before_notables + cvs tag after this change: notables + +2001-03-05 01:25 markt + + * libmp3lame/psymodel.c: + + The last commit before NOTABLES becomes the default. + tagged with "before.notables" + +2001-03-04 20:03 markt + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, util.h: + + More prep work for enabling NOTABLES. + Will now compute masking for all scalefactor bands + +2001-03-04 15:30 markt + + * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/util.c: + + Finished proper normalization of spreading function. + + updated testcases + +2001-03-04 06:56 markt + + * libmp3lame/psymodel.c: + + more tweaking of s3 normalization + +2001-03-04 06:48 markt + + * libmp3lame/psymodel.c: + + spreading function moved into seperate routine, s3_func(). + s3 normalized so that: + + +inf + / + | s3 [ bark ] d(bark) = 1 + / + -inf + + which resulted in dividing the result by 0.66. + + This is the first step in fixing the long outstanding bug + mentioned by Takehiro: s3[i][j] is normalized improperly for + values of i near the partition band boundaries. For these values, + the computed 'norm' is much too small since a lot of the data is + missing, resulting in artificially increasing the spreading function + (and thus the masking) + + --nspsytune: s3_l function is used with a normalization of .5 + (instead of computing the norm). So I changed this to a .5*.66 + to compensate for the above change. + + Next step: + + 1. + s3[i][j] will be multiplied by the width (in barks) of the + j'th partition band (about .35). Once this is done, we will not need to + compute and divide by 'norm' later. + + 2. + Make NOTABLES the default + + 3. + compute psymodel all the way up to 22khz. + +2001-03-04 05:51 markt + + * API, libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + added prototypes to lame.c (but functions not yet written) + +2001-03-04 05:13 markt + + * include/lame.h: + + finished last of the prototypes + +2001-03-04 05:02 markt + + * frontend/get_audio.c: + + changed to: + + gfp->num_samples = data_length / (channels * ((bits_per_sample+7) / 8)); + + thanks J.D.! + +2001-03-04 00:20 markt + + * include/lame.h, libmp3lame/lame.c: + + added: + lame_encode_buffer_sample_t, which is called by the following functions + in the API: + + lame_encode_buffer (original, short int interface) + lame_encode_buffer_float + lame_encode_buffer_long + +2001-03-02 22:39 markt + + * frontend/get_audio.c, test/lametest.py: + + get_audio.c: fixed num_samples computation for case when + bits_per_sample < 8. (althouth this case is already trapped for + earlier) + + lametest.py: slight change to reference mp3 filename generation + so lametest.py can be run from another directory. + +2001-03-02 18:28 markt + + * Makefile.am, testcase.mp3, doc/html/Makefile.in, + doc/man/Makefile.in, frontend/get_audio.c, + libmp3lame/i386/Makefile.in: + + error message about non-PCM wave files from + "J.D." + + Added "make testupdate" to Makefile.am, which updates + the test file in the CVS repository + +2001-02-27 11:54 robert + + * include/lame.h, libmp3lame/lame.c: + + lame.h typo + lame.c fix for possibility of calling lame_init_parms twice + +2001-02-27 11:39 aleidinger + + * DEFINES: + + remove KLEMM_42 + +2001-02-27 11:38 aleidinger + + * configure, Makefile.in, frontend/Makefile.in, misc/Makefile.in: + + regen + +2001-02-27 11:37 aleidinger + + * frontend/Makefile.am, misc/Makefile.am: + + remove EXTRA_PROGRAMS on make clean + +2001-02-27 11:36 aleidinger + + * Makefile.am: + + remove testcase.new.mp3 on error + +2001-02-27 11:36 aleidinger + + * configure.in: + + display version of gcc + +2001-02-27 11:35 aleidinger + + * include/lame.h: + + fix typo in comment + +2001-02-27 11:33 aleidinger + + * libmp3lame/util.c: + + include machine/floatingpoint.h on FreeBSD + +2001-02-27 09:59 robert + + * libmp3lame/: VbrTag.c, bitstream.c, lame.c, quantize_pvt.h, + takehiro.c, util.c, util.h: + + VbrTag.c fixed gfp/gfc typo + lame.c made data flow analysis happier: there was a possible path to use channels before definition. Even though it would be an error following this path, but the compiler doesn't know it + util.hc message functions are not intended to change gfc?!? + takehiro.c fixed a warning + bitstream.c fixed a warning + +2001-02-27 06:14 markt + + * frontend/gtkanal.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.h, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + + Implmented Frank's excellent idea about error messages: + + gfc->errorf, gfc->msgf and gfc->debugf are all FILE *. + default is stderr. If you want to disable all internal library + messages, set these to NULL with lame_set_errorf(), lame_set_msgf() etc... + + For a GUI, you can set these to regular files, and then read + the files and display the messages in an pop up window. + + Maybe the default should be NULL? + +2001-02-27 05:17 markt + + * include/lame.h: + + plugging away at a few more prototypes + +2001-02-26 22:45 robert + + * frontend/parse.c, libmp3lame/util.c: + + little change to Roel's --r3mix setting, on request by Roel + +2001-02-26 19:08 markt + + * libmp3lame/VbrTag.c: + + non RH_SEEKTABLE code removed from VbrTag.c + +2001-02-26 18:57 markt + + * frontend/lametime.c: + + removed to //include lines + +2001-02-26 18:52 markt + + * frontend/: get_audio.c, lametime.c: + + + incomprehensible gobbledygook replaced by call to standard + 'stat' function for file size. + +2001-02-26 08:06 markt + + * include/lame.h: + + more prototypes added to lame.h + +2001-02-26 07:38 markt + + * USAGE, frontend/parse.c, libmp3lame/lame.c: + + useTemporal turned on by default + --notemp option added. + +2001-02-26 07:26 markt + + * include/lame.h: + + added more of the lame_get/lame_set prototypes to lame.h + + also added this: + + // I give up. Klemm has worn me down on this one... + typedef lame_global_flags lame_t; + +2001-02-26 06:34 markt + + * misc/Lame.vbs: + + lame.vbs changes submitted by "Paul Reedy" + +2001-02-25 22:47 markt + + * libmp3lame/vorbis_interface.c: + + removed a klemm_42 from vorbis_interface.c + +2001-02-25 22:47 markt + + * INSTALL, libmp3lame/lame.c, libmp3lame/vorbis_interface.c: + + klemm_42 enabled by default. + + This code uses a different formula to choose the lowpass + filter. It takes into account stereo vs. jstereo + (jstereo gets 25% more bandwidth). This has the effect + of stereo 128kbps using a 14khz lowpass filter, which some + people may not like. + +2001-02-25 22:02 markt + + * libmp3lame/lame.c, test/CBRABR.op: + + made allow_diff_short the default if mode=stereo and + allow_diff_short has not been set to 0 or 1 by the calling + program. + + addes these notes to lame_init_params() : + * + * We first have some complex code to determine bitrate, + * output samplerate and mode. It is complicated by the fact + * that we allow the user to set some or all of these parameters, + * and need to determine best possible values for the rest of them: + * + * set some CPU related flags + * check if we are mono->mono, stereo->mono or stereo->stereo + * compute bitrate and output samplerate: + * user may have set compression ratio + * user may have set a bitrate + * user may have set a output samplerate + * set some options which depend on output samplerate + * compute the actual compression ratio + * set mode based on compression ratio + * + * The remaining code is much simpler - it just sets options + * based on the mode & compression ratio: + * + * set allow_diff_short based on mode + * select lowpass filter based on compression ratio & mode + * set the bitrate index, and min/max bitrates for VBR modes + * disable VBR tag if it is not appropriate + * initialize the bitstream + * initialize scalefac_band data + * set sideinfo_len (based on channels, CRC, out_samplerate) + * write an id3v2 tag into the bitstream + * write VBR tag into the bitstream + * set mpeg1/2 flag + * estimate the number of frames (based on a lot of data) + * + * now we set more flags: + * nspsytune: + * see code + * VBR modes + * see code + * CBR/ABR + * see code + +2001-02-25 21:28 markt + + * frontend/parse.c: + + removed VBR warning + +2001-02-25 20:24 markt + + * libmp3lame/psymodel.c: + + edited a few comments in psymodel.c + +2001-02-25 20:17 markt + + * libmp3lame/encoder.c, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/util.h, test/nores.op: + + Started some re-originization of psymodel.c + created: + + psymodel_init() function, called by both psymodel and psymodel_ns. + + I was carefull to make sure no binary changes were introduced + with --nspsytune. + + Modified both psymodel and psymodel_ns to return the + energy in each channel. I'm going to request that the + ATH level adjust be based on the energy comptuted by the + psymodel, rather than computing a magnitude in encoder.c + +2001-02-25 17:37 markt + + * Dll/BladeMP3EncDLL.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + removed mode_fixed variable. If calling program selects a mode + (mono, stereo, jstereo) then that mode is used, otherwise + lame picks best mode to use. + +2001-02-25 01:58 markt + + * include/lame.h: + + started adding more prototypes into lame.h: + + int lame_set_variable_name(lame_global_flags *, int) + int lame_get_variable_name(lame_global_flags *) + + _get will return the value (instead of an error code) + as suggested. + + _set will return an error code. But right now, the way lame + works there is no error checking until lame_init_params() is + called. This is because, for example, bitrate=135 + is not an error if free_format=1, but it is an error + for CBR. So many errors cannot be detected until all options + are set. + +2001-02-24 19:35 markt + + * include/lame.h, libmp3lame/util.h: + + commented out a uint_64_t field in util.h to get lame to + compile. Do we really need these types of variables? + + removed some stuff from lame.h. Note that many decisions have + already been made about the library interface, so if you are + planning on changing this, you need to check with me + (mark taylor) first. In particular, + there is going to be no file I/O, and all data is in + machine order. (no endian stuff in the library). + +2001-02-24 13:55 robert + + * Makefile.unix, configMS.h: + + get Makefile.unix working again (tested for Linux, not for OS/2 etc.) + +2001-02-21 21:17 robert + + * libmp3lame/lame.c: + + --vbr-mtrh related + +2001-02-21 17:07 robert + + * libmp3lame/vbrquantize.c: + + take sfb21 into consideration for median search + +2001-02-21 17:06 robert + + * libmp3lame/util.c: + + index transformation in select_kth_int() + +2001-02-21 14:59 aleidinger + + * test/lametest.py: + + do not print the passed/failed statistic in the makeref case + +2001-02-21 13:49 robert + + * frontend/parse.c, libmp3lame/lame.c: + + default quality handling fix + +2001-02-21 12:39 aleidinger + + * Dll/BladeMP3EncDLL.c: + + lame.h has to be included before version.h + +2001-02-20 18:34 aleidinger + + * Makefile.in, config.h.in, configure, configure.in, + frontend/brhist.c: + + - Patch (#103821) from guy_hutchison: + Fixes compilation problem on systems with ncurses dir + - add ChangeLog to Makefile.in + +2001-02-20 18:23 aleidinger + + * libmp3lame/: encoder.h, version.h: + + [no log message] + +2001-02-20 18:20 aleidinger + + * doc/html/: Makefile.am, Makefile.in: + + - add basic.html + +2001-02-20 18:20 aleidinger + + * configMS.h: + + - add LAME_LIBRARY_BUILD + +2001-02-20 18:20 aleidinger + + * libmp3lame/util.h: + + - more documentation, seems to be partially truncated (Frank) + - CPU_features is now a struct + +2001-02-20 18:19 aleidinger + + * libmp3lame/takehiro.c: + + - CPU_features is now a struct + +2001-02-20 18:19 aleidinger + + * libmp3lame/lame.c: + + - CPU_features is now a struct, no need to waste space for those + bolean values (Frank) + - introduce some KLEMM_44 protected code + +2001-02-20 18:18 aleidinger + + * libmp3lame/util.c: + + - fixes + docu for ATHformula_Frank() (Frank) + - don't compile old resampling in KLEMM_44 case + +2001-02-20 18:17 aleidinger + + * libmp3lame/version.c: + + - doxygen parseable documentation + - better lclint flags + - enable get_lame_version_numerical() + +2001-02-20 18:17 aleidinger + + * include/lame.h: + + - delete prototype of already removed get_lame_about() + - add get_lame_version_numerical() and lame_version_t + (now dshow didn't needs to include version.h to get the numerical + version of lame (dshow not changed, I let pgubanov do this)) + - introduce some KLEMM_44 protected code (Frank) + - rework formatting and documentation to be more (IMO much more) readable + (no lines longer than 80 chars, consistent formatting, looks alot cleaner) + +2001-02-20 10:41 aleidinger + + * DEFINES: + + Remove KLEMM_04, there was a previous commit which handled it, see + ChangeLog. + +2001-02-20 01:56 markt + + * DEFINES, frontend/brhist.c, frontend/get_audio.c, + frontend/timestatus.c: + + KLEMM 5,6,7 made the default & removed + +2001-02-20 00:40 markt + + * libmp3lame/lame.c: + + simplified lame_encoder_buffer_interleaved: it now always calls + lame_encoder_buffer() + +2001-02-20 00:30 markt + + * libmp3lame/: encoder.c, lame.c, util.c, util.h: + + fix for --scale problem? + + made a new routine: fill_buffer() + + This is the generic routine used to copy data from the input buffer + into lame's internal buffer, 'mfbuf[]'. + + It also calls the resample code if necessary, and the user selected + rescaling code if necessary. + +2001-02-20 00:26 markt + + * frontend/parse.c: + + added comment to vbr warning message + +2001-02-20 00:24 markt + + * frontend/parse.c: + + re-added the warning about VBR modes. It seems to have been deleted + at some point. + + This is because this website: + + http://www.kuro5hin.org/?op=displaystory;sid=2001/1/25/164540/759 + + is comparing Vorbis with lame -V4. + + While many people like the high bitrate VBR modes, + lame -V4 is *often* of lower quality than CBR. + +2001-02-19 18:29 aleidinger + + * test/VBR.op: + + - remove "--silent", lametest.py now handles this + + Aproved by: robert + +2001-02-19 18:28 aleidinger + + * test/lametest.py: + + - allow relative paths in a more portable manner + - should be more OS independand now + - more file checks (readable/executable) + - internally adds new option "--quiet" to the options + + This works on my system, it also should work on systems where the + previous version worked. It's not as portable as it could be, + search for XXX in the source. + +2001-02-18 21:18 robert + + * frontend/main.c, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/version.h, test/VBR.op: + + new options --silent and --quiet to be really quiet + new option --verbose (default) to turn -S/--silent off again + --vbr-mtrh and --vbr-new use now ATH type 2 + for VBR modes it is allowed to use different block types in stereo mode (not yet joint stereo) + bumped version to 3.88 alpha 10 + +2001-02-18 12:11 aleidinger + + * dshow/: Makefile.am, Makefile.in: + + Add recently added files to the makefile. + +2001-02-17 15:45 pgubanov + + * dshow/Encoder.cpp: + + gfp is sometimes zero in CEncoder::Encode() - why??? + +2001-02-17 14:30 aleidinger + + * libmp3lame/: pcm.c, pcm.h: + + New code from Frank, some needed parts in different files aren't commited + yet, they produce huge differences with lametest.py even if KLEMM_44 isn't + defined. -> KLEMM_44 (new API + resampling) isn't usable yet + +2001-02-17 14:27 aleidinger + + * test/lametest.py: + + - use "/usr/bin/env python" instead of "/usr/bin/python" in shebang line + (portability) + - use "-l" instead of "--lines" for wc + (portability, has to run on every IEEE 1003.2 ("POSIX.2") compliant + system) + - bugfix, check for lame2 instead for lame1 in the lame2 part + (Note: the entire test didn't work for me if I use e.g. + ./lametest.py XXX.op ../../testcases/XXX ../../build.org/frontend/lame ...) + +2001-02-17 14:17 pgubanov + + * dshow/: aboutprp.cpp, aboutprp.h: + + Elecard copyrigth added (executives need it for some reason) + +2001-02-17 13:58 pgubanov + + * dshow/: Mpegac.cpp, Property.rc, UIDS.H, dshow.dsp, dshow.dsw, + elogo.ico, resource.h: + + Some stability improvements + Elecard copyrigth added (executives need it for some reason) + +2001-02-16 17:23 markt + + * doc/html/basic.html: + + added basic.html to cvs + +2001-02-16 10:35 pgubanov + + * dshow/dshow.dsp: + + STDC_HEADERS defined in project settings + +2001-02-16 10:33 pgubanov + + * libmp3lame/lame.c: + + mono handling in encode_buffer_interleaved caused access violation - fixed + +2001-02-14 22:22 aleidinger + + * ChangeLog: + + Now we have a ChangeLog, generated from the output of "cvs log" + +2001-02-14 22:21 aleidinger + + * ChangeLog.header: + + Header for the ChangeLog, not included at "make dist" + +2001-02-14 22:20 aleidinger + + * TODO: + + remove Makefile.MSVC, robert seems to keep it up to date + +2001-02-14 22:20 aleidinger + + * Makefile.B32: + + try to unbreak it, add configMS.h -> config.h (untested) + +2001-02-14 22:20 aleidinger + + * DEFINES: + + add USE_FFT3DN + +2001-02-14 22:19 aleidinger + + * INSTALL: + + * add some more info how to use some advanced features of our + configure script + * add some info for Cygwin users (use configure) + * add some info about faster code with nasm + +2001-02-14 20:50 robert + + * frontend/parse.c: + + added -V1 to Roel's --remix preset, I assume it was missing by accident + +2001-02-14 16:38 aleidinger + + * Makefile.am.global, Makefile.in, aclocal.m4, configure, + configure.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + use new automake 1.4d (bugfixes) + +2001-02-14 14:43 robert + + * libmp3lame/: encoder.c, util.h: + + tuning of the auto ath adjustment for --vbr-mtrh mode + +2001-02-14 14:24 robert + + * libmp3lame/util.c: + + patch by Roel: + tweaking his ATH modification (--athtype 3) + +2001-02-13 18:27 markt + + * frontend/parse.c: + + fixed typo in parse.c + +2001-02-13 18:24 markt + + * libmp3lame/psymodel.c: + + added a lot of documentation on the psycho acoustics + to the top of psymodel.c + +2001-02-13 18:22 markt + + * mpglib/: common.c, common.h, interface.c: + + improved head_check() function: When resyncing data stream, + only look for headers of the same layer of the previous + frames. i.e. dont allow layer 2 and layer 3 frames in the + same stream. + +2001-02-13 18:21 markt + + * frontend/: get_audio.c, parse.c: + + added the --r3mix option + fixed bug with --decoder-mp3delay option + added error message for non-8 and 16 bit input + +2001-02-13 16:58 robert + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize_pvt.c, libmp3lame/util.c, libmp3lame/util.h: + + first of all: this patch shows no difference in the CBR/ABR test + + - made athtype 3 default for VBR modes, 1 still default for CBR/ABR modes + - made athadjust default for VBR modes, CBR/ABR modes don't need it + - removed --athadjust switch, was only temporally solution + - collected all spreaded ATH settings into ATH_t struct + if someone needs a new ATH related variable, please add it here + +2001-02-12 18:24 markt + + * doc/html/: contributors.html, history.html, index.html, + node6.html, switchs.html: + + new html docs from Gabriel + +2001-02-12 17:47 markt + + * test/lametest.py: + + print total pass/fail message at end + +2001-02-09 16:47 robert + + * libmp3lame/quantize_pvt.c: + + patch by Gaby: + allow ATH adjust for the ATH only modes too + +2001-02-08 22:19 robert + + * test/VBR.op: + + update to the VBR python options file + +2001-02-07 15:51 robert + + * libmp3lame/: encoder.c, vbrquantize.c: + + all patches --vbr-mtrh related + + encoder.c: + - made a variant of Gaby's auto ATH adjust the default + + vbrquantize.c: + - some small code moves + - added some safety margin to the global gain + +2001-02-06 21:43 robert + + * libmp3lame/: psymodel.c, vbrquantize.c: + + we should not try to hard to get high freqs thru' + so I will let --vbr-mtrh as is. It seems to give + reasonable file sizes again, even with Frank's ATH. + +2001-02-05 10:18 robert + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/quantize_pvt.c: + + re-check-in of Gaby's ATH auto adjustment code. + You need to specify --athadjust to get this + SUBSTANTIALLY QUALITY IMPROVEMENT + + quote: + "Also, we already have gfc->ath_lower (specified in db). + No reason to add another variable which does the same thing, + and does not even use the same units." + + That is not true, there is actually no gfc->ath_lower in dB. + We have a gfp->ATHlower in dB. But this is of a totally + different meaning. + gfp->ATHlower will lower the ATH for the whole file by a fixed + amount of x dB. + gfc->ath_auto_adjust will lower the ATH on a frame by frame basis + depending on the peak volume. + +2001-02-05 04:58 markt + + * frontend/parse.c: + + Added warning about using VBR modes. + This is because this website: + + http://www.kuro5hin.org/?op=displaystory;sid=2001/1/25/164540/759 + + is comparing Vorbis with lame -V4. + + While many people like the high bitrate VBR modes, + lame -V4 is *often* of lower quality than CBR. + +2001-02-05 02:36 shibatch + + * libmp3lame/psymodel.c: + + Reverted part of last tweaks of nspsytune. + +2001-02-05 02:27 markt + + * HACKING: + + updated HACKING with directions on how to run the + lametest.py python script + +2001-02-05 02:24 markt + + * test/: CBRABR.op, VBR.op, lametest.py, nores.op: + + Adding a python script used for testing, along with + some sample options files. + +2001-02-05 02:23 markt + + * HACKING, libmp3lame/encoder.c, libmp3lame/quantize_pvt.c: + + reverted encoder.c and quantize_pvt.c back to 13:00 3 Feb 2001. + These modifications broke my test cases. Any such changes need + aproval first. + + Also, we already have gfc->ath_lower (specified in db). + No reason to add another variable which does the same thing, + and does not even use the same units. + +2001-02-05 00:34 cisc + + * frontend/amiga_mpega.c: + + MPG_MD_LR_LR define was moved, set mode_ext to 0 instead (since we don't get that info anyway). + +2001-02-04 23:56 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/vbrquantize.c: + + parse.c: small change in default behaviour for --vbr-mtrh + lame.c: it makes no sense for a sfb21 extra at sample frequencies below 44.1 kHz + vbrquantize.c: oops, last commit was a merger from a wrong branch of mine + +2001-02-04 23:28 shibatch + + * libmp3lame/quantize_pvt.c: + + Enabled auto-adjust ATH for nspsytune. + +2001-02-04 23:14 shibatch + + * libmp3lame/psymodel.c: + + Tweaked nspsytune. + +2001-02-03 23:20 robert + + * libmp3lame/: quantize_pvt.c, version.h: + + bumped version to alpha 9 + some clean-up + +2001-02-03 20:10 robert + + * libmp3lame/: encoder.c, quantize_pvt.c, util.c, util.h, + vbrquantize.c: + + patch by Gabriel Bouvigne: + auto adjust of ATH for low volume tracks + a big improvement in quality! + therefore on by default + + patch by Robert Hegemann: + further improvement of --vbr-mtrh mode + +2001-02-02 01:04 robert + + * libmp3lame/: quantize.c, quantize_pvt.c: + + --vbr-mtrh tweaks + +2001-01-31 19:44 aleidinger + + * configure, configure.in: + + bugfix + +2001-01-31 15:34 robert + + * libmp3lame/quantize.c: + + fix a typo I introduced by my last commit + +2001-01-31 12:53 aleidinger + + * Makefile.am.global, Makefile.in, acconfig.h, acinclude.m4, + aclocal.m4, config.h.in, configMS.h, configure, configure.in, + depcomp, Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + - config*/Makefile*/ac*: + * tests for *int*_t + * test for 80 bit floats (for speed optimizations) + * add pcm.* to the makefile + * removed resample.[ch] from the makefile + * depend upon automake 1.4b + * fix in check for ccc + (submitted by nold via the sourceforge patch page at + the lame project page, patch id #103507) + * something I may have forgotten + + Note: + Please don't commit any Makefile.in if you didn't have + changed the corresponding Makefile.am. CVS didn't stores + the time stamps of the files at commit time, it stores + the time stamps of the commit time, so we have to commit + the files in the correct order, but I'm to lazy to do so + and I assume I'm not the only one. + The same applies to config*. + + - depcomp: + missing file, the dependancy tracking should work again + +2001-01-30 20:53 robert + + * libmp3lame/quantize.c: + + fixed a design flaw in VBR_iteration_loop() I'm responsible for. + affects quality! + +2001-01-30 20:52 robert + + * libmp3lame/: lame.c, quantize_pvt.c, vbrquantize.c: + + tuning of --vbr-mtrh mode + +2001-01-30 20:51 robert + + * frontend/parse.c, include/lame.h: + + patch by Gaby: + changed --athlower to accept floats + +2001-01-30 11:02 robert + + * libmp3lame/: psymodel.c, util.c: + + psymodel.c: fixing compile problem (was: M_LN10 undefined) + util.c: Roel's modification to Gaby's ATH, new: --athtype 3 + +2001-01-29 14:46 robert + + * libmp3lame/vbrquantize.c: + + --vbr-mtrh and --vbr-new use now the faster and sloppier + scalefactor-band noise calculation with quality settings + -q 3...9 + +2001-01-28 12:51 takehiro + + * libmp3lame/: quantize.h, util.h: + + oops, compile problem fix + +2001-01-28 12:39 takehiro + + * libmp3lame/: quantize.c, quantize.h, quantize_pvt.c, + vbrquantize.c: + + magic number 4095 and 4096 is removed + +2001-01-27 18:00 takehiro + + * libmp3lame/psymodel.c: + + make temporal masking effect strong. + +2001-01-27 17:52 takehiro + + * libmp3lame/quantize_pvt.c: + + debug message is removed :) + +2001-01-27 17:39 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/psymodel.c, + libmp3lame/quantize_pvt.c, libmp3lame/util.h: + + experimental temporal masking support. + "--temporal" option to use this. + +2001-01-26 22:47 robert + + * frontend/parse.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/vbrquantize.c: + + tuning of --vbr-mtrh VBR mode + +2001-01-25 20:57 robert + + * misc/abx.c: + + update by Frank: + some further endings and audio formats + +2001-01-24 23:59 robert + + * libmp3lame/quantize_pvt.c: + + found and fixed another BUG caused by the "bit optimization." patch + +2001-01-24 23:02 robert + + * libmp3lame/: pcm.c, pcm.h: + + updates by Frank + +2001-01-24 22:33 robert + + * Makefile.DJGPP, Makefile.unix: + + small config.h related tunings + +2001-01-24 21:33 robert + + * libmp3lame/vbrquantize.c: + + quick-fix for code that was broken by Takehiro's last + "bit optimization." in function calc_xmin(), quantize_pvt.c + +2001-01-23 12:50 takehiro + + * libmp3lame/quantize_pvt.c: + + bit optimization. + +2001-01-23 07:12 shibatch + + * libmp3lame/quantize.c: + + Bugfix of nspsytune. + +2001-01-22 23:00 afaber + + * Dll/BladeMP3EncDLL.c: + + VBR was always enabled, even when the client did not ask for it + +2001-01-22 19:54 aleidinger + + * libmp3lame/vorbis_interface.c: + + remove trailing garbage + +2001-01-22 09:31 shibatch + + * libmp3lame/: psymodel.c, quantize.c: + + Tweaked nspsytune. + +2001-01-22 04:35 markt + + * Makefile.in, configure, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, frontend/parse.c, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/psymodel.c, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + fixed bug preventing -m a mode from working. + + ran autoconf which changed all the Makefile.in's + +2001-01-22 01:07 robert + + * libmp3lame/: pcm.c, pcm.h, vorbis_interface.c: + + patches by Frank: + + vorbis_interface: was/is broken since a long time + pcm.[ch]: fixing some transfer errors (email) + +2001-01-21 21:14 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed problems with writing the Xing MP3 header (gfc->internal_flags structure was already freed, while it was needed to write the Xing MP3 tag) + +2001-01-21 19:13 robert + + * libmp3lame/: pcm.c, pcm.h: + + patches by Frank: + + scalar.nas - new SIMD assembler routines + resample.[ch] - removed + pcm.[ch] - new, containing resampling routines and more + version.c - some clean up + +2001-01-21 19:06 robert + + * libmp3lame/: i386/scalar.nas, resample.c, resample.h, version.c: + + patches by Frank: + + scalar.nas - new SIMD assembler routines + resample.[ch] - removed + pcm.[ch] - new, containing resampling routines and more + version.c - some clean up + +2001-01-21 19:03 robert + + * frontend/lametime.c: + + it's always a good idea to include its own header file + +2001-01-20 09:51 robert + + * libmp3lame/util.c: + + patch by Gaby: + + I changed a file from the 19/01 cvs (I added an ath balanced between the + original one and Frank's one on the option --athtype 2) + +2001-01-19 09:08 shibatch + + * libmp3lame/: encoder.c, psymodel.c, quantize_pvt.c: + + Improved reservoir handling(nspsytune). + +2001-01-18 22:18 robert + + * libmp3lame/quantize_pvt.c: + + allow "--athlower n" to modify the ATH for sfb21 + +2001-01-18 13:04 aleidinger + + * Makefile.DJGPP: + + add config.h to the clean target + +2001-01-18 13:03 aleidinger + + * Makefile.DJGPP: + + bugfix (please report if it's broken, I can't test the config.h target) + +2001-01-17 21:32 robert + + * Makefile.unix: + + additional fixes + +2001-01-17 20:35 robert + + * libmp3lame/: VbrTag.c, util.c, util.h: + + RH_SEEK_TABLE enables a different method of generating TOC entries + in Xing VBR header. now enabled! + + PLEASE TEST TRY IT + + It should fix the problem poeple reported who encode radio shows or + alike which last a few hours. + Another advantage is, it will not steadily increase LAME's memory footprint + while running. + +2001-01-17 16:05 shibatch + + * libmp3lame/psymodel.c: + + Reverted the final change. + It degraded encoded quality of gspi*.wav. + +2001-01-17 13:26 shibatch + + * libmp3lame/psymodel.c: + + Tweaked nspsytune. + +2001-01-17 09:55 robert + + * Makefile.unix: + + try to fix the broken Makefile after latest configurification + +2001-01-17 09:54 robert + + * libmp3lame/newmdct.c: + + + replaced M_SQRT2 by SQRT2 which is defined in util.h + + replaced "=-" by "= -" to avoid confusion with the + old K&R "=-" operator, an equivalent to "-=". Even + though new compilers seem to handle it as an + assignement and unary minus sequence, but some + buggy compiler could be trapped here (as I). + +2001-01-16 13:08 robert + + * configMS.h: + + turned some defines for system include files on + +2001-01-16 09:04 robert + + * Makefile.MSVC: + + fixed typo, sorry + +2001-01-15 15:16 aleidinger + + * Makefile.am, Makefile.am.global, Makefile.in, config.h.in, + configMS.h, configure, configure.in, Dll/Makefile.am, + Dll/Makefile.in, debian/Makefile.am, debian/Makefile.in, + doc/Makefile.am, doc/Makefile.in, dshow/Makefile.am, + dshow/Makefile.in, frontend/Makefile.am, frontend/Makefile.in, + frontend/brhist.c, frontend/console.c, frontend/get_audio.c, + frontend/gpkplotting.c, frontend/main.c, frontend/mp3rtp.c, + frontend/parse.c, frontend/rtp.c, include/Makefile.am, + include/Makefile.in, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/id3tag.c, + libmp3lame/machine.h, misc/Makefile.am, misc/Makefile.in, + mpglib/Makefile.am, mpglib/Makefile.in, mpglib/common.c, + mpglib/decode_i386.c, mpglib/mpg123.h: + + automake/autoconf cleanup and enhancement + +2001-01-15 14:19 shibatch + + * libmp3lame/: encoder.c, psymodel.c, util.h: + + More cleanups and bugfixes of --nspsytune. + +2001-01-15 09:38 aleidinger + + * doc/html/Makefile.am: + + remove node[57].html + +2001-01-15 09:14 gramps + + * USAGE: + + Raised track limit from 99 to 255 per user requests. + +2001-01-15 09:10 robert + + * Makefile.B32, Makefile.MSVC, Makefile.unix: + + more RH_AMP clean up + +2001-01-15 08:58 gramps + + * frontend/parse.c, doc/html/id3.html: + + Raised track limit from 99 to 255 per user requests. + +2001-01-15 08:48 gramps + + * libmp3lame/id3tag.c: + + - Simplified prologue of all public functions, removing intermediate "spec" + variable, and assuming (like the rest of LAME) that gfp is never null. + - Fixed a stupid sizeof bug (mine) in "id3tag_init". + - Raised track limit from 99 to 255 per user requests. + - No longer write full text of genre in version 2 tag. Now write more + cannonical "(num)" format where "num" is the text version of the genre + number, more closely following the updated ID3v2.3 spec and usage in id3lib. + This also makes the tag smaller. + - Now use id3lib-compatible bogus language descriptor "XXX" in version 2 + comment frames instead of just null bytes. + - Changed order of frames written in version 2 tag to match version 1 tag. + - Restored some of Frank's optimizations. + - Fixed LAME URL. + - Reworded some comments and fixed misspellings. + - Moved "local_strcasecmp" back into its original position. + - Some small reformatting to match original file. + +2001-01-14 23:29 gramps + + * USAGE: + + - Changed "highest" to "higher" to describe recommended quality setting in + constant bit rate example. + + - Changed "CBR" to "VBR" to correct misspelling in variable bit rate + description. + +2001-01-14 22:40 gramps + + * doc/html/Makefile.in: + + Removed dependency on obsolete node5.html and node7.html. + +2001-01-14 22:35 markt + + * USAGE, frontend/parse.c: + + documentation of -q parameter in USAGE and lame --longhelp + +2001-01-14 22:13 markt + + * doc/html/: node5.html, node7.html: + + removed as per Gaby + +2001-01-14 22:12 markt + + * libmp3lame/: lame.c, quantize.c: + + created new routine lame_init_qval() which does all the + gfp->quality related settings. Cleaned up some more RH_AMP code: + The only way to enable scalefac_scale right now is with + -Z or --nspsytune. + +2001-01-14 21:01 markt + + * testcase.mp3: + + updated test case + (Takehiro fixed a bug which I introduced, which changes test cases). + +2001-01-14 17:25 aleidinger + + * DEFINES, Makefile.in, aclocal.m4, config.guess, config.sub, + configure, configure.in, missing, mkinstalldirs, Dll/Makefile.am, + Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, frontend/depcomp, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/depcomp, + libmp3lame/i386/Makefile.in, misc/Makefile.in, misc/depcomp, + mpglib/Makefile.in, mpglib/depcomp: + + DEFINES: + remove obsolete defines + + configure*: + minor cleanup + + Makefile*: + - minor cleanup + - use automake 2.14b + + Added files: + needed for new automake + + rest: + updated automake files + +2001-01-14 15:40 aleidinger + + * misc/abx.c: + + there are encoders with different delays on different channels (Frank) + +2001-01-14 12:21 shibatch + + * libmp3lame/lame.c: + + Enabled scalefac_scale if --nspsytune is specified. + +2001-01-14 12:02 takehiro + + * testcase.mp3: + + fixed new amp_scalefac_bands + (it may use "trigger" variable without any initialization) + +2001-01-14 09:42 takehiro + + * libmp3lame/quantize.c: + + minor bug fix. + when subblock gain=1 and scalefactor is -1(means no need to calculate), + LAME will try to check the quantization with meanless scalefactor combination. + +2001-01-14 09:39 takehiro + + * libmp3lame/quantize.c: + + subblock_gain is 3-bit and its limit is 7, not 8. + +2001-01-14 09:35 takehiro + + * libmp3lame/quantize.c: + + oops, conflicts are removed + +2001-01-14 09:31 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + to store the distortion into III_psy_xmin structure, not simple array. + this may make array pointer calculation easier and bring some speed up. + +2001-01-14 09:26 shibatch + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h: + + Cleanup and small speed optimization of --nspsytune. + +2001-01-14 08:17 markt + + * API: + + one minor update to the API file + +2001-01-14 08:13 markt + + * testcase.mp3, libmp3lame/lame.c, libmp3lame/quantize.c: + + made a new, simpler unified amp_scalefac_bands(): + + * distort[] = noise/masking + * distort[] > 1 ==> noise is not masked + * distort[] < 1 ==> noise is masked + * max_dist = maximum value of distort[] + * + * Three algorithms: + * noise_shaping_amp + * 0 Amplify all bands with distort[]>1. + * + * 1 Amplify all bands with distort[] >= max_dist^(.5); + * ( 50% in the db scale) + * + * 2 Amplify first band with distort[] >= max_dist; + * + * + * For algorithms 0 and 1, if max_dist < 1, then amplify all bands + * with distort[] >= .95*max_dist. This is to make sure we always + * amplify at least one band. + * + + noise_shaping_amp=0 -q3 .. -q9 + noise_shaping_amp=1 -q2 + noise_shaping_amp=2 -q1, -q0 + + --nspsytune was using what is now noise_shaping_amp=2, but the only + way to get this now is to use --nspsytune -q1. + Naoki: is this a problem? + + I also defaulted the clever RH_AMP stoping criterion in + outer_loop. + +2001-01-14 05:36 markt + + * libmp3lame/: lame.c, psymodel.c, quantize.c, quantize_pvt.c, + util.h, vbrquantize.c: + + some tuning of VBR masking_lower because of new ATH function. + Disabled VBR_q based lowering of ATH. Is this still needed? + You can always achieve the same effect with --athlower option. + +2001-01-13 18:01 aleidinger + + * Makefile.am, Makefile.in, configure, configure.in, + Dll/Makefile.in, debian/Makefile.am, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.am, dshow/Makefile.in, frontend/Makefile.am, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.am, mpglib/Makefile.in: + + "make dist" related: + - add debian subdir + - add missing files + + different builddir related: + - change argument to -l option for nasm + +2001-01-13 17:40 aleidinger + + * libmp3lame/Makefile.in.old: + + obsolete + +2001-01-13 17:36 aleidinger + + * frontend/Makefile.in.old: + + obsolete + +2001-01-13 13:45 takehiro + + * libmp3lame/newmdct.c: + + bit coding hack and cleanup + +2001-01-13 12:55 takehiro + + * Makefile.in, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + automake generated + +2001-01-13 12:54 takehiro + + * libmp3lame/: fft.c, i386/Makefile.am, i386/fft3dn.nas: + + now LAME supports 3dnow! fft + +2001-01-13 10:37 pgubanov + + * dshow/Encoder.cpp: + + Removed (char*) cast in lame_encode_buffer() call + +2001-01-12 19:20 markt + + * debian/: changelog, control, copyright, lame-dev.docs, + lame-dev.files, lame-extras.files, lame.docs, lame.files, rules: + + added debian files from Ingo Saitz + +2001-01-12 19:17 markt + + * debian/: cron.d.ex, dirs, docs, emacsen-install.ex, + emacsen-remove.ex, emacsen-startup.ex, ex.doc-base.package, + files, init.d.ex, manpage.1.ex, manpage.sgml.ex, menu.ex, + postinst.debhelper, postinst.ex, postrm.ex, preinst.ex, + prerm.debhelper, prerm.ex, substvars, watch.ex: + + New Debian package from Ingo Saitz + +2001-01-12 19:11 markt + + * README.Debian: + + removed README.Debian + +2001-01-12 11:13 aleidinger + + * misc/abx.c: + + further improvements, e.g. reduced latency (Frank) + +2001-01-11 22:37 markt + + * HACKING, frontend/mp3rtp.c, frontend/mp3x.c: + + updated mp3rtp.c and mp3x.c to use lame_global_flags *lame_init() + (lame allocates storage for lame_global_flags) + rather than lame_init_old(&gf) which required calling + program to instantiate gf. + + Now we need to start writing one routine for every parameter: + + lame_set_bitrate + lame_set_num_channels + etc... + +2001-01-10 16:03 aleidinger + + * frontend/lame.dsp, frontend/mp3x.dsp, libmp3lame/libmp3lame.dsp, + mpglib/mpglib.dsp: + + work around for a bug in VC (Todd Richmond) + +2001-01-09 15:15 aleidinger + + * misc/abx.c: + + bugfixes + +2001-01-08 18:15 aleidinger + + * DEFINES: + + removed KLEMM_12, on by default + +2001-01-08 18:07 aleidinger + + * libmp3lame/vbrquantize.c: + + Roberts VBR code: speed improvement for vbr-mtrh (ping pong patch, OKed by Mark) + +2001-01-07 23:47 markt + + * frontend/: portableio.c, timestatus.c: + + chage to KLEMM-36 from Frank + +2001-01-07 22:53 markt + + * frontend/timestatus.c, libmp3lame/psymodel.c: + + undefined variable (last = 0, line 214) in timestatis.c + commented out. + + fixed some dimensions in the funtion prototype of l3para_read + +2001-01-07 22:35 markt + + * frontend/timestatus.c: + + Applied Frank's patch (from mp3encoder) to timestatus.c + with -R. I hope I didn't undo this by mistake! + +2001-01-07 22:33 markt + + * frontend/timestatus.c: + + added a brhist_jump_back() to timestatus_klemm(). + sent to me by Magnus Holmgren. + +2001-01-07 22:28 markt + + * USAGE, frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c: + + added the "-ma" option. + Ultimate goal: + 8 kbps Mono + 16- 96 kbps Intensity Stereo (if available, otherwise Joint Stereo) + 112-128 kbps Joint Stereo -mj + 160-192 kbps something between -mj and -ms + 224-320 kbps Independent Stereo -ms + + currently enables KLEMM_12. KLEMM_12 is gone. + +2001-01-07 16:17 aleidinger + + * libmp3lame/lame.c: + + Don\'t change floatingpoint mask for FreeBSD on Alpha hardware, obtained from FreeBSD-Ports + +2001-01-07 14:48 aleidinger + + * misc/abx.c: + + cleanup, no functional change + +2001-01-07 14:47 aleidinger + + * Dll/Example.dsw, Dll/MP3EncDll.dsw, dshow/dshow.dsw, + frontend/lame.dsw, frontend/mp3x.dsw, misc/abx.c: + + fix *.dsw + new version of abc.c (Frank) + +2001-01-07 09:14 markt + + * frontend/: mp3rtp.c, mp3x.c: + + global variables used by frontend code are now instantiated + in parse.c. + + Before, the were defined external in main.h, and instantiated + in the frontend, meaning they had to appear in mp3x.c, main.c + and mp3rtp.c + + we need to get rid of these! + +2001-01-07 09:11 markt + + * frontend/main.c, frontend/main.h, frontend/parse.c, + libmp3lame/lame.c: + + more tweaks to the --decode-mp3delay option + +2001-01-07 08:28 markt + + * libmp3lame/: lame.c, quantize.c, util.h: + + added a variable, noise_shaping_amp. It does nothing right now. + +2001-01-07 08:24 markt + + * frontend/: main.c, main.h, parse.c: + + added a undocumented option --decode-mp3delay + to allow someone to adjust the number of samples + lame --decode will truncate. David Robinson requirested this + since he didn't like that lame --decode would truncate 1106 samples + (assuming a encoder delay of 576) since BladeEnc has an encoder delay + of only 528.) + +2001-01-07 05:25 markt + + * frontend/main.c, libmp3lame/util.c: + + main.c: uses lame_init() instead of lame_init_old(). + util.c: added frank's changes: 32 point filter instead of 19. + prep work for frank's new resampling/filtering code. + updated test cases. + +2001-01-06 23:12 markt + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, util.c: + + ATHformula modifed to work in Hz instead of Khz. + + Minor change to a bunch of routines + regeneration of + test cases. + +2001-01-06 22:57 markt + + * testcase.mp3: + + updated testcase + +2001-01-06 22:55 markt + + * libmp3lame/fft.c: + + Switched to the Blackman window for the FFT energy estimator. + This is just to merge some nspsytune code into default + +2001-01-06 07:40 gramps + + * libmp3lame/id3tag.c: + + Backed out some large changes done in November which introduced at least two bugs. Also fixed other older bug in id3tag_write_v2. + +2001-01-06 01:11 markt + + * include/lame.h, libmp3lame/lame.c, libmp3lame/psymodel.c: + + more prep work to remove all psycho acoustic tables + +2001-01-06 01:00 markt + + * libmp3lame/: VbrTag.h, lame.c, mpglib_interface.c, psymodel.c: + + added formulas to replace the last of the table data. + some changes to reflect that Xing VBR header parsing code + has been moved into mpglib + +2001-01-05 22:15 markt + + * mpglib/: interface.c, mpglib.h: + + added XingVBR header parsing code + +2001-01-05 22:13 markt + + * frontend/: get_audio.c, gtkanal.c: + + fixed bug in frame analyzer when analyzing mp3 files. + frame counter incremented too soon. This was introduced + when someone (maybe me, but I dont remember!) replaced the + use of gfp->frameNum with a global variable limited in scope to + just gtkanal.c + + get_audio.c: removed VBR Xing header checking code. + this has been moved into mpglib. + +2001-01-05 15:26 aleidinger + + * Makefile.in.old, configure.in.old: + + obsolete + +2001-01-05 15:20 aleidinger + + * Makefile.B32, Makefile.unix, frontend/brhist.c, + frontend/get_audio.c, frontend/gpkplotting.c, frontend/gtkanal.c, + frontend/lame.dsp, frontend/lametime.c, frontend/main.c, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/mp3x.dsp, + frontend/parse.c, frontend/portableio.c, frontend/rtp.c, + frontend/timestatus.c, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/fft.c, libmp3lame/id3tag.c, + libmp3lame/lame.c, libmp3lame/libmp3lame.dsp, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/resample.c, + libmp3lame/reservoir.c, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c, misc/abx.c, mpglib/common.c, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/interface.c, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c, + mpglib/mpglib.dsp, mpglib/tabinit.c: + + misc/abx.c: (Frank Klemm) + - level adjustment + - clean up + - A-B repeat ("chunks") + + Makefile.*: + - nuke NOTERMCAP, it's HAVE_TERMCAP now + (defined where neccessary, please report slipped in breakage) + + (frontend|mp3x|libmp3lame|mpglib).dsp: + - copy configMS.h config.h (Todd Richmond) + - unbreak (Todd Richmond) + - nuke NOTERMCAP + - change HAVE([A-Z]*) to HAVE_$1 + + *.c: + - get rid of configMS.h, we finally have support in *.dsp + +2001-01-03 13:06 aleidinger + + * Makefile.DJGPP, Makefile.am, Makefile.in, Makefile.unix, + aclocal.m4, config.h.in, configure, configure.in, + frontend/Makefile.am, frontend/Makefile.in, frontend/brhist.c, + frontend/console.c, frontend/get_audio.c, frontend/gpkplotting.c, + frontend/gtkanal.c, frontend/lametime.c, frontend/main.c, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, + frontend/portableio.c, frontend/rtp.c, frontend/timestatus.c, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/debugscalefac.c, libmp3lame/encoder.c, + libmp3lame/fft.c, libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/resample.c, + libmp3lame/reservoir.c, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c, misc/Makefile.am, + misc/Makefile.in, mpglib/common.c, mpglib/dct64_i386.c, + mpglib/decode_i386.c, mpglib/interface.c, mpglib/layer1.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/tabinit.c: + + Makefile.{unix,DJGPP}: Bugfixes (Includes) + Makefile.am: follow the move of some scripts to misc + *: add dmalloc support (configure --with-dmalloc) + (it seems we have a memleak somewhere, I will have a closer look soon) + +2001-01-03 11:51 shibatch + + * libmp3lame/: psymodel.c, encoder.c: + + Tweaking and bugfix of --nspsytune. + +2001-01-02 06:02 markt + + * frontend/get_audio.c, libmp3lame/encoder.c: + + typo in read_samples_pcm fixed + +2001-01-01 17:35 markt + + * API, HACKING: + + minor edits to API and HACKING + +2001-01-01 17:26 markt + + * Lame.vbs, README.WINGTK, TODO, USAGE, lame4dos.bat, + misc/Lame.vbs, misc/lame4dos.bat: + + moved some more scripts into 'misc' directory + +2001-01-01 17:12 markt + + * INSTALL, README.WINGTK, USAGE, auenc, mlame, + frontend/README.Win32, misc/auenc, misc/mlame: + + moved scripts into misc directory + moved README.Win32 (which described compiling mp3x under windows) + back to its original name, README.WINGTK + minor updates to INSTALL and USAGE + +2000-12-27 13:13 aleidinger + + * misc/abx.c: + + - listen to the difference of both signals + - highlighting of "errors" + - DC canceling + - support for monaural signals + - cleanup + - bugfixes + - correct shell quoting + +2000-12-25 10:49 shibatch + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize_pvt.c, + libmp3lame/util.h: + + Tweaked --nspsytune. + +2000-12-22 15:36 aleidinger + + * misc/abx.c: + + now with cross correlation (Frank) + +2000-12-20 22:55 aleidinger + + * misc/abx.c: + + - files to test have to have the same samplerate (Frank) + - check for correct number of arguments (Alexander) + +2000-12-20 15:14 aleidinger + + * DEFINES, libmp3lame/psymodel.c, libmp3lame/tables.c, + libmp3lame/tables.h: + + Patches for KLEMM_43 protected code + +2000-12-19 13:09 aleidinger + + * DEFINES, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/reservoir.c, libmp3lame/tables.c, + libmp3lame/vbrquantize.c: + + Ping pong #3, OKed by Mark. + +2000-12-19 08:16 markt + + * LICENSE: + + simplifed the LICENSE file describing how to use + LAME in commercial software + +2000-12-19 07:51 markt + + * INSTALL, README, README.B32: + + updated README files with new configure information. + debuging statement added to interface.c, then removed. + +2000-12-19 07:46 markt + + * frontend/: brhist.c, get_audio.c: + + more size_t's removed + +2000-12-19 07:43 markt + + * frontend/: main.c, mp3rtp.c, parse.c, rtp.c, rtp.h: + + removed some size_t's. + Added some windows code to rtp.c/mp3rtp.c: It is supposed to + be much improved: + + LAME is really great project. + + However, RTP code for multicasting isn't very good. + + I've attached some modification, and tested it on Win NT4 and Win2K with + FreeAmp on ordinary 10 and 100 Mbit Ethernet with encoding in neverending + loop. It was running one week w/o any probs. + + I would like to please you to not include my name anywhere (there are + several reason why, at the moment). + + However, code is very MSVC specific, so it is commented out + with #if 0. Most of the code was added to the end of rtp.c. + +2000-12-19 07:00 markt + + * frontend/main.c: + + deleted stupid C++ typecasts. LAME is written in C. + integer arguments to fwrite() do not need typecasts. + +2000-12-16 05:43 shibatch + + * libmp3lame/: lame.c, psymodel.c: + + 1. Old ATH formula is now default for --nspsytune. + 2. Tweaked a parameter of --nspsytune. + 3. Minor code cleanup. + +2000-12-14 13:32 aleidinger + + * Makefile.in, configure, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + regen + +2000-12-14 13:31 aleidinger + + * configure.in, libmp3lame/i386/Makefile.am: + + force nasm to generate coff output when building under cygwin (Egor Duga) + +2000-12-14 10:05 aleidinger + + * Makefile.in, config.h.in, configure, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + regen + +2000-12-14 10:04 aleidinger + + * Makefile.DJGPP, Makefile.am, Makefile.unix, configMS.h, + configure.in, frontend/Makefile.am, libmp3lame/Makefile.am, + libmp3lame/i386/Makefile.am, mpglib/Makefile.am: + + configure.in: + - determine the size of various types at configure time + - add --enable-debug=anoying + + configMS.h: + - add SIZEOF_... defines, see configure.in + + Makefile.unix: + - bugfix from Robert (shame on me) + + Makefile.DJGPP: + - add cpu_feat.nas and scalar.nas to the build with NASM + + Submitted by Egor Duda (thank you, works great): + * Makefile.am: add $(EXEEXT) to executables for cygwin build + * Makefile.am: take source .wav file from srcdir + * configure.in: require autoconf 2.13 + * configure.in: check for executable files extension + * frontend/Makefile.am: use builddir to get autogenerated headers + and libraries from, in case we're doing build in separate directory; + take normal headers from srcdir instead of current. + * libmp3lame/Makefile.am: ditto + * libmp3lame/i386/Makefile.am: ditto + * mpglib/Makefile.am: ditto + +2000-12-13 02:28 shibatch + + * libmp3lame/lame.c: + + Minor bugfix. + +2000-12-13 02:21 shibatch + + * libmp3lame/psymodel.c: + + Minor bugfix of --nspsytune. + (forgot to merge.) + +2000-12-12 04:50 shibatch + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/util.c, libmp3lame/util.h: + + Added option --athtype which selects ATH formula. + + Some major changes to --nspsytune. + 1. --nspsytune doesn't use pe. + 2. MS psymodel is modified. Added new option --nssafejoint. + 3. some more tunings of short block preecho control. + +2000-12-12 01:11 markt + + * libmp3lame/: lame.c, util.c: + + + Latest checkin from Alex include an rewritten 'Bitrate()' routine. + + This breaks the --abr code, since new routine considers a bitrate of 0 + invalid. Now fixed. + +2000-12-11 22:15 markt + + * misc/Makefile.am: + + added mlame_corr.c to the + EXTRA_DIST line of Makefile.am + +2000-12-11 16:03 aleidinger + + * DEFINES, Makefile.in, frontend/main.c, include/lame.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize_pvt.h, + libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/vorbis_interface.c, mpglib/interface.c, + mpglib/interface.h: + + tries to include every change before the CVS rollback which didn't changes output + +2000-12-11 14:48 aleidinger + + * frontend/gtkanal.c, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/newmdct.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, libmp3lame/vorbis_interface.c: + + redo gfc->stereo -> gfc->channels_out conversation + +2000-12-11 01:32 markt + + * USAGE: + + updated info regarding the MAD decoder + +2000-12-11 00:34 markt + + * Makefile.am, libmp3lame/lame.c: + + applied patch for cygwin FPE stuff + +2000-12-11 00:01 markt + + * USAGE, configure, configure.in, mlame_corr.c, + frontend/get_audio.c, frontend/get_audio.h, include/lame.h, + libmp3lame/mpglib_interface.c, misc/mlame_corr.c: + + configure: removed all the debug warning flags. it was impossible + to find real problems when compiling in debug mode. + + moved mlame_corr.c into 'misc' directory + + removed some 'size_t' and 'unsigned' from get_audio.c + + made mp3buffer 'unsigned char*' for the mpglib interface routines. + +2000-12-08 13:47 aleidinger + + * auenc, misc/mugeco.sh: + + more portability fixes from Fredrik Mellstrom + +2000-12-07 18:58 aleidinger + + * mlame: + + use sh instead of bash + +2000-12-07 18:55 aleidinger + + * auenc: + + portability patch from Fredrik Mellstrom + +2000-12-05 15:48 aleidinger + + * DEFINES: + + update + +2000-12-05 15:46 aleidinger + + * Makefile.MSVC: + + add scalar.nas + +2000-12-05 15:40 aleidinger + + * configure, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mpglib/Makefile.in: + + regen + +2000-12-05 15:37 aleidinger + + * Makefile.B32, Makefile.MSVC, Makefile.in, config.h.in, + configMS.h, configure.in, frontend/Makefile.am, + frontend/get_audio.c, frontend/get_audio.h, + frontend/portableio.c, libmp3lame/Makefile.am, + libmp3lame/i386/Makefile.in, libmp3lame/i386/cpu_feat.nas, + misc/ath.c, mpglib/Makefile.am: + + play ping-pong with some files (we're now at 2000-12-03 again), ok'ed by Mark + +2000-12-05 01:17 markt + + * DEFINES: + + restored DEFINES. + + Sorry Alexendar - I tried to only revert the *.c and *.h files + to their Nov 21 values (because of test case problems) but + I was unable to get this to work. I was lazy and reverted + entire repository back to Nov 21. + +2000-12-05 01:15 markt + + * DEFINES: + + trying to restore DEFINES + +2000-12-04 14:36 aleidinger + + * Makefile.unix: + + add scalar.nas to build + +2000-12-04 06:31 pgubanov + + * dshow/: PropPage.cpp, PropPage.h: + + Target bitrate fix + +2000-12-04 06:30 pgubanov + + * dshow/: Mpegac.cpp, Mpegac.def, Mpegac.h, PropPage_adv.cpp, + PropPage_adv.h, Property.rc, README, REG.CPP, REG.H, UIDS.H, + dshow.dsp, iaudioprops.h, resource.h: + + CR/LF fix + +2000-12-03 23:27 markt + + * testcase.mp3, libmp3lame/util.c: + + KLEMM_01 defaulted. + + This enables the new ATH formula. + +2000-12-03 23:03 markt + + * libmp3lame/: tables.c, tables.h: + + huffmantab: int changed back to short. + +2000-12-03 23:00 markt + + * DEFINES, Makefile.B32, Makefile.MSVC, Makefile.in, config.h.in, + configMS.h, configure, configure.in, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, + doc/html/contributors.html, doc/html/examples.html, + doc/html/history.html, doc/html/id3.html, doc/html/index.html, + doc/html/lame.css, doc/html/modes.html, doc/html/node6.html, + doc/html/switchs.html, doc/man/Makefile.in, frontend/Makefile.am, + frontend/Makefile.in, frontend/get_audio.c, frontend/get_audio.h, + frontend/gtkanal.c, frontend/main.c, frontend/parse.c, + frontend/portableio.c, include/Makefile.in, include/lame.h, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/pcm.c, libmp3lame/pcm.h, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/version.h, libmp3lame/vorbis_interface.c, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + libmp3lame/i386/cpu_feat.nas, mpglib/Makefile.am, + mpglib/Makefile.in, mpglib/interface.c, mpglib/interface.h: + + + Reverted back to Nov 21 version. + + Added HTML doc from GB + +2000-12-03 17:38 aleidinger + + * configure: + + regen + +2000-12-03 17:37 aleidinger + + * configure.in: + + fix in debugging options + +2000-12-03 14:16 aleidinger + + * DEFINES: + + add KLEMM_36 + +2000-12-03 14:14 aleidinger + + * frontend/portableio.c: + + Portability fix from Frank, you need to define KLEMM_36 to enable it + (no functional change if you leave it disabled): + ---snip--- + It is a hoax to call this code portable-IO: + + - It doesn't work on machines with CHAR_BIT != 8 + - it also don't test this error condition + - otherwise it tries to handle CHAR_BIT != 8 by things like + masking 'putc(i&0xff,fp)' + - It doesn't handle EOF in any way + - it only works with ints with 32 or more bits + - It is a collection of initial buggy code with patching the known errors + instead of CORRECTING them! + For that see comments on the old Read16BitsHighLow() + ---snip--- + +2000-12-03 13:14 aleidinger + + * misc/abx.c: + + Improvements from Frank: + - more input formats (detected by filename) + Improvements by me: + - sanity checks + - works on FreeBSD + +2000-12-01 17:42 aleidinger + + * libmp3lame/: psymodel.c, tables.c, tables.h: + + Patches from Frank: + ---snip--- + defined 4 new types for holding psydata information + psydata is divided into 25 normal tables (the 24 tables + 1 master table) + access via "normal" index instead of scanning through the data + tables are now sparsable, i.e. it is possible to remove unneeded parts + but this is not yet done to avoid to do to much things at once + tables are now smaller + ---snip--- + Hi also did some tests to verify this didn't changes the output. + + I also verified it with "make test" and some regular encoding. + +2000-11-30 10:23 aleidinger + + * DEFINES: + + add description of some compile time defines + +2000-11-30 10:20 aleidinger + + * Makefile.B32: + + sync with recent changes in the other Makefiles: + - HAVExxx -> HAVE_xxx + - HAVE_CONFIG_MS_H + +2000-11-30 10:17 aleidinger + + * frontend/: get_audio.c, get_audio.h: + + - remove check for CHAR_BITS, was a typo from Frank (confirmed by Frank) + - add optimization for unknown SIZEOF_UNSIGNED_LONG (submitted by Frank) + in optimized version of SwapBytesInWords() + - make the optimized version of SwapBytesInWords() the default + (OKed by Mark) + - remove DetermineByteOrder(), we have compile time support for it + +2000-11-30 10:14 aleidinger + + * configure, Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mpglib/Makefile.in, + dshow/Makefile.in, doc/man/Makefile.in, doc/html/Makefile.in, + doc/Makefile.in, Dll/Makefile.in, frontend/Makefile.in, + include/Makefile.in: + + regen + +2000-11-30 10:11 aleidinger + + * libmp3lame/pcm.c: + + - some modifications from Frank + +2000-11-30 10:08 aleidinger + + * configure.in: + + - compile time check for sizeof(int) + - more compiler warnings for debugging + +2000-11-30 10:07 aleidinger + + * config.h.in, configMS.h: + + - compile time value for sizeof(int) + +2000-11-30 10:07 aleidinger + + * libmp3lame/Makefile.am, frontend/Makefile.am, mpglib/Makefile.am: + + - additional options for lclint + +2000-11-30 10:06 aleidinger + + * libmp3lame/i386/Makefile.am: + + - *.lst instead of specifying every file in "CLEANFILES" + +2000-11-27 16:39 aleidinger + + * libmp3lame/: pcm.c, pcm.h: + + submitted by Frank, first revision of a new lame API, not connected to the build yet + +2000-11-26 20:58 robert + + * libmp3lame/: lame.c, util.c, util.h, i386/cpu_feat.nas: + + Part2 of Frank's Patch + + His List of Changes (part 1 + 2): + + - changed the type of the MP3 byte stream from 'char' to 'unsigned char' + - added some 'const' attributes + - added to lame_internal_flags: gfp, frame_size, coding, frame_count + - one code move inside lame.c (mode_ext), one remove (channels_out) + - two new types in util.c + - some bug fixes with Ogg + - SIMD2 detection + +2000-11-26 10:49 robert + + * frontend/get_audio.c, frontend/main.c, include/lame.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/util.h, + libmp3lame/vorbis_interface.c, mpglib/interface.c, + mpglib/interface.h: + + Patch by Frank: + changes from char to unsigned char + +2000-11-25 22:59 robert + + * libmp3lame/quantize.c: + + bug fix for -X6, could result in clicking noises + +2000-11-25 20:40 robert + + * libmp3lame/quantize.c: + + typo "powf()" lend to crashes under windows, fixed + +2000-11-25 18:56 robert + + * libmp3lame/: quantize.c, quantize.h, vbrquantize.c: + + small fix for vbr-mtrh mode + +2000-11-25 18:18 robert + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + util.h, vbrquantize.c: + + removed superfluous memset in vbr_noise_shaping2() + some veryminor speed up for cbr + amp_scalefac cleanup + +2000-11-24 17:28 robert + + * frontend/gtkanal.c: + + Patches by Frank: + + - documentation + - introduced gfc->channels_in + - renamed gfc->stereo into gfc->channels_out + (note by me: stereo would imply a boolean type stereo ? yes/no + what's really annoying and confusing is that we didn't used it that way, + but instead stereo=1 -> mono/1-channel, stereo=2 -> stereo/2-channels) + - minor bug fixes for BitrateIndex search + +2000-11-24 17:06 robert + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/newmdct.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + Patches by Frank: + + - documentation + - introduced gfc->channels_in + - renamed gfc->stereo into gfc->channels_out + (note by me: stereo would imply a boolean type stereo ? yes/no + what's really annoying and confusing is that we didn't used it that way, + but instead stereo=1 -> mono/1-channel, stereo=2 -> stereo/2-channels) + - minor bug fixes for BitrateIndex search + +2000-11-23 23:19 robert + + * libmp3lame/vbrquantize.c: + + some loops manually unrolled into "Duff's Device" + speed improvement for --vbr-mtrh GCC compiled ca. 5 % overall + speed improvement for --vbr-mtrh Intel 4.5 compiled ca. 1-2 % + looks like the intel compiler does a better job on loops + compared to GCC. + +2000-11-23 15:14 robert + + * Makefile.MSVC: + + compromise between size/speed/multi CPU, thanks to Dmitry + +2000-11-23 13:06 aleidinger + + * misc/ath.c: + + readd support for other systems than linux (at least FreeBSD) + +2000-11-22 21:03 robert + + * Makefile.MSVC: + + added little howto into Makefile.MSVC + think MS C compiler works now again + +2000-11-22 01:09 robert + + * frontend/parse.c: + + cosmetics + +2000-11-22 00:30 robert + + * libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize_pvt.c, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/util.c, libmp3lame/version.h, + misc/ath.c: + + some patches by Frank + + - replace ath.c (has with Lame nothing to do) + - lame.c: A line in my new code exchange (see ATHformula problems) + - util.c: ATHformula changed over from kHz to cycles per second (last util formula with kHz been) + - ATHformula below 20 cycles per second (instead of 10 cycles per second) limits (< 20 cycles per second are Infraschall, + additionally the function becomes there completely useless) + - quantize_pvt.c: Effects of ATHformula + - tables.c: + - something documents - + -number of entries over one increases + (20=>21, 11=>12, etc..) + - SNR_s converted and to the obvious values + 0.15/0.18/0.20/0.25/0.30/0.35/0.40 rounded. + - w1 and w2 with 576 multiply (error is < + 0.91*10^-3, it seems in the tables both to have been rounded off as well as with + minimum error have been rounded) - end to OF DATA marker to the integrity test + inserted - a reading in of the table revises: psymodel.c - fewer error-prone code (fewer + * p++) - meaningful error messages for problem localization - Peeeeeeps in the case of + error - removing from loop (now j, is used only farther back; and adapted by k2) - + ATHformula - util.c - some amusing " while" Konstrukte, which originate still from the + ISO code, transformed into the appropriate " for" Konstrukte (with it first some amusing + things are noticeable, so e.g. why starting from index 0 instead of 1 are looked up?) + +2000-11-21 22:15 robert + + * Makefile.MSVC, frontend/gtkanal.c: + + some reorganization in Makefile.MSVC + it's now more commandline configurable + +2000-11-20 20:45 robert + + * frontend/: mp3x.c, parse.c: + + fix for mp3x.c: showed usage twice + fix for parse.c: lame_version_print() + in some situations the text is longer than 80 characters + now the url will be wrapped into the next line, right aligned + if 80 character aren't enough + +2000-11-20 15:08 robert + + * Makefile.MSVC, Makefile.unix, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/quantize.c: + + overhauled Makefile.MSVC for easier configuration + design bug in parse.c fixed (should not include files from engine) + +2000-11-20 01:48 robert + + * Makefile.MSVC, Dll/BladeMP3EncDLL.c: + + it's now possible to compile lame_enc.dll with Makefile.MSVC + tried the DLL with CD-ex, seems to work + +2000-11-20 00:16 robert + + * Makefile.MSVC: + + updated Compile Flags due to crashes + added rule to generate config.h out of configMS.h + first try to let the dll compile, still does not work + +2000-11-19 14:12 robert + + * Makefile.MSVC, Makefile.unix, frontend/gtkanal.c, + libmp3lame/lame.c: + + Some bugs fixed introduced due to configure stuff and others + +2000-11-19 11:26 aleidinger + + * Makefile.MSVC: + + bugfix for decoder define + +2000-11-18 12:13 aleidinger + + * frontend/Makefile.in: + + regen (unbreak build) + +2000-11-18 12:12 aleidinger + + * frontend/Makefile.am: + + bugfix after removing ieeefloat.* + +2000-11-18 10:50 aleidinger + + * frontend/brhist.c, frontend/get_audio.c, frontend/gpkplotting.c, + frontend/gtkanal.c, frontend/lame.dsp, frontend/lametime.c, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/portableio.c, frontend/rtp.c, + frontend/timestatus.c, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/fft.c, libmp3lame/id3tag.c, + libmp3lame/lame.c, libmp3lame/libmp3lame.dsp, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/reservoir.c, + libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c, misc/abx.c, misc/ath.c, + mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/layer1.c, mpglib/layer2.c, + mpglib/layer3.c, mpglib/mpglib.dsp, mpglib/tabinit.c: + + include configMS.h on Windows + +2000-11-18 10:49 aleidinger + + * Makefile.MSVC, Makefile.DJGPP: + + define HAVE_CONFIG_MS_H for Windows + +2000-11-18 10:49 aleidinger + + * Makefile.in: + + regen (configMS.h) + +2000-11-18 10:48 aleidinger + + * Makefile.am, configMS.h: + + introduce configMS.h for Windows + +2000-11-18 05:40 markt + + * README.Debian, debian/changelog, debian/control, + debian/copyright, debian/cron.d.ex, debian/dirs, debian/docs, + debian/emacsen-install.ex, debian/emacsen-remove.ex, + debian/emacsen-startup.ex, debian/ex.doc-base.package, + debian/files, debian/init.d.ex, debian/manpage.1.ex, + debian/manpage.sgml.ex, debian/menu.ex, + debian/postinst.debhelper, debian/postinst.ex, debian/postrm.ex, + debian/preinst.ex, debian/prerm.debhelper, debian/prerm.ex, + debian/rules, debian/substvars, debian/watch.ex, + frontend/brhist.c, frontend/get_audio.c, frontend/main.c: + + added debian stuff. Make one of the KLEMM's the default + +2000-11-18 04:30 markt + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.in, + Makefile.unix, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/get_audio.c, frontend/portableio.c, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mpglib/Makefile.in: + + Makefiles: removed ieeefloat.* from makefiles. + get_audio.c: replaced DetermineByteOrder with original routine. + +2000-11-18 04:24 markt + + * frontend/: Makefile.am, Makefile.in, get_audio.c, get_audio.h, + ieeefloat.c, ieeefloat.h, portableio.c, portableio.h: + + Removed ieeefloat.* + +2000-11-15 18:52 aleidinger + + * frontend/get_audio.c: + + only allow fast SwapBytesInWords if SIZEOF_UNSIGNED_LONG is defined + +2000-11-14 12:25 aleidinger + + * libmp3lame/resample.h: + + remove define of INLINE + +2000-11-14 12:24 aleidinger + + * frontend/ieeefloat.c: + + let configure handle little/big endianess + +2000-11-14 12:20 aleidinger + + * libmp3lame/: bitstream.c, fft.c, newmdct.c, psymodel.c, + quantize.c, takehiro.c, util.c: + + INLINE -> inline + +2000-11-14 12:19 aleidinger + + * libmp3lame/machine.h: + + As discussed on the mailinglist: + - correct when to define INLINE/inline + - INLINE -> inline, configure already does something similar + +2000-11-14 12:18 aleidinger + + * libmp3lame/encoder.c: + + compile time resolvable assertions switched to compile time errors + +2000-11-14 12:18 aleidinger + + * libmp3lame/lame.c: + + - compile time resolvable assertions switched to compile time errors + - adjust version string + +2000-11-14 12:17 aleidinger + + * frontend/parse.c: + + - adjust version string + - sort system includes + +2000-11-14 12:16 aleidinger + + * include/lame.h: + + - quiet 4 lclint "errors" + - disable get_lame_about() + +2000-11-14 12:15 aleidinger + + * libmp3lame/version.c: + + - switched from run time generated version strings to compile time + generated ones + - implement void get_lame_version_numerical(lame_version_t *const) + (#ifdef'ed out) + - disable get_lame_about(), snprintf isn't available in Win32 + +2000-11-13 14:11 aleidinger + + * dshow/Makefile.in: + + regen (add dshow.dsw) + +2000-11-13 14:10 aleidinger + + * dshow/Makefile.am: + + add dshow.dsw + +2000-11-13 14:10 aleidinger + + * misc/mugeco.sh: + + shell math instead of awk math (no leading zeros needed) + +2000-11-13 13:42 pgubanov + + * include/lame.h: + + Explicit CDECL for API + +2000-11-13 13:31 pgubanov + + * dshow/: Encoder.h, Encoder.cpp, dshow.dsp: + + Synchronized with current LAME code + +2000-11-13 10:57 aleidinger + + * libmp3lame/i386/Makefile.am: + + support for CONFIG_DEFS + +2000-11-13 10:57 aleidinger + + * libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + frontend/Makefile.in: + + regen + +2000-11-13 10:56 aleidinger + + * libmp3lame/Makefile.am, frontend/Makefile.am: + + - support for CONFIG_DEFS + - possibility to exclude code to lint + +2000-11-13 10:53 aleidinger + + * frontend/ieeefloat.c: + + remove CVS log tag/information, we have "cvs log" for this + +2000-11-13 10:50 aleidinger + + * frontend/get_audio.c: + + - sort includes + - compile time resolvable assertions switched to compile time errors + - we didn't need to determine the size of "unsigned long" at runtime + (KLEMM_10 case), we're able to do it at compile time (with the help + of configure) + +2000-11-13 10:48 aleidinger + + * libmp3lame/vbrquantize.c: + + - move define of TAKEHIRO_IEEE754_HACK into configure.in + - commented out code -> ifdef'ed out code + (I'm on a anti-warning rampage) + +2000-11-13 10:47 aleidinger + + * libmp3lame/quantize_pvt.c: + + move define of TAKEHIRO_IEEE754_HACK into configure.in + +2000-11-13 10:45 aleidinger + + * misc/: abx.c, ath.c: + + - include config.h + - include correct soundcard.h (with support from configure) + +2000-11-13 10:42 aleidinger + + * configure, config.h.in, Makefile.in: + + regen + +2000-11-13 10:41 aleidinger + + * configure.in: + + - handle TAKEHIRO_IEEE754_HACK + - support for 'CONFIG_DEFS="-Dxxx" ./configure' + - handle endianess + - check for soundcard.h + +2000-11-13 10:39 aleidinger + + * mpglib/Makefile.in: + + regen (add possibility to exclude code for linting) + +2000-11-13 10:38 aleidinger + + * mpglib/Makefile.am: + + add possibility to exclude code for linting + +2000-11-13 10:35 aleidinger + + * misc/mugeco.sh: + + add start and stop date/time + +2000-11-13 09:30 pgubanov + + * dshow/dshow.dsw: + + Initial release + +2000-11-12 22:18 aleidinger + + * misc/mugeco.sh: + + add id + +2000-11-12 22:17 aleidinger + + * misc/mugeco.sh: + + bugfix + +2000-11-12 20:45 aleidinger + + * misc/Makefile.in: + + regen (add mugeco.sh) + +2000-11-12 20:45 aleidinger + + * misc/Makefile.am: + + add mugeco.sh + +2000-11-12 20:43 aleidinger + + * misc/mugeco.sh: + + first version of the multi generation encoder script + +2000-11-12 10:57 aleidinger + + * Makefile.in, configure: + + regen (readd dshow) + +2000-11-12 10:56 aleidinger + + * Makefile.am, configure.in: + + readd dshow + +2000-11-11 23:20 pfk + + * Makefile.DJGPP, Makefile.am, Makefile.in, Makefile.in.old, + Makefile.unix, USAGE, configure, configure.in, + frontend/get_audio.c, frontend/get_audio.h, frontend/main.c, + frontend/parse.c, libmp3lame/bitstream.c, libmp3lame/encoder.h, + libmp3lame/lame.c, libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/reservoir.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/i386/scalar.nas, misc/abx.c: + + + + A lot of very small changes. Most important is prparing of a more + sofisticated method to determine the bandwidth and the MP3 sampling + frequency. + +2000-11-11 17:26 aleidinger + + * configure, Makefile.in: + + regen (add dshow) + +2000-11-11 17:26 aleidinger + + * configure.in, Makefile.am: + + add dshow + +2000-11-11 17:25 aleidinger + + * dshow/: Makefile.am, Makefile.in: + + initial version + +2000-11-11 05:56 markt + + * testcase.mp3, libmp3lame/encoder.c, libmp3lame/machine.h, + libmp3lame/util.c: + + updated testcases after changing some default settings + +2000-11-11 05:47 markt + + * libmp3lame/encoder.c: + + make RH_VALIDATE_MS the default + +2000-11-11 04:40 markt + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/util.c: + + undid some of Frank's changes to the resample code. + +2000-11-11 01:55 markt + + * dshow/Encoder.cpp: + + [no log message] + +2000-11-11 01:53 markt + + * dshow/: Encoder.cpp, Encoder.h, Mpegac.cpp, Mpegac.def, Mpegac.h, + PropPage.cpp, PropPage.h, PropPage_adv.cpp, PropPage_adv.h, + Property.rc, README, REG.CPP, REG.H, UIDS.H, dshow.dsp, + iaudioprops.h, resource.h: + + directshow filter for LAME from Peter Gubanov + +2000-11-10 23:18 pfk + + * frontend/get_audio.c, libmp3lame/lame.c, libmp3lame/machine.h, + libmp3lame/resample.c, libmp3lame/resample.h, libmp3lame/util.c, + libmp3lame/util.h, libmp3lame/i386/scalar.nas, misc/scalartest.c: + + + + Resample continued. + + The old code now uses a 31 Tap FIR for HQ coding and a 7 Tap FIR for MQ and + LQ coding. + +2000-11-10 14:42 aleidinger + + * frontend/.cvsignore, libmp3lame/.cvsignore, mpglib/.cvsignore: + + add lclint.txt + +2000-11-10 14:41 aleidinger + + * frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: + + regen (lclint target) + +2000-11-10 14:40 aleidinger + + * config.h.in: + + regen (HAVE_EFENCE) + +2000-11-10 14:39 aleidinger + + * configure: + + regen (disalbe-shared/HAVE_EFENCE) + +2000-11-10 14:36 aleidinger + + * configure.in: + + - new default: no shared lib + - define HAVE_EFENCE if apropriate + +2000-11-10 14:33 aleidinger + + * mpglib/Makefile.am: + + add lclint target (564 code "errors" found so far) + +2000-11-10 14:33 aleidinger + + * frontend/Makefile.am: + + add lclint target (471 code "errors" found so far) + +2000-11-10 14:32 aleidinger + + * libmp3lame/Makefile.am: + + add lclint target (1505 code "errors" found so far) + +2000-11-10 14:31 aleidinger + + * libmp3lame/quantize.c: + + fix RH_AMP (gfc = gfp->internal_flags) + +2000-11-09 22:01 pfk + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/resample.c, + libmp3lame/resample.h, libmp3lame/i386/scalar.nas, misc/ath.c, + misc/scalartest.c: + + + + Start of resampling. + +2000-11-09 00:29 pfk + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/id3tag.c, + libmp3lame/machine.h, libmp3lame/version.h, misc/ath.c: + + + + Small changes. + + - removed an old function strcasecmp (replaced by fuzzy_strcmp) + - optimized region 2 bitcoder + - remark about version.h (stringification) + - INLINE = inline + static + +2000-11-08 19:59 aleidinger + + * libmp3lame/resample.c, mpglib/layer1.c: + + include assert.h, seems to be forgotten in last commit (how could this + compile?) + +2000-11-07 23:06 pfk + + * frontend/get_audio.c, frontend/parse.c, frontend/timestatus.c, + include/lame.h, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/version.c, + libmp3lame/version.h, misc/ath.c, mpglib/layer1.c: + + + + Changed back to old report interface until we've discussed all possible + versions and make a decision. + + Some bugfixes. Some remarks. + +2000-11-07 15:36 aleidinger + + * configure: + + regen after: + - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + - --disable-analyzer-hooks + - --enable-efence + +2000-11-07 15:36 aleidinger + + * config.h.in: + + HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + +2000-11-07 15:35 aleidinger + + * configure.in: + + - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + - --disable-analyzer-hooks + - --enable-efence (use the ElectricFence malloc debugging library) + +2000-11-07 15:31 aleidinger + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/vorbis_interface.c: + + HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + +2000-11-07 12:42 aleidinger + + * frontend/Makefile.in, libmp3lame/Makefile.in: + + regen after amiga_mpega.c move + +2000-11-07 12:41 aleidinger + + * frontend/Makefile.am, libmp3lame/Makefile.am: + + follow the move of amiga_mpega.c from libmp3lame to frontend + +2000-11-07 01:59 pfk + + * frontend/brhist.c, frontend/get_audio.c, frontend/get_audio.h, + frontend/main.c, libmp3lame/bitstream.c, libmp3lame/version.h: + + + + minor changes. + + some options can be passed via "export LAMEOPT=..." + +2000-11-07 00:58 cisc + + * Makefile.unix, frontend/amiga_mpega.c, libmp3lame/amiga_mpega.c: + + Moved amiga_mpega.c to frontend where it belongs, and added it to Makefile.unix + +2000-11-07 00:14 markt + + * libmp3lame/: bitstream.c, encoder.c, lame.c, psymodel.c, + psymodel.h, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, reservoir.c, reservoir.h, util.c, util.h, + vbrquantize.c: + + removed lame_global_flags pointer from lame_internal_flags. + +2000-11-06 23:19 markt + + * libmp3lame/: lame.c, quantize_pvt.c, util.c, util.h: + + fixed resample bug when resampling by integer amounts. + +2000-11-06 19:26 cisc + + * API: + + Improved get_lame_xxx() API a little bit more + +2000-11-06 19:22 cisc + + * frontend/gtkanal.c, frontend/parse.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/version.c, libmp3lame/version.h: + + Improved get_lame_xxx() API a little bit more + +2000-11-06 17:29 robert + + * libmp3lame/: quantize.c, quantize_pvt.c: + + fixed segmentation fault in Frank's noise calculation + implemented Todd Richmond's idea to speed up the outer_loop() + +2000-11-06 12:31 aleidinger + + * libmp3lame/i386/.cvsignore: + + add .lst files + +2000-11-06 08:22 markt + + * Makefile.am, configure.in, frontend/.indent.pro, + frontend/brhist.c, libmp3lame/.indent.pro: + + went back to frame counts in VBR display + +2000-11-06 04:24 markt + + * frontend/get_audio.c, mpglib/interface.c, mpglib/mpglib.h: + + cleaned up mpeg header search code in get_audio.c + modified mpglib so we can move VBR header code into mpglib + and out of the frontend code. a little more work is still needed. + +2000-11-06 01:13 pfk + + * libmp3lame/: bitstream.c, bitstream.h, id3tag.c, util.o: + + + + Small changes for fuzzy ID3 tag compare. + +2000-11-06 00:58 cisc + + * frontend/gtkanal.c, frontend/parse.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/version.c, libmp3lame/version.h: + + Modified get_lame_xxx() API so it's more re-entrance friendly (returning a const pointer from a static var that's changed every time the function is called is really dirty!). + +2000-11-05 22:27 pfk + + * testcase.mp3, frontend/parse.c, frontend/rtp.h, + frontend/timestatus.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h: + + + + Minor changes. + Added -X8. + +2000-11-05 18:29 pfk + + * frontend/get_audio.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/quantize.c, libmp3lame/util.h, libmp3lame/util.o: + + + + Changed lame_init_???_init to Class_ID. + On initialization this variable gets the value LAME_ID. + Advantages documented. + + Some little Bugs fixed. + +2000-11-05 17:13 takehiro + + * Makefile.in, configure, configure.in, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + frontend/Makefile.in, frontend/main.c, frontend/parse.c, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/newmdct.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + configure.in: typo fix + newmdct.c: precision fix(?) + +2000-11-05 14:52 aleidinger + + * libmp3lame/i386/Makefile.in: + + regen (clean of generated .lst files) + +2000-11-05 14:52 aleidinger + + * libmp3lame/i386/Makefile.am: + + add generated .lst files to files to clean + +2000-11-05 14:41 aleidinger + + * misc/Makefile.in: + + regen after adding scalartest.c + +2000-11-05 14:40 aleidinger + + * misc/Makefile.am: + + add scalartest.c + +2000-11-05 14:34 aleidinger + + * libmp3lame/: util.c~, util.d, util.o: + + remove generated/backup files, seems they are commited by accident + +2000-11-05 13:15 pfk + + * libmp3lame/: tools.c, tools.h: + + + + add file for generic tools. + +2000-11-05 13:09 pfk + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c, libmp3lame/lameerror.h, libmp3lame/psymodel.c, + libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/util.c, + libmp3lame/util.c~, libmp3lame/util.d, libmp3lame/util.h, + libmp3lame/util.o, libmp3lame/version.h, + libmp3lame/i386/scalar.nas, misc/scalartest.c: + + + + * Changed psy_data from double to float (this ssem not to change any bit in + MP3, but saves 20 KB). + + * Other, but small modifications + +2000-11-05 00:19 pfk + + * frontend/brhist.c: + + + + bugfix. Sorry + +2000-11-04 18:15 pfk + + * frontend/brhist.c, frontend/brhist.h, frontend/mp3rtp.c, + frontend/rtp.c, frontend/rtp.h, frontend/timestatus.c, + include/lame.h, libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/tables.c, libmp3lame/version.c, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + libmp3lame/i386/scalar.nas, misc/ath.c: + + + + small changes in brhist. + some tests and modifications for streaming MP3. + other unremarkable stuff + +2000-11-04 02:18 pfk + + * doc/html/switchs.html, frontend/get_audio.c, + frontend/timestatus.c: + + + + Unimportant changes. + +2000-11-03 14:21 aleidinger + + * libmp3lame/id3tag.c: + + more 'const'nes, also saves some bytes in the generated .o + +2000-11-03 14:13 aleidinger + + * libmp3lame/i386/Makefile.in: + + regen after change in Makefile.am + +2000-11-03 14:13 aleidinger + + * libmp3lame/i386/Makefile.am: + + remove trailing backslash in last line of EXTRA_DIST + +2000-11-03 14:08 aleidinger + + * doc/html/contributors.html: + + add myself to contributors + +2000-11-03 14:07 aleidinger + + * configure: + + NOTERMCAP/TERMCAP_AVAILABLE -> HAVE_TERMCAP + +2000-11-03 14:04 aleidinger + + * frontend/brhist.c, configure.in, config.h.in: + + NOTERMCAP/TERMCAP_AVAILABLE -> HAVE_TERMCAP + +2000-11-03 14:00 aleidinger + + * frontend/parse.c: + + add missing include + +2000-11-03 00:47 pfk + + * frontend/brhist.c, frontend/console.c, frontend/console.h, + frontend/mp3rtp.c, frontend/parse.c, frontend/timestatus.c, + include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/resample.h, + libmp3lame/util.c, libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + libmp3lame/i386/scalar.nas: + + + + Minor changes. Biggest ist in bitstream.c, but triggered by KLEMM_14. + +2000-11-02 17:16 pfk + + * TODO, frontend/brhist.c, frontend/console.c, frontend/console.h, + libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/version.c, libmp3lame/i386/scalar.nas: + + + + These are minor changes to a version which fails on my computer. + + * MMX reporting added to get_lame_version(9 as requested by TODO. + * Added 5 files for resampling and console IO. + +2000-11-02 12:57 aleidinger + + * mpglib/: common.c, common.h: + + bugfix for --disable-decoder-layer1 case + +2000-11-01 21:56 markt + + * LICENSE, frontend/parse.c, include/lame.h: + + updated LICENSE to remove comments about libsndfile, + since libsndfile no longer included in library + +2000-11-01 21:54 markt + + * libmp3lame/: .indent.pro, bitstream.c, version.h: + + added indent.pro back to CVS + +2000-11-01 18:25 markt + + * STYLEGUIDE, libmp3lame/encoder.c: + + some more context fixes + +2000-11-01 18:22 markt + + * libmp3lame/: newmdct.c, psymodel.c, quantize.c, quantize_pvt.c, + reservoir.c, reservoir.h, takehiro.c, util.c, vbrquantize.c: + + removed more 'context'. + + lame now segfaults. + +2000-11-01 18:06 markt + + * libmp3lame/: .indent.pro, VbrTag.c, fft.c, fft.h, id3tag.c, + lame.c, newmdct.h, psymodel.h, quantize.h, quantize_pvt.h: + + removing 'context' + +2000-11-01 17:56 markt + + * libmp3lame/: bitstream.c, bitstream.h, util.h: + + restored bitstream.c to original. + drain_into_ancillary_data was written the way it is + on purpose. dont change it without checking with me first + +2000-11-01 17:46 markt + + * libmp3lame/util.h: + + [no log message] + +2000-11-01 17:40 markt + + * libmp3lame/util.h: + + removed 'context' + why was lame_internal_flags renamed context? + This is under the catagory of cosmetic. + +2000-11-01 17:32 markt + + * STYLEGUIDE, frontend/get_audio.c, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c: + + removed some cosmetic changes. + +2000-11-01 16:09 robert + + * frontend/: mp3rtp.c, rtp.c: + + mp3rtp was broken, does now compile again + +2000-11-01 14:35 robert + + * libmp3lame/: quantize.c, quantize_pvt.h: + + only cosmetic changes, done by indent + +2000-11-01 14:31 robert + + * frontend/.indent.pro, libmp3lame/.indent.pro, misc/.indent.pro: + + these files are used by the indent program to pretty format sources + +2000-11-01 00:01 robert + + * frontend/: brhist.c, brhist.h, main.c, timestatus.c: + + some more brhist pretty print + +2000-10-31 13:58 aleidinger + + * frontend/Makefile.in: + + regen after bugfix in Makefile.am + +2000-10-31 13:57 aleidinger + + * frontend/Makefile.am: + + fix build of mp3x + +2000-10-31 13:18 robert + + * Makefile.MSVC, frontend/brhist.c, frontend/lametime.h: + + fixes for bitrate histogram and MS compilation + +2000-10-31 12:18 robert + + * frontend/: lametime.c, parse.c, timestatus.c: + + quick fixes for Console_IO stuff + Console_IO is declared in brhist.c, but when compiling + without bitrate histogram capabilities the code would + not compile anymore + +2000-10-30 23:58 robert + + * Makefile.MSVC, Makefile.unix: + + analyzer stuff was moved to frontend + because of automake/configure + +2000-10-30 22:34 robert + + * libmp3lame/vbrquantize.c: + + Takehiro's IEEE754 hack for VBR modes new and mtrh + +2000-10-30 11:28 aleidinger + + * Makefile.in: + + we didn't need acconfig.h, so don't depend on it + +2000-10-30 10:51 robert + + * libmp3lame/util.c: + + BUG fix for debug code for BUG fix for fill_buffer_resample() ;-( + +2000-10-30 10:48 robert + + * libmp3lame/util.c: + + BUG fix for fill_buffer_resample() + +2000-10-29 22:26 robert + + * libmp3lame/util.c: + + small fix for fill_buffer_resample() + some buffers where too small allocated, but this will + not really help, the routine has some ugly looking points + left that need to be fixed. + +2000-10-29 21:11 robert + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + id3tag.c, lame.c, quantize.c, quantize_pvt.c, reservoir.c, + reservoir.h, util.c, util.h, vbrquantize.c: + + gfp gfc stuff FINISHED for now + +2000-10-29 20:03 robert + + * libmp3lame/: encoder.c, fft.c, fft.h, newmdct.c, newmdct.h, + psymodel.c, psymodel.h, quantize_pvt.h, takehiro.c: + + a step further with this gfp gfc stuff + +2000-10-29 19:15 robert + + * libmp3lame/: quantize_pvt.h, takehiro.c, util.h: + + some more gfc stuff + +2000-10-29 18:12 robert + + * libmp3lame/: encoder.c, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, takehiro.c, vbrquantize.c: + + more on gfp gfc reorganization + +2000-10-29 16:37 robert + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, + takehiro.c, vbrquantize.c: + + gfp gfc reorganization + +2000-10-29 13:58 robert + + * libmp3lame/: fft.c, lame.c, psymodel.c, quantize.c, + quantize_pvt.c, util.h: + + data encapsulating Naoki's psymode + +2000-10-29 12:52 aleidinger + + * .cvsignore: + + add some config.h related files + +2000-10-29 12:51 aleidinger + + * configure: + + now with support for config.h + +2000-10-29 12:50 aleidinger + + * Makefile.in, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + regenerated after adding support for config.h + +2000-10-29 12:49 aleidinger + + * frontend/Makefile.am, libmp3lame/Makefile.am, mpglib/Makefile.am: + + support for config.h + +2000-10-29 12:47 aleidinger + + * config.h.in, stamp-h.in: + + config.h support + +2000-10-29 12:45 aleidinger + + * frontend/brhist.c, frontend/get_audio.c, frontend/gpkplotting.c, + frontend/gtkanal.c, frontend/ieeefloat.c, frontend/lametime.c, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/portableio.c, frontend/rtp.c, + frontend/timestatus.c, configure.in, aclocal.m4: + + support for config.h + +2000-10-29 12:41 aleidinger + + * mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/layer1.c, mpglib/layer2.c, + mpglib/layer3.c, mpglib/tabinit.c, libmp3lame/VbrTag.c, + libmp3lame/amiga_mpega.c, libmp3lame/bitstream.c, + libmp3lame/debugscalefac.c, libmp3lame/encoder.c, + libmp3lame/fft.c, libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/reservoir.c, + libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c: + + support for config.h + +2000-10-28 21:57 pfk + + * configure, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c: + + + + CRC table based code removed + + Ease CRC header calculation + +2000-10-28 14:23 pfk + + * frontend/get_audio.c, frontend/lametime.c, frontend/lametime.h, + frontend/main.c, frontend/mp3x.c, frontend/parse.c, + include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/util.c, libmp3lame/util.h: + + + + Moved 2 functions from util.c to lametime.c + + Fixed a memory leak caused by an early return + + bitstream: Local crc moved to gfp->crcvalue, next step can be to remove a + function parameter + + minor changes + +2000-10-28 12:31 robert + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + hunting some BUGs, but still not found + encoding a mono VBR resampled to 11 kHz shows some strange behaviour + +2000-10-28 10:47 aleidinger + + * Dll/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + don't use gtar instead of tar + +2000-10-28 10:42 aleidinger + + * lame.spec: + + lame.spec gets now generated at configure time from lame.spec.in + +2000-10-28 10:40 aleidinger + + * Makefile.am, Makefile.in: + + - add lame.spec.in to distribution + - remove lame.spec from distribution + - show how long lame needs for the testcase + +2000-10-28 10:35 aleidinger + + * configure.in, configure: + + - generate lame.spec from lame.spec.in + - CPU specific optimizations (x86, gcc 2.7.3.x or better) + +2000-10-28 10:32 aleidinger + + * lame.spec.in: + + template for configure to generate lame.spec + +2000-10-28 01:29 pfk + + * include/lame.h, libmp3lame/lame.c, libmp3lame/util.c, + libmp3lame/util.h, libmp3lame/version.h: + + + + short => sample_t in lame_encode_buffer and all the related stuff + + some essential but simple speedups in resampling code + + resulting MP3 will be different from previous + + code modification not finished, this is only half of the work + +2000-10-27 23:04 robert + + * libmp3lame/vbrquantize.c: + + max_range tables + +2000-10-27 21:50 pfk + + * frontend/main.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/util.c, libmp3lame/util.h: + + + + KLEMM_04(old) removed, scalar routines introduced. + +2000-10-27 21:34 robert + + * libmp3lame/vbrquantize.c: + + LSF needs some different max_range tables + I plugged some in and it seems to work + they are designed after max_sfac_tab[6][4] + you may look into scale_bitcount_lsf() + +2000-10-27 16:30 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + LSF hack for vbr-mtrh VBR mode + +2000-10-27 15:48 takehiro + + * libmp3lame/newmdct.c: + + bit optimization + +2000-10-27 11:27 robert + + * libmp3lame/quantize_pvt.c, mpglib/layer3.c: + + BUG in frame analyzer fixed, there was some wild pointer used + in layer3.c in preflag condition + +2000-10-27 11:19 takehiro + + * libmp3lame/: machine.h, tables.c, tables.h, + i386/choose_table.nas: + + 64bit int lookup table moved from C code to asm code. + +2000-10-26 19:07 pfk + + * frontend/brhist.c, frontend/get_audio.c, frontend/mp3rtp.c, + frontend/timestatus.c, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/psymodel.c, libmp3lame/util.c, misc/ath.c: + + + + Make some modifications active. + + No Termcap terms are now handled in the same way like termcap terms. + +2000-10-25 22:18 robert + + * libmp3lame/: quantize.c, quantize.h, quantize_pvt.h, + vbrquantize.c: + + improved vbr_mtrh VBR mode + +2000-10-25 14:03 aleidinger + + * frontend/Makefile.am: + + prevent the CVS Id from being integrated into Makefile.in + +2000-10-24 22:47 robert + + * Makefile.MSVC, Makefile.unix, libmp3lame/quantize.c: + + improved RH_AMP + +2000-10-24 22:17 pfk + + * frontend/get_audio.c, libmp3lame/mpglib_interface.c, + libmp3lame/psymodel.c: + + + + Better syncword recognization + +2000-10-24 18:11 takehiro + + * configure, configure.in, frontend/Makefile.in, + libmp3lame/machine.h: + + configure/configure.in + added "--enable-all-float", which make FLOAT8 as float + + machine.h + FLOAT (and FLOAT8) typedef fix for alpha processor + +2000-10-24 17:44 takehiro + + * libmp3lame/newmdct.c: + + loop integration. + "make test" may find some difference caused by some rounding problem + +2000-10-24 15:01 robert + + * libmp3lame/quantize.c: + + fix for -q7 mode + +2000-10-24 13:54 robert + + * libmp3lame/quantize.c: + + typo + +2000-10-24 13:28 robert + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + some simplifications + +2000-10-24 11:40 robert + + * Makefile.MSVC, Makefile.unix, libmp3lame/quantize.c: + + improvements, need some compile time defines, look into Makefile.unix + +2000-10-23 18:59 robert + + * libmp3lame/machine.h: + + FLOAT is float, FLOAT8 is double again ;-) + +2000-10-23 15:50 takehiro + + * Makefile.am, Makefile.in, frontend/Makefile.in: + + more make test update + +2000-10-23 15:44 takehiro + + * libmp3lame/machine.h: + + sorry, mistaken check in.... + +2000-10-23 15:40 takehiro + + * Makefile.am, Makefile.in, lame.spec, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/machine.h, + libmp3lame/i386/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + "make test" update + +2000-10-23 15:40 takehiro + + * libmp3lame/bitstream.c: + + cosmetic change + +2000-10-23 10:16 aleidinger + + * Makefile.in: + + update after change to Makefile.am + +2000-10-23 10:16 aleidinger + + * Makefile.am: + + let test targetbuild frontend/lame if it isn't already build + - didn't work with "make -j 4 test" + - IMHO the previous version was a feature + (requested by Takehiro-san) + + splittet test target into more subtargets + + corrected testg target + + added CVS_RSH=ssh to update/diff target + +2000-10-22 22:50 robert + + * libmp3lame/psymodel.c: + + fix for short block I introduced 2000-10-19 + +2000-10-22 18:20 pfk + + * Makefile.unix, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.c, frontend/main.c, frontend/parse.c, + frontend/parse.h, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/lame.c, + libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/version.c, libmp3lame/version.h, misc/ath.c: + + + + A lot of small changes, most of them must be switched on via compile time + defines. + + vbr displays shows MS and LR frames different. + + vbr displays depends on the current display width. + +2000-10-22 15:36 takehiro + + * Makefile.am: + + do "make test" with one step + +2000-10-22 15:28 takehiro + + * .cvsignore, Dll/.cvsignore, doc/.cvsignore, doc/html/.cvsignore, + doc/man/.cvsignore, frontend/.cvsignore, include/.cvsignore, + libmp3lame/.cvsignore, libmp3lame/i386/.cvsignore, + misc/.cvsignore, mpglib/.cvsignore: + + igonore Makefile.am things (.libs, .deps, and so on) + +2000-10-22 15:17 takehiro + + * libmp3lame/.cvsignore, mpglib/.cvsignore: + + added *.lo + +2000-10-22 12:06 aleidinger + + * ltconfig, ltmain.sh, missing, mkinstalldirs: + + generated by automake/libtool + +2000-10-22 12:02 aleidinger + + * frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: + + generated by automake + +2000-10-22 12:01 aleidinger + + * configure: + + now with automake/libtool support + +2000-10-22 12:00 aleidinger + + * confdefs.h: + + seems to get generated at configure time + +2000-10-22 11:58 aleidinger + + * aclocal.m4: + + generated by aclocal + +2000-10-22 11:58 aleidinger + + * configure.in: + + - add asm support if nasm is found + (if we support this, see ASM_FOR_ARCH) + - added automake support + - added libtool support + (a Dll user should look into "AC_LIBTOOL_WIN32_DLL" of the libtool + documentation and send apropriate patches) + - --enable-{mp3x,mp3rtp} + - only build analyzer if GTK is present + - set CPUTYPE (to use asm routines where supported) + - --enable-decoder* -> --disable-decoder* + +2000-10-22 11:57 aleidinger + + * acinclude.m4: + + remove GTK entry, "aclocal" takes care of it in aclocal.m4 + +2000-10-22 11:53 aleidinger + + * misc/Makefile.am: + + Initial automake support + +2000-10-22 11:52 aleidinger + + * Dll/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, include/Makefile.in, + libmp3lame/i386/Makefile.in, misc/Makefile.in, Makefile.in: + + generated by automake + +2000-10-22 11:50 aleidinger + + * frontend/: README.Win32, gpkplotting.c, gpkplotting.h, gtkanal.c, + gtkanal.h, mp3x.c, mp3x.dsp, mp3x.dsw: + + moved from analyzer/... because automake didn't allows sources for one + program/library to be in more than one directory (at least without + hacks) + +2000-10-22 11:46 aleidinger + + * Makefile.am: + + - initial automake support + - delete testcase.new.mp3 on "clean" + - added "update" target, does a cvs update + - added "diff" target, does a cvs diff -u + +2000-10-22 11:44 aleidinger + + * frontend/Makefile.am: + + - initial automake support + - conditionally build mp3x/mp3rtp + +2000-10-22 11:43 aleidinger + + * libmp3lame/: Makefile.am, i386/Makefile.am: + + Initial automake/libtool support: + - if nasm is detected and we have asm for this @CPUTYPE@: + * include asm support + - didn't build without decoder: "undefined reference to `mpg123_pinfo'" + +2000-10-22 11:41 aleidinger + + * mpglib/Makefile.am: + + Initial automake/libtool support: + - mpglib gets linked to libmp3lame.{a,so} + - isn't installed on it's own + +2000-10-22 11:39 aleidinger + + * Dll/Makefile.am, doc/Makefile.am, doc/html/Makefile.am, + doc/man/Makefile.am, include/Makefile.am: + + Initial automake support. + +2000-10-22 10:19 takehiro + + * libmp3lame/: l3side.h, newmdct.c, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c, vbrquantize.c: + + 1. changed sfb_smax to sfb_smin. it is really minimum number, and so confusing. + 2. prepare for mixed block + 3. prepare for asm quantize code + +2000-10-22 09:41 takehiro + + * libmp3lame/: fft.c, util.h: + + no need to be in internal flag for constants + +2000-10-22 09:27 takehiro + + * libmp3lame/: Makefile.in, encoder.c, newmdct.c, newmdct.h, + util.h: + + 1 (util.h) deleted unused flag from internal flags + 2 (newmdct) in place code of mdct_short + 3 some cosmetic change + +2000-10-22 08:25 takehiro + + * libmp3lame/newmdct.c: + + code clean up + +2000-10-22 06:56 takehiro + + * libmp3lame/machine.h: + + deleted old remark about asm routine + +2000-10-22 06:56 takehiro + + * libmp3lame/newmdct.c: + + code cleanup + +2000-10-21 19:28 takehiro + + * libmp3lame/: quantize_pvt.c, i386/choose_table.nas: + + reduce memory assumption little and bit faster choose_table + +2000-10-21 19:11 takehiro + + * libmp3lame/newmdct.c: + + add coment and remove unused code + +2000-10-21 19:01 takehiro + + * libmp3lame/newmdct.c: + + bit optimization and now thread safe, I think. + +2000-10-21 17:24 takehiro + + * libmp3lame/newmdct.c: + + brute force loop unrolling and some elimination of multiple. + bit faster. + +2000-10-21 13:05 robert + + * libmp3lame/: encoder.c, quantize.c, quantize_pvt.c, + quantize_pvt.h, vbrquantize.c: + + frame analyzer info will now be set up in main encoding + routine only, for the whole frame. problem with SCFSI fixed + +2000-10-20 21:46 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Added lame alpha, beta version and if MMX is enabled to the version interface, + should be backward compatible + +2000-10-20 21:43 afaber + + * frontend/brhist.c: + + Fixed histgramming display for Win32, added fflush + +2000-10-20 20:50 afaber + + * frontend/: brhist.c, brhist.h: + + Resolved const mistach beween BRHIST function declartions + +2000-10-20 20:49 afaber + + * libmp3lame/libmp3lame.dsp: + + Added MPGLIB define + +2000-10-20 19:28 robert + + * misc/: abx.c, ath.c: + + initial checkin + +2000-10-20 13:04 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + I think I fixed a BUG in subblock gain code + +2000-10-19 21:10 robert + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c: + + fixed BUG in atQ table, removed --raise-smr stuff + +2000-10-18 17:34 robert + + * libmp3lame/lame-analysis.h: + + no way to disable analysis for lame-lib + +2000-10-18 16:47 robert + + * libmp3lame/lame-analysis.h, mpglib/layer3.c, mpglib/mpglib.h: + + fixed some ambiguities + define NOANALYSIS as suggested in INSTALL if you don't want + to collect some analysis data + +2000-10-18 11:18 robert + + * frontend/brhist.c, include/lame.h, libmp3lame/lame.c: + + some tweaks + +2000-10-18 11:02 shibatch + + * libmp3lame/psymodel.c: + + Rewrote double to FLOAT8. + +2000-10-18 10:55 shibatch + + * libmp3lame/psymodel.c: + + Added short block pre-echo control to --nspsytune. + This improves castanets.wav. + +2000-10-17 22:59 pfk + + * STYLEGUIDE, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.h, frontend/main.c, frontend/parse.c, + frontend/parse.h, frontend/timestatus.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/psymodel.c, libmp3lame/util.h: + + + + * small changes to prepare to add a lame float interface + * other stuff + +2000-10-17 00:13 pfk + + * Makefile.unix, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.c, frontend/timestatus.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/fft.c, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/quantize_pvt.c, libmp3lame/version.c, + libmp3lame/version.h: + + + + removed some shorts. + two version of version report + some minor changes + +2000-10-16 22:19 robert + + * frontend/: brhist.c, main.c: + + cosmetics + +2000-10-16 19:55 florian + + * Makefile.in, configure, configure.in, libmp3lame/Makefile.in, + libmp3lame/lame.c, mpglib/Makefile.in: + + integrated Alexanders patch, minor bug fixes + +2000-10-16 19:29 robert + + * libmp3lame/: tables.c, tables.h, takehiro.c: + + takehiro.c now thread safer + +2000-10-16 19:27 robert + + * frontend/brhist.h: + + missing include files + +2000-10-16 10:03 robert + + * Makefile.unix: + + some convenience + +2000-10-16 02:40 markt + + * include/lame.h, libmp3lame/VbrTag.c: + + [no log message] + +2000-10-16 02:29 markt + + * include/lame.h: + + added some prototypes. no code yet + +2000-10-16 02:29 markt + + * API: + + added some lame_set_variable prototypes in lame.h + +2000-10-16 02:17 markt + + * frontend/mp3rtp.c, include/lame.h, libmp3lame/fft.h, + libmp3lame/lame.c: + + fixed fft.h defines + +2000-10-16 02:12 markt + + * API, Makefile.in, configure, configure.in: + + broken frame analyzer fixed - -DANALYSIS was missing from default + library build + +2000-10-16 01:38 markt + + * frontend/: get_audio.c, main.c, mp3rtp.c: + + fixed broken fskip() + +2000-10-16 01:37 markt + + * STYLEGUIDE, Dll/BladeMP3EncDLL.c: + + fixed Frank's broken fskip() + +2000-10-16 00:44 markt + + * libmp3lame/: Makefile.in, mpglib_interface.c, util.c, util.h: + + made data for resampling dynamically allocated + +2000-10-16 00:28 pfk + + * STYLEGUIDE, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.c, frontend/parse.c, frontend/timestatus.c, + frontend/timestatus.h: + + + + Most changes must be switched on via KLEMM_0[0-9]. + Also some minor changes. + Start of short documenation of the source code. + + _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + + **************** + *** #defines *** + **************** + + KLEMM_01: Use my experimental data to calculate ATH + But masking for >16 kHz seems to be buggy. + KLEMM_02: lame_set_stream_binary_mode() and lame_get_file_size() as + lib function, still searching a better place for that + KLEMM_03: not more used + KLEMM_04: faster FIR filter with less rounding errors + KLEMM_05: sparse VBR bitrate display + KLEMM_06: fskip() uses fseek() if possible + KLEMM_07: use of timestatus_klemm.c which only uses timestatus.c functions, + some code clarification and documentation + +2000-10-15 22:46 markt + + * libmp3lame/: util.c, util.h: + + lowpass filtering data structurs made dynamic + +2000-10-15 21:23 markt + + * USAGE: + + [no log message] + +2000-10-15 21:17 markt + + * frontend/get_audio.c, libmp3lame/VbrTag.c: + + Fixed bug parsing Xing VBR header: lame will now compute + correct number of frames when decoding + +2000-10-15 20:54 markt + + * Makefile.unix, frontend/get_audio.c, frontend/main.c: + + playback bugfix + +2000-10-15 20:12 markt + + * Dll/BladeMP3EncDLL.c: + + msv6 dll project files updated + +2000-10-15 20:11 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw (MSVC6): + + msvc6 update + +2000-10-15 20:05 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: + + reverted back to MSVC5 project files. + accidently changed them to my MSVC6 versions. + + Albert, when are you goint to upgrade!!!! + +2000-10-15 20:02 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: + + msv6 dll project files updated + +2000-10-15 19:51 markt + + * libmp3lame/lame.c: + + fixed typo + +2000-10-15 19:33 markt + + * USAGE, include/lame.h, libmp3lame/lame.c: + + updated USAGE + +2000-10-15 19:10 markt + + * API, USAGE, Dll/BladeMP3EncDLL.c: + + edited API, USAGE + +2000-10-14 19:18 robert + + * libmp3lame/i386/cpu_feat.nas: + + BUG in 3DNow detection fixed, was my faulty porting to NASM + +2000-10-14 11:42 robert + + * libmp3lame/: takehiro.c, util.h: + + takehiro.c now thread safe ? + +2000-10-14 10:08 pfk + + * frontend/brhist.c, libmp3lame/psymodel.c: + + + + psymodel: FIR filter changed, trigger with KLEMM_04 + brhist: display changed back to the old display, new display must be + triggered by KLEMM_05 + +2000-10-13 22:58 pfk + + * frontend/brhist.c, frontend/brhist.h, frontend/main.c, + frontend/timestatus.c, include/lame.h, libmp3lame/util.c: + + + + Changes are commented in brhist.c or must be enabled with KLEMM_xx. + +2000-10-13 16:43 robert + + * frontend/brhist.c, frontend/brhist.h, frontend/main.c, + include/lame.h, libmp3lame/lame.c: + + bitrate histogram is working again + +2000-10-13 15:24 robert + + * Makefile.unix: + + small fixes + +2000-10-13 05:37 florian + + * frontend/Makefile.in, frontend/Makefile.in.old, + libmp3lame/Makefile.in, libmp3lame/Makefile.in.old: + + prepare for automake: new vars, system dependent checks to configure.in + +2000-10-13 05:17 florian + + * Makefile.in, Makefile.in.old, configure, configure.in, + configure.in.old: + + prepare for automake: new vars, system dependent checks to configure.in + +2000-10-12 19:19 florian + + * acinclude.m4, aclocal.m4, configure.in: + + Preparing for automake + +2000-10-12 17:48 robert + + * Makefile.MSVC, Makefile.unix: + + NASM specific fixes + +2000-10-12 17:19 robert + + * libmp3lame/i386/cpu_feat.nas: + + CPU feature code using NASM + +2000-10-12 17:18 robert + + * Makefile.MSVC, libmp3lame/Makefile.in, libmp3lame/util.c: + + CPU feature detection code now using NASM + +2000-10-12 08:59 shibatch + + * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.c, util.h: + + Add two new features to --nspsytune. + 1. New block type selecting algorithm. + 2. Improved noise shaping at high bitrate CBR. Turned on by -q1 --nspsytune. + +2000-10-12 00:50 robert + + * Makefile.MSVC: + + it's getting better :-) + +2000-10-12 00:49 robert + + * frontend/parse.c: + + BUG fix in case LAME compiled without GTK, then called with -g + +2000-10-11 23:08 robert + + * libmp3lame/: Makefile.in, quantize_pvt.c, util.c: + + fixes for Frank's ATH + +2000-10-11 18:45 robert + + * include/lame.h, libmp3lame/lame.c: + + added alternative to lame_encode_finish: + - lame_encode_flush, does the same as lame_encode_finish + but will not free lame internal buffers + - lame_close, will free lame internal buffers + + So the following is equivalent to lame_encode_finish + lame_encode_flush() + + lame_close() + + But this adds the possibility to get some more + analyzing after all frames are encoded. + + Suggested to use with + lame_bitrate_hist() + lame_stereo_mode_hist() + +2000-10-11 17:54 robert + + * libmp3lame/: encoder.c, lame.c, util.c, util.h: + + simple statistics (histogram) added, + problem: lame_encode_finish() also frees internal buffer + solution: two new functions splitting lame_encode_finish() + into lame_encode_flush() and lame_close() + +2000-10-10 23:18 pfk + + * libmp3lame/util.c: + + + + Additional ATH calculation (enabled by KLEMM_01). + +2000-10-10 20:26 robert + + * libmp3lame/: lame.c, takehiro.c: + + use of MMX should be safe on non MMX CPUs now, + but this will not work on Microsoft platforms. + We will have to adapt the assembler routines + for the MS assembler or for NASM. + +2000-10-10 19:36 robert + + * Makefile.MSVC, libmp3lame/util.c: + + Makefile work + +2000-10-10 18:34 robert + + * libmp3lame/lame.c: + + cut'n'paste devil :( + +2000-10-10 18:28 robert + + * libmp3lame/: lame.c, util.c, util.h: + + Frank's CPU feature detection code added + +2000-10-10 17:59 afaber + + * Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h, frontend/brhist.c, + libmp3lame/VbrTag.c, libmp3lame/libmp3lame.dsp: + + MSVC Win32 updates, added Alpha Beta version numbers to DLL version structure + (should be backward compatible) + +2000-10-10 05:31 markt + + * TODO: + + notes about what needs to be done for configure + +2000-10-09 19:55 markt + + * libmp3lame/: encoder.h, lame-analysis.h: + + [no log message] + +2000-10-09 19:55 markt + + * TODO, frontend/timestatus.c, include/lame.h: + + generic cleanup + +2000-10-09 19:42 markt + + * TODO: + + frame analyzer now works with ./configure, at least for linux + +2000-10-09 19:29 markt + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, TODO, configure, + configure.in, frontend/get_audio.c, frontend/get_audio.h: + + attept to fix Makefiles.B32, DJGPP, MSVC. + +2000-10-09 16:27 markt + + * libmp3lame/lame-analysis.h: + + [no log message] + +2000-10-09 16:23 markt + + * Makefile.in, Makefile.unix, aclocal.m4, configure, configure.in, + frontend/Makefile.in, frontend/main.h, + libmp3lame/lame-analysis.h: + + moved mp3x -> analyzer (name was clashing with executable name) + work on configure to get mp3x to compile (not yet done) + but gtk stuff in configure.in now working + +2000-10-09 14:38 markt + + * libmp3lame/lame.c: + + added a comment about downsampling + +2000-10-08 20:08 markt + + * frontend/main.c, frontend/timestatus.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, libmp3lame/encoder.c, + libmp3lame/lame.c: + + cleaned up VBR tag stuff + +2000-10-08 19:43 markt + + * frontend/get_audio.c, frontend/get_audio.h, frontend/main.c, + frontend/main.h, frontend/mp3rtp.c, frontend/parse.c, + frontend/parse.h, frontend/timestatus.c, frontend/timestatus.h, + include/lame.h, libmp3lame/lame.c, libmp3lame/version.c, + libmp3lame/version.h: + + lots of changes, just trying to get things to compile. + +2000-10-08 17:48 markt + + * libmp3lame/id3tag.h: + + Trying to add id3tag.h again. + +2000-10-07 08:25 robert + + * lame4dos.bat: + + bug fixes by Alexander Stumpf + +2000-10-07 05:04 markt + + * libmp3lame/: id3tag.c, util.h: + + missing id3tag.h include files for util.h, id3tag.c + +2000-10-07 05:00 markt + + * INSTALL, Makefile.unix, Dll/LameDLLInterface.htm, + frontend/main.c, frontend/main.h, include/lame.h, + libmp3lame/id3tag.c, libmp3lame/lame.c, libmp3lame/util.c, + libmp3lame/util.h: + + id3tag_spec made it back into lame.h. deleted. + + frameNum has to be in the library - the front end has no way + of correctly counting frames unless it parses the mp3 output + headers. totalframes should also probably be in the library. + +2000-10-06 21:16 florian + + * Makefile.in, configure, configure.in, frontend/Makefile.in, + libmp3lame/Makefile.in: + + minor changes for install and uninstall + +2000-10-06 13:19 takehiro + + * libmp3lame/: id3tag.c, lame.c, util.h: + + quick fix, maybe work but not checked hard + +2000-10-06 13:19 takehiro + + * frontend/main.c, include/lame.h: + + quick fix, I don't check this + +2000-10-06 00:55 markt + + * libmp3lame/: id3tag.c, lame.c, util.h: + + id3tag cleanup + +2000-10-06 00:54 markt + + * frontend/parse.c, include/lame.h: + + id3 stuff cleaned up. id3 related strucs made internal to the + library + +2000-10-05 19:53 cisc + + * frontend/: get_audio.c, get_audio.h: + + small correction + +2000-10-05 05:18 markt + + * TODO, frontend/Makefile.in: + + [no log message] + +2000-10-05 05:13 markt + + * Makefile.in, configure, configure.in, libmp3lame/Makefile.in: + + more configure work. + +2000-10-05 04:50 markt + + * testcase.mp3: + + updated testcase + +2000-10-05 04:49 markt + + * Makefile.in, libmp3lame/psymodel.c: + + added comment about Naoki's blocktype bug fix. + also, for JSTEREO but with the '-d' option, L and R channels + can have different block types, so we cant just look at the + block type for channel 0 + +2000-10-05 04:31 markt + + * Makefile.in, frontend/Makefile.in: + + forgot to add Makefile.in + +2000-10-04 22:37 robert + + * Lame.vbs: + + needs Windows Script >= 5.1, donated by Ralf Kempkens + +2000-10-04 17:13 afaber + + * Dll/Example.dsw, Dll/MP3EncDll.dsp, libmp3lame/libmp3lame.dsp, + mpglib/mpglib.dsp: + + MSVC project update(s) to new layout of the libmp3lame files + +2000-10-04 12:48 shibatch + + * libmp3lame/psymodel.c: + + Bugfix of long block pre-echo control. + +2000-10-04 12:13 takehiro + + * libmp3lame/i386/: choose_table.nas, fft.nas, fft3dn.nas, + fftfpu.nas, fftsse.nas, ffttbl.nas, nasm.h: + + moved i386 directory + +2000-10-04 04:26 markt + + * libmp3lame/Makefile.in: + + [no log message] + +2000-10-04 04:23 markt + + * configure, configure.in: + + make still does not work. some kind of infinite loop + +2000-10-04 04:00 markt + + * Makefile.unix: + + more configure work + +2000-10-04 03:54 markt + + * Makefile.in, Makefile.unix, VbrTag.c, VbrTag.h, amiga_mpega.c, + bitstream.c, bitstream.h, configure, configure.in, + debugscalefac.c, encoder.c, encoder.h, fft.c, fft.h, id3tag.c, + l3side.h, lame-analysis.h, lame.c, machine.h, mpglib_interface.c, + newmdct.c, newmdct.h, psymodel.c, psymodel.h, quantize.c, + quantize.h, quantize_pvt.c, quantize_pvt.h, reservoir.c, + reservoir.h, tables.c, tables.h, takehiro.c, util.c, util.h, + vbrquantize.c, version.c, version.h, vorbis_interface.c, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/amiga_mpega.c, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/id3tag.c, libmp3lame/l3side.h, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/machine.h, libmp3lame/mpglib_interface.c, + libmp3lame/newmdct.c, libmp3lame/newmdct.h, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/reservoir.h, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c, + libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/vorbis_interface.c: + + + Moved everything to libmp3lame. worked on configure, but + not quite working. + +2000-10-04 03:01 markt + + * frontend/aclocal.m4, frontend/configure, frontend/configure.in, + mpglib/configure, mpglib/configure.in: + + removed more configure files in subdirectories. + There should only be one ./configure, in the main directory + +2000-10-04 02:57 markt + + * configure, configure.in, frontend/get_audio.c, + frontend/get_audio.h, frontend/timestatus.c, + frontend/timestatus.h: + + more configure work + +2000-10-04 01:07 markt + + * configure, configure.in, frontend/Makefile.in: + + more configure patches for frontend. + +2000-10-04 01:02 markt + + * TODO, configure, configure.in, frontend/configure: + + new configure that doesn't run configure in all the subdirectories! + +2000-10-03 22:08 afaber + + * README.WINGTK, lamelib.dsp, frontend/lame.dsp, frontend/lame.dsw, + libmp3lame/libmp3lame.dsp, mpglib/mpglib.dsp: + + Re-organized some of the MSVC project files, fixes to compile mp3x again on Win32 platform + +2000-10-03 17:56 robert + + * fft.c: + + removed unused includes + +2000-10-03 10:32 robert + + * fft.c, fft.h, lame.c, psymodel.c, quantize.c, quantize_pvt.c, + util.h: + + fft.c now thread safe !? + +2000-10-03 09:44 robert + + * encoder.c, newmdct.c, newmdct.h: + + removed redundancies + +2000-10-03 09:43 robert + + * testcase.mp3: + + updated testcase for LAME 3.88 alpha 1 + +2000-10-03 04:07 markt + + * INSTALL: + + Some configure options are for the library, some are for + the front end. How do we pass front end options to + frontend/configure? + +2000-10-03 03:57 markt + + * Makefile.in: + + [no log message] + +2000-10-02 10:15 markt + + * Makefile.in: + + make -> $(MAKE) + +2000-10-02 09:00 markt + + * quantize_pvt.h: + + Fix for winamp bug. (commented out for now) + +2000-10-02 06:20 markt + + * aclocal.m4, configure, configure.in, frontend/configure, + frontend/configure.in: + + configure updates + +2000-10-01 19:05 afaber + + * lamelib.dsp, frontend/lame.dsp, mpglib/mpglib.dsp: + + Adapted project file in order to compile it again with the MSVC compiler + +2000-10-01 18:34 markt + + * Makefile.in: + + [no log message] + +2000-10-01 18:25 markt + + * INSTALL, Makefile.in, id3tag.c, lame-analysis.h, lame.c, + frontend/Makefile.in, frontend/configure, frontend/configure.in, + frontend/main.c, frontend/parse.c, include/lame-analysis.h, + include/lame-id3tag.h, include/lame.h: + + trying to move decoding back into library + +2000-10-01 17:58 afaber + + * frontend/get_audio.c: + + Make it compile again with MSVC compiler + +2000-10-01 17:17 markt + + * frontend/: gpkplotting.c, gpkplotting.h, gtkanal.c, main.c, + mp3x.c: + + moved GTK frame analyzer stuff into mp3x + +2000-10-01 15:29 takehiro + + * Makefile.in, aclocal.m4, configure, configure.in, + mpglib_interface.c, vorbis_interface.c, frontend/Makefile.in, + frontend/get_audio.c, frontend/main.c, + frontend/vorbis_interface.c, mpglib/Makefile.in, + mpglib/configure, mpglib/configure.in, mpglib/main.c: + + more modularization work. + VORBIS and mpglib interface is now in the libmp3lame library. + functions in these files are wrapper of mpglib/libvorbis. + I think it is ok to include them in libmp3lame. + +2000-10-01 15:19 takehiro + + * VbrTag.c: + + merged VbrTag.h into lame.h + +2000-10-01 15:03 takehiro + + * encoder.c, lame.c, util.h, Dll/BladeMP3EncDLL.c, + frontend/get_audio.c, include/lame.h: + + merged VbrTag.h into lame.h + +2000-10-01 11:28 afaber + + * mpglib/: common.c, common.h, dct64_i386.c, decode_i386.c, + interface.c, interface.h, layer1.c, layer1.h, layer2.c, layer2.h, + layer3.c, layer3.h, main.c, mpg123.h, mpglib.dsp, mpglib.h, + dct64_i386.h, decode_i386.h: + + More MPGLIB cleanup, got rid of the global mpstr struct gmp (in order to make lib thread safe) + +2000-10-01 10:40 afaber + + * mpglib/: common.c, common.h, decode_i386.c, interface.c, + layer3.c, mpg123.h: + + Cleanup of mpg123.h file (still need to get rid of the dirty extern gmp hack) + +2000-10-01 10:05 afaber + + * mpglib/: layer1.c, mpg123.h: + + Removed unused stuff in MPG123.h file, removed stuff that was commented out in Layer1.c + +2000-10-01 10:00 afaber + + * mpglib/: mpg123.h, tabinit.c: + + Removed some double/float warnings, removed disable warnings pragma for MSVC compiler + +2000-10-01 09:52 takehiro + + * lame.c, frontend/main.c: + + moved main_crc_init from frontend to library + +2000-10-01 09:51 afaber + + * mpglib/: common.c, common.h, dct64_i386.c, decode_i386.c, + interface.c, layer2.c, layer3.h, mpg123.h, mpglib.dsp, tabinit.c, + tabinit.h: + + Reorganized some of the function prototypes, removed non existing function prototypes from common.h + +2000-10-01 09:32 takehiro + + * libmp3lame/.cvsignore: + + initial check in for libmp3lame + +2000-10-01 09:29 takehiro + + * libmp3lame/Makefile.am: + + check in for the feauture... + +2000-10-01 09:09 afaber + + * bitstream.h, frontend/main.c: + + Added void main_CRC_init (void) function prototype in bitstream.h + +2000-10-01 06:24 takehiro + + * frontend/: Makefile.in, mp3x.c: + + making frameanalyzer problem fixed + +2000-10-01 04:56 markt + + * util.c: + + added Frank's normalization of Blackman filter coefficients. + This had no effect on any of my resample test cases. + +2000-09-30 15:32 markt + + * STYLEGUIDE: + + more notes on identation and int in STYLEGUIDE + +2000-09-30 15:09 afaber + + * id3tag.c: + + fixed signed/unsigned mismatch + +2000-09-30 14:50 markt + + * HACKING, bitstream.c, bitstream.h, util.c, util.h: + + added stuff in HACKING on how to handle global data + moved freegfc() into util.c + +2000-09-30 14:28 markt + + * util.c: + + number of pre-computed convolution windows determined dynamically. + (storage still needs to malloc'd and free'd in lame_encode_finish). + +2000-09-30 14:17 robert + + * Makefile.in: + + small fix + +2000-09-30 13:14 afaber + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Changes in order to get it compile on a Win32 platform + +2000-09-30 12:49 afaber + + * lamelib.dsp, VbrTag.h, lame.dsp, lame.dsw, frontend/brhist.c, + frontend/get_audio.c, frontend/lame.dsp, frontend/lame.dsw, + frontend/timestatus.c, mpglib/mpglib.dsp: + + Changes in order to get it compile on a Win32 platform + +2000-09-30 08:29 takehiro + + * frontend/parse.c: + + renamed some functions + +2000-09-30 08:21 takehiro + + * doc/html/: contributors.html, examples.html, history.html, + id3.html, index.html, lame.css, modes.html, node6.html, + switchs.html: + + new document for 3.87 from Gaby. + +2000-09-30 08:15 takehiro + + * frontend/: configure, configure.in: + + debug about gtk detection + +2000-09-30 07:54 takehiro + + * lame.c, frontend/get_audio.c, frontend/main.c, frontend/main.h, + frontend/mp3rtp.c, frontend/parse.c, include/lame.h: + + removed outpath from library. + +2000-09-30 06:58 takehiro + + * bitstream.c, bitstream.h, util.c, util.h: + + moved some code from util to bitstream + +2000-09-30 04:40 markt + + * VbrTag.c, lame.c, frontend/vorbis_interface.c: + + re-enabled id3v2 tag and Xing vbr header + +2000-09-29 18:16 takehiro + + * lame.c, frontend/get_audio.c, frontend/main.c, frontend/main.h, + frontend/parse.c, frontend/timestatus.c, include/lame.h: + + "silent" and "brhist" is moved to frontend + +2000-09-29 18:07 takehiro + + * lame.c, frontend/main.c, frontend/main.h, frontend/parse.c, + frontend/timestatus.c, include/lame.h: + + "update_interval" is moved to frontend + +2000-09-29 17:49 takehiro + + * encoder.c, lame.c, psymodel.c, quantize.c, vbrquantize.c, + frontend/main.c, frontend/parse.c, include/lame-analysis.h, + include/lame.h, frontend/mp3x.c: + + changed from "gtkflag" to "analysis", because it is not only for gtk. + +2000-09-29 17:48 takehiro + + * frontend/timestatus.c: + + oops, timestatus not correctly displayed + +2000-09-29 17:43 takehiro + + * id3tag.c, lame.c, quantize.c, quantize_pvt.c, util.h, + vbrquantize.c, frontend/gtkanal.c, frontend/main.c, + frontend/mp3x.c, frontend/parse.c, include/analysis.h, + include/id3tag.h, include/lame-analysis.h, include/lame-id3tag.h, + include/lame.h, mpglib/layer3.c, mpglib/mpglib.h: + + OK, Florian, I renamed include file avoid confusing. + (it's so generic and not likely to be unique) + +2000-09-29 17:31 takehiro + + * Makefile.in, encoder.c, lame.c, parse.c, psymodel.c, util.c, + util.h, vbrquantize.c, frontend/Makefile.in, frontend/brhist.c, + frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, + frontend/main.c, frontend/main.h, frontend/parse.c, + frontend/parse.h, frontend/timestatus.c, + frontend/vorbis_interface.c: + + 1. timestatus things are moved to frontend(maybe complete ?) + 2. input file handling is moved to frontend(so the file input API is removed) + +2000-09-29 04:51 markt + + * frontend/brhist.c, frontend/get_audio.c, frontend/get_audio.h, + mpglib/main.c: + + removed analysis.h from get_audio.c + typo in brhist.c + +2000-09-28 23:31 robert + + * lame4dos.bat: + + improved lame.bat for 4DOS users, donated by Alexander Stumpf + +2000-09-28 16:36 takehiro + + * Makefile.in, VbrTag.c, brhist.c, brhist.h, configure, + configure.in, encoder.c, get_audio.c, get_audio.h, gpkplotting.c, + gpkplotting.h, gtkanal.c, id3tag.h, ieeefloat.c, ieeefloat.h, + lame.c, lametime.c, lametime.h, main.c, mp3rtp.c, mp3x.c, + parse.c, portableio.c, portableio.h, psymodel.c, quantize.c, + quantize_pvt.c, rtp.c, rtp.h, tables.c, timestatus.c, + timestatus.h, util.c, util.h, vbrquantize.c, version.c, + version.h, vorbis_interface.c, frontend/.cvsignore, + frontend/Makefile.in, frontend/aclocal.m4, frontend/brhist.c, + frontend/brhist.h, frontend/configure, frontend/configure.in, + frontend/get_audio.c, frontend/get_audio.h, + frontend/gpkplotting.c, frontend/gpkplotting.h, + frontend/gtkanal.c, frontend/ieeefloat.c, frontend/ieeefloat.h, + frontend/lametime.c, frontend/lametime.h, frontend/main.c, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, + frontend/portableio.c, frontend/portableio.h, frontend/rtp.c, + frontend/rtp.h, frontend/timestatus.c, frontend/timestatus.h, + frontend/vorbis_interface.c, include/id3tag.h, include/lame.h, + mpglib/Makefile.in, mpglib/layer3.c, mpglib/mpglib.h: + + moved frontend staffs into frontend/ + Need to debug vorbis/mpglib/analyzer/bitrate histgram. + still long way to go... + + HAVEGTK is changed ANALYSIS(library side) and HAVEGTK(frontend side) + + BRHIST is deleted from library. all the bitrate histogram works are + now in frontend(but not works properly, yet). + + timestatus things are also moved to frontend. + + parse.c is now out of library. + +2000-09-27 12:05 takehiro + + * include/analysis.h, gtkanal.h: + + moved gtkanal.h to include/analysis.h + +2000-09-27 04:17 florian + + * Makefile.in: + + fixed make install -> move of lame.h broke it. + +2000-09-26 17:47 takehiro + + * Makefile.in, gtkanal.h: + + more clean up and debug "make clean" + +2000-09-26 17:35 takehiro + + * Makefile.in: + + moved more staff out of libmp3lame + +2000-09-26 17:28 takehiro + + * Makefile.in: + + removed brhist.o etc from library + +2000-09-26 17:25 takehiro + + * include/lame.h: + + lame.h moved to include + +2000-09-26 17:24 takehiro + + * timestatus.c: + + little clean up + +2000-09-26 17:03 takehiro + + * Makefile.in, configure, configure.in, lame.h: + + 1 moved lame.h into include/ + 2 modularized work with mpglib + +2000-09-26 16:59 cisc + + * amiga_mpega.c: + + Mark, you broke lame_decode_initfile(), what were you thinking? ;) .. anyways, fixed, and added new mp3data struct variables... + +2000-09-26 15:48 takehiro + + * mpglib/: .cvsignore, Makefile.in, common.c, configure, + configure.in, dct64_i386.c, decode_i386.c, interface.c, layer3.c, + main.c, tabinit.c: + + configure support and more modularized work + +2000-09-26 15:47 takehiro + + * mpglib/Makefile: + + now this is generated by configure + +2000-09-26 05:22 markt + + * version.h: + + CVS is now 3.88 alpha 1 + +2000-09-26 04:49 markt + + * version.h: + + updated to 3.87 beta + +2000-09-26 04:48 markt + + * get_audio.c, get_audio.h, gtkanal.c, timestatus.c, mpglib/main.c: + + removed all references to gfc-> from get_audio.c + this was needed if we are going to move get_audio.c out of + libmp3lame and into the front end code. + +2000-09-26 01:00 markt + + * HACKING, STYLEGUIDE: + + [no log message] + +2000-09-26 00:55 markt + + * CodingStyle.c, lametype.h: + + Removed two files + +2000-09-26 00:09 markt + + * amiga_mpega.c, get_audio.c, lame.c, lame.h, timestatus.c, + timestatus.h, util.h: + + when input file was a mp3, it was trashing a bunch of + variables (mode, bitrate, etc..) + +2000-09-25 21:37 robert + + * Makefile.MSVC: + + MMX choose table support, needs NASM (can be disabled) + +2000-09-25 21:23 florian + + * configure, configure.in: + + changed default installation prefix to /usr (/usr/local/lib doesn't seem to be in default linker path) + +2000-09-25 20:58 florian + + * Makefile.in: + + fixed shared lib (runtime linker information) + +2000-09-25 15:20 markt + + * Makefile.in: + + removed ?= from makefile + +2000-09-25 14:36 shibatch + + * psymodel.c: + + A small bugfix of --nspsytune. + +2000-09-25 02:13 florian + + * configure, Makefile.in, configure.in: + + cleaner version handling of libmp3lame.so, uninstall target in Makefile + +2000-09-25 00:30 markt + + * id3tag.c: + + fixed genre bug in id3tag.c + +2000-09-24 22:59 markt + + * id3tag.c, vbrquantize.c: + + removed yet another unsigned loop counter + +2000-09-24 21:53 robert + + * Makefile.MSVC: + + enabled Takehiro's IEEE hack + +2000-09-24 14:59 robert + + * configure, configure.in: + + BUG fixed, which prevented using Layer1/2 decoding abilities + +2000-09-24 14:34 robert + + * encoder.c, lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + util.h, vbrquantize.c: + + code cleanup and very little speedup + +2000-09-24 12:38 robert + + * quantize.c: + + minor RH_AMP tweak, and once again, do not use tabulator within this file + +2000-09-24 12:29 robert + + * quantize.c: + + please do not use tabulators within this file (better in no files) + +2000-09-24 12:22 robert + + * VbrTag.c: + + minor BUG fix for MPEG-2(.5) + +2000-09-24 11:39 takehiro + + * quantize.c: + + sorry, scalefac_scale did not have a bug. that was my compiler bug... + +2000-09-24 10:38 afaber + + * mpglib/interface.c: + + Fixed MP1/2 decoding problem, for files that were encoded with a CRC + +2000-09-24 01:32 markt + + * get_audio.c: + + minor fix to mp3 header parsing + +2000-09-23 23:36 afaber + + * bitstream.c: + + removed unused variable bits + +2000-09-23 23:36 afaber + + * id3tag.c: + + fixed signed/unsigned mismatch, added bitstream.h include file + +2000-09-23 22:31 markt + + * VbrTag.c, bitstream.c, bitstream.h, id3tag.c, id3tag.h, lame.c, + lame.h, main.c, parse.c: + + id3v1 and id3v2 tags now get written directly into + the bitstream instead of into the output file. + + The only file I/O left in libmp3lame will be the VBR tag. + +2000-09-23 21:13 markt + + * get_audio.c, lame.h, mpglib/main.c: + + removed lame_decode_fromfile() calls from the API, + moved them into get_audio.c + +2000-09-23 20:08 markt + + * lame.h, mpglib/main.c: + + some mpglib restructering. + All mp3 routines which work with files now only make + calls to lame_decode_* that are in the API. + +2000-09-23 14:48 markt + + * VbrTag.c: + + bug in Xing header for MPEG2.5 fixed + +2000-09-23 09:07 takehiro + + * quantize.c, quantize_pvt.c, util.c, util.h: + + workaround for subblock_gain and scalefac_scale artifact. + I hope this will fix -q1 problems. + +2000-09-23 02:11 markt + + * version.c: + + [no log message] + +2000-09-23 01:23 markt + + * mpglib/main.c: + + [no log message] + +2000-09-23 01:23 markt + + * VbrTag.c, VbrTag.h, lame.h, parse.c, util.c, util.h: + + bug fixed in decoding: if syncword found in Xing VBR header toc, + it would confuse things. + + Also fixed overflow in vbrtag.c, and changed size of xing vbr + header to 128kbs. This will make non-vbr aware players + give a more reasonable playing time estimate. + +2000-09-23 00:51 robert + + * psymodel.c: + + minor fix + +2000-09-22 22:54 shibatch + + * quantize.c, quantize_pvt.c: + + Minor bugfixes of --nspsytune. Frame analyzer works correctly with --nspsytune. + +2000-09-21 23:55 shibatch + + * parse.c, psymodel.c, quantize.c: + + Tweaks to --nspsytune. This improves CBR quality. + +2000-09-21 16:50 afaber + + * Dll/LameDLLInterface.htm: + + Updated lame_enc.dll documentation file + +2000-09-20 22:56 takehiro + + * Makefile.in, configure, configure.in, encoder.c, lame.c, + timestatus.c: + + more configure updates. + not compiling/linking BRHIST routine when it is disabled. + +2000-09-20 20:50 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp: + + Added bNoRes option in LHV1 structure, updated example to have default settings as in testcase.wav test case + +2000-09-20 19:08 afaber + + * brhist.c, lame.h: + + Changed BRHST un-signed variables to signed variables + +2000-09-20 18:50 afaber + + * Dll/BladeMP3EncDLL.c: + + High quality was not enabled + +2000-09-20 18:49 afaber + + * Dll/MP3EncDll.dsp: + + Added TAKEHIRO_IEEE754_HACK define to project file + +2000-09-20 18:41 afaber + + * lame.dsp: + + Added TAKEHIRO_IEEE754_HACK define to project file + +2000-09-20 16:40 robert + + * quantize.c: + + VBR old quality tuning for --raise-smr + +2000-09-19 14:40 takehiro + + * Makefile.in: + + update glibc inline math error detection + +2000-09-19 14:32 takehiro + + * configure, configure.in: + + oops, needless gabage removed + +2000-09-19 14:26 takehiro + + * configure: + + newer configure script made by configure.in + +2000-09-19 14:12 takehiro + + * Makefile.in, configure.in: + + not compiling/linking mpglib code when it disabled. + not compiling/linking gtk related code when it disabled. + + control LAYER1 and LAYER2 decoding function with --enable-decode-layer1 and + --enable-decode-layer2 + + autodetect math inline bug of glibc < 2.1.3 + +2000-09-19 14:11 robert + + * quantize_pvt.c: + + modified --ATHlower to not touch sfb21 + +2000-09-19 14:06 takehiro + + * .cvsignore: + + ignore files related configure script and library itself + +2000-09-19 05:33 markt + + * mpglib/main.c: + + got rid of a size_t in main.c + +2000-09-19 05:19 markt + + * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: + + updated msvc6 project files + +2000-09-19 04:54 markt + + * mpglib/main.c: + + removed unsigned int being used as a loop counter. + +2000-09-19 04:18 markt + + * encoder.h, lame.c, util.c, util.h: + + updated filter settings + +2000-09-18 22:29 afaber + + * Dll/Example.cpp: + + Bug fixes in example file + +2000-09-18 21:57 markt + + * testcase.mp3, util.c, util.h: + + changed BPC to 160 on Frank's advice. + This means pre-compute 160 filter-sinc-windows, instead of just 16. + Should also fix the aliasing problem shown in mp3.com bulliten + board + +2000-09-18 21:30 markt + + * Makefile.B32, Makefile.DJGPP, Makefile.in, Makefile.unix: + + Makefiles updated to reflect that all the ASM code has been + removed and replaced with IEEE754_HACK. I'm glad to see + it gone - but I didn't remove it! + +2000-09-18 21:28 markt + + * STYLEGUIDE, VbrTag.c, brhist.c, get_audio.c, machine.h, + quantize.c, quantize_pvt.c, takehiro.c, vorbis_interface.c: + + minor code cleanup. + +2000-09-18 20:53 afaber + + * lame.dsp: + + Fixed library problem in ReleaseGTK mode + +2000-09-18 20:09 markt + + * config.log: + + removed config.log from repository + +2000-09-18 19:43 afaber + + * brhist.c: + + Fixes for Cygwin compiler + +2000-09-18 18:52 markt + + * INSTALL, Makefile.in, Makefile.unix, config.log: + + more configure updates + +2000-09-18 18:34 markt + + * INSTALL, INSTALL.configure, Makefile, Makefile.in, Makefile.unix, + aclocal.m4, confdefs.h, config.guess, config.log, config.sub, + configure, configure.in, install-sh: + + added configure stuff from Florian! + + original Makefile is now in Makefile.unix + +2000-09-18 01:48 cisc + + * util.c, vbrquantize.c, version.h: + + warning fixes & bumped alpha version + +2000-09-17 23:25 markt + + * Makefile, lame.h: + + added note about shared library + +2000-09-17 22:25 markt + + * USAGE, encoder.c, lame.c, lame.h, parse.c: + + --scale option added + +2000-09-17 21:47 afaber + + * bitstream.c, get_audio.c, quantize.c: + + removed unecessary (int) casts + +2000-09-17 21:21 markt + + * HACKING, STYLEGUIDE, lame.h: + + some editing + +2000-09-17 21:04 afaber + + * encoder.c, lame.dsp: + + Enabled BRHIST in MSVC project file, and changed calls to brhist functions in encoder.c + +2000-09-17 20:55 markt + + * encoder.c, takehiro.c: + + forgot to add encoder.c to cvs + +2000-09-17 20:53 markt + + * bitstream.c, machine.h, util.c, util.h: + + more 'unsigned's removed + +2000-09-17 20:52 afaber + + * brhist.c, brhist.h, lame.c, lame.h, timestatus.c: + + Moved BRHIST variables to lame_global_flags structure, so a library (like lame_enc.dll) can have access to the histogramming data + +2000-09-17 20:20 markt + + * lame.c, testcase.mp3, version.c: + + resampling nolonger needs to quantize back to integers + since internal representation of PCM samples is now floating point + +2000-09-17 19:50 markt + + * Makefile, fft.c, gtkanal.c, lame.c, machine.h, newmdct.c, + newmdct.h, psymodel.c, psymodel.h, testcase.mp3, util.c, util.h, + mpglib/main.c: + + sample_t changes updated, sample_t = FLOAT + +2000-09-17 18:52 markt + + * INSTALL, Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, + encoder.h, lame.c, lame.dsp, lametime.h, main.c, timestatus.h, + Dll/MP3EncDll.dsp: + + added encoder.c which has the core encoding function. + fixed sample_t stuff + +2000-09-17 17:55 robert + + * Makefile, l3side.h, quantize.c, quantize_pvt.c, takehiro.c: + + not everyone has access to Vorbis in Mark's home directory ;-) + +2000-09-17 17:54 afaber + + * mpglib/main.c: + + Changed return value from zero to -1 when EOF has been reached + +2000-09-17 16:19 takehiro + + * quantize.c: + + added #include + +2000-09-17 10:07 takehiro + + * get_audio.c: + + trivial warning fix + +2000-09-17 09:32 takehiro + + * quantize_pvt.c: + + removed old assembler code + +2000-09-17 09:30 takehiro + + * main.c: + + quick hack for "sample_t is not defined" + +2000-09-17 05:00 cisc + + * get_audio.h, version.c: + + updated some libsndfile related stuff + +2000-09-17 04:19 cisc + + * VbrTag.h, bitstream.h, brhist.h, encoder.h, fft.h, get_audio.h, + gpkplotting.h, gtkanal.h, id3tag.h, ieeefloat.h, l3side.h, + lame.h, lametime.h, lametype.h, machine.h, newmdct.h, + portableio.h, psymodel.h, quantize.h, quantize_pvt.h, + reservoir.h, rtp.h, tables.h, timestatus.h, util.h, version.h: + + conformed all this-is-included-defines to match 'project_file_name' style + +2000-09-16 22:52 afaber + + * lame.dsp, reservoir.c, reservoir.h, tables.c, tables.h, + timestatus.c, timestatus.h, util.c, util.h, vbrquantize.c: + + Changed lame header/source to LGPL license where necessary, added LGPL header to files when applicable + +2000-09-16 22:39 afaber + + * encoder.h, fft.h, get_audio.c, get_audio.h, gpkplotting.c, + gpkplotting.h, gtkanal.c, gtkanal.h, l3side.h, lametime.c, + lametime.h, newmdct.h, parse.c, psymodel.h, quantize.c, + quantize.h, quantize_pvt.c, quantize_pvt.h, Dll/MP3EncDll.dsp: + + Changed lame header/source to LGPL license where necessary, added LGPL header to files when applicable + +2000-09-16 22:16 afaber + + * fft.c, machine.h, psymodel.c: + + Removed the float/double compiler warnings + +2000-09-16 22:08 afaber + + * Dll/: BladeMP3EncDLL.h, MP3EncDll.dsp: + + Small changes to the lame_enc project settings + +2000-09-16 21:52 afaber + + * brhist.c, brhist.h, get_audio.c, gtkanal.c, lametime.h, main.c, + psymodel.c, quantize.c, takehiro.c, timestatus.c, vbrquantize.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c: + + Removed a bunch of signed/unsigned compiler warnings + and removed const/no const assignements compiler warnings + welcome to const hell Frank! + +2000-09-16 21:07 markt + + * Makefile, quantize_pvt.c: + + shared lib support, IEEE stuff the default on i386 + +2000-09-16 21:07 cisc + + * amiga_mpega.c: + + added mode & mode_ext support to mp3data struct, like mpglib/main.c + +2000-09-16 21:06 afaber + + * lame.dsp: + + Added lametime.c and lametime.h files to project + +2000-09-16 19:03 markt + + * HACKING, STYLEGUIDE: + + style updates + +2000-09-16 18:54 markt + + * STYLEGUIDE: + + adding STYLEGUIDE + +2000-09-16 18:54 markt + + * CodingStyle.c, LICENSE, USAGE, bitstream.c, get_audio.c, + gtkanal.c, id3tag.c, l3side.h, lame.c, lame.h, lametime.c, + machine.h, parse.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + tables.c, tables.h, takehiro.c, testcase.mp3, timestatus.c, + util.h, vbrquantize.c, version.c, mpglib/common.h, + mpglib/interface.h, mpglib/main.c: + + got rid of a bunch of unsigned variables. + +2000-09-16 13:59 afaber + + * brhist.c, psymodel.c, quantize_pvt.c, takehiro.c, vbrquantize.c: + + Removed the signed/unsigned mismatch compiler warnings + +2000-09-16 13:30 afaber + + * bitstream.c: + + Removed the signed/unsigned mismatch compiler warnings + +2000-09-16 12:53 afaber + + * mpglib/layer1.c: + + Switched include from mpg123.h to common.h to avoid compiler warnings + +2000-09-16 00:43 cisc + + * psymodel.c, timestatus.c: + + warning fixes + +2000-09-15 16:36 shibatch + + * psymodel.c: + + Tweaks to --nspsytune. + +2000-09-15 15:01 takehiro + + * quantize_pvt.c: + + oops, foolish bug ... + +2000-09-15 13:03 takehiro + + * quantize_pvt.c: + + TAKEHIRO_IEEE754_HACK now C99 aliasing rule compliant. + it runs correctly with "-fstrict-aliasing" (GCC) + +2000-09-14 03:32 markt + + * brhist.c, mpglib/mpg123.h: + + fixed VBR display + +2000-09-13 23:31 markt + + * Makefile, quantize.c, reservoir.c: + + NORES_TEST turned back of + +2000-09-13 18:46 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed bug in lame_enc.dll when using preset option, and return proper frame size when using MPEG-2 + +2000-09-13 18:24 afaber + + * mpglib/: common.c, common.h, interface.c, interface.h, layer2.c, + layer3.c, main.c, mpg123.h, mpglib.dsp, mpglib.h: + + Added common.h and interface.h, and added the functions prototypes that should be in these files, instead of mpg123.h + +2000-09-13 18:22 markt + + * util.c: + + precompute for filter turned back on + +2000-09-13 18:19 markt + + * lame.c, util.c, util.h: + + replaced upsampling filter with 19 point blackman filter + +2000-09-13 11:18 markt + + * parse.c: + + typo in documentation + +2000-09-13 11:03 markt + + * Makefile, parse.c, testcase.mp3, vorbis_interface.c: + + fixed vorbis_interface.c so it would compile + +2000-09-13 10:59 markt + + * Makefile, bitstream.c, fft.c, get_audio.c, lame.c, lame.h, + psymodel.c: + + fixed some bugs introduced by frank. + get_audio.c must count samples for .wav files. + lame.c: disabling ATH is not the way to solve the problem Frank + wants to solve + +2000-09-13 09:23 robert + + * quantize.c: + + quality adjustment for VBR old to better use --raise-smr + +2000-09-12 22:36 pfk + + * brhist.c, gtkanal.c, id3tag.c, lame.c, lametype.h, main.c, + psymodel.c, quantize.c, quantize_pvt.c, tables.c, tables.h, + takehiro.c, util.c, util.h, vbrquantize.c, vorbis_interface.c, + mpglib/common.c, mpglib/huffman.h, mpglib/l2tables.h, + mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, mpglib/mpg123.h, + mpglib/tabinit.c: + + + + added const to all constant tables, so that they are placed in write + protected RAM or in ROM (standalone DSP version). + + The SEGFAULT be with you (instead of debugging for hours). + + Also some remarks instead of changes instead of code changes. + + Remove them if they are fully useless. + +2000-09-12 20:47 robert + + * Makefile, lame.c, lame.h, parse.c, psymodel.c, quantize_pvt.c: + + added --raise-smr <0..1> a new toy to control quality + +2000-09-12 18:20 pfk + + * Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, + bitstream.c, get_audio.c, lame.c, lame.h, lametype.h, parse.c, + util.h, version.h, vorbis_interface.c, mpglib/main.c: + + + + Some bug fixes + Activated lametime.c + Two types of display update now possible (old and new, depends on Makefile) + +2000-09-12 06:26 pfk + + * brhist.c, lame.c, lametype.h, version.c: + + + + brhist.c Changed display of percentages between 0.1 and 1 % + + lame.c: ??? + version.h: include as less as possible + + lametype.h: First try to disentangle the #include jungle of lame + (this style would be the immediate death for larger + projects) + +2000-09-12 00:47 markt + + * main.c, mpglib/l2tables.h, mpglib/layer2.h: + + al_table struct renamed al_table2 + +2000-09-11 20:33 shibatch + + * psymodel.c: + + --nspsytune uses additive masking. + +2000-09-11 20:05 robert + + * psymodel.c: + + disabled "additive masking" in subband calculation + +2000-09-11 20:04 robert + + * lame.c, lame.h, parse.c, quantize.c, quantize.h, quantize_pvt.c: + + experimental mix of VBR new and old available with --vbr-mtrh + +2000-09-10 23:24 markt + + * HACKING: + + added rule #1 LAME style guide + +2000-09-10 22:13 markt + + * doc/html/modes.html: + + modes.html was not in the repository + +2000-09-10 21:45 markt + + * testcase.mp3, testcase.wav: + + made the test case a little longer + (100k .wav file) + +2000-09-10 21:27 markt + + * lame.h, parse.c, mpglib/huffman.h, mpglib/l2tables.h, + mpglib/layer2.h: + + reverted mpglib routines back to original. + please keep mpglib as close as possible to the mpg123/mpglib + code that it is based on. + + Went back to display every 100 frames, which I prefer. + +2000-09-10 20:54 markt + + * Makefile, lame.c, timestatus.c: + + went back to display every 100 frames. + +2000-09-10 19:54 cisc + + * brhist.c: + + small adjustment + +2000-09-10 19:52 cisc + + * version.c: + + correct includes for libsndfile prototypes + +2000-09-10 18:05 pfk + + * Makefile, USAGE, brhist.c, brhist.h, fft.c, fft.h, lame.c, + lame.h, version.h, mpglib/huffman.h: + + + + some minor changes. Start to introduce sample_t. + + Changed VBR display. + +2000-09-10 13:11 pfk + + * fft.c, parse.c, psymodel.c, version.h, mpglib/l2tables.h, + mpglib/layer2.h: + + + + fft.c: loop variables short => size_t/int + layer2.h + l2tables.h: formated, structure definition changed for (possible) + speedup + parse.c optimized sfb21 usage for presets + +2000-09-09 23:00 pfk + + * get_audio.c, gtkanal.c, lametime.c, lametime.h, mpglib/common.c, + mpglib/l2tables.h, mpglib/layer2.c, mpglib/layer2.h, + mpglib/mpg123.h: + + + + struct al_table {} <=> + typedef struct {} al_table conflict removed + + lame/gtkanal.c: typecast of functions ptr's + +2000-09-09 21:11 pfk + + * CodingStyle.c, Makefile, USAGE, lametime.c, lametime.h, mlame, + mlame_corr.c, quantize_pvt.c, quantize_pvt.h, vbrquantize.c, + version.c, version.h, mpglib/layer1.c, mpglib/layer2.c: + + + + Makefile: added option -pedantic + USAGE: updated some remarks, + added some remarks, + kbs => kbps, HZ/hz => Hz, space between number and unit + mlame: -mf => -mj + uses mlame_corr + mlame_corr: First try of a program which analyzes the total file + and recommend flags + quantize_pvt.*: made some arrays const + asm => __asm__ + version.* copied vom pfk1 tree + mpglib/*.c added newline at the end of the file + + CodingStyle.c start of an CodingStyle Guide, pre-alpha + lametime.* heavy system specific code should moved to this + file, should not mixed with other code + +2000-09-09 21:04 cisc + + * amiga_mpega.c: + + warning fix + +2000-09-09 14:41 robert + + * bitstream.c: + + fixed debugging code + +2000-09-09 11:40 takehiro + + * newmdct.c: + + sorry, back to old... + +2000-09-09 11:22 robert + + * quantize.c: + + BUG fix for possible endless loop in RH_AMP code + +2000-09-09 10:59 takehiro + + * newmdct.c: + + bit faster mdct. + there's some difference caused by rounding problem, but i think this is OK. + +2000-09-09 10:34 takehiro + + * bitstream.c: + + bit faster putbits + +2000-09-09 10:28 takehiro + + * bitstream.c: + + small fix of debugging code + +2000-09-08 19:28 robert + + * quantize.c: + + to combine VBR_rh with VBR_mt define RH_VBR_MTRH at compile time + +2000-09-08 16:05 robert + + * quantize.c, quantize_pvt.c, quantize_pvt.h: + + merging branches pfk1 with main + +2000-09-08 14:55 robert + + * gtkanal.h, quantize.c, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + set_pinfo calcs noise and masking of its own + +2000-09-08 12:17 robert + + * parse.c, quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + substitution of lame_global_flags with lame_internal_flags + +2000-09-08 11:22 robert + + * parse.c: + + Bug fix for automatic file type recognition back into MAIN branch + +2000-09-08 10:04 shibatch + + * psymodel.c: + + A minor bugfix of mask_add(). + +2000-09-07 23:37 pfk + + * mlame_corr.c: + + + + file to use with mlame to select different modes by pre analysing wav files. + +2000-09-07 18:06 afaber + + * mpglib/mpglib.dsp: + + Cleanup project file a bit + +2000-09-07 18:05 afaber + + * README.WINGTK: + + Small modification to the instruction, in order to compile/link with latest GTK/GDK libs + +2000-09-07 18:04 afaber + + * lame.dsp: + + Changed project file to work with latest GTK/GDK libs + +2000-09-07 17:40 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed problem in VBR WriteTag function (it did not compile, MP3 file stream was not closed properly, wrong file name was used) + +2000-09-07 12:26 shibatch + + * psymodel.c, quantize_pvt.c: + + Tweaks to --nspsytune. + +2000-09-06 23:19 robert + + * quantize.c (pfk1): + + modularization and clean-up finished + +2000-09-06 18:02 markt + + * Makefile (pfk1): + + [no log message] + +2000-09-06 07:50 shibatch + + * psymodel.c, quantize_pvt.c: + + updated --nspsytune. + +2000-09-06 07:15 markt + + * Makefile, amiga_mpega.c, bitstream.c, brhist.c, fft.c, fft.h, + get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, lame.h, + main.c, mp3rtp.c, newmdct.c, newmdct.h, parse.c, psymodel.c, + psymodel.h, quantize.c, quantize_pvt.c, quantize_pvt.h, + reservoir.c, tables.c, tables.h, takehiro.c, timestatus.c, + util.c, util.h, vbrquantize.c, version.c, version.h, + vorbis_interface.c, mpglib/common.c, mpglib/decode_i386.c, + mpglib/huffman.h, mpglib/interface.c, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, + mpglib/mpg123.h: + + LAME CVS reverted back to Aug 30 version. + + code before this can be checked out with: + cvs update -r pfk1 + +2000-09-05 23:55 pfk + + * HACKING, Makefile, TODO, get_audio.c, lame.c, lame.h, mlame, + parse.c, version.h, mpglib/README, mpglib/huffman.h, + mpglib/layer1.c, mpglib/layer2.c: + + + HACKING: add type proposals + Makefile: layer 1 enabled + mlame: flaw removed + get_audio: C-Linkage problem solved + layer1.c: bug fixed + disabled decoding enabled, works for C/C++ + huffman.c: read protect/scope protect tables using 'const'/'static' + lame.h: Starting RPC support, 3 macros IN/OUT/INOUT defined + Starting supported for szip compressed wave/aiff + parse.c: detection of raw/wav/aiff input (proposal of RH) + boolean bug fixed !=||!=||!= + layer2.c: common layer1/layer2 buffer moved from layer2.c to layer1.c + lame.c: bug fixed: -V9 switched to mono + Auto switch to mono reported wrong compression ratio + report of forced joint stereo usage + + *: Some spelling errors removed + +2000-09-05 22:20 robert + + * quantize.c: + + more modularization and clean-up, some few more to come + +2000-09-05 20:39 shibatch + + * psymodel.c: + + Tweaks to --nspsytune(table optimization). + +2000-09-05 16:36 cisc + + * parse.c, mpglib/common.c, mpglib/interface.c, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c: + + quick fix to make mpglib compile, prolly still broken though. fixed mono bug in layer1.c? + +2000-09-04 23:17 shibatch + + * psymodel.c: + + Tweaks to --nspsytune. + +2000-09-04 19:56 robert + + * quantize.c: + + more cleanup in VBR_rh + +2000-09-04 16:05 robert + + * quantize.c: + + more modularization work + + it is now possible to combine VBR_RH with VBR_MT + +2000-09-03 22:33 cisc + + * brhist.c: + + small change + +2000-09-03 19:10 robert + + * quantize.c: + + updated remarks + +2000-09-03 17:21 pfk + + * get_audio.c, gtkanal.c, lame.h, main.c, mp3rtp.c, parse.c, + util.c, util.h, version.h: + + + + some bugfixes, move some functionality to two simple functions. + + Added support of 24 and 32 bit BE and LE AIFF and WAV files + (simple support, only using upper 16 bit) + + marking 3 areas which seems to be buggy. + +2000-09-03 17:19 robert + + * quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + code cleanup in quantize_pvt.c + +2000-09-03 15:06 robert + + * lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + takehiro.c now free of lame_global_flags + +2000-09-03 14:05 robert + + * quantize.c, quantize_pvt.c, quantize_pvt.h: + + code clean up + +2000-09-03 13:06 pfk + + * Makefile, brhist.c, get_audio.c, get_audio.h, gtkanal.c, lame.c, + lame.h, main.c, version.c, version.h: + + + + minor fixes + + get_audio: (simple) support of 24 bit PCM + Replaced the different types of tabs by 3, 4 or 8 spaces + +2000-09-03 12:42 shibatch + + * psymodel.c: + + Tweaks to --nspsytune. + +2000-09-03 11:47 shibatch + + * psymodel.c, quantize_pvt.c: + + Tweaks to --nspsytune. Noise calculation using tonality is canceled. + +2000-09-03 09:54 robert + + * tables.c: + + fix for i386/choose_table.nas, could not be linked + +2000-09-03 06:50 cisc + + * lame.c: + + removed *extremely* annoying debug. fixed related bug? should be checked if mono encoding still works! + +2000-09-03 06:48 cisc + + * get_audio.c: + + fixed conflicting prototype when LIBSNDFILE is defined + +2000-09-02 18:06 robert + + * quantize_pvt.c: + + small fix to previous check in + +2000-09-02 18:03 robert + + * gtkanal.h, quantize.c, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + set_pinfo does now the noise calculation for the frame analyzer + code cleanup + +2000-09-02 15:36 pfk + + * mlame: + + + + extended functionality and feature fix + +2000-09-02 13:36 pfk + + * main.c: + + + + bug fix. + +2000-09-02 13:28 pfk + + * get_audio.c, main.c: + + + + Bug fix in final fwrite(). + +2000-09-02 06:38 cisc + + * util.h: + + warning and error fixes + +2000-09-02 05:42 cisc + + * mpglib/mpg123.h: + + It's important to remember the PARENT_IS_SLASH define when including files from previous dir. + +2000-09-02 05:29 cisc + + * amiga_mpega.c, lame.c, util.c: + + warning and error fixes + +2000-09-02 03:13 pfk + + * Makefile, get_audio.c, gtkanal.c, lame.c, lame.spec, psymodel.h, + timestatus.c, util.c, util.h, vbrquantize.c, version.c, + version.h, mpglib/l2tables.h, mpglib/layer2.c, mpglib/mpg123.h: + + + + Quick and Dirty: Now compilable with g++. + + Layer 1 and 2 decoding makes problems. + + structs and typedef structs with the same name. + Must be patched. + +2000-09-02 01:03 cisc + + * psymodel.c, quantize_pvt.c, timestatus.c: + + warning fixes + +2000-09-01 23:28 pfk + + * Makefile, lame.c, lame.h, util.c, util.h, mpglib/layer1.c, + mpglib/layer2.c: + + + + Bugfix for 9 kbps error + +2000-09-01 23:28 robert + + * get_audio.c: + + small typo in remark + +2000-09-01 20:21 pfk + + * bitstream.c, get_audio.c, gtkanal.c, gtkanal.h, lame.c, lame.h, + newmdct.c, psymodel.c, quantize.c, quantize_pvt.c, reservoir.c, + tables.c, tables.h, util.c, util.h, vbrquantize.c, version.h, + mpglib/common.c, mpglib/interface.c, mpglib/layer1.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, mpglib/mpg123.h: + + + + * A lot of minor changes + + * Changed the name of structure element from 'stereo' to 'channels' + if it has the meaning of 'channels'. This is so confusing, so that + there are some bugs in lame. + + Rest read in 'Bad and worse programming styles' and 'job security' + + -- + Frank Klemm + +2000-09-01 16:19 robert + + * lame.c: + + small fix, lame -v x.wav did not work anymore + +2000-09-01 04:04 cisc + + * amiga_mpega.c: + + some warning and error fixes + +2000-09-01 04:03 cisc + + * LICENSE: + + libsndfile is now LGPL + +2000-09-01 00:05 pfk + + * brhist.c, lame.c, parse.c, quantize.c, util.c, util.h, version.c: + + + + presets modified + changed name of bitrate_table to index_to_bitrate + added table bitrate_to_index, speedup of functions using it. + +2000-08-31 21:33 pfk + + * Makefile, amiga_mpega.c, fft.c, fft.h, get_audio.c, get_audio.h, + gtkanal.c, lame.c, lame.h, main.c, mp3rtp.c, newmdct.c, + newmdct.h, psymodel.c, psymodel.h, quantize_pvt.c, util.c, + util.h, version.c, version.h, vorbis_interface.c, + mpglib/decode_i386.c, mpglib/main.c: + + + + Introduction of the type sample_t for PCM samples. + 'short' should not be used in the future. + +2000-08-31 11:06 shibatch + + * psymodel.c: + + minor bugfix of mask_add(). + +2000-08-30 23:29 pfk + + * LICENSE, PRESETS.draft, bitstream.c, lame.c, parse.c, + timestatus.c, util.h, version.c, version.h: + + [no log message] + +2000-08-30 07:18 shibatch + + * quantize_pvt.c: + + Tweaks to --nspsytune. + +2000-08-29 22:35 pfk + + * debugscalefac.c, get_audio.c, id3tag.c, lame.c, lame.h, parse.c, + util.c, util.h, version.c, version.h, doc/html/switchs.html: + + [no log message] + +2000-08-29 10:14 shibatch + + * psymodel.c, quantize_pvt.c: + + Tweakings to --nspsytune. + Tonality table is optimized a little. + Noise calculation now uses tonality. + NSATHSCALE is decreased from 103 to 100. + +2000-08-28 20:18 robert + + * lame.c: + + small tweak to RH_VALIDATE_MS + +2000-08-28 19:55 robert + + * lame.h, parse.c, psymodel.c: + + small fixes + +2000-08-28 19:27 shibatch + + * psymodel.c: + + Tweaks to the tonality table. vbrtest.wav is now encoded correctly with --nspsytune. + +2000-08-28 18:37 pfk + + * lame.h, parse.c, version.c, version.h: + + + + parse.c: presets are taken from a table + version.c: version incremented (should be done more often) + +2000-08-28 10:04 shibatch + + * parse.c, quantize_pvt.c, psymodel.c: + + + Changes to --nspsytune. + +2000-08-27 11:51 robert + + * lame.c: + + tweak to validate MS switching criterion (to be enabled with RH_VALIDATE_MS) + +2000-08-27 04:34 markt + + * parse.c: + + look for .mp3 or .MP3 when parsing input filename + +2000-08-26 04:07 markt + + * Makefile: + + openBSD tweak + +2000-08-26 04:06 markt + + * Makefile (debug): + + tweak for Open BSD + +2000-08-26 04:03 markt + + * Dll/BladeMP3EncDLL.h: + + added include sys/types to BlaceMP3EncDLL.h + Borland compiler needs definitions for BOOL and DWORD. + +2000-08-24 20:34 robert + + * quantize.c: + + little tweak to VBR-old, side channel gets now a little lower bit skeleton + +2000-08-23 23:08 robert + + * Makefile, lame.c, quantize.c, quantize_pvt.c: + + sfb21 kludge, only VBR tries to get an undistorted sfb21 + at lower sample frequencies it makes more trouble than + we can gain from that, so now sfb21 will be ignored in + VBR mode for MPEG-2 LSF. + + first tweak (not enabled) for M/S switching criterion + +2000-08-23 00:02 markt + + * lame.c, vorbis_interface.c: + + messages about filters, vorbis modes + +2000-08-22 18:29 markt + + * lame.c, util.h: + + moved last_time into lame_internal_flags struct + +2000-08-22 16:30 markt + + * get_audio.c: + + byte swapping code now only used for 16 bit input files. + +2000-08-22 03:19 markt + + * lame.c: + + minor gtkflag changes + +2000-08-22 00:08 pfk + + * get_audio.c, parse.c: + + + + get_audio.c: + Support of reporting all supported input file types. + +2000-08-21 20:16 robert + + * lame.c: + + pe_MS was not initialized in case we don't use our psychoacoustic model + +2000-08-21 16:02 robert + + * lame.c, mpglib/main.c: + + LayerI+II LSF corrections + +2000-08-21 15:47 markt + + * doc/html/: contributors.html, history.html, id3.html, index.html, + switchs.html: + + updated docs from Gabriel + +2000-08-21 05:32 markt + + * Makefile (debug), USAGE, vorbis_interface.c: + + added support for the four new vorbis modes. (higher bitrates) + use with the -b option. + +2000-08-21 04:52 markt + + * main.c, mp3rtp.c, Dll/BladeMP3EncDLL.c: + + Fixed problem with writing VBR tag if user renames mp3 output + file during the encoding. + +2000-08-21 00:40 markt + + * lame.c, lame.h, main.c, mp3rtp.c: + + more prep work for vbr tag problem + +2000-08-21 00:28 markt + + * VbrTag.c, VbrTag.h, lame.c: + + prep work to fix Vbrtag when user renames mp3 file during encodiing. + +2000-08-21 00:05 markt + + * main.c, testcase.mp3: + + fixes to main.c: it is supposed to be example code for how to + use the LAME library - it should only include lame.h, all other + .h files are supposed to be private to the encoding library. + +2000-08-21 00:00 markt + + * INSTALL, Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, + README.B32, TODO, bitstream.c, gtkanal.c, lame.c, lame.dsp, + quantize-pvt.c, quantize-pvt.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c, vbrquantize.c, Dll/MP3EncDll.dsp: + + changed quantize-pvt.c to quantize_pvt.c + Added Boland stuff_ + +2000-08-20 23:21 markt + + * Makefile, version.h: + + Amiga stuff for Makefile, updated version.h to 3.87alpha + +2000-08-20 21:22 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + enhanced lame_enc dll debugging + +2000-08-20 20:50 robert + + * lame.c: + + fixed bug for LSF, + ms_ratio will not be calculated for the second granule + because at lower sample rates there is no second granule + but the M/S switching criterion relies ms_ratio on it + +2000-08-19 10:54 robert + + * lame.c, parse.c, mpglib/main.c: + + total frames of LayerI files was not correctly estimated for decoding + +2000-08-18 18:07 robert + + * USAGE, get_audio.c, gtkanal.c, lame.c, lame.h, parse.c, + mpglib/main.c: + + LayerI+II decoding patches + +2000-08-18 01:40 pfk + + * bitstream.c, brhist.c, lame.c, main.c, parse.c, timestatus.c, + timestatus.h: + + + + bitstream.c: Table based CRC calculation code added (must be enabled to use) + brhist.c: Enlighted design of the bit rate history output + main.c: init of CRC Table in bitstream.c + parse.c: Some parameters can be name in Hz/bps and in kHz/kbps + timestatus.c: Enlighted design of the time counters + lame.c: Changed screen update frequency from 50/100 frames to 2 seconds + +2000-08-17 14:34 robert + + * Makefile, Makefile.DJGPP, Makefile.MSVC, mpglib/common.c: + + Layer1/2 related update + +2000-08-16 17:05 robert + + * Makefile.MSVC: + + added GTK support (frame analyzer) + +2000-08-16 01:22 afaber + + * parse.c, mpglib/common.c, mpglib/interface.c, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer1.h, mpglib/layer2.c, + mpglib/layer2.h, mpglib/mpg123.h, mpglib/mpglib.dsp: + + Added support for Layer 1 and Layer 2 decoding + +2000-08-15 19:31 robert + + * Makefile, lame.c, takehiro.c, util.h: + + patch to prevent core dump in case big value = 576 in count_bits_long() + +2000-08-13 13:44 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, + LameDLLInterface.htm: + + Added Lame presets to the DLL interface + added HTM document how to use the lame_enc.dll interface + +2000-08-13 02:50 afaber + + * Dll/: Example.cpp, Example.dsp, Example.dsw, MP3EncDll.dsp: + + Added DLL Example + +2000-08-12 15:42 robert + + * quantize.c: + + major speed increase for vbr-old + +2000-08-11 20:53 robert + + * psymodel.c: + + RH_AMP tweak, improves vbrtest.wav + +2000-08-08 21:08 afaber + + * Dll/BladeMP3EncDLL.c: + + Add new RecordItem array, not completely finsihed yet, but it compiles + +2000-08-08 20:11 cisc + + * psymodel.c, takehiro.c: + + code cleanup + +2000-08-08 04:01 markt + + * Makefile: + + Dec Alpha makefile fix + +2000-08-07 18:24 robert + + * Makefile, lame.c, quantize-pvt.c, quantize.c: + + code cleanup + +2000-08-07 05:53 markt + + * takehiro.c: + + code cleanup in count_bits_long() + +2000-08-07 00:00 markt + + * Makefile (debug), doc/html/history.html, mpglib/interface.c, + mpglib/layer3.c: + + bug fixed in mpglib error recovery from corrupt frames + +2000-08-06 22:58 markt + + * get_audio.c, testcase.mp3: + + oops, one bug in 3.86beta. try and change this before + anyone downloads source from the web site :-) + +2000-08-06 22:34 markt + + * get_audio.c, version.h, doc/html/history.html: + + lame 3.86 beta release + +2000-08-06 21:34 markt + + * lame.c, lame.h, testcase.mp3: + + disabled scalefac_scale (except if -q1 is used) + and make old vbr mode the default + +2000-08-06 20:58 markt + + * quantize-pvt.c, testcase.mp3: + + Reverted back to original definition of over_noise and tot_noise: + + tot_noise = is really the average over each sfb of: + [noise(db) - allowed_noise(db)] + + and over_noise is the same average, only over only the + bands with noise > allowed_noise. + +2000-08-06 20:32 markt + + * mpglib/main.c: + + Album ID tag reading bug fixes + +2000-08-06 20:21 markt + + * INSTALL, USAGE, lame.c, lame.h, parse.c, quantize-pvt.c, + takehiro.c, timestatus.c, timestatus.h, util.h, vbrquantize.c, + Dll/MP3export.pas, Dll/README: + + added the "--athlower n" option which lowers the ATH by n db. + + Added possible fix for region0_count and region1_count getting + set to illegal negative values. + +2000-08-03 20:07 robert + + * Makefile, lame.c, lame.spec, quantize-pvt.c, quantize.c: + + don't worry Mark! my noise calculation wrapped by RH_NOISE_CALC + define RH_NOISE_CALC at compile time to get my version of noise + calculation + + special: + -Y amp_scalefac_bands will amplify only the maximum distorted band + +2000-08-01 06:36 markt + + * INSTALL, bitstream.c: + + added a few assert's + +2000-08-01 04:53 markt + + * quantize.c: + + Fixed amp_scalefac_bands (RH found this) + +2000-08-01 04:38 markt + + * get_audio.c, util.c, util.h, mpglib/main.c: + + updated lame --decode to read Roel's AID stuff + +2000-07-31 19:17 markt + + * Makefile (debug), INSTALL, Makefile.DJGPP, lame.spec: + + updated debug makefile + +2000-07-31 19:00 markt + + * Makefile, TODO, USAGE: + + open bsd updates to makefile + +2000-07-31 18:46 markt + + * quantize.c, takehiro.c, testcase.mp3: + + Takehiro's best_huffman_divide turned back on + for MPEG1 only + +2000-07-31 18:38 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c: + + many commits were made over the weekend. But: + + 1. MPEG2 encoding was broken + 2. all my test cases failed. + + #11 is bad. #2 can be caused be general improvements, but + coupled with #1 is a bad sign. + + I spent all of sunday tracking down the many changes, and trying + to find what what the cause of what. I finally ran out of time + and am going to revert some changes back to last working copy. + + Here is a summary: + + takehiro.c: newest version, except: + count_bits_long uses old code (new code commented out). + This code was breaking MPEG2 + + scfsi: uses old slen1_n, slen2_n. I will change this + with the next commit. (in about 10min) + + best_huffman_divide: short block code breaks MPEG2. + short block code is still there, but disabled. + + quantize-pvt.c: Newest version, except: + + all noice calculations reverted back to db. + tot_noise, over_noise, ave_noise, etc. are given in db + and will always be given in db. + + distort[], is left in units of energy, since this saves + many log10() function calls. + + quantize.c : Reverted back to last working version, except + have newest version of VBR_iteration_loop(). + +2000-07-31 00:36 robert + + * psymodel.c: + + revert back to previous version, + it creept in by accident + +2000-07-30 23:48 robert + + * lame.c, psymodel.c, quantize.c: + + minor tweaks + +2000-07-29 22:37 robert + + * lame.bat: + + long file names on in for, thanks to Ih�rosi Wiktor + +2000-07-27 16:42 takehiro + + * bitstream.c: + + minor change + +2000-07-27 16:41 takehiro + + * quantize.c, vbrquantize.c: + + make the short block huffman coding more efficient + +2000-07-27 16:39 takehiro + + * machine.h: + + oops MMX code couldn't compile... + +2000-07-27 16:38 takehiro + + * fft.c: + + removed unused code + +2000-07-27 16:38 takehiro + + * takehiro.c: + + restore old algorithm temporary... + +2000-07-26 13:56 takehiro + + * newmdct.c: + + minor coding hack and prepare for GOGO's subband filtering code + +2000-07-26 13:47 takehiro + + * quantize-pvt.c, quantize-pvt.h, takehiro.c, util.h: + + debug for region0/1 which kzmi reported + +2000-07-26 13:25 takehiro + + * machine.h, quantize-pvt.h, takehiro.c: + + i hope this fix make intel native asm code available on VC + +2000-07-25 22:28 robert + + * quantize.c: + + possible endless loop for different -X modes fixed, + some modes do not minimize "over" and would never + reach over == 0 in some rare cases + +2000-07-25 20:39 robert + + * quantize.c: + + small "fast encode" fix + +2000-07-25 20:09 robert + + * Makefile: + + fixed typo + +2000-07-25 19:24 robert + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + fixed somehow messed up noise calculation + +2000-07-25 15:42 robert + + * quantize.c: + + small bug fix + +2000-07-24 23:50 cisc + + * get_audio.c: + + small fix + +2000-07-24 23:32 cisc + + * USAGE, get_audio.c: + + Changed lame_decoder() to write native endian format when not writing WAV header (-x will byteswap). + +2000-07-24 20:31 markt + + * quantize.c: + + removed some print statements + +2000-07-24 20:30 markt + + * quantize-pvt.c, quantize.c, takehiro.c: + + fixed rare bug with -X0 getting stuck in a loop when over>0 and + over and over_noise didn't change from one iteration to the next. + +2000-07-24 05:51 markt + + * parse.c: + + updated docs + +2000-07-24 05:42 markt + + * USAGE, get_audio.c, gtkanal.c, lame.h, parse.c: + + -t: disables Xing header for encoding, + disables WAV header for decoding + +2000-07-21 17:39 markt + + * Makefile, vorbis_interface.c: + + vorbis interface fixes + +2000-07-21 17:09 markt + + * INSTALL, Makefile.DJGPP, README.DJGPP: + + updated some DJGPP stuff + +2000-07-21 16:50 markt + + * VbrTag.c, encoder.h, get_audio.c: + + added some comments about decoder/encoder delay, + +2000-07-20 04:29 kzmi + + * machine.h: + + add mingw32 support. using windows.h. + +2000-07-20 04:28 kzmi + + * Makefile: + + add non-UNIX environment support. (NOUNIXCMD) + specifying UNAME,ARCH,PGM on command line is available. + +2000-07-19 23:19 robert + + * vbrquantize.c: + + oops, fixed typo + +2000-07-19 22:42 robert + + * vbrquantize.c: + + fixed problem with Roel's clips.wav file, + "pseudo endless loop" problem now gone + maybe the annoying spikes too? + +2000-07-18 22:57 robert + + * vbrquantize.c: + + moved calc_xmin out of VBR_noise_shaping + moved xr34 calculation out of VBR_noise_shaping + changed analog silence detection from granule based to frame based + hacked in a first digital silence treatment per granule (can be optimized) + + round about 8 percent faster on my Pentium 200 machine + +2000-07-18 00:09 markt + + * lame.c: + + moved some stuff into lame_init() + +2000-07-17 23:36 robert + + * vbrquantize.c: + + to make someone happy ;) + +2000-07-17 23:28 markt + + * lame.c: + + Changes from Kimmo: split lame_init_params() into 3 smaller + routines. This somehow fixes some crashes on PPC (which OS?). + +2000-07-17 23:10 markt + + * USAGE, lame.c, machine.h, main.c, quantize.c, util.c, + mpglib/common.c, mpglib/mpg123.h: + + Mac patches. (in an #ifdef macintosh) + +2000-07-17 15:38 robert + + * vbrquantize.c: + + analog silence treatment like in old VBR + +2000-07-16 02:16 robert + + * quantize.c: + + minor tweaks + +2000-07-15 19:20 robert + + * quantize.c: + + OK found what was wrong, should work now + +2000-07-15 17:55 markt + + * Makefile, lame.c, quantize.c: + + Reverted back to older version of quantize.c becuase + version 1.137 broke some of my CBR test cases. + + made scalefac_scale always on for all vbr modes + +2000-07-15 16:49 robert + + * lame.c, quantize.c: + + Takehiro's scalefac_scale now default for old-VBR, no more -q1 necessary + +2000-07-15 04:55 markt + + * Makefile: + + updated makefile for Dec Alpha Linux + +2000-07-14 20:06 markt + + * USAGE, lame.h: + + c++ name mangling fix, type in USAGE + +2000-07-12 18:03 robert + + * util.c, util.h: + + critical band width formula added + +2000-07-11 02:25 markt + + * vbrquantize.c: + + tuning for vbr_mt to fix chirp from John Dalton + +2000-07-11 00:47 markt + + * quantize.c: + + better tuning for ABR mode + +2000-07-11 00:31 markt + + * gtkanal.c, quantize-pvt.c, quantize.c, vbrquantize.c, + mpglib/main.c: + + bug in frame analyzer (causes hangs near eof) fixed + better resyncing during mp3 file initialization in mpglib + +2000-07-10 23:03 markt + + * lame.c, main.c, parse.c, reservoir.c, testcase.mp3, + vbrquantize.c: + + tuned new VBR so Roel will be happy :-) + +2000-07-10 00:24 markt + + * timestatus.c: + + timestatus overflow fix + +2000-07-09 20:05 markt + + * Makefile.DJGPP, README.DJGPP, quantize-pvt.c, quantize.c: + + more updated for DJGPP + +2000-07-09 13:19 shibatch + + * fft.h: + + I forgot to commit fft.h. (by Naoki Shibata) + +2000-07-09 13:16 shibatch + + * fft.c, lame.c, lame.h, parse.c, psymodel.c, quantize-pvt.c: + + Added --nspsytune command line option. This should solve vbrtest problem. (By Naoki Shibata) + +2000-07-09 03:22 gramps + + * parse.c: + + additional help for ID3-style comments in Ogg Vorbis output from a patch by Ralph Giles + +2000-07-09 03:20 gramps + + * lame.c: + + don't add ID3 tags to Ogg Vorbis output + +2000-07-09 03:18 gramps + + * vorbis_interface.c: + + partial support for ID3-style comments from a patch by Ralph Giles + +2000-07-08 15:08 robert + + * quantize.c: + + long time BUG in old VBR fixed, preventing LAME from using more than 2500 bits per channel + +2000-07-08 00:39 markt + + * README.DJGPP, get_audio.c: + + 8bit .wav files supported. + +2000-07-07 22:44 markt + + * Makefile: + + Updateted Makefile for alpha/linux + +2000-07-07 21:42 robert + + * quantize-pvt.h, quantize.c: + + little VBR-old speed up (upto 10%) + +2000-07-07 20:09 markt + + * Makefile.DJGPP, README.DJGPP: + + updated DJGPP stuff from Chris Wise + +2000-07-07 00:34 robert + + * quantize.c: + + more "old-VBR" tuning + +2000-07-06 22:20 cisc + + * amiga_mpega.c: + + Should now work for GCC. + +2000-07-06 16:54 robert + + * Dll/BladeMP3EncDLL.c: + + DLL uses now the same VBR routine by default as the EXE + +2000-07-05 04:57 markt + + * quantize-pvt.c, timestatus.c: + + minor changes + +2000-07-04 23:52 cisc + + * brhist.c, quantize-pvt.c, takehiro.c: + + code cleanup + +2000-07-04 23:52 gramps + + * id3tag.h, lame.h: + + make id3tag.h dependent on lame.h instead of the other way around + +2000-07-04 22:16 markt + + * lame.h, testcase.mp3, util.h, version.h: + + updated version to 3.86 alpha + +2000-07-04 15:40 robert + + * lame.c, quantize.c: + + old VBR silence bug fixed + +2000-07-04 14:46 robert + + * VbrTag.c: + + oops, 1 bit forgotten + +2000-07-04 03:32 kzmi + + * quantize-pvt.c, quantize-pvt.h, quantize.c, vbrquantize.c: + + old tot_noise and over_noise are obsolete. + tot_avg_noise and over_avg_noise were renamed as tot_noise + and over_noise. + +2000-07-04 03:28 gramps + + * USAGE, VbrTag.c, id3tag.c, id3tag.h, lame.c, lame.h, main.c, + mp3rtp.c, parse.c, doc/html/id3.html: + + ID3 version 2 tag support + +2000-07-03 17:10 robert + + * VbrTag.c: + + keep CRC bit for additional Xing-VBR frame + +2000-07-03 16:21 markt + + * doc/html/history.html: + + [no log message] + +2000-07-03 16:20 markt + + * README.DJGPP, lame.h, psymodel.c, quantize-pvt.c, vbrquantize.c, + version.h: + + lame 3.85 beta release + (old VBR mode back to being the default) + +2000-07-03 00:58 markt + + * Makefile, machine.h, psymodel.c: + + added note about FLOAT8 = float breaking certain features + +2000-07-03 00:57 markt + + * Makefile: + + [no log message] + +2000-07-03 00:48 markt + + * psymodel.c, testcase.mp3: + + updated mid/side demasking thresholds with takehiro's formula + +2000-07-03 00:25 markt + + * psymodel.c, vbrquantize.c: + + more tweakes to ATH/PE calculation. psymodel.c uses additive masking + so ATH needed a *= numlines. + +2000-07-02 23:51 markt + + * psymodel.c: + + added ATH threshold to PE calculation. + +2000-07-02 23:39 markt + + * psymodel.c, quantize-pvt.c, quantize-pvt.h, util.c, util.h, + vbrquantize.c: + + code so that ATH can be used for PE formula + +2000-07-02 21:44 markt + + * Makefile: + + Makefile updated so float8 = double + +2000-07-02 18:40 markt + + * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c, + util.c, vbrquantize.c: + + short block re-ording complete! + all routines updated, but not cleaned up: it is now possible + to merge most short block and long block loops + +2000-07-01 22:12 robert + + * lame.c: + + code cleanup + +2000-07-01 21:48 robert + + * util.c: + + integer based padding routine + +2000-07-01 20:37 cisc + + * lame.c, quantize-pvt.h, util.h: + + code cleanup + +2000-07-01 18:12 markt + + * bitstream.c, lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c, testcase.mp3, util.c, util.h, vbrquantize.c: + + re-order short blocks data storage. in preperation for takehiro's + asm routines + +2000-07-01 15:23 robert + + * lame.c, quantize-pvt.c, quantize.c: + + old VBR no ATH bug fixed + +2000-07-01 13:51 robert + + * lame.c, quantize-pvt.h, quantize.c, util.c, util.h: + + code cleanup + +2000-07-01 11:26 robert + + * lame.c, lame.h, parse.c, quantize-pvt.c, quantize.c: + + made switch between default VBR modes easier, look into lame.h + +2000-07-01 02:35 markt + + * lame.c, parse.c, version.h: + + 3.85 alpha (CVS) version: new vbr mode is the default + +2000-07-01 02:32 markt + + * parse.c: + + still bugs trying to make 3.84beta release + +2000-07-01 02:16 markt + + * lame.c, parse.c, quantize-pvt.c: + + i screwed up the 3.84 beta release, lets try again. + making old vbr mode the defailt, temporarily + +2000-07-01 02:11 markt + + * Makefile, version.h: + + [no log message] + +2000-06-30 23:32 markt + + * Makefile: + + makefile: -DFLOAT8 is float + +2000-06-30 23:30 markt + + * lame.c, parse.c, version.h: + + ok, back to new vbr mode = default + +2000-06-30 23:28 markt + + * doc/html/history.html: + + [no log message] + +2000-06-30 23:27 markt + + * Makefile, lame.c, parse.c, version.h: + + old vbr mode made the default. --vbr-old and --vbr-new options + can specify which mode. This is just for the next 10min + while I put out lame 3.84. CVS will then revert back to + default = new vbr mode + +2000-06-30 23:15 markt + + * get_audio.c: + + 8 bit input support (maybe works?) + +2000-06-30 14:25 kzmi + + * VbrTag.c, bitstream.c, brhist.c, debugscalefac.c, gtkanal.c, + psymodel.c, quantize-pvt.c, vbrquantize.c, vorbis_interface.c: + + replaced fprintf/printf/exit() functions with macro + +2000-06-27 13:58 kzmi + + * get_audio.c, lame.c, main.c, timestatus.c, timestatus.h: + + replace printf/fprintf/exit() with macro. + decode_progress() and decode_progress_finish() are added + in timestatus.c. these functions are used in lame_decode(). + +2000-06-27 02:23 markt + + * INSTALL, Makefile, TODO: + + minor updates + +2000-06-27 01:18 markt + + * mpglib/layer3.c: + + Sergey's bug fix for layer3.c MPEG2 tables + +2000-06-26 20:47 afaber + + * Dll/MP3EncDll.dsp: + + Version 1.30 beta 1 + +2000-06-26 16:08 markt + + * quantize.c: + + put Roberts ABR -V n settings back in. + +2000-06-26 05:56 markt + + * TODO, lame.c, quantize.c, vbrquantize.c: + + fixed one bug in VBR handling of vbrquantize.c + changed ABR mode: it should not be adjusting masking thresholds + based on quality settings. It doesn't make sense to change the + maskings if the number of bits is fixed. + +2000-06-25 19:07 robert + + * quantize-pvt.h, quantize.c: + + little improvements for experimentalX modes + +2000-06-24 07:49 kzmi + + * parse.c, util.h: + + replace printf/fprintf and exit() in parse.c with macro + +2000-06-24 06:00 kzmi + + * util.h: + + abolished LAME_ASSERT(). + +2000-06-24 05:57 kzmi + + * util.c: + + LAME_ASSERT() macro was removed. It was replaced assert(). + +2000-06-23 14:45 kzmi + + * util.h: + + FLUSH_ERR() --> FLUSH_ERROR() + +2000-06-23 13:59 kzmi + + * util.h: + + new macros used instead of fprintf(), assert(), and exit(). + +2000-06-23 13:53 kzmi + + * util.c: + + Alternative printing function lame_errorf() was added. + It will be called instead of fprintf() by using new macro "ERRORF" + +2000-06-22 20:41 robert + + * lame.c, parse.c: + + minor bugs + +2000-06-22 18:42 robert + + * USAGE, lame.c, parse.c, quantize.c: + + Marks new VBR now the default, old still under there, use --vbr-old + +2000-06-22 17:16 robert + + * lame.c, util.h: + + padding as in "MPEG-Layer3/Bitstream Syntax and Decoding" + +2000-06-22 16:06 robert + + * mpglib/layer3.c: + + table correction, thanks to Sergey Sapelin + +2000-06-21 15:38 afaber + + * machine.h: + + Update project file (added FLOAT8_is_float define) + +2000-06-21 05:04 markt + + * lame.c, lame.h, psymodel.c, psymodel.h, quantize-pvt.c, util.h, + vorbis_interface.c: + + added some return codes, removed some exits + +2000-06-21 01:14 markt + + * brhist.c: + + added brhist display for windows, from mremondini@racine.ra.it + +2000-06-21 00:05 markt + + * machine.h: + + added default settings for FLOAT8 + +2000-06-20 23:34 markt + + * psymodel.c, quantize-pvt.c, util.h: + + added code to compute numlines and bo,bu arrays instead of using + table data + +2000-06-20 13:28 takehiro + + * Makefile, machine.h: + + prepare for architecture depending optimization + +2000-06-19 05:08 markt + + * main.c, parse.c, vorbis_interface.c: + + more vorbis bugs fixed + +2000-06-19 01:10 markt + + * lame.c: + + oops, if (gfc->filter_type=0) statement fixed + +2000-06-18 14:39 markt + + * mpglib/interface.c: + + mpglib: better resyncing code + +2000-06-18 04:34 cisc + + * version.c: + + minor change + +2000-06-18 04:15 cisc + + * takehiro.c: + + Removed redundant return. + +2000-06-18 04:13 markt + + * vorbis_interface.c: + + more ogg updates + +2000-06-18 04:09 markt + + * main.c (ogg), lame.c: + + ogg stuff + +2000-06-18 04:08 cisc + + * version.c: + + Included get_audio.h for prototypes... + +2000-06-18 03:59 cisc + + * version.c: + + Added version-check for libsndfile... + +2000-06-18 03:43 markt + + * Makefile, main.c (ogg), lame.c, version.c: + + ogg updates + +2000-06-17 14:00 robert + + * parse.c, quantize-pvt.c: + + typo in parse.c was disabling -Xn settings + +2000-06-17 04:57 takehiro + + * TODO: + + something added + +2000-06-17 00:35 markt + + * lame.c, psymodel.c, util.h: + + code to compute numlines_[] mostly debugged, but not in use. + only remaining psycho acoustic table data: minval (for long + blocks) and SNR for short blocks. + +2000-06-16 18:17 markt + + * encoder.h, psymodel.c, testcase.mp3, util.h: + + psymodel cleanup, bval[] table lookup replaced with + formulas. Next step: replace numlines with formulas + +2000-06-16 18:03 robert + + * TODO: + + point added + +2000-06-16 17:31 markt + + * psymodel.c, quantize-pvt.c, vbrquantize.c: + + code re-arrangment in psymode.c. In preperation to replace + bval[] from table lookup with formulas. + +2000-06-15 16:45 markt + + * vbrquantize.c: + + bug fix for -Y VBR mode: needed to check for return code + for count_bits for errors. + +2000-06-15 15:56 markt + + * parse.c, vbrquantize.c, vorbis_interface.c, mpglib/interface.c: + + mpglib bug fix from Naoki + +2000-06-15 00:06 markt + + * lame.c: + + scalefac_scale disabled for VBR modes. + +2000-06-14 21:13 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c, vbrquantize.c: + + A new noise moded(-X 7) and a new structure to keep track + of all the different noise measures, from Iwasa Kazmi + +2000-06-14 21:04 markt + + * lame.c, lame.h, main.c, parse.c, util.c, util.h: + + new FindNearestBitrate routine, return codes for lame_init_params. + +2000-06-14 20:03 markt + + * USAGE, gpkplotting.c: + + font in frame analyzer, updates to USAGE + +2000-06-14 03:15 markt + + * Makefile.MSVC, vorbis_interface.c: + + updated vorbis support (mono, different samplerates) + +2000-06-13 12:42 takehiro + + * bitstream.c, tables.h, takehiro.c: + + minor optimization and debug + +2000-06-13 11:27 takehiro + + * tables.c, takehiro.c: + + completely MMXed choose table routine. faster! + +2000-06-12 05:29 markt + + * psymodel.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + vbrquantize.c: + + added a different FFT->MDCT normalization, disabled. + +2000-06-10 09:38 robert + + * Makefile.MSVC, machine.h: + + vorbis support + +2000-06-10 03:39 cisc + + * quantize-pvt.c, vbrquantize.c: + + Aaargh, and now it suddenly doesn't work anymore, just gives me tons and tons of bitreservoir errors. :P + +2000-06-10 02:43 cisc + + * vbrquantize.c: + + Ooops, fixed redefinition... + +2000-06-10 01:56 cisc + + * quantize-pvt.c, vbrquantize.c: + + TAKEHIRO_IEEE754_HACK works great now, let's put it as default. + +2000-06-10 00:26 markt + + * Makefile, quantize-pvt.c: + + Mat's ROUNDFAC fix. If #define TAKEHIRO_IEEE754_HACK is + used, ROUNDFAC should be set to -0.0946 + +2000-06-10 00:10 markt + + * Makefile, README, USAGE, lame.c, parse.c, quantize.c: + + trivial changes + +2000-06-09 22:54 robert + + * USAGE: + + average bitrate coding (--abr) usage added + +2000-06-09 22:18 robert + + * get_audio.c, lame.c, lame.h, parse.c, quantize.c, quantize.h: + + Safe VBR mode available as --abr x, targetting x kbits + you can use -b and -B switches as usual with VBR + +2000-06-09 20:34 markt + + * get_audio.c, get_audio.h, quantize-pvt.c: + + minor changes + +2000-06-09 01:00 markt + + * tables.c: + + fixed bug in tables.c + +2000-06-09 00:30 markt + + * Makefile: + + [no log message] + +2000-06-09 00:28 markt + + * Makefile, lame.c: + + fix for when compiling without #define HAVEVORBIS + +2000-06-09 00:22 markt + + * INSTALL, Makefile, Dll/MP3EncDll.dsp: + + updated makefiles for VORBIS option + +2000-06-08 23:19 markt + + * USAGE, lame.c, parse.c, vorbis_interface.c: + + .ogg encoding now works. + +2000-06-08 21:15 markt + + * lame.c, vorbis_interface.c: + + more .ogg encoding stuff. still not working + +2000-06-08 20:46 markt + + * Makefile, get_audio.c, gtkanal.c, lame.c, lame.h, parse.c, + vorbis_interface.c: + + --ogg option to produce .ogg files. not yet working + +2000-06-08 06:04 markt + + * API: + + updated API to include HAVEVORBIS info + +2000-06-08 05:59 markt + + * Makefile: + + makefile for libvorbis support + +2000-06-08 05:58 markt + + * Makefile, USAGE, get_audio.c, lame.h, parse.c, + vorbis_interface.c, mpglib/main.c: + + added .ogg file decoding. + Re-encode all your Vorbis files to MP3 !!! + + (or, lame --decode input.ogg output.wav might be usefull) + +2000-06-07 23:36 markt + + * INSTALL, get_audio.c, lame.h, reservoir.c: + + started to add .ogg decoding + +2000-06-07 22:56 sbellon + + * VbrTag.c, get_audio.c, ieeefloat.c, ieeefloat.h, machine.h, + portableio.c, reservoir.c, mpglib/decode_i386.c, mpglib/mpg123.h: + + added support for FPA10 hardware (RISC OS only) + +2000-06-07 22:54 sbellon + + * main.c: + + changed RISC OS file typing code + +2000-06-07 13:26 takehiro + + * lame.spec: + + spec file for RPM. contributed by ramsy@linux.or.jp + +2000-06-05 18:44 markt + + * gpkplotting.c, gtkanal.c: + + updated X windows font selection (thanks Iwasa) + +2000-06-05 17:38 markt + + * testcase.mp3: + + updated testcase + +2000-06-03 05:39 takehiro + + * takehiro.c: + + more aggressive scfsi using and little bit memory optimization + +2000-06-03 02:46 cisc + + * get_audio.c: + + code cleanup + +2000-06-01 18:30 cisc + + * amiga_mpega.c: + + code cleanup + +2000-05-31 21:00 markt + + * quantize.c: + + SAFE_VBR mode fixes + +2000-05-31 20:40 markt + + * USAGE, lame.c, parse.c, psymodel.c, quantize.c: + + SAFE_VBR mode added. not enabled yet + +2000-05-31 19:52 cisc + + * vbrquantize.c: + + code cleanup + +2000-05-31 03:37 cisc + + * timestatus.c: + + code cleanup + +2000-05-31 00:25 robert + + * Makefile: + + [no log message] + +2000-05-31 00:24 robert + + * mpglib/: interface.c, layer3.c, main.c, mpg123.h: + + code cleanup + +2000-05-30 23:47 markt + + * lame.c: + + -f "fast mode" is now a little slower. + + It now *will* compute psycho acoustics, used for total bits + and pre-echo detection. But it will not spend any time + trying to find optimal scalefactors. + +2000-05-30 23:37 markt + + * TODO, bitstream.c, lame.c, takehiro.c, vbrquantize.c: + + fixed scfsi bug in vbrquantize.c + +2000-05-30 22:29 cisc + + * VbrTag.c, bitstream.c, get_audio.c, l3side.h, main.c, + quantize-pvt.c, quantize-pvt.h, util.c: + + code cleanup + +2000-05-30 22:01 cisc + + * takehiro.c, timestatus.c: + + code cleanup + +2000-05-30 20:01 robert + + * VbrTag.c, gtkanal.c, lame.c, newmdct.c, psymodel.c, + quantize-pvt.c, reservoir.c, takehiro.c, timestatus.c, util.c, + util.h, vbrquantize.c, Makefile: + + code cleanup + +2000-05-30 16:01 robert + + * fft.c, get_audio.c, main.c: + + code cleanup + +2000-05-30 15:16 robert + + * bitstream.c, l3side.h, quantize.c, quantize.h, util.h: + + signed/unsigned fixes + +2000-05-30 00:20 markt + + * Makefile: + + updated Makefile comment about Sun OS + +2000-05-30 00:12 markt + + * bitstream.c, psymodel.c, reservoir.c, takehiro.c, vbrquantize.c: + + psymodel.c: yet another loop check added + + vbrquantize.c: best_scalefac_store can change scalefac values. + scalefactors must be saved and restored before each call. + + bitstream.c: added part2_length assert check + +2000-05-29 22:11 cisc + + * get_audio.c: + + Included portableio.h for prototypes. + +2000-05-29 21:49 cisc + + * amiga_mpega.c: + + Skip bad frames. + +2000-05-29 19:59 robert + + * VbrTag.c, get_audio.c, quantize.c, vbrquantize.c: + + compiler warnings fixed + +2000-05-29 17:15 afaber + + * VbrTag.c: + + Private bit was not retained in VBR header, changes masking bit from 0x0c to 0x0d + +2000-05-29 17:14 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Some minor fixes to the DLL inteface, added Write VBR tag prototype + Added LGPL header to *.h file + +2000-05-29 17:12 afaber + + * lame.dsp: + + Set proper defines in the debug mode + +2000-05-29 16:50 markt + + * mpglib/: layer3.c, main.c, mpglib.h: + + parent_is_slash #define, for the Amiga + +2000-05-29 14:39 markt + + * brhist.c, machine.h, psymodel.c, mpglib/interface.c: + + fixed loop problems with large --cwlimit + +2000-05-28 23:48 markt + + * Makefile: + + makefile debug branch + +2000-05-28 23:47 markt + + * Makefile: + + makefile now -O3 (linux) by default + +2000-05-28 23:46 markt + + * Makefile, USAGE, psymodel.c, quantize.c, reservoir.c, + vbrquantize.c, mpglib/interface.c: + + code cleanup + +2000-05-28 06:56 takehiro + + * quantize-pvt.c: + + restored old GCC asm routine + +2000-05-28 05:01 takehiro + + * Makefile, takehiro.c: + + initial MMX implementation attempt.. + use MMX to huffman coding. + +2000-05-27 07:41 takehiro + + * takehiro.c: + + more pseudo SIMD code + +2000-05-27 07:23 takehiro + + * testcase.mp3: + + testcase update for new scalefac_scale + +2000-05-27 07:22 takehiro + + * quantize-pvt.c, quantize-pvt.h, takehiro.c: + + pseude SIMD countbit routine preparing for MMX + +2000-05-27 07:21 takehiro + + * quantize.c: + + oops, foolish typemiss... + +2000-05-27 03:22 takehiro + + * lame.c, quantize.c, version.h: + + scalefac_scale debug and use it as default + new subblock_gain algorithm + (initial release, -Z to enable it, but not works fine) + +2000-05-27 03:08 takehiro + + * newmdct.c: + + minor changing + +2000-05-27 03:06 takehiro + + * quantize-pvt.c, quantize.c, quantize-pvt.h: + + scalefac_scale debug and use it as default + new subblock_gain algorithm + (initial release, -Z to enable it, but not works fine) + +2000-05-26 19:03 markt + + * gtkanal.c, lame.c, vbrquantize.c: + + vbrquantize.c work + +2000-05-26 01:49 cisc + + * amiga_mpega.c, get_audio.c, lame.h: + + Fixed a bunch of errors that must have been committed whilst sleepwalking. ;) + +2000-05-26 00:49 markt + + * get_audio.c, lame.h, main.c: + + moved WAV writing routines and lame_decoder() into get_audio.c + +2000-05-26 00:31 markt + + * main.c: + + another bug in WriteWav + +2000-05-26 00:02 markt + + * main.c, quantize-pvt.c: + + tweaked .wav file output. Fixed small bug in short block bit + allocation (thanks Iwasa!) + +2000-05-25 23:02 markt + + * lame.dsp (MSVC6): + + updated project files MSVC6 tag + +2000-05-25 15:27 markt + + * amiga_mpega.c, get_audio.c, gtkanal.c, lame.h, main.c, + vbrquantize.c, mpglib/interface.c, mpglib/main.c: + + updated frame analyzer to show difference between original/decoded + updated --decode to return bitrate, samplerate, numchannels. + if samplerate or numchannels changes in mp3 stream, --decode will + quite with an error message + +2000-05-24 16:53 markt + + * gtkanal.c, gtkanal.h, quantize-pvt.c, vbrquantize.c, + mpglib/layer3.c: + + tweeks to frame analyzer: added preflag display + +2000-05-24 00:24 cisc + + * get_audio.c: + + Fixed silly bug preventing mp3input working together with libsndfile. + +2000-05-23 04:12 markt + + * bitstream.c, gtkanal.c, quantize-pvt.c, quantize.c, + vbrquantize.c: + + fixed a bug in the frame analyzer: was rescaling axis between plotting + energy, masking and noise + +2000-05-22 18:20 shibatch + + * mpglib/tabinit.c: + + Changed decwin to more precise one. + +2000-05-22 17:11 markt + + * quantize-pvt.c: + + make IEEE stuff the default on GNU i386 + +2000-05-22 13:14 cisc + + * main.c: + + fwrite() returns number of objects actually written + +2000-05-22 05:39 markt + + * main.c: + + fixed bug for mono .wav headers for lame --decode + +2000-05-22 05:27 markt + + * quantize-pvt.c: + + GNU C ASM code is temporarily disabled. + + It looks like Takehiro's changes to 1.107 have broken this code. + +2000-05-22 05:07 markt + + * mpglib/: common.c, interface.c: + + more robust frame resyncing + +2000-05-22 05:07 markt + + * quantize.c, vbrquantize.c: + + more robust mpglib decoding (frame re-syncing) + +2000-05-21 20:54 cisc + + * quantize-pvt.c: + + TAKEHIRO_IEEE754_HACK should not be default + +2000-05-21 20:31 robert + + * parse.c: + + PRESET tunings: + + after we dropped the ISO 7680 bit buffer limit + allow more often 320 kbits frames + + for MPEG2.5 allow more often short blocks + only 8 kHz streams have now problems with + short blocks, so don't use them then + - dropped all highpass filters, cos the + results did not satisfy me + (in my opinion they actually do more harm than good) + - tuned some lowpass filters cos of the sfb21 + noise calculation in VBR + +2000-05-21 19:33 markt + + * l3side.h, parse.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.c, quantize.h, reservoir.c, reservoir.h: + + comments and other code cleanup + +2000-05-21 16:42 takehiro + + * quantize.c: + + new scalefac_scale algorithm option changed -Y -> -Z + +2000-05-21 16:25 takehiro + + * quantize.c: + + new scalefac_scale algorithm + +2000-05-21 16:19 takehiro + + * quantize-pvt.h, quantize.c: + + new scalefac_scale algorithm. enables with -Y option. + +2000-05-21 13:15 takehiro + + * quantize-pvt.h: + + VBR bug related sfb22 fixed + +2000-05-21 12:52 takehiro + + * quantize-pvt.c: + + VBR bug related sfb22 fixed + +2000-05-20 23:49 robert + + * quantize-pvt.c, quantize.c: + + minor tweaks + +2000-05-20 23:33 robert + + * quantize.c: + + VBR hack + +2000-05-20 21:05 markt + + * bitstream.c, main.c, mpglib/main.c: + + totbit buffer overflow fix + +2000-05-20 20:57 cisc + + * takehiro.c: + + choose_table() argument is int *, not unsigned * + +2000-05-20 20:36 markt + + * bitstream.c, main.c, util.h, mpglib/main.c: + + mpglib will not decode Xing VBR header. + write_timing changed to unsigned long to allow encoding more + than 4 hours at 128kbs. + +2000-05-20 15:13 markt + + * main.c, takehiro.c: + + .wav output with --decode was putting wrong filesize in + .wav header. + +2000-05-19 23:01 markt + + * quantize-pvt.c, testcase.mp3, version.h: + + updated version.h lame 3.84 alpha (CVS version) + +2000-05-19 20:07 markt + + * doc/html/history.html: + + updated history for 3.83beta + +2000-05-19 20:06 markt + + * version.h: + + lame 3.83beta + +2000-05-19 18:43 markt + + * encoder.h, lame.c: + + possible serious buffering problem fixed. LAME buffers input data until + it has at least 1904 samples. It then starts processing them. + + The old MDCT routines processed 1728 samples and had a delay of 528. + (introduced in 3.54) But the new MDCT routines, because the delay is + so small (48 samples) actually need 2014 samples to be in the buffer! + + If you use the lame input routines, for MPEG1, this bug would + not be found because the buffer always has well over 2014 samples + in it. But it was possible to trigger it in MPEG2 encodings. + It would also be possible to trigger this bug in programs + that use lame_enc.dll and pass LAME data that is not in + chunks of 1152 samples. + +2000-05-19 17:23 markt + + * bitstream.c, lame.c, lame.h, parse.c, psymodel.c, testcase.mp3, + vbrquantize.c: + + tweaks to psymodel initialization + more work on vbrquantize.c + +2000-05-19 01:38 markt + + * bitstream.c, gtkanal.c, l3side.h, lame.c, main.c, psymodel.c, + quantize-pvt.c, takehiro.c, testcase.mp3, vbrquantize.c: + + more work on vbrquantize.c + +2000-05-18 18:50 markt + + * main.c: + + updated decoder to remove initial delay + +2000-05-18 05:38 markt + + * main.c, parse.c: + + lame --decode now outputs .wav files + file length in header is set to 2^32-1, since we dont + really know ahead of time how many samples are in the mp3 file. + +2000-05-17 22:25 markt + + * quantize.c: + + ath lower bug in quantize.c fixed + +2000-05-17 22:08 markt + + * quantize-pvt.c: + + calc_noise1 will compute noise (and related info) for + last scalefactor band + +2000-05-17 21:33 markt + + * quantize-pvt.c, takehiro.c: + + frame analyzer displays more data in scalefactor band 22 + +2000-05-17 19:50 markt + + * gtkanal.h, quantize-pvt.c, quantize-pvt.h, quantize.c, + vbrquantize.c: + + modified frame analyzer to show last scalefactor band, + energy and masking (from the ATH). distortion is not yet + calculated in this band. + +2000-05-17 18:08 markt + + * gtkanal.c, l3side.h, quantize-pvt.c, quantize.c, util.h: + + Possible fix for recent VBR/sweep bug: + min bitrate not strictly enforced with -F, and + analog silence was only being computed up th 16khz. + +2000-05-17 17:16 markt + + * USAGE, brhist.c, get_audio.c, lame.c, lame.h, main.c, quantize.c, + reservoir.c, util.c, util.h, vbrquantize.c: + + moved framenum, totalframes into lame.h (so programs which + use libmp3lame can compute statis info.) + +2000-05-15 14:34 takehiro + + * newmdct.c: + + more coding hack. + +2000-05-14 23:38 cisc + + * newmdct.c: + + Changed M_PI to PI + +2000-05-14 08:12 takehiro + + * newmdct.c: + + Naoki's short block mdct + and more my coding hack for mdct + +2000-05-14 05:51 takehiro + + * newmdct.c, util.h: + + mdct_long coding hack + +2000-05-12 11:59 robert + + * util.h, lame.c, newmdct.c: + + code cleanup + +2000-05-12 09:51 takehiro + + * newmdct.c, doc/html/history.html: + + more work in mdct_long and window_filtering + +2000-05-12 05:03 markt + + * testcase.mp3: + + updated testcase.mp3 + +2000-05-12 05:02 markt + + * version.h: + + updated version to 3.83 alpha + +2000-05-12 05:01 markt + + * API, README, version.h, doc/html/history.html: + + version 3.83 + +2000-05-10 13:55 takehiro + + * quantize-pvt.c: + + dirty hack for IEEE 754 FPU + +2000-05-09 16:31 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed problem with build date string, temp string was not initialized properly (was missing a terminator character) + +2000-05-09 11:30 takehiro + + * newmdct.c: + + Naoki's mdct_long with my coding hack. + +2000-05-09 02:45 cisc + + * API, brhist.c: + + Added NOTERMCAP define and changed brhist.c accordingly. + +2000-05-08 22:48 markt + + * testcase.mp3: + + [no log message] + +2000-05-08 22:41 markt + + * quantize-pvt.c, doc/html/history.html: + + updated side channel 320kbs fix + +2000-05-08 22:30 robert + + * Makefile, quantize-pvt.c: + + M/S reduce_side bug fixed, + nonISO buffer mode should work now for + 320 kbits MS streams too + +2000-05-08 19:55 afaber + + * Dll/BladeMP3EncDLL.c: + + Bumped up version number of DLL version library, fixed some of the debugging code + +2000-05-08 17:46 markt + + * doc/html/: contributors.html, examples.html, id3.html, + index.html, lame.css, node5.html, node6.html, switchs.html: + + updated docs from Gaby + +2000-05-08 17:40 markt + + * version.h: + + 3.82 alpha(CVS) version + +2000-05-08 17:38 markt + + * version.h, doc/html/history.html: + + 3.81beta release + +2000-05-08 17:31 markt + + * Makefile, USAGE, VbrTag.c, brhist.c, lame.h, parse.c, + reservoir.c, util.c: + + removed ISO buffer limitation, added --strictly-enforce-ISO option + +2000-05-08 00:06 markt + + * quantize-pvt.c, reservoir.c, vbrquantize.c: + + started work on vbrquantize.c + +2000-05-07 11:09 robert + + * Makefile, Makefile.MSVC, lame.c, parse.c: + + -F option now working, + updated Makefile for DOS + +2000-05-07 03:59 takehiro + + * newmdct.c, util.h: + + new IDCT32 routine from Naoki and optimized by me. + and more thread safe coding. + +2000-05-06 22:20 markt + + * testcase.mp3: + + updated testcases + +2000-05-06 22:20 markt + + * l3bitstream-pvt.h, lame.dsp, Dll/MP3EncDll.dsp: + + updated project files (for removal of ISO code) + +2000-05-06 22:18 markt + + * Makefile, VbrTag.c, VbrTag.h, formatBitstream.c, + formatBitstream.h, l3bitstream.c, l3bitstream.h, lame.c, + quantize.c, util.c, util.h, vbrquantize.c: + + removed all ISO code + +2000-05-06 22:09 markt + + * version.h: + + updated version to 3.81 alpha 1 (CVS version) + +2000-05-06 22:07 markt + + * Makefile: + + updated makefile for beta release + +2000-05-06 22:05 markt + + * version.h, doc/html/history.html: + + updated version for 3.80 beta release + +2000-05-06 22:04 markt + + * USAGE, lame.c, lame.h, main.c, parse.c, quantize.c, + vbrquantize.c: + + added -F option and compression ratio options + +2000-05-06 19:16 markt + + * USAGE, lame.c, lame.h, parse.c, util.c: + + --freeformat option added. Allows lame to write free format + bitstreams + +2000-05-06 18:45 markt + + * bitstream.c, gtkanal.c, lame.c, parse.c, psymodel.c, quantize.c, + util.h, mpglib/interface.c, mpglib/main.c: + + fixed buffer overflow in bitstream.c, + some improvements to mpglib mp3 playback + +2000-05-06 09:27 afaber + + * Dll/MP3EncDll.dsp: + + Update workspaces + +2000-05-05 20:48 markt + + * get_audio.c, mpglib/common.c, mpglib/interface.c, mpglib/main.c, + mpglib/mpg123.h, mpglib/mpglib.h: + + free format mp3 decoding now supported, not fully tested + +2000-05-04 00:07 takehiro + + * takehiro.c: + + new count bits routine, speed up by coding hack. + +2000-05-03 07:23 markt + + * psymodel.c: + + updated comments + +2000-05-03 07:21 markt + + * psymodel.c, testcase.mp3: + + minor change to long block pre-echo control + +2000-05-03 07:18 markt + + * psymodel.c, testcase.mp3: + + minor improvement to long block pre-echo control + +2000-05-03 03:03 markt + + * mpglib/interface.c: + + one last tweak to interface.c + +2000-05-03 02:37 markt + + * bitstream.c, mpglib/common.c, mpglib/interface.c, + mpglib/layer3.c, mpglib/mpg123.h, mpglib/mpglib.h: + + worked on mpglib/interface.c to make it handle free format + bitstreams. (not yet working) + +2000-05-02 18:31 afaber + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Update lame version, bug fixes to play list file generation + +2000-05-02 02:53 markt + + * reservoir.c: + + for CBR encoding, 320kbs, dont allow main_data_begin > 0 + +2000-05-02 01:24 markt + + * gtkanal.c, lame.c, psymodel.c, quantize-pvt.c, quantize.c, + testcase.mp3: + + tweaked a bunch of bit allocation on PE settings, + based on tunings of testsignal2.wav and castanets.wav + +2000-05-01 18:18 markt + + * bitstream.c, brhist.c, brhist.h, lame.c, lame.dsp, lame.h, + parse.c, quantize-pvt.c, reservoir.c, util.h, Dll/MP3EncDll.dsp: + + bunch of vbr histogram tweaks, and added --athshort option for + internal testing only + +2000-04-30 17:54 robert + + * lame.bat: + + DOS batch file to put on Win9x Desktop + you can drag and drop waves on it and + lame will encode them to mp3 + +2000-04-29 23:41 markt + + * bitstream.c, reservoir.c, testcase.mp3: + + moved where main_data_begin was corrected when + padding into ancillary data + +2000-04-26 18:14 markt + + * USAGE, lame.h, main.c, parse.c: + + added the '--decode' option + +2000-04-26 00:54 markt + + * machine.h, main.c, mpglib/decode_i386.c, mpglib/layer3.c: + + moved calls to open the output file until after all + arguments and other conditions are checked. + +2000-04-24 22:22 markt + + * reservoir.c, testcase.mp3: + + disabled acillary drain (pre-frame) because of bugs at 320kbs + Could be player or encoder bug - have to investigate + +2000-04-19 21:35 robert + + * psymodel.c: + + MPEG2.5 related bug fixed + +2000-04-19 19:35 markt + + * lame.c, lame.h, parse.c, quantize-pvt.c: + + fixed bug allowing more than 4096 bits in a granule + +2000-04-18 22:57 markt + + * lame.c, lame.h, psymodel.c, reservoir.c, takehiro.c, util.h: + + lame is now (*maybe*) thread safe! + +2000-04-18 08:35 markt + + * VbrTag.c, VbrTag.h, bitstream.c, brhist.c, get_audio.c, + get_audio.h, id3tag.c, id3tag.h, l3bitstream.c, lame.c, lame.h, + parse.c, psymodel.c, quantize-pvt.c, quantize.c, reservoir.c, + reservoir.h, testcase.mp3, util.c, util.h, vbrquantize.c, + Dll/BladeMP3EncDLL.c: + + more thread-safe work, and id3/vbr tag bug discovered by + Iwasa Kasmi + +2000-04-17 23:29 markt + + * lame.c, psymodel.c, quantize-pvt.c, quantize.c, util.h, + vbrquantize.c: + + tweaks to vbrquantize.c + +2000-04-17 06:12 markt + + * lame.c, testcase.mp3, vbrquantize.c: + + updated test cases + +2000-04-17 05:16 markt + + * bitstream.c, l3bitstream.c, l3side.h, lame.c, quantize-pvt.c, + reservoir.c, mpglib/main.c: + + fixed VBR stuffing bits problem. + if VBR uses a large frame, then ResvMax may become small, and + we have to make sure that main_data_begin doesn't create a buffer + which violates this condition. + + The old code wouldn't check the above, but it would pad the current + frame with 0's (wasting bits) to make sure the *next* frame didn't + violate the ResvMax condition. But this results in wasted bits + because in VBR there is a change the *next* frame will be at + a lower bitrate and thus have a larger ResvMax. + +2000-04-17 02:25 markt + + * API, Makefile, get_audio.c, gtkanal.c, lame.c, lame.h, main.c, + mp3x.c, parse.c, psymodel.c, quantize-pvt.c, quantize.c, + reservoir.c, util.h, vbrquantize.c, mpglib/layer3.c, + mpglib/main.c, mpglib/mpglib.h: + + Removed gtk specific code from libmp3lame.a: libmp3lame.a can now + be compiled to support the mp3 frame analyzer but does not require + gtk to be installed. (and thus, HAVEGTK does not occure in any + of the library routines). To compile the frame analyzer (mp3x) you + of course still need gtk installed. + +2000-04-17 00:38 markt + + * VbrTag.c, mpglib/main.c: + + another attempt at fixing mpeg2.5 xing header + +2000-04-16 20:56 markt + + * VbrTag.c: + + VBR header for MPEG2.5 fixed. + +2000-04-14 00:37 markt + + * lame.c, main.c, parse.c, quantize-pvt.c, reservoir.c, + reservoir.h, vbrquantize.c: + + tweaks to vbrquantize.c + +2000-04-13 01:57 markt + + * version.h (lame3_70): + + fixed version + +2000-04-13 01:19 markt + + * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, util.h, + vbrquantize.c: + + vrbquantize bounds checking + +2000-04-12 18:44 markt + + * lame.c, psymodel.c, quantize.c, testcase.mp3, util.h, + vbrquantize.c: + + removed gfc->masking_lower + +2000-04-12 18:29 markt + + * Makefile, quantize-pvt.c, quantize.c: + + Robert's VBR quality control mode now the default! + +2000-04-12 18:19 markt + + * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, util.h, + vbrquantize.c: + + removed static masking_lower + +2000-04-12 18:10 markt + + * quantize-pvt.c, quantize.c: + + removed reduce_sidechannel static + +2000-04-12 18:08 markt + + * quantize-pvt.c, quantize.c, vbrquantize.c: + + removed convert_mdct static variable + +2000-04-12 18:06 markt + + * quantize-pvt.c, util.h: + + removed static variables ATH_l, ATH_s + +2000-04-12 15:47 markt + + * lame.c, psymodel.c, quantize.c, vbrquantize.c, doc/man/lame.1: + + removed qthr_l, qthr_s from psymodel.c + fixed man pages. + enabled new VBR code with -Y + disabled -Z option: it was broken since subblock gains were not + scaled into xrpow + +2000-04-12 01:37 markt + + * mpglib/layer3.c: + + gtk changes + +2000-04-12 01:36 markt + + * gtkanal.c, lame.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.h, testcase.mp3, vbrquantize.c: + + new vbr quantize code mostly done! + +2000-04-11 18:24 markt + + * Makefile, get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, + lame.h, quantize.c, util.h, vbrquantize.c: + + removed all static variables from get_audio.c + +2000-04-11 15:59 markt + + * HACKING: + + updated HACKING + +2000-04-11 15:55 markt + + * API, l3side.h, lame.c, quantize-pvt.c, quantize-pvt.h, util.h, + vbrquantize.c: + + updated API + +2000-04-11 00:33 markt + + * lame.c, vbrquantize.c: + + work on vbrquattize.c + +2000-04-10 20:24 markt + + * lame.c, main.c, quantize-pvt.c, quantize.c, util.c, util.h: + + bug fixed: mfbuf overflow, and check for overflow was + being done, but after the overflow and in this case + the overflow was causing the check to pass. + +2000-04-10 16:41 markt + + * lame.c, quantize.h, util.c, util.h, vbrquantize.c: + + precompute 16 windows for downsampling. much faster. + +2000-04-09 21:53 markt + + * bitstream.c, quantize-pvt.c, quantize.c, reservoir.c, util.c, + mpglib/layer3.c, mpglib/main.c: + + MPEG2.5 8khz sampling rate fixes + +2000-04-09 02:08 markt + + * encoder.h, lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + reservoir.c, testcase.mp3: + + tweaked bit reservoir growth, bits on pe allocation + +2000-04-08 23:33 markt + + * lame.c, quantize-pvt.c, takehiro.c, testcase.mp3: + + tweaks to on_pe, side channel bit allocation + +2000-04-08 20:33 markt + + * encoder.h, testcase.mp3: + + switched to encoder delay of 576 + +2000-04-08 20:31 markt + + * bitstream.c, tables.c: + + [no log message] + +2000-04-08 20:22 markt + + * bitstream.c, quantize.c, takehiro.c, testcase.mp3, util.c, + util.h: + + Takehiro's more efficient short block huffman coding. + +2000-04-08 18:08 markt + + * lame.c: + + VBR compression ratio calculation + +2000-04-08 01:26 cisc + + * bitstream.c: + + Use INLINE dammit! ;) + +2000-04-07 00:11 markt + + * util.c: + + fixed M_PI problem + +2000-04-06 21:08 robert + + * bitstream.c: + + scalefac_band compile fix + +2000-04-06 19:26 markt + + * doc/html/history.html (lame3_70): + + [no log message] + +2000-04-06 19:17 markt + + * Makefile, version.h (lame3_70): + + [no log message] + +2000-04-06 18:49 markt + + * Makefile (lame3_70): + + [no log message] + +2000-04-06 18:48 markt + + * version.h, doc/html/history.html (lame3_70): + + version 3.70 + +2000-04-06 18:30 markt + + * gtkanal.c, l3bitstream-pvt.h, l3bitstream.c, l3side.h, lame.c, + quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c, + testcase.mp3, util.h, vbrquantize.c: + + made scalefac_band non-local + +2000-04-06 18:23 markt + + * bitstream.c: + + [no log message] + +2000-04-06 18:19 markt + + * bitstream.h: + + [no log message] + +2000-04-06 18:18 markt + + * bitstream.c: + + opps, forgot to add this... + +2000-04-06 17:31 markt + + * Makefile.MSVC, lame.dsp, Dll/MP3EncDll.dsp: + + MSVC project files updated + +2000-04-06 17:29 markt + + * VbrTag.c, VbrTag.h, lame.c, util.c, util.h: + + takehiro bitstream.c now on by default! + +2000-04-06 16:32 markt + + * takehiro.c, mpglib/layer3.c: + + takehiro bitstream.c now working for CBR, disabled by default + +2000-04-05 08:54 markt + + * Makefile, l3bitstream.c, lame.c, quantize-pvt.c, quantize-pvt.h, + tables.c, tables.h, takehiro.c, util.c, util.h: + + takehiro's bitstream.c package close to being interface + into lame. + +2000-04-05 01:38 markt + + * lame.c, util.c: + + mode_fixed bug + +2000-04-05 01:38 markt + + * lame.c (lame3_70): + + mode_fixed bug fixed + +2000-04-04 22:49 markt + + * version.h, doc/html/history.html (lame3_70): + + updated version + +2000-04-04 21:36 robert + + * parse.c: + + [no log message] + +2000-04-04 20:37 cisc + + * amiga_mpega.c (lame3_70): + + Fixed nsamp overflow problem. + +2000-04-04 19:51 markt + + * lame.c, util.c, util.h: + + upsampling uses old interpolation code + downsampling uses good, FIR/blackman window code + +2000-04-04 19:27 markt + + * version.h (lame3_70): + + updated version + +2000-04-04 19:05 markt + + * Makefile.MSVC: + + loopold removed from makefile.msvc + +2000-04-04 17:45 markt + + * parse.c (lame3_70), parse.c: + + cwlimit parsing fixed + +2000-04-04 16:05 markt + + * lame.c (lame3_70), lame.c: + + default mode will use jstereo + +2000-04-04 03:20 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + [no log message] + +2000-04-04 03:20 markt + + * Dll/BladeMP3EncDLL.c: + + more fixes + +2000-04-03 19:50 markt + + * quantize-pvt.c: + + more gfc changes + +2000-04-03 19:19 markt + + * HACKING, lame.c, newmdct.c, quantize-pvt.c, quantize.c, util.c, + util.h: + + more thread-safe work. (moving all static variables into + gfc-> struct) + +2000-04-03 18:24 markt + + * brhist.c, get_audio.c, gtkanal.c, l3bitstream.c, l3bitstream.h, + lame.c, lame.h, newmdct.c, parse.c, psymodel.c, quantize-pvt.c, + quantize.c, quantize.h, reservoir.c, takehiro.c, util.c, util.h, + vbrquantize.c: + + more massive internal changes in the goal of making + lame thread safe. + + gfp-> user controlled varialbes + gfc-> all other internal parameters. eventually all global variables + which very from encode to encode need to go in here. + +2000-04-03 16:00 markt + + * Dll/BladeMP3EncDLL.c: + + dll finally fixed! + +2000-04-03 15:59 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + dll fixes + +2000-04-03 15:39 markt + + * lame.c, Dll/BladeMP3EncDLL.c (lame3_70): + + bug in lame_enc dll fixed? + +2000-04-03 15:38 markt + + * Dll/BladeMP3EncDLL.c: + + bug in lame_enc.dll finally fixed? + +2000-04-03 01:19 markt + + * lame.c: + + tweaked output display + +2000-04-03 01:07 markt + + * lame.c, Dll/BladeMP3EncDLL.c: + + new resample routine. very slow, but much higher + quality. + +2000-04-02 19:38 robert + + * parse.c: + + overhauled presets: + + redesign of help page + + phone uses now MPEG2.5 8kHz + + sw new, for short wave radio @ 11.025 kHz 24kbits + + am new, for am radio @ 16 kHz 32 kbits + + fm changed, 22.05 kHz 64 kbits + + radio new, the old fm at 112 kbits + rest minor tunings + +2000-04-02 02:57 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + [no log message] + +2000-04-02 02:44 markt + + * Dll/: BladeMP3EncDLL.c (lame3_70), BladeMP3EncDLL.c: + + [no log message] + +2000-04-02 01:56 markt + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h (lame3_70): + + Dll updates + +2000-04-02 01:55 markt + + * Dll/BladeMP3EncDLL.c: + + more DLL updates + +2000-04-02 01:39 markt + + * parse.c, util.c: + + MPEG2.5 docs + +2000-04-02 01:35 markt + + * l3bitstream.c, lame.c, lame.h, psymodel.c, quantize-pvt.c, + quantize-pvt.h, util.c, util.h, Dll/BladeMP3EncDLL.c, + Dll/BladeMP3EncDLL.h: + + MPEG2.5 support + +2000-04-01 11:47 robert + + * lame.c, parse.c: + + + added --version and --license switch + + changed --help to give only most important options + so that it fits on a 80x24 terminal display + + added --longhelp switch to get the full options list + + changed -v and -Vx, now they switch quality to 2 + you can go down below 2 by adding -f or -q5 + + changed presets: + turned off highpass filters except for "phone" + voice sample freq now 22.05 kHz, due to mpg123 bug + +2000-04-01 01:09 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + more dll bug fixes (mono) + +2000-04-01 00:04 markt + + * version.h (lame3_70): + + updated version to 3.68 alpha 1 + +2000-03-31 23:56 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + fixed mono bug + +2000-03-31 23:53 markt + + * lame.c, vbrquantize.c, Dll/BladeMP3EncDLL.c: + + mono encoding bug in DLL fixed + +2000-03-31 22:47 robert + + * Makefile, quantize-pvt.c, quantize-pvt.h: + + removed RH_ATH/RH_SIDE_CBR code + +2000-03-31 22:45 robert + + * quantize.c: + + minor frame analyzer fix for VBR, removed RH_ATH/RH_SIDE_CBR code + +2000-03-30 23:39 markt + + * lame.c, parse.c (lame3_70): + + undocumented -q option for internal testing + +2000-03-30 23:38 markt + + * get_audio.c, gtkanal.c, lame.c, main.c, parse.c, quantize.c: + + added -q option for internal testing. sets value of gfp->quality + +2000-03-30 19:51 markt + + * testcase.mp3: + + updated test case for new CVS version + +2000-03-30 09:37 markt + + * INSTALL: + + wingtk doc + +2000-03-30 09:36 markt + + * INSTALL: + + [no log message] + +2000-03-30 08:24 markt + + * INSTALL, README: + + updated docs + +2000-03-30 08:04 markt + + * README.WINGTK, lame.dsp, Dll/MP3EncDll.dsp: + + new directions for compiling mp3x under windows + +2000-03-30 07:54 markt + + * lame.dsp (MSVC6), README.WINGTK: + + updated project files + +2000-03-30 07:00 markt + + * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: + + updated project files + +2000-03-30 05:39 markt + + * VbrTag.c, gtkanal.c, gtkanal.h, l3bitstream.c, lame.c, machine.h, + psymodel.c, quantize.c, takehiro.c, mpglib/layer3.c: + + added big_values display to mp3x + +2000-03-30 05:38 markt + + * VbrTag.c, l3bitstream.c, lame.c, machine.h, quantize.c, + takehiro.c, vbrquantize.c: + + fixed 2 bugs: + + l3bitstream.c: + 1. The quadruples were encoded with the wrong sign: Any non-zero + coefficient in the count1 block was marked as negative! + + takehiro.c: + 2. short blocks were using a cod_info->big_values=288 + (which should be 576, because big_values was multiplied by 2 + in the new version of takehiro.c) + +2000-03-29 20:49 markt + + * doc/html/: contributors.html, examples.html, history.html, + id3.html, index.html, lame.css, node6.html, switchs.html: + + new docs from Gabriel + +2000-03-29 02:00 markt + + * l3bitstream.c, psymodel.c, quantize-pvt.c, quantize.c, + reservoir.c, takehiro.c, util.c, vbrquantize.c, brhist.c, fft.c, + get_audio.c, globalflags.h, gtkanal.c, gtkanal.h, lame.c, + newmdct.c, parse.c: + + removed globalflags.h + +2000-03-29 01:55 markt + + * globalflags.h (lame3_70), brhist.c, fft.c, get_audio.c, + gtkanal.c, gtkanal.h, lame.c, newmdct.c, parse.c, vbrquantize.c: + + removed "globalflags.h" + +2000-03-29 01:06 markt + + * lame.c: + + missing free() calls in lame_encode_buffer_interleave + +2000-03-28 16:41 takehiro + + * takehiro.c: + + oops, this may remove any seg.fault bug... + +2000-03-28 15:39 takehiro + + * takehiro.c: + + Oops, I mistake count1 for big_values + +2000-03-28 13:08 cisc + + * amiga_mpega.c: + + Fixed overflow problem with nsamp calculation. + +2000-03-27 22:09 markt + + * lame.c: + + fixes to lame_encode_buffer_interleave + +2000-03-27 22:09 markt + + * lame.c: + + fixes to lame_encode_buffer_interleave() + +2000-03-27 21:46 robert + + * takehiro.c: + + added assertion, cos here is a bug + +2000-03-27 21:34 markt + + * doc/html/history.html: + + updated history.html + +2000-03-27 21:33 markt + + * version.h: + + [no log message] + +2000-03-27 21:09 markt + + * lame.c: + + minor change with ms_ener_ratio_ave + +2000-03-27 21:06 markt + + * lame.c: + + ms_ener_ratio_ave M/S override switch turned off + +2000-03-27 20:58 markt + + * version.h: + + changed version number. 3.80 is the next beta version, + 3.70 is the stable version + +2000-03-27 19:42 markt + + * version.h (lame3_80): + + updated version in the lame3_80 branch + +2000-03-27 19:42 markt + + * version.h: + + this is new the future version 3.81beta + +2000-03-27 19:39 markt + + * l3bitstream.c, quantize.c, tables.c, takehiro.c (lame3_80): + + The next "official" stable release, lame3.80. + lame3_80 is a branch. + + This will not include Takehiro's latest lossless encoding stuff. + (l3bitstream.c, quantize.c, tables.c, takehiro.c) + +2000-03-27 19:26 markt + + * takehiro.c: + + gfp->use_scfsi replaced by mode_gr==2 + +2000-03-27 17:53 markt + + * get_audio.c, lame.c, main.c, util.c, version.h: + + Ingo -f fast-math rounding problem fix + +2000-03-27 15:59 takehiro + + * takehiro.c: + + debugged seg.fault when count1 is 576 + +2000-03-26 21:21 markt + + * quantize.c: + + opps, i screwed up quantize.c! fixed version + +2000-03-26 10:05 markt + + * Makefile, gtkanal.c, gtkanal.h, lame.c, quantize.c, + mpglib/layer3.c: + + disabled noise_shaping_stop=1, fixed jstereo default mode problem, + updated frame analyzer + +2000-03-25 18:16 cisc + + * takehiro.c: + + Use INLINE define instead of inline. + +2000-03-25 16:18 takehiro + + * lame.c: + + enable noise_shaping==1 when high quality mode even without -X + +2000-03-25 16:17 takehiro + + * takehiro.c: + + debug seg.fault when big_values==0 + +2000-03-25 15:01 takehiro + + * l3bitstream.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + tables.c, takehiro.c: + + best huffman divide now "more best" huffman coding. + +2000-03-25 03:35 takehiro + + * Makefile, l3bitstream.c, l3side.h, lame.c, psymodel.c, + quantize-pvt.c, tables.c, takehiro.c: + + new faster lossless coding routine(especially with -h) + +2000-03-25 00:06 markt + + * get_audio.c, main.c, quantize-pvt.h, quantize.c, takehiro.c, + testcase.mp3: + + added some code to best_scalefac_store: + if ix=0 in a scalefactor band, set the scalefactor to 0 also, + to save a few bits. + +2000-03-24 23:06 markt + + * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: + + updated project files + +2000-03-24 23:02 markt + + * get_audio.c, machine.h: + + _setmode stuff for windows + +2000-03-24 22:37 markt + + * lame.h, quantize-pvt.c, mpglib/layer3.c: + + fixed MPEG2 tables in mpglib, + added more accurate mp3buffer size bound in lame.h + +2000-03-24 18:21 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + [no log message] + +2000-03-24 18:08 markt + + * lame.dsp, loopold.c, Dll/MP3EncDll.dsp: + + removed loopold.c + +2000-03-24 18:07 markt + + * Makefile, gtkanal.c, lame.c, lame.h, psymodel.c, psymodel.h, + quantize-pvt.c, quantize.c: + + Removed old M/S stereo mode which uses L/R masking functions. + removed loopold.c and all that other "dual channel" stuff + +2000-03-24 02:00 markt + + * VbrTag.c, lame.c: + + MPEG2 VBR tag should now work + +2000-03-24 01:38 markt + + * VbrTag.c, VbrTag.h, lame.c, Dll/BladeMP3EncDLL.c: + + Xing MPEG2 headers work + +2000-03-23 22:13 markt + + * Makefile: + + uncommented options in makefile + +2000-03-23 22:12 markt + + * API, Makefile, lame.c, lame.h, util.c, mpglib/common.c: + + strange bug with -f fast-math option under gcc: it would compute + the mp3 framesize wrong, due to incorrect integer truncation. + Replaced implicit integer truncation with floor() to fix this. + +2000-03-23 20:30 markt + + * Makefile, get_audio.c, lame.c, lame.h: + + autoconvert moved into lame_encode_buffer + +2000-03-23 20:02 markt + + * Makefile, lame.c, lame.h: + + lame_encode_buffer_interleaved added to API + +2000-03-22 17:14 markt + + * vbrquantize.c: + + minor fixes + +2000-03-22 04:15 markt + + * version.h, doc/html/history.html: + + lame 3.66 + +2000-03-22 02:03 markt + + * USAGE, gtkanal.c, lame.c, machine.h, main.c, parse.c, + quantize-pvt.c: + + float/double version of ASM quantize routines + +2000-03-21 23:02 markt + + * brhist.c, brhist.h, gtkanal.c, gtkanal.h, l3bitstream-pvt.h, + l3bitstream.c, l3bitstream.h, lame.c, loopold.c, newmdct.c, + newmdct.h, psymodel.c, psymodel.h, quantize-pvt.c, + quantize-pvt.h, quantize.c, quantize.h, reservoir.c, reservoir.h, + takehiro.c, util.c, util.h, vbrquantize.c, mpglib/layer3.c: + + replaced all "gf." by gfp-> + +2000-03-21 20:58 markt + + * lame.c: + + fixed bug in lame_encode_finish: if user informs + lame that mp3buffer has size 0, lame will not check to make + sure the mp3buffer is big enough to store the encoded data + +2000-03-19 22:29 afaber + + * lame.c, Dll/BladeMP3EncDLL.c: + + Fixes to the lame DLL encoder: + If last frame is too short, set number of output bits to 0 instead of -1 + Don't disable the bWriteVBRTag flag if input file is null + +2000-03-19 20:07 cisc + + * get_audio.c: + + Byteswapping (-x) didn't work when using LIBSNDFILE + +2000-03-18 00:33 cisc + + * parse.c: + + Fixed typo in define. + +2000-03-18 00:32 cisc + + * amiga_mpega.c: + + Erk, didn't spot the array/pointer relation, restored to previous version. + +2000-03-17 22:09 cisc + + * amiga_mpega.c: + + b[] is a pointer, so supply addresses of pcm_l&r. + +2000-03-17 19:29 markt + + * lame.c: + + VBR was displaying MPEG2 bitrates - fixed. + +2000-03-17 04:31 markt + + * machine.h: + + added note to machine.h + +2000-03-17 04:30 markt + + * version.h, doc/html/history.html: + + uncommented gcc ASM code + +2000-03-17 04:27 markt + + * quantize-pvt.c: + + uncommended the GCC ASM code for quantize_xrpow() + +2000-03-17 00:07 markt + + * doc/html/history.html: + + updated history + +2000-03-17 00:05 markt + + * amiga_mpega.c, get_audio.c, lame.h, version.h, mpglib/main.c, + mpglib/mpglib.dsp: + + some tweaks to API for lame_decode_fromfile + +2000-03-16 23:59 markt + + * lame.dsp, mpglib/mpglib.dsp (MSVC6), Dll/BladeMP3EncDLL.c: + + project file tweaks + +2000-03-16 23:36 markt + + * get_audio.c, lame.dsp, lame.h, parse.c: + + updated project files MSVC5 + +2000-03-16 23:19 markt + + * lame.dsp, mpglib/mpglib.dsp (MSVC6), main.c: + + updated MSVC6 branch project files + +2000-03-16 19:42 markt + + * Dll/BladeMP3EncDLL.c: + + update to bladedll + +2000-03-16 19:38 markt + + * gtkanal.c, lame.h, mpglib/main.c: + + one last change to lame_decode()... + +2000-03-16 19:05 markt + + * get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, lame.h, + main.c, mp3rtp.c, mp3x.c, parse.c, util.c, util.h: + + more and these really should be the last changes to the API + 'gf' is no substantiated by the calling program, and passed + to all lame_routines(). This is so lame can eventually be + made re-entrant by putting all static vars in the gf struct. + +2000-03-16 16:44 markt + + * VbrTag.c, loopold.c, machine.h, takehiro.c, timestatus.c, util.h: + + strict ansi patches from Heiko.Eissfeld + +2000-03-16 05:33 markt + + * USAGE, main.c: + + updated USAGE + +2000-03-16 05:28 markt + + * mpglib/mpglib.dsp: + + revert back to MSVC5 + +2000-03-16 05:26 markt + + * lame.dsp, lame.dsw (MSVC6), main.c, mpglib/mpglib.dsp: + + MSVC changes to compile lame.exe + +2000-03-16 00:24 markt + + * timestatus.c: + + fixed CPU/playing time display bug + +2000-03-15 20:37 markt + + * encoder.h, l3bitstream.c, lame.h, parse.c, psymodel.c, + takehiro.c: + + minor changes + +2000-03-15 01:34 markt + + * filters.c, filters.h: + + removed filters.c, filters.h + +2000-03-15 01:30 markt + + * Dll/MP3EncDll.dsp: + + updated MSVC6 project files + (in MSVC6 branch) + +2000-03-15 01:20 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: + + reverting back to MSVC5 + +2000-03-15 01:14 markt + + * parse.c, Dll/BladeMP3EncDLL.c, Dll/MP3EncDll.dsp, + Dll/MP3EncDll.dsw: + + updated bladeenc dll + +2000-03-14 21:01 markt + + * lame.c, loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + quantize.h, reservoir.c, reservoir.h, util.c, util.h, + vbrquantize.c: + + removed fr_ps struct + +2000-03-14 20:45 markt + + * brhist.c, brhist.h, l3bitstream.c, l3bitstream.h, lame.c, lame.h, + psymodel.c, psymodel.h, quantize-pvt.c, quantize-pvt.h, + quantize.c, reservoir.c, timestatus.h, util.c, util.h, + vbrquantize.c: + + removed "info" sturct. Removing fr_ps struct + +2000-03-14 07:21 markt + + * brhist.c, l3bitstream.c, lame.c, lame.h, loopold.c, psymodel.c, + quantize-pvt.c, quantize.c, reservoir.c, timestatus.c, + timestatus.h, util.c, util.h: + + removed more info-> variables + +2000-03-14 06:36 markt + + * lame.c, lame.h: + + removing some of the info-> variables + +2000-03-10 23:21 cisc + + * amiga_mpega.c: + + Had to make a dummy break-function to make atexit() work. + +2000-03-10 23:18 markt + + * loopold.c: + + segfault fixed in loopold.c when count[] was zero for one channel + and non-zero for the other + +2000-03-10 20:56 markt + + * API, Makefile, gtkanal.c, lame.c, lame.h, version.c: + + added lame_version to the API + +2000-03-10 20:13 markt + + * Dll/BladeMP3EncDLL.c: + + removed some unnecessary #includes + +2000-03-10 19:48 markt + + * Dll/MP3EncDll.dsp: + + added #define LAMEPARSE to Blade project files + +2000-03-10 19:38 markt + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Blade dll updated to handle new interface + Albert: Sorry if I broke anything, the old version is still in CVS :-) + +2000-03-10 18:55 markt + + * Dll/BladeMP3EncDLL.c (test): + + testing... + +2000-03-10 16:01 markt + + * Dll/BladeMP3EncDLL.c: + + BladeMP3 changes + +2000-03-10 01:41 markt + + * Dll/BladeMP3EncDLL.c: + + some changes to update BaldeMP3encdll + +2000-03-09 19:42 markt + + * quantize-pvt.c, takehiro.c: + + quantize_xrpow_ISO also uses tablelookup, so it also needed the + "xr too big" check + +2000-03-09 18:05 markt + + * HACKING, get_audio.c, gtkanal.c, lame.c, lame.h, main.c, parse.c: + + [no log message] + +2000-03-08 00:16 markt + + * Makefile, parse.c: + + Robert's presets restored. polyphase filters now except filterwidth + arguments. + +2000-03-08 00:05 markt + + * lame.c, lame.h, newmdct.c: + + polyphase filter now supports lowpasswidth and highpasswidth option + +2000-03-07 23:10 cisc + + * API: + + Added AMIGA_MPEGA #define, and fixed a few minor spelling errors... ;) + +2000-03-07 22:56 cisc + + * amiga_mpega.c: + + Made sure lame_decode_fromfile() won't return an empty frame (unless there's an error). + +2000-03-07 18:33 markt + + * API, Makefile, get_audio.c, lame.c, main.c, parse.c: + + minor tweeks to compile w/o decoding library + +2000-03-07 08:01 sbellon + + * lame.c: + + fixed RISC OS FPE support + +2000-03-06 23:28 markt + + * API: + + API description + +2000-03-06 19:55 markt + + * lame.dsp: + + [no log message] + +2000-03-06 19:53 markt + + * Makefile, Makefile.MSVC, get_audio.c, get_audio.h, id3tag.h, + lame.c, lame.dsp, lame.h, parse.c, Dll/MP3EncDll.dsp, + mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, + mpglib/tabinit.c: + + More library work. + Sorry to all the non-unix developers out there, but this will + break all project files. (but we are very close to the end of + the modularization work). + + New code needs the following #defines set somewhere: + + #define HAVEMPGLIB to use mpglib's mp3 *decoding* capibility + (or AMEGA_MPEGA on amiga systems, and dont define HAVEMPGLIB) + #define BRHIST to allow the display of the VBR historgram + #define LIBSNDFILE to use Erik de Castro Lopo's libsndfile + #define LIBSNDLAME to use LAME's minimial internal sndfile I/O + #define LAMEPARSE to use LAME's command line parsing/option setting routines + #define HAVEGTK to compile in support for the GTK mp3 frame analyzer + +2000-03-06 15:16 markt + + * filters.c, lame.c, lame.h, newmdct.c, parse.c, testcase.mp3: + + polyphase filters are now working! + some tuning of polyphase fiters. + removed MDCT filters, sfb21 cutoff. + +2000-03-06 03:59 markt + + * gtkanal.c, lame.c, newmdct.c, psymodel.c: + + new polyphase filters + +2000-03-05 19:07 markt + + * psymodel.c: + + Gabriel: L/R block matching fix + +2000-03-05 18:37 markt + + * id3tag.c, id3tag.h, lame.c, lame.h, newmdct.c, parse.c, + doc/html/id3.html: + + id3v1.1 tags from Don Melton + +2000-03-04 17:19 markt + + * get_audio.c, lame.c: + + resampling moved to fill_buffer_resample() in lame.c, + which has linear and 3rd order resampling + +2000-03-04 15:31 markt + + * amiga_mpega.c, get_audio.c, lame.c, main.c, quantize-pvt.c, + quantize.c, vbrquantize.c: + + patch from kimmo to remove more c++ comments, + fill_buffer_linear_resample code + +2000-03-04 05:13 markt + + * lame.c: + + fill_buffer routines + +2000-03-03 19:25 markt + + * encoder.h, mp3rtp.c: + + mp3rtp uses new, simplified lame_encode_buffer interface + +2000-03-03 19:01 markt + + * encoder.h, lame.c, lame.h, main.c, testcase.mp3: + + added lame_encode_buffer, the new, prefered encoding interface + +2000-02-29 21:19 robert + + * parse.c: + + minor change, exit if wrong preset type was given + +2000-02-29 19:54 robert + + * fft.c: + + minor speed up (at least for gcc) + +2000-02-29 18:00 sbellon + + * lame.c: + + moved RISC OS floating point exception part into debugging area + +2000-02-27 19:11 robert + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + removed unused parameter + +2000-02-27 18:36 robert + + * psymodel.c: + + code clean up, giving an overall speed up of 3-4% + +2000-02-25 07:00 markt + + * lame.c: + + minor cleanup + +2000-02-24 15:30 robert + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c: + + code cleanup, removed unused parameter + +2000-02-23 02:40 cisc + + * amiga_mpega.c: + + Fixed up the cleanup function. + +2000-02-22 23:21 robert + + * quantize-pvt.c, testcase.mp3: + + switched back to original bin_search_stepsize routine + +2000-02-22 03:14 markt + + * quantize-pvt.c, testcase.mp3: + + RH bin_search_stepsize now the default + +2000-02-22 00:54 cisc + + * amiga_mpega.c: + + Oh, nevermind, wasn't very efficient here, proper place would be in sndfile.lib + +2000-02-22 00:15 cisc + + * lame.h, main.c: + + Minor fixes. + +2000-02-21 23:58 cisc + + * amiga_mpega.c: + + Make sure input-file is closed when CTRL-C is received. + +2000-02-21 23:05 markt + + * Makefile, get_audio.c, gtkanal.c, ieeefloat.c, l3bitstream.c, + main.c, util.c, doc/html/history.html, mpglib/main.c: + + some 64bit DEC Alpha patches + +2000-02-21 22:40 robert + + * quantize-pvt.c: + + speed up of bin_search_stepsize, the bin_search is about 20% faster, resulting in an average speed up of 2-3%, disabled by default as it breaks the testcase + +2000-02-21 22:39 sbellon + + * main.c: + + + further RISC OS support added + +2000-02-21 00:21 markt + + * lame.c: + + minor + +2000-02-20 23:36 markt + + * get_audio.c, lame.c, lame.h, main.c, mp3rtp.c, parse.c: + + num_samples /eof fix, ABORTFP fix, stdout mode setting fix + +2000-02-20 20:31 markt + + * mpglib/common.c: + + better error message + +2000-02-20 20:03 robert + + * get_audio.c: + + removed warning about fill up with zeros again, it is common at the end of an input file + +2000-02-20 19:26 robert + + * Makefile, quantize-pvt.c, quantize-pvt.h, quantize.c: + + code cleanup + +2000-02-20 18:45 robert + + * psymodel.c: + + code cleanup + +2000-02-20 14:09 robert + + * formatBitstream.c: + + fixed assertion failure while flushing bitstream at end of encoding + +2000-02-20 14:08 robert + + * get_audio.c: + + applied patch from Jeremy Hall to fix stdin problem + +2000-02-19 13:32 afaber + + * fft.c, formatBitstream.c, formatBitstream.h, get_audio.c, + ieeefloat.c, l3bitstream.c, machine.h, quantize-pvt.c, + quantize.c, takehiro.c, mpglib/mpg123.h: + + Fixed many warning messages when compiling with MSVC + +2000-02-19 12:15 afaber + + * VbrTag.c: + + Applied patch from Mathew Hendry to avoid divide by zero + +2000-02-18 16:21 robert + + * quantize-pvt.c: + + Mathew Hendry: line 813 should read "#define USE_MSC_ASM" and not "#define USE_MSC_AMS" + +2000-02-18 16:20 robert + + * Makefile.MSVC: + + Mathew Hendry: "stray space character following the \" patched + +2000-02-18 16:07 robert + + * lame.c: + + Mathew Hendry's CYGWIN gcc FPU control patch + +2000-02-18 06:16 markt + + * Makefile, gtkanal.c, lame.c, testcase.mp3: + + changed sizeof frame analyzer so it fits on a 800x600 screen. + make --nores also set info->padding = 0. Avoids problem with + small changes in frac_SpF causing different padding patterns and + mp3 file differences. + +2000-02-17 20:12 robert + + * loopold.c, quantize-pvt.h, quantize.c: + + code clean-up, it seems the SIGFPE exceptions are gone + +2000-02-16 22:42 cisc + + * machine.h: + + Fixed INLINE define for SAS/C. + +2000-02-16 21:18 cisc + + * main.c: + + Include machine.h so that needed prototypes get added. + +2000-02-16 07:06 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + new quantize xrpow for PowerPC + +2000-02-16 03:56 markt + + * lame.c, quantize-pvt.c: + + patches for risc_os + +2000-02-15 22:16 robert + + * quantize.c: + + forgot to save plotting data for best quantization in VBR_iteration_loop + +2000-02-15 17:12 robert + + * quantize-pvt.h, quantize.c: + + VBR_iteration_loop speedup, removed extra quantizations + +2000-02-15 14:51 markt + + * Makefile: + + [no log message] + +2000-02-15 14:40 markt + + * lame.c: + + some non-initilized memory patches + +2000-02-15 02:01 robert + + * quantize-pvt.c: + + bug in ms_convert fixed when source and target are the same + +2000-02-14 21:48 robert + + * quantize-pvt.c: + + Mathew Hendry's quantize-xrpow gcc asm patch + +2000-02-14 21:47 robert + + * quantize.c: + + missing line added + +2000-02-14 21:01 afaber + + * lame.c: + + Intialize float arrays to avoid floating point errors when ABORTFP is set + Added floating point trapping code for MSVC compiler + +2000-02-14 20:53 afaber + + * psymodel.c: + + Intialize tot_ener to avoid floating point errors + +2000-02-14 05:50 markt + + * Makefile, loopold.c, parse.c, quantize-pvt.c, quantize-pvt.h, + quantize.c: + + merged takehiro2 branch back into main branch. + there is still a floating point exception which I cannot track down. + +2000-02-14 04:53 markt + + * psymodel.c, takehiro.c, doc/html/contributors.html, + doc/html/examples.html, doc/html/id3.html, doc/html/index.html, + doc/html/switchs.html: + + updated html from Gabriel + +2000-02-13 18:52 robert + + * fft.c, fft.h, psymodel.c: + + modified energy calculation, fast MS fft patch should work now + +2000-02-11 17:21 markt + + * Makefile, quantize.c, reservoir.c: + + fixed scalefac not-initialized problem. This would happen when + xr = 0 and outer_loop() was skipped. + +2000-02-11 16:34 markt + + * psymodel.c: + + m/s fft patch was not working. + +2000-02-10 19:00 robert + + * parse.c: + + added help info for --preset option and shuffled help text to bring it more in line + +2000-02-10 16:33 robert + + * fft.c, fft.h, psymodel.c: + + applied Takehiro Tominaga's fast MS fft patch + +2000-02-10 14:22 markt + + * doc/html/history.html: + + updated history file from web page + +2000-02-10 06:43 markt + + * version.h: + + updated version + +2000-02-10 06:15 markt + + * lame.c, parse.c, version.c, version.h: + + added version info to help output + +2000-02-10 05:42 markt + + * psymodel.c, testcase.mp3: + + fixed bug in s3_s spreading function calculation. + +2000-02-10 05:35 markt + + * loopold.c, quantize-pvt.h, quantize.c: + + undo some of takehiro's speedup improvements until we can track + down floating point exceptions + +2000-02-10 05:23 markt + + * Makefile, brhist.c, brhist.h, lame.c, loopold.c, psymodel.c, + quantize-pvt.c, quantize-pvt.h, quantize.c: + + some bug fixes: + + psymodel partition band calculations done *before* + the spreading function need to use npart_l_orig. After spreading function, + use npart_s_orig. + + 3 cases of scalefac->l[i][sfb] which should be scalefac->l[sbf][i] + + VBR min & max bitrate index setting problem fixed + +2000-02-08 17:20 afaber + + * lame.c: + + Guarded disp_brhist with #ifdef BRHIST, in order to compile with MSVC + +2000-02-06 10:57 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + psymodel.c: + + new spread matrix calculation is now default(faster!) + +2000-02-06 05:59 markt + + * gtkanal.c: + + Iwasa's changes to gtkanal.c + +2000-02-05 12:32 robert + + * lame.c, lame.h, parse.c, util.c, util.h: + + applied Ingo Saitz command line usage patch + +2000-02-05 05:16 markt + + * Makefile.MSVC, brhist.c, lame.c, loopold.c, machine.h, parse.c, + quantize.c: + + minor code cleanup + +2000-02-04 23:49 robert + + * parse.c: + + added "--preset type" option to offer users some usefull presettings + that should shorten the commandline for most cases + +2000-02-04 21:42 afaber + + * lame.c, lame.dsp: + + Fixed WIN32 compiler errors + +2000-02-04 21:26 robert + + * parse.c: + + added '--help' option to allow DOS users to scroll thru the usage page with "lame --help | more" + +2000-02-04 13:57 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c: + + speed up hack on the array index. + +2000-02-04 13:49 takehiro + + * psymodel.c: + + and more faster calculation + +2000-02-04 02:29 markt + + * lame.h, quantize-pvt.c: + + minor editing + +2000-02-03 15:43 takehiro + + * psymodel.c: + + some assertion bug(?) has removed + +2000-02-03 15:31 takehiro + + * psymodel.c: + + more faster calculation + +2000-02-02 22:30 afaber + + * mpglib/main.c: + + Added MPGLIB library + +2000-02-02 22:25 takehiro + + * psymodel.c: + + faster spread function calculation + +2000-02-02 17:12 markt + + * get_audio.h, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c, vbrquantize.c: + + minor code cleanup + +2000-02-02 10:31 markt + + * Makefile: + + testcase update + +2000-02-02 10:25 markt + + * Makefile, filters.c, lame.c, quantize-pvt.c, quantize.c: + + fixed some minor bugs in new scalefac data structure code + +2000-02-02 10:17 markt + + * Makefile, fft.c, filters.c, filters.h, gtkanal.c, + l3bitstream-pvt.h, l3bitstream.c, l3bitstream.h, l3side.h, + lame.c, loopold.c, psymodel.c, psymodel.h, quantize-pvt.c, + quantize-pvt.h, quantize.c, quantize.h, tables.c, tables.h, + takehiro.c, vbrquantize.c (takehiro0): + + The pre-takehiro1 scalefac datastructure code + +2000-02-02 09:19 markt + + * Makefile, filters.c, lame.c, quantize-pvt.c, quantize.c + (takehiro1): + + some bugs fixed with new scalefac struct + +2000-02-01 14:09 takehiro + + * l3side.h, lame.c, loopold.c, psymodel.c, psymodel.h, + quantize-pvt.c, quantize-pvt.h, quantize.c, quantize.h, + vbrquantize.c: + + code clean up. changed definition of structure to optimize array index calculation + +2000-02-01 11:26 takehiro + + * Makefile, fft.c, filters.c, filters.h, gtkanal.c, + l3bitstream-pvt.h, l3bitstream.c, l3bitstream.h, l3side.h, + lame.c, loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + quantize.h, tables.c, tables.h, takehiro.c, vbrquantize.c: + + scalefactor's structure changed + +2000-01-31 22:21 robert + + * quantize-pvt.c, quantize.c: + + little VBR tweaks + +2000-01-31 18:56 markt + + * get_audio.c, lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, version.h: + + updated comments, added lame_close_infile() + +2000-01-31 18:22 markt + + * lame.c, lame.h, main.c, mp3rtp.c, mp3x.c: + + more modularizaton, fixes to mp3rtp + +2000-01-31 05:49 markt + + * mlame: + + spelling error + +2000-01-30 23:00 cisc + + * fft.c: + + Use INLINE define instead of inline. + +2000-01-30 22:19 markt + + * get_audio.c, lame.c, lame.h, parse.c: + + renamed highq quality + +2000-01-30 22:01 markt + + * mp3rtp.c: + + added Felix's email to mp3rtp.c code :-) + +2000-01-30 20:44 markt + + * lame.h: + + minor editing + +2000-01-30 20:27 markt + + * lame.c, lame.h, loopold.c, parse.c, psymodel.c, quantize-pvt.c, + quantize.c, takehiro.c: + + cleaned up highq option. + highq=0 (best quality)... 9(worst quality) + values supported so far: + highq=9 (turned on with -f) + highq=5 (default) + highq=2 (turned on with -h) + +2000-01-30 19:34 markt + + * lame.c, lame.h, machine.h, parse.c, quantize-pvt.c, takehiro.c: + + fixed bug in overflow check in count_bits + +2000-01-30 16:19 robert + + * Makefile, quantize-pvt.c, quantize-pvt.h, quantize.c: + + introduced new RH_ATH compile switch and splitted + RH_masking into RH_SIDE_VBR, RH_SIDE_CBR and + RH_QUALITY_CONTROL=n (n=1,2) + + RH_SIDE_CBR turns off side channel reduction for CBR + RH_SIDE_VBR turns off side channel reduction for VBR + RH_QUALITY_CONTROL=1 plus above switches equals RH_masking + RH_QUALITY_CONTROL=2 is tuned to be used with RH_ATH + RH_ATH changes the definition of distortion a bit: + a)PSY: noise over the PSY model threshold as average + quantization noise over PSY model threshold + b)ATH: max quantization noise of a single freq line over + the ATH threshold of that freq line + the resulting distortion is the min of a) and b) + +2000-01-30 10:54 markt + + * parse.c: + + parse_args and related code moved to parse.c + +2000-01-30 10:53 markt + + * brhist.c, brhist.h: + + vbr histogram code in seperate file + +2000-01-30 10:50 markt + + * Makefile, TODO, get_audio.c, gtkanal.c, id3tag.c, id3tag.h, + lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, util.c, util.h, + Dll/BladeMP3EncDLL.c, Dll/MP3EncDll.dsp, mpglib/main.c: + + more modularization work. Calling program is now responsible for + mp3 file output + +2000-01-30 07:41 markt + + * l3side.h, loopold.c, machine.h, psymodel.c, quantize-pvt.c, + quantize-pvt.h, quantize.c, takehiro.c, vbrquantize.c: + + #ifdef NOPOW removed, replaced by table lookup. You can still + go back to pow() function or exp() by changing the POW20 and IPOW20 + macros in machine.h + +2000-01-30 06:17 takehiro + + * l3side.h, loopold.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.c, takehiro.c: + + use lookup table to calculate pow(2.0, xx).(when not defined NOPOW) + +2000-01-30 06:09 takehiro + + * fft.c: + + faster FFT implementation + +2000-01-28 00:57 cisc + + * lame.c: + + Fixed -m bug when bitrate>=160 (gf.mode_fixed was not set). + +2000-01-27 17:16 markt + + * lame.h: + + comments about varius quality options + +2000-01-27 08:27 markt + + * quantize-pvt.c: + + Fixed bug in scale_bitcount_lsf which was severely limiting the + possible scalefacters used by MPEG2. (Lionel Bonnet) + +2000-01-27 07:49 markt + + * Makefile, get_audio.c, get_audio.h, gtkanal.c, machine.h: + + minor changes + +2000-01-27 05:05 markt + + * fft.c, fft.h, psymodel.c, testcase.mp3: + + Takehiro's fft_short and fft_long now the defaults. + +2000-01-27 04:35 markt + + * rtp.c: + + more updates from Felix + +2000-01-27 03:52 cisc + + * loopold.c, psymodel.c, quantize-pvt.c, quantize.c, takehiro.c, + util.h, vbrquantize.c: + + Added NOPOW define, will replace certain pow()s with optimized variant. + +2000-01-27 02:06 cisc + + * get_audio.c: + + Removed faulty undef of bitwidth. + +2000-01-26 12:37 takehiro + + * fft.c: + + window[] and window_s[]'s buffer overrun is corrected + +2000-01-26 10:27 markt + + * filters.c, lame.c, lame.h: + + more bugs in specifigy a lowpass filter fixed. --voice mode + recast in terms of lowpass filter and other options + +2000-01-26 08:39 markt + + * psymodel.c: + + removed two c++ commends (by request) + +2000-01-26 08:00 markt + + * lame.c: + + moved frameNum=0 from lame_init to lame_init_params + +2000-01-26 07:44 markt + + * HACKING, get_audio.c, get_audio.h, globalflags.h, gtkanal.c, + lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, Dll/BladeMP3EncDLL.c, + Dll/MP3EncDll.dsp: + + more modularizatin work. LAME can now be used as a true library, + without the need to construct simulated argument lists. + See HACKING for some details, and mp3rtp.c for an example. + +2000-01-25 17:50 markt + + * get_audio.c, get_audio.h, globalflags.h, lame.c: + + major work down towards libmp3lame.a: split out parse_args and + parameter setting routines. might have broken some things... + +2000-01-25 17:48 markt + + * rtp.h: + + bug fix from Felix + +2000-01-20 23:21 robert + + * lame.c: + + sfb21 parameter messages added + +2000-01-20 08:03 markt + + * lame.c: + + tweaked filter and other encoding parameter messages + +2000-01-20 07:21 markt + + * gtkanal.c, gtkanal.h, mpglib/layer3.c: + + fixed gtk scfsi printout - mpglib/layer3.c seems correct now. + +2000-01-20 06:09 markt + + * Makefile, TODO, mpglib/layer3.c: + + scfsi fixes to mpglib from Iwasa Kazmi + +2000-01-19 22:11 takehiro + + * mpglib/layer3.c: + + scalefactor for short block last sfb(12) was wrong. + +2000-01-18 18:51 afaber + + * l3bitstream.c: + + Made my bug fixes against version 1.9 instead of a previous version + +2000-01-17 22:31 afaber + + * l3bitstream.c: + + Guarded BF_FlushBitstream function call if PartHoldersInitialized equals zero. + This to avoid GPF when III_Flushbitstream is called when no data is encoder + +2000-01-16 06:49 markt + + * lame.c, lame.h, main.c: + + cleaned up main.c + +2000-01-15 20:33 markt + + * loopold.c, takehiro.c, testcase.mp3: + + added best_scalefac_store to non -h code also + +2000-01-15 14:35 takehiro + + * psymodel.c: + + little bit optimization + +2000-01-14 13:05 takehiro + + * takehiro.c: + + debug message is removed... + +2000-01-14 12:56 takehiro + + * l3bitstream.c, loopold.c, quantize-pvt.c, quantize.c, psymodel.h, + takehiro.c: + + to make it use scfsi + +2000-01-14 07:47 markt + + * doc/html/history.html: + + [no log message] + +2000-01-14 07:34 markt + + * version.h: + + version 3.61 + +2000-01-14 06:35 markt + + * lame.c, quantize.c: + + filters were incorrectly being used under VBR + +2000-01-14 05:54 markt + + * USAGE, lame.c: + + more on the -k option + +2000-01-14 05:46 markt + + * USAGE, lame.c, mpglib/main.c: + + -k option will disable *all* filtering and frequency cutoffs + +2000-01-13 20:41 robert + + * Makefile, quantize.c: + + more VBR (RH_masking) finetuning + now -V3 should give the same result as -V6 before + +2000-01-13 17:21 markt + + * lame.c, psymodel.h: + + fixed noshort option, fixed l3psycho_anal.h + +2000-01-13 16:26 takehiro + + * filters.c, get_audio.c, l3bitstream.c, lame.c, loopold.c, + newmdct.c, newmdct.h, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.c, reservoir.c, reservoir.h, takehiro.c, util.c, util.h, + vbrquantize.c: + + moved info.stereo into gf.stereo + +2000-01-13 07:43 markt + + * loopold.c, quantize.c: + + got rid of old, no longer used preemph code + +2000-01-13 02:07 markt + + * filters.c, get_audio.c, globalflags.h, gtkanal.c, lame.c, + psymodel.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c, vbrquantize.c, mpglib/main.c: + + moved the rest of the global variables into gf struct + +2000-01-13 00:37 markt + + * quantize.c (debug-mat): + + some debug code + +2000-01-12 22:38 afaber + + * .cvsignore, VbrTag.c, lame.dsp: + + fixed a few casting warnings + Updated .cvsignore to ignore output of testcase + +2000-01-12 14:30 takehiro + + * filters.c, globalflags.h, l3bitstream.c, lame.c, newmdct.c, + newmdct.h, quantize-pvt.c, quantize-pvt.h, reservoir.c, + takehiro.c, util.c, vbrquantize.c: + + more simple & fast scalefac_scale use + and mode_gr is moved into gf structure. + +2000-01-11 20:23 cisc + + * amiga_mpega.c: + + Fixed timestatus bug (forgot nsamp variable). + +2000-01-11 05:46 markt + + * quantize.c (debug-mat), gtkanal.c, lame.c: + + changed axis in gtk flag + +2000-01-10 16:37 cisc + + * VbrTag.h, get_audio.c, machine.h, util.c: + + Removed AMIGA_ASYNCIO, custom modified libsndfile worked better. + +2000-01-10 09:34 takehiro + + * mpglib/layer3.c: + + debug for scalefactor reading with scfsi. + +2000-01-10 03:44 cisc + + * get_audio.c: + + Disabled open/close of mp3 when AMIGA_MPEGA and LIBSNDFILE is enabled. + +2000-01-10 02:44 cisc + + * amiga_mpega.c: + + MPGLIB replacement using mpega.library. (AmigaOS) + +2000-01-10 02:40 cisc + + * get_audio.c, mpglib/main.c: + + Removed AMIGA_ASYNCIO stuff for mpglib now that we got AMIGA_MPEGA. + +2000-01-10 02:07 cisc + + * get_audio.c, lame.h: + + Added mpega.library support for decoding mpeg audio, enable with AMIGA_MPEGA. (AmigaOS) + +2000-01-10 00:45 markt + + * loopold.c, quantize.c: + + fixed bug in loopold: scalesave loop was using SBMAX instead of SBPSY, + and exceeding bounds. + +2000-01-09 23:11 markt + + * Dll/BladeMP3EncDLL.c, doc/html/examples.html, doc/html/id3.html, + mpglib/layer3.c: + + globalflags update + +2000-01-09 23:10 markt + + * get_audio.c, globalflags.h, gtkanal.c, gtkanal.h, lame.c, + loopold.c, main.c, mp3x.c, psymodel.c, quantize-pvt.c, + quantize.c, reservoir.c, vbrquantize.c: + + moved more globalflags into the gf. struct + +2000-01-09 22:56 cisc + + * VbrTag.h, get_audio.c, machine.h, util.c, mpglib/main.c: + + Added usage of asyncio.library for improved I/O, enable with AMIGA_ASYNCIO. (AmigaOS) + +2000-01-09 22:26 markt + + * quantize.c, testcase.mp3, doc/html/history.html: + + updated validation testcase. + +2000-01-09 20:59 markt + + * Makefile, version.h: + + release 3.60beta + +2000-01-09 20:55 markt + + * testcase.mp3, testcase.wav: + + new test case: testcase.wav and 'official' output testcase.mp3 + 'make test' will perform a comparison. see makefile for details + +2000-01-09 20:52 markt + + * Makefile: + + new validation procedure + +2000-01-09 20:21 markt + + * doc/html/: history.html, index.html, switchs.html: + + updated web pages from Gabriel + +2000-01-09 16:08 cisc + + * mpglib/main.c: + + VbrTag.h wasn't included on Amiga + +2000-01-09 16:07 cisc + + * fft.c: + + Removed INLINE from fht (will get inlined as a local function anyway) + +2000-01-09 10:54 takehiro + + * l3bitstream.c, l3side.h, loopold.c, quantize-pvt.c, + quantize-pvt.h, quantize.c, takehiro.c: + + All Huffman code search algorithm is implemented. + (-h option to enable this) + more slower, but better quality. + +2000-01-09 07:51 markt + + * Makefile, psymodel.c, quantize.c: + + AAC masking function now the default. This represents less + masking then the old masking function. + +2000-01-09 07:34 markt + + * gtkanal.c, gtkanal.h, lame.c, psymodel.c, psymodel.h, quantize.c: + + compute mid/side energy rations in addition to masking ratios. + in the future we might use this for side channel bit allocation. + it is not used at all right now. + +2000-01-09 04:11 markt + + * Makefile, psymodel.c, quantize.c: + + someone mistakenly uncommented the call to preemphasis(). + this routine should *not* be used. preemph is now taken care of + in scale_bitcount. + +2000-01-08 17:57 robert + + * psymodel.c: + + define AAC_TMN_NMT at compile time to activate AAC tone masking noise + and noise masking tone values + +2000-01-08 17:56 robert + + * quantize.c: + + tuned VBR code, inactive until you define RH_masking at compile time + +2000-01-08 17:54 robert + + * Makefile: + + added suggested compiler options for gcc 2.95.2, uncomment them to activate them + +2000-01-08 17:52 robert + + * PRESETS.draft: + + changed frequencies to Lames format + +2000-01-07 06:40 markt + + * HACKING, Makefile: + + updated HACKING notes + +2000-01-07 06:13 markt + + * get_audio.c, globalflags.h, lame.c, loopold.c, psymodel.c, + quantize-pvt.c, quantize.c, reservoir.c: + + Robert's cw_lower_limit, upper_limit code back in. Default is compute + cw[] up to 8.9Khz. set with --cwlimit + + started putting global variables into global_flags struct. + +2000-01-06 05:12 markt + + * mp3rtp.c: + + more rtp updates + +2000-01-06 04:58 markt + + * lame.c, mp3rtp.c, rtp.c: + + more rtp updates + +2000-01-05 23:52 robert + + * quantize.c: + + VBR: masking lower was not set correctly + it was only set for sloppy mode, fixed now + +2000-01-05 17:40 afaber + + * mpglib/mpglib.h: + + Fixed BOOL definition conflict for Win32 systems + +2000-01-05 16:47 markt + + * Makefile, mp3rtp.c, rtp.c, rtp.h: + + added mp3rtp code. uses lame library, but not part of normal lame + encoder + +2000-01-05 10:04 markt + + * VbrTag.c, VbrTag.h, get_audio.c, l3side.h, lame.h, mpglib/main.c: + + Check for Xing header in mp3 input files + +2000-01-05 06:29 markt + + * version.h: + + updated version + +2000-01-05 06:20 markt + + * Makefile, psymodel.c: + + norm_l, norm_s table data replaced by formulas. + +2000-01-03 05:15 markt + + * INSTALL, Makefile, encoder.h, gtkanal.c, lame.c, main.c, + doc/html/contributors.html, doc/html/index.html, + doc/html/lame.css, doc/html/node6.html, doc/html/node7.html, + doc/html/switchs.html: + + new html from Gabriel. Fixed but that was causing the first frame to + always be zero. changed encoder delay to 800 to fix some other problems + and remove the buffering of the first frame in lame_encode(). + +1999-12-29 15:34 takehiro + + * doc/html/: contributors.html, history.html, index.html, + node6.html, node7.html, switchs.html: + + updated html doc written by Gabriel Bouvigne. + +1999-12-28 22:02 afaber + + * lame.dsp, Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h, + Dll/MP3EncDll.dsp, mpglib/mpglib.dsp: + + Some fixes to the Encoder DLL: + use -h instead of -k flag for high qualtiy + The voice option was set in HQ mode, which is obviously not correct + +1999-12-26 14:48 takehiro + + * l3bitstream.c, lame.c: + + some foolish bug is removed :) + +1999-12-26 09:51 takehiro + + * globalflags.h, lame.c, quantize-pvt.c: + + new option "--noath" to disable the ATH masking + +1999-12-26 09:50 takehiro + + * .cvsignore: + + ignore mp3x binary exe. + +1999-12-23 12:27 takehiro + + * quantize-pvt.c: + + guess wiser initial StepSize for bin_search_stepsize + +1999-12-22 17:38 markt + + * Makefile, psymodel.c: + + AAC NMT/TMN values (commented out) + +1999-12-22 08:03 markt + + * quantize-pvt.c: + + back to oringal (ave_noise < ATH) definition of analog silence for + VBR mode. + +1999-12-22 07:39 markt + + * psymodel.c: + + added AAC spreading function (disabled by default) + +1999-12-21 08:18 markt + + * Makefile, fft.c, l3side.h, lame.c, psymodel.c, psymodel.h, + quantize-pvt.c, quantize.c: + + Bug fix in Mid/Side masking thresholds + +1999-12-19 21:33 afaber + + * Dll/BladeMP3EncDLL.c: + + Set home page link to Lame home page + +1999-12-19 01:47 markt + + * Makefile, globalflags.h, lame.c, psymodel.c: + + went back to ISO layer III recommended cw formulas + +1999-12-19 01:15 robert + + * globalflags.h, lame.c, psymodel.c: + + patched GPSYCHO, enable with --psy-model 0 + +1999-12-17 04:24 markt + + * USAGE, globalflags.h, lame.c, reservoir.c: + + added the --nores option to disable the bitreservoir. only usefull + in special circumstances + +1999-12-16 05:24 markt + + * quantize-pvt.c: + + changed analog silence switch to use max_ener rather than ave_ener. + only affects VBR mode: when analog silence is detected, the min bitrate + is allowed to drop to 32kbs even if set higher with -b + +1999-12-14 23:51 cisc + + * fft.c: + + Changed M_PI to PI. (Not everyone has M_PI, but PI is always defined in util.h) + +1999-12-14 22:44 robert + + * PRESETS.draft: + + first sketch of what could become PRESETS for LAME + +1999-12-14 22:40 robert + + * lame.c, quantize.c: + + added new experimentalX quant_compare -X6 mode + +1999-12-14 04:38 markt + + * Makefile, fft.c, fft.h, psymodel.c: + + Takehiro's fft's back in. fft_short2(), fft_long2() will call original + fft's (with one minor change: 0 protection for ax[] and bx[] was not + needed and has been removed). Takehiro's routines are fft_short() and + fft_long(). They dont give bit-for-bit identical answers, and I still + want to track this down before making them the defaults. . + +1999-12-14 00:19 robert + + * lame.c: + + changed filter options + +1999-12-13 21:56 markt + + * version.h: + + updated version to 3.58 + +1999-12-12 21:14 robert + + * lame.c: + + grrr, mist some filter comandline combinations :( + +1999-12-12 19:22 robert + + * lame.c: + + fixed filter commandline parameter inconsistencies + +1999-12-12 19:02 markt + + * filters.c, newmdct.c, util.h: + + removed extra #define's related to PI + +1999-12-12 03:53 cisc + + * filters.c, loopold.c, newmdct.c, quantize.c, util.h: + + Added new PI and LOG predefined variants, and stuck them in at respective places. + +1999-12-11 23:37 robert + + * lame.c: + + added low/highpass filter switches + +1999-12-11 23:36 robert + + * filters.c, globalflags.h: + + added highpass filter similar to lowpass filter + fixed lowpass filter to avoid endless loops + +1999-12-11 20:13 robert + + * mlame: + + fix for filenames containing spaces + +1999-12-11 00:57 takehiro + + * .cvsignore: + + added lame binary executable itself + +1999-12-10 01:57 takehiro + + * lame.c, loopold.c, quantize.c, util.c, util.h: + + little bit good subblock_gain calculation. + and nint2 is removed. + +1999-12-09 15:17 takehiro + + * loopold.c: + + little bit clean up. some variable restoring is removed. + +1999-12-09 07:07 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c: + + PRECALC_SIZE bug? + PRECALC_SIZE should be 8191+15+1, since max value of xr/ix is 8191+15. + +1999-12-09 06:29 markt + + * loopold.c: + + cod_info-> should be cod_info[ch]-> + +1999-12-09 02:34 takehiro + + * loopold.c, quantize.c: + + Oops, stepsize history was not recorded. + +1999-12-09 02:28 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c: + + initial value of binary search is separeted by channels. + maybe faster bin_search_stepsize + +1999-12-09 00:44 cisc + + * l3bitstream-pvt.h: + + Removed write_ancillary_data() prototype. (No longer used) + +1999-12-09 00:38 cisc + + * takehiro.c: + + Included the correct quantize header. (quantize-pvt.h instead of quantize.h) + +1999-12-08 19:39 cisc + + * util.h: + + Adjusted PI/SQRT2 precision. (SQRT2 deviated from standard math.h value) + +1999-12-08 19:37 cisc + + * mpglib/mpg123.h: + + Fixed M_PI/M_SQRT2 to work on all platforms. Removed unused INLINE. + +1999-12-08 13:45 takehiro + + * mpglib/layer3.c: + + debug about scfsi treatment + +1999-12-08 06:27 markt + + * Makefile, lame.c: + + fixed display bug for VBR histogram under ncurses. Now termcap + is replaced by the more modern ncurses. + +1999-12-08 05:46 markt + + * psymodel.c, takehiro.c: + + avoid bounds check on xr[] for non-hq mode, from Mat. + spelling error in psymodel.c fixed :-) + +1999-12-08 05:24 markt + + * TODO: + + [no log message] + +1999-12-08 03:49 takehiro + + * psymodel.c: + + debugged possible buffer overrun. + +1999-12-07 22:58 cisc + + * mpglib/layer3.c: + + No GTK on Amiga. :( + +1999-12-07 22:56 cisc + + * main.c: + + Removed redundant __buffsize (SAS/C (AmigaOS)) + +1999-12-07 05:11 markt + + * Makefile, TODO, quantize-pvt.c: + + removed -.5 from quantize_xrpow + +1999-12-07 02:04 markt + + * fft.c, fft.h, lame.c, psymodel.c, quantize-pvt.c: + + backed out takehiro's fft changes for now + added latest quantize_xrpow asm from Acy and Mat + +1999-12-06 22:45 takehiro + + * fft.c: + + lookup table integration + +1999-12-06 20:38 afaber + + * fft.c, lame.h, machine.h, psymodel.c: + + Fixed compiler errors + +1999-12-03 10:13 takehiro + + * fft.c, fft.h, psymodel.c: + + maybe faster FFT coding + +1999-12-03 10:11 takehiro + + * l3bitstream.c: + + foolish mistake has removed :) + +1999-12-03 09:45 takehiro + + * l3bitstream.c, l3bitstream.h, lame.c: + + little bit cleanup + +1999-12-02 17:01 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c: + + correct adj43 overrun(maybe) + +1999-11-30 19:30 afaber + + * Dll/.cvsignore, mpglib/.cvsignore: + + Added .cvsignore files in sub projects + +1999-11-30 19:27 afaber + + * .cvsignore, gtkanal.c, lame.dsp, util.c, mpglib/mpglib.dsp: + + Added Win32 specific output files to .cvsignore + updated project files to set proper output directory and fixed alignment + problem between mpglib project and lame project, now all modules + have 8 byte alignment in all configurations + +1999-11-29 19:54 takehiro + + * .cvsignore: + + configure ignoring *.d file + +1999-11-29 19:48 takehiro + + * quantize.c: + + And more cleanup. needless variable store/restores are removed. + +1999-11-29 19:39 takehiro + + * quantize.c: + + little bit code cleanup(deleted needless call of scale_bitcount) + sorry, it is not bugfix of "TOO LARGE quantizerStepSize" ;p + +1999-11-29 16:34 markt + + * loopold.c, quantize-pvt.h, quantize.c: + + removed unused VBRbits from non-VBR quant routines + +1999-11-29 03:13 markt + + * loopold.c, quantize-pvt.c, quantize.c: + + scalefactor preemph *correctly* turned back on + +1999-11-29 02:55 markt + + * loopold.c, quantize-pvt.c: + + scalefac pre-emph turned back on in loopold.c + +1999-11-29 02:45 markt + + * encoder.h, gtkanal.h, l3side.h, lame.c, newmdct.c, psymodel.c, + psymodel.h, quantize.c, util.c: + + MS stereo switch slightly improved: old formula was based on the average + of ms_ratio of both granules. New formula uses ms_ratio from both + granules and the previous and next granule. This will help avoid toggleing + MS stereo off for a single frame. Long runs of MS stereo or regular + stereo will not be affected. + + also fixed a bug in frame analyzer - it was accessing l3_xmin in the last + scalefactor (l3_xmin and maskings are not computed for last scalefactor) + +1999-11-28 23:00 afaber + + * lame.c, lame.dsp, Dll/MP3EncDll.dsp: + + More fixes in order to compile under Win32 + +1999-11-28 22:42 afaber + + * lame.dsp, quantize-pvt.c: + + Fixes to compile under Win32 + +1999-11-28 22:21 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h, + MP3EncDll.dsp, MP3EncDll.dsw: + + Update of Blade DLL interface in order to support new lame features + +1999-11-28 06:45 markt + + * quantize-pvt.c: + + updated comments + +1999-11-28 06:36 markt + + * USAGE, quantize-pvt.c, quantize-pvt.h, vbrquantize.c: + + ASM routines (gcc & MSVC) for quantize_xrpow + +1999-11-28 01:01 markt + + * Makefile, TODO, lame.c, quantize-pvt.c, quantize-pvt.h, + quantize.c: + + If analog silence is detected, allow VBR code to over ride the VBR_min_bitrate + setting and encode at 32kbs. + +1999-11-27 23:39 markt + + * Makefile, formatBitstream.c, l3bitstream.c, lame.c, + quantize-pvt.c, quantize-pvt.h, quantize.c, util.c, + vbrquantize.c: + + More accurate quantization from Segher Boessenkool + +1999-11-25 19:27 markt + + * util.c: + + fixed allowable bitrate displays + +1999-11-24 08:43 markt + + * loopold.c, main.c, mlame, mp3x.c, timestatus.c, portableio.c, + portableio.h, reservoir.c, reservoir.h, tables.h, timestatus.h, + version.c, newmdct.h, quantize.h, takehiro.c, debugscalefac.c, + encoder.h, machine.h, filters.c, quantize-pvt.h, HACKING, + filters.h, vbrquantize.c, Dll/MP3EncDll.dsp, + Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.def, + Dll/BladeMP3EncDLL.h, Dll/MP3EncDll.dsw, doc/html/index.html, + doc/html/lame.css, doc/html/node7.html, doc/html/node5.html, + doc/html/contributors.html, doc/html/node6.html, + doc/html/history.html, doc/html/switchs.html, doc/man/lame.1, + mpglib/Makefile, mpglib/README, mpglib/TODO, mpglib/common.c, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/huffman.h, + mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, + mpglib/mpglib.dsp, mpglib/mpg123.h, mpglib/mpglib.h, + mpglib/tabinit.c: + + Initial revision + +1999-11-24 08:43 markt + + * loopold.c, main.c, mlame, mp3x.c, timestatus.c, portableio.c, + portableio.h, reservoir.c, reservoir.h, tables.h, timestatus.h, + version.c, newmdct.h, quantize.h, takehiro.c, debugscalefac.c, + encoder.h, machine.h, filters.c, quantize-pvt.h, HACKING, + filters.h, vbrquantize.c, Dll/MP3EncDll.dsp, + Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.def, + Dll/BladeMP3EncDLL.h, Dll/MP3EncDll.dsw, doc/html/index.html, + doc/html/lame.css, doc/html/node7.html, doc/html/node5.html, + doc/html/contributors.html, doc/html/node6.html, + doc/html/history.html, doc/html/switchs.html, doc/man/lame.1, + mpglib/Makefile, mpglib/README, mpglib/TODO, mpglib/common.c, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/huffman.h, + mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, + mpglib/mpglib.dsp, mpglib/mpg123.h, mpglib/mpglib.h, + mpglib/tabinit.c: + + initial checkin of LAME + Starting with LAME 3.57beta with some modifications + +1999-11-24 08:40 markt + + * COPYING, INSTALL, Makefile, Makefile.MSVC, tables.c, util.c, + README, README.WINGTK, TODO, USAGE, fft.c, VbrTag.c, VbrTag.h, + auenc, fft.h, psymodel.c, lame.dsp, util.h, formatBitstream.c, + formatBitstream.h, get_audio.c, lame.c, get_audio.h, + globalflags.h, gpkplotting.c, gpkplotting.h, gtkanal.c, + gtkanal.h, quantize.c, version.h, newmdct.c, id3tag.c, id3tag.h, + ieeefloat.c, ieeefloat.h, l3bitstream-pvt.h, l3bitstream.c, + l3bitstream.h, LICENSE, l3side.h, lame.dsw, quantize-pvt.c, + lame.h, psymodel.h: + + Initial revision + +1999-11-24 08:40 markt + + * COPYING, INSTALL, Makefile, Makefile.MSVC, tables.c, util.c, + README, README.WINGTK, TODO, USAGE, fft.c, VbrTag.c, VbrTag.h, + auenc, fft.h, psymodel.c, lame.dsp, util.h, formatBitstream.c, + formatBitstream.h, get_audio.c, lame.c, get_audio.h, + globalflags.h, gpkplotting.c, gpkplotting.h, gtkanal.c, + gtkanal.h, quantize.c, version.h, newmdct.c, id3tag.c, id3tag.h, + ieeefloat.c, ieeefloat.h, l3bitstream-pvt.h, l3bitstream.c, + l3bitstream.h, LICENSE, l3side.h, lame.dsw, quantize-pvt.c, + lame.h, psymodel.h: + + initial checkin of LAME + Starting with LAME 3.57beta with some modifications + diff --git a/lame-3.97/.svn/text-base/DEFINES.svn-base b/lame-3.97/.svn/text-base/DEFINES.svn-base new file mode 100644 index 0000000..b4fab79 --- /dev/null +++ b/lame-3.97/.svn/text-base/DEFINES.svn-base @@ -0,0 +1,45 @@ +$Id: DEFINES,v 1.23 2003/02/07 18:17:41 bouvigne Exp $ + +USE_FAST_LOG: + - use of log/log10 approximation (uses IEEE754 float format) + (absolute precision of log10 is then around 1e-6) + +KLEMM_36: + - portability fixes in the IO code + +NON_LINEAR_PSYMODEL + - use a non linear psymodel in the GPSYCHO case + +USE_GOGO_SUBBAND: + ? + +NOTABLES (default): + ? + +NEWS3: + ? + +NORES_TEST (allways on): + - don't let the 2nd granule use bits saved by the 1st granule + - useful for testing only + +NEW_DRAIN (theres a define above: NEW_DRAINXX): + ? + comment: + mdb_bytes = x/8; m ?= n ?= o ?= 8* mdb_bytes; p ?= mdb_bytes + ( ? == [+-] ) + - optimization should handle this, but it looks ugly + - do we lose precision here? + +LAME_STD_PRINT: + - more verbose output? + +PRECOMPUTE (always on, multiple defines): + - precomputes blackman window? + +USE_GNUC_ASM: + - speed optimization + (should move into configure.in) + +... alot of #if 0 / #if 1 not evaluated ... + diff --git a/lame-3.97/.svn/text-base/HACKING.svn-base b/lame-3.97/.svn/text-base/HACKING.svn-base new file mode 100644 index 0000000..6262cf1 --- /dev/null +++ b/lame-3.97/.svn/text-base/HACKING.svn-base @@ -0,0 +1,148 @@ +First, see the file STYLEGUIDE + +************************************************************************ +TESTING +======= +If you make changes, please test. There is a python +script in the test/ directory which will compare two versions +of lame using a bunch of CBR and ABR options. To run this +script, copy your favorite (and short!) wav file to the +lame/test directory, and run: + +% cd lame/test +% ./lametest.py [-w] CBRABR.op castanets.wav lame_orig lame_new + + + + + + +************************************************************************ +LAME API + +For a general outline of the code, see the file API. +Also, frontend/main.c is a simple front end to libmp3lame.a + +The guts of the code are called from lame_encode_buffer(). + +lame_encode_buffer() handles buffering and resampling, and +then calls lame_encode_frame() for each frame. lame_encode_frame() +looks like this: + +lame_encode_frame_mp3(): + l3psycho_anal() compute masking thresholds + mdct_sub() compute MDCT coefficients + iteration_loop() choose scalefactors (via iteration) + which determine noise shapping, and + choose best huffman tables for lossless compression + + format_bitstream format the bitstream. when data+headers are complete, + output to internal bit buffer. + copy_buffer() copy internal bit buffer into user's mp3 buffer + +************************************************************************ +ADDING NEW OPTIONS + +control variable goes in lame_global_flags sturct. +Assume the variable is called 'new_variable'. + +You also need to write (in get_set.c): + +lame_set_new_variable() +lame_get_new_variable() + +And then document the variable in the file USAGE as well as the +output of "lame --longhelp" + +And add a "--option" style command line option to enable this variable +in parse.m + +Note: for experimental features that you need to call from the frontend +but that should not be part of the official API, see the section at +the end of get_set.c. These functions should *NOT* be prototyped in +lame.h (since that would indicate to the world that they are part +of the API). + + +************************************************************************ + +THREADSAFE: + +Lame should now be thread safe and re-entrant. +The only problem seems to be some OS's allocate small +stacks (< 128K) to threads launched by applictions, and this +is not enough for LAME. Fix is to increase the stack space, +or move some of our automatic variables onto the heap with +by using bug-prove malloc()'s and free(). + + + +************************************************************************ +Global Variables: + +There are two types of global variables. All data in +both strucs is initialized to zero. + +1. lame_global_flags *gfp + +These are input paramters which are set by the calling program, +and some information which the calling program may be interested in. + +This struct instantiated by the call to lame_init(). + + +2. lame_internal_flags *gfc + +Most global variables go here. + +All internal data not set by the user. All 'static' data from +old non-reentrant code should be moved here. + +Defined in util.h. Data for which the size is known +in advace should be explicitly declaired (for example, +float xr[576]); Data which needs to be malloc'd is +handled by: + +1. in lame_init_params(), malloc the data +2. be sure to free the data in freegfc() + + +If the data to be malloc'd is large and only used in +certain conditions (like resampling), use the following: +this has the disadvantage that it is hard to catch and return error +flags all the way back up the call stack. + +1. Add an initialization variable to the gfc struct: lame_init_resample +2. In the resample routine, there should be some code like this: + + if (0==gfc->lame_init_resample) { + gfc->lame_init_resample=1; + /* initialization code: malloc() data, etc */ + } + +3. The data should be free'd in the routine freegfc(). + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/.svn/text-base/INSTALL.configure.svn-base b/lame-3.97/.svn/text-base/INSTALL.configure.svn-base new file mode 100644 index 0000000..50dbe43 --- /dev/null +++ b/lame-3.97/.svn/text-base/INSTALL.configure.svn-base @@ -0,0 +1,183 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/lame-3.97/.svn/text-base/INSTALL.svn-base b/lame-3.97/.svn/text-base/INSTALL.svn-base new file mode 100644 index 0000000..1de17ce --- /dev/null +++ b/lame-3.97/.svn/text-base/INSTALL.svn-base @@ -0,0 +1,210 @@ +LAME 3.xx January 2001 Mark Taylor (http://www.mp3dev.org) + + +======================================================================= +Compile time options +======================================================================= +There are serveral targets which can be built from this +source code: + +lame, lame.exe The command line encoder + +mp3x A GTK based graphical MP3 frame analyzer. For debugging, + development, and studing MP3 frames produced by any + encoder. + +lame_enc.dll a Windows DLL used by many GUIs which support lame. + (Can only be compiled by MSVC???) + + +lame.acm a Windows ACM codec which can be used by + many windows programs, and any directshow program. + See MSVC project files in ACM directory. + Right click on lame.inf to install. + +lame_enc.dshow a Windows direct show filter for lame. Potentially has + more flexability than the ACM codec, but code needs some + work. See MSVC project files in dshow directory + + +libmp3lame.a the static encoding library used by all platforms, required + by all the above targets. + +libmp3lame.so shared version of libmp3lame.a for *NIX platforms + + + +The following compile time options can be used. For libmp3lame.a +and lame_enc.dll, none are required. On non-unix systems, +these options must be set in config.h or in the IDE. +On unix systems, they are set via ./configure. + + +#define HAVE_MPGLIB compile in mpglib's mp3 *decoding* capibility +#define HAVE_VORBIS compile in Vorbis decoding capibility + (you need libvorbis already built) +#define NOANALYSIS do not compile in hooks used by the + MP3 frame analyzer. + + +Options for the command line encoder: +#define LIBSNDFILE to use Erik de Castro Lopo's libsndfile + for input. +#define BRHIST to allow the optional display of the VBR histogram + + + +======================================================================= +Building the software on *NIX platforms using configure: +======================================================================= +Run the following commands: + +% ./configure +% make +% make install + +For a complete list of options, try "./configure --help" +Some of the more usefull options: + +For the encoding library: + + --enable-mp3x Build the mp3 frame analyzer, 'mp3x' + + --enable-mp3rtp Build the encode-to-RTP program, 'mp3rtp' + (broken as of August 2001) + + +For the LAME front end encoder: + + --with-fileio=lame Use lame's internal file io routines [default] + =sndfile Use Erik de Castro Lopo's libsndfile + (Supports many more input formats, but no stdin possible currently) + + --with-sndfile-prefix=DIR Alternate location for libsndfile + (if --with-fileio=sndfile) + + --enable-brhist Include the VBR bitrate histogram feature + (default:yes if any ncurses/termcap available)" + + +Other usefull configure options: + + --enable-debug Build a debug version + + --enable-expopt Enable some more optimizations flags for + the compiler, may or may not produce + faster code + + --prefix = PATH default is /usr/local + (LAME currently installs: + /usr/local/bin/lame + /usr/local/lib/libmp3lame.a + /usr/local/lib/libmp3lame.so + /usr/local/include/lame.h + + + --with-vorbis Enable Ogg Vorbis decoding support + --with-vorbis-prefix = PATH specify where to find Vorbis libs + + +Some more advanced ways to influence the build procedure +(experienced users only, use it at your own risk): + + - If you want to use some custom defines for building (e.g. some out + of the file "DEFINES") use: + + * bourne shell or compatible (ash, bash, zsh, ...): + CONFIG_DEFS="-Dmy_define" ./configure + + * C shell or compatible (csh, tcsh, ...): + setenv CONFIG_DEFS "-Dmy_define" + ./configure + + - If you want to use some additional options for the compiler: + + * bourne shell or compatible (ash, bash, zsh, ...): + CFLAGS="--my_flag" ./configure + + * C shell or compatible (csh, tcsh, ...): + setenv CFLAGS "--my_flag" + ./configure + + Or some combination of the above. + + Note: + If configure detects the presents of "nasm" some additional speed + improvements get compiled in (additional assembler code to detect + and use multimedia extensions of the used processor). + + +======================================================================= +Building the software on *NIX platforms without configure: +======================================================================= +% make -f Makefile.unix + + + +======================================================================= +Building the software on Windows with MSVC: +(or MSVC + 3rd party C compiler) +======================================================================= +There are MSVC project files, and a Makefile.MSVC included +with the project. For production use, be sure to compile +a "Release" target, with the "maximum speed" compile +option, and #define NDEBUG. + +It is possible to compile the GTK frame analyzer under windows, see +README.WINGTK + +Various build options can be set in configMS.h + +Note: project files for building lame.exe seem to be broken or not +quite compatable with MSVC6. The most reliable way to build lame and +lame_enc.dll is to run the .bat script (comes with MSVC6) which sets +up your VC environment to work from the command line, and then: + +copy configMS.h config.h +nmake -f Makefile.MSVC comp=msvc asm=no + +Project files for the dll, ACM codec and directshow filter +seem to be in better sahpe. + + + + + + +======================================================================= +Building the software on Windows with free compilers: +======================================================================= +LAME can be compiled with various Windows MSDOS ports (all free) +of GCC (DJGPP, Mingw32). See README.DJGPP. + +For Mingw32, you should now be able to use the Unix Makefile that +comes with LAME. Try: "make -f Makefile.unix UNAME=MSDOS" +You may need to remove these lines from brhist.c: + +#ifdef _WIN32 +COORD Pos; +HANDLE CH; +CONSOLE_SCREEN_BUFFER_INFO CSBI; +#endif + +Mingw32 users may also try to use the unix configure script (explained +above), it has _untested_ support for Mingw32. + +Cygwin users should use the unix configure script (explained above). If +you have problems with the configure script try: + CC=gcc ./configure +Patches to enable the build of the lame_enc.dll with Cygwin and autoconf / +automake / libtool are welcome! + +To use the Borland C compiler (now free!) see README.B32 and Makefile.B32. +Borland can also compile the lame_enc.dll, but this is untested. + +Can DJGPP or Mingw32 produce lame_enc.dll? + +Various build options can be set in configMS.h + + + diff --git a/lame-3.97/.svn/text-base/LICENSE.svn-base b/lame-3.97/.svn/text-base/LICENSE.svn-base new file mode 100644 index 0000000..0c9ea67 --- /dev/null +++ b/lame-3.97/.svn/text-base/LICENSE.svn-base @@ -0,0 +1,20 @@ +Can I use LAME in my commercial program? + +Yes, you can, under the restrictions of the LGPL. The easiest +way to do this is to: + +1. Link to LAME as separate library (libmp3lame.a on unix or + lame_enc.dll on windows) + +2. Fully acknowledge that you are using LAME, and give a link + to our web site, www.mp3dev.org + +3. If you make modifications to LAME, you *must* release these + these modifications back to the LAME project, under the LGPL. + + +*** IMPORTANT NOTE *** + +The decoding functions provided in LAME use the mpglib decoding engine which +is under the GPL. They may not be used by any program not released under the +GPL unless you obtain such permission from the MPG123 project (www.mpg123.de). diff --git a/lame-3.97/.svn/text-base/Makefile.MSVC.svn-base b/lame-3.97/.svn/text-base/Makefile.MSVC.svn-base new file mode 100644 index 0000000..50a953e --- /dev/null +++ b/lame-3.97/.svn/text-base/Makefile.MSVC.svn-base @@ -0,0 +1,651 @@ +# Makefile.MSVC: MSVC Makefile for LAME +# +# 2000-11-21 Robert Hegemann +# dedicated to the LAME project http://www.mp3dev.org +############################################################################### + + + +#__ readme ____________________________________________________________________ +# nmake -f Makefile.MSVC +# -> build lame and dll, but not mp3x +# -> use Robert's code modifications +# -> assume INTEL compiler available +# -> assume NASM available +# -> assemble MMX code with NASM +# -> optimize for PIII +# -> single file optimizations +# -> no compiler warnings +# +# passing arguments, one can modify the default behaviour: +# COMP= -> use MS compiler +# WARN= -> give verbose compiler warnings +# ASM= -> no NASM nor MMX +# MMX= -> do not assemble MMX code +# CFG= -> disable Robert's modifications +# CPU=P1 -> optimize for Pentium instead of P II/III +# CPU=P2 -> optimize for Pentium II/III, you need a PII or better +# CPU=P3 -> optimize for Pentium III, you need a PIII or better +# GTK=YES -> have GTK, adds mp3x to default targets +# PREC=SLOPPY -> use single float instead of double +# +# Example: +# nmake -f Makefile.MSVC CPU=P1 GTK=YES +#____________________________________________________________________ readme __ + + + +# targets <-> DOS filenames + +T_LAME = lame.exe +T_LDLL = lame_enc.dll +T_MP3X = mp3x.exe + +# default targets + +PGM = $(T_LDLL) $(T_LAME) + +# some default settings + +! IF "$(MSVCVER)" != "" +COMP = MS +! IF "$(MSVCVER)" == "Win64" +! IF "$(ASM)" == "" +ASM = NO # or it could be ML64 if we want to use it... +GTK = NO +! ENDIF +! ENDIF +! ELSE +! IF "$(COMP)" == "" +COMP = INTEL +! ENDIF +! ENDIF + +! IF "$(ASM)" == "" +ASM = YES +! ENDIF + +! IF "$(MMX)" == "" +MMX = YES +! ENDIF + +! IF "$(CFG)" == "NO-ALTERNATE-CODE-AVAILABLE" +CFG = RH +! ENDIF + +! IF "$(CPU)" == "" +CPU = P2auto +! ENDIF + +! IF "$(WARN)" == "" +WARN = OFF +! ENDIF + +! IF "$(PREC)" == "" +PREC = DOUBLE +! ENDIF + + +OFF = win32 + +! MESSAGE ---------------------------------------------------------------------- +! IF "$(CFG)" == "" +! MESSAGE building LAME +! ELSE +! MESSAGE building LAME featuring $(CFG) +! ENDIF +! IF "$(ASM)" == "YES" +! MESSAGE + ASM +! IF "$(MMX)" == "YES" +! MESSAGE + MMX +! ENDIF +! ENDIF +! IF "$(GTK)" == "YES" +! MESSAGE + GTK +! ENDIF +! IF "$(COMP)" == "INTEL" +! MESSAGE using INTEL COMPILER +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) +! ELSE +! IF "$(CPU)" == "P2" +! MESSAGE + you need a Pentium II or better +! ELSE +! IF "$(CPU)" == "P3" +! MESSAGE + you need a Pentium III or better +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ENDIF +! ENDIF +! ELSE +! IF "$(MSVCVER)" == "6.0" +! MESSAGE + using MSVC 6.0 32-Bit Compiler +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ELSEIF "$(MSVCVER)" == "8.0" +! MESSAGE + using MSVC 8.0 32-Bit Compiler +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ELSE +! IF "$(MSVCVER)" == "Win64" +! MESSAGE + using MS 64-Bit Compiler +! ELSE +! MESSAGE using MS COMPILER +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ENDIF +! ENDIF +! ENDIF +! IF "$(PREC)" == "SINGLE" +! MESSAGE + using Single precision +! ENDIF +! MESSAGE ---------------------------------------------------------------------- + +! IF "$(COMP)" != "INTEL" +! IF "$(COMP)" != "BCC" + +#__ Microsoft C options _______________________________________________________ +# +# /O2 maximize speed +# /Ob inline expansion +# /Og enable global optimizations +# /Oi enable intrinsic functions +# /Ot favor code speed +# /Oy enable frame pointer omission +# /G5 Pentium optimization +# /G6 Pentium II/III optimization +# /GA optimize for Windows Application +# /GF enable read-only string pooling +# /Gf enable string spooling +# /Gs disable stack checking calls +# /Gy separate functions for linker +# /QIfdiv generate code for Pentium FDIV fix +# /QI0f generate code for Pentium 0x0f erratum fix +# +# remarks: +# - aliasing options seem to break code +# - try to get the Intel compiler demonstration code! +# ICL produces faster code. + +# debugging options +# CC_OPTS = /nologo /Zi /Ge /GZ +# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no + +# profiling options +# CC_OPTS = /nologo /Zi /O2b2gity /G6As /DNDEBUG +# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no /profile + +# release options +! IF "$(MSVCVER)" == "Win64" +CC_OPTS = /nologo /DWin64 /O2b2ity /GAy /Gs1024 /Zp8 /GL /GS- /Zi +! ELSEIF "$(MSVCVER)" == "8.0" +CC_OPTS = /nologo /DNDEBUG /O2 /Ob2 /GAy /Gs1024 /Zp8 /GL /Zi +! ELSE +CC_OPTS = /nologo /DNDEBUG /O2 /Ob2 /GAy /Gs1024 /QIfdiv /QI0f /YX +! ENDIF + +! IF "$(NODEBUG)" == "1" +CC_OPTS = $(CC_OPTS) /DNDEBUG +! ENDIF + +! IF "$(MSVCVER)" == "6.0" +! IF "$(CPU)" == "P1" +CC_OPTS = $(CC_OPTS) /G5 +! ELSE +CC_OPTS = $(CC_OPTS) /G6 +! ENDIF +! ENDIF + +! IF "$(WARN)" == "OFF" +CC_OPTS = $(CC_OPTS) /w +! ELSE +CC_OPTS = $(CC_OPTS) /W$(WARN) +! ENDIF + +! IF "$(PREC)" == "SINGLE" +CC_OPTS = $(CC_OPTS) /DFLOAT8=float /DREAL_IS_FLOAT=1 +! ENDIF + +CC_OUT = /Fo + +! IF "$(MSVCVER)" == "Win64" +! IF "$(NODEBUG)" == "1" +LN_OPTS = /nologo /map:lame.map +LN_DLL = /DLL +LN_OUT = /OUT: +! ELSE +LN_OPTS = /nologo /DEBUG /pdb:lame.pdb /map:lame.map +LN_DLL = /DLL /DEBUG +LN_OUT = /OUT: +! ENDIF +! ELSEIF "$(MSVCVER)" == "8.0" +! IF "$(NODEBUG)" == "1" +LN_OPTS = /nologo /map:lame.map +LN_DLL = /DLL +LN_OUT = /OUT: +! ELSE +LN_OPTS = /nologo /DEBUG /pdb:lame.pdb /map:lame.map +LN_DLL = /DLL /DEBUG +LN_OUT = /OUT: +! ENDIF +! ELSE +! IF "$(NODEBUG)" == "1" +LN_OPTS = /nologo /map:lame.map +LN_DLL = /DLL +LN_OUT = /OUT: +! ELSE +LN_OPTS = /nologo +LN_DLL = /DLL /DEBUG /pdb:lame.pdb /map:lame.map +LN_OUT = /OUT: +! ENDIF +! ENDIF + +! IF "$(MSVCVER)" == "Win64" +CC = cl +LN = link +! ELSE +CC = cl +LN = link +! ENDIF +#_______________________________________________________ Microsoft C options __ + + +! ELSE + +#__ Borland BCC options _______________________________________________________ +# +# first draft, DLL not working, generates very slow code! +BCCINST = C:/Borland/BCC55 + +CC_OPTS = -pc -q -ff -fp -jb -j1 -tWC -tWM -O2 -OS -I$(BCCINST)/include -DNDEBUG -DWIN32 +# dll >> -tWD +LN_OPTS = -lGn -lGi -lap -lx -L$(BCCINST)/lib +# dll >> -Tpd +! IF "$(CPU)" == "P1" +CC_OPTS = $(CC_OPTS) -5 +! ELSE +CC_OPTS = $(CC_OPTS) -6 +! ENDIF + +! IF "$(WARN)" == "OFF" +CC_OPTS = $(CC_OPTS) -w- +! ELSE +CC_OPTS = $(CC_OPTS) +! ENDIF + +LN_DLL = +#$(CCINST)/lib/cw32R.lib +LN_OUT = -e +CC_OUT = -o + +CC = bcc32 +LN = bcc32 + +OFF = obj +PGM = $(T_LAME) + +! ENDIF +#_______________________________________________________ Borland BCC options __ + + +! ELSE + +#__ Intel 4.5 options _________________________________________________________ +# +# /YX enable automatic precompiled header file creation/usage +# /Ox maximum optimization same as /O2 without /Gfy +# /O2 same as /Gfsy /Ob1gyti +# /Gd 1) make cdecl the default calling convention +# /G5 2) optimized for Pentium +# /G6 3) optimized for Pentium II/III +# /GA assume single threaded +# /Gs[n] disable stack checks for functions with /dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-libtool clean-recursive \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am + + +# end global section + +.PHONY: test + +# +# The differences depend on the used processor architecture, the used +# compiler and the used options for the compiler, so make test may +# show some differences. You should only be concerned if you are a +# LAME developer and the number of differences change after you +# modified the source. +# +testcase.new.mp3: testcase.wav frontend/lame$(EXEEXT) + time frontend/lame$(EXEEXT) --nores $(top_srcdir)/testcase.wav testcase.new.mp3 || $(RM_F) testcase.new.mp3 + +test: testcase.mp3 testcase.new.mp3 + @echo + @echo "The following output has value only for a LAME-developer, do not make _any_" + @echo "assumptions about what this number means. You do not need to care about it." + @cmp -l testcase.new.mp3 $(top_srcdir)/testcase.mp3 | wc -l + +testupdate: testcase.mp3 testcase.new.mp3 + cp testcase.new.mp3 $(top_srcdir)/testcase.mp3 + +testg: frontend/mp3x$(EXEEXT) $(top_srcdir)/../test/castanets.wav + frontend/mp3x$(EXEEXT) -h $(top_srcdir)/../test/castanets.wav + +update: + cd $(top_srcdir) && CVS_RSH=ssh cvs -z3 -q update -dAP || true + +diff: + cd $(top_srcdir) && CVS_RSH=ssh cvs -z3 diff -u || true + +frontend/lame$(EXEEXT): + $(MAKE) $(MAKEFLAGS) + +frontend/mp3x$(EXEEXT): frontend/lame$(EXEEXT) +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/.svn/text-base/Makefile.unix.svn-base b/lame-3.97/.svn/text-base/Makefile.unix.svn-base new file mode 100644 index 0000000..f19aad1 --- /dev/null +++ b/lame-3.97/.svn/text-base/Makefile.unix.svn-base @@ -0,0 +1,614 @@ +# Makefile for LAME 3.xx +# +# LAME is reported to work under: +# Linux (i86), NetBSD 1.3.2 (StrongARM), FreeBSD (i86) +# Compaq Alpha(OSF, Linux, Tru64 Unix), Sun Solaris, SGI IRIX, +# OS2 Warp, Macintosh PPC, BeOS, Amiga and even VC++ +# + +# these variables are available on command line: +# +# make UNAME=xxxxx ARCH=xxxxx - specify a type of host +# make PGM=lame_exp - specify a name of an executable file +# +# if you have mingw32-gcc, try: +# make -fMakefile.unix UNAME=MSDOS +# or if you get the error +# "process_begin: CreateProcess((null), copy configMS.h config.h, ...)": +# make -fMakefile.unix UNAME=MSDOS NOUNIXCMD=NO +# or if you have NASM: +# make -fMakefile.unix UNAME=MSDOS HAVE_NASM=YES +# + +ifeq ($(UNAME),MSDOS) + UNAME ?= UNKNOWN + ARCH = x86 + NOUNIXCMD = YES +else + UNAME = $(shell uname) + ARCH = $(shell uname -m) + iARCH = $(patsubst i%86,x86,$(ARCH)) +endif + +HAVE_NASM = NO +HAVE_NEWER_GLIBC = NO + +# generic defaults. OS specific options go in versious sections below +PGM = lame +CC = gcc +CC_OPTS = -O +CPP_OPTS = -Iinclude -Impglib -Ifrontend -Ilibmp3lame +AR = ar +RANLIB = ranlib +GTK = +GTKLIBS = +LIBSNDFILE = +LIBS = -lm +MP3LIB = libmp3lame/libmp3lame.a +MP3LIB_SHARED = libmp3lame/libmp3lame.so +MAKEDEP = -M +BRHIST_SWITCH = +LIBTERMCAP = +RM = rm -f + +CPP_OPTS += -DHAVE_CONFIG_H -I. + +########################################################################## +# -DHAVEMPGLIB compiles the mpglib *decoding* library into libmp3lame +########################################################################## +CPP_OPTS += -DHAVE_MPGLIB + +########################################################################## +# -DUSE_LAYER_1/2 enables Layer1 or Layer2 *decoding* abilities +########################################################################## +CPP_OPTS += -DUSE_LAYER_1 -DUSE_LAYER_2 + +########################################################################## +# -DTAKEHIRO_IEEE754_HACK enables Takehiro's IEEE hack +########################################################################## +ifeq ($(iARCH),x86) + CPP_OPTS += -DTAKEHIRO_IEEE754_HACK +endif + +########################################################################## +# Define these in the OS specific sections below to compile in code +# for the optional VBR bitrate histogram. +# Requires ncurses, but libtermcap also works. +# If you have any trouble, just dont define these +# +# BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_{NCURSES_}TERMCAP_H +# LIBTERMCAP = -lncurses +# LIBTERMCAP = -ltermcap +# +# or, to try and simulate TERMCAP (ANSI), use: +# BRHIST_SWITCH = -DBRHIST +# +########################################################################## + + +########################################################################## +# Define these in the OS specific sections below to compile in code for: +# +# SNDLIB = -DLIBSNDFILE to use Erik de Castro Lopo's libsndfile +# http://www.zip.com.au/~erikd/libsndfile/ instead of LAME's internal +# routines. Also set: +# +# LIBSNDFILE = -lsndfile +# or +# LIBSNDFILE = -L/location_of_libsndfile -lsndfile +# +########################################################################## + + +########################################################################## +# Define these in the OS specific sections below to compile in code for +# the GTK mp3 frame analyzer +# +# Requires -DHAVE_MPGLIB +# +# GTK = -DHAVE_GTK `gtk-config --cflags` +# GTKLIBS = `gtk-config --libs` +# +########################################################################## + + + + +########################################################################## +# LINUX +########################################################################## +ifeq ($(UNAME),Linux) +# remove these lines if you dont have GTK, or dont want the GTK frame analyzer + GTK = -DHAVE_GTK `gtk-config --cflags` + GTKLIBS = `gtk-config --libs` +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H + LIBTERMCAP = -lncurses +# uncomment to use LIBSNDFILE +# SNDLIB = -DLIBSNDFILE +# LIBSNDFILE=-lsndfile + +# suggested for gcc-2.7.x +# CC_OPTS = -O3 -fomit-frame-pointer -funroll-loops -ffast-math -finline-functions -Wall -pedantic +# CC_OPTS = -O9 -fomit-frame-pointer -fno-strength-reduce -mpentiumpro -ffast-math -finline-functions -funroll-loops -Wall -malign-double -g -march=pentiumpro -mfancy-math-387 -pipe -pedantic + +# for debugging: + CC_OPTS = -UNDEBUG -O -Wall -pedantic -ggdb -DABORTFP + +# for lots of debugging: +# CC_OPTS = -DDEBUG -UNDEBUG -O -Wall -pedantic -g -DABORTFP + + +ifeq ($(CFG),RH) + CPP_OPTS += -DFLOAT8=float -DREAL_IS_FLOAT=1 +# these options for gcc-3.2 & AthlonXP + CC_OPTS = \ + -pipe -O3 \ + -Wall -W -Wmissing-declarations -Wfloat-equal \ + -Wcast-qual -Wcast-align -Wdisabled-optimization -Wshadow \ + -march=athlon-xp \ + -malign-double \ + -maccumulate-outgoing-args +# -Wconversion -Wunreachable-code \ + + HAVE_NEWER_GLIBC = YES + HAVE_NASM = YES +endif + +ifeq ($(CFG),PFK) + CPP_OPTS += -DKLEMM -DKLEMM_00 -DKLEMM_01 -DKLEMM_02 -DKLEMM_03 -DKLEMM_04 -DKLEMM_05 -DKLEMM_06 -DKLEMM_07 -DKLEMM_08 -DKLEMM_09 -DKLEMM_10 -DKLEMM_11 -DKLEMM_12 -DKLEMM_13 -DKLEMM_14 -DKLEMM_15 -DKLEMM_16 -DKLEMM_17 -DKLEMM_18 -DKLEMM_19 -DKLEMM_20 -DKLEMM_21 -DKLEMM_22 -DKLEMM_23 -DKLEMM_24 -DKLEMM_25 -DKLEMM_26 -DKLEMM_27 -DKLEMM_28 -DKLEMM_29 -DKLEMM_30 -DKLEMM_31 -DKLEMM_32 -DKLEMM_33 -DKLEMM_34 -DKLEMM_35 -DKLEMM_36 -DKLEMM_37 -DKLEMM_38 -DKLEMM_39 -DKLEMM_40 -DKLEMM_41 -DKLEMM_42 -DKLEMM_43 -DKLEMM_44 -DKLEMM_45 -DKLEMM_46 -DKLEMM_47 -DKLEMM_48 -DKLEMM_49 -DKLEMM_50 + CC_OPTS = \ + -Wall -O9 -fomit-frame-pointer -march=pentium \ + -finline-functions -fexpensive-optimizations \ + -funroll-loops -funroll-all-loops -pipe -fschedule-insns2 \ + -fstrength-reduce \ + -malign-double -mfancy-math-387 -ffast-math + + HAVE_NEWER_GLIBC = YES + HAVE_NASM = YES +endif + +########################################################################## +# LINUX on Digital/Compaq Alpha CPUs +########################################################################## +ifeq ($(ARCH),alpha) + +################################################################ +#### Check if 'ccc' is in our path +#### if not, use 'gcc' +################################################################ +ifeq ($(shell which ccc 2>/dev/null | grep -c ccc),0) + +# double is faster than float on Alpha +CC_OPTS = -O4 -pedantic -Wall -fomit-frame-pointer -ffast-math -funroll-loops \ + -mfp-regs -fschedule-insns -fschedule-insns2 \ + -finline-functions \ +# -DFLOAT=double +# add "-mcpu=21164a -Wa,-m21164a" to optimize for 21164a (ev56) CPU + +################################################################ +#### else, use 'ccc' +################################################################ +else + +# Compaq's C Compiler +CC = ccc + +################################################################ +#### set 'CC_OPTS = -arch host -tune host' to generate/tune instructions for this machine +#### 'CC_OPTS += -migrate -fast -inline speed -unroll 0' tweak to run as fast as possible :) +#### 'CC_OPTS += -w0 -pedantic -Wall' set warning and linking flags +################################################################ +CC_OPTS = -arch host -tune host +CC_OPTS += -migrate -fast -inline speed -unroll 0 +CC_OPTS += -w0 -pedantic -Wall + + +################################################################ +#### to debug, uncomment +################################################################ +# For Debugging +#CC_OPTS += -g3 + +################################################################ +#### define __DECALPHA__ (i was getting re-declaration warnings +#### in machine.h +################################################################ +# Define DEC Alpha +CPP_OPTS += -D__DECALPHA__ + +# standard Linux libm +#LIBS = -lm +# optimized libffm (free fast math library) +#LIBS = -lffm +# Compaq's fast math library +LIBS = -lcpml +endif # gcc or ccc? +endif # alpha +endif # linux + + + +########################################################################## +# FreeBSD +########################################################################## +ifeq ($(UNAME),FreeBSD) +# remove if you do not have GTK or do not want the GTK frame analyzer + GTK = -DHAVE_GTK `gtk12-config --cflags` + GTKLIBS = `gtk12-config --libs` +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H + LIBTERMCAP = -lncurses + +endif + + +########################################################################## +# OpenBSD +########################################################################## +ifeq ($(UNAME),OpenBSD) +# remove if you do not have GTK or do not want the GTK frame analyzer + GTK = -DHAVE_GTK `gtk-config --cflags` + GTKLIBS = `gtk-config --libs` +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H + LIBTERMCAP = -lcurses +endif + + + + +########################################################################## +# SunOS +########################################################################## +ifeq ($(UNAME),SunOS) + CC = cc + CC_OPTS = -O -xCC + MAKEDEP = -xM +# for gcc, use instead: +# CC = gcc +# CC_OPTS = -O +# MAKEDEP = -M +endif + + +########################################################################## +# SGI +########################################################################## +ifeq ($(UNAME),IRIX64) + CC = cc + CC_OPTS = -O3 -woff all + +#optonal: +# GTK = -DHAVE_GTK `gtk-config --cflags` +# GTKLIBS = `gtk-config --libs` +# BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H +# LIBTERMCAP = -lncurses + +endif +ifeq ($(UNAME),IRIX) + CC = cc + CC_OPTS = -O3 -woff all +endif + + + +########################################################################## +# Compaq Alpha running Dec Unix (OSF) +########################################################################## +ifeq ($(UNAME),OSF1) + CC = cc + CC_OPTS = -fast -O3 -std -g3 -non_shared +endif + +########################################################################## +# BeOS +########################################################################## +ifeq ($(UNAME),BeOS) + CC = $(BE_C_COMPILER) + LIBS = +ifeq ($(ARCH),BePC) + CC_OPTS = -O9 -fomit-frame-pointer -march=pentium \ + -mcpu=pentium -ffast-math -funroll-loops \ + -fprofile-arcs -fbranch-probabilities +else + CC_OPTS = -opt all + MAKEDEP = -make +endif +endif + +########################################################################### +# MOSXS (Rhapsody PPC) +########################################################################### +ifeq ($(UNAME),Rhapsody) + CC = cc + LIBS = + CC_OPTS = -O9 -ffast-math -funroll-loops -fomit-frame-pointer + MAKEDEP = -make + +endif +########################################################################## +# OS/2 +########################################################################## +# Properly installed EMX runtime & development package is a prerequisite. +# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 +# +########################################################################## +ifeq ($(UNAME),OS/2) + SHELL=sh + CC = gcc + CC_OPTS = -O3 -D__OS2__ + PGM = lame.exe + LIBS = + RANLIB = touch + +# I use the following for slightly better performance on my Pentium-II +# using pgcc-2.91.66: +# CC_OPTS = -O6 -ffast-math -funroll-loops -mpentiumpro -march=pentiumpro -D__OS2__ +# for the unfortunates with a regular pentium (using pgcc): +# CC_OPTS = -O6 -ffast-math -funroll-loops -mpentium -march=pentium -D__OS2__ + +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_{NCURSES_}TERMCAP_H + LIBTERMCAP = -lncurses + +# Uncomment & inspect the 2 GTK lines to use MP3x GTK frame analyzer. +# Properly installed XFree86/devlibs & GTK+ is a prerequisite. +# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: +# GTK = -DHAVE_GTK -IC:/XFree86/include/gtk12 -Zmt -D__ST_MT_ERRNO__ -IC:/XFree86/include/glib12 -IC:/XFree86/include +# GTKLIBS = -LC:/XFree86/lib -Zmtd -Zsysv-signals -Zbin-files -lgtk12 -lgdk12 -lgmodule -lglib12 -lXext -lX11 -lshm -lbsd -lsocket -lm +endif + +########################################################################### +# MSDOS/Windows +########################################################################### +ifeq ($(UNAME),MSDOS) + RM = + CC_OPTS = \ + -Wall -pipe -O3 -fomit-frame-pointer -ffast-math -funroll-loops \ + -fschedule-insns2 -fmove-all-movables -freduce-all-givs \ + -mcpu=pentium -march=pentium -mfancy-math-387 + CC_OPTS += -D_cdecl=__cdecl + PGM = lame.exe +endif + +########################################################################### +# AmigaOS +########################################################################### +# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS +# +########################################################################### +ifeq ($(UNAME),AmigaOS) + CC = gcc -noixemul + CC_OPTS = -O3 -ffast-math -funroll-loops -m68020-60 -m68881 + BRHIST_SWITCH = -DBRHIST + MAKEDEP = -MM + ifeq ($(ARCH),WOS) + CC = ppc-amigaos-gcc -warpup + CC_OPTS = -O3 -ffast-math -fomit-frame-pointer -funroll-loops \ + -mmultiple -mcpu=603e + AR = ppc-amigaos-ar + RANLIB = ppc-amigaos-ranlib + LIBS = + endif + ifeq ($(ARCH),PPC) + CC = ppc-amigaos-gcc + CC_OPTS = -O3 -ffast-math -fomit-frame-pointer -funroll-loops \ + -mmultiple -mcpu=603e + AR = ppc-amigaos-ar + RANLIB = ppc-amigaos-ranlib + LIBS = + endif +endif + + + + + + + + + + + + + + + + +# 10/99 added -D__NO_MATH_INLINES to fix a bug in *all* versions of +# gcc 2.8+ as of 10/99. + +ifeq ($(HAVE_NEWER_GLIBC),YES) +CC_SWITCHES = +else +CC_SWITCHES = -D__NO_MATH_INLINES # only needed by some older glibc +endif + +CC_SWITCHES += -DNDEBUG $(CC_OPTS) $(SNDLIB) $(GTK) $(BRHIST_SWITCH) +frontend_sources = \ + frontend/amiga_mpega.c \ + frontend/brhist.c \ + frontend/get_audio.c \ + frontend/lametime.c \ + frontend/parse.c \ + frontend/portableio.c \ + frontend/timestatus.c + +lib_sources = \ + libmp3lame/bitstream.c \ + libmp3lame/encoder.c \ + libmp3lame/fft.c \ + libmp3lame/gain_analysis.c \ + libmp3lame/id3tag.c \ + libmp3lame/lame.c \ + libmp3lame/newmdct.c \ + libmp3lame/psymodel.c \ + libmp3lame/quantize.c \ + libmp3lame/quantize_pvt.c \ + libmp3lame/set_get.c \ + libmp3lame/vbrquantize.c \ + libmp3lame/reservoir.c \ + libmp3lame/tables.c \ + libmp3lame/takehiro.c \ + libmp3lame/util.c \ + libmp3lame/mpglib_interface.c \ + libmp3lame/VbrTag.c \ + libmp3lame/version.c \ + libmp3lame/presets.c \ + mpglib/common.c \ + mpglib/dct64_i386.c \ + mpglib/decode_i386.c \ + mpglib/layer1.c \ + mpglib/layer2.c \ + mpglib/layer3.c \ + mpglib/tabinit.c \ + mpglib/interface.c + + +#ifeq ($(UNAME),MSDOS) +# frontend_sources := $(subst /,\,$(frontend_sources)) +# lib_sources := $(subst /,\,$(lib_sources)) +#endif + +frontend_obj = $(frontend_sources:.c=.o) +lib_obj = $(lib_sources:.c=.o) + +DEP = $(frontend_sources:.c=.d) $(lib_sources:.c=.d ) + +gtk_sources = frontend/gtkanal.c frontend/gpkplotting.c +gtk_obj = $(gtk_sources:.c=.o) +gtk_dep = $(gtk_sources:.c=.d) + + + +NASM = nasm +ASFLAGS=-f elf -i libmp3lame/i386/ + +# for people with nasmw +ifeq ($(UNAME),MSDOS) + NASM = nasmw + ASFLAGS=-f win32 -DWIN32 -i libmp3lame/i386/ +endif + +%.o: %.nas + $(NASM) $(ASFLAGS) $< -o $@ +%.o: %.s + gcc -c $< -o $@ + + +#HAVE_NASM = YES + +ifeq ($(HAVE_NASM),YES) +## have NASM +CC_SWITCHES += -DHAVE_NASM +lib_obj += libmp3lame/i386/cpu_feat.o + +## use MMX extension. you need nasm and MMX supported CPU. +CC_SWITCHES += -DMMX_choose_table +lib_obj += libmp3lame/i386/choose_table.o + +## use 3DNow! extension. you need nasm and 3DNow! supported CPU. +lib_obj += libmp3lame/i386/fft3dn.o + +## not yet coded +#CC_SWITCHES += -DUSE_FFTSSE +#lib_obj += libmp3lame/i386/fftsse.o + +## not yet coded +#CC_SWITCHES += -DUSE_FFTFPU +#lib_obj += libmp3lame/i386/fftfpu.o +endif + + +%.o: %.c + $(CC) $(CPP_OPTS) $(CC_SWITCHES) -c $< -o $@ + +%.d: %.c + ifeq ($(NOUNIXCMD),YES) + $(CC) $(MAKEDEP) $(CPP_OPTS) $(CC_SWITCHES) $< > $@ + else + $(SHELL) -ec '$(CC) $(MAKEDEP) $(CPP_OPTS) $(CC_SWITCHES) $< | sed '\''s;$*.o;& $@;g'\'' > $@' + endif + +all: frontend/$(PGM) + +$(lib_sources) $(frontend_sources) $(gtk_sources) : config.h + +config.h: configMS.h + ifeq ($(NOUNIXCMD),YES) + copy configMS.h config.h + else + cp configMS.h config.h + endif + +frontend/$(PGM): frontend/main.o $(frontend_obj) $(MP3LIB) + $(CC) $(CC_OPTS) -o frontend/$(PGM) frontend/main.o $(frontend_obj) \ + $(MP3LIB) $(LIBS) $(LIBSNDFILE) $(LIBTERMCAP) + +mp3x: frontend/mp3x.o $(frontend_obj) $(gtk_obj) $(MP3LIB) + $(CC) $(CC_OPTS) -o frontend/mp3x frontend/mp3x.o $(frontend_obj) $(gtk_obj) $(MP3LIB) \ + $(LIBS) $(LIBSNDFILE) $(GTKLIBS) $(LIBTERMCAP) + +mp3rtp: frontend/rtp.o frontend/mp3rtp.o $(frontend_obj) $(MP3LIB) + $(CC) $(CC_OPTS) -o frontend/mp3rtp frontend/mp3rtp.o frontend/rtp.o $(frontend_obj) $(MP3LIB) \ + $(LIBS) $(LIBSNDFILE) $(LIBTERMCAP) + +libmp3lame/libmp3lame.a: $(lib_obj) + $(AR) cr libmp3lame/libmp3lame.a $(lib_obj) + $(RANLIB) libmp3lame/libmp3lame.a + +#shared library. GNU specific? +libmp3lame/libmp3lame.so: $(lib_obj) + gcc -shared -Wl,-soname,libmp3lame/libmp3lame.so -o libmp3lame/libmp3lame.so $(lib_obj) + +install: frontend/$(PGM) #libmp3lame.a + cp frontend/$(PGM) /usr/bin + #cp libmp3lame.a /usr/lib + #cp lame.h /usr/lib + + + +clean: + ifeq ($(UNAME),MSDOS) + -del $(subst /,\,$(frontend_obj)) + -del $(subst /,\,$(lib_obj)) + -del $(subst /,\,$(gtk_obj)) + -del $(subst /,\,$(DEP)) + -del frontend\$(PGM) + -del frontend\main.o + -del libmp3lame\libmp3lame.a + else + -$(RM) $(gtk_obj) $(frontend_obj) $(lib_obj) $(DEP) frontend/$(PGM) \ + frontend/main.o frontend/lame libmp3lame/libmp3lame.a \ + frontend/mp3x.o frontend/mp3x + endif + + +tags: TAGS + +TAGS: ${c_sources} + etags -T ${c_sources} + +ifneq ($(MAKECMDGOALS),clean) + -include $(DEP) +endif + + +# +# testcase.mp3 is a 2926 byte file. The first number output by +# wc is the number of bytes which differ between new output +# and 'official' results. +# +# Because of compilier options and effects of roundoff, the +# number of bytes which are different may not be zero, but +# should be at most 30. +# +test: frontend/$(PGM) + frontend/$(PGM) --nores -h testcase.wav testcase.new.mp3 + cmp -l testcase.new.mp3 testcase.mp3 | wc -l + +testg: frontend/$(PGM) + frontend/$(PGM) -g -h ../test/castanets.wav + + diff --git a/lame-3.97/.svn/text-base/README.WINGTK.svn-base b/lame-3.97/.svn/text-base/README.WINGTK.svn-base new file mode 100644 index 0000000..cf9f62c --- /dev/null +++ b/lame-3.97/.svn/text-base/README.WINGTK.svn-base @@ -0,0 +1,64 @@ + Installation notes on MP3X (the LAME frame analyzer) for WIN32 + +=========================================================================== +Document History: +=========================================================================== + +Initial version by Albert Faber, March 30, 2000 + +Update by Albert Faber (Sept 07 2000), changed instrcutions +to compile with latest glib/gtk libraries. + +Update by Albert Faber (Sept 07 2000), changed instrcutions +to compile with latest glib/gtk libraries. + +Update by Albert Faber (Oct 20 2000), small adaptions to be conform +the new lame directory structure. + +Update by Gabriel Bouvigne (Jan 07 2004), changes to be conform to the +VC6 worspace structure. + + +=========================================================================== +How to compile the MP3 frame analyzer (MP3x): +=========================================================================== + +You first need to get hold of the latest GTK and GLIB include files and lib +files. You can download them freely from the WINGTK project WEB site. +(see http://www.gtk.org, and click on the WINGTK link.) + +Download: glib-dev-VERSION.zip, gtk+-dev-VERSION.zip and extralibs-dev-VERSION.zip +where VERSION indicates the release data, so it will look something like 20000805 + +unzip all three zip files in a WinGTK subdirectory, which is created from the lame +analyzer directory (for example, D:\CVS\lame\WinGtk) + +You will end up with the following directory tree + D:\CVS\lame\analyzer\WinGtk\src\glib + D:\CVS\lame\analyzer\WinGtk\src\gtk+\glib + D:\CVS\lame\analyzer\WinGtk\src\gtk+ + +Set Mp3x as your current active project, recompile everything, and you're done. + + +=========================================================================== +How to run and use the MP3 Frame analyzer +=========================================================================== + +To run MP3x.exe, you need +the GTK DLL files: Either instal them on your system, +or put them in the same directory as mp3x.exe resides. + + + +Example: +mp3x.exe myfile + +myfile can be a mp3 file, or a wav file. + + + + === End of Document === + + + diff --git a/lame-3.97/.svn/text-base/README.svn-base b/lame-3.97/.svn/text-base/README.svn-base new file mode 100644 index 0000000..da15dbb --- /dev/null +++ b/lame-3.97/.svn/text-base/README.svn-base @@ -0,0 +1,43 @@ + LAME 3.xx + LAME Ain't an MP3 Encoder + http://www.mp3dev.org + March 2001 + +Originally developed by Mike Cheng (www.uq.net.au/~zzmcheng). Now +maintained by Mark Taylor (www.mp3dev.org). + +This code is distributed under the GNU LESSER PUBLIC LICENSE +(LGPL, see www.gnu.org) with the following modification: + +1. If you determine that distribution of LAME requires a patent license, + and you obtain a patent license, you may distribute LAME even though + redistribution of LAME may also require a patent license. + +2. You agree not to enforce any patent claims for any aspect of + MPEG audio compression, or any other techniques contained in + the LAME source code. + + +============================================================================ + +see the file "INSTALL" for installation (compiling) instructions. +see the file "USAGE" for the most up-to-date guide to the command line options. +see the file "LICENSE" for details on how to use LAME in non-GPL programs. +see the file "HACKING" if you are interested in working on LAME +see the file "API" for details of the LAME encoding library API + +There is HTML documentation and a man page in the doc directory. +The HTML docs were contributed by Gabriel Bouvigne (www.mp3-tech.org). +See www.mp3-tech.org for more audio compression information and links. + +============================================================================ + +LAME uses the MPGLIB decoding engine, from the MPG123 package, written +by: Michael Hipp (www.mpg123.de) MPGLIB is released under the GPL. + +Copyrights (c) 1999,2000,2001 by Mark Taylor +Copyrights (c) 1998 by Michael Cheng +Copyrights (c) 1995,1996,1997 by Michael Hipp: mpglib + +As well as additional copyrights as documented in the source code. + diff --git a/lame-3.97/.svn/text-base/STYLEGUIDE.svn-base b/lame-3.97/.svn/text-base/STYLEGUIDE.svn-base new file mode 100644 index 0000000..e955dc5 --- /dev/null +++ b/lame-3.97/.svn/text-base/STYLEGUIDE.svn-base @@ -0,0 +1,187 @@ +* The LAME API is frozen. Poorly designed as it is, don't change it, + and add to it sparingly. + +* Don't take it upon yourself to go through LAME with the sole purpose + of updating everything to match this guide. Especially important: + don't change the spacing, indentation, curly braces, etc, + in routines you did not write. + +* If you want to make a change which effects many many functions, + please check with the maintainer first. + +* Respect the indentation of the author of the original function. + If the indentation is not consistent, use 4. + +* Don't use tabulators (the character with the value '\t') in source code, + especially these with a width of unequal 8. Lame sources are using + different sizes for tabulators. + +* Don't set the macro NDEBUG in alpha versons. + NDEBUG should be set for beta versions. + +* check important assumptions with an assert() + +* use int for all integer quantities. + LAME requires 32 bit ints, so you can assume int is at least 32 bits. + Don't use 'long'. Don't use 'unsigned' unless ABSOLUTELY necessary. + Don't use 'char' just to save bytes. If 64 bits is required, use int64. + + Annnotation: + ISO C calls the 64 bit int type not int64 but int64_t. + +* Avoid using float or double, and instead use: (defined in machine.h). + + FLOAT for variables which require at least 32bits + FLOAT8 for variables which require at least 64bits + + On some machines, 64bit will be faster than 32bit. Also, some math + routines require 64bit float, so setting FLOAT=float will result in a + lot of conversions. + + Annotation (pfk): + The new ISO C standard passed in autumn 1999 has defined new types for + exactly this reason. There are called float_least32_t and float_least64_t + and have at least the advantage that you not need to explain their + meaning. + + Annotation (mt): + we will adopt this convention in Jan 1, 2003. + + +* The internal representation of PCM samples in type 'sample_t', + currently this is a FLOAT. + +* Use SI base units. Lame mixes Hz, kHz, kbps, bps. This is mess. + + Example: + float wavelength_green = 555.e-9; + unsigned data_rate = 128000; + float lowpass_freq = 12500.; + + Converting between user input and internal representation should be done + near the user interface, not in the most inner loop of an utility + function. + +---------------------------------------------------------------------------------- +Edited version of the Linux Kernel Style Guide: +---------------------------------------------------------------------------------- + + Chapter 1: Indentation + +Respect the indentation of the author of the original function. +If the indentation is not consistent, don't change it. If +you are so anal-retentive about these things and you can't +bare to even look at code with poor indentation, change it to 4. + + + Chapter 2: Placing Braces + +The other issue that always comes up in C styling is the placement of +braces. Unlike the indent size, there are few technical reasons to +choose one placement strategy over the other, but the preferred way, as +shown to us by the prophets Kernighan and Ritchie, is to put the opening +brace last on the line, and put the closing brace first, thusly: + + if (x is true) { + we do y + } + +However, there is one special case, namely functions: they have the +opening brace at the beginning of the next line, thus: + + int function(int x) + { + body of function + } + +Heretic people all over the world have claimed that this inconsistency +is ... well ... inconsistent, but all right-thinking people know that +(a) K&R are _right_ and (b) K&R are right. Besides, functions are +special anyway (you can't nest them in C). + +Note that the closing brace is empty on a line of its own, _except_ in +the cases where it is followed by a continuation of the same statement, +ie a "while" in a do-statement or an "else" in an if-statement, like +this: + + do { + body of do-loop + } while (condition); + +and + + if (x == y) { + .. + } else if (x > y) { + ... + } else { + .... + } + +Rationale: K&R. + +Also, note that this brace-placement also minimizes the number of empty +(or almost empty) lines, without any loss of readability. Thus, as the +supply of new-lines on your screen is not a renewable resource (think +25-line terminal screens here), you have more empty lines to put +comments on. + + + Chapter 3: Naming + +C is a Spartan language, and so should your naming be. Unlike Modula-2 +and Pascal programmers, C programmers do not use cute names like +ThisVariableIsATemporaryCounter. A C programmer would call that +variable "tmp", which is much easier to write, and not the least more +difficult to understand. + +HOWEVER, while mixed-case names are frowned upon, descriptive names for +global variables are a must. To call a global function "foo" is a +shooting offense. + +GLOBAL variables (to be used only if you _really_ need them) need to +have descriptive names, as do global functions. If you have a function +that counts the number of active users, you should call that +"count_active_users()" or similar, you should _not_ call it "cntusr()". + +Encoding the type of a function into the name (so-called Hungarian +notation) is brain damaged - the compiler knows the types anyway and can +check those, and it only confuses the programmer. No wonder MicroSoft +makes buggy programs. + +LOCAL variable names should be short, and to the point. If you have +some random integer loop counter, it should probably be called "i". +Calling it "loop_counter" is non-productive, if there is no chance of it +being mis-understood. Similarly, "tmp" can be just about any type of +variable that is used to hold a temporary value. + + + + Chapter 4: Functions + +Document functions. + +Keep functions as modular as possible. But don't adhere to artificial +line number limitations. For example, lame_encode_frame() encodes a +single MP3 frame and is a long sequence of function calls. It makes +no sense to break this into two or more routines. + + + + Chapter 5: Commenting + +Comments are good, but there is also a danger of over-commenting. NEVER +try to explain HOW your code works in a comment: it's much better to +write the code so that the _working_ is obvious, and it's a waste of +time to explain badly written code. + +Generally, you want your comments to tell WHAT your code does, not HOW. +Also, try to avoid putting comments inside a function body: if the +function is so complex that you need to separately comment parts of it, +you should probably go back to chapter 4 for a while. You can make +small comments to note or warn about something particularly clever (or +ugly), but try to avoid excess. Instead, put the comments at the head +of the function, telling people what it does, and possibly WHY it does +it. + + diff --git a/lame-3.97/.svn/text-base/TODO.svn-base b/lame-3.97/.svn/text-base/TODO.svn-base new file mode 100644 index 0000000..33d9575 --- /dev/null +++ b/lame-3.97/.svn/text-base/TODO.svn-base @@ -0,0 +1,162 @@ +1. bug in resample code: downsampling from 44101 to 44100 causes + a seg fault. Workaround in place for now: resampling disabled + if input/output samplerates agree to 4 digits. + + + +2. high bitrate encodings have trouble on some hardware players. +Track this down. Probably caused by --strictly-enforce-ISO and +IXMAX_VAL. Try setting IXMAX_VAL back to 8191 and/or +maxmp3buf=8*960 to see if there is a working combination. + +note: one of the decoder bugs was identified. It is caused by using +different block sizes on both channels. A parameter need to be +added to Lame to handle workarounds. + + +3 frontend: code is a complete mess. But it has so many debugged + features it will be a lot of work to re-write. + + +4. MSVC project files. It would be nice to create a working + MSVC6 workspace, which included all the projects as possible + targets: + lame.exe + mp3x.exe (require GTK libs) + lame_enc.dll + ACM codec + directshow codec + + I think the only MSVC5 project that we need to preserve is + for lame_enc.dll, since Albert Faber (still?) doesn't use VC6? + But no reason we cant have VC5 and VC6 project files for the dll. + + + + + + +5. +NOGAP encoding: + +-nogap: more testing, fix options, test id3 tags? +Can we change id3 tags without reseting the encoder?? +At the end of encoding 1.wav, call lame_get_mf_samples_to_encode() +to find the number of non encoded buffered PCM samples. Then +encode samples from 2.wav until these PCM samples have been +encoded, *THEN* call lame_encode_flush_nogap() and close +out file 1.mp3. + + +NOGAP decoding: +lame --decode --nogap file1.mp3 file2.mp3 file3.mp3 +should also work. What needs to be done: +get_audio.c: We need a way to open a second mp3 file, without + calling lame_decode_init() and reinitializing mpglib. + And the mpglib needs to know to look for new Xing + tags at the beginning of file2.mp3 and file3.mp3. + + + +6. +Does stdin work when LAME is compiled to use libsndfile? +(new version of libsndfile will support this - try this out) + + +7. +LAME has problems with pure DC input. i.e. a square wave with +a frequency well below 20 Hz. Not very important, but it should +be fixed. + + +8. +mgplib has bugs with i-stereo. flag denoting invalid +i-stereo value (= frame is m/s stereo) is not correct. + +9. +lowpass filter: for M/S stereo, use more filtering for the side +channel, less filtering for mid channel. We need to first replace +the polyphase filter with an FIR lowpass filter with finer frequency +resolution before implementing this. + +10. +LAME has a 31 point FIR filter used for resampling, which +can also be used as a lowpass. When resampling is done, +use that filter to also lowpass instead of the polyphase filter. + +11. +Even when resampling is not needed, should we use an FIR filter +for the lowpass? If it is not too much slower, yes. If it +is slower, then it should be an option since it will produce +higher quality. + +12. +We should consider moving the experts options from the *long +help* text into an *experts only* help text. The average Joe gets +knocked down by the huge number of possibilities to setup lame. + + + + +50. +Better tonality estimation. +Gpsycho uses predictability, and so needs a delay to detect the tonality +of a sound. +Nspsytune seems to miss tonals when several of them are too narrow. +We would probably need the best of both. + + + + +60. +Different ATH handling for sfb21. We are using the minimum value of ath +in each whole sfb. in sfb21 this leads to very high bitrates. +We could perhaps use 2 or 3 ath partitions in sfb21 + +note: partially done + + + +70. +Use mixed blocks. + + + + +90. +Use intensity stereo. This is a must-have for low bitrates, but if the +algorythm is very good it could also be used in every case. +Note: mpg123 (and all derivatives, like xmms and lame/mpglib) +have bugs in the intensity stereo decoding. Bugs have been there +for years since there are very few intensity stereo mp3's out there. + + + + + +998. +Merge GOGO's fast assembler routines. + + + + +999. +It would be nice to save some information whilst encoding +a: wave -> mp3 + a RIFF/wave can contain LIST chunks with information + about author, title, etc. + ==> could go into TAG fields of resulting mp3 +b: mp3 -> mp3 + ==> we could copy the TAG directly +c: mp3 -> wave + ==> copy TAG into LIST chunk + + + +1500. +Integrate plusV extensions + + + +2000. +To be able to encode as fast as FastEnc \ No newline at end of file diff --git a/lame-3.97/.svn/text-base/USAGE.svn-base b/lame-3.97/.svn/text-base/USAGE.svn-base new file mode 100644 index 0000000..9f039c0 --- /dev/null +++ b/lame-3.97/.svn/text-base/USAGE.svn-base @@ -0,0 +1,853 @@ + +% lame [options] inputfile [outputfile] + +For more options, just type: +% lame --help + + +======================================================================= +Constant Bitrate Examples: +======================================================================= +fixed bit rate jstereo 128 kbps encoding: +% lame sample.wav sample.mp3 + +fixed bit rate jstereo 128 kbps encoding, higher quality: (recommended) +% lame -h sample.wav sample.mp3 + +Fast encode, low quality (no noise shaping) +% lame -f sample.wav sample.mp3 + +======================================================================= +Variable Bitrate Examples: +======================================================================= +LAME has two types of variable bitrate: ABR and VBR. + +ABR is the type of variable bitrate encoding usually found in other +MP3 encoders, Vorbis and AAC. The number of bits is determined by +some metric (like perceptual entropy, or just the number of bits +needed for a certain set of encoding tables), and it is not based on +computing the actual encoding/quantization error. ABR should always +give results equal or better than CBR: + +ABR: (--abr means encode with an average bitrate of around x kbps) +lame -h --abr 128 sample.wav sample.mp3 + + +VBR is a true variable bitrate mode which bases the number of bits for +each frame on the measured quantization error relative to the +estimated allowed masking. VBR is currently under heavy development. +It can on occasion result in too much compression, so it should be +used with a minimum bitrate of 112 kbps. This will let LAME increase +the bitrate for difficult-to-encode frames, but prevent LAME from +being too aggressive for simple frames: + +Variable Bitrate (VBR): (use -V n to adjust quality/filesize) +% lame -h -v -b 112 sample.wav sample.mp3 + + + +======================================================================= +LOW BITRATES +======================================================================= +At lower bitrates, (like 24 kbps per channel), it is recommended that +you use a 16 kHz sampling rate combined with lowpass filtering. LAME, +as well as commercial encoders (FhG, Xing) will do this automatically. +However, if you feel there is too much (or not enough) lowpass +filtering, you may need to try different values of the lowpass cutoff +and passband width (--resample, --lowpass and --lowpass-width options). + + +======================================================================= +STREAMING EXAMPLES +======================================================================= + +% cat inputfile | lame [options] - - > output + + + + +======================================================================= +Scripts are included (in the 'misc' subdirectory) +to run lame on multiple files: + +bach script: mlame Run "mlame -?" for instructions. +sh script: auenc Run auenc for instructions +sh script: mugeco.sh + +Pearl script which will re-encode mp3 files and preserve id3 tags: +lameid3.pl + +Windows scripts: +lame4dos.bat +Lame.vbs (and an HTML frontend: LameGUI.html) + + +======================================================================= +options guide: +======================================================================= +These options are explained in detail below. + + +Quality related: + +-m m/s/j/f/a mode selection +-k disable all filtering +-d allow block types to differ between channels +--athonly ignore psy-model output, only use masking from the ATH +--voice (obsolete, try --preset voice instead) +--noshort disable short blocks +-q n Internal algorithm quality setting 0..9. + 0 = slowest algorithms, but potentially highest quality + 9 = faster algorithms, very poor quality +-h same as -q2 +-f same as -q7 + + +Constant Bit Rate (CBR) +-b n set bitrate (8, 16, 24, ..., 320) +--freeformat produce a free format bitstream. User must also specify + a bitrate with -b, between 8 and 640 kbps. + +Variable Bit Rate (VBR) +-v VBR +--vbr-old use old variable bitrate (VBR) routine (default) +--vbr-new use new variable bitrate (VBR) routine +-V n VBR quality setting (0=highest quality, 9=lowest) +-b n specify a minimum allowed bitrate (8,16,24,...,320) +-B n specify a maximum allowed bitrate (8,16,24,...,320) +-F strictly enforce minimum bitrate +-t disable VBR informational tag +--nohist disable display of VBR bitrate histogram + +--abr n specify average bitrate desired + + +Experimental (undocumented): may work better or worse: + +-X n try different quality measures (when comparing quantizations) +-Y +-Z + + +Operational: + +-r assume input file is raw PCM +-s n input sampling frequency in kHz (for raw PCM input files) +--resample n output sampling frequency +--mp3input input file is an MP3 file. decode using mpglib/mpg123 +--ogginput input file is an Ogg Vorbis file. decode using libvorbis +-x swap bytes of input file +--scale multiply PCM input by +--scale-l scale channel 0 (left) input (multiply PCM data) by +--scale-r scale channel 1 (right) input (multiply PCM data) by +-a downmix stereo input file to mono .mp3 +-e n/5/c de-emphasis +-p add CRC error protection +-c mark the encoded file as copyrighted +-o mark the encoded file as a copy +-S don't print progress report, VBR histogram +--strictly-enforce-ISO comply as much as possible to ISO MPEG spec +--replaygain-fast compute RG fast but slightly inaccurately (default) +--replaygain-accurate compute RG more accurately and find the peak sample +--noreplaygain disable ReplayGain analysis +--clipdetect enable --replaygain-accurate and print a message whether + clipping occurs and how far the waveform is from full scale + +--decode assume input file is an mp3 file, and decode to wav. +-t disable writing of WAV header when using --decode + (decode to raw pcm, native endian format (use -x to swap)) + +--ogg Encode using Ogg Vorbis (.ogg) instead of mp3. + + + +ID3 tagging: + +--tt audio/song title (max 30 chars for version 1 tag) +--ta <artist> audio/song artist (max 30 chars for version 1 tag) +--tl <album> audio/song album (max 30 chars for version 1 tag) +--ty <year> audio/song year of issue (1 to 9999) +--tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1) +--tn <track> audio/song track number (1 to 255, creates v1.1 tag) +--tg <genre> audio/song genre (name or number in list) +--add-id3v2 force addition of version 2 tag +--id3v1-only add only a version 1 tag +--id3v2-only add only a version 2 tag +--space-id3v1 pad version 1 tag with spaces instead of nulls +--pad-id3v2 pad version 2 tag with extra 128 bytes +--genre-list print alphabetically sorted ID3 genre list and exit + +Note: A version 2 tag will NOT be added unless one of the input fields +won't fit in a version 1 tag (e.g. the title string is longer than 30 +characters), or the '--add-id3v2' or '--id3v2-only' options are used, +or output is redirected to stdout. + +OS/2-specific options: + --priority <type> sets the process priority + + +options not yet described: +--nores disable bit reservoir +--noath disable ATH +--athlower <n db> lower the ATH by n db. +--athshort use only the ATH for short blocks +--cwlimit <freq> specify range of tonality calculation +--disptime +--notemp disable temporal masking + +--lowpass +--lowpass-width +--highpass +--highpass-width + + + + + +======================================================================= +Detailed description of all options in alphabetical order +======================================================================= + + +======================================================================= +downmix +======================================================================= +-a + +mix the stereo input file to mono and encode as mono. + +This option is only needed in the case of raw PCM stereo input +(because LAME cannot determine the number of channels in the input file). +To encode a stereo PCM input file as mono, use "lame -m s -a" + +For WAV and AIFF input files, using "-m m" will always produce a +mono .mp3 file from both mono and stereo input. + + +======================================================================= +average bitrate encoding (aka Safe VBR) +======================================================================= +--abr n + +turns on encoding with a targeted average bitrate of n kbps, allowing +to use frames of different sizes. The allowed range of n is 8...320 +kbps, you can use any integer value within that range. + + + + + +======================================================================= +ATH only +======================================================================= +--athonly + +This option causes LAME to ignore the output of the psy-model and +only use masking from the ATH. (absolute threshold of hearing) + +Using --athonly is NOT RECOMMENDED. It is designed for testing +different ATH curves. + + + +======================================================================= +bitrate +======================================================================= +-b n + +For MPEG-1 (sampling frequencies of 32, 44.1 and 48 kHz) +n = 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG-2 and MPEG-2.5 (sampling frequencies of 8, 11.025, +12, 16, 22.05 and 24 kHz) +n = 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + + +The bitrate to be used. Default is 128 kbps MPEG1, 80 kbps MPEG2. + +When used with variable bitrate encodings (VBR), -b specifies the +minimum bitrate to use. This is useful to prevent LAME VBR from +using some very aggressive compression which can cause some distortion +due to small flaws in the psycho-acoustic model. + +======================================================================= +max bitrate +======================================================================= +-B n + +see also option "-b" for allowed bitrates. + +Maximum allowed bitrate when using VBR/ABR. + +Using -B is NOT RECOMMENDED. A 128 kbps CBR bitstream, because of the +bit reservoir, can actually have frames which use as many bits as a +320 kbps frame. ABR/VBR modes minimize the use of the bit reservoir, and +thus need to allow 320 kbps frames to get the same flexability as CBR +streams. + + + + +======================================================================= +copyright +======================================================================= +-c + +mark the encoded file as copyrighted + + + +======================================================================= +clipping detection +======================================================================= +--clipdetect + +Enable --replaygain-accurate and print a message whether clipping +occurs and how far in dB the waveform is from full scale. + +This option is not usable if the MP3 decoder was _explicitly_ disabled +in the build of LAME. + +See also: --replaygain-accurate + + + +======================================================================= +block type control +======================================================================= +-d + +Allows the left and right channels to use different block types. +Normally this is not allowed, only because the FhG encoder does +not seem to allow it either. If anyone finds a sample where -d +produces better results, let me know. (mt@sulaco.org) + + +======================================================================= +mpglib decode capability +======================================================================= +--decode + +This just uses LAME's mpg123/mpglib interface to decode an MP3 file to +a wav file. The input file can be any input type supported by +encoding, including .mp3 (layers 1, 2 and 3) and .ogg. + +If -t is used (disable wav header), LAME will output +raw pcm in native endian format (use -x to swap bytes). + +This option is not usable if the MP3 decoder was _explicitly_ disabled +in the build of LAME. + + +======================================================================= +de-emphasis +======================================================================= +-e n/5/c + + n = (none, default) + 5 = 0/15 microseconds + c = citt j.17 + +All this does is set a flag in the bitstream. If you have a PCM +input file where one of the above types of (obsolete) emphasis has +been applied, you can set this flag in LAME. Then the mp3 decoder +should de-emphasize the output during playback, although most +decoders ignore this flag. + +A better solution would be to apply the de-emphasis with a standalone +utility before encoding, and then encode without -e. + + + +======================================================================= +fast mode +======================================================================= +-f + +Same as -q 7. + +NOT RECOMMENDED. Use when encoding speed is critical and encoding +quality does not matter. Disable noise shaping. Psycho acoustics are +used only for bit allocation and pre-echo detection. + +======================================================================= +strictly enforce VBR minimum bitrate +======================================================================= +-F + +strictly enforce VBR minimum bitrate. With out this optioni, the minimum +bitrate will be ignored for passages of analog silence. + + + +======================================================================= +free format bitstreams +======================================================================= +--freeformat + +LAME will produce a fixed bitrate, free format bitstream. +User must specify the desired bitrate in kbps, which can +be any integer between 8 and 640. + +Not supported by most decoders. Complient decoders (of which there +are few) are only required to support up to 320 kbps. + +Decoders which can handle free format: + + supports up to +MAD 640 kbps +"lame --decode" 550 kbps +Freeamp: 440 kbps +l3dec: 310 kbps + + + + + +======================================================================= +high quality +======================================================================= +-h + +use some quality improvements. The same as -q 2. + + + +======================================================================= +keep all frequencies +======================================================================= +-k + +keep all frequencies. (Disable all filters) + +LAME will automatically apply various types of lowpass filters. This +is because the high frequency coefficients can take up a lot of bits +that would be better used for lower, more important frequencies. + +-k will disable all lowpass filtering. Not recommended. + + + +======================================================================= +Modes: +======================================================================= + +-m m mono +-m s stereo +-m j joint stereo +-m f forced mid/side stereo +-m d dual (independent) channels +-m i intensity stereo +-m a auto + +MONO is the default mode for mono input files. If "-m m" is specified +for a stereo input file, the two channels will be averaged into a mono +signal. + +STEREO + +JOINT STEREO is the default mode for stereo files with fixed bitrates of +128 kbps or less. At higher fixed bitrates, the default is stereo. +For VBR encoding, jstereo is the default for VBR_q >4, and stereo +is the default for VBR_q <=4. You can override all of these defaults +by specifing the mode on the command line. + +jstereo means the encoder can use (on a frame by frame bases) either +regular stereo (just encode left and right channels independently) +or mid/side stereo. In mid/side stereo, the mid (L+R) and side (L-R) +channels are encoded, and more bits are allocated to the mid channel +than the side channel. This will effectively increase the bandwidth +if the signal does not have too much stereo separation. + +Mid/side stereo is basically a trick to increase bandwidth. At 128 kbps, +it is clearly worth while. At higher bitrates it is less useful. + +For truly mono content, use -m m, which will automatically down +sample your input file to mono. This will produce 30% better results +over -m j. + +Using mid/side stereo inappropriately can result in audible +compression artifacts. To much switching between mid/side and regular +stereo can also sound bad. To determine when to switch to mid/side +stereo, LAME uses a much more sophisticated algorithm than that +described in the ISO documentation. + +FORCED MID/SIDE STEREO forces all frames to be encoded mid/side stereo. It +should only be used if you are sure every frame of the input file +has very little stereo seperation. + +DUAL CHANNELS Not supported. + +INTENSITY STEREO + +AUTO + +Auto select should select (if input is stereo) + 8 kbps Mono + 16- 96 kbps Intensity Stereo (if available, otherwise Joint Stereo) + 112-128 kbps Joint Stereo -mj + 160-192 kbps -mj with variable mid/side threshold + 224-320 kbps Independent Stereo -ms + + + +======================================================================= +MP3 input file +======================================================================= +--mp3input + +Assume the input file is a MP3 file. LAME will decode the input file +before re-encoding it. Since MP3 is a lossy format, this is +not recommended in general. But it is useful for creating low bitrate +mp3s from high bitrate mp3s. If the filename ends in ".mp3" LAME will assume +it is an MP3. For stdin or MP3 files which dont end in .mp3 you need +to use this switch. + + +======================================================================= +disable historgram display +======================================================================= +--nohist + +By default, LAME will display a bitrate histogram while producing +VBR mp3 files. This will disable that feature. + + +======================================================================= +disable ReplayGain analysis +======================================================================= +--noreplaygain + +By default ReplayGain analysis is enabled. This switch disables it. + +See also: --replaygain-accurate, --replaygain-fast + + +======================================================================= +disable short blocks +======================================================================= +--noshort + +Encode all frames using long blocks. NOT RECOMMENDED. For +testing purposes only. + + + +======================================================================= +non-original +======================================================================= +-o + +mark the encoded file as a copy + + + +======================================================================= +CRC error protection +======================================================================= +-p + +turn on CRC error protection. +Yes this really does work correctly in LAME. However, it takes +16 bits per frame that would otherwise be used for encoding. + + +======================================================================= +algorithm quality selection +======================================================================= +-q n + +Bitrate is of course the main influence on quality. The higher the +bitrate, the higher the quality. But for a given bitrate, +we have a choice of algorithms to determine the best +scalefactors and huffman encoding (noise shaping). + +-q 0: use slowest & best possible version of all algorithms. + +-q 2: recommended. Same as -h. -q 0 and -q 1 are slow and may not produce + significantly higher quality. + +-q 5: default value. Good speed, reasonable quality + +-q 7: same as -f. Very fast, ok quality. (psycho acoustics are + used for pre-echo & M/S, but no noise shaping is done. + +-q 9: disables almost all algorithms including psy-model. poor quality. + + + +======================================================================= +input file is raw pcm +======================================================================= +-r + +Assume the input file is raw pcm. Sampling rate and mono/stereo/jstereo +must be specified on the command line. Without -r, LAME will perform +several fseek()'s on the input file looking for WAV and AIFF headers. + +Not supported if LAME is compiled to use LIBSNDFILE. + + + +======================================================================= +slightly more accurate ReplayGain analysis and finding the peak sample +======================================================================= +--replaygain-accurate + +Enable decoding on the fly. Compute "Radio" ReplayGain on the decoded +data stream. Find the peak sample of the decoded data stream and store +it in the file. + + +ReplayGain analysis does _not_ affect the content of a compressed data +stream itself, it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from http://www.replaygain.org/ + +By default, LAME performs ReplayGain analysis on the input data (after +the user-specified volume scaling). This behaviour might give slightly +inaccurate results because the data on the output of a lossy +compression/decompression sequence differs from the initial input data. +When --replaygain-accurate is specified the mp3 stream gets decoded on +the fly and the analysis is performed on the decoded data stream. +Although theoretically this method gives more accurate results, it has +several disadvantages: + * tests have shown that the difference between the ReplayGain values + computed on the input data and decoded data is usually no greater + than 0.5dB, although the minimum volume difference the human ear + can perceive is about 1.0dB + * decoding on the fly significantly slows down the encoding process +The apparent advantage is that: + * with --replaygain-accurate the peak sample is determined and + stored in the file. The knowledge of the peak sample can be useful + to decoders (players) to prevent a negative effect called 'clipping' + that introduces distortion into sound. + + +Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. +The analysis is performed with the reference volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition +from version 3.95 to 3.95.1. + +This option is not usable if the MP3 decoder was _explicitly_ disabled +in the build of LAME. (Note: if LAME is compiled without the MP3 decoder, +ReplayGain analysis is performed on the input data after user-specified +volume scaling). + +See also: --replaygain-fast, --noreplaygain, --clipdetect + + +======================================================================= +fast ReplayGain analysis +======================================================================= +--replaygain-fast + +Compute "Radio" ReplayGain of the input data stream after user-specified +volume scaling and/or resampling. + +ReplayGain analysis does _not_ affect the content of a compressed data +stream itself, it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from http://www.replaygain.org/ + +Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. +The analysis is performed with the reference volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition +from version 3.95 to 3.95.1. + +This switch is enabled by default. + +See also: --replaygain-accurate, --noreplaygain + + + +======================================================================= +output sampling frequency in kHz +======================================================================= +--resample n + +where n = 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 + +Output sampling frequency. Resample the input if necessary. + +If not specified, LAME may sometimes resample automatically +when faced with extreme compression conditions (like encoding +a 44.1 kHz input file at 32 kbps). To disable this automatic +resampling, you have to use --resamle to set the output samplerate +equal to the inptu samplerate. In that case, LAME will not +perform any extra computations. + + + +======================================================================= +sampling frequency in kHz +======================================================================= +-s n + +where n = sampling rate in kHz. + +Required for raw PCM input files. Otherwise it will be determined +from the header information in the input file. + +LAME will automatically resample the input file to one of the +supported MP3 samplerates if necessary. + + +======================================================================= +silent operation +======================================================================= +-S + +don't print progress report + +======================================================================= +scale +======================================================================= +--scale <arg> + +Scales input by <arg>. This just multiplies the PCM data +(after it has been converted to floating point) by <arg>. + +<arg> > 1: increase volume +<arg> = 1: no effect +<arg> < 1: reduce volume + +Use with care, since most MP3 decoders will truncate data +which decodes to values greater than 32768. + + +======================================================================= +strict ISO complience +======================================================================= +--strictly-enforce-ISO + +With this option, LAME will enforce the 7680 bit limitation on +total frame size. This results in many wasted bits for +high bitrate encodings. + + +======================================================================= +disable VBR tag +======================================================================= +-t + +Disable writing of the VBR Tag (only valid if -v flag is +specified) This tag in embedded in frame 0 of the MP3 file. It lets +VBR aware players correctly seek and compute playing times of VBR +files. + +When '--decode' is specified (decode mp3 to wav), this flag will +disable writing the WAV header. The output will be raw pcm, +native endian format. Use -x to swap bytes. + + + +======================================================================= +variable bit rate (VBR) +======================================================================= +-v + +Turn on VBR. There are several ways you can use VBR. I personally +like using VBR to get files slightly bigger than 128 kbps files, where +the extra bits are used for the occasional difficult-to-encode frame. +For this, try specifying a minimum bitrate to use with VBR: + +lame -v -b 112 input.wav output.mp3 + +If the file is too big, use -V n, where n = 0...9 + +lame -v -V n -b 112 input.wav output.mp3 + + +If you want to use VBR to get the maximum compression possible, +and for this, you can try: + +lame -v input.wav output.mp3 +lame -v -V n input.wav output.mp3 (to vary quality/filesize) + + + + + + +======================================================================= +VBR quality setting +======================================================================= +-V n + +n = 0...9. Specifies the value of VBR_q. +default = 4, highest quality = 0, smallest files = 9 + +Using -V 5 or higher (lower quality) is NOT RECOMMENDED. +ABR will produce better results. + + +How is VBR_q used? + +The value of VBR_q influences two basic parameters of LAME's psycho +acoustics: + a) the absolute threshold of hearing + b) the sample to noise ratio +The lower the VBR_q value the lower the injected quantization noise +will be. + +*NOTE* No psy-model is perfect, so there can often be distortion which +is audible even though the psy-model claims it is not! Thus using a +small minimum bitrate can result in some aggressive compression and +audible distortion even with -V 0. Thus using -V 0 does not sound +better than a fixed 256 kbps encoding. For example: suppose in the 1 kHz +frequency band the psy-model claims 20 dB of distortion will not be +detectable by the human ear, so LAME VBR-0 will compress that +frequency band as much as possible and introduce at most 20 dB of +distortion. Using a fixed 256 kbps framesize, LAME could end up +introducing only 2 dB of distortion. If the psy-model was correct, +they will both sound the same. If the psy-model was wrong, the VBR-0 +result can sound worse. + + +======================================================================= +voice encoding mode +======================================================================= +--voice + +An experimental voice encoding mode. Tuned for 44.1 kHz input files. +--voice is deprecated, use --preset voice instead + + +======================================================================= +swapbytes +======================================================================= +-x + +swap bytes in the input file (and output file when using --decode). +For sorting out little endian/big endian type problems. If your +encodings sound like static, try this first. + +======================================================================= +OS/2 process priority control +======================================================================= +--priority <type> + +(OS/2 only) + +Sets the process priority for LAME while running under IBM OS/2. +This can be very useful to avoid the system becoming slow and/or +unresponsive. By setting LAME to run in a lower priority, you leave +more time for the system to update basic processing (drawing windows, +polling keyboard/mouse, etc). The impact in LAME's performance is +minimal if you use priority 0 to 2. + +The valid parameters are: + + 0 = Low priority (IDLE, delta = 0) + 1 = Medium priority (IDLE, delta = +31) + 2 = Regular priority (REGULAR, delta = -31) + 3 = High priority (REGULAR, delta = 0) + 4 = Maximum priority (REGULAR, delta = +31) + +Note that if you call '--priority' without a parameter, then +priority 0 will be assumed. + + + + diff --git a/lame-3.97/.svn/text-base/acinclude.m4.svn-base b/lame-3.97/.svn/text-base/acinclude.m4.svn-base new file mode 100644 index 0000000..b0d8d07 --- /dev/null +++ b/lame-3.97/.svn/text-base/acinclude.m4.svn-base @@ -0,0 +1,88 @@ +dnl acinclude.m4. Change *this* file to add new or change macros. +dnl When changes have been made, delete aclocal.m4 and run +dnl "aclocal". +dnl +dnl DO NOT change aclocal.m4 ! +dnl + +dnl * LA_SEARCH_FILE(variable, filename, PATH) +dnl * Search "filename" in the specified "PATH", "variable" will +dnl * contain the full pathname or the empty string +dnl * PATH is space-separated list of directories. +dnl * by Florian Bomers + +AC_DEFUN(LA_SEARCH_FILE,[ + $1= + dnl hack: eliminate line feeds in $2 + for FILE in $2; do + for DIR in $3; do + dnl use PATH in order + if test ".$1"="." && test -f "$DIR/$FILE"; then + $1=$DIR + fi + done + done +]) + +dnl * LA_SEARCH_LIB(lib-variable, include-variable, lib-filename, header-filename, prefix) +dnl * looks for "lib-filename" and "header-filename" in the area of "prefix". +dnl * if found, "lib-variable" and "include-variable" are set to the +dnl * respective paths. +dnl * prefix is a single path +dnl * libs are searched in prefix, prefix/lib, prefix/.., prefix/../lib +dnl * headers are searched in prefix, prefix/include, prefix/.., prefix/../include +dnl * +dnl * If one of them is not found, both "lib-variable", "include-variable" are +dnl * set to the empty string. +dnl * +dnl * TODO: assert function call to verify lib +dnl * +dnl * by Florian Bomers + +AC_DEFUN(LA_SEARCH_LIB,[ + dnl look for lib + LA_SEARCH_FILE($1, $3, $5 $5/lib $5/.. $5/../lib) + dnl look for header. + LA_SEARCH_FILE($2, $4, $5 $5/include $5/.. $5/../include) + if test ".$1" = "." || test ".$2" = "."; then + $1= + $2= + fi +]) + + + + +# alex_IEEE854_FLOAT80 +# ------------ +AC_DEFUN(alex_IEEE854_FLOAT80, +[AC_CACHE_CHECK(for IEEE854 compliant 80 bit floats, alex_cv_ieee854_float80, +[AC_TRY_RUN([ +int float2long_IEEE_compliance ( void ) +{ + struct { + long padding; /* to prevent unaligned access */ + float f; + } s; + s.f = 12582912.; if ( *(long*)(&s.f) != 1262485504l ) return 0; + s.f = 12615679.; if ( *(long*)(&s.f) != 1262518271l ) return 0; + s.f = 13582912.; if ( *(long*)(&s.f) != 1263485504l ) return 0; + s.f = 12550145.; if ( *(long*)(&s.f) != 1262452737l ) return 0; + s.f = 11582912.; if ( *(long*)(&s.f) != 1261485504l ) return 0; + return 1; +} + +int main(void) +{ + int retval; + + retval = float2long_IEEE_compliance(); + + /* no error return -> success */ + return !retval; +} +], alex_cv_ieee854_float80=yes, alex_cv_ieee854_float80=no, +[AC_MSG_WARN(can't check for IEEE854 compliant 80 bit floats)] +)])]) # alex_IEEE854_FLOAT80 + + diff --git a/lame-3.97/.svn/text-base/aclocal.m4.svn-base b/lame-3.97/.svn/text-base/aclocal.m4.svn-base new file mode 100644 index 0000000..b31c724 --- /dev/null +++ b/lame-3.97/.svn/text-base/aclocal.m4.svn-base @@ -0,0 +1,7311 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +[$]* +EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +])# AC_PROG_LD + + +# AC_PROG_LD_GNU +# -------------- +AC_DEFUN([AC_PROG_LD_GNU], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac]) +with_gnu_ld=$lt_cv_prog_gnu_ld +])# AC_PROG_LD_GNU + + +# AC_PROG_LD_RELOAD_FLAG +# ---------------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +])# AC_PROG_LD_RELOAD_FLAG + + +# AC_DEPLIBS_CHECK_METHOD +# ----------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided and an installed libltdl is not found, it is +# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_builddir and top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# --------------- +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext <<EOF +int a; +void foo (void) { a = 0; } +EOF +],[$1],[CXX],[cat > conftest.$ac_ext <<EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +EOF +],[$1],[F77],[cat > conftest.$ac_ext <<EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +EOF +],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then + _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then + _LT_AC_TAGVAR(predep_objects, $1)="$p" + else + _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then + _LT_AC_TAGVAR(postdep_objects, $1)="$p" + else + _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$rm -f confest.$objext + +case " $_LT_AC_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac +])# AC_LIBTOOL_POSTDEP_PREDEP + +# AC_LIBTOOL_LANG_F77_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) +AC_DEFUN([_LT_AC_LANG_F77_CONFIG], +[AC_REQUIRE([AC_PROG_F77]) +AC_LANG_PUSH(Fortran 77) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$G77" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP + + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_F77_CONFIG + + +# AC_LIBTOOL_LANG_GCJ_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) +AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], +[AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_GCJ_CONFIG + + +# AC_LIBTOOL_LANG_RC_CONFIG +# -------------------------- +# Ensure that the configuration vars for the Windows resource compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) +AC_DEFUN([_LT_AC_LANG_RC_CONFIG], +[AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_RC_CONFIG + + +# AC_LIBTOOL_CONFIG([TAGNAME]) +# ---------------------------- +# If TAGNAME is not passed, then create an initial libtool script +# with a default configuration from the untagged config vars. Otherwise +# add code to config.status for appending the configuration named by +# TAGNAME from the matching tagged config vars. +AC_DEFUN([AC_LIBTOOL_CONFIG], +[# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + _LT_AC_TAGVAR(compiler, $1) \ + _LT_AC_TAGVAR(CC, $1) \ + _LT_AC_TAGVAR(LD, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ + _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ + _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ + _LT_AC_TAGVAR(old_archive_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ + _LT_AC_TAGVAR(predep_objects, $1) \ + _LT_AC_TAGVAR(postdep_objects, $1) \ + _LT_AC_TAGVAR(predeps, $1) \ + _LT_AC_TAGVAR(postdeps, $1) \ + _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ + _LT_AC_TAGVAR(archive_cmds, $1) \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ + _LT_AC_TAGVAR(postinstall_cmds, $1) \ + _LT_AC_TAGVAR(postuninstall_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ + _LT_AC_TAGVAR(allow_undefined_flag, $1) \ + _LT_AC_TAGVAR(no_undefined_flag, $1) \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ + _LT_AC_TAGVAR(hardcode_automatic, $1) \ + _LT_AC_TAGVAR(module_cmds, $1) \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) \ + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ + _LT_AC_TAGVAR(exclude_expsyms, $1) \ + _LT_AC_TAGVAR(include_expsyms, $1); do + + case $var in + _LT_AC_TAGVAR(old_archive_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ + _LT_AC_TAGVAR(archive_cmds, $1) | \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(module_cmds, $1) | \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\[$]0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` + ;; + esac + +ifelse([$1], [], + [cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + AC_MSG_NOTICE([creating $ofile])], + [cfgfile="$ofile"]) + + cat <<__EOF__ >> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDRT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <<EOF >> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include <windows.h> +# #undef WIN32_LEAN_AND_MEAN +# #include <stdio.h> +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include <cygwin/cygwin_dll.h> +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + + +# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# This was merged into AC_PROG_CC in Autoconf. + +AU_DEFUN([AM_PROG_CC_STDC], +[AC_PROG_CC +AC_DIAGNOSE([obsolete], [$0: + your code should no longer depend upon `am_cv_prog_cc_stdc', but upon + `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when + you adjust the code. You can also remove the above call to + AC_PROG_CC if you already called it elsewhere.]) +am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc +]) +AU_DEFUN([fp_PROG_CC_STDC]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + + +# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +AC_DEFUN([AM_WITH_DMALLOC], +[AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH(dmalloc, +[ --with-dmalloc use dmalloc, as in + http://www.dmalloc.com/dmalloc.tar.gz], +[if test "$withval" = yes; then + AC_MSG_RESULT(yes) + AC_DEFINE(WITH_DMALLOC,1, + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT(no) +fi], [AC_MSG_RESULT(no)]) +]) + +AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +AC_DEFUN([AM_C_PROTOTYPES], +[AC_REQUIRE([AC_C_PROTOTYPES]) +if test "$ac_cv_prog_cc_stdc" != no; then + U= ANSI2KNR= +else + U=_ ANSI2KNR=./ansi2knr +fi +# Ensure some checks needed by ansi2knr itself. +AC_REQUIRE([AC_HEADER_STDC]) +AC_CHECK_HEADERS(string.h) +AC_SUBST(U)dnl +AC_SUBST(ANSI2KNR)dnl +]) + +AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +# Configure paths for GTK+ +# Owen Taylor 97-11-3 + +dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS +dnl +AC_DEFUN(AM_PATH_GTK, +[dnl +dnl Get the cflags and libraries from the gtk-config script +dnl +AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], + gtk_config_prefix="$withval", gtk_config_prefix="") +AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], + gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") +AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], + , enable_gtktest=yes) + + for module in . $4 + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + AC_PATH_PROG(GTK_CONFIG, gtk-config, no) + min_gtk_version=ifelse([$1], ,0.99.7,$1) + AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK is sufficiently new. (Also sanity +dnl checks the results of gtk-config to some extent +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include <gtk/gtk.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include <gtk/gtk.h> +#include <stdio.h> +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +m4_include([acinclude.m4]) diff --git a/lame-3.97/.svn/text-base/config.guess.svn-base b/lame-3.97/.svn/text-base/config.guess.svn-base new file mode 100644 index 0000000..0e30d56 --- /dev/null +++ b/lame-3.97/.svn/text-base/config.guess.svn-base @@ -0,0 +1,1407 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner <per@bothner.com>. +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + # GNU/FreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + ftp://ftp.gnu.org/pub/gnu/config/ + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lame-3.97/.svn/text-base/config.h.in.svn-base b/lame-3.97/.svn/text-base/config.h.in.svn-base new file mode 100644 index 0000000..bce9d38 --- /dev/null +++ b/lame-3.97/.svn/text-base/config.h.in.svn-base @@ -0,0 +1,348 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* debug define */ +#undef ABORTFP + +/* enable VBR bitrate histogram */ +#undef BRHIST + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* alot of debug output */ +#undef DEBUG + +/* allow to compute a more accurate replaygain value */ +#undef DECODE_ON_THE_FLY + +/* double is faster than float on Alpha */ +#undef FLOAT + +/* float instead of double */ +#undef FLOAT8 + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#undef HAVE_DLFCN_H + +/* we link against libefence */ +#undef HAVE_EFENCE + +/* Define to 1 if you have the <errno.h> header file. */ +#undef HAVE_ERRNO_H + +/* Define to 1 if you have the <fcntl.h> header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* have working GTK */ +#undef HAVE_GTK + +/* add ieee754_float32_t type */ +#undef HAVE_IEEE754_FLOAT32_T +#ifndef HAVE_IEEE754_FLOAT32_T + typedef float ieee754_float32_t; +#endif + +/* add ieee754_float64_t type */ +#undef HAVE_IEEE754_FLOAT64_T +#ifndef HAVE_IEEE754_FLOAT64_T + typedef double ieee754_float64_t; +#endif + +/* system has 80 bit floats */ +#undef HAVE_IEEE854_FLOAT80 + +/* add ieee854_float80_t type */ +#undef HAVE_IEEE854_FLOAT80_T +#ifndef HAVE_IEEE854_FLOAT80_T + typedef long double ieee854_float80_t; +#endif + +/* add int16_t type */ +#undef HAVE_INT16_T +#ifndef HAVE_INT16_T + typedef short int16_t; +#endif + +/* add int32_t type */ +#undef HAVE_INT32_T +#ifndef HAVE_INT32_T +#undef A_INT32_T + typedef A_INT32_T int32_t; +#endif + +/* add int64_t type */ +#undef HAVE_INT64_T +#ifndef HAVE_INT64_T +#undef A_INT64_T + typedef A_INT64_T int64_t; +#endif + +/* add int8_t type */ +#undef HAVE_INT8_T +#ifndef HAVE_INT8_T + typedef char int8_t; +#endif + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the <limits.h> header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the <linux/soundcard.h> header file. */ +#undef HAVE_LINUX_SOUNDCARD_H + +/* Define to 1 if long double works and has more range or precision than + double. */ +#undef HAVE_LONG_DOUBLE + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* build with mpglib support */ +#undef HAVE_MPGLIB + +/* have nasm */ +#undef HAVE_NASM + +/* Define to 1 if you have the <ncurses/termcap.h> header file. */ +#undef HAVE_NCURSES_TERMCAP_H + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the <sys/soundcard.h> header file. */ +#undef HAVE_SYS_SOUNDCARD_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/time.h> header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* have termcap */ +#undef HAVE_TERMCAP + +/* Define to 1 if you have the <termcap.h> header file. */ +#undef HAVE_TERMCAP_H + +/* add uint16_t type */ +#undef HAVE_UINT16_T +#ifndef HAVE_UINT16_T + typedef unsigned short uint16_t; +#endif + +/* add uint32_t type */ +#undef HAVE_UINT32_T +#ifndef HAVE_UINT32_T +#undef A_UINT32_T + typedef A_UINT32_T uint32_t; +#endif + +/* add uint64_t type */ +#undef HAVE_UINT64_T +#ifndef HAVE_UINT64_T +#undef A_UINT64_T + typedef A_UINT64_T uint64_t; +#endif + +/* add uint8_t type */ +#undef HAVE_UINT8_T +#ifndef HAVE_UINT8_T + typedef unsigned char uint8_t; +#endif + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* winsock */ +#undef HAVE_WINSOCKET + +/* requested by Frank, seems to be temporary needed for a smooth transition */ +#undef LAME_LIBRARY_BUILD + +/* build with libsndfile support */ +#undef LIBSNDFILE + +/* use MMX version of choose_table */ +#undef MMX_choose_table + +/* no debug build */ +#undef NDEBUG + +/* build without hooks for analyzer */ +#undef NOANALYSIS + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if the C compiler supports function prototypes. */ +#undef PROTOTYPES + +/* The size of a `double', as computed by sizeof. */ +#undef SIZEOF_DOUBLE + +/* The size of a `float', as computed by sizeof. */ +#undef SIZEOF_FLOAT + +/* The size of a `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of a `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of a `long double', as computed by sizeof. */ +#undef SIZEOF_LONG_DOUBLE + +/* The size of a `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* The size of a `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of a `unsigned int', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_INT + +/* The size of a `unsigned long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG + +/* The size of a `unsigned long long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG_LONG + +/* The size of a `unsigned short', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_SHORT + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* IEEE754 compatible machine */ +#undef TAKEHIRO_IEEE754_HACK + +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ +#undef TIME_WITH_SYS_TIME + +/* faster log implementation with less but enough precission */ +#undef USE_FAST_LOG + +/* build with layer 1 decoding */ +#undef USE_LAYER_1 + +/* build with layer 2 decoding */ +#undef USE_LAYER_2 + +/* Version number of package */ +#undef VERSION + +/* Define if using the dmalloc debugging malloc package */ +#undef WITH_DMALLOC + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* we're on DEC Alpha */ +#undef __DECALPHA__ + +/* work around a glibc bug */ +#undef __NO_MATH_INLINES + +/* Define like PROTOTYPES; this can be used by system headers. */ +#undef __PROTOTYPES + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `unsigned' if <sys/types.h> does not define. */ +#undef size_t + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + diff --git a/lame-3.97/.svn/text-base/config.sub.svn-base b/lame-3.97/.svn/text-base/config.sub.svn-base new file mode 100644 index 0000000..9d7f733 --- /dev/null +++ b/lame-3.97/.svn/text-base/config.sub.svn-base @@ -0,0 +1,1504 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-04' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | amd64-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lame-3.97/.svn/text-base/configMS.h.svn-base b/lame-3.97/.svn/text-base/configMS.h.svn-base new file mode 100644 index 0000000..67e88fe --- /dev/null +++ b/lame-3.97/.svn/text-base/configMS.h.svn-base @@ -0,0 +1,120 @@ +/* The number of bytes in a double. */ +#define SIZEOF_DOUBLE 8 + +/* The number of bytes in a float. */ +#define SIZEOF_FLOAT 4 + +/* The number of bytes in a int. */ +#define SIZEOF_INT 4 + +/* The number of bytes in a long. */ +#define SIZEOF_LONG 4 + +/* The number of bytes in a long double. */ +#define SIZEOF_LONG_DOUBLE 12 + +/* The number of bytes in a short. */ +#define SIZEOF_SHORT 2 + +/* The number of bytes in a unsigned int. */ +#define SIZEOF_UNSIGNED_INT 4 + +/* The number of bytes in a unsigned long. */ +#define SIZEOF_UNSIGNED_LONG 4 + +/* The number of bytes in a unsigned short. */ +#define SIZEOF_UNSIGNED_SHORT 2 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS + +/* Define if you have the <errno.h> header file. */ +#define HAVE_ERRNO_H + +/* Define if you have the <fcntl.h> header file. */ +#define HAVE_FCNTL_H + +/* Define if you have the <limits.h> header file. */ +#define HAVE_LIMITS_H + +/* Name of package */ +#define PACKAGE "lame" + +/* Version number of package */ +#define VERSION "3.97" + +/* Define if compiler has function prototypes */ +#define PROTOTYPES 1 + +/* enable VBR bitrate histogram */ +#define BRHIST 1 + +/* IEEE754 compatible machine */ +#define TAKEHIRO_IEEE754_HACK 1 + +/* faster log implementation with less but enough precission */ +#define USE_FAST_LOG 1 + +#define HAVE_STRCHR +#define HAVE_MEMCPY + +#if defined(_MSC_VER) || defined(__BORLANDC__) +#pragma warning( disable : 4305 ) + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + + typedef float float32_t; + typedef double float64_t; +#elif defined (__GNUC__) +#define __int8_t_defined +#define uint8_t unsigned char +#define uint16_t unsigned short +#define uint32_t unsigned int +#define uint64_t unsigned long long + +#define int8_t signed char +#define int16_t signed short +#define int32_t signed int +#define int64_t signed long long +#endif + +typedef long double ieee854_float80_t; +typedef double ieee754_float64_t; +typedef float ieee754_float32_t; + +#ifdef HAVE_MPGLIB +# define DECODE_ON_THE_FLY 1 +#endif + +#ifdef LAME_ACM +/* memory hacking for driver purposes */ +#define calloc(x,y) acm_Calloc(x,y) +#define free(x) acm_Free(x) +#define malloc(x) acm_Malloc(x) + +#include <stddef.h> +void *acm_Calloc( size_t num, size_t size ); +void *acm_Malloc( size_t size ); +void acm_Free( void * mem); +#endif /* LAME_ACM */ + +#define LAME_LIBRARY_BUILD + + +#ifdef HAVE_NASM + #if (defined(__ICL) && (__ICL >= 450)) + #define HAVE_XMMINTRIN_H + #elif defined(_MSC_VER) + #include <malloc.h> + #ifdef _mm_malloc + #define HAVE_XMMINTRIN_H + #endif + #endif +#endif diff --git a/lame-3.97/.svn/text-base/configure.in.svn-base b/lame-3.97/.svn/text-base/configure.in.svn-base new file mode 100644 index 0000000..2aa2075 --- /dev/null +++ b/lame-3.97/.svn/text-base/configure.in.svn-base @@ -0,0 +1,1092 @@ +dnl $Id: configure.in,v 1.115 2005/09/04 19:11:58 aleidinger Exp $ +dnl +dnl +dnl don't forget to set ASM_FOR_ARCH to a space delimited list of +dnl processor architectures, for which assembler routines exist +dnl +dnl +dnl Exported and configured variables: +dnl CC +dnl CFLAGS +dnl LDFLAGS +dnl LDADD +dnl NASM + +dnl extra vars for frontend: +dnl FRONTEND_LDFLAGS +dnl FRONTEND_CFLAGS +dnl FRONTEND_LDADD + +AC_PREREQ(2.53) +AC_INIT(lame,3.97,lame-dev@lists.sf.net) +AC_CONFIG_SRCDIR([libmp3lame/lame.c]) + +dnl check system +AC_CANONICAL_HOST + +dnl automake +AM_INIT_AUTOMAKE +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE +AM_MAKE_INCLUDE + +dnl check environment +AC_AIX +AC_ISC_POSIX +AC_MINIX +case $host_os in + *cygwin* ) CYGWIN=yes;; + * ) CYGWIN=no;; +esac + +dnl libtool +# AC_DISABLE_SHARED +AC_PROG_LIBTOOL +AC_SUBST(LIBTOOL_DEPS) +CFLAGS="${ac_save_CFLAGS}" + +# increase this when the shared lib becomes totally incompatible +LIB_MAJOR_VERSION=0 + +# increase this when changes are made, but they are upward compatible +# to previous versions +LIB_MINOR_VERSION=0 + +dnl # work around for a bug, don't know where it is exactly +if test "${ac_cv_cygwin}" = "yes"; then + if test "${CC}" != "gcc"; then + AC_MSG_ERROR([Please use] + [ CC=gcc ./configure] + [Abort this configure run and add "CC=gcc" or you will] + [see errors and no lame.exe will be build.]) + fi +fi + +dnl check programs +AM_PROG_CC_STDC + +dnl more automake stuff +AM_C_PROTOTYPES + +AC_CHECK_HEADER(dmalloc.h) +if test "${ac_cv_header_dmalloc_h}" = "yes"; then + AM_WITH_DMALLOC +fi + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS( \ + errno.h \ + fcntl.h \ + limits.h \ + stdint.h \ + string.h \ + sys/soundcard.h \ + sys/time.h \ + unistd.h \ + linux/soundcard.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +if test ${cross_compiling} = "no"; then + AC_C_BIGENDIAN +fi + +if test "${GCC}" = "yes"; then + AC_MSG_CHECKING(version of GCC) + GCC_version=`${CC} --version | sed -n '1s/^[[^ ]]* (.*) //;s/ .*$//;1p'` + AC_MSG_RESULT(${GCC_version}) +fi + +AC_SYS_LARGEFILE + +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(unsigned short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(unsigned int) +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(unsigned long) +AC_CHECK_SIZEOF(long long) +AC_CHECK_SIZEOF(unsigned long long) +AC_CHECK_SIZEOF(float) +AC_CHECK_SIZEOF(double) + +AC_C_LONG_DOUBLE +if test "${ac_cv_c_have_long_double}" = "yes" ; then + AC_CHECK_SIZEOF(long double) +fi + +AC_CHECK_TYPES([uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t]) + +AH_VERBATIM([HAVE_UINT8_T], +[/* add uint8_t type */ +#undef HAVE_UINT8_T +#ifndef HAVE_UINT8_T + typedef unsigned char uint8_t; +#endif]) + +AH_VERBATIM([HAVE_INT8_T], +[/* add int8_t type */ +#undef HAVE_INT8_T +#ifndef HAVE_INT8_T + typedef char int8_t; +#endif]) + +AH_VERBATIM([HAVE_UINT16_T], +[/* add uint16_t type */ +#undef HAVE_UINT16_T +#ifndef HAVE_UINT16_T + typedef unsigned short uint16_t; +#endif]) + +AH_VERBATIM([HAVE_INT16_T], +[/* add int16_t type */ +#undef HAVE_INT16_T +#ifndef HAVE_INT16_T + typedef short int16_t; +#endif]) + +if test "${ac_cv_sizeof_unsigned_short}" = "4"; then + AC_DEFINE(A_UINT32_T,unsigned short) +else + if test "${ac_cv_sizeof_unsigned_int}" = "4"; then + AC_DEFINE(A_UINT32_T,unsigned int) + else + if test "${ac_cv_sizeof_unsigned_long}" = "4"; then + AC_DEFINE(A_UINT32_T,unsigned long) + else + AC_MSG_ERROR([CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_UINT32_T], +[/* add uint32_t type */ +#undef HAVE_UINT32_T +#ifndef HAVE_UINT32_T +#undef A_UINT32_T + typedef A_UINT32_T uint32_t; +#endif]) + +if test "${ac_cv_sizeof_short}" = "4"; then + AC_DEFINE(A_INT32_T,short) +else + if test "${ac_cv_sizeof_int}" = "4"; then + AC_DEFINE(A_INT32_T,int) + else + if test "${ac_cv_sizeof_long}" = "4"; then + AC_DEFINE(A_INT32_T,long) + else + AC_MSG_ERROR([CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_INT32_T], +[/* add int32_t type */ +#undef HAVE_INT32_T +#ifndef HAVE_INT32_T +#undef A_INT32_T + typedef A_INT32_T int32_t; +#endif]) + +if test "${ac_cv_sizeof_unsigned_int}" = "8"; then + AC_DEFINE(A_UINT64_T,unsigned int) +else + if test "${ac_cv_sizeof_unsigned_long}" = "8"; then + AC_DEFINE(A_UINT64_T,unsigned long) + else + if test "${ac_cv_sizeof_unsigned_long_long}" = "8"; then + AC_DEFINE(A_UINT64_T,unsigned long long) + else + AC_MSG_ERROR([CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_UINT64_T], +[/* add uint64_t type */ +#undef HAVE_UINT64_T +#ifndef HAVE_UINT64_T +#undef A_UINT64_T + typedef A_UINT64_T uint64_t; +#endif]) + +if test "${ac_cv_sizeof_int}" = "8"; then + AC_DEFINE(A_INT64_T,int) +else + if test "${ac_cv_sizeof_long}" = "8"; then + AC_DEFINE(A_INT64_T,long) + else + if test "${ac_cv_sizeof_long_long}" = "8"; then + AC_DEFINE(A_INT64_T,long long) + else + AC_MSG_ERROR([CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_INT64_T], +[/* add int64_t type */ +#undef HAVE_INT64_T +#ifndef HAVE_INT64_T +#undef A_INT64_T + typedef A_INT64_T int64_t; +#endif]) + +alex_IEEE854_FLOAT80 +if test "${alex_cv_ieee854_float80}" = "yes" ; then + if test "${ac_cv_c_long_double}" = "yes" ; then + AC_CHECK_TYPES(ieee854_float80_t, long double) + AH_VERBATIM([HAVE_IEEE854_FLOAT80_T], +[/* add ieee854_float80_t type */ +#undef HAVE_IEEE854_FLOAT80_T +#ifndef HAVE_IEEE854_FLOAT80_T + typedef long double ieee854_float80_t; +#endif]) + + AC_DEFINE(HAVE_IEEE854_FLOAT80, 1, [system has 80 bit floats]) + fi +fi +AC_CHECK_TYPES([ieee754_float64_t, ieee754_float32_t]) + +AH_VERBATIM([HAVE_IEEE754_FLOAT64_T], +[/* add ieee754_float64_t type */ +#undef HAVE_IEEE754_FLOAT64_T +#ifndef HAVE_IEEE754_FLOAT64_T + typedef double ieee754_float64_t; +#endif]) + +AH_VERBATIM([HAVE_IEEE754_FLOAT32_T], +[/* add ieee754_float32_t type */ +#undef HAVE_IEEE754_FLOAT32_T +#ifndef HAVE_IEEE754_FLOAT32_T + typedef float ieee754_float32_t; +#endif]) + +AC_DEFINE(LAME_LIBRARY_BUILD, 1, [requested by Frank, seems to be temporary needed for a smooth transition]) + + +if test ${cross_compiling} = "yes"; then + AC_MSG_WARN([] + [**************************************************************************] + [* *] + [* You are cross compiling: *] + [* - I did not have a change to determine *] + [* + the size of: *] + [* - short *] + [* - unsigned short *] + [* - int *] + [* - unsigned int *] + [* - long *] + [* - unsigned long *] + [* - float *] + [* - double *] + [* - long double *] + [* + the endianess of the system *] + [* - You have to provide appropriate defines for them in config.h, e.g. *] + [* + define SIZEOF_SHORT to 2 if the size of a short is 2 *] + [* + define WORDS_BIGENDIAN if your system is a big endian system *] + [* *] + [**************************************************************************]) +fi + +AC_TYPE_SIZE_T +AC_HEADER_TIME + +dnl Checks for library functions. +AC_FUNC_ALLOCA +AC_CHECK_FUNCS(gettimeofday strtol) + +if test "X${ac_cv_func_strtol}" != "Xyes"; then + AC_MSG_ERROR([function strtol is mandatory]) +fi + +dnl Check if we have winsock, if so, we are on a mingw system +dnl and need libwsock32 +SOCKETFUNCTION=YES +AC_CHECK_HEADER(winsock2.h, [AC_DEFINE([HAVE_WINSOCKET], [], [winsock]) + LIBS="$LIBS -lwsock32"]) +if test $ac_cv_header_winsock2_h = no; then + AC_CHECK_FUNCS(socket) + if test $ac_cv_func_socket = no; then + # maybe it is in libsocket + AC_CHECK_LIB(socket, socket, [AC_DEFINE(HAVE_SOCKET) + LIBS="$LIBS -lsocket"]) + + if test "X${ac_cv_lib_socket_socket}" != "Xyes"; then + SOCKETFUNCTION=NO + else + case ${host_os} in + *solaris*) + LIBS="$LIBS -lnsl" + ;; + esac + fi + fi +fi + + +dnl Initialize configuration variables for the Makefile +CFLAGS=${CFLAGS} +CONFIG_DEFS=${CONFIG_DEFS} +NASM= +INCLUDES="-I\$(top_srcdir)/include -I\$(srcdir)" +FRONTEND_LDFLAGS= +FRONTEND_CFLAGS= +LIB_SOURCES= +MAKEDEP="-M" +RM_F="rm -f" + +AC_ARG_ENABLE(nasm, + [ --enable-nasm Allow the use of nasm if available], + ASM_FOR_ARCH="i386", ASM_FOR_ARCH="") + +dnl Checks for libraries. + +AC_CHECK_HEADERS(termcap.h) +AC_CHECK_HEADERS(ncurses/termcap.h) +AC_CHECK_LIB(termcap, initscr, HAVE_TERMCAP="termcap") +AC_CHECK_LIB(curses, initscr, HAVE_TERMCAP="curses") +AC_CHECK_LIB(ncurses, initscr, HAVE_TERMCAP="ncurses") + +dnl math lib +AC_CHECK_LIB(m, cos, USE_LIBM="-lm") +dnl free fast math library +AC_CHECK_LIB(ffm, cos, USE_LIBM="-lffm -lm") +dnl Compaq fast math library. +AC_CHECK_LIB(cpml, cos, USE_LIBM="-lcpml") +CONFIG_MATH_LIB="${USE_LIBM}" + +AC_CHECK_LIB(sndfile, sf_open_read, HAVE_SNDFILE="yes") + + +dnl configure use of features + +AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no") +if test "${HAVE_GTK}" = "yes"; then + AC_DEFINE(HAVE_GTK, 1, have working GTK) +fi + + +dnl ElectricFence malloc debugging +AC_MSG_CHECKING(use of ElectricFence malloc debugging) +AC_ARG_ENABLE(efence, + [ --enable-efence Use ElectricFence for malloc debugging], + CONFIG_EFENCE="${enableval}", CONFIG_EFENCE="no") + +case "${CONFIG_EFENCE}" in +yes) + AC_CHECK_LIB(efence, EF_Print, HAVE_EFENCE="-lefence") + if test "x${HAVE_EFENCE}" != "x-lefence"; then + AC_MSG_RESULT(yes, but libefence not found) + else + LDADD="${LDADD} ${HAVE_EFENCE}" + AC_DEFINE(HAVE_EFENCE, 1, we link against libefence) + AC_MSG_RESULT(${CONFIG_EFENCE}) + fi + ;; +no) + AC_MSG_RESULT(${CONFIG_EFENCE}) + ;; +*) + AC_MSG_ERROR(bad value �${CONFIG_EFENCE}� for efence option) + ;; +esac + + +dnl libsndfile +AC_MSG_CHECKING(use of file io) +WARNING= +AC_ARG_WITH(fileio, + [ --with-fileio=lame Use lame's internal file io routines [default]] + [ =sndfile Use Erik de Castro Lopo's libsndfile] + [ (no stdin possible currently)], + CONFIG_FILEIO="${withval}", CONFIG_FILEIO="lame") +AC_ARG_WITH(sndfile-prefix, + [ --with-sndfile-prefix=DIR Alternate location for libsndfile], + CONFIG_SNDFILE_PREFIX="${withval}", CONFIG_SNDFILE_PREFIX="") +if test "${CONFIG_FILEIO}" = "sndfile" ; then + if test "x${CONFIG_SNDFILE_PREFIX}" != "x" ; then + # look for sndfile lib. This overrides any standard location + LA_SEARCH_LIB(SNDFILE_LIB_LOC, SNDFILE_INC_LOC, \ + libsndfile.a, sndfile.h, $CONFIG_SNDFILE_PREFIX) + if test "x${SNDFILE_LIB_LOC}" != "x" ; then + HAVE_SNDFILE="yes" + FRONTEND_LDFLAGS="-L${SNDFILE_LIB_LOC} ${FRONTEND_LDFLAGS}" + INCLUDES="-I${SNDFILE_INC_LOC} ${INCLUDES}" + else + WARNING="sndfile lib not found in specified prefix." + fi + fi + if test "${HAVE_SNDFILE}" = "yes" ; then + FRONTEND_LDADD="-lsndfile ${FRONTEND_LDADD}" + AC_DEFINE(LIBSNDFILE, 1, build with libsndfile support) + else + # default + CONFIG_FILEIO="lame" + WARNING="${WARNING} Could not find any sndfile lib on system." + fi +else + CONFIG_FILEIO="lame" +fi +AC_MSG_RESULT(${CONFIG_FILEIO}) +if test "x${WARNING}" != "x" ; then + AC_MSG_WARN($WARNING) +fi + + +dnl check if we should remove hooks for analyzer code in library +dnl default library must include these hooks +AC_MSG_CHECKING(use of analyzer hooks) +AC_ARG_ENABLE(analyzer-hooks, + [ --disable-analyzer-hooks Exclude analyzer hooks], + CONFIG_ANALYZER="${enableval}", CONFIG_ANALYZER="yes") + +case "${CONFIG_ANALYZER}" in +yes) + ;; +no) + AC_DEFINE(NOANALYSIS, 1, build without hooks for analyzer) + ;; +*) + AC_MSG_ERROR(bad value �${CONFIG_ANALYZER}� for analyzer-hooks option) + ;; +esac +AC_MSG_RESULT($CONFIG_ANALYZER) + + +dnl mpg123 decoder +AC_MSG_CHECKING(use of mpg123 decoder) +AC_ARG_ENABLE(decoder, + [ --disable-decoder Exclude mpg123 decoder], + CONFIG_DECODER="${enableval}", CONFIG_DECODER="yes") +AC_ARG_ENABLE(decode-layer1, + [ --enable-decode-layer1 Include layer1 decoding [default=no]], + CONFIG_DECODER_L1="${enableval}", CONFIG_DECODER_L1="no") +AC_ARG_ENABLE(decode-layer2, + [ --disable-decode-layer2 Exclude layer2 decoding], + CONFIG_DECODER_L2="${enableval}", CONFIG_DECODER_L2="yes") + +AM_CONDITIONAL(LIB_WITH_DECODER, test "x${CONFIG_DECODER}" = "xyes") + +if test "${CONFIG_DECODER}" != "no" ; then + CONFIG_DECODER="yes (Layer" + AC_DEFINE(HAVE_MPGLIB, 1, build with mpglib support) + AC_DEFINE(DECODE_ON_THE_FLY, 1, allow to compute a more accurate replaygain value) + + if test "${CONFIG_DECODER_L1}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 1," + AC_DEFINE(USE_LAYER_1, 1, build with layer 1 decoding) + fi + if test "${CONFIG_DECODER_L2}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 2," + AC_DEFINE(USE_LAYER_2, 1, build with layer 2 decoding) + fi + CONFIG_DECODER="${CONFIG_DECODER} 3)" +fi +AC_MSG_RESULT($CONFIG_DECODER) + + +AC_MSG_CHECKING(if the lame frontend should be build) +AC_ARG_ENABLE(frontend, + [ --disable-frontend Do not build the lame executable [default=build]], + WITH_FRONTEND="${enableval}", WITH_FRONTEND=yes) +if test "x${WITH_FRONTEND}" = "xyes"; then + WITH_FRONTEND=lame${ac_exeext} + AC_MSG_RESULT(yes) +else + WITH_FRONTEND= + AC_MSG_RESULT(no) +fi + + + +AC_MSG_CHECKING(if mp3x is requested) +AC_ARG_ENABLE(mp3x, + [ --enable-mp3x Build GTK frame analyzer [default=no]], + WITH_MP3X="${enableval}", WITH_MP3X=no) +if test "x${WITH_MP3X}" = "xyes"; then + WITH_MP3X=mp3x${ac_exeext} + AC_MSG_RESULT(yes) +else + WITH_MP3X= + AC_MSG_RESULT(no) +fi + +if test "${HAVE_GTK}" = "no"; then + if test "x${WITH_MP3X}" = "xmp3x"; then + AC_MSG_WARN(can't build mp3x, no GTK installed) + WITH_MP3X= + fi + if test "x${CONFIG_ANALYZER}" != "xyes"; then + AC_MSG_WARN(can't build mp3x because of disabled analyzer hooks) + WITH_MP3X= + fi +fi + +AC_MSG_CHECKING(if mp3rtp is requested) +AC_ARG_ENABLE(mp3rtp, + [ --enable-mp3rtp Build mp3rtp [default=no]], + WITH_MP3RTP="${enableval}", WITH_MP3RTP=no) +if test "x${WITH_MP3RTP}" = "xyes"; then + if test ${SOCKETFUNCTION} = NO; then + AC_MSG_ERROR([function socket is mandatory for mp3rtp]) + fi + WITH_MP3RTP=mp3rtp${ac_exeext} + AC_MSG_RESULT(yes) +else + WITH_MP3RTP= + AC_MSG_RESULT(no) +fi + + +# +# this is from vorbis +# +dnl check GLIBC +case $host in +*86-*-linux*) + # glibc < 2.1.3 has a serious FP bug in the math inline header + # that will cripple Vorbis. Look to see if the magic FP stack + # clobber is missing in the mathinline header, thus indicating + # the buggy version + + AC_EGREP_CPP(log10.*fldlg2.*fxch,[ + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + ],bad=maybe,bad=no) + + AC_MSG_CHECKING(glibc mathinline bug) + if test ${bad} = "maybe" ;then + AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\), + [ + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + ],bad=no,bad=yes) + fi + AC_MSG_RESULT(${bad}) + if test ${bad} = "yes" ;then + AC_MSG_WARN([ ]) + AC_MSG_WARN([********************************************************]) + AC_MSG_WARN([* The glibc headers on this machine have a serious bug *]) + AC_MSG_WARN([* in /usr/include/bits/mathinline.h This bug affects *]) + AC_MSG_WARN([* all floating point code, not only LAME, but all code *]) + AC_MSG_WARN([* built on this machine. Upgrading to glibc 2.1.3 is *]) + AC_MSG_WARN([* strongly urged to correct the problem. *]) + AC_MSG_WARN([*Note: that upgrading glibc will not fix any previously*]) + AC_MSG_WARN([* built programs; this is a compile-time bug. *]) + AC_MSG_WARN([* To work around the problem for this build of LAME, *]) + AC_MSG_WARN([* autoconf is disabling all math inlining. This will *]) + AC_MSG_WARN([* hurt LAME performace but is necessary for LAME to *]) + AC_MSG_WARN([* work correctly. Once glibc is upgraded, rerun *]) + AC_MSG_WARN([* configure and make to build with inlining. *]) + AC_MSG_WARN([********************************************************]) + AC_MSG_WARN([ ]) + + AC_DEFINE(__NO_MATH_INLINES, 1, work around a glibc bug) + fi;; +esac + + +dnl configure use of VBR bitrate histogram +dnl todo: always use yes as default, use simulation instead ? +AC_MSG_CHECKING(use of VBR bitrate histogram) +if test "x${HAVE_TERMCAP}" != "x"; then + TERMCAP_DEFAULT="yes" +else + TERMCAP_DEFAULT="no" +fi +AC_ARG_ENABLE(brhist, + [ --disable-brhist Include the VBR bitrate histogram feature] + [ [default=yes]], + CONFIG_BRHIST="${enableval}", CONFIG_BRHIST="yes") +if test "${CONFIG_BRHIST}" != "no" ; then + AC_DEFINE(BRHIST, 1, enable VBR bitrate histogram) + + if test "${TERMCAP_DEFAULT}" = "yes" ; then + FRONTEND_LDADD="-l${HAVE_TERMCAP} ${FRONTEND_LDADD}" + CONFIG_BRHIST="yes, with ${HAVE_TERMCAP}" + AC_DEFINE(HAVE_TERMCAP, 1, have termcap) + else + CONFIG_BRHIST="yes, simulated termcap" + fi +fi +AC_MSG_RESULT(${CONFIG_BRHIST}) +AM_CONDITIONAL(WITH_BRHIST, test "${CONFIG_BRHIST}" != "no") + + + +dnl ### processor specific options ### +case $host_cpu in +*86) + CPUTYPE="i386" + + # use internal knowledge of the IEEE 754 layout + AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) + AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) + ;; +powerpc) + CPUTYPE="no" + + # use internal knowledge of the IEEE 754 layout + AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) + + # The following should not get enabled on a G5. HOWTO check for a G5? + AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) + ;; +*) + CPUTYPE="no" + ;; +esac + + + +AC_MSG_CHECKING(for FLOAT8 as float) +AC_ARG_ENABLE(all-float, + [ --enable-all-float Whether to make all floting point variables as float, not double] + [ [default=no]], + CONFIG_ALLFLOAT="${enableval}", CONFIG_ALLFLOAT="no") +case "${CONFIG_ALLFLOAT}" in +no) + ;; +yes) + AC_DEFINE(FLOAT8, float, float instead of double) + ;; +*) + AC_MSG_ERROR(bad value �${CONFIG_ALLFLOAT}� for all-float option) + ;; +esac +AC_MSG_RESULT(${CONFIG_ALLFLOAT}) + + + +AC_PATH_PROG(NASM, nasm, no) +case "${NASM}" in +no) + ;; +*) + AC_MSG_CHECKING(for assembler routines for this processor type) + for recurse_over in ${ASM_FOR_ARCH} + do + if test "${CPUTYPE}" = "${recurse_over}"; then + include_asm_routines="yes" + fi + done + if test "x${include_asm_routines}" = "xyes"; then + AC_DEFINE(HAVE_NASM, 1, have nasm) + AC_DEFINE(MMX_choose_table, 1, use MMX version of choose_table) + else + include_asm_routines="no" + NASM="no" + fi + AC_MSG_RESULT(${include_asm_routines}) + ;; +esac +AM_CONDITIONAL(HAVE_NASM, test "${NASM}" != "no") + +case $host_os in + *cygwin*|*mingw32*) + CYGWIN=yes + NASM_FORMAT="-f win32 -DWIN32" + ;; + *) + CYGWIN=no + NASM_FORMAT="-f elf" + ;; +esac + +# +# 'expopt' is used for "additional optimizations", not for optimizations which +# are marked as "experimental" in the guide for the compiler. +# They are "experimental" here in the LAME project (at least +# "--enable-expopt=full"). +# +AC_MSG_CHECKING(for additional optimizations) +AC_ARG_ENABLE(expopt, + [ --enable-expopt=full,norm Whether to enable experimental optimizations] + [ [default=no]], + CONFIG_EXPOPT="${enableval}", CONFIG_EXPOPT="no") + +if test "x$GCC" = "xyes"; then + # gcc defaults. OS specific options go in versious sections below + # from the gcc man pages: "there is no reason to use -pedantic" + if test "x${with_gnu_ld}" = "xyes"; then + CFLAGS="-Wall -pipe ${CFLAGS}" + else + # some vendor ld's don't like '-pipe' + CFLAGS="-Wall ${CFLAGS}" + fi + + # GCC version specific generic options + case "${GCC_version}" in + 2.96*) + # for buggy version of gcc shipped with RH7.1, back of on some + # optimizations + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fsched-interblock -fbranch-count-reg -fforce-addr \ + -fforce-mem" + ;; + 3.0*) + # -funroll-loops seems to produce buggy code with gcc 3.0.3 + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + 3.2*) + # -fomit-frame-pointer seems to be buggy on cygwin + case ${host_os} in + *cygwin*) + OMIT_FRAME_POINTER= + ;; + *) + OMIT_FRAME_POINTER=-fomit-frame-pointer + ;; + esac + + OPTIMIZATION="-O ${OMIT_FRAME_POINTER} -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + *) + # default + OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr -fforce-mem" + ;; + esac + + + # GCC version independend generic options + OPTIMIZATION_NORM="-fschedule-insns2" + + + # generic CPU specific options + case ${host_cpu} in + sparc) + case "${GCC_version}" in + 3.0*) + ;; + 3.*) + # doesn't work on 3.0.x, but on 3.[12] and + # hopefully on every other release after that too + if test -x /usr/bin/isalist; then + /usr/bin/isalist | grep sparcv8plus \ + >/dev/null 2>&1 && \ + OPTIMIZATION="${OPTIMIZATION} \ + -mcpu=ultrasparc \ + -mtune=ultrasparc" + fi + ;; + esac + ;; + *86) + case "${GCC_version}" in + 3.*) + OPTIMIZATION="${OPTIMIZATION} \ + -maccumulate-outgoing-args" + ;; + esac + ;; + esac + + + case "${CONFIG_EXPOPT}" in + no) + # if someone supplies own CFLAGS, we don't add our own + if test "x${ac_save_CFLAGS}" != "x"; then + OPTIMIZATION="" + fi + ;; + norm|yes) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM}" + ;; + full) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM} \ + ${OPTIMIZATION_FULL}" + + # some hardware dependend options + case "${GCC_version}" in + 2.9*|3.*) + # "new" GCC, use some "new" CPU specific optimizations + case ${host_cpu} in + *486) + OPTIMIZATION="${OPTIMIZATION} -m486 \ + -mfancy-math-387" + ;; + *586) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentium \ + -march=pentium -mfancy-math-387" + ;; + *686) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentiumpro \ + -march=pentiumpro -mfancy-math-387 \ + -malign-double" + ;; + *86) + OPTIMIZATION="${OPTIMIZATION} -mfancy-math-387" + ;; + alpha*) + OPTIMIZATION="${OPTIMIZATION} -mfp-regs" + AC_DEFINE(FLOAT, double, double is faster than float on Alpha) + # add "-mcpu=21164a -Wa,-m21164a" to optimize + # for 21164a (ev56) CPU + ;; + *) + OPTIMIZATION="${OPTIMIZATION} -fdelayed-branch" + ;; + esac + ;; + *) + # no special optimization for other versions + AC_MSG_WARN(LAME doesn't know about your version of gcc, please report it to lame-dev@lists.sourceforge.net. Please make sure you try the latest LAME version first!) + ;; + esac + ;; + *) + AC_MSG_ERROR(bad value �${CONFIG_EXPOPT}� for expopt option) + ;; + esac + + AC_MSG_RESULT(${CONFIG_EXPOPT}) +else + AC_MSG_RESULT(no) +fi + + + + + +AC_MSG_CHECKING(for debug options) +AC_ARG_ENABLE(debug, + [ --enable-debug=alot,norm Enable debugging (disables optimizations)] + [ [default=no]], + CONFIG_DEBUG="${enableval}", CONFIG_DEBUG="no") + +if test "x$GCC" = "xyes"; then + DEBUG_NORM_OPT="-O -g -Wall" + DEBUG_ANOYING="-Wbad-function-cast -Wcast-align \ + -Wcast-qual -Wchar-subscripts -Wconversion \ + -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ + -Wredundant-decls -Wshadow -Wstrict-prototypes \ + -Wwrite-strings -Winline \ + -Wformat -Wswitch -Waggregate-return -Wmissing-noreturn \ + -Wimplicit-int -fno-builtin" + + case "${CONFIG_DEBUG}" in + no) + AC_DEFINE(NDEBUG, 1, no debug build) + ;; + norm|yes) + AC_DEFINE(ABORTFP, 1, debug define) + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + anoying) + AC_DEFINE(ABORTFP, 1, debug define) + OPTIMIZATION="${DEBUG_NORM_OPT} ${DEBUG_ANOYING}" + ;; + alot) + AC_DEFINE(ABORTFP, 1, debug define) + AC_DEFINE(DEBUG, 1, alot of debug output) + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + *) + AC_MSG_ERROR(bad value �${CONFIG_DEBUG}� for debug option) + esac + + AC_MSG_RESULT(${CONFIG_DEBUG}) +else + AC_MSG_RESULT(no) +fi + + + +dnl ### system specific options ### + +########################################################################## +# LINUX on Digital/Compaq Alpha CPUs +########################################################################## +case $host in +alpha*-*-linux*) + +################################################################ +#### Check if 'ccc' is in our path +################################################################ +if test "`which ccc 2>/dev/null | grep -c ccc`" != "0" ; then + # Compaq's C Compiler + CC=ccc + +################################################################ +#### set 'OPTIMIZATION = -arch host -tune host' +#### to generate/tune instructions for this machine +#### 'OPTIMIZATION += -migrate -fast -inline speed -unroll 0' +#### tweak to run as fast as possible :) +#### 'OPTIMIZATION += -w0' +#### set warning and linking flags +################################################################ + OPTIMIZATION="-arch host -tune host" + OPTIMIZATION="-migrate -fast -inline speed -unroll 0 $OPTIMIZATION" + OPTIMIZATION="-w0 $OPTIMIZATION" + + +################################################################ +#### to debug, uncomment +################################################################ + # For Debugging + #OPTIMIZATION="-g3 $OPTIMIZATION" + +################################################################ +#### define __DECALPHA__ (i was getting re-declaration warnings +#### in machine.h +################################################################ + # Define DEC Alpha + AC_DEFINE(__DECALPHA__, 1, we're on DEC Alpha) +fi # gcc or ccc? +;; # alpha + + +########################################################################## +# SunOS +########################################################################## +sparc-*-sunos4*) + if test CC = "cc"; then + OPTIMIZATION="-O -xCC" + MAKEDEP="-xM" + # for gcc, use instead: + # CC="gcc" + # OPTIMIZATION="-O" + # MAKEDEP="-M" +AC_MSG_WARN([Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation.]) + fi +;; #SunOS + +########################################################################## +# SGI +########################################################################## +*-sgi-irix*) + if test CC = "cc"; then + OPTIMIZATION="-O3 -woff all" + fi +;; # SGI + +########################################################################## +# Compaq Alpha running Dec Unix (OSF) +########################################################################## +alpha*-dec-osf*) + if test CC = "cc"; then + OPTIMIZATION="-fast -O3 -std -g3 -non_shared" + fi +;; #OSF +esac + +# todo: include the following tests in the case-list +UNAME=`uname` +ARCH=`uname -m` + +########################################################################### +# MOSXS (Rhapsody PPC) +########################################################################### +if test "$UNAME" = "Rhapsody"; then +# CC="cc" # should be handled already by autoconf + MAKEDEP="-make" +fi + +########################################################################### +# MAC OSX Darwin PPC +########################################################################### +if test "$UNAME" = "Darwin"; then + MAKEDEP="-make" + CFLAGS="$CFLAGS -fno-common" +fi + + +########################################################################## +# OS/2 +########################################################################## +# Properly installed EMX runtime & development package is a prerequisite. +# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 +# +########################################################################## +if test "$UNAME" = "OS/2"; then + SHELL=sh + #CC=gcc # should already be handled by configure + + # file extension should already be handled by automake (I don't know, + # please give feedback! + #FILE_EXTENSION=".exe" + +# Uncomment & inspect the GTK lines to use MP3x GTK frame analyzer. +# Properly installed XFree86/devlibs & GTK+ is a prerequisite. +# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: +# AC_DEFINE(HAVE_GTK, 1, have GTK) +# AC_DEFINE(__ST_MT_ERRNO__, 1) +# INCLUDES="-IC:/XFree86/include/gtk12 -IC:/XFree86/include/glib12 \ +# -IC:/XFree86/include $INCLUDES" +# FRONTEND_LDFLAGS="-LC:/XFree86/lib -lgtk12 -lgdk12 -lgmodule -lglib12 \ +# -lXext -lX11 -lshm -lbsd -lsocket -lm $FRONTEND_LDFLAGS" +# FRONTEND_CFLAGS="-Zmtd -Zsysv-signals -Zbin-files $FRONTEND_CFLAGS" +fi + +########################################################################### +# AmigaOS +########################################################################### +# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS +# +########################################################################### +if test "$UNAME" = "AmigaOS" ; then + CC="gcc -noixemul" + OPTIMIZATION="$OPTIMIZATION -m68020-60 -m68881" + MAKEDEP="-MM" + if test "$ARCH" = "WOS"; then + CC="ppc-amigaos-gcc -warpup" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi + if test "$ARCH",PPC; then + CC="ppc-amigaos-gcc" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi +fi + + +CFLAGS="${OPTIMIZATION} ${CFLAGS}" +LDADD="${LDADD}" +FRONTEND_LDADD="${FRONTEND_LDADD} ${CONFIG_MATH_LIB}" + + +AC_SUBST(INCLUDES) + +AC_SUBST(FRONTEND_LDFLAGS) +AC_SUBST(FRONTEND_CFLAGS) +AC_SUBST(FRONTEND_LDADD) +AC_SUBST(LDADD) + +AC_SUBST(LIB_MAJOR_VERSION) +AC_SUBST(LIB_MINOR_VERSION) + +AC_SUBST(NASM) +AC_SUBST(NASM_FORMAT) + +AC_SUBST(MAKEDEP) +AC_SUBST(RM_F) + +AC_SUBST(LIBTOOL_DEPS) + +AC_SUBST(WITH_FRONTEND) +AC_SUBST(WITH_MP3X) +AC_SUBST(WITH_MP3RTP) + +AC_SUBST(CPUTYPE) + +AC_SUBST(CONFIG_DEFS) + +AC_CONFIG_FILES([Makefile libmp3lame/Makefile libmp3lame/i386/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile]) +AC_OUTPUT diff --git a/lame-3.97/.svn/text-base/configure.svn-base b/lame-3.97/.svn/text-base/configure.svn-base new file mode 100644 index 0000000..862abce --- /dev/null +++ b/lame-3.97/.svn/text-base/configure.svn-base @@ -0,0 +1,32549 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59 for lame 3.97. +# +# Report bugs to <lame-dev@lists.sf.net>. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='lame' +PACKAGE_TARNAME='lame' +PACKAGE_VERSION='3.97' +PACKAGE_STRING='lame 3.97' +PACKAGE_BUGREPORT='lame-dev@lists.sf.net' + +ac_unique_file="libmp3lame/lame.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#if HAVE_STRINGS_H +# include <strings.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT am__include am__quote CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBTOOL_DEPS U ANSI2KNR ALLOCA GTK_CONFIG GTK_CFLAGS GTK_LIBS LIB_WITH_DECODER_TRUE LIB_WITH_DECODER_FALSE WITH_BRHIST_TRUE WITH_BRHIST_FALSE NASM HAVE_NASM_TRUE HAVE_NASM_FALSE INCLUDES FRONTEND_LDFLAGS FRONTEND_CFLAGS FRONTEND_LDADD LDADD LIB_MAJOR_VERSION LIB_MINOR_VERSION NASM_FORMAT MAKEDEP RM_F WITH_FRONTEND WITH_MP3X WITH_MP3RTP CPUTYPE CONFIG_DEFS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures lame 3.97 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of lame 3.97:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-largefile omit support for large files + --enable-nasm Allow the use of nasm if available + --disable-gtktest Do not try to compile and run a test GTK program + --enable-efence Use ElectricFence for malloc debugging + --disable-analyzer-hooks Exclude analyzer hooks + --disable-decoder Exclude mpg123 decoder + --enable-decode-layer1 Include layer1 decoding default=no + --disable-decode-layer2 Exclude layer2 decoding + --disable-frontend Do not build the lame executable default=build + --enable-mp3x Build GTK frame analyzer default=no + --enable-mp3rtp Build mp3rtp default=no + --disable-brhist Include the VBR bitrate histogram feature + default=yes + --enable-all-float Whether to make all floting point variables as float, not double + default=no + --enable-expopt=full,norm Whether to enable experimental optimizations + default=no + --enable-debug=alot,norm Enable debugging (disables optimizations) + default=no + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] + include additional configurations [automatic] + --with-dmalloc use dmalloc, as in + http://www.dmalloc.com/dmalloc.tar.gz + --with-gtk-prefix=PFX Prefix where GTK is installed (optional) + --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional) + --with-fileio=lame Use lame's internal file io routines default + =sndfile Use Erik de Castro Lopo's libsndfile + (no stdin possible currently) + --with-sndfile-prefix=DIR Alternate location for libsndfile + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to <lame-dev@lists.sf.net>. +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +lame configure 3.97 +generated by GNU Autoconf 2.59 + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by lame $as_me 3.97, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +am__api_version="1.9" +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='lame' + VERSION='3.97' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + ac_config_headers="$ac_config_headers config.h" + +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + + +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +echo "$as_me:$LINENO: checking for AIX" >&5 +echo $ECHO_N "checking for AIX... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef _AIX + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +cat >>confdefs.h <<\_ACEOF +#define _ALL_SOURCE 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest* + + +echo "$as_me:$LINENO: checking for library containing strerror" >&5 +echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 +if test "${ac_cv_search_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_strerror=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_strerror="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_strerror" = no; then + for ac_lib in cposix; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_strerror="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +echo "${ECHO_T}$ac_cv_search_strerror" >&6 +if test "$ac_cv_search_strerror" != no; then + test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" + +fi + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <minix/config.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <minix/config.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 + +fi +if test $ac_cv_header_minix_config_h = yes; then + MINIX=yes +else + MINIX= +fi + + +if test "$MINIX" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_SOURCE 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_1_SOURCE 2 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _MINIX 1 +_ACEOF + +fi + +case $host_os in + *cygwin* ) CYGWIN=yes;; + * ) CYGWIN=no;; +esac + +# AC_DISABLE_SHARED +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4514 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +need_locks="$enable_libtool_lock" + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5620:" \ + "checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDRT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <<EOF >> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_static" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6718: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6722: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-static' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6980: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6984: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7042: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:7046: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 9282 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 9380 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which librarie types wil actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-tags was given. +if test "${with_tags+set}" = set; then + withval="$with_tags" + tagnames="$withval" +fi; + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <<EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +EOF + +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-static' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11628: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11632: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11690: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11694: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 13059 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 13157 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-static' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14042: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14046: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14104: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14108: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_F77=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16226: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16230: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-static' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16488: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16492: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16550: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16554: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_GCJ=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 18790 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 18888 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + +CFLAGS="${ac_save_CFLAGS}" + +# increase this when the shared lib becomes totally incompatible +LIB_MAJOR_VERSION=0 + +# increase this when changes are made, but they are upward compatible +# to previous versions +LIB_MINOR_VERSION=0 + +if test "${ac_cv_cygwin}" = "yes"; then + if test "${CC}" != "gcc"; then + { { echo "$as_me:$LINENO: error: Please use + CC=gcc ./configure + Abort this configure run and add \"CC=gcc\" or you will + see errors and no lame.exe will be build." >&5 +echo "$as_me: error: Please use + CC=gcc ./configure + Abort this configure run and add \"CC=gcc\" or you will + see errors and no lame.exe will be build." >&2;} + { (exit 1); exit 1; }; } + fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc + + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define __PROTOTYPES 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +if test "$ac_cv_prog_cc_stdc" != no; then + U= ANSI2KNR= +else + U=_ ANSI2KNR=./ansi2knr +fi +# Ensure some checks needed by ansi2knr itself. + + +for ac_header in string.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo "$as_me:$LINENO: checking for dmalloc.h" >&5 +echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking dmalloc.h usability" >&5 +echo $ECHO_N "checking dmalloc.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <dmalloc.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking dmalloc.h presence" >&5 +echo $ECHO_N "checking dmalloc.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <dmalloc.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: dmalloc.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: dmalloc.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: dmalloc.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: dmalloc.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: dmalloc.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: dmalloc.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: dmalloc.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: dmalloc.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: dmalloc.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: dmalloc.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for dmalloc.h" >&5 +echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_dmalloc_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 + +fi + + +if test "${ac_cv_header_dmalloc_h}" = "yes"; then + echo "$as_me:$LINENO: checking if malloc debugging is wanted" >&5 +echo $ECHO_N "checking if malloc debugging is wanted... $ECHO_C" >&6 + +# Check whether --with-dmalloc or --without-dmalloc was given. +if test "${with_dmalloc+set}" = set; then + withval="$with_dmalloc" + if test "$withval" = yes; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define WITH_DMALLOC 1 +_ACEOF + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi; + +fi + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + + + + + + + + + +for ac_header in \ + errno.h \ + fcntl.h \ + limits.h \ + stdint.h \ + string.h \ + sys/soundcard.h \ + sys/time.h \ + unistd.h \ + linux/soundcard.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +if test ${cross_compiling} = "no"; then + echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/param.h> + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/param.h> + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +fi + +if test "${GCC}" = "yes"; then + echo "$as_me:$LINENO: checking version of GCC" >&5 +echo $ECHO_N "checking version of GCC... $ECHO_C" >&6 + GCC_version=`${CC} --version | sed -n '1s/^[^ ]* (.*) //;s/ .*$//;1p'` + echo "$as_me:$LINENO: result: ${GCC_version}" >&5 +echo "${ECHO_T}${GCC_version}" >&6 +fi + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + + +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 +if test "${ac_cv_type_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((short *) 0) + return 0; +if (sizeof (short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_short=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_short=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 + +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_short" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned short" >&5 +echo $ECHO_N "checking for unsigned short... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned short *) 0) + return 0; +if (sizeof (unsigned short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_short=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_short=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_short" >&6 + +echo "$as_me:$LINENO: checking size of unsigned short" >&5 +echo $ECHO_N "checking size of unsigned short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_short" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned short)); } +unsigned long ulongval () { return (long) (sizeof (unsigned short)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_short" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_SHORT $ac_cv_sizeof_unsigned_short +_ACEOF + + +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned int" >&5 +echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned int *) 0) + return 0; +if (sizeof (unsigned int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 + +echo "$as_me:$LINENO: checking size of unsigned int" >&5 +echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_int" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned int)); } +unsigned long ulongval () { return (long) (sizeof (unsigned int)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int +_ACEOF + + +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned long" >&5 +echo $ECHO_N "checking for unsigned long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned long *) 0) + return 0; +if (sizeof (unsigned long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long" >&6 + +echo "$as_me:$LINENO: checking size of unsigned long" >&5 +echo $ECHO_N "checking size of unsigned long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned long)); } +unsigned long ulongval () { return (long) (sizeof (unsigned long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long +_ACEOF + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned long long *) 0) + return 0; +if (sizeof (unsigned long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 + +echo "$as_me:$LINENO: checking size of unsigned long long" >&5 +echo $ECHO_N "checking size of unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_long_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned long long)); } +unsigned long ulongval () { return (long) (sizeof (unsigned long long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long +_ACEOF + + +echo "$as_me:$LINENO: checking for float" >&5 +echo $ECHO_N "checking for float... $ECHO_C" >&6 +if test "${ac_cv_type_float+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((float *) 0) + return 0; +if (sizeof (float)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_float=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_float=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5 +echo "${ECHO_T}$ac_cv_type_float" >&6 + +echo "$as_me:$LINENO: checking size of float" >&5 +echo $ECHO_N "checking size of float... $ECHO_C" >&6 +if test "${ac_cv_sizeof_float+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_float" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_float=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (float)); } +unsigned long ulongval () { return (long) (sizeof (float)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (float))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (float)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (float)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_float=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_float=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5 +echo "${ECHO_T}$ac_cv_sizeof_float" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_FLOAT $ac_cv_sizeof_float +_ACEOF + + +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 +if test "${ac_cv_type_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((double *) 0) + return 0; +if (sizeof (double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 + +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_double" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + + +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <float.h> + long double foo = 0.0; +int +main () +{ +static int test_array [1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE 1 +_ACEOF + +fi + +if test "${ac_cv_c_have_long_double}" = "yes" ; then + echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6 +if test "${ac_cv_type_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long double *) 0) + return 0; +if (sizeof (long double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 +echo "${ECHO_T}$ac_cv_type_long_double" >&6 + +echo "$as_me:$LINENO: checking size of long double" >&5 +echo $ECHO_N "checking size of long double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_double" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long double)); } +unsigned long ulongval () { return (long) (sizeof (long double)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking for uint8_t" >&5 +echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint8_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint8_t *) 0) + return 0; +if (sizeof (uint8_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint8_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint8_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint8_t" >&6 +if test $ac_cv_type_uint8_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT8_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int8_t" >&5 +echo $ECHO_N "checking for int8_t... $ECHO_C" >&6 +if test "${ac_cv_type_int8_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int8_t *) 0) + return 0; +if (sizeof (int8_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int8_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int8_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5 +echo "${ECHO_T}$ac_cv_type_int8_t" >&6 +if test $ac_cv_type_int8_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT8_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for uint16_t" >&5 +echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint16_t *) 0) + return 0; +if (sizeof (uint16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint16_t" >&6 +if test $ac_cv_type_uint16_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT16_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int16_t" >&5 +echo $ECHO_N "checking for int16_t... $ECHO_C" >&6 +if test "${ac_cv_type_int16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int16_t *) 0) + return 0; +if (sizeof (int16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5 +echo "${ECHO_T}$ac_cv_type_int16_t" >&6 +if test $ac_cv_type_int16_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT16_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for uint32_t" >&5 +echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint32_t *) 0) + return 0; +if (sizeof (uint32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint32_t" >&6 +if test $ac_cv_type_uint32_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT32_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int32_t" >&5 +echo $ECHO_N "checking for int32_t... $ECHO_C" >&6 +if test "${ac_cv_type_int32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int32_t *) 0) + return 0; +if (sizeof (int32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 +echo "${ECHO_T}$ac_cv_type_int32_t" >&6 +if test $ac_cv_type_int32_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT32_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for uint64_t" >&5 +echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint64_t *) 0) + return 0; +if (sizeof (uint64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint64_t" >&6 +if test $ac_cv_type_uint64_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT64_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int64_t" >&5 +echo $ECHO_N "checking for int64_t... $ECHO_C" >&6 +if test "${ac_cv_type_int64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int64_t *) 0) + return 0; +if (sizeof (int64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5 +echo "${ECHO_T}$ac_cv_type_int64_t" >&6 +if test $ac_cv_type_int64_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT64_T 1 +_ACEOF + + +fi + + + + + + + + + + + + + + +if test "${ac_cv_sizeof_unsigned_short}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT32_T unsigned short +_ACEOF + +else + if test "${ac_cv_sizeof_unsigned_int}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT32_T unsigned int +_ACEOF + + else + if test "${ac_cv_sizeof_unsigned_long}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT32_T unsigned long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +if test "${ac_cv_sizeof_short}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT32_T short +_ACEOF + +else + if test "${ac_cv_sizeof_int}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT32_T int +_ACEOF + + else + if test "${ac_cv_sizeof_long}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT32_T long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +if test "${ac_cv_sizeof_unsigned_int}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT64_T unsigned int +_ACEOF + +else + if test "${ac_cv_sizeof_unsigned_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT64_T unsigned long +_ACEOF + + else + if test "${ac_cv_sizeof_unsigned_long_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT64_T unsigned long long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +if test "${ac_cv_sizeof_int}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT64_T int +_ACEOF + +else + if test "${ac_cv_sizeof_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT64_T long +_ACEOF + + else + if test "${ac_cv_sizeof_long_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT64_T long long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +echo "$as_me:$LINENO: checking for IEEE854 compliant 80 bit floats" >&5 +echo $ECHO_N "checking for IEEE854 compliant 80 bit floats... $ECHO_C" >&6 +if test "${alex_cv_ieee854_float80+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: can't check for IEEE854 compliant 80 bit floats" >&5 +echo "$as_me: WARNING: can't check for IEEE854 compliant 80 bit floats" >&2;} + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int float2long_IEEE_compliance ( void ) +{ + struct { + long padding; /* to prevent unaligned access */ + float f; + } s; + s.f = 12582912.; if ( *(long*)(&s.f) != 1262485504l ) return 0; + s.f = 12615679.; if ( *(long*)(&s.f) != 1262518271l ) return 0; + s.f = 13582912.; if ( *(long*)(&s.f) != 1263485504l ) return 0; + s.f = 12550145.; if ( *(long*)(&s.f) != 1262452737l ) return 0; + s.f = 11582912.; if ( *(long*)(&s.f) != 1261485504l ) return 0; + return 1; +} + +int main(void) +{ + int retval; + + retval = float2long_IEEE_compliance(); + + /* no error return -> success */ + return !retval; +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + alex_cv_ieee854_float80=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +alex_cv_ieee854_float80=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $alex_cv_ieee854_float80" >&5 +echo "${ECHO_T}$alex_cv_ieee854_float80" >&6 +if test "${alex_cv_ieee854_float80}" = "yes" ; then + if test "${ac_cv_c_long_double}" = "yes" ; then + echo "$as_me:$LINENO: checking for ieee854_float80_t" >&5 +echo $ECHO_N "checking for ieee854_float80_t... $ECHO_C" >&6 +if test "${ac_cv_type_ieee854_float80_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ieee854_float80_t *) 0) + return 0; +if (sizeof (ieee854_float80_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ieee854_float80_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ieee854_float80_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ieee854_float80_t" >&5 +echo "${ECHO_T}$ac_cv_type_ieee854_float80_t" >&6 +if test $ac_cv_type_ieee854_float80_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_IEEE854_FLOAT80_T 1 +_ACEOF + +long double +fi + + + + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_IEEE854_FLOAT80 1 +_ACEOF + + fi +fi +echo "$as_me:$LINENO: checking for ieee754_float64_t" >&5 +echo $ECHO_N "checking for ieee754_float64_t... $ECHO_C" >&6 +if test "${ac_cv_type_ieee754_float64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ieee754_float64_t *) 0) + return 0; +if (sizeof (ieee754_float64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ieee754_float64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ieee754_float64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ieee754_float64_t" >&5 +echo "${ECHO_T}$ac_cv_type_ieee754_float64_t" >&6 +if test $ac_cv_type_ieee754_float64_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_IEEE754_FLOAT64_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for ieee754_float32_t" >&5 +echo $ECHO_N "checking for ieee754_float32_t... $ECHO_C" >&6 +if test "${ac_cv_type_ieee754_float32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ieee754_float32_t *) 0) + return 0; +if (sizeof (ieee754_float32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ieee754_float32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ieee754_float32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ieee754_float32_t" >&5 +echo "${ECHO_T}$ac_cv_type_ieee754_float32_t" >&6 +if test $ac_cv_type_ieee754_float32_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_IEEE754_FLOAT32_T 1 +_ACEOF + + +fi + + + + + + + + + +cat >>confdefs.h <<\_ACEOF +#define LAME_LIBRARY_BUILD 1 +_ACEOF + + + +if test ${cross_compiling} = "yes"; then + { echo "$as_me:$LINENO: WARNING: + ************************************************************************** + * * + * You are cross compiling: * + * - I did not have a change to determine * + * + the size of: * + * - short * + * - unsigned short * + * - int * + * - unsigned int * + * - long * + * - unsigned long * + * - float * + * - double * + * - long double * + * + the endianess of the system * + * - You have to provide appropriate defines for them in config.h, e.g. * + * + define SIZEOF_SHORT to 2 if the size of a short is 2 * + * + define WORDS_BIGENDIAN if your system is a big endian system * + * * + **************************************************************************" >&5 +echo "$as_me: WARNING: + ************************************************************************** + * * + * You are cross compiling: * + * - I did not have a change to determine * + * + the size of: * + * - short * + * - unsigned short * + * - int * + * - unsigned int * + * - long * + * - unsigned long * + * - float * + * - double * + * - long double * + * + the endianess of the system * + * - You have to provide appropriate defines for them in config.h, e.g. * + * + define SIZEOF_SHORT to 2 if the size of a short is 2 * + * + define WORDS_BIGENDIAN if your system is a big endian system * + * * + **************************************************************************" >&2;} +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/time.h> +#include <time.h> + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <alloca.h> +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include <malloc.h> +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include <alloca.h> +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_func in gettimeofday strtol +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +if test "X${ac_cv_func_strtol}" != "Xyes"; then + { { echo "$as_me:$LINENO: error: function strtol is mandatory" >&5 +echo "$as_me: error: function strtol is mandatory" >&2;} + { (exit 1); exit 1; }; } +fi + +SOCKETFUNCTION=YES +if test "${ac_cv_header_winsock2_h+set}" = set; then + echo "$as_me:$LINENO: checking for winsock2.h" >&5 +echo $ECHO_N "checking for winsock2.h... $ECHO_C" >&6 +if test "${ac_cv_header_winsock2_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_winsock2_h" >&5 +echo "${ECHO_T}$ac_cv_header_winsock2_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking winsock2.h usability" >&5 +echo $ECHO_N "checking winsock2.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <winsock2.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking winsock2.h presence" >&5 +echo $ECHO_N "checking winsock2.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <winsock2.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: winsock2.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: winsock2.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: winsock2.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: winsock2.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: winsock2.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: winsock2.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: winsock2.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: winsock2.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: winsock2.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: winsock2.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for winsock2.h" >&5 +echo $ECHO_N "checking for winsock2.h... $ECHO_C" >&6 +if test "${ac_cv_header_winsock2_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_winsock2_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_winsock2_h" >&5 +echo "${ECHO_T}$ac_cv_header_winsock2_h" >&6 + +fi +if test $ac_cv_header_winsock2_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WINSOCKET +_ACEOF + + LIBS="$LIBS -lwsock32" +fi + + +if test $ac_cv_header_winsock2_h = no; then + +for ac_func in socket +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + if test $ac_cv_func_socket = no; then + # maybe it is in libsocket + echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 +echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket (); +int +main () +{ +socket (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_socket=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_socket=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 +if test $ac_cv_lib_socket_socket = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_SOCKET 1 +_ACEOF + + LIBS="$LIBS -lsocket" +fi + + + if test "X${ac_cv_lib_socket_socket}" != "Xyes"; then + SOCKETFUNCTION=NO + else + case ${host_os} in + *solaris*) + LIBS="$LIBS -lnsl" + ;; + esac + fi + fi +fi + + +CFLAGS=${CFLAGS} +CONFIG_DEFS=${CONFIG_DEFS} +NASM= +INCLUDES="-I\$(top_srcdir)/include -I\$(srcdir)" +FRONTEND_LDFLAGS= +FRONTEND_CFLAGS= +LIB_SOURCES= +MAKEDEP="-M" +RM_F="rm -f" + +# Check whether --enable-nasm or --disable-nasm was given. +if test "${enable_nasm+set}" = set; then + enableval="$enable_nasm" + ASM_FOR_ARCH="i386" +else + ASM_FOR_ARCH="" +fi; + + + +for ac_header in termcap.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in ncurses/termcap.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +echo "$as_me:$LINENO: checking for initscr in -ltermcap" >&5 +echo $ECHO_N "checking for initscr in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_initscr=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_initscr" >&6 +if test $ac_cv_lib_termcap_initscr = yes; then + HAVE_TERMCAP="termcap" +fi + +echo "$as_me:$LINENO: checking for initscr in -lcurses" >&5 +echo $ECHO_N "checking for initscr in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_initscr=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_initscr" >&6 +if test $ac_cv_lib_curses_initscr = yes; then + HAVE_TERMCAP="curses" +fi + +echo "$as_me:$LINENO: checking for initscr in -lncurses" >&5 +echo $ECHO_N "checking for initscr in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_initscr=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_initscr" >&6 +if test $ac_cv_lib_ncurses_initscr = yes; then + HAVE_TERMCAP="ncurses" +fi + + +echo "$as_me:$LINENO: checking for cos in -lm" >&5 +echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6 +if test "${ac_cv_lib_m_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char cos (); +int +main () +{ +cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_m_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_m_cos=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_m_cos" >&6 +if test $ac_cv_lib_m_cos = yes; then + USE_LIBM="-lm" +fi + +echo "$as_me:$LINENO: checking for cos in -lffm" >&5 +echo $ECHO_N "checking for cos in -lffm... $ECHO_C" >&6 +if test "${ac_cv_lib_ffm_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lffm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char cos (); +int +main () +{ +cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ffm_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ffm_cos=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ffm_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_ffm_cos" >&6 +if test $ac_cv_lib_ffm_cos = yes; then + USE_LIBM="-lffm -lm" +fi + +echo "$as_me:$LINENO: checking for cos in -lcpml" >&5 +echo $ECHO_N "checking for cos in -lcpml... $ECHO_C" >&6 +if test "${ac_cv_lib_cpml_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcpml $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char cos (); +int +main () +{ +cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cpml_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cpml_cos=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cpml_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_cpml_cos" >&6 +if test $ac_cv_lib_cpml_cos = yes; then + USE_LIBM="-lcpml" +fi + +CONFIG_MATH_LIB="${USE_LIBM}" + +echo "$as_me:$LINENO: checking for sf_open_read in -lsndfile" >&5 +echo $ECHO_N "checking for sf_open_read in -lsndfile... $ECHO_C" >&6 +if test "${ac_cv_lib_sndfile_sf_open_read+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsndfile $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char sf_open_read (); +int +main () +{ +sf_open_read (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_sndfile_sf_open_read=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_sndfile_sf_open_read=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_sndfile_sf_open_read" >&5 +echo "${ECHO_T}$ac_cv_lib_sndfile_sf_open_read" >&6 +if test $ac_cv_lib_sndfile_sf_open_read = yes; then + HAVE_SNDFILE="yes" +fi + + + + + +# Check whether --with-gtk-prefix or --without-gtk-prefix was given. +if test "${with_gtk_prefix+set}" = set; then + withval="$with_gtk_prefix" + gtk_config_prefix="$withval" +else + gtk_config_prefix="" +fi; + +# Check whether --with-gtk-exec-prefix or --without-gtk-exec-prefix was given. +if test "${with_gtk_exec_prefix+set}" = set; then + withval="$with_gtk_exec_prefix" + gtk_config_exec_prefix="$withval" +else + gtk_config_exec_prefix="" +fi; +# Check whether --enable-gtktest or --disable-gtktest was given. +if test "${enable_gtktest+set}" = set; then + enableval="$enable_gtktest" + +else + enable_gtktest=yes +fi; + + for module in . + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + # Extract the first word of "gtk-config", so it can be a program name with args. +set dummy gtk-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GTK_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GTK_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GTK_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" + ;; +esac +fi +GTK_CONFIG=$ac_cv_path_GTK_CONFIG + +if test -n "$GTK_CONFIG"; then + echo "$as_me:$LINENO: result: $GTK_CONFIG" >&5 +echo "${ECHO_T}$GTK_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + min_gtk_version=1.2.0 + echo "$as_me:$LINENO: checking for GTK - version >= $min_gtk_version" >&5 +echo $ECHO_N "checking for GTK - version >= $min_gtk_version... $ECHO_C" >&6 + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <gtk/gtk.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +no_gtk=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + HAVE_GTK="yes" + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <gtk/gtk.h> +#include <stdio.h> + +int +main () +{ + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + HAVE_GTK="no" + fi + + + rm -f conf.gtktest + +if test "${HAVE_GTK}" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GTK 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking use of ElectricFence malloc debugging" >&5 +echo $ECHO_N "checking use of ElectricFence malloc debugging... $ECHO_C" >&6 +# Check whether --enable-efence or --disable-efence was given. +if test "${enable_efence+set}" = set; then + enableval="$enable_efence" + CONFIG_EFENCE="${enableval}" +else + CONFIG_EFENCE="no" +fi; + +case "${CONFIG_EFENCE}" in +yes) + echo "$as_me:$LINENO: checking for EF_Print in -lefence" >&5 +echo $ECHO_N "checking for EF_Print in -lefence... $ECHO_C" >&6 +if test "${ac_cv_lib_efence_EF_Print+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lefence $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char EF_Print (); +int +main () +{ +EF_Print (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_efence_EF_Print=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_efence_EF_Print=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_efence_EF_Print" >&5 +echo "${ECHO_T}$ac_cv_lib_efence_EF_Print" >&6 +if test $ac_cv_lib_efence_EF_Print = yes; then + HAVE_EFENCE="-lefence" +fi + + if test "x${HAVE_EFENCE}" != "x-lefence"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + LDADD="${LDADD} ${HAVE_EFENCE}" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_EFENCE 1 +_ACEOF + + echo "$as_me:$LINENO: result: ${CONFIG_EFENCE}" >&5 +echo "${ECHO_T}${CONFIG_EFENCE}" >&6 + fi + ;; +no) + echo "$as_me:$LINENO: result: ${CONFIG_EFENCE}" >&5 +echo "${ECHO_T}${CONFIG_EFENCE}" >&6 + ;; +*) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_EFENCE}� for efence option" >&5 +echo "$as_me: error: bad value �${CONFIG_EFENCE}� for efence option" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + +echo "$as_me:$LINENO: checking use of file io" >&5 +echo $ECHO_N "checking use of file io... $ECHO_C" >&6 +WARNING= + +# Check whether --with-fileio or --without-fileio was given. +if test "${with_fileio+set}" = set; then + withval="$with_fileio" + CONFIG_FILEIO="${withval}" +else + CONFIG_FILEIO="lame" +fi; + +# Check whether --with-sndfile-prefix or --without-sndfile-prefix was given. +if test "${with_sndfile_prefix+set}" = set; then + withval="$with_sndfile_prefix" + CONFIG_SNDFILE_PREFIX="${withval}" +else + CONFIG_SNDFILE_PREFIX="" +fi; +if test "${CONFIG_FILEIO}" = "sndfile" ; then + if test "x${CONFIG_SNDFILE_PREFIX}" != "x" ; then + # look for sndfile lib. This overrides any standard location + + + SNDFILE_LIB_LOC= + libsndfile.a + for FILE in \ + libsndfile.a; do + for DIR in $CONFIG_SNDFILE_PREFIX $CONFIG_SNDFILE_PREFIX/lib $CONFIG_SNDFILE_PREFIX/.. $CONFIG_SNDFILE_PREFIX/../lib; do + if test ".SNDFILE_LIB_LOC"="." && test -f "$DIR/$FILE"; then + SNDFILE_LIB_LOC=$DIR + fi + done + done + + + SNDFILE_INC_LOC= + for FILE in sndfile.h; do + for DIR in $CONFIG_SNDFILE_PREFIX $CONFIG_SNDFILE_PREFIX/include $CONFIG_SNDFILE_PREFIX/.. $CONFIG_SNDFILE_PREFIX/../include; do + if test ".SNDFILE_INC_LOC"="." && test -f "$DIR/$FILE"; then + SNDFILE_INC_LOC=$DIR + fi + done + done + + if test ".SNDFILE_LIB_LOC" = "." || test ".SNDFILE_INC_LOC" = "."; then + SNDFILE_LIB_LOC= + SNDFILE_INC_LOC= + fi + + if test "x${SNDFILE_LIB_LOC}" != "x" ; then + HAVE_SNDFILE="yes" + FRONTEND_LDFLAGS="-L${SNDFILE_LIB_LOC} ${FRONTEND_LDFLAGS}" + INCLUDES="-I${SNDFILE_INC_LOC} ${INCLUDES}" + else + WARNING="sndfile lib not found in specified prefix." + fi + fi + if test "${HAVE_SNDFILE}" = "yes" ; then + FRONTEND_LDADD="-lsndfile ${FRONTEND_LDADD}" + +cat >>confdefs.h <<\_ACEOF +#define LIBSNDFILE 1 +_ACEOF + + else + # default + CONFIG_FILEIO="lame" + WARNING="${WARNING} Could not find any sndfile lib on system." + fi +else + CONFIG_FILEIO="lame" +fi +echo "$as_me:$LINENO: result: ${CONFIG_FILEIO}" >&5 +echo "${ECHO_T}${CONFIG_FILEIO}" >&6 +if test "x${WARNING}" != "x" ; then + { echo "$as_me:$LINENO: WARNING: $WARNING" >&5 +echo "$as_me: WARNING: $WARNING" >&2;} +fi + + +echo "$as_me:$LINENO: checking use of analyzer hooks" >&5 +echo $ECHO_N "checking use of analyzer hooks... $ECHO_C" >&6 +# Check whether --enable-analyzer-hooks or --disable-analyzer-hooks was given. +if test "${enable_analyzer_hooks+set}" = set; then + enableval="$enable_analyzer_hooks" + CONFIG_ANALYZER="${enableval}" +else + CONFIG_ANALYZER="yes" +fi; + +case "${CONFIG_ANALYZER}" in +yes) + ;; +no) + +cat >>confdefs.h <<\_ACEOF +#define NOANALYSIS 1 +_ACEOF + + ;; +*) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_ANALYZER}� for analyzer-hooks option" >&5 +echo "$as_me: error: bad value �${CONFIG_ANALYZER}� for analyzer-hooks option" >&2;} + { (exit 1); exit 1; }; } + ;; +esac +echo "$as_me:$LINENO: result: $CONFIG_ANALYZER" >&5 +echo "${ECHO_T}$CONFIG_ANALYZER" >&6 + + +echo "$as_me:$LINENO: checking use of mpg123 decoder" >&5 +echo $ECHO_N "checking use of mpg123 decoder... $ECHO_C" >&6 +# Check whether --enable-decoder or --disable-decoder was given. +if test "${enable_decoder+set}" = set; then + enableval="$enable_decoder" + CONFIG_DECODER="${enableval}" +else + CONFIG_DECODER="yes" +fi; +# Check whether --enable-decode-layer1 or --disable-decode-layer1 was given. +if test "${enable_decode_layer1+set}" = set; then + enableval="$enable_decode_layer1" + CONFIG_DECODER_L1="${enableval}" +else + CONFIG_DECODER_L1="no" +fi; +# Check whether --enable-decode-layer2 or --disable-decode-layer2 was given. +if test "${enable_decode_layer2+set}" = set; then + enableval="$enable_decode_layer2" + CONFIG_DECODER_L2="${enableval}" +else + CONFIG_DECODER_L2="yes" +fi; + + + +if test "x${CONFIG_DECODER}" = "xyes"; then + LIB_WITH_DECODER_TRUE= + LIB_WITH_DECODER_FALSE='#' +else + LIB_WITH_DECODER_TRUE='#' + LIB_WITH_DECODER_FALSE= +fi + + +if test "${CONFIG_DECODER}" != "no" ; then + CONFIG_DECODER="yes (Layer" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MPGLIB 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define DECODE_ON_THE_FLY 1 +_ACEOF + + + if test "${CONFIG_DECODER_L1}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 1," + +cat >>confdefs.h <<\_ACEOF +#define USE_LAYER_1 1 +_ACEOF + + fi + if test "${CONFIG_DECODER_L2}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 2," + +cat >>confdefs.h <<\_ACEOF +#define USE_LAYER_2 1 +_ACEOF + + fi + CONFIG_DECODER="${CONFIG_DECODER} 3)" +fi +echo "$as_me:$LINENO: result: $CONFIG_DECODER" >&5 +echo "${ECHO_T}$CONFIG_DECODER" >&6 + + +echo "$as_me:$LINENO: checking if the lame frontend should be build" >&5 +echo $ECHO_N "checking if the lame frontend should be build... $ECHO_C" >&6 +# Check whether --enable-frontend or --disable-frontend was given. +if test "${enable_frontend+set}" = set; then + enableval="$enable_frontend" + WITH_FRONTEND="${enableval}" +else + WITH_FRONTEND=yes +fi; +if test "x${WITH_FRONTEND}" = "xyes"; then + WITH_FRONTEND=lame${ac_exeext} + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + WITH_FRONTEND= + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +echo "$as_me:$LINENO: checking if mp3x is requested" >&5 +echo $ECHO_N "checking if mp3x is requested... $ECHO_C" >&6 +# Check whether --enable-mp3x or --disable-mp3x was given. +if test "${enable_mp3x+set}" = set; then + enableval="$enable_mp3x" + WITH_MP3X="${enableval}" +else + WITH_MP3X=no +fi; +if test "x${WITH_MP3X}" = "xyes"; then + WITH_MP3X=mp3x${ac_exeext} + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + WITH_MP3X= + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "${HAVE_GTK}" = "no"; then + if test "x${WITH_MP3X}" = "xmp3x"; then + { echo "$as_me:$LINENO: WARNING: can't build mp3x" >&5 +echo "$as_me: WARNING: can't build mp3x" >&2;} + WITH_MP3X= + fi + if test "x${CONFIG_ANALYZER}" != "xyes"; then + { echo "$as_me:$LINENO: WARNING: can't build mp3x because of disabled analyzer hooks" >&5 +echo "$as_me: WARNING: can't build mp3x because of disabled analyzer hooks" >&2;} + WITH_MP3X= + fi +fi + +echo "$as_me:$LINENO: checking if mp3rtp is requested" >&5 +echo $ECHO_N "checking if mp3rtp is requested... $ECHO_C" >&6 +# Check whether --enable-mp3rtp or --disable-mp3rtp was given. +if test "${enable_mp3rtp+set}" = set; then + enableval="$enable_mp3rtp" + WITH_MP3RTP="${enableval}" +else + WITH_MP3RTP=no +fi; +if test "x${WITH_MP3RTP}" = "xyes"; then + if test ${SOCKETFUNCTION} = NO; then + { { echo "$as_me:$LINENO: error: function socket is mandatory for mp3rtp" >&5 +echo "$as_me: error: function socket is mandatory for mp3rtp" >&2;} + { (exit 1); exit 1; }; } + fi + WITH_MP3RTP=mp3rtp${ac_exeext} + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + WITH_MP3RTP= + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +# +# this is from vorbis +# +case $host in +*86-*-linux*) + # glibc < 2.1.3 has a serious FP bug in the math inline header + # that will cripple Vorbis. Look to see if the magic FP stack + # clobber is missing in the mathinline header, thus indicating + # the buggy version + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "log10.*fldlg2.*fxch" >/dev/null 2>&1; then + bad=maybe +else + bad=no +fi +rm -f conftest* + + + echo "$as_me:$LINENO: checking glibc mathinline bug" >&5 +echo $ECHO_N "checking glibc mathinline bug... $ECHO_C" >&6 + if test ${bad} = "maybe" ;then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "log10.*fldlg2.*fxch.*st\([0123456789]*\)" >/dev/null 2>&1; then + bad=no +else + bad=yes +fi +rm -f conftest* + + fi + echo "$as_me:$LINENO: result: ${bad}" >&5 +echo "${ECHO_T}${bad}" >&6 + if test ${bad} = "yes" ;then + { echo "$as_me:$LINENO: WARNING: " >&5 +echo "$as_me: WARNING: " >&2;} + { echo "$as_me:$LINENO: WARNING: ********************************************************" >&5 +echo "$as_me: WARNING: ********************************************************" >&2;} + { echo "$as_me:$LINENO: WARNING: * The glibc headers on this machine have a serious bug *" >&5 +echo "$as_me: WARNING: * The glibc headers on this machine have a serious bug *" >&2;} + { echo "$as_me:$LINENO: WARNING: * in /usr/include/bits/mathinline.h This bug affects *" >&5 +echo "$as_me: WARNING: * in /usr/include/bits/mathinline.h This bug affects *" >&2;} + { echo "$as_me:$LINENO: WARNING: * all floating point code, not only LAME, but all code *" >&5 +echo "$as_me: WARNING: * all floating point code, not only LAME, but all code *" >&2;} + { echo "$as_me:$LINENO: WARNING: * built on this machine. Upgrading to glibc 2.1.3 is *" >&5 +echo "$as_me: WARNING: * built on this machine. Upgrading to glibc 2.1.3 is *" >&2;} + { echo "$as_me:$LINENO: WARNING: * strongly urged to correct the problem. *" >&5 +echo "$as_me: WARNING: * strongly urged to correct the problem. *" >&2;} + { echo "$as_me:$LINENO: WARNING: *Note: that upgrading glibc will not fix any previously*" >&5 +echo "$as_me: WARNING: *Note: that upgrading glibc will not fix any previously*" >&2;} + { echo "$as_me:$LINENO: WARNING: * built programs; this is a compile-time bug. *" >&5 +echo "$as_me: WARNING: * built programs; this is a compile-time bug. *" >&2;} + { echo "$as_me:$LINENO: WARNING: * To work around the problem for this build of LAME, *" >&5 +echo "$as_me: WARNING: * To work around the problem for this build of LAME, *" >&2;} + { echo "$as_me:$LINENO: WARNING: * autoconf is disabling all math inlining. This will *" >&5 +echo "$as_me: WARNING: * autoconf is disabling all math inlining. This will *" >&2;} + { echo "$as_me:$LINENO: WARNING: * hurt LAME performace but is necessary for LAME to *" >&5 +echo "$as_me: WARNING: * hurt LAME performace but is necessary for LAME to *" >&2;} + { echo "$as_me:$LINENO: WARNING: * work correctly. Once glibc is upgraded, rerun *" >&5 +echo "$as_me: WARNING: * work correctly. Once glibc is upgraded, rerun *" >&2;} + { echo "$as_me:$LINENO: WARNING: * configure and make to build with inlining. *" >&5 +echo "$as_me: WARNING: * configure and make to build with inlining. *" >&2;} + { echo "$as_me:$LINENO: WARNING: ********************************************************" >&5 +echo "$as_me: WARNING: ********************************************************" >&2;} + { echo "$as_me:$LINENO: WARNING: " >&5 +echo "$as_me: WARNING: " >&2;} + + +cat >>confdefs.h <<\_ACEOF +#define __NO_MATH_INLINES 1 +_ACEOF + + fi;; +esac + + +echo "$as_me:$LINENO: checking use of VBR bitrate histogram" >&5 +echo $ECHO_N "checking use of VBR bitrate histogram... $ECHO_C" >&6 +if test "x${HAVE_TERMCAP}" != "x"; then + TERMCAP_DEFAULT="yes" +else + TERMCAP_DEFAULT="no" +fi +# Check whether --enable-brhist or --disable-brhist was given. +if test "${enable_brhist+set}" = set; then + enableval="$enable_brhist" + CONFIG_BRHIST="${enableval}" +else + CONFIG_BRHIST="yes" +fi; +if test "${CONFIG_BRHIST}" != "no" ; then + +cat >>confdefs.h <<\_ACEOF +#define BRHIST 1 +_ACEOF + + + if test "${TERMCAP_DEFAULT}" = "yes" ; then + FRONTEND_LDADD="-l${HAVE_TERMCAP} ${FRONTEND_LDADD}" + CONFIG_BRHIST="yes, with ${HAVE_TERMCAP}" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TERMCAP 1 +_ACEOF + + else + CONFIG_BRHIST="yes, simulated termcap" + fi +fi +echo "$as_me:$LINENO: result: ${CONFIG_BRHIST}" >&5 +echo "${ECHO_T}${CONFIG_BRHIST}" >&6 + + +if test "${CONFIG_BRHIST}" != "no"; then + WITH_BRHIST_TRUE= + WITH_BRHIST_FALSE='#' +else + WITH_BRHIST_TRUE='#' + WITH_BRHIST_FALSE= +fi + + + + +case $host_cpu in +*86) + CPUTYPE="i386" + + # use internal knowledge of the IEEE 754 layout + +cat >>confdefs.h <<\_ACEOF +#define TAKEHIRO_IEEE754_HACK 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define USE_FAST_LOG 1 +_ACEOF + + ;; +powerpc) + CPUTYPE="no" + + # use internal knowledge of the IEEE 754 layout + +cat >>confdefs.h <<\_ACEOF +#define TAKEHIRO_IEEE754_HACK 1 +_ACEOF + + + # The following should not get enabled on a G5. HOWTO check for a G5? + +cat >>confdefs.h <<\_ACEOF +#define USE_FAST_LOG 1 +_ACEOF + + ;; +*) + CPUTYPE="no" + ;; +esac + + + +echo "$as_me:$LINENO: checking for FLOAT8 as float" >&5 +echo $ECHO_N "checking for FLOAT8 as float... $ECHO_C" >&6 +# Check whether --enable-all-float or --disable-all-float was given. +if test "${enable_all_float+set}" = set; then + enableval="$enable_all_float" + CONFIG_ALLFLOAT="${enableval}" +else + CONFIG_ALLFLOAT="no" +fi; +case "${CONFIG_ALLFLOAT}" in +no) + ;; +yes) + +cat >>confdefs.h <<\_ACEOF +#define FLOAT8 float +_ACEOF + + ;; +*) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_ALLFLOAT}� for all-float option" >&5 +echo "$as_me: error: bad value �${CONFIG_ALLFLOAT}� for all-float option" >&2;} + { (exit 1); exit 1; }; } + ;; +esac +echo "$as_me:$LINENO: result: ${CONFIG_ALLFLOAT}" >&5 +echo "${ECHO_T}${CONFIG_ALLFLOAT}" >&6 + + + +# Extract the first word of "nasm", so it can be a program name with args. +set dummy nasm; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_NASM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $NASM in + [\\/]* | ?:[\\/]*) + ac_cv_path_NASM="$NASM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NASM="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_NASM" && ac_cv_path_NASM="no" + ;; +esac +fi +NASM=$ac_cv_path_NASM + +if test -n "$NASM"; then + echo "$as_me:$LINENO: result: $NASM" >&5 +echo "${ECHO_T}$NASM" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +case "${NASM}" in +no) + ;; +*) + echo "$as_me:$LINENO: checking for assembler routines for this processor type" >&5 +echo $ECHO_N "checking for assembler routines for this processor type... $ECHO_C" >&6 + for recurse_over in ${ASM_FOR_ARCH} + do + if test "${CPUTYPE}" = "${recurse_over}"; then + include_asm_routines="yes" + fi + done + if test "x${include_asm_routines}" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_NASM 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define MMX_choose_table 1 +_ACEOF + + else + include_asm_routines="no" + NASM="no" + fi + echo "$as_me:$LINENO: result: ${include_asm_routines}" >&5 +echo "${ECHO_T}${include_asm_routines}" >&6 + ;; +esac + + +if test "${NASM}" != "no"; then + HAVE_NASM_TRUE= + HAVE_NASM_FALSE='#' +else + HAVE_NASM_TRUE='#' + HAVE_NASM_FALSE= +fi + + +case $host_os in + *cygwin*|*mingw32*) + CYGWIN=yes + NASM_FORMAT="-f win32 -DWIN32" + ;; + *) + CYGWIN=no + NASM_FORMAT="-f elf" + ;; +esac + +# +# 'expopt' is used for "additional optimizations", not for optimizations which +# are marked as "experimental" in the guide for the compiler. +# They are "experimental" here in the LAME project (at least +# "--enable-expopt=full"). +# +echo "$as_me:$LINENO: checking for additional optimizations" >&5 +echo $ECHO_N "checking for additional optimizations... $ECHO_C" >&6 +# Check whether --enable-expopt or --disable-expopt was given. +if test "${enable_expopt+set}" = set; then + enableval="$enable_expopt" + CONFIG_EXPOPT="${enableval}" +else + CONFIG_EXPOPT="no" +fi; + +if test "x$GCC" = "xyes"; then + # gcc defaults. OS specific options go in versious sections below + # from the gcc man pages: "there is no reason to use -pedantic" + if test "x${with_gnu_ld}" = "xyes"; then + CFLAGS="-Wall -pipe ${CFLAGS}" + else + # some vendor ld's don't like '-pipe' + CFLAGS="-Wall ${CFLAGS}" + fi + + # GCC version specific generic options + case "${GCC_version}" in + 2.96*) + # for buggy version of gcc shipped with RH7.1, back of on some + # optimizations + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fsched-interblock -fbranch-count-reg -fforce-addr \ + -fforce-mem" + ;; + 3.0*) + # -funroll-loops seems to produce buggy code with gcc 3.0.3 + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + 3.2*) + # -fomit-frame-pointer seems to be buggy on cygwin + case ${host_os} in + *cygwin*) + OMIT_FRAME_POINTER= + ;; + *) + OMIT_FRAME_POINTER=-fomit-frame-pointer + ;; + esac + + OPTIMIZATION="-O ${OMIT_FRAME_POINTER} -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + *) + # default + OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr -fforce-mem" + ;; + esac + + + # GCC version independend generic options + OPTIMIZATION_NORM="-fschedule-insns2" + + + # generic CPU specific options + case ${host_cpu} in + sparc) + case "${GCC_version}" in + 3.0*) + ;; + 3.*) + # doesn't work on 3.0.x, but on 3.[12] and + # hopefully on every other release after that too + if test -x /usr/bin/isalist; then + /usr/bin/isalist | grep sparcv8plus \ + >/dev/null 2>&1 && \ + OPTIMIZATION="${OPTIMIZATION} \ + -mcpu=ultrasparc \ + -mtune=ultrasparc" + fi + ;; + esac + ;; + *86) + case "${GCC_version}" in + 3.*) + OPTIMIZATION="${OPTIMIZATION} \ + -maccumulate-outgoing-args" + ;; + esac + ;; + esac + + + case "${CONFIG_EXPOPT}" in + no) + # if someone supplies own CFLAGS, we don't add our own + if test "x${ac_save_CFLAGS}" != "x"; then + OPTIMIZATION="" + fi + ;; + norm|yes) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM}" + ;; + full) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM} \ + ${OPTIMIZATION_FULL}" + + # some hardware dependend options + case "${GCC_version}" in + 2.9*|3.*) + # "new" GCC, use some "new" CPU specific optimizations + case ${host_cpu} in + *486) + OPTIMIZATION="${OPTIMIZATION} -m486 \ + -mfancy-math-387" + ;; + *586) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentium \ + -march=pentium -mfancy-math-387" + ;; + *686) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentiumpro \ + -march=pentiumpro -mfancy-math-387 \ + -malign-double" + ;; + *86) + OPTIMIZATION="${OPTIMIZATION} -mfancy-math-387" + ;; + alpha*) + OPTIMIZATION="${OPTIMIZATION} -mfp-regs" + +cat >>confdefs.h <<\_ACEOF +#define FLOAT double +_ACEOF + + # add "-mcpu=21164a -Wa,-m21164a" to optimize + # for 21164a (ev56) CPU + ;; + *) + OPTIMIZATION="${OPTIMIZATION} -fdelayed-branch" + ;; + esac + ;; + *) + # no special optimization for other versions + { echo "$as_me:$LINENO: WARNING: LAME doesn't know about your version of gcc" >&5 +echo "$as_me: WARNING: LAME doesn't know about your version of gcc" >&2;} + ;; + esac + ;; + *) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_EXPOPT}� for expopt option" >&5 +echo "$as_me: error: bad value �${CONFIG_EXPOPT}� for expopt option" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + echo "$as_me:$LINENO: result: ${CONFIG_EXPOPT}" >&5 +echo "${ECHO_T}${CONFIG_EXPOPT}" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + + + +echo "$as_me:$LINENO: checking for debug options" >&5 +echo $ECHO_N "checking for debug options... $ECHO_C" >&6 +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + CONFIG_DEBUG="${enableval}" +else + CONFIG_DEBUG="no" +fi; + +if test "x$GCC" = "xyes"; then + DEBUG_NORM_OPT="-O -g -Wall" + DEBUG_ANOYING="-Wbad-function-cast -Wcast-align \ + -Wcast-qual -Wchar-subscripts -Wconversion \ + -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ + -Wredundant-decls -Wshadow -Wstrict-prototypes \ + -Wwrite-strings -Winline \ + -Wformat -Wswitch -Waggregate-return -Wmissing-noreturn \ + -Wimplicit-int -fno-builtin" + + case "${CONFIG_DEBUG}" in + no) + +cat >>confdefs.h <<\_ACEOF +#define NDEBUG 1 +_ACEOF + + ;; + norm|yes) + +cat >>confdefs.h <<\_ACEOF +#define ABORTFP 1 +_ACEOF + + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + anoying) + +cat >>confdefs.h <<\_ACEOF +#define ABORTFP 1 +_ACEOF + + OPTIMIZATION="${DEBUG_NORM_OPT} ${DEBUG_ANOYING}" + ;; + alot) + +cat >>confdefs.h <<\_ACEOF +#define ABORTFP 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define DEBUG 1 +_ACEOF + + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + *) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_DEBUG}� for debug option" >&5 +echo "$as_me: error: bad value �${CONFIG_DEBUG}� for debug option" >&2;} + { (exit 1); exit 1; }; } + esac + + echo "$as_me:$LINENO: result: ${CONFIG_DEBUG}" >&5 +echo "${ECHO_T}${CONFIG_DEBUG}" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + + +########################################################################## +# LINUX on Digital/Compaq Alpha CPUs +########################################################################## +case $host in +alpha*-*-linux*) + +################################################################ +#### Check if 'ccc' is in our path +################################################################ +if test "`which ccc 2>/dev/null | grep -c ccc`" != "0" ; then + # Compaq's C Compiler + CC=ccc + +################################################################ +#### set 'OPTIMIZATION = -arch host -tune host' +#### to generate/tune instructions for this machine +#### 'OPTIMIZATION += -migrate -fast -inline speed -unroll 0' +#### tweak to run as fast as possible :) +#### 'OPTIMIZATION += -w0' +#### set warning and linking flags +################################################################ + OPTIMIZATION="-arch host -tune host" + OPTIMIZATION="-migrate -fast -inline speed -unroll 0 $OPTIMIZATION" + OPTIMIZATION="-w0 $OPTIMIZATION" + + +################################################################ +#### to debug, uncomment +################################################################ + # For Debugging + #OPTIMIZATION="-g3 $OPTIMIZATION" + +################################################################ +#### define __DECALPHA__ (i was getting re-declaration warnings +#### in machine.h +################################################################ + # Define DEC Alpha + +cat >>confdefs.h <<\_ACEOF +#define __DECALPHA__ 1 +_ACEOF + +fi # gcc or ccc? +;; # alpha + + +########################################################################## +# SunOS +########################################################################## +sparc-*-sunos4*) + if test CC = "cc"; then + OPTIMIZATION="-O -xCC" + MAKEDEP="-xM" + # for gcc, use instead: + # CC="gcc" + # OPTIMIZATION="-O" + # MAKEDEP="-M" +{ echo "$as_me:$LINENO: WARNING: Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation." >&5 +echo "$as_me: WARNING: Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation." >&2;} + fi +;; #SunOS + +########################################################################## +# SGI +########################################################################## +*-sgi-irix*) + if test CC = "cc"; then + OPTIMIZATION="-O3 -woff all" + fi +;; # SGI + +########################################################################## +# Compaq Alpha running Dec Unix (OSF) +########################################################################## +alpha*-dec-osf*) + if test CC = "cc"; then + OPTIMIZATION="-fast -O3 -std -g3 -non_shared" + fi +;; #OSF +esac + +# todo: include the following tests in the case-list +UNAME=`uname` +ARCH=`uname -m` + +########################################################################### +# MOSXS (Rhapsody PPC) +########################################################################### +if test "$UNAME" = "Rhapsody"; then +# CC="cc" # should be handled already by autoconf + MAKEDEP="-make" +fi + +########################################################################### +# MAC OSX Darwin PPC +########################################################################### +if test "$UNAME" = "Darwin"; then + MAKEDEP="-make" + CFLAGS="$CFLAGS -fno-common" +fi + + +########################################################################## +# OS/2 +########################################################################## +# Properly installed EMX runtime & development package is a prerequisite. +# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 +# +########################################################################## +if test "$UNAME" = "OS/2"; then + SHELL=sh + #CC=gcc # should already be handled by configure + + # file extension should already be handled by automake (I don't know, + # please give feedback! + #FILE_EXTENSION=".exe" + +# Uncomment & inspect the GTK lines to use MP3x GTK frame analyzer. +# Properly installed XFree86/devlibs & GTK+ is a prerequisite. +# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: +# AC_DEFINE(HAVE_GTK, 1, have GTK) +# AC_DEFINE(__ST_MT_ERRNO__, 1) +# INCLUDES="-IC:/XFree86/include/gtk12 -IC:/XFree86/include/glib12 \ +# -IC:/XFree86/include $INCLUDES" +# FRONTEND_LDFLAGS="-LC:/XFree86/lib -lgtk12 -lgdk12 -lgmodule -lglib12 \ +# -lXext -lX11 -lshm -lbsd -lsocket -lm $FRONTEND_LDFLAGS" +# FRONTEND_CFLAGS="-Zmtd -Zsysv-signals -Zbin-files $FRONTEND_CFLAGS" +fi + +########################################################################### +# AmigaOS +########################################################################### +# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS +# +########################################################################### +if test "$UNAME" = "AmigaOS" ; then + CC="gcc -noixemul" + OPTIMIZATION="$OPTIMIZATION -m68020-60 -m68881" + MAKEDEP="-MM" + if test "$ARCH" = "WOS"; then + CC="ppc-amigaos-gcc -warpup" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi + if test "$ARCH",PPC; then + CC="ppc-amigaos-gcc" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi +fi + + +CFLAGS="${OPTIMIZATION} ${CFLAGS}" +LDADD="${LDADD}" +FRONTEND_LDADD="${FRONTEND_LDADD} ${CONFIG_MATH_LIB}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ac_config_files="$ac_config_files Makefile libmp3lame/Makefile libmp3lame/i386/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# 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 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${LIB_WITH_DECODER_TRUE}" && test -z "${LIB_WITH_DECODER_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"LIB_WITH_DECODER\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"LIB_WITH_DECODER\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${WITH_BRHIST_TRUE}" && test -z "${WITH_BRHIST_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"WITH_BRHIST\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"WITH_BRHIST\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${HAVE_NASM_TRUE}" && test -z "${HAVE_NASM_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"HAVE_NASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"HAVE_NASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by lame $as_me 3.97, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <bug-autoconf@gnu.org>." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +lame config.status 3.97 +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "libmp3lame/Makefile" ) CONFIG_FILES="$CONFIG_FILES libmp3lame/Makefile" ;; + "libmp3lame/i386/Makefile" ) CONFIG_FILES="$CONFIG_FILES libmp3lame/i386/Makefile" ;; + "frontend/Makefile" ) CONFIG_FILES="$CONFIG_FILES frontend/Makefile" ;; + "mpglib/Makefile" ) CONFIG_FILES="$CONFIG_FILES mpglib/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/html/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/Makefile" ;; + "doc/man/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/man/Makefile" ;; + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "Dll/Makefile" ) CONFIG_FILES="$CONFIG_FILES Dll/Makefile" ;; + "misc/Makefile" ) CONFIG_FILES="$CONFIG_FILES misc/Makefile" ;; + "debian/Makefile" ) CONFIG_FILES="$CONFIG_FILES debian/Makefile" ;; + "dshow/Makefile" ) CONFIG_FILES="$CONFIG_FILES dshow/Makefile" ;; + "ACM/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/Makefile" ;; + "ACM/ADbg/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/ADbg/Makefile" ;; + "ACM/ddk/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/ddk/Makefile" ;; + "ACM/tinyxml/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/tinyxml/Makefile" ;; + "lame.spec" ) CONFIG_FILES="$CONFIG_FILES lame.spec" ;; + "mac/Makefile" ) CONFIG_FILES="$CONFIG_FILES mac/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t +s,@U@,$U,;t t +s,@ANSI2KNR@,$ANSI2KNR,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GTK_CONFIG@,$GTK_CONFIG,;t t +s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t +s,@GTK_LIBS@,$GTK_LIBS,;t t +s,@LIB_WITH_DECODER_TRUE@,$LIB_WITH_DECODER_TRUE,;t t +s,@LIB_WITH_DECODER_FALSE@,$LIB_WITH_DECODER_FALSE,;t t +s,@WITH_BRHIST_TRUE@,$WITH_BRHIST_TRUE,;t t +s,@WITH_BRHIST_FALSE@,$WITH_BRHIST_FALSE,;t t +s,@NASM@,$NASM,;t t +s,@HAVE_NASM_TRUE@,$HAVE_NASM_TRUE,;t t +s,@HAVE_NASM_FALSE@,$HAVE_NASM_FALSE,;t t +s,@INCLUDES@,$INCLUDES,;t t +s,@FRONTEND_LDFLAGS@,$FRONTEND_LDFLAGS,;t t +s,@FRONTEND_CFLAGS@,$FRONTEND_CFLAGS,;t t +s,@FRONTEND_LDADD@,$FRONTEND_LDADD,;t t +s,@LDADD@,$LDADD,;t t +s,@LIB_MAJOR_VERSION@,$LIB_MAJOR_VERSION,;t t +s,@LIB_MINOR_VERSION@,$LIB_MINOR_VERSION,;t t +s,@NASM_FORMAT@,$NASM_FORMAT,;t t +s,@MAKEDEP@,$MAKEDEP,;t t +s,@RM_F@,$RM_F,;t t +s,@WITH_FRONTEND@,$WITH_FRONTEND,;t t +s,@WITH_MP3X@,$WITH_MP3X,;t t +s,@WITH_MP3RTP@,$WITH_MP3RTP,;t t +s,@CPUTYPE@,$CPUTYPE,;t t +s,@CONFIG_DEFS@,$CONFIG_DEFS,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # 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_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # 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" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`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 + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# 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_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`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 + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/lame-3.97/.svn/text-base/depcomp.svn-base b/lame-3.97/.svn/text-base/depcomp.svn-base new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/.svn/text-base/depcomp.svn-base @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/.svn/text-base/install-sh.svn-base b/lame-3.97/.svn/text-base/install-sh.svn-base new file mode 100644 index 0000000..4d4a951 --- /dev/null +++ b/lame-3.97/.svn/text-base/install-sh.svn-base @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-05-14.22 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/.svn/text-base/lame.bat.svn-base b/lame-3.97/.svn/text-base/lame.bat.svn-base new file mode 100644 index 0000000..88c8aa6 --- /dev/null +++ b/lame-3.97/.svn/text-base/lame.bat.svn-base @@ -0,0 +1,41 @@ +@echo off +rem --------------------------------------------- +rem PURPOSE: +rem - put this Batch-Command on your Desktop, +rem so you can drag and drop wave files on it +rem and LAME will encode them to mp3 format. +rem - put this Batch-Command in a place mentioned +rem in your PATH environment, start the DOS-BOX +rem and change to a directory where your wave +rem files are located. the following line will +rem encode all your wave files to mp3 +rem "lame.bat *.wav" +rem --------------------------------------------- +rem C2000 Robert Hegemann +rem --------------------------------------------- +rem please set LAME and LAMEOPTS +rem LAME - where the executeable is +rem OPTS - options you like LAME to use + + set LAME=lame.exe + set OPTS=--preset cd + +rem --------------------------------------------- + + set thecmd=%LAME% %OPTS% + lfnfor on +:processArgs + if "%1"=="" goto endmark + for %%f in (%1) do %thecmd% "%%f" + if errorlevel 1 goto errormark + shift + goto processArgs +:errormark + echo. + echo. + echo ERROR processing %1 + echo. +:endmark +rem +rem finished +rem diff --git a/lame-3.97/.svn/text-base/lame.spec.in.svn-base b/lame-3.97/.svn/text-base/lame.spec.in.svn-base new file mode 100644 index 0000000..0b56f7d --- /dev/null +++ b/lame-3.97/.svn/text-base/lame.spec.in.svn-base @@ -0,0 +1,186 @@ +%define name @PACKAGE@ +%define ver @VERSION@ +%define rel 1 +%define prefix %{_usr} +%define docdir %{_defaultdocdir} + +Summary : LAME Ain't an MP3 Encoder... but it's the best. +Summary(fr) : LAME n'est pas un encodeur MP3 ;-> +Name: %{name} +Version: %{ver} +Release: %{rel} +Copyright: LGPL +Vendor: The LAME Project +Packager: Yosi Markovich <yosim@bigfoot.com> +URL: http://www.mp3dev.org/mp3 +Group: Applications/Multimedia +Source: ftp://lame.sourceforge.net/pub/lame/src/%{name}-%{version}.tar.bz2 +BuildRoot: %{_tmppath}/%{name}-root +Requires: ncurses >= 5.0 +BuildRequires: gcc3 = 3.0.1, /usr/bin/find, ncurses-devel +Provides: mp3encoder + +%description +LAME is an educational tool to be used for learning about MP3 encoding. The +goal of the LAME project is to use the open source model to improve the +psycho acoustics, noise shaping and speed of MP3. + +%description -l fr +LAME est un outil d'enseignement pour l'apprentissage de l'encodage MP3. +Le but du projet LAME est d'utiliser un mod�le "open source" afin +d'am�liorer la qualit� et la vitesse du MP3. + + + +%package devel +Summary: Shared and static libraries for LAME. +Group: Development/Libraries +Requires: %{name} = %{version} + +%description devel +LAME is an educational tool to be used for learning about MP3 encoding. +This package contains both the shared and the static libraries from the +LAME project. + +You will also need to install the main lame package in order to install +these libraries. + +%prep -q +%setup -q + +%build + +# Optimize the mother-fucker to the bone +export CC_OPTS="-O3 -march=i386 -mcpu=i686 -fomit-frame-pointer -funroll-loops -ffast-math -finline-functions -Wall -pedantic" + +%ifarch i686 + export CC_OPTS="-O3 -fomit-frame-pointer -mcpu=i686 -march=i686 -malign-functions=4 -funroll-loops -fexpensive-optimizations -fschedule-insns2 -Wall -mfancy-math-387 -pipe" +%endif +%ifarch athlon + export CC_OPTS="-O3 -fomit-frame-pointer -fno-strength-reduce -mcpu=athlon -march=athlon -malign-functions=4 -funroll-loops -fexpensive-optimizations -fschedule-insns2 -Wall -mfancy-math-387 -pipe" +%endif + +# Vorbis makes the build fail for now. . . +rm -f config.cache + +%configure \ + --enable-nasm \ + --enable-decoder \ + --without-vorbis \ + --enable-analyzer=no \ + --enable-brhist \ + --disable-debug + +make CC="gcc3" CFLAGS="${CC_OPTS}" test + +%install +rm -rf %{buildroot} +find . -name CVS | xargs rm -rf +mkdir -p %{buildroot}%{_bindir} +%makeinstall + +ln -sf lame/lame.h %{buildroot}%{_includedir}/lame.h +install -D -m 644 doc/man/lame.1 %{buildroot}%{_mandir}/man/lame.1 + +# move back lame.h +mv %{buildroot}%{_includedir}/lame/lame.h %{buildroot}%{_includedir}/lame.h +find doc/html -name "Makefile*" | xargs rm -f + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%clean +rm -rf %{buildroot} + +%files +%defattr (-,root,root) +%doc COPYING ChangeLog README TODO USAGE doc/html +%doc doc/html +%{_bindir}/lame +%{_libdir}/libmp3lame.so.* +%{_mandir}/man1/lame.1* + +%files devel +%defattr (-, root, root) +%doc API HACKING STYLEGUIDE +%{_libdir}/libmp3lame.a +%{_libdir}/libmp3lame.la +%{_libdir}/libmp3lame.so +%{_includedir}/lame +%{_includedir}/lame.h + +%changelog + +* Sat May 11 2002 Yosi Markovich <yosim@bigfoot.com> +- Fixes to the spec file that include: +- Making sure the compiler is gcc version 3.0.1. Lame compiled with a version + greater than 3.0.1 is broken. +- Optimization flags for i686 will use i686 for march and mcpu, and not + athlon. +- Fix the dates in this Changelog section. +- Various small fixes merged from Matthias Saou. +- Thanks Fred Maciel <fred-m@crl.hitachi.co.jp> for his useful comments. + +- +* Tue Jan 22 2002 Mark Taylor <mt@mp3dev.org> +- replaced lame.spec.in with Yosi's version. Merged some stuff from + the prevous lame.spec.in file, and appended changelog below. + +* Tue Jan 22 2002 Yosi Markovich <yosim@bigfoot.com> +- Rewrote lame.spec.in to create a correct and nice spec file. + imho, this spec file is not good for anyone who wants to build + daily cvs snapshots. Closes bug #495975 + +* Tue Dec 11 2001 Yosi Markovich <yosim@bigfoot.com> +- Shamelessly stole Matthias Saou's excellent spec file to create daily + CVS snapshots of Lame. Other than that, nothing is new. + +* Tue Oct 23 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Fixed the %pre and %post that should have been %post and %postun, silly me! +- Removed -malign-double (it's evil, Yosi told me and I tested, brrr ;-)). +- Now build with gcc3, VBR encoding gets a hell of a boost, impressive! + I recommend you now use "lame --r3mix", it's the best. +- Tried to re-enable vorbis, but it's a no-go. + +* Thu Jul 26 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Build with kgcc to have VBR working. + +* Wed Jul 25 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Update to 3.89beta : Must be built with a non-patched version of nasm + to work! + +* Mon May 7 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Rebuilt for Red Hat 7.1. +- Disabled the vorbis support since it fails to build with it. +- Added a big optimisation section, thanks to Yosi Markovich + <senna@camelot.com> for this and other pointers. + +* Sun Feb 11 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Split the package, there is now a -devel + +* Thu Nov 26 2000 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Initial RPM release for RedHat 7.0 from scratch + +* Wed Nov 21 2000 Eric Lassauge <lassauge@mail.dotcom.fr> +- Updated and corrected RPM to 3.89beta. +- Added french translations + +* Sat Aug 04 2000 Markus Linnala �maage@cs.tut.fi� +- Build and include docs and libs correctly +- Build extra programs + +* Tue Aug 01 2000 Stuart Young �cefiar1@optushome.com.au� +- Updated RPM to 3.85beta. +- Modified spec file (merged George and Keitaro's specs) +- Added reasonable info to the specs to reflect the maintainer +- Renamed lame.spec (plain spec is bad, mmkay?). + +* Fri Jun 30 2000 Keitaro Yosimura �ramsy@linux.or.jp� +- Updated RPM to 3.84alpha. +- Better attempt at an RPM, independant of 3.83 release. +- (This is all surmise as there was no changelog). + +* Thu May 30 2000 Georges Seguin �crow@planete.net� +- First RPM build around 3.83beta + + diff --git a/lame-3.97/.svn/text-base/lame_projects_vc6.dsp.svn-base b/lame-3.97/.svn/text-base/lame_projects_vc6.dsp.svn-base new file mode 100644 index 0000000..8104dae --- /dev/null +++ b/lame-3.97/.svn/text-base/lame_projects_vc6.dsp.svn-base @@ -0,0 +1,78 @@ +# Microsoft Developer Studio Project File - Name="lame_projects" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Generic Project" 0x010a + +CFG=lame_projects - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "lame_projects_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "lame_projects_vc6.mak" CFG="lame_projects - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "lame_projects - Win32 Release" (based on "Win32 (x86) Generic Project") +!MESSAGE "lame_projects - Win32 Debug" (based on "Win32 (x86) Generic Project") +!MESSAGE "lame_projects - Win32 Release NASM" (based on "Win32 (x86) Generic Project") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +MTL=midl.exe + +!IF "$(CFG)" == "lame_projects - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "lame_projects - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "lame_projects - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "lame_projects___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "lame_projects___Win32_Release_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "lame_projects___Win32_Release_NASM" +# PROP Intermediate_Dir "lame_projects___Win32_Release_NASM" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "lame_projects - Win32 Release" +# Name "lame_projects - Win32 Debug" +# Name "lame_projects - Win32 Release NASM" +# End Target +# End Project diff --git a/lame-3.97/.svn/text-base/lame_vc6.dsw.svn-base b/lame-3.97/.svn/text-base/lame_vc6.dsw.svn-base new file mode 100644 index 0000000..3d8a8f4 --- /dev/null +++ b/lame-3.97/.svn/text-base/lame_vc6.dsw.svn-base @@ -0,0 +1,167 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "ADbg"=.\ACM\ADbg\ADbg.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "LameMp3EncDll"=.\Dll\LameDll_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "MP3x"=.\frontend\mp3x_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency +}}} + +############################################################################### + +Project: "lame"=.\frontend\lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "lameACM"=.\ACM\lameACM_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name ADbg + End Project Dependency + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name tinyxml + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "lame_projects"=.\lame_projects_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name LameMp3EncDll + End Project Dependency + Begin Project Dependency + Project_Dep_Name lameACM + End Project Dependency + Begin Project Dependency + Project_Dep_Name MP3x + End Project Dependency +}}} + +############################################################################### + +Project: "libmp3lame"=.\libmp3lame\libmp3lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "mpglib"=.\mpglib\mpglib_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "tinyxml"=.\ACM\tinyxml\tinyxml.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/.svn/text-base/lame_vc7.sln.svn-base b/lame-3.97/.svn/text-base/lame_vc7.sln.svn-base new file mode 100644 index 0000000..e7bea0b --- /dev/null +++ b/lame-3.97/.svn/text-base/lame_vc7.sln.svn-base @@ -0,0 +1,176 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp3lame", "libmp3lame\libmp3lame_vc7.vcproj", "{E316772F-5D8F-4F2A-8F71-094C3E859D34}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lame", "frontend\lame_vc7.vcproj", "{AFE3050F-F561-46A8-AEE0-0C6475EB38D7}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LameMp3EncDll", "Dll\LameDll_vc7.vcproj", "{67C2FFBA-87F8-48B4-8273-D414AF94760F}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpglib", "mpglib\mpglib_vc7.vcproj", "{5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MP3x", "frontend\mp3x_vc7.vcproj", "{EB18C685-0074-4892-840C-E5248B16CFFD}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml", "ACM\tinyxml\tinyxml_vc7.vcproj", "{9A0946C9-F019-4643-A53A-259BF980F5F9}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ADbg", "ACM\ADbg\ADbg_vc7.vcproj", "{4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lameACM", "ACM\lameACM_vc7.vcproj", "{88A0CD70-E576-456B-9C13-1D6AD838B87E}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + {9A0946C9-F019-4643-A53A-259BF980F5F9} = {9A0946C9-F019-4643-A53A-259BF980F5F9} + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1} = {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + ACM debug = ACM debug + ACM release = ACM release + ACM release Nasm = ACM release Nasm + dll debug = dll debug + dll release = dll release + dll release Nasm = dll release Nasm + LAME debug = LAME debug + LAME release = LAME release + LAME release Nasm = LAME release Nasm + Mp3X debug = Mp3X debug + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM debug.ActiveCfg = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM debug.Build.0 = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release.ActiveCfg = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release Nasm.ActiveCfg = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release Nasm.Build.0 = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll debug.ActiveCfg = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll debug.Build.0 = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release.ActiveCfg = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release Nasm.ActiveCfg = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release Nasm.Build.0 = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME debug.ActiveCfg = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME debug.Build.0 = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release.ActiveCfg = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release Nasm.ActiveCfg = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release Nasm.Build.0 = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Mp3X debug.ActiveCfg = Debug GTK|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Mp3X debug.Build.0 = Debug GTK|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.ACM debug.ActiveCfg = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.ACM release.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.ACM release Nasm.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.dll debug.ActiveCfg = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.dll release.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.dll release Nasm.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME debug.ActiveCfg = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME debug.Build.0 = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release.Build.0 = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release Nasm.ActiveCfg = Release NASM|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release Nasm.Build.0 = Release NASM|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.Mp3X debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.ACM debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.ACM release.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.ACM release Nasm.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll debug.Build.0 = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release.Build.0 = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release Nasm.ActiveCfg = Release NASM|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release Nasm.Build.0 = Release NASM|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.LAME debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.LAME release.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.Mp3X debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.ACM debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.ACM release.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.ACM release Nasm.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll debug.Build.0 = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release Nasm.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release Nasm.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME debug.Build.0 = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release Nasm.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release Nasm.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.Mp3X debug.ActiveCfg = Debug GTK|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.Mp3X debug.Build.0 = Debug GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.ACM debug.ActiveCfg = Debug GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.ACM release.ActiveCfg = Release GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.ACM release Nasm.ActiveCfg = Release GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.dll debug.ActiveCfg = dll debug|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.dll release.ActiveCfg = dll release|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.dll release Nasm.ActiveCfg = dll release Nasm|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.LAME debug.ActiveCfg = LAME debug|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.LAME release.ActiveCfg = LAME release|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.Mp3X debug.ActiveCfg = Debug GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.Mp3X debug.Build.0 = Debug GTK|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM debug.ActiveCfg = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM debug.Build.0 = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release.Build.0 = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release Nasm.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release Nasm.Build.0 = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.dll debug.ActiveCfg = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.dll release.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.dll release Nasm.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.LAME debug.ActiveCfg = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.LAME release.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.Mp3X debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM debug.Build.0 = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release.Build.0 = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release Nasm.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release Nasm.Build.0 = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.dll debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.dll release.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.dll release Nasm.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.LAME debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.LAME release.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.Mp3X debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM debug.Build.0 = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release.Build.0 = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release Nasm.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release Nasm.Build.0 = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.dll debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.dll release.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.dll release Nasm.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.LAME debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.LAME release.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.Mp3X debug.ActiveCfg = Debug|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/lame-3.97/.svn/text-base/ltconfig.svn-base b/lame-3.97/.svn/text-base/ltconfig.svn-base new file mode 100644 index 0000000..bad848d --- /dev/null +++ b/lame-3.97/.svn/text-base/ltconfig.svn-base @@ -0,0 +1,3096 @@ +#! /bin/sh + +# ltconfig - Create a system-specific libtool. +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A lot of this script is taken from autoconf-2.10. + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} +echo=echo +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec "$SHELL" "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit 0 +fi + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) PATH_SEPARATOR=';' ;; + *) PATH_SEPARATOR=':' ;; + esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || + test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running ltconfig again with it. + ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf "%s\n"' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # Cool, printf works + : + elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# The name of this program. +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + +# Constants: +PROGRAM=ltconfig +PACKAGE=libtool +VERSION=1.3.4-freebsd-ports +TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)" +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' +rm="rm -f" + +help="Try \`$progname --help' for more information." + +# Global variables: +default_ofile=libtool +can_build_shared=yes +enable_shared=yes +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +enable_static=yes +enable_fast_install=yes +install_ltlibs=yes +release_suffix=yes +enable_dlopen=unknown +enable_win32_dll=no +ltmain= +silent= +srcdir= +ac_config_guess= +ac_config_sub= +host= +nonopt= +ofile="$default_ofile" +verify_host=yes +with_gcc=no +with_gnu_ld=no +need_locks=yes +ac_ext=c +objext=o +libext=a +exeext= +cache_file= + +old_AR="$AR" +old_CC="$CC" +old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" +old_LDFLAGS="$LDFLAGS" +old_LD="$LD" +old_LN_S="$LN_S" +old_LIBS="$LIBS" +old_NM="$NM" +old_RANLIB="$RANLIB" +old_DLLTOOL="$DLLTOOL" +old_OBJDUMP="$OBJDUMP" +old_AS="$AS" + +# Parse the command line options. +args= +prev= +for option +do + case "$option" in + -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + eval "$prev=\$option" + prev= + continue + fi + + case "$option" in + --help) cat <<EOM +Usage: $progname [OPTION]... [HOST [LTMAIN]] + +Generate a system-specific libtool script. + + --build no-op to keep compatability with configure scripts generated for 1.4 + --debug enable verbose shell tracing + --disable-shared do not build shared libraries + --disable-static do not build static libraries + --disable-fast-install do not optimize for fast installation + --disable-ltlibs don't install the .la archives + --release-ignore don't use -release specification + --release-suffix use -release suffix for all files + --enable-dlopen enable dlopen support + --enable-win32-dll enable building dlls on win32 hosts + --help display this help and exit + --no-verify do not verify that HOST is a valid host type +-o, --output=FILE specify the output file [default=$default_ofile] + --quiet same as \`--silent' + --silent do not print informational messages + --srcdir=DIR find \`config.guess' in DIR + --version output version information and exit + --with-gcc assume that the GNU C compiler will be used + --with-gnu-ld assume that the C compiler uses the GNU linker + --disable-lock disable file locking + --cache-file=FILE configure cache file + +LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program +that provides basic libtool functionality. + +HOST is the canonical host system name [default=guessed]. +EOM + exit 0 + ;; + + --build=*) ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --disable-shared) enable_shared=no ;; + + --disable-static) enable_static=no ;; + + --disable-fast-install) enable_fast_install=no ;; + + --disable-ltlibs) install_ltlibs=no ;; + + --release-ignore) release_suffix=no ;; + + --release-suffix) release_suffix=all ;; + + --enable-dlopen) enable_dlopen=yes ;; + + --enable-win32-dll) enable_win32_dll=yes ;; + + --quiet | --silent) silent=yes ;; + + --srcdir) prev=srcdir ;; + --srcdir=*) srcdir="$optarg" ;; + + --no-verify) verify_host=no ;; + + --output | -o) prev=ofile ;; + --output=*) ofile="$optarg" ;; + + --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;; + + --with-gcc) with_gcc=yes ;; + --with-gnu-ld) with_gnu_ld=yes ;; + + --disable-lock) need_locks=no ;; + + --cache-file=*) cache_file="$optarg" ;; + + -*) + echo "$progname: unrecognized option \`$option'" 1>&2 + echo "$help" 1>&2 + exit 1 + ;; + + *) + if test -z "$ltmain"; then + ltmain="$option" + elif test -z "$host"; then +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then +# echo "$progname: warning \`$option' is not a valid host type" 1>&2 +# fi + host="$option" + else + echo "$progname: too many arguments" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac +done + +if test -z "$ltmain"; then + echo "$progname: you must specify a LTMAIN file" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +if test ! -f "$ltmain"; then + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +# Quote any args containing shell metacharacters. +ltconfig_args= +for arg +do + case "$arg" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ltconfig_args="$ltconfig_args '$arg'" ;; + *) ltconfig_args="$ltconfig_args $arg" ;; + esac +done + +# A relevant subset of AC_INIT. + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 5 compiler messages saved in config.log +# 6 checking for... messages and results +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>>./config.log + +# 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 "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi +if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi + +if test -n "$cache_file" && test -r "$cache_file"; then + echo "loading cache $cache_file within ltconfig" + . $cache_file +fi + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + +if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to LTMAIN. + srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. +fi + +trap "$rm conftest*; exit 1" 1 2 15 +if test "$verify_host" = yes; then + # Check for config.guess and config.sub. + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/config.guess; then + ac_aux_dir=$ac_dir + break + fi + done + if test -z "$ac_aux_dir"; then + echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 + echo "$help" 1>&2 + exit 1 + fi + ac_config_guess=$ac_aux_dir/config.guess + ac_config_sub=$ac_aux_dir/config.sub + + # Make sure we can run config.sub. + if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : + else + echo "$progname: cannot run $ac_config_sub" 1>&2 + echo "$help" 1>&2 + exit 1 + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 + + host_alias=$host + case "$host_alias" in + "") + if host_alias=`$SHELL $ac_config_guess`; then : + else + echo "$progname: cannot guess host type; you must specify one" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac + host=`$SHELL $ac_config_sub $host_alias` + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 + +elif test -z "$host"; then + echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 + echo "$help" 1>&2 + exit 1 +else + host_alias=$host +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +case "$host_os" in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR cru $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar + +# Set a sane default for `OBJDUMP'. +test -z "$OBJDUMP" && OBJDUMP=objdump + +# If RANLIB is not set, then run the test. +if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then + RANLIB="ranlib" + result="ranlib" + break + fi + done + IFS="$save_ifs" + + echo "$ac_t$result" 1>&6 +fi + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$AS" && AS=as + +# Check to see if we are using GCC. +if test "$with_gcc" != yes || test -z "$CC"; then + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then + CC="gcc" + break + fi + done + IFS="$save_ifs" + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + fi + + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/cc || test -f $dir/cc$ac_exeext; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue + fi + CC="cc" + break + fi + done + IFS="$save_ifs" + if test $cc_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same name, so the bogon will be chosen + # first if we set CC to just the name; use the full file name. + shift + set dummy "$dir/cc" "$@" + shift + CC="$@" + fi + fi + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$CC"; then + echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 + exit 1 + fi + fi + + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:581: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <<EOF +#ifdef __GNUC__ + yes; +#endif +EOF + if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c + echo "$ac_t$with_gcc" 1>&6 +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo $ac_n "checking for object suffix... $ac_c" 1>&6 +$rm conftest* +echo 'int i = 1;' > conftest.c +echo "$progname:603: checking for object suffix" >& 5 +if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; + *) objext=`echo $ac_file | sed -e s/conftest.//` ;; + esac + done +else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* +echo "$ac_t$objext" 1>&6 + +echo $ac_n "checking for executable suffix... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_exeext="no" + $rm conftest* + echo 'main () { return 0; }' > conftest.c + echo "$progname:629: checking for executable suffix" >& 5 + if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c | *.err | *.$objext ) ;; + *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; + esac + done + else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* +fi +if test "X$ac_cv_exeext" = Xno; then + exeext="" +else + exeext="$ac_cv_exeext" +fi +echo "$ac_t$ac_cv_exeext" 1>&6 + +echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 +pic_flag= +special_shlib_compile_flags= +wl= +link_static_flag= +no_builtin_flag= + +if test "$with_gcc" = yes; then + wl='-Wl,' + link_static_flag='-static' + + case "$host_os" in + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + link_static_flag="$link_static_flag ${wl}-lC" + ;; + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + sysv4*MP*) + if test -d /usr/nec; then + pic_flag=-Kconform_pic + fi + ;; + *) + pic_flag='-fPIC' + ;; + esac +else + # PORTME Check for PIC flags for the system compiler. + case "$host_os" in + aix3* | aix4*) + # All AIX code is PIC. + link_static_flag='-bnso -bI:/lib/syscalls.exp' + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + link_static_flag="${wl}-a ${wl}archive" + pic_flag='+Z' + ;; + + irix5* | irix6*) + wl='-Wl,' + link_static_flag='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' + ;; + + sco3.2v5*) + pic_flag='-Kpic' + link_static_flag='-dn' + special_shlib_compile_flags='-belf' + ;; + + solaris*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + sunos4*) + pic_flag='-PIC' + link_static_flag='-Bstatic' + wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + sysv4*MP*) + if test -d /usr/nec ;then + pic_flag='-Kconform_pic' + link_static_flag='-Bstatic' + fi + ;; + *) + can_build_shared=no + ;; + esac +fi + +if test -n "$pic_flag"; then + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + case "$host_os" in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + ;; + *) + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + ;; + esac + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + echo "$ac_t"none 1>&6 +fi + +# Check to see if options -o and -c are simultaneously supported by compiler +echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +$rm conftest* +echo "int some_variable = 0;" > conftest.c +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.o" +echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 +if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + echo "$ac_t"no 1>&6 + compiler_c_o=no + else + echo "$ac_t"yes 1>&6 + compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + compiler_c_o=no + echo "$ac_t"no 1>&6 +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 +if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_o_lo=no + else + echo "$ac_t"yes 1>&6 + compiler_o_lo=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_o_lo=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$ac_t$hard_links" 1>&6 + $rm conftest* + if test "$hard_links" = no; then + echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 + need_locks=warn + fi +else + need_locks=no +fi + +if test "$with_gcc" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" + echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_rtti_exceptions=no + else + echo "$ac_t"yes 1>&6 + compiler_rtti_exceptions=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_rtti_exceptions=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi + +fi + +# Check for any special shared library compilation flags. +if test -n "$special_shlib_compile_flags"; then + echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : + else + echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 + can_build_shared=no + fi +fi + +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 +else + echo "$ac_t"none 1>&6 + link_static_flag= +fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* + +if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 + $rm conftest.dat + if ln -s X conftest.dat 2>/dev/null; then + $rm conftest.dat + LN_S="ln -sf" + else + LN_S=ln + fi + if test "$LN_S" = "ln -sf"; then + echo "$ac_t"yes 1>&6 + else + echo "$ac_t"no 1>&6 + fi +fi + +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:991: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:1015: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:1018: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + fi + + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + +# See if the linker supports building shared libraries. +echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. + +case "$host_os" in +cygwin* | mingw*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$with_gcc" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case "$host_os" in + aix3* | aix4*) + # On AIX, the GNU linker is very broken + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' + + archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ + _lt_hint=1; + for symbol in `cat $export_symbols`; do + echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; + _lt_hint=`expr 1 + \$_lt_hint`; + done~ + test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' + + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' + # can we support soname and/or expsyms with a.out? -oliva + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$host_os" in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4*) + hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_libdir_separator=':' + if test "$with_gcc" = yes; then + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + shared_flag='-shared' + else + shared_flag='${wl}-bM:SRE' + hardcode_direct=yes + fi + allow_undefined_flag=' ${wl}-berok' + archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' + archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' + case "$host_os" in aix4.[01]|aix4.[01].*) + # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on + always_export_symbols=yes ;; + esac + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs' + fix_srcfile_path='`cygpath -w $srcfile`' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case "$host_os" in + hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF + fi + hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + + osf3*) + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # As osf3* with the addition of the -msym flag + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case "$host_os" in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + unixware7*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$ac_t$ld_shlibs" 1>&6 +test "$ld_shlibs" = no && can_build_shared=no + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + break + else + NM=${NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + $rm conftest* + cat > conftest.c <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + echo "$progname:1635: checking if global_symbol_pipe works" >&5 + if { (eval echo $progname:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:1639: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' + + cat <<EOF >> conftest.c +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$objext conftstm.$objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + global_symbol_pipe= + fi +done +if test "$pipe_works" = yes; then + echo "${ac_t}ok" 1>&6 +else + echo "${ac_t}failed" 1>&6 +fi + +if test -z "$global_symbol_pipe"; then + global_symbol_to_cdecl= +fi + +# Check hardcoding attributes. +echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$ac_t$hardcode_action" 1>&6 + + +reload_flag= +reload_cmds='$LD$reload_flag -o $output$reload_objs' +echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 +# PORTME Some linkers may need a different reload flag. +reload_flag='-r' +echo "$ac_t$reload_flag" 1>&6 +test -n "$reload_flag" && reload_flag=" $reload_flag" + +# PORTME Fill in your ld.so characteristics +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib" +file_magic_cmd= +file_magic_test_file= +deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [regex]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. +echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 +case "$host_os" in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4*) + version_type=linux + # AIX has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + # We preserve .a as extension for shared libraries though AIX4.2 + # and later linker supports .so + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + deplibs_check_method=pass_all + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw*) + version_type=windows + need_version=no + need_lib_prefix=no + if test "$with_gcc" = yes; then + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + else + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + fi + dynamic_linker='Win32 ld.exe' + deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + file_magic_cmd='${OBJDUMP} -f' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case "$version_type" in + freebsd-elf*) + deplibs_check_method='file_magic (ELF [0-9][0-9]*-bit [LM]SB shared object|current ar archive)' + ;; + freebsd-*) + deplibs_check_method='file_magic FreeBSD.* shared library' + ;; + esac + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so.*` + if test "$release_suffix" = all; then + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}.so' + fi + need_version=no + need_lib_prefix=no + finish_cmds='/usr/bin/env OBJFORMAT="'"$objformat"'" /sbin/ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + case "$host_os" in + freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' + case "$host_os" in + irix5*) + libsuff= shlibsuff= + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case "$LD" in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib${libsuff}/libc.so*` + deplibs_check_method='pass_all' + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in + powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi + ;; + +netbsd*) + version_type=sunos + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method='file_magic COFF format alpha shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + deplibs_check_method='pass_all' + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" + file_magic_cmd=/usr/bin/file + file_magic_test_file=/lib/libc.so + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case "$host_vendor" in + ncr) + deplibs_check_method='pass_all' + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$ac_t$dynamic_linker" 1>&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + +# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in +# configure.in, otherwise build static only libraries. +case "$host_os" in +cygwin* | mingw* | os2*) + if test x$can_build_shared = xyes; then + test x$enable_win32_dll = xno && can_build_shared=no + echo "checking if package supports dlls... $can_build_shared" 1>&6 + fi +;; +esac + +if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then + case "$deplibs_check_method" in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac +fi + +echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + test "$enable_shared" = yes && enable_static=no + ;; +esac + +echo "$ac_t$enable_shared" 1>&6 + +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes + +echo "checking whether to build static libraries... $enable_static" 1>&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else +if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then + lt_cv_dlopen=no lt_cv_dlopen_libs= +echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "$progname:2212: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2220 "ltconfig" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen(); + +int main() { +dlopen() +; return 0; } +EOF +if { (eval echo $progname:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +echo "$progname:2252: checking for dlopen" >&5 +if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2257 "ltconfig" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +dlopen(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_dlopen=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 +echo "$progname:2299: checking for dld_link in -ldld" >&5 +ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2307 "ltconfig" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link(); + +int main() { +dld_link() +; return 0; } +EOF +if { (eval echo $progname:2320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +echo "$progname:2339: checking for shl_load" >&5 +if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2344 "ltconfig" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +shl_load(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_shl_load=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "$progname:2387: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2395 "ltconfig" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load(); + +int main() { +shl_load() +; return 0; } +EOF +if { (eval echo $progname:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +fi + + +fi + + +fi + + +fi + + +fi + +fi + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + fi + + case "$lt_cv_dlopen" in + dlopen) +for ac_hdr in dlfcn.h; do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "$progname:2452: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2457 "ltconfig" +#include <$ac_hdr> +int fnord = 0; +EOF +ac_try="$ac_compile >/dev/null 2>conftest.out" +{ (eval echo $progname:2462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +done + + if test "x$ac_cv_header_dlfcn_h" = xyes; then + CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + fi + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2490: checking whether a program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self=cross + else + cat > conftest.c <<EOF +#line 2498 "ltconfig" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self" 1>&6 + + if test "$lt_cv_dlopen_self" = yes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2563: checking whether a statically linked program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self_static=cross + else + cat > conftest.c <<EOF +#line 2571 "ltconfig" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self_static=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self_static=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 +fi + ;; + esac + + case "$lt_cv_dlopen_self" in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case "$lt_cv_dlopen_self_static" in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" +if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ltecho="$CONFIG_SHELL \$0 --fallback-echo" +fi +LTSHELL="$SHELL" + +LTCONFIG_VERSION="$VERSION" + +# Only quote variables if we're using ltmain.sh. +case "$ltmain" in +*.sh) + # Now quote all the things that may contain metacharacters. + for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ + AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ + file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case "$ltecho" in + *'\$0 --fallback-echo"') + ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + + trap "$rm \"$ofile\"; exit 1" 1 2 15 + echo "creating $ofile" + $rm "$ofile" + cat <<EOF > "$ofile" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +### BEGIN LIBTOOL CONFIG +EOF + cfgfile="$ofile" + ;; + +*) + # Double-quote the variables that need it (for aesthetics). + for var in old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do + eval "$var=\\\"\$var\\\"" + done + + # Just create a config file. + cfgfile="$ofile.cfg" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + echo "creating $cfgfile" + $rm "$cfgfile" + cat <<EOF > "$cfgfile" +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +EOF + ;; +esac + +cat <<EOF >> "$cfgfile" +# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ +# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ +# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ +# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ +# $0$ltconfig_args +# +# Compiler and other test output produced by $progname, useful for +# debugging $progname, is in ./config.log if it exists. + +# The version of $progname that generated this script. +LTCONFIG_VERSION=$LTCONFIG_VERSION + +# Shell to use when invoking shell scripts. +SHELL=$LTSHELL + +# Whether to waste disk space. +install_ltlibs=$install_ltlibs + +# What to do with -release. +# yes - only for shared archive +# no - ingnore +# all - for all archives +release_suffix=$release_suffix + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$ltecho + +# The archiver. +AR=$AR + +# The default C compiler. +CC=$CC + +# The linker used to build libraries. +LD=$LD + +# Whether we need hard or soft links. +LN_S=$LN_S + +# A BSD-compatible nm program. +NM=$NM + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$reload_flag +reload_cmds=$reload_cmds + +# How to pass a linker flag through the compiler. +wl=$wl + +# Object file suffix (normally "o"). +objext="$objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$pic_flag + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$RANLIB +old_archive_cmds=$old_archive_cmds +old_postinstall_cmds=$old_postinstall_cmds +old_postuninstall_cmds=$old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$old_archive_from_new_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$archive_cmds +archive_expsym_cmds=$archive_expsym_cmds +postinstall_cmds=$postinstall_cmds +postuninstall_cmds=$postuninstall_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$global_symbol_to_cdecl + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$include_expsyms + +EOF + +case "$ltmain" in +*.sh) + echo '### END LIBTOOL CONFIG' >> "$ofile" + echo >> "$ofile" + case "$host_os" in + aix3*) + cat <<\EOF >> "$ofile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # Append the ltmain.sh script. + sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + + chmod +x "$ofile" + ;; + +*) + # Compile the libtool program. + echo "FIXME: would compile $ltmain" + ;; +esac + +test -n "$cache_file" || exit 0 + +# AC_CACHE_SAVE +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --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 | + case `(ac_space=' '; set | grep ac_space) 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 + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lame-3.97/.svn/text-base/ltmain.sh.svn-base b/lame-3.97/.svn/text-base/ltmain.sh.svn-base new file mode 100644 index 0000000..eecedf2 --- /dev/null +++ b/lame-3.97/.svn/text-base/ltmain.sh.svn-base @@ -0,0 +1,6500 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.18 +TIMESTAMP=" (1.1220.2.245 2005/05/16 08:55:27)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit $EXIT_SUCCESS +fi + +default_mode= +help="Try \`$progname --help' for more information." +magic="%%%MAGIC variable%%%" +mkdir="mkdir" +mv="mv -f" +rm="rm -f" + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' +# test EBCDIC or ASCII +case `echo A|tr A '\301'` in + A) # EBCDIC based system + SP2NL="tr '\100' '\n'" + NL2SP="tr '\r\n' '\100\100'" + ;; + *) # Assume ASCII based system + SP2NL="tr '\040' '\012'" + NL2SP="tr '\015\012' '\040\040'" + ;; +esac + +# 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). +# We save the old values to restore during execute mode. +if test "${LC_ALL+set}" = set; then + save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL +fi +if test "${LANG+set}" = set; then + save_LANG="$LANG"; LANG=C; export LANG +fi + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + $echo "$modename: not configured to build any kind of library" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +quote_scanset='[[~#^*{};<>?'"'"' ]' + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$my_xdir"; then + exit $status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) prevopt="--tag" prev=tag ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case "$arg_mode" in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qlibobj="\"$qlibobj\"" ;; + esac + if test "X$libobj" != "X$qlibobj"; then + $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + exit $EXIT_FAILURE + fi + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T <<EOF +# $libobj - a libtool object file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +EOF + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + if test ! -d "${xdir}$objdir"; then + $show "$mkdir ${xdir}$objdir" + $run $mkdir ${xdir}$objdir + status=$? + if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then + exit $status + fi + fi + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + $run $rm "$lobj" "$output_obj" + + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit $EXIT_FAILURE + fi + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <<EOF +pic_object='$objdir/$objname' + +EOF + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + else + # No PIC object so indicate it doesn't exist in the libtool + # object file. + test -z "$run" && cat >> ${libobj}T <<EOF +pic_object=none + +EOF + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$obj" "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit $EXIT_FAILURE + fi + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <<EOF +# Name of the non-PIC object. +non_pic_object='$objname' + +EOF + else + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <<EOF +# Name of the non-PIC object. +non_pic_object=none + +EOF + fi + + $run $mv "${libobj}T" "${libobj}" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + + exit $EXIT_SUCCESS + ;; + + # libtool link mode + link | relink) + modename="$modename: link" + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args="$nonopt" + base_compile="$nonopt $@" + compile_command="$nonopt" + finalize_command="$nonopt" + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -all-static | -static) + if test "X$arg" = "X-all-static"; then + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=darwin_framework + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit $EXIT_FAILURE + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5* ) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c <<EOF + int main() { return 0; } +EOF + $rm conftest + $LTCC -o conftest conftest.c $deplibs + if test "$?" -eq 0 ; then + ldd_output=`ldd conftest` + for i in $deplibs; do + name="`expr $i : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test "$name" != "" && test "$name" -ne "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + newdeplibs="$newdeplibs $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval \\$echo \"$libname_spec\"` + deplib_matches=`eval \\$echo \"$library_names_spec\"` + set dummy $deplib_matches + deplib_match=$2 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes + $echo + $echo "*** Warning: dynamic linker does not accept needed library $i." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which I believe you do not have" + $echo "*** because a test_compile did reveal that the linker did not use it for" + $echo "*** its dynamic dependency list that programs get resolved with at runtime." + fi + fi + else + newdeplibs="$newdeplibs $i" + fi + done + else + # Error occurred in the first compile. Let's try to salvage + # the situation: Compile a separate program for each library. + for i in $deplibs; do + name="`expr $i : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test "$name" != "" && test "$name" != "0"; then + $rm conftest + $LTCC -o conftest conftest.c $i + # Did it work? + if test "$?" -eq 0 ; then + ldd_output=`ldd conftest` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + newdeplibs="$newdeplibs $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval \\$echo \"$libname_spec\"` + deplib_matches=`eval \\$echo \"$library_names_spec\"` + set dummy $deplib_matches + deplib_match=$2 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes + $echo + $echo "*** Warning: dynamic linker does not accept needed library $i." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because a test_compile did reveal that the linker did not use this one" + $echo "*** as a dynamic dependency that programs can get resolved with at runtime." + fi + fi + else + droppeddeps=yes + $echo + $echo "*** Warning! Library $i is needed by this library but I was not able to" + $echo "*** make it link in! You will probably need to install it or some" + $echo "*** library that it depends on before this library will be fully" + $echo "*** functional. Installing it before continuing would be even better." + fi + else + newdeplibs="$newdeplibs $i" + fi + done + fi + ;; + file_magic*) + set dummy $deplibs_check_method + file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test "$name" != "" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 </dev/null >/dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + cwrappersource=`$echo ${objdir}/lt-${outputname}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <<EOF + +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname + Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP + + The $output program cannot be directly executed until all the libtool + libraries that it depends on are installed. + + This wrapper executable should never be moved out of the build directory. + If it is, it will not operate correctly. + + Currently, it simply execs the wrapper *script* "/bin/sh $output", + but could eventually absorb all of the scripts functionality and + exec $objdir/$outputname directly. +*/ +EOF + cat >> $cwrappersource<<"EOF" +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <malloc.h> +#include <stdarg.h> +#include <assert.h> + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +#define DIR_SEPARATOR '/' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +#define HAVE_DOS_BASED_FILE_SYSTEM +#ifndef DIR_SEPARATOR_2 +#define DIR_SEPARATOR_2 '\\' +#endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <<EOF + newargz[0] = "$SHELL"; +EOF + + cat >> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; +EOF + + cat >> $cwrappersource <<EOF + execv("$SHELL",newargz); +EOF + + cat >> $cwrappersource <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask + else + umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "----------------------------------------------------------------------" + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "----------------------------------------------------------------------" + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to <bug-libtool@gnu.org>." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lame-3.97/.svn/text-base/missing.svn-base b/lame-3.97/.svn/text-base/missing.svn-base new file mode 100644 index 0000000..894e786 --- /dev/null +++ b/lame-3.97/.svn/text-base/missing.svn-base @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-06-08.21 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to <bug-automake@gnu.org>." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/.svn/text-base/mkinstalldirs.svn-base b/lame-3.97/.svn/text-base/mkinstalldirs.svn-base new file mode 100644 index 0000000..259dbfc --- /dev/null +++ b/lame-3.97/.svn/text-base/mkinstalldirs.svn-base @@ -0,0 +1,158 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2005-06-29.22 + +# Original author: Noah Friedman <friedman@prep.ai.mit.edu> +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to <bug-automake@gnu.org> or send patches to +# <automake-patches@gnu.org>. + +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to <bug-automake@gnu.org>." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/.svn/text-base/testcase.mp3.svn-base b/lame-3.97/.svn/text-base/testcase.mp3.svn-base new file mode 100644 index 0000000..11335b1 --- /dev/null +++ b/lame-3.97/.svn/text-base/testcase.mp3.svn-base Binary files differ diff --git a/lame-3.97/.svn/text-base/testcase.wav.svn-base b/lame-3.97/.svn/text-base/testcase.wav.svn-base new file mode 100644 index 0000000..7c835f7 --- /dev/null +++ b/lame-3.97/.svn/text-base/testcase.wav.svn-base Binary files differ diff --git a/lame-3.97/ACM/.svn/all-wcprops b/lame-3.97/ACM/.svn/all-wcprops new file mode 100644 index 0000000..e740320 --- /dev/null +++ b/lame-3.97/ACM/.svn/all-wcprops @@ -0,0 +1,137 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM +END +DecodeStream.cpp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/DecodeStream.cpp +END +lameACM_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/lameACM_vc7.vcproj +END +ACM.cpp +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/ACM.cpp +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM/Makefile.in +END +DecodeStream.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/DecodeStream.h +END +ACM.h +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/ACM.h +END +lame.ico +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/lame.ico +END +AEncodeProperties.cpp +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/AEncodeProperties.cpp +END +lameACM.def +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/lameACM.def +END +ACMStream.cpp +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/ACMStream.cpp +END +lame_acm.xml +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/lame_acm.xml +END +AEncodeProperties.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/AEncodeProperties.h +END +ACMStream.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/ACMStream.h +END +lameACM_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/lameACM_vc6.dsp +END +acm.rc +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/acm.rc +END +TODO +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/TODO +END +main.cpp +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/main.cpp +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/Makefile.am +END +LameACM.inf +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/LameACM.inf +END +readme.txt +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/readme.txt +END +adebug.h +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/adebug.h +END +resource.h +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/resource.h +END diff --git a/lame-3.97/ACM/.svn/entries b/lame-3.97/ACM/.svn/entries new file mode 100644 index 0000000..d5bf571 --- /dev/null +++ b/lame-3.97/ACM/.svn/entries @@ -0,0 +1,785 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/ACM +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +DecodeStream.cpp +file + + + + +2012-01-23T14:07:04.880494Z +1f1be8a0626175f062c9718bc7c47a12 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +6092 + +lameACM_vc7.vcproj +file + + + + +2012-01-23T14:07:04.879526Z +fe3672da765743ad44ae3b023fee9bd2 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +41087 + +ACM.cpp +file + + + + +2012-01-23T14:07:04.880494Z +65e38942c8027e7228ddc11cc21e7e5f +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +49202 + +Makefile.in +file + + + + +2012-01-23T14:07:04.881494Z +0dbc24026f56ced04a16dcf4aaa2f4ce +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +15388 + +DecodeStream.h +file + + + + +2012-01-23T14:07:04.881494Z +9f72cffec4381354f7a85a684284e745 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2307 + +ACM.h +file + + + + +2012-01-23T14:07:04.881494Z +12ad6a5aaf6615c9c04220625d7137ab +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3414 + +lame.ico +file + + + + +2012-01-23T14:07:04.885493Z +257e9a326dfe69772d0bccf6a6476ae3 +2007-12-20T22:24:54.554753Z +238 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +2238 + +AEncodeProperties.cpp +file + + + + +2012-01-23T14:07:04.885493Z +c8a70d972d6c9ed932bf6d8566f1d467 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +58442 + +lameACM.def +file + + + + +2012-01-23T14:07:04.885493Z +672859a8e871c07068277b6af4447970 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +960 + +ACMStream.cpp +file + + + + +2012-01-23T14:07:04.886500Z +a07a6f35947607e2ad8503e39ca24b7b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +12140 + +lame_acm.xml +file + + + + +2012-01-23T14:07:04.886500Z +ad0424a9efcd133d470f1f6e4319fbe9 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +401 + +ADbg +dir + +AEncodeProperties.h +file + + + + +2012-01-23T14:07:04.887493Z +11264c29ca1fc60b0ac6952a08d6727f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +13673 + +ddk +dir + +lameACM_vc6.dsp +file + + + + +2012-01-23T14:07:04.887493Z +fbb8d68de601e58335da7d13b0bc9d42 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9462 + +ACMStream.h +file + + + + +2012-01-23T14:07:04.887493Z +3558a143691ef1ef2f08eb76e4cbb76c +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2354 + +acm.rc +file + + + + +2012-01-23T14:07:04.888490Z +d6f0579197f18638a15cbeabf326ce74 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +7067 + +tinyxml +dir + +TODO +file + + + + +2012-01-23T14:07:04.888490Z +b056064ecff5f72b23c16db8411f4288 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +383 + +main.cpp +file + + + + +2012-01-23T14:07:04.889491Z +96250ef78513b9884146a8746d366c50 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4781 + +Makefile.am +file + + + + +2012-01-23T14:07:04.889491Z +365c37d809c7db488d9dee4dab2f1e73 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +453 + +LameACM.inf +file + + + + +2012-01-23T14:07:04.889491Z +0dc28e55c1893c9fff2228f58b68a5f9 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3042 + +readme.txt +file + + + + +2012-01-23T14:07:04.889491Z +44ebb9e6d4ca02f0faf549a5df91fbb3 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +852 + +adebug.h +file + + + + +2012-01-23T14:07:04.890494Z +8755c3b0f0b2081debcf4d2ed7b4d640 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1252 + +resource.h +file + + + + +2012-01-23T14:07:04.890494Z +c2daa11e91e201d9066d72e1541f6e21 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1604 + diff --git a/lame-3.97/ACM/.svn/prop-base/ACM.h.svn-base b/lame-3.97/ACM/.svn/prop-base/ACM.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/ACM.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/.svn/prop-base/ACMStream.h.svn-base b/lame-3.97/ACM/.svn/prop-base/ACMStream.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/ACMStream.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/.svn/prop-base/AEncodeProperties.h.svn-base b/lame-3.97/ACM/.svn/prop-base/AEncodeProperties.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/AEncodeProperties.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/.svn/prop-base/DecodeStream.h.svn-base b/lame-3.97/ACM/.svn/prop-base/DecodeStream.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/DecodeStream.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/ACM/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/.svn/prop-base/TODO.svn-base b/lame-3.97/ACM/.svn/prop-base/TODO.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/TODO.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/ACM/.svn/prop-base/adebug.h.svn-base b/lame-3.97/ACM/.svn/prop-base/adebug.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/adebug.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/.svn/prop-base/lame.ico.svn-base b/lame-3.97/ACM/.svn/prop-base/lame.ico.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/lame.ico.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lame-3.97/ACM/.svn/prop-base/lame_acm.xml.svn-base b/lame-3.97/ACM/.svn/prop-base/lame_acm.xml.svn-base new file mode 100644 index 0000000..94feee6 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/lame_acm.xml.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 8 +text/xml +END diff --git a/lame-3.97/ACM/.svn/prop-base/readme.txt.svn-base b/lame-3.97/ACM/.svn/prop-base/readme.txt.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/readme.txt.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/ACM/.svn/prop-base/resource.h.svn-base b/lame-3.97/ACM/.svn/prop-base/resource.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/.svn/prop-base/resource.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/.svn/text-base/ACM.cpp.svn-base b/lame-3.97/ACM/.svn/text-base/ACM.cpp.svn-base new file mode 100644 index 0000000..a8b312a --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/ACM.cpp.svn-base @@ -0,0 +1,1421 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACM.cpp,v 1.18 2005/03/13 14:43:21 robert Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <algorithm> + +#include <windows.h> +#include <windowsx.h> +#include <intshcut.h> + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include <assert.h> + +#include <version.h> + +#include "adebug.h" +#include "resource.h" +#include "ACMStream.h" + +#ifdef ENABLE_DECODING +#include "DecodeStream.h" +#endif // ENABLE_DECODING + +#include "ACM.h" + +#ifndef IDC_HAND +#define IDC_HAND MAKEINTRESOURCE(32649) +#endif // IDC_HAND + +char ACM::VersionString[20]; + +const char ACM_VERSION[] = "0.9.0"; + +#ifdef WIN32 +// +// 32-bit versions +// +#if (WINVER >= 0x0400) + #define VERSION_ACM_DRIVER MAKE_ACM_VERSION(4, 0, 0) +#else +#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(3, 51, 0) +#endif +#define VERSION_MSACM MAKE_ACM_VERSION(3, 50, 0) + +#else +// +// 16-bit versions +// +#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(1, 0, 0) +#define VERSION_MSACM MAKE_ACM_VERSION(2, 1, 0) + +#endif + +#define PERSONAL_FORMAT WAVE_FORMAT_MPEGLAYER3 +#define SIZE_FORMAT_STRUCT sizeof(MPEGLAYER3WAVEFORMAT) +//#define SIZE_FORMAT_STRUCT 0 + +//static const char channel_mode[][13] = {"mono","stereo","joint stereo","dual channel"}; +static const char channel_mode[][13] = {"mono","stereo"}; +static const unsigned int mpeg1_freq[] = {48000,44100,32000}; +static const unsigned int mpeg2_freq[] = {24000,22050,16000,12000,11025,8000}; +static const unsigned int mpeg1_bitrate[] = {320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32}; +static const unsigned int mpeg2_bitrate[] = {160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8}; + +#define SIZE_CHANNEL_MODE (sizeof(channel_mode) / (sizeof(char) * 13)) +#define SIZE_FREQ_MPEG1 (sizeof(mpeg1_freq) / sizeof(unsigned int)) +#define SIZE_FREQ_MPEG2 (sizeof(mpeg2_freq) / sizeof(unsigned int)) +#define SIZE_BITRATE_MPEG1 (sizeof(mpeg1_bitrate) / sizeof(unsigned int)) +#define SIZE_BITRATE_MPEG2 (sizeof(mpeg2_bitrate) / sizeof(unsigned int)) + +static const int FORMAT_TAG_MAX_NB = 2; // PCM and PERSONAL (mandatory to have at least PCM and your format) +static const int FILTER_TAG_MAX_NB = 0; // this is a codec, not a filter + +// number of supported PCM formats +static const int FORMAT_MAX_NB_PCM = + 2 * // number of PCM channel mode (stereo/mono) + (SIZE_FREQ_MPEG1 + // number of MPEG 1 sampling freq + SIZE_FREQ_MPEG2); // number of MPEG 2 sampling freq + +////////////////////////////////////////////////////////////////////// +// +////////////////////////////////////////////////////////////////////// +bool bitrate_item::operator<(const bitrate_item & other_bitrate) const +{ + return (other_bitrate.frequency < frequency || + (other_bitrate.frequency == frequency && + (other_bitrate.bitrate < bitrate || + (other_bitrate.bitrate == bitrate && + (other_bitrate.channels < channels))))); +} + +////////////////////////////////////////////////////////////////////// +// Configuration Dialog +////////////////////////////////////////////////////////////////////// +/* +static CALLBACK ConfigProc( + HWND hwndDlg, // handle to dialog box +UINT uMsg, // message +WPARAM wParam, // first message parameter +LPARAM lParam // second message parameter +) +{ + BOOL bResult; + + switch (uMsg) { + case WM_COMMAND: + UINT command; + command = GET_WM_COMMAND_ID(wParam, lParam); + if (IDOK == command) + { + EndDialog(hwndDlg, (IDOK == command)); + } else if (IDCANCEL == command) + { + EndDialog(hwndDlg, (IDOK == command)); + } + bResult = FALSE; + break; + default: + bResult = FALSE; // will be treated by DefWindowProc +} + return bResult; +} + + +inline DWORD ACM::Configure(HWND hParentWindow, LPDRVCONFIGINFO pConfig) +{ + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : Configure (Parent Window = 0x%08X)",hParentWindow); + + DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_CONFIG), hParentWindow, ::ConfigProc , (LPARAM)this); + + return DRVCNF_OK; // Can also return + // DRVCNF_CANCEL + // and DRVCNF_RESTART +} +*/ +////////////////////////////////////////////////////////////////////// +// About Dialog +////////////////////////////////////////////////////////////////////// + +static BOOL CALLBACK AboutProc( + HWND hwndDlg, // handle to dialog box +UINT uMsg, // message +WPARAM wParam, // first message parameter +LPARAM lParam // second message parameter +) +{ + static HBRUSH hBrushStatic = NULL; +// static LOGFONT lf; // structure for font information +// static HFONT hfnt; + static HCURSOR hcOverCursor = NULL; + BOOL bResult; + + switch (uMsg) { + case WM_INITDIALOG: + char tmp[150]; + wsprintf(tmp,"LAME MP3 codec v%s", ACM::GetVersionString()); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_ABOUT_TITLE), tmp); + +/* + ::GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf); + lf.lfUnderline = TRUE; + + hfnt = ::CreateFontIndirect(&lf); + + ::SendMessage(::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), WM_SETFONT, (WPARAM) hfnt, TRUE); +* / + hBrushStatic = ::CreateSolidBrush(::GetSysColor (COLOR_BTNFACE)); +*/ hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_HAND); + if (hcOverCursor == NULL) + hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_CROSS); + + bResult = TRUE; + break; +/* + case WM_CTLCOLORSTATIC: + /// \todo only if there are URLs + if ((HWND)lParam == ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL)) + { + ::SetTextColor((HDC)wParam, ::GetSysColor (COLOR_HIGHLIGHT)); + ::SetBkColor((HDC)wParam, ::GetSysColor (COLOR_BTNFACE)); + + return (LRESULT) hBrushStatic; + } + else + return (LRESULT) NULL; +*/ + case WM_MOUSEMOVE: + { + POINT pnt; + ::GetCursorPos(&pnt); + + RECT rect; + ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect); + + if ( ::PtInRect(&rect,pnt) ) + { + ::SetCursor(hcOverCursor); + } + + + } + break; + + case WM_LBUTTONUP: + { + POINT pnt; + ::GetCursorPos(&pnt); + + RECT rect; + ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect); + + TCHAR Url[200]; + bool bUrl = false; + if (::PtInRect(&rect,pnt)) + { + wsprintf(Url,LAME_URL); + bUrl = true; + } + + if (bUrl) + { + LPSTR tmpStr; + HRESULT hresult = ::TranslateURL(Url, TRANSLATEURL_FL_GUESS_PROTOCOL|TRANSLATEURL_FL_GUESS_PROTOCOL, &tmpStr); + if (hresult == S_OK) + ::ShellExecute(hwndDlg,"open",tmpStr,NULL,"",SW_SHOWMAXIMIZED ); + else if (hresult == S_FALSE) + ::ShellExecute(hwndDlg,"open",Url,NULL,"",SW_SHOWMAXIMIZED ); + } + + } + break; + + case WM_COMMAND: + UINT command; + command = GET_WM_COMMAND_ID(wParam, lParam); + if (IDOK == command) + { + EndDialog(hwndDlg, TRUE); + } + bResult = FALSE; + break; + + case IDC_STATIC_ABOUT_URL: + break; + default: + bResult = FALSE; // will be treated by DefWindowProc +} + return bResult; +} + +inline DWORD ACM::About(HWND hParentWindow) +{ + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : About (Parent Window = 0x%08X)",hParentWindow); + + DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_ABOUT), hParentWindow, ::AboutProc , (LPARAM)this); + + return DRVCNF_OK; // Can also return +// DRVCNF_CANCEL +// and DRVCNF_RESTART +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +ACM::ACM( HMODULE hModule ) + :my_hModule(hModule), + my_hIcon(NULL), + my_debug(ADbg(DEBUG_LEVEL_CREATION)), + my_EncodingProperties(hModule) +{ + my_EncodingProperties.ParamsRestore(); + + /// \todo get the debug level from the registry + unsigned char DebugFileName[512]; + + char tmp[128]; + wsprintf(tmp,"LAMEacm 0x%08X",this); + my_debug.setPrefix(tmp); /// \todo get it from the registry + my_debug.setIncludeTime(true); /// \todo get it from the registry + + // Check in the registry if we have to Output Debug information + DebugFileName[0] = '\0'; + + HKEY OssKey; + if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { + DWORD DataType; + DWORD DebugFileNameSize = 512; + if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { + if (DataType == REG_SZ) { + my_debug.setUseFile(true); + my_debug.setDebugFile((char *)DebugFileName); + my_debug.OutPut("Debug file is %s",(char *)DebugFileName); + } + } + } + +#if LAME_ALPHA_VERSION > 0 + wsprintf(VersionString,"%s - %d.%d (alpha %d)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION,LAME_PATCH_VERSION); +#elif LAME_BETA_VERSION > 0 + wsprintf(VersionString,"%s - %d.%d (beta %d)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION, LAME_PATCH_VERSION); +#else + wsprintf(VersionString,"%s - %d.%d (stable)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION); +#endif + + BuildBitrateTable(); + + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "New ACM Creation (0x%08X)",this); +} + +ACM::~ACM() +{ +// not used, it's done automatically when closing the driver if (my_hIcon != NULL) +// CloseHandle(my_hIcon); + + bitrate_table.clear(); + + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM Deleted (0x%08X)",this); +} + +////////////////////////////////////////////////////////////////////// +// Main message handler +////////////////////////////////////////////////////////////////////// + +LONG ACM::DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2) +{ + DWORD dwRes = 0L; + +//my_debug.OutPut(DEBUG_LEVEL_MSG, "message 0x%08X for ThisACM 0x%08X", msg, this); + +switch (msg) { + case DRV_INSTALL: + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_INSTALL"); + // Sent when the driver is installed. + dwRes = DRVCNF_OK; // Can also return + break; // DRVCNF_CANCEL + // and DRV_RESTART + + case DRV_REMOVE: + // Sent when the driver is removed. + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_REMOVE"); + dwRes = 1L; // return value ignored + break; + + case DRV_QUERYCONFIGURE: + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_QUERYCONFIGURE"); + // Sent to determine if the driver can be + // configured. + dwRes = 1L; // Zero indicates configuration + break; // NOT supported + + case DRV_CONFIGURE: + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_CONFIGURE"); + // Sent to display the configuration + // dialog box for the driver. +// dwRes = Configure( (HWND) lParam1, (LPDRVCONFIGINFO) lParam2 ); + if (my_EncodingProperties.Config(my_hModule, (HWND) lParam1)) + { + dwRes = DRVCNF_OK; // Can also return + // DRVCNF_CANCEL + // and DRVCNF_RESTART + } else { + dwRes = DRVCNF_CANCEL; + } + break; + + /************************************** + // ACM additional messages + ***************************************/ + + case ACMDM_DRIVER_ABOUT: + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_ABOUT"); + + dwRes = About( (HWND) lParam1 ); + + break; + + case ACMDM_DRIVER_DETAILS: // acmDriverDetails + // Fill-in general informations about the driver/codec + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_DETAILS"); + + dwRes = OnDriverDetails(hdrvr, (LPACMDRIVERDETAILS) lParam1); + + break; + + case ACMDM_FORMATTAG_DETAILS: // acmFormatTagDetails + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMATTAG_DETAILS"); + + dwRes = OnFormatTagDetails((LPACMFORMATTAGDETAILS) lParam1, lParam2); + + break; + + case ACMDM_FORMAT_DETAILS: // acmFormatDetails + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_DETAILS"); + + dwRes = OnFormatDetails((LPACMFORMATDETAILS) lParam1, lParam2); + + break; + + case ACMDM_FORMAT_SUGGEST: // acmFormatSuggest + // Sent to determine if the driver can be + // configured. + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_SUGGEST"); + dwRes = OnFormatSuggest((LPACMDRVFORMATSUGGEST) lParam1); + break; + + /************************************** + // ACM stream messages + ***************************************/ + + case ACMDM_STREAM_OPEN: + // Sent to determine if the driver can be + // configured. + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_OPEN"); + dwRes = OnStreamOpen((LPACMDRVSTREAMINSTANCE) lParam1); + break; + + case ACMDM_STREAM_SIZE: + // returns a recommended size for a source + // or destination buffer on an ACM stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_SIZE"); + dwRes = OnStreamSize((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMSIZE)lParam2); + break; + + case ACMDM_STREAM_PREPARE: + // prepares an ACMSTREAMHEADER structure for + // an ACM stream conversion + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_PREPARE"); + dwRes = OnStreamPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2); + break; + + case ACMDM_STREAM_UNPREPARE: + // cleans up the preparation performed by + // the ACMDM_STREAM_PREPARE message for an ACM stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_UNPREPARE"); + dwRes = OnStreamUnPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2); + break; + + case ACMDM_STREAM_CONVERT: + // perform a conversion on the specified conversion stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CONVERT"); + dwRes = OnStreamConvert((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMHEADER) lParam2); + + break; + + case ACMDM_STREAM_CLOSE: + // closes an ACM conversion stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CLOSE"); + dwRes = OnStreamClose((LPACMDRVSTREAMINSTANCE)lParam1); + break; + + /************************************** + // Unknown message + ***************************************/ + + default: + // Process any other messages. + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACM::DriverProc unknown message (0x%08X), lParam1 = 0x%08X, lParam2 = 0x%08X", msg, lParam1, lParam2); + return DefDriverProc ((DWORD)this, hdrvr, msg, lParam1, lParam2); + } + + return dwRes; +} + +////////////////////////////////////////////////////////////////////// +// Special message handlers +////////////////////////////////////////////////////////////////////// +/*! + Retreive the config details of this ACM driver + The index represent the specified format + + \param a_FormatDetails will be filled with all the corresponding data +*/ +inline DWORD ACM::OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILS a_Query = 0x%08X",a_Query); + switch (a_Query & ACM_FORMATDETAILSF_QUERYMASK) { + + // Fill-in the informations corresponding to the FormatDetails->dwFormatTagIndex + case ACM_FORMATDETAILSF_INDEX : + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_INDEX for index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); + if (a_FormatDetails->dwFormatTag == PERSONAL_FORMAT) { + if (a_FormatDetails->dwFormatIndex < GetNumberEncodingFormats()) { + LPWAVEFORMATEX WaveExt; + WaveExt = a_FormatDetails->pwfx; + + WaveExt->wFormatTag = PERSONAL_FORMAT; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + GetMP3FormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat); + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + Result = MMSYSERR_NOERROR; + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); + } + } + else if (a_FormatDetails->dwFormatTag == WAVE_FORMAT_PCM) { + if (a_FormatDetails->dwFormatIndex < FORMAT_MAX_NB_PCM) { + LPWAVEFORMATEX WaveExt; + WaveExt = a_FormatDetails->pwfx; + + WaveExt->wFormatTag = WAVE_FORMAT_PCM; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + GetPCMFormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat); + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + Result = MMSYSERR_NOERROR; + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); + } + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Unknown a_FormatDetails->dwFormatTag = 0x%08X",a_FormatDetails->dwFormatTag); + } + + case ACM_FORMATDETAILSF_FORMAT : + /// \todo we may output the corresponding strong (only for personal format) + LPWAVEFORMATEX WaveExt; + WaveExt = a_FormatDetails->pwfx; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_FORMAT : 0x%04X:%03d, format in : channels %d, sample rate %d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex, WaveExt->nChannels, WaveExt->nSamplesPerSec); + + Result = MMSYSERR_NOERROR; + break; + + default: + Result = ACMERR_NOTPOSSIBLE; + break; + } + + a_FormatDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + + return Result; +} + +/*! + Retreive the details of each known format by this ACM driver + The index represent the specified format (0 = MP3 / 1 = PCM) + + \param a_FormatTagDetails will be filled with all the corresponding data +*/ +inline DWORD ACM::OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query) +{ + DWORD Result; + DWORD the_format = WAVE_FORMAT_UNKNOWN; // the format to give details + + if (a_FormatTagDetails->cbStruct >= sizeof(*a_FormatTagDetails)) { + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACMDM_FORMATTAG_DETAILS, a_Query = 0x%08X",a_Query); + switch(a_Query & ACM_FORMATTAGDETAILSF_QUERYMASK) { + + case ACM_FORMATTAGDETAILSF_INDEX: + // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_INDEX for index %03d",a_FormatTagDetails->dwFormatTagIndex); + + if (a_FormatTagDetails->dwFormatTagIndex < FORMAT_TAG_MAX_NB) { + switch (a_FormatTagDetails->dwFormatTagIndex) + { + case 0: + the_format = PERSONAL_FORMAT; + break; + default : + the_format = WAVE_FORMAT_PCM; + break; + } + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_INDEX for unsupported index %03d",a_FormatTagDetails->dwFormatTagIndex); + Result = ACMERR_NOTPOSSIBLE; + } + break; + + case ACM_FORMATTAGDETAILSF_FORMATTAG: + // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex and hdrvr given + switch (a_FormatTagDetails->dwFormatTag) + { + case WAVE_FORMAT_PCM: + the_format = WAVE_FORMAT_PCM; + break; + case PERSONAL_FORMAT: + the_format = PERSONAL_FORMAT; + break; + default: + return (ACMERR_NOTPOSSIBLE); + } + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_FORMATTAG for index 0x%02X, cStandardFormats = %d",a_FormatTagDetails->dwFormatTagIndex,a_FormatTagDetails->cStandardFormats); + break; + case ACM_FORMATTAGDETAILSF_LARGESTSIZE: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_LARGESTSIZE not used"); + Result = 0L; + break; + default: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown Format tag query"); + Result = MMSYSERR_NOTSUPPORTED; + break; + } + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails the_format = 0x%08X",the_format); + switch(the_format) + { + case WAVE_FORMAT_PCM: + a_FormatTagDetails->dwFormatTag = WAVE_FORMAT_PCM; + a_FormatTagDetails->dwFormatTagIndex = 0; + a_FormatTagDetails->cbFormatSize = sizeof(PCMWAVEFORMAT); + /// \note 0 may mean we don't know how to decode + a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + a_FormatTagDetails->cStandardFormats = FORMAT_MAX_NB_PCM; + // should be filled by Windows a_FormatTagDetails->szFormatTag[0] = '\0'; + Result = MMSYSERR_NOERROR; + break; + case PERSONAL_FORMAT: + a_FormatTagDetails->dwFormatTag = PERSONAL_FORMAT; + a_FormatTagDetails->dwFormatTagIndex = 1; + a_FormatTagDetails->cbFormatSize = SIZE_FORMAT_STRUCT; + a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + a_FormatTagDetails->cStandardFormats = GetNumberEncodingFormats(); + lstrcpyW( a_FormatTagDetails->szFormatTag, L"Lame MP3" ); + Result = MMSYSERR_NOERROR; + break; + default: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown format 0x%08X",the_format); + return (ACMERR_NOTPOSSIBLE); + } + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails %d possibilities for format 0x%08X",a_FormatTagDetails->cStandardFormats,the_format); + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "a_FormatTagDetails->cbStruct < sizeof(*a_FormatDetails)"); + Result = ACMERR_NOTPOSSIBLE; + } + + return Result; +} + +/*! + Retreive the global details of this ACM driver + + \param a_DriverDetail will be filled with all the corresponding data +*/ +inline DWORD ACM::OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail) +{ + if (my_hIcon == NULL) + my_hIcon = LoadIcon(GetDriverModuleHandle(hdrvr), MAKEINTRESOURCE(IDI_ICON)); + a_DriverDetail->hicon = my_hIcon; + + a_DriverDetail->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC; + a_DriverDetail->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED; + + /// \note this is an explicit hack of the FhG values + /// \note later it could be a new value when the decoding is done + a_DriverDetail->wMid = MM_FRAUNHOFER_IIS; + a_DriverDetail->wPid = MM_FHGIIS_MPEGLAYER3; + + a_DriverDetail->vdwACM = VERSION_MSACM; + a_DriverDetail->vdwDriver = VERSION_ACM_DRIVER; + a_DriverDetail->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + a_DriverDetail->cFormatTags = FORMAT_TAG_MAX_NB; // 2 : MP3 and PCM +// a_DriverDetail->cFormatTags = 1; // 2 : MP3 and PCM + a_DriverDetail->cFilterTags = FILTER_TAG_MAX_NB; + + lstrcpyW( a_DriverDetail->szShortName, L"LAME MP3" ); + char tmpStr[128]; + wsprintf(tmpStr, "LAME MP3 Codec v%s", GetVersionString()); + int u = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, 0); + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, u); + lstrcpyW( a_DriverDetail->szCopyright, L"2002 Steve Lhomme" ); + lstrcpyW( a_DriverDetail->szLicensing, L"LGPL (see gnu.org)" ); + /// \todo update this part when the code changes + lstrcpyW( a_DriverDetail->szFeatures , L"only CBR implementation" ); + + return MMSYSERR_NOERROR; // Can also return DRVCNF_CANCEL +} + +/*! + Suggest an output format for the specified input format + + \param a_FormatSuggest will be filled with all the corresponding data +*/ +inline DWORD ACM::OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest) +{ + DWORD Result = MMSYSERR_NOTSUPPORTED; + DWORD fdwSuggest = (ACM_FORMATSUGGESTF_TYPEMASK & a_FormatSuggest->fdwSuggest); + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest %s%s%s%s (0x%08X)", + (fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS) ? "channels, ":"", + (fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC) ? "samples/sec, ":"", + (fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE) ? "bits/sample, ":"", + (fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG) ? "format, ":"", + fdwSuggest); + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for source format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", + a_FormatSuggest->pwfxSrc->wFormatTag, + a_FormatSuggest->pwfxSrc->nChannels, + a_FormatSuggest->pwfxSrc->nSamplesPerSec, + a_FormatSuggest->pwfxSrc->nAvgBytesPerSec, + a_FormatSuggest->pwfxSrc->nBlockAlign, + a_FormatSuggest->pwfxSrc->wBitsPerSample); + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", + a_FormatSuggest->pwfxDst->wFormatTag, + a_FormatSuggest->pwfxDst->nChannels, + a_FormatSuggest->pwfxDst->nSamplesPerSec, + a_FormatSuggest->pwfxDst->nAvgBytesPerSec, + a_FormatSuggest->pwfxDst->nBlockAlign, + a_FormatSuggest->pwfxDst->wBitsPerSample); + + switch (a_FormatSuggest->pwfxSrc->wFormatTag) + { + case WAVE_FORMAT_PCM: + /// \todo handle here the decoding ? + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PCM source"); + // + // if the destination format tag is restricted, verify that + // it is within our capabilities... + // + // this driver is able to decode to PCM + // + if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest) + { + if (PERSONAL_FORMAT != a_FormatSuggest->pwfxDst->wFormatTag) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wFormatTag = PERSONAL_FORMAT; + } + + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed A"); + // + // if the destination channel count is restricted, verify that + // it is within our capabilities... + // + // this driver is not able to change the number of channels + // + if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels; + } + + if (a_FormatSuggest->pwfxSrc->nChannels != 1 && a_FormatSuggest->pwfxSrc->nChannels != 2) + return MMSYSERR_INVALPARAM; + + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed B"); + // + // if the destination samples per second is restricted, verify + // that it is within our capabilities... + // + // this driver is not able to change the sample rate + // + if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec; + } + + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed C"); + // + // if the destination bits per sample is restricted, verify + // that it is within our capabilities... + // + // We prefer decoding to 16-bit PCM. + // + if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest) + { + if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) ) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wBitsPerSample = 16; + } + + // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN; + a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; + + a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nChannels * 64000 / 8; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed"); + Result = MMSYSERR_NOERROR; + + + break; + case PERSONAL_FORMAT: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PERSONAL source"); + // + // if the destination format tag is restricted, verify that + // it is within our capabilities... + // + // this driver is able to decode to PCM + // + if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest) + { + if (WAVE_FORMAT_PCM != a_FormatSuggest->pwfxDst->wFormatTag) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; + } + + + // + // if the destination channel count is restricted, verify that + // it is within our capabilities... + // + // this driver is not able to change the number of channels + // + if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels; + } + + + // + // if the destination samples per second is restricted, verify + // that it is within our capabilities... + // + // this driver is not able to change the sample rate + // + if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec; + } + + + // + // if the destination bits per sample is restricted, verify + // that it is within our capabilities... + // + // We prefer decoding to 16-bit PCM. + // + if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest) + { + if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) ) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wBitsPerSample = 16; + } + + // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN; + a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; + + /// \todo this value must be a correct one ! + a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nSamplesPerSec * a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed"); + Result = MMSYSERR_NOERROR; + + + break; + } + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", + a_FormatSuggest->pwfxDst->wFormatTag, + a_FormatSuggest->pwfxDst->nChannels, + a_FormatSuggest->pwfxDst->nSamplesPerSec, + a_FormatSuggest->pwfxDst->nAvgBytesPerSec, + a_FormatSuggest->pwfxDst->nBlockAlign, + a_FormatSuggest->pwfxDst->wBitsPerSample); + + return Result; +} + +/*! + Create a stream instance for decoding/encoding + + \param a_StreamInstance contain information about the stream desired +*/ +inline DWORD ACM::OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + // + // the most important condition to check before doing anything else + // is that this ACM driver can actually perform the conversion we are + // being opened for. this check should fail as quickly as possible + // if the conversion is not possible by this driver. + // + // it is VERY important to fail quickly so the ACM can attempt to + // find a driver that is suitable for the conversion. also note that + // the ACM may call this driver several times with slightly different + // format specifications before giving up. + // + // this driver first verifies that the source and destination formats + // are acceptable... + // + switch (a_StreamInstance->pwfxSrc->wFormatTag) + { + case WAVE_FORMAT_PCM: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM source (%05d samples %d channels %d bits/sample)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample); + if (a_StreamInstance->pwfxDst->wFormatTag == PERSONAL_FORMAT) + { + unsigned int OutputFrequency; + + /// \todo Smart mode + if (my_EncodingProperties.GetSmartOutputMode()) + OutputFrequency = ACMStream::GetOutputSampleRate(a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxDst->nAvgBytesPerSec,a_StreamInstance->pwfxDst->nChannels); + else + OutputFrequency = a_StreamInstance->pwfxSrc->nSamplesPerSec; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL output (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,8 * a_StreamInstance->pwfxDst->nAvgBytesPerSec); + + /// \todo add the possibility to have channel resampling (mono to stereo / stereo to mono) + /// \todo support resampling ? + /// \todo only do the test on OutputFrequency in "Smart Output" mode + if (a_StreamInstance->pwfxDst->nSamplesPerSec != OutputFrequency || +// a_StreamInstance->pwfxSrc->nSamplesPerSec != a_StreamInstance->pwfxDst->nSamplesPerSec || + a_StreamInstance->pwfxSrc->nChannels != a_StreamInstance->pwfxDst->nChannels || + a_StreamInstance->pwfxSrc->wBitsPerSample != 16) + { + Result = ACMERR_NOTPOSSIBLE; + } else { + if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0) + { + ACMStream * the_stream = ACMStream::Create(); + a_StreamInstance->dwInstance = (DWORD) the_stream; + + if (the_stream != NULL) + { + MPEGLAYER3WAVEFORMAT * casted = (MPEGLAYER3WAVEFORMAT *) a_StreamInstance->pwfxDst; + vbr_mode a_mode = (casted->fdwFlags-2 == 0)?vbr_abr:vbr_off; + if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec, + OutputFrequency, + a_StreamInstance->pwfxDst->nChannels, + a_StreamInstance->pwfxDst->nAvgBytesPerSec, + a_mode)) + Result = MMSYSERR_NOERROR; + else + ACMStream::Erase( the_stream ); + } + } + else + { + Result = MMSYSERR_NOERROR; + } + } + } + break; + case PERSONAL_FORMAT: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL source (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample,8 * a_StreamInstance->pwfxSrc->nAvgBytesPerSec); + if (a_StreamInstance->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) + { +#ifdef ENABLE_DECODING + if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0) + { + /// \todo create the decoding stream + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM output (%05d samples %d channels %d bits/sample %d B/s)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,a_StreamInstance->pwfxDst->nAvgBytesPerSec); + + DecodeStream * the_stream = DecodeStream::Create(); + a_StreamInstance->dwInstance = (DWORD) the_stream; + + if (the_stream != NULL) + { + if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec, + a_StreamInstance->pwfxDst->nChannels, + a_StreamInstance->pwfxDst->nAvgBytesPerSec, + a_StreamInstance->pwfxSrc->nAvgBytesPerSec)) + Result = MMSYSERR_NOERROR; + else + DecodeStream::Erase( the_stream ); + } + } + else + { + /// \todo decoding verification + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream is valid"); + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + break; + } + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream Result = %d",Result); + return Result; +} + +inline DWORD ACM::OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + switch (ACM_STREAMSIZEF_QUERYMASK & the_StreamSize->fdwSize) + { + case ACM_STREAMSIZEF_DESTINATION: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get source buffer size for destination size = %d",the_StreamSize->cbDstLength); + break; + case ACM_STREAMSIZEF_SOURCE: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get destination buffer size for source size = %d",the_StreamSize->cbSrcLength); + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength); + Result = MMSYSERR_NOERROR; + } + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength); + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + break; + default: + Result = MMSYSERR_INVALFLAG; + break; + } + + return Result; +} + +inline DWORD ACM::OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamClose the stream 0x%X",a_StreamInstance->dwInstance); + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream::Erase( (ACMStream *) a_StreamInstance->dwInstance ); + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream::Erase( (DecodeStream *) a_StreamInstance->dwInstance ); +#endif // ENABLE_DECODING + } + + // nothing to do yet + Result = MMSYSERR_NOERROR; + + return Result; +} + +inline DWORD ACM::OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, " prepare : Src : %d (0x%08X) / %d - Dst : %d (0x%08X) / %d" + , a_StreamHeader->cbSrcLength + , a_StreamHeader->pbSrc + , a_StreamHeader->cbSrcLengthUsed + , a_StreamHeader->cbDstLength + , a_StreamHeader->pbDst + , a_StreamHeader->cbDstLengthUsed + ); + + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance; + + if (the_stream->open(my_EncodingProperties)) + Result = MMSYSERR_NOERROR; + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance; + + if (the_stream->open()) + Result = MMSYSERR_NOERROR; +#endif // ENABLE_DECODING + } + + return Result; +} + +inline DWORD ACM::OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "unprepare : Src : %d / %d - Dst : %d / %d" + , a_StreamHeader->cbSrcLength + , a_StreamHeader->cbSrcLengthUsed + , a_StreamHeader->cbDstLength + , a_StreamHeader->cbDstLengthUsed + ); + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance; + DWORD OutputSize = a_StreamHeader->cbDstLength; + + if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength)) + { + a_StreamHeader->cbDstLengthUsed = OutputSize; + Result = MMSYSERR_NOERROR; + } + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance; + DWORD OutputSize = a_StreamHeader->cbDstLength; + + if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength)) + { + a_StreamHeader->cbDstLengthUsed = OutputSize; + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + + return Result; +} + +inline DWORD ACM::OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = PCM (encode)"); + + ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + if (the_stream->ConvertBuffer( a_StreamHeader )) + Result = MMSYSERR_NOERROR; + } + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag) + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = MP3 (decode)"); + +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + if (the_stream->ConvertBuffer( a_StreamHeader )) + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + else + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert unsupported conversion"); + + return Result; +} + + +void ACM::GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const +{ + int Block_size; + char temp[ACMFORMATDETAILS_FORMAT_CHARS]; + + + if (the_Index < bitrate_table.size()) + { + // the_Format.wBitsPerSample = 16; + the_Format.wBitsPerSample = 0; + + /// \todo handle more channel modes (mono, stereo, joint-stereo, dual-channel) + // the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE); + + the_Format.nBlockAlign = 1; + + the_Format.nSamplesPerSec = bitrate_table[the_Index].frequency; + the_Format.nAvgBytesPerSec = bitrate_table[the_Index].bitrate * 1000 / 8; + if (bitrate_table[the_Index].frequency >= mpeg1_freq[SIZE_FREQ_MPEG1-1]) + Block_size = 1152; + else + Block_size = 576; + + the_Format.nChannels = bitrate_table[the_Index].channels; + + the_Format.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); + MPEGLAYER3WAVEFORMAT * tmpFormat = (MPEGLAYER3WAVEFORMAT *) &the_Format; + tmpFormat->wID = 1; + // this is the only way I found to know if we do CBR or ABR + tmpFormat->fdwFlags = 2 + ((bitrate_table[the_Index].mode == vbr_abr)?0:2); + tmpFormat->nBlockSize = Block_size * the_Format.nAvgBytesPerSec / the_Format.nSamplesPerSec; + tmpFormat->nFramesPerBlock = 1; + tmpFormat->nCodecDelay = 0; // 0x0571 on FHG + + /// \todo : generate the string with the appropriate stereo mode + if (bitrate_table[the_Index].mode == vbr_abr) + wsprintfA( temp, "%d Hz, %d kbps ABR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo"); + else + wsprintfA( temp, "%d Hz, %d kbps CBR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo"); + + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, temp, -1, the_String, ACMFORMATDETAILS_FORMAT_CHARS); + } + } + +void ACM::GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const +{ + the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE); + the_Format.wBitsPerSample = 16; + the_Format.nBlockAlign = the_Format.nChannels * the_Format.wBitsPerSample / 8; + + + DWORD a_Channel_Independent = the_Index / SIZE_CHANNEL_MODE; + + // first MPEG1 frequencies + if (a_Channel_Independent < SIZE_FREQ_MPEG1) + { + the_Format.nSamplesPerSec = mpeg1_freq[a_Channel_Independent]; + } + else + { + a_Channel_Independent -= SIZE_FREQ_MPEG1; + the_Format.nSamplesPerSec = mpeg2_freq[a_Channel_Independent]; + } + + the_Format.nAvgBytesPerSec = the_Format.nSamplesPerSec * the_Format.nChannels * the_Format.wBitsPerSample / 8; +} + +DWORD ACM::GetNumberEncodingFormats() const +{ + return bitrate_table.size(); +} + +bool ACM::IsSmartOutput(const int frequency, const int bitrate, const int channels) const +{ + double compression_ratio = double(frequency * 2 * channels) / double(bitrate * 100); + +//my_debug.OutPut(DEBUG_LEVEL_FUNC_DEBUG, "compression_ratio %f, freq %d, bitrate %d, channels %d", compression_ratio, frequency, bitrate, channels); + + if(my_EncodingProperties.GetSmartOutputMode()) + return (compression_ratio <= my_EncodingProperties.GetSmartRatio()); + else return true; +} + +void ACM::BuildBitrateTable() +{ + my_debug.OutPut("entering BuildBitrateTable"); + + // fill the table + unsigned int channel,bitrate,freq; + + bitrate_table.clear(); + + // CBR bitrates + for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++) + { + // MPEG I + for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++) + { + for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG1;bitrate++) + { + + if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], mpeg1_bitrate[bitrate], channel+1)) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg1_freq[freq]; + bitrate_table_tmp->bitrate = mpeg1_bitrate[bitrate]; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_off; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + // MPEG II / II.5 + for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++) + { + for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG2;bitrate++) + { + if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], mpeg2_bitrate[bitrate], channel+1)) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg2_freq[freq]; + bitrate_table_tmp->bitrate = mpeg2_bitrate[bitrate]; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_abr; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + } + + if (my_EncodingProperties.GetAbrOutputMode()) + // ABR bitrates + { + for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++) + { + // MPEG I + for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++) + { + for (bitrate = my_EncodingProperties.GetAbrBitrateMax(); + bitrate >= my_EncodingProperties.GetAbrBitrateMin(); + bitrate -= my_EncodingProperties.GetAbrBitrateStep()) + { + if (bitrate >= mpeg1_bitrate[SIZE_BITRATE_MPEG1-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], bitrate, channel+1))) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg1_freq[freq]; + bitrate_table_tmp->bitrate = bitrate; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_abr; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + // MPEG II / II.5 + for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++) + { + for (bitrate = my_EncodingProperties.GetAbrBitrateMax(); + bitrate >= my_EncodingProperties.GetAbrBitrateMin(); + bitrate -= my_EncodingProperties.GetAbrBitrateStep()) + { + if (bitrate >= mpeg2_bitrate[SIZE_BITRATE_MPEG2-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], bitrate, channel+1))) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg2_freq[freq]; + bitrate_table_tmp->bitrate = bitrate; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_abr; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + } + } + + // sorting by frequency/bitrate/channel + std::sort(bitrate_table.begin(), bitrate_table.end()); + +/* { + // display test + int i=0; + for (i=0; i<bitrate_table.size();i++) + { + my_debug.OutPut("bitrate_table[%d].frequency = %d",i,bitrate_table[i].frequency); + my_debug.OutPut("bitrate_table[%d].bitrate = %d",i,bitrate_table[i].bitrate); + my_debug.OutPut("bitrate_table[%d].channel = %d",i,bitrate_table[i].channels); + my_debug.OutPut("bitrate_table[%d].ABR = %s\n",i,(bitrate_table[i].mode == vbr_abr)?"ABR":"CBR"); + } + }*/ + + my_debug.OutPut("leaving BuildBitrateTable"); +} diff --git a/lame-3.97/ACM/.svn/text-base/ACM.h.svn-base b/lame-3.97/ACM/.svn/text-base/ACM.h.svn-base new file mode 100644 index 0000000..32333ef --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/ACM.h.svn-base @@ -0,0 +1,100 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACM.h,v 1.7 2002/04/06 14:01:33 robux4 Exp $ +*/ + +#if !defined(_ACM_H__INCLUDED_) +#define _ACM_H__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include <vector> + +#include <windows.h> +#include <mmsystem.h> +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include "lame.h" + +#include "ADbg/ADbg.h" + +class AEncodeProperties; + +class bitrate_item { + public: + unsigned int frequency; + unsigned int bitrate; + unsigned int channels; + vbr_mode mode; + + bool operator<(const bitrate_item & bitrate) const; +}; + +class ACM +{ +public: + ACM( HMODULE hModule ); + virtual ~ACM(); + + LONG DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2); + + static const char * GetVersionString(void) {return VersionString;} + +protected: +// inline DWORD Configure( HWND hParentWindow, LPDRVCONFIGINFO pConfig ); + inline DWORD About( HWND hParentWindow ); + + inline DWORD OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail); + inline DWORD OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query); + inline DWORD OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query); + inline DWORD OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest); + inline DWORD OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance); + inline DWORD OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance); + inline DWORD OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize); + inline DWORD OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader); + inline DWORD OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader); + inline DWORD OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader); + + void GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const; + void GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const; + DWORD GetNumberEncodingFormats() const; + bool IsSmartOutput(const int frequency, const int bitrate, const int channels) const; + void BuildBitrateTable(); + + HMODULE my_hModule; + HICON my_hIcon; + ADbg my_debug; + AEncodeProperties my_EncodingProperties; + std::vector<bitrate_item> bitrate_table; + + static char VersionString[20]; +}; + +#endif // !defined(_ACM_H__INCLUDED_) + diff --git a/lame-3.97/ACM/.svn/text-base/ACMStream.cpp.svn-base b/lame-3.97/ACM/.svn/text-base/ACMStream.cpp.svn-base new file mode 100644 index 0000000..e2b012b --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/ACMStream.cpp.svn-base @@ -0,0 +1,367 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACMStream.cpp,v 1.10 2004/07/11 18:11:39 bouvigne Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <assert.h> +#include <windows.h> + +#include "adebug.h" + +#include "ACMStream.h" + +// static methods + +ACMStream * ACMStream::Create() +{ + ACMStream * Result; + + Result = new ACMStream; + + return Result; +} + +const bool ACMStream::Erase(const ACMStream * a_ACMStream) +{ + delete a_ACMStream; + return true; +} + +// class methods + +ACMStream::ACMStream() : + m_WorkingBufferUseSize(0), + gfp(NULL) +{ + /// \todo get the debug level from the registry +my_debug = new ADbg(DEBUG_LEVEL_CREATION); + if (my_debug != NULL) { + unsigned char DebugFileName[512]; + + my_debug->setPrefix("LAMEstream"); /// \todo get it from the registry +my_debug->setIncludeTime(true); /// \todo get it from the registry + +// Check in the registry if we have to Output Debug information +DebugFileName[0] = '\0'; + + HKEY OssKey; + if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { + DWORD DataType; + DWORD DebugFileNameSize = 512; + if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { + if (DataType == REG_SZ) { + my_debug->setUseFile(true); + my_debug->setDebugFile((char *)DebugFileName); + my_debug->OutPut("Debug file is %s",(char *)DebugFileName); + } + } + } + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Creation (0X%08X)",this); + } + else { + ADbg debug; + debug.OutPut("ACMStream::ACMACMStream : Impossible to create my_debug"); + } + +} + +ACMStream::~ACMStream() +{ + // release memory - encoding is finished + if (gfp) lame_close( gfp ); + + if (my_debug != NULL) + { + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Deletion (0X%08X)",this); + delete my_debug; + } +} + +bool ACMStream::init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode) +{ + bool bResult = false; + + my_SamplesPerSec = nSamplesPerSec; + my_OutBytesPerSec = nOutputSamplesPerSec; + my_Channels = nChannels; + my_AvgBytesPerSec = nAvgBytesPerSec; + my_VBRMode = mode; + + bResult = true; + + return bResult; + +} + +bool ACMStream::open(const AEncodeProperties & the_Properties) +{ + bool bResult = false; + + // Init the MP3 Stream + // Init the global flags structure + gfp = lame_init(); + + // Set input sample frequency + lame_set_in_samplerate( gfp, my_SamplesPerSec ); + + // Set output sample frequency + lame_set_out_samplerate( gfp, my_OutBytesPerSec ); + + lame_set_num_channels( gfp, my_Channels ); + if (my_Channels == 1) + lame_set_mode( gfp, MONO ); + else + lame_set_mode( gfp, (MPEG_mode_e)the_Properties.GetChannelModeValue()) ; /// \todo Get the mode from the default configuration + +// lame_set_VBR( gfp, vbr_off ); /// \note VBR not supported for the moment + lame_set_VBR( gfp, my_VBRMode ); /// \note VBR not supported for the moment + + if (my_VBRMode == vbr_abr) + { + lame_set_VBR_q( gfp, 1 ); + + lame_set_VBR_mean_bitrate_kbps( gfp, (my_AvgBytesPerSec * 8 + 500) / 1000 ); + + if (24000 > lame_get_in_samplerate( gfp )) + { + // For MPEG-II + lame_set_VBR_min_bitrate_kbps( gfp, 8); + + lame_set_VBR_max_bitrate_kbps( gfp, 160); + } + else + { + // For MPEG-I + lame_set_VBR_min_bitrate_kbps( gfp, 32); + + lame_set_VBR_max_bitrate_kbps( gfp, 320); + } + } + + // Set bitrate + lame_set_brate( gfp, my_AvgBytesPerSec * 8 / 1000 ); + + /// \todo Get the mode from the default configuration + // Set copyright flag? + lame_set_copyright( gfp, the_Properties.GetCopyrightMode()?1:0 ); + // Do we have to tag it as non original + lame_set_original( gfp, the_Properties.GetOriginalMode()?1:0 ); + // Add CRC? + lame_set_error_protection( gfp, the_Properties.GetCRCMode()?1:0 ); + // Set private bit? + lame_set_extension( gfp, the_Properties.GetPrivateMode()?1:0 ); + // INFO tag support not possible in ACM - it requires rewinding + // output stream to the beginning after encoding is finished. + lame_set_bWriteVbrTag( gfp, 0 ); + + if (0 == lame_init_params( gfp )) + { + //LAME encoding call will accept any number of samples. + if ( 0 == lame_get_version( gfp ) ) + { + // For MPEG-II, only 576 samples per frame per channel + my_SamplesPerBlock = 576 * lame_get_num_channels( gfp ); + } + else + { + // For MPEG-I, 1152 samples per frame per channel + my_SamplesPerBlock = 1152 * lame_get_num_channels( gfp ); + } + } + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "version =%d",lame_get_version( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Layer =3"); + switch ( lame_get_mode( gfp ) ) + { + case STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Stereo" ); break; + case JOINT_STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Joint-Stereo" ); break; + case DUAL_CHANNEL: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Forced Stereo" ); break; + case MONO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Mono" ); break; + case NOT_SET: /* FALLTROUGH */ + default: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Error (unknown)" ); break; + } + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "sampling frequency =%.1f kHz", lame_get_in_samplerate( gfp ) /1000.0 ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "bitrate =%d kbps", lame_get_brate( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Min bitrate =%d kbps", lame_get_VBR_min_bitrate_kbps( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Max bitrate =%d kbps", lame_get_VBR_max_bitrate_kbps( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Quality Setting =%d", lame_get_quality( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass frequency =%d", lame_get_lowpassfreq( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass width =%d", lame_get_lowpasswidth( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass frequency =%d", lame_get_highpassfreq( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass width =%d", lame_get_highpasswidth( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "No Short Blocks =%d", lame_get_no_short_blocks( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "de-emphasis =%d", lame_get_emphasis( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "private flag =%d", lame_get_extension( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "copyright flag =%d", lame_get_copyright( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "original flag =%d", lame_get_original( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "CRC =%s", lame_get_error_protection( gfp ) ? "on" : "off" ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Fast mode =%s", ( lame_get_quality( gfp ) )? "enabled" : "disabled" ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Force mid/side stereo =%s", ( lame_get_force_ms( gfp ) )?"enabled":"disabled" ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Padding Type =%d", lame_get_padding_type( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Disable Resorvoir =%d", lame_get_disable_reservoir( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "VBR =%s, VBR_q =%d, VBR method =", + ( lame_get_VBR( gfp ) !=vbr_off ) ? "enabled": "disabled", + lame_get_VBR_q( gfp ) ); + + switch ( lame_get_VBR( gfp ) ) + { + case vbr_off: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_off" ); break; + case vbr_mt : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mt" ); break; + case vbr_rh : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_rh" ); break; + case vbr_mtrh: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mtrh" ); break; + case vbr_abr: + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_abr (average bitrate %d kbps)", lame_get_VBR_mean_bitrate_kbps( gfp ) ); + break; + default: + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "error, unknown VBR setting"); + break; + } + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Write VBR Header =%s\n", ( lame_get_bWriteVbrTag( gfp ) ) ?"Yes":"No"); + +#ifdef FROM_DLL +beConfig.format.LHV1.dwReSampleRate = my_OutBytesPerSec; // force the user resampling +#endif // FROM_DLL + + bResult = true; + + return bResult; +} + +bool ACMStream::close(LPBYTE pOutputBuffer, DWORD *pOutputSize) +{ + +bool bResult = false; + + int nOutputSamples = 0; + + nOutputSamples = lame_encode_flush( gfp, pOutputBuffer, 0 ); + + if ( nOutputSamples < 0 ) + { + // BUFFER_TOO_SMALL +*pOutputSize = 0; + } + else +{ + *pOutputSize = nOutputSamples; + + bResult = true; + } + + // lame will be closed in destructor + //lame_close( gfp ); + + return bResult; +} + +DWORD ACMStream::GetOutputSizeForInput(const DWORD the_SrcLength) const +{ +/* double OutputInputRatio; + + if (my_VBRMode == vbr_off) + OutputInputRatio = double(my_AvgBytesPerSec) / double(my_OutBytesPerSec * 2); + else // reserve the space for 320 kbps + OutputInputRatio = 40000.0 / double(my_OutBytesPerSec * 2); + + OutputInputRatio *= 1.15; // allow 15% more*/ + + DWORD Result; + +// Result = DWORD(double(the_SrcLength) * OutputInputRatio); + Result = DWORD(1.25*the_SrcLength + 7200); + +my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "Result = %d",Result); + + return Result; +} + +bool ACMStream::ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader) +{ + bool result; + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "enter ACMStream::ConvertBuffer"); +} + + DWORD InSize = a_StreamHeader->cbSrcLength / 2, OutSize = a_StreamHeader->cbDstLength; // 2 for 8<->16 bits + +// Encode it +int dwSamples; + int nOutputSamples = 0; + + dwSamples = InSize / lame_get_num_channels( gfp ); + + if ( 1 == lame_get_num_channels( gfp ) ) + { + nOutputSamples = lame_encode_buffer(gfp,(PSHORT)a_StreamHeader->pbSrc,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + else + { + nOutputSamples = lame_encode_buffer_interleaved(gfp,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + + a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; + a_StreamHeader->cbDstLengthUsed = nOutputSamples; + + result = a_StreamHeader->cbDstLengthUsed <= a_StreamHeader->cbDstLength; + + my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "UsedSize = %d / EncodedSize = %d, result = %d (%d <= %d)", InSize, OutSize, result, a_StreamHeader->cbDstLengthUsed, a_StreamHeader->cbDstLength); + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "ACMStream::ConvertBuffer result = %d (0x%02X 0x%02X)",result,a_StreamHeader->pbDst[0],a_StreamHeader->pbDst[1]); +} + + return result; +} + +unsigned int ACMStream::GetOutputSampleRate(int samples_per_sec, int bitrate, int channels) +{ + if (bitrate==0) + bitrate = (64000*channels)/8; + + /// \todo pass through the same LAME routine + unsigned int OutputFrequency; + double compression_ratio = double(samples_per_sec * 16 * channels / (bitrate * 8)); + if (compression_ratio > 13.) + OutputFrequency = map2MP3Frequency( (10. * bitrate * 8) / (16 * channels)); + else + OutputFrequency = map2MP3Frequency( 0.97 * samples_per_sec ); + + return OutputFrequency; +} + diff --git a/lame-3.97/ACM/.svn/text-base/ACMStream.h.svn-base b/lame-3.97/ACM/.svn/text-base/ACMStream.h.svn-base new file mode 100644 index 0000000..6f1e12a --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/ACMStream.h.svn-base @@ -0,0 +1,83 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACMStream.h,v 1.4 2002/04/06 14:01:33 robux4 Exp $ +*/ + +#if !defined(_ACMSTREAM_H__INCLUDED_) +#define _ACMSTREAM_H__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include "ADbg/ADbg.h" + +#include <config.h> +#include "util.h" + +#include "AEncodeProperties.h" + +class ACMStream +{ +public: + ACMStream( ); + virtual ~ACMStream( ); + + static ACMStream * Create(); + static const bool Erase(const ACMStream * a_ACMStream); + + bool init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode); + bool open(const AEncodeProperties & the_Properties); + bool close(LPBYTE pOutputBuffer, DWORD *pOutputSize); + + DWORD GetOutputSizeForInput(const DWORD the_SrcLength) const; + bool ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader); + + static unsigned int GetOutputSampleRate(int samples_per_sec, int bitrate, int channels); + +protected: + lame_global_flags * gfp; + + ADbg * my_debug; + int my_SamplesPerSec; + int my_Channels; + int my_AvgBytesPerSec; + int my_OutBytesPerSec; + vbr_mode my_VBRMode; + DWORD my_SamplesPerBlock; + +unsigned int m_WorkingBufferUseSize; + char m_WorkingBuffer[2304*2]; // should be at least twice my_SamplesPerBlock + +inline int GetBytesPerBlock(DWORD bytes_per_sec, DWORD samples_per_sec, int BlockAlign) const; + +}; + +#endif // !defined(_ACMSTREAM_H__INCLUDED_) + diff --git a/lame-3.97/ACM/.svn/text-base/AEncodeProperties.cpp.svn-base b/lame-3.97/ACM/.svn/text-base/AEncodeProperties.cpp.svn-base new file mode 100644 index 0000000..42f5410 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/AEncodeProperties.cpp.svn-base @@ -0,0 +1,2028 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: AEncodeProperties.cpp,v 1.8 2002/04/08 18:43:30 robux4 Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // !defined(STRICT) + +#include <windows.h> +#include <windowsx.h> +#include <shlobj.h> +#include <assert.h> + +#ifdef _MSC_VER +// no problem with unknown pragmas +#pragma warning(disable: 4068) +#endif + +#include "resource.h" +#include <config.h> +#include "util.h" +#include "adebug.h" +#include "AEncodeProperties.h" +#include "ACM.h" +//#include "AParameters/AParameters.h" + +#ifndef TTS_BALLOON +#define TTS_BALLOON 0x40 +#endif // TTS_BALLOON + +const unsigned int AEncodeProperties::the_Bitrates[18] = {320, 256, 224, 192, 160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8 }; +const unsigned int AEncodeProperties::the_MPEG1_Bitrates[14] = {320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32 }; +const unsigned int AEncodeProperties::the_MPEG2_Bitrates[14] = {160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8}; +const unsigned int AEncodeProperties::the_ChannelModes[3] = { STEREO, JOINT_STEREO, DUAL_CHANNEL }; +//const char AEncodeProperties::the_Presets[][13] = {"None", "CD", "Studio", "Hi-Fi", "Phone", "Voice", "Radio", "Tape", "FM", "AM", "SW"}; +//const LAME_QUALTIY_PRESET AEncodeProperties::the_Presets[] = {LQP_NOPRESET, LQP_R3MIX_QUALITY, LQP_NORMAL_QUALITY, LQP_LOW_QUALITY, LQP_HIGH_QUALITY, LQP_VERYHIGH_QUALITY, LQP_VOICE_QUALITY, LQP_PHONE, LQP_SW, LQP_AM, LQP_FM, LQP_VOICE, LQP_RADIO, LQP_TAPE, LQP_HIFI, LQP_CD, LQP_STUDIO}; +//const unsigned int AEncodeProperties::the_SamplingFreqs[9] = { 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000 }; + +ToolTipItem AEncodeProperties::Tooltips[13]={ + { IDC_CHECK_ENC_ABR, "Allow encoding with an average bitrate\r\ninstead of a constant one.\r\n\r\nIt can improve the quality for the same bitrate." }, + { IDC_CHECK_COPYRIGHT, "Mark the encoded data as copyrighted." }, + { IDC_CHECK_CHECKSUM, "Put a checksum in the encoded data.\r\n\r\nThis can make the file less sensitive to data loss." }, + { IDC_CHECK_ORIGINAL, "Mark the encoded data as an original file." }, + { IDC_CHECK_PRIVATE, "Mark the encoded data as private." }, + { IDC_COMBO_ENC_STEREO, "Select the type of stereo mode used for encoding:\r\n\r\n- Stereo : the usual one\r\n- Joint-Stereo : mix both channel to achieve better compression\r\n- Dual Channel : treat both channel as separate" }, + { IDC_STATIC_DECODING, "Decoding not supported for the moment by the codec." }, + { IDC_CHECK_ENC_SMART, "Disable bitrate when there is too much compression.\r\n(default 1:15 ratio)" }, + { IDC_STATIC_CONFIG_VERSION, "Version of this codec.\r\n\r\nvX.X.X is the version of the codec interface.\r\nX.XX is the version of the encoding engine." }, + { IDC_SLIDER_AVERAGE_MIN, "Select the minimum Average Bitrate allowed." }, + { IDC_SLIDER_AVERAGE_MAX, "Select the maximum Average Bitrate allowed." }, + { IDC_SLIDER_AVERAGE_STEP, "Select the step of Average Bitrate between the min and max.\r\n\r\nA step of 5 between 152 and 165 means you have :\r\n165, 160 and 155" }, + { IDC_SLIDER_AVERAGE_SAMPLE, "Check the resulting values of the (min,max,step) combination.\r\n\r\nUse the keyboard to navigate (right -> left)." }, +}; +//int AEncodeProperties::tst = 0; + +/* +#pragma argsused +static UINT CALLBACK DLLFindCallback( + HWND hdlg, // handle to child dialog box + UINT uiMsg, // message identifier + WPARAM wParam, // message parameter + LPARAM lParam // message parameter + ) +{ + UINT result = 0; + + switch (uiMsg) + { + case WM_NOTIFY: + OFNOTIFY * info = (OFNOTIFY *)lParam; + if (info->hdr.code == CDN_FILEOK) + { + result = 1; // by default we don't accept the file + + // Check if the selected file is a valid DLL with all the required functions + ALameDLL * tstFile = new ALameDLL; + if (tstFile != NULL) + { + if (tstFile->Load(info->lpOFN->lpstrFile)) + { + result = 0; + } + + delete tstFile; + } + + if (result == 1) + { + TCHAR output[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_DLL_UNRECOGNIZED,output,250); + AOut::MyMessageBox( output, MB_OK|MB_ICONEXCLAMATION, hdlg); + SetWindowLong(hdlg, DWL_MSGRESULT , -100); + } + } + } + + return result; +} + +#pragma argsused +static int CALLBACK BrowseFolderCallbackroc( + HWND hwnd, + UINT uMsg, + LPARAM lParam, + LPARAM lpData + ) +{ + AEncodeProperties * the_prop; + the_prop = (AEncodeProperties *) lpData; + + + if (uMsg == BFFM_INITIALIZED) + { +// char FolderName[MAX_PATH]; +// SHGetPathFromIDList((LPITEMIDLIST) lParam,FolderName); +//ADbg tst; +//tst.OutPut("init folder to %s ",the_prop->GetOutputDirectory()); +// CreateFile(); + ::SendMessage(hwnd, BFFM_SETSELECTION, (WPARAM)TRUE, (LPARAM)the_prop->GetOutputDirectory()); + }/* else if (uMsg == BFFM_SELCHANGED) + { + // verify that the folder is writable +// ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)0); // disable + char FolderName[MAX_PATH]; + SHGetPathFromIDList((LPITEMIDLIST) lParam, FolderName); + +// if (CreateFile(FolderName,STANDARD_RIGHTS_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL) == INVALID_HANDLE_VALUE) + if ((GetFileAttributes(FolderName) & FILE_ATTRIBUTE_DIRECTORY) != 0) + ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)1); // enable + else + ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)0); // disable +//ADbg tst; +//tst.OutPut("change folder to %s ",FolderName); + }* / + + return 0; +} +*/ +#pragma argsused +static BOOL CALLBACK ConfigProc( + HWND hwndDlg, // handle to dialog box + UINT uMsg, // message + WPARAM wParam, // first message parameter + LPARAM lParam // second message parameter + ) +{ + BOOL bResult; + AEncodeProperties * the_prop; + the_prop = (AEncodeProperties *) GetProp(hwndDlg, "AEncodeProperties-Config"); + + switch (uMsg) { + case WM_COMMAND: + if (the_prop != NULL) + { + bResult = the_prop->HandleDialogCommand( hwndDlg, wParam, lParam); + } + break; + case WM_INITDIALOG: + assert(the_prop == NULL); + + the_prop = (AEncodeProperties *) lParam; + the_prop->my_debug.OutPut("there hwnd = 0x%08X",hwndDlg); + + assert(the_prop != NULL); + + SetProp(hwndDlg, "AEncodeProperties-Config", the_prop); + + the_prop->InitConfigDlg(hwndDlg); + + bResult = TRUE; + break; + + case WM_HSCROLL: + // check if it's the ABR sliders + if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_MIN)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_MAX)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_STEP)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_SAMPLE)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + break; + + case WM_NOTIFY: + if (TTN_GETDISPINFO == ((LPNMHDR)lParam)->code) { + NMTTDISPINFO *lphdr = (NMTTDISPINFO *)lParam; + UINT id = (lphdr->uFlags & TTF_IDISHWND) ? GetWindowLong((HWND)lphdr->hdr.idFrom, GWL_ID) : lphdr->hdr.idFrom; + + *lphdr->lpszText = 0; + + SendMessage(lphdr->hdr.hwndFrom, TTM_SETMAXTIPWIDTH, 0, 5000); + + for(int i=0; i<sizeof AEncodeProperties::Tooltips/sizeof AEncodeProperties::Tooltips[0]; ++i) { + if (id == AEncodeProperties::Tooltips[i].id) + lphdr->lpszText = const_cast<char *>(AEncodeProperties::Tooltips[i].tip); + } + + return TRUE; + } + break; + + default: + bResult = FALSE; // will be treated by DefWindowProc + } + return bResult; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// +/** + \class AEncodeProperties +*/ + + +const char * AEncodeProperties::GetChannelModeString(int a_channelID) const +{ + assert(a_channelID < sizeof(the_ChannelModes)); + + switch (a_channelID) { + case 0: + return "Stereo"; + case 1: + return "Joint-stereo"; + case 2: + return "Dual Channel"; + default: + assert(a_channelID); + return NULL; + } +} + +const int AEncodeProperties::GetBitrateString(char * string, int string_size, int a_bitrateID) const +{ + assert(a_bitrateID < sizeof(the_Bitrates)); + assert(string != NULL); + + if (string_size >= 4) + return wsprintf(string,"%d",the_Bitrates[a_bitrateID]); + else + return -1; +} + +const unsigned int AEncodeProperties::GetChannelModeValue() const +{ + assert(nChannelIndex < sizeof(the_ChannelModes)); + + return the_ChannelModes[nChannelIndex]; +} + +const unsigned int AEncodeProperties::GetBitrateValue() const +{ + assert(nMinBitrateIndex < sizeof(the_Bitrates)); + + return the_Bitrates[nMinBitrateIndex]; +} + +inline const int AEncodeProperties::GetBitrateValueMPEG2(DWORD & bitrate) const +{ + int i; + + for (i=0;i<sizeof(the_MPEG2_Bitrates)/sizeof(unsigned int);i++) + { + if (the_MPEG2_Bitrates[i] == the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG2_Bitrates[i]; + return 0; + } + else if (the_MPEG2_Bitrates[i] < the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG2_Bitrates[i]; + return -1; + } + } + + bitrate = 160; + return -1; +} + +inline const int AEncodeProperties::GetBitrateValueMPEG1(DWORD & bitrate) const +{ + int i; + + for (i=sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1;i>=0;i--) + { + if (the_MPEG1_Bitrates[i] == the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG1_Bitrates[i]; + return 0; + } + else if (the_MPEG1_Bitrates[i] > the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG1_Bitrates[i]; + return 1; + } + } + + bitrate = 32; + return 1; +} +/* +const int AEncodeProperties::GetBitrateValue(DWORD & bitrate, const DWORD MPEG_Version) const +{ + assert((MPEG_Version == MPEG1) || (MPEG_Version == MPEG2)); + assert(nMinBitrateIndex < sizeof(the_Bitrates)); + + if (MPEG_Version == MPEG2) + return GetBitrateValueMPEG2(bitrate); + else + return GetBitrateValueMPEG1(bitrate); +} +/* +const char * AEncodeProperties::GetPresetModeString(const int a_presetID) const +{ + assert(a_presetID < sizeof(the_Presets)); + + switch (a_presetID) { + case 1: + return "r3mix"; + case 2: + return "Normal"; + case 3: + return "Low"; + case 4: + return "High"; + case 5: + return "Very High"; + case 6: + return "Voice"; + case 7: + return "Phone"; + case 8: + return "SW"; + case 9: + return "AM"; + case 10: + return "FM"; + case 11: + return "Voice"; + case 12: + return "Radio"; + case 13: + return "Tape"; + case 14: + return "Hi-Fi"; + case 15: + return "CD"; + case 16: + return "Studio"; + default: + return "None"; + } +} + +const LAME_QUALTIY_PRESET AEncodeProperties::GetPresetModeValue() const +{ + assert(nPresetIndex < sizeof(the_Presets)); + + return the_Presets[nPresetIndex]; +} +*/ +bool AEncodeProperties::Config(const HINSTANCE Hinstance, const HWND HwndParent) +{ + //WM_INITDIALOG ? + + // remember the instance to retreive strings +// hDllInstance = Hinstance; + + my_debug.OutPut("here"); + int ret = ::DialogBoxParam(Hinstance, MAKEINTRESOURCE(IDD_CONFIG), HwndParent, ::ConfigProc, (LPARAM) this); +/* if (ret == -1) + { + LPVOID lpMsgBuf; + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + // Process any inserts in lpMsgBuf. + // ... + // Display the string. + AOut::MyMessageBox( (LPCTSTR)lpMsgBuf, MB_OK | MB_ICONINFORMATION ); + // Free the buffer. + LocalFree( lpMsgBuf ); + return false; + } +*/ + return true; +} + +bool AEncodeProperties::InitConfigDlg(HWND HwndDlg) +{ + // get all the required strings +// TCHAR Version[5]; +// LoadString(hDllInstance, IDS_STRING_VERSION, Version, 5); + + int i; + + // Add required channel modes + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetChannelLentgh();i++) + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_ADDSTRING, NULL, (LPARAM) GetChannelModeString(i)); + + char tmp[20]; + wsprintf(tmp, "v%s",ACM::GetVersionString()); + SetWindowText( GetDlgItem( HwndDlg, IDC_STATIC_CONFIG_VERSION), tmp); + + // Add all possible re-sampling freq +/* SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_RESETCONTENT , NULL, NULL); + char tmp[10]; + for (i=0;i<sizeof(the_SamplingFreqs)/sizeof(unsigned int);i++) + { + wsprintf(tmp, "%d", the_SamplingFreqs[i]); + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_ADDSTRING, NULL, (LPARAM) tmp ); + } +*/ + + // Add required bitrates +/* SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetBitrateLentgh();i++) + { + GetBitrateString(tmp, 5, i); + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_ADDSTRING, NULL, (LPARAM) tmp ); + } + + // Add bitrates to the VBR combo box too + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetBitrateLentgh();i++) + { + GetBitrateString(tmp, 5, i); + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_ADDSTRING, NULL, (LPARAM) tmp ); + } + + // Add VBR Quality Slider + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_SETRANGE, TRUE, MAKELONG(0,9)); + + // Add presets + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetPresetLentgh();i++) + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_ADDSTRING, NULL, (LPARAM) GetPresetModeString(i)); +*/ + + // Add ABR Sliders + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_SETRANGE, TRUE, MAKELONG(8,320)); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_SETRANGE, TRUE, MAKELONG(8,320)); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_SETRANGE, TRUE, MAKELONG(1,16)); + + // Tool-Tip initialiasiation + TOOLINFO ti; + HWND ToolTipWnd; + char DisplayStr[30] = "test tooltip"; + + ToolTipWnd = CreateWindowEx(WS_EX_TOPMOST, + TOOLTIPS_CLASS, + NULL, + WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP|TTS_BALLOON , + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + HwndDlg, + NULL, + NULL, + NULL + ); + + SetWindowPos(ToolTipWnd, + HWND_TOPMOST, + 0, + 0, + 0, + 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + + /* INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE */ + ti.cbSize = sizeof(TOOLINFO); + ti.uFlags = TTF_SUBCLASS | TTF_IDISHWND; + ti.hwnd = HwndDlg; + ti.lpszText = LPSTR_TEXTCALLBACK; + + /* SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW */ + for(i=0; i<sizeof Tooltips/sizeof Tooltips[0]; ++i) { + ti.uId = (WPARAM)GetDlgItem(HwndDlg, Tooltips[i].id); + + if (ti.uId) + SendMessage(ToolTipWnd, TTM_ADDTOOL, 0, (LPARAM)&ti); + } + +my_debug.OutPut("call UpdateConfigs"); + + UpdateConfigs(HwndDlg); + +my_debug.OutPut("call UpdateDlgFromValue"); + + UpdateDlgFromValue(HwndDlg); + + + my_debug.OutPut("finished InitConfigDlg"); + + + return true; +} + +bool AEncodeProperties::UpdateDlgFromValue(HWND HwndDlg) +{ + // get all the required strings +// TCHAR Version[5]; +// LoadString(hDllInstance, IDS_STRING_VERSION, Version, 5); + + int i; + + // Check boxes if required + ::CheckDlgButton( HwndDlg, IDC_CHECK_CHECKSUM, GetCRCMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_ORIGINAL, GetOriginalMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_PRIVATE, GetPrivateMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_COPYRIGHT, GetCopyrightMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_ENC_SMART, GetSmartOutputMode()?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_ENC_ABR, GetAbrOutputMode() ?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_RESERVOIR, !GetNoBiResMode() ?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_XINGVBR, GetXingFrameMode()?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_RESAMPLE, GetResampleMode() ?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_CHANNELFORCE, bForceChannel ?BST_CHECKED:BST_UNCHECKED ); + + // Add required channel modes + for (i=0;i<GetChannelLentgh();i++) + { + if (i == nChannelIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_SETCURSEL, i, NULL); + break; + } + } + + // Add VBR Quality + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_SETPOS, TRUE, AverageBitrate_Min); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_SETPOS, TRUE, AverageBitrate_Max); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_SETPOS, TRUE, AverageBitrate_Step); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETPOS, TRUE, AverageBitrate_Max); + + UpdateDlgFromSlides(HwndDlg); + + EnableAbrOptions(HwndDlg, GetAbrOutputMode()); +// UpdateAbrSteps(AverageBitrate_Min, AverageBitrate_Max, AverageBitrate_Step); + // Add all possible re-sampling freq +/* SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_SETCURSEL, nSamplingFreqIndex, NULL); + + + // Add required bitrates + for (i=0;i<GetBitrateLentgh();i++) + { + if (i == nMinBitrateIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_SETCURSEL, i, NULL); + break; + } + } + + // Add bitrates to the VBR combo box too + for (i=0;i<GetBitrateLentgh();i++) + { + if (i == nMaxBitrateIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_SETCURSEL, i, NULL); + break; + } + } + +// SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_SETRANGE, TRUE, MAKELONG(0,9)); + + char tmp[3]; + wsprintf(tmp,"%d",VbrQuality); + SetWindowText(GetDlgItem( HwndDlg, IDC_CONFIG_QUALITY), tmp); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_SETPOS, TRUE, VbrQuality); + + wsprintf(tmp,"%d",AverageBitrate); + SetWindowText(GetDlgItem( HwndDlg, IDC_EDIT_AVERAGE), tmp); + + // Display VBR settings if needed + AEncodeProperties::DisplayVbrOptions(HwndDlg, mBRmode); + + // Display Resample settings if needed + if (GetResampleMode()) + { + ::EnableWindow(::GetDlgItem(HwndDlg,IDC_COMBO_SAMPLEFREQ), TRUE); + } + else + { + ::EnableWindow(::GetDlgItem(HwndDlg,IDC_COMBO_SAMPLEFREQ), FALSE); + } + + + // Add presets + for (i=0;i<GetPresetLentgh();i++) + { + if (i == nPresetIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_SETCURSEL, i, NULL); + break; + } + } + + // Add User configs +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_RESETCONTENT , NULL, NULL); + ::SetWindowText(::GetDlgItem( HwndDlg, IDC_EDIT_OUTPUTDIR), OutputDir.c_str()); +*/ + /** + \todo Select the right saved config + */ + + return true; +} + +bool AEncodeProperties::UpdateValueFromDlg(HWND HwndDlg) +{ + nChannelIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_GETCURSEL, NULL, NULL); +// nMinBitrateIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_GETCURSEL, NULL, NULL); +// nMaxBitrateIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_GETCURSEL, NULL, NULL); +// nPresetIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_GETCURSEL, NULL, NULL); +// VbrQuality = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_GETPOS , NULL, NULL); +// nSamplingFreqIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_GETCURSEL, NULL, NULL); + + bCRC = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_CHECKSUM) == BST_CHECKED); + bCopyright = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_COPYRIGHT) == BST_CHECKED); + bOriginal = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_ORIGINAL) == BST_CHECKED); + bPrivate = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_PRIVATE) == BST_CHECKED); + bSmartOutput = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_ENC_SMART) == BST_CHECKED); + bAbrOutput = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_ENC_ABR) == BST_CHECKED); +// bNoBitRes =!(::IsDlgButtonChecked( HwndDlg, IDC_CHECK_RESERVOIR) == BST_CHECKED); +// bXingFrame = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_XINGVBR) == BST_CHECKED); +// bResample = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_RESAMPLE) == BST_CHECKED); +// bForceChannel = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_CHANNELFORCE) == BST_CHECKED); + + AverageBitrate_Min = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_GETPOS , NULL, NULL); + AverageBitrate_Max = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_GETPOS , NULL, NULL); + AverageBitrate_Step = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_GETPOS , NULL, NULL); + + EnableAbrOptions(HwndDlg, bAbrOutput); + +my_debug.OutPut("nChannelIndex %d, bCRC %d, bCopyright %d, bOriginal %d, bPrivate %d",nChannelIndex, bCRC, bCopyright, bOriginal, bPrivate); + +/* char tmpPath[MAX_PATH]; + ::GetWindowText( ::GetDlgItem( HwndDlg, IDC_EDIT_OUTPUTDIR), tmpPath, MAX_PATH); + OutputDir = tmpPath; + + if (::IsDlgButtonChecked(HwndDlg, IDC_RADIO_BITRATE_CBR) == BST_CHECKED) + mBRmode = BR_CBR; + else if (::IsDlgButtonChecked(HwndDlg, IDC_RADIO_BITRATE_VBR) == BST_CHECKED) + mBRmode = BR_VBR; + else + mBRmode = BR_ABR; + + ::GetWindowText( ::GetDlgItem( HwndDlg, IDC_EDIT_AVERAGE), tmpPath, MAX_PATH); + AverageBitrate = atoi(tmpPath); + if (AverageBitrate < 8) + AverageBitrate = 8; + if (AverageBitrate > 320) + AverageBitrate = 320; +*/ + return true; +} +/* +VBRMETHOD AEncodeProperties::GetVBRValue(DWORD & MaxBitrate, int & Quality, DWORD & AbrBitrate, BOOL & VBRHeader, const DWORD MPEG_Version) const +{ + assert((MPEG_Version == MPEG1) || (MPEG_Version == MPEG2)); + assert(nMaxBitrateIndex < sizeof(the_Bitrates)); + + if (mBRmode == BR_VBR) + { + MaxBitrate = the_Bitrates[nMaxBitrateIndex]; + + if (MPEG_Version == MPEG1) + MaxBitrate = MaxBitrate>the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]?MaxBitrate:the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]; + else + MaxBitrate = MaxBitrate<the_MPEG2_Bitrates[0]?MaxBitrate:the_MPEG2_Bitrates[0]; + + VBRHeader = bXingFrame; + Quality = VbrQuality; + AbrBitrate = 0; + + return VBR_METHOD_DEFAULT; // for the moment + } + else if (mBRmode == BR_ABR) + { + MaxBitrate = the_Bitrates[nMaxBitrateIndex]; + + if (MPEG_Version == MPEG1) + MaxBitrate = MaxBitrate>the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]?MaxBitrate:the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]; + else + MaxBitrate = MaxBitrate<the_MPEG2_Bitrates[0]?MaxBitrate:the_MPEG2_Bitrates[0]; + + VBRHeader = bXingFrame; + Quality = 0; + AbrBitrate = AverageBitrate*1000; + return VBR_METHOD_ABR; + } + else + { + return VBR_METHOD_NONE; + } +} +*/ +void AEncodeProperties::ParamsRestore() +{ + // use these default parameters in case one is not found + bCopyright = true; + bCRC = true; + bOriginal = true; + bPrivate = true; + bNoBitRes = false; // enable bit reservoir + bXingFrame = true; + bResample = false; + bForceChannel = false; + bSmartOutput = true; + bAbrOutput = true; + + AverageBitrate_Min = 80; // a bit lame + AverageBitrate_Max = 160; // a bit lame + AverageBitrate_Step = 8; // a bit lame + SmartRatioMax = 15.0; + + nChannelIndex = 2; // joint-stereo + mBRmode = BR_CBR; + nMinBitrateIndex = 6; // 128 kbps (works for both MPEGI and II) + nMaxBitrateIndex = 4; // 160 kbps (works for both MPEGI and II) + nPresetIndex = 0; // None + VbrQuality = 1; // Quite High +// AverageBitrate = 128; // a bit lame + nSamplingFreqIndex = 1; // 44100 + +// OutputDir = "c:\\"; + +// DllLocation = "plugins\\lame_enc.dll"; + + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + std::string CurrentConfig = ""; + + if (CurrentNode->Attribute("default") != NULL) + { + CurrentConfig = *CurrentNode->Attribute("default"); + } + +/* // output parameters + TiXmlElement* iterateElmt = node->FirstChildElement("DLL"); + if (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("location"); + if (tmpname != NULL) + { + DllLocation = *tmpname; + } + } +*/ + GetValuesFromKey(CurrentConfig, *CurrentNode); + } + else + { + /** + \todo save the data in the file ! + */ + } +} + +void AEncodeProperties::ParamsSave() +{ +/* + + + save the current parameters in the corresponding subkey + + + + + HKEY OssKey; + + if (RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI\\out_lame", 0, "", REG_OPTION_NON_VOLATILE, KEY_WRITE , NULL, &OssKey, NULL ) == ERROR_SUCCESS) { + + if (RegSetValueEx(OssKey, "DLL Location", 0, REG_EXPAND_SZ, (CONST BYTE *)DllLocation, strlen(DllLocation)+1 ) != ERROR_SUCCESS) + return; + + RegCloseKey(OssKey); + } +*/ +} +/* +void AEncodeProperties::DisplayVbrOptions(const HWND hDialog, const BRMode the_mode) +{ + bool bVBR = false; + bool bABR = false; + + switch ( the_mode ) + { + case BR_CBR: + ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_CBR); + break; + case BR_VBR: + ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_VBR); + bVBR = true; + break; + case BR_ABR: + ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_ABR); + bABR = true; + break; + + } + + if(bVBR|bABR) + { + ::SetWindowText(::GetDlgItem(hDialog,IDC_STATIC_MINBITRATE), "Min Bitrate"); + } + else + { + ::SetWindowText(::GetDlgItem(hDialog,IDC_STATIC_MINBITRATE), "Bitrate"); + } + + ::EnableWindow(::GetDlgItem( hDialog, IDC_CHECK_XINGVBR), bVBR|bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_COMBO_MAXBITRATE), bVBR|bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_MAXBITRATE), bVBR|bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_QUALITY), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_CONFIG_QUALITY), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY_LOW), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY_HIGH), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_ABR), bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_EDIT_AVERAGE), bABR); +} +*/ +AEncodeProperties::AEncodeProperties(HMODULE hModule) + :my_debug(ADbg(DEBUG_LEVEL_CREATION)), + my_hModule(hModule) +{ + std::string path = ""; +// HMODULE htmp = LoadLibrary("out_lame.dll"); + if (hModule != NULL) + { + char output[MAX_PATH]; + ::GetModuleFileName(hModule, output, MAX_PATH); +// ::FreeLibrary(htmp); + + path = output; + } + my_store_location = path.substr(0,path.find_last_of('\\')+1); + my_store_location += "lame_acm.xml"; + + my_debug.OutPut("store path = %s",my_store_location.c_str()); +//#ifdef OLD +// ::OutputDebugString(my_store_location.c_str()); + + // make sure the XML file is present + HANDLE hFile = ::CreateFile(my_store_location.c_str(), 0, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL ); + ::CloseHandle(hFile); +//#endif // OLD + my_debug.OutPut("AEncodeProperties creation completed (0x%08X)",this); +} + +// Save the values to the right XML saved config +void AEncodeProperties::SaveValuesToStringKey(const std::string & config_name) +{ + // get the current data in the file to keep them + if (my_stored_data.LoadFile(my_store_location)) + { + // check if the Node corresponding to the config_name already exist. + TiXmlNode* node = my_stored_data.FirstChild("lame_acm"); + + if (node != NULL) + { + TiXmlElement* ConfigNode = node->FirstChildElement("encodings"); + + if (ConfigNode != NULL) + { + // look all the <config> tags + TiXmlElement* tmpNode = ConfigNode->FirstChildElement("config"); + while (tmpNode != NULL) + { + const std::string * tmpname = tmpNode->Attribute("name"); + if (tmpname->compare(config_name) == 0) + { + break; + } + tmpNode = tmpNode->NextSiblingElement("config"); + } + + if (tmpNode == NULL) + { + // Create the node + tmpNode = new TiXmlElement("config"); + tmpNode->SetAttribute("name",config_name); + + // save data in the node + SaveValuesToElement(tmpNode); + + ConfigNode->InsertEndChild(*tmpNode); + } + else + { + // save data in the node + SaveValuesToElement(tmpNode); + } + + + // and save the file + my_stored_data.SaveFile(my_store_location); + } + } + } +} + +void AEncodeProperties::GetValuesFromKey(const std::string & config_name, const TiXmlNode & parentNode) +{ + TiXmlElement* tmpElt; + TiXmlElement* iterateElmt; + + // find the config that correspond to CurrentConfig + iterateElmt = parentNode.FirstChildElement("config"); + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + if ((tmpname != NULL) && (tmpname->compare(config_name) == 0)) + { + break; + } + iterateElmt = iterateElmt->NextSiblingElement("config"); + } + + if (iterateElmt != NULL) + { + // get all the parameters saved in this Element + const std::string * tmpname; + + // Smart output parameter + tmpElt = iterateElmt->FirstChildElement("Smart"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bSmartOutput = (tmpname->compare("true") == 0); + + tmpname = tmpElt->Attribute("ratio"); + if (tmpname != NULL) + SmartRatioMax = atof(tmpname->c_str()); + } + + // Smart output parameter + tmpElt = iterateElmt->FirstChildElement("ABR"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bAbrOutput = (tmpname->compare("true") == 0); + + tmpname = tmpElt->Attribute("min"); + if (tmpname != NULL) + AverageBitrate_Min = atoi(tmpname->c_str()); + + tmpname = tmpElt->Attribute("max"); + if (tmpname != NULL) + AverageBitrate_Max = atoi(tmpname->c_str()); + + tmpname = tmpElt->Attribute("step"); + if (tmpname != NULL) + AverageBitrate_Step = atoi(tmpname->c_str()); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Copyright"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bCopyright = (tmpname->compare("true") == 0); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("CRC"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bCRC = (tmpname->compare("true") == 0); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Original"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bOriginal = (tmpname->compare("true") == 0); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Private"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bPrivate = (tmpname->compare("true") == 0); + } +/* + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Bit_reservoir"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bNoBitRes = !(tmpname->compare("true") == 0); + } + + // bitrates + tmpElt = iterateElmt->FirstChildElement("bitrate"); + tmpname = tmpElt->Attribute("min"); + if (tmpname != NULL) + { + unsigned int uitmp = atoi(tmpname->c_str()); + for (int i=0;i<sizeof(the_Bitrates)/sizeof(unsigned int);i++) + { + if (the_Bitrates[i] == uitmp) + { + nMinBitrateIndex = i; + break; + } + } + } + + tmpname = tmpElt->Attribute("max"); + if (tmpname != NULL) + { + unsigned int uitmp = atoi(tmpname->c_str()); + for (int i=0;i<sizeof(the_Bitrates)/sizeof(unsigned int);i++) + { + if (the_Bitrates[i] == uitmp) + { + nMaxBitrateIndex = i; + break; + } + } + } +*/ +/* + // resampling parameters + tmpElt = iterateElmt->FirstChildElement("resampling"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bResample = (tmpname->compare("true") == 0); + + unsigned int uitmp = atoi(tmpElt->Attribute("freq")->c_str()); + for (int i=0;i<sizeof(the_SamplingFreqs)/sizeof(unsigned int);i++) + { + if (the_SamplingFreqs[i] == uitmp) + { + nSamplingFreqIndex = i; + break; + } + } + } + + // VBR parameters + tmpElt = iterateElmt->FirstChildElement("VBR"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + { + if (tmpname->compare("ABR") == 0) + mBRmode = BR_ABR; + else if (tmpname->compare("true") == 0) + mBRmode = BR_VBR; + else + mBRmode = BR_CBR; + } + + tmpname = tmpElt->Attribute("header"); + if (tmpname != NULL) + bXingFrame = (tmpname->compare("true") == 0); + + tmpname = tmpElt->Attribute("quality"); + if (tmpname != NULL) + { + VbrQuality = atoi(tmpname->c_str()); + } + + tmpname = tmpElt->Attribute("average"); + if (tmpname != NULL) + { + AverageBitrate = atoi(tmpname->c_str()); + } + else + { + } + } + + // output parameters + tmpElt = iterateElmt->FirstChildElement("output"); + if (tmpElt != NULL) + { + OutputDir = *tmpElt->Attribute("path"); + } +*/ +//#ifdef OLD + // Channel mode parameter + tmpElt = iterateElmt->FirstChildElement("Channel"); + if (tmpElt != NULL) + { + const std::string * tmpStr = tmpElt->Attribute("mode"); + if (tmpStr != NULL) + { + for (int i=0;i<GetChannelLentgh();i++) + { + if (tmpStr->compare(GetChannelModeString(i)) == 0) + { + nChannelIndex = i; + break; + } + } + } +/* + tmpname = tmpElt->Attribute("force"); + if (tmpname != NULL) + bForceChannel = (tmpname->compare("true") == 0); +*/ + } +//#endif // OLD + + // Preset parameter +/* + tmpElt = iterateElmt->FirstChildElement("Preset"); + if (tmpElt != NULL) + { + const std::string * tmpStr = tmpElt->Attribute("type"); + for (int i=0;i<GetPresetLentgh();i++) + { + if (tmpStr->compare(GetPresetModeString(i)) == 0) + { + nPresetIndex = i; + break; + } + } + + } +*/ + } +} + +/** + \todo save the parameters +* / +void AEncodeProperties::SaveParams(const HWND hParentWnd) +{ + char string[MAX_PATH]; +/* int nIdx = SendMessage(::GetDlgItem( hParentWnd ,IDC_COMBO_SETTINGS ), CB_GETCURSEL, NULL, NULL); + ::SendMessage(::GetDlgItem( hParentWnd ,IDC_COMBO_SETTINGS ), CB_GETLBTEXT , nIdx, (LPARAM) string); +* / +}*/ + +bool AEncodeProperties::operator !=(const AEncodeProperties & the_instance) const +{ +/* + ::OutputDebugString(bCopyright != the_instance.bCopyright?"1":"-"); + ::OutputDebugString(bCRC != the_instance.bCRC ?"2":"-"); + ::OutputDebugString(bOriginal != the_instance.bOriginal ?"3":"-"); + ::OutputDebugString(bPrivate != the_instance.bPrivate ?"4":"-"); + ::OutputDebugString(bNoBitRes != the_instance.bNoBitRes ?"5":"-"); + ::OutputDebugString(mBRmode != the_instance.mBRmode ?"6":"-"); + ::OutputDebugString(bXingFrame != the_instance.bXingFrame?"7":"-"); + ::OutputDebugString(bForceChannel != the_instance.bForceChannel?"8":"-"); + ::OutputDebugString(bResample != the_instance.bResample ?"9":"-"); + ::OutputDebugString(nChannelIndex != the_instance.nChannelIndex?"10":"-"); + ::OutputDebugString(nMinBitrateIndex != the_instance.nMinBitrateIndex?"11":"-"); + ::OutputDebugString(nMaxBitrateIndex != the_instance.nMaxBitrateIndex?"12":"-"); + ::OutputDebugString(nPresetIndex != the_instance.nPresetIndex?"13":"-"); + ::OutputDebugString(VbrQuality != the_instance.VbrQuality?"14":"-"); + ::OutputDebugString(AverageBitrate != the_instance.AverageBitrate?"15":"-"); + ::OutputDebugString(nSamplingFreqIndex != the_instance.nSamplingFreqIndex?"16":"-"); + ::OutputDebugString(OutputDir.compare(the_instance.OutputDir) != 0?"17":"-"); + + std::string tmp = ""; + char tmpI[10]; + _itoa(AverageBitrate,tmpI,10); + tmp += tmpI; + tmp += " != "; + _itoa(the_instance.AverageBitrate,tmpI,10); + tmp += tmpI; + ::OutputDebugString(tmp.c_str()); +*/ + return ((bCopyright != the_instance.bCopyright) + || (bCRC != the_instance.bCRC) + || (bOriginal != the_instance.bOriginal) + || (bPrivate != the_instance.bPrivate) + || (bSmartOutput != the_instance.bSmartOutput) + || (SmartRatioMax != the_instance.SmartRatioMax) + || (bAbrOutput != the_instance.bAbrOutput) + || (AverageBitrate_Min != the_instance.AverageBitrate_Min) + || (AverageBitrate_Max != the_instance.AverageBitrate_Max) + || (AverageBitrate_Step != the_instance.AverageBitrate_Step) + || (bNoBitRes != the_instance.bNoBitRes) + || (mBRmode != the_instance.mBRmode) + || (bXingFrame != the_instance.bXingFrame) + || (bForceChannel != the_instance.bForceChannel) + || (bResample != the_instance.bResample) + || (nChannelIndex != the_instance.nChannelIndex) + || (nMinBitrateIndex != the_instance.nMinBitrateIndex) + || (nMaxBitrateIndex != the_instance.nMaxBitrateIndex) + || (nPresetIndex != the_instance.nPresetIndex) + || (VbrQuality != the_instance.VbrQuality) +// || (AverageBitrate != the_instance.AverageBitrate) + || (nSamplingFreqIndex != the_instance.nSamplingFreqIndex) +// || (OutputDir.compare(the_instance.OutputDir) != 0) + ); +} + +void AEncodeProperties::SelectSavedParams(const std::string the_string) +{ + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + if (CurrentNode != NULL) + { + CurrentNode->SetAttribute("default",the_string); + GetValuesFromKey(the_string, *CurrentNode); + my_stored_data.SaveFile(my_store_location); + } + } +} + +inline void AEncodeProperties::SetAttributeBool(TiXmlElement * the_elt,const std::string & the_string, const bool the_value) const +{ + if (the_value == false) + the_elt->SetAttribute(the_string, "false"); + else + the_elt->SetAttribute(the_string, "true"); +} + +void AEncodeProperties::SaveValuesToElement(TiXmlElement * the_element) const +{ + // get all the parameters saved in this Element + TiXmlElement * tmpElt; + + // Bit Reservoir parameter +/* + tmpElt = the_element->FirstChildElement("Bit_reservoir"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Bit_reservoir"); + SetAttributeBool(tmpElt, "use", !bNoBitRes); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool(tmpElt, "use", !bNoBitRes); + } +*/ + // Copyright parameter + tmpElt = the_element->FirstChildElement("Copyright"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Copyright"); + SetAttributeBool( tmpElt, "use", bCopyright); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bCopyright); + } + + // Smart Output parameter + tmpElt = the_element->FirstChildElement("Smart"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Smart"); + SetAttributeBool( tmpElt, "use", bSmartOutput); + tmpElt->SetAttribute("ratio", SmartRatioMax); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bSmartOutput); + tmpElt->SetAttribute("ratio", SmartRatioMax); + } + + // Smart Output parameter + tmpElt = the_element->FirstChildElement("ABR"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("ABR"); + SetAttributeBool( tmpElt, "use", bAbrOutput); + tmpElt->SetAttribute("min", AverageBitrate_Min); + tmpElt->SetAttribute("max", AverageBitrate_Max); + tmpElt->SetAttribute("step", AverageBitrate_Step); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bAbrOutput); + tmpElt->SetAttribute("min", AverageBitrate_Min); + tmpElt->SetAttribute("max", AverageBitrate_Max); + tmpElt->SetAttribute("step", AverageBitrate_Step); + } + + // CRC parameter + tmpElt = the_element->FirstChildElement("CRC"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("CRC"); + SetAttributeBool( tmpElt, "use", bCRC); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bCRC); + } + + // Original parameter + tmpElt = the_element->FirstChildElement("Original"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Original"); + SetAttributeBool( tmpElt, "use", bOriginal); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bOriginal); + } + + // Private parameter + tmpElt = the_element->FirstChildElement("Private"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Private"); + SetAttributeBool( tmpElt, "use", bPrivate); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bPrivate); + } + + // Channel Mode parameter + tmpElt = the_element->FirstChildElement("Channel"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Channel"); + tmpElt->SetAttribute("mode", GetChannelModeString(nChannelIndex)); +// SetAttributeBool( tmpElt, "force", bForceChannel); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("mode", GetChannelModeString(nChannelIndex)); +// SetAttributeBool( tmpElt, "force", bForceChannel); + } +/* + // Preset parameter + tmpElt = the_element->FirstChildElement("Preset"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Preset"); + tmpElt->SetAttribute("type", GetPresetModeString(nPresetIndex)); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("type", GetPresetModeString(nPresetIndex)); + } + + // Bitrate parameter + tmpElt = the_element->FirstChildElement("bitrate"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("bitrate"); + tmpElt->SetAttribute("min", the_Bitrates[nMinBitrateIndex]); + tmpElt->SetAttribute("max", the_Bitrates[nMaxBitrateIndex]); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("min", the_Bitrates[nMinBitrateIndex]); + tmpElt->SetAttribute("max", the_Bitrates[nMaxBitrateIndex]); + } + + // Output Directory parameter + tmpElt = the_element->FirstChildElement("output"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("output"); + tmpElt->SetAttribute("path", OutputDir); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("path", OutputDir); + } +*/ +/* + // Resampling parameter + tmpElt = the_element->FirstChildElement("resampling"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("resampling"); + SetAttributeBool( tmpElt, "use", bResample); + tmpElt->SetAttribute("freq", the_SamplingFreqs[nSamplingFreqIndex]); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bResample); + tmpElt->SetAttribute("freq", the_SamplingFreqs[nSamplingFreqIndex]); + } + + // VBR parameter + tmpElt = the_element->FirstChildElement("VBR"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("VBR"); + + if (mBRmode == BR_ABR) + tmpElt->SetAttribute("use", "ABR"); + else + SetAttributeBool( tmpElt, "use", (mBRmode != BR_CBR)); + + SetAttributeBool( tmpElt, "header", bXingFrame); + tmpElt->SetAttribute("quality", VbrQuality); + tmpElt->SetAttribute("average", AverageBitrate); + the_element->InsertEndChild(*tmpElt); + } + else + { + if (mBRmode == BR_ABR) + tmpElt->SetAttribute("use", "ABR"); + else + SetAttributeBool( tmpElt, "use", (mBRmode != BR_CBR)); + + SetAttributeBool( tmpElt, "header", bXingFrame); + tmpElt->SetAttribute("quality", VbrQuality); + tmpElt->SetAttribute("average", AverageBitrate); + } +*/ +} + +bool AEncodeProperties::HandleDialogCommand(const HWND parentWnd, const WPARAM wParam, const LPARAM lParam) +{ + UINT command; + command = GET_WM_COMMAND_ID(wParam, lParam); + + switch (command) + { + case IDOK : + { + bool bShouldEnd = true; + + // save parameters + char string[MAX_PATH]; +// ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + wsprintf(string,"Current"); // only the Current config is supported at the moment + + my_debug.OutPut("my_hModule = 0x%08X",my_hModule); +/* + AEncodeProperties tmpDlgProps(my_hModule); + AEncodeProperties tmpSavedProps(my_hModule); +//#ifdef OLD + tmpDlgProps.UpdateValueFromDlg(parentWnd); + tmpSavedProps.SelectSavedParams(string); + tmpSavedProps.ParamsRestore(); + // check if the values from the DLG are the same as the one saved in the config file + // if yes, just do nothing +/* + if (tmpDlgProps != tmpSavedProps) + { + int save; + + if (strcmp(string,"Current") == 0) + { + // otherwise, prompt the user if he wants to overwrite the settings + TCHAR tmpStr[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_PROMPT_REPLACE_CURRENT,tmpStr,250); + + save = AOut::MyMessageBox( tmpStr, MB_OKCANCEL|MB_ICONQUESTION, parentWnd); + } + else + { + // otherwise, prompt the user if he wants to overwrite the settings + TCHAR tmpStr[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_PROMPT_REPLACE_SETING,tmpStr,250); + TCHAR tmpDsp[500]; + wsprintf(tmpDsp,tmpStr,string); + + save = AOut::MyMessageBox( tmpDsp, MB_YESNOCANCEL|MB_ICONQUESTION, parentWnd); + } + + if (save == IDCANCEL) + bShouldEnd = false; + else if (save == IDNO) + { + // save the values in 'current' + UpdateValueFromDlg(parentWnd); + SaveValuesToStringKey("Current"); + SelectSavedParams("Current"); + } + else + { + // do so and save in XML + UpdateValueFromDlg(parentWnd); + SaveValuesToStringKey(string); + } + } +*/ +//#endif // OLD +my_debug.OutPut("before : nChannelIndex %d, bCRC %d, bCopyright %d, bOriginal %d, bPrivate %d",nChannelIndex, bCRC, bCopyright, bOriginal, bPrivate); + +my_debug.OutPut("call UpdateValueFromDlg"); + + UpdateValueFromDlg(parentWnd); + +my_debug.OutPut("call SaveValuesToStringKey"); + + SaveValuesToStringKey("Current"); // only Current config is supported now + +// SaveParams(parentWnd); + +//my_debug.OutPut("call SelectSavedParams"); + +// SelectSavedParams(string); +// UpdateDlgFromValue(parentWnd); + +my_debug.OutPut("finished saving"); + + if (bShouldEnd) + { + RemoveProp(parentWnd, "AEncodeProperties-Config"); + + EndDialog(parentWnd, true); + } + } + break; + + case IDCANCEL: + RemoveProp(parentWnd, "AEncodeProperties-Config"); + EndDialog(parentWnd, false); + break; + +/* case IDC_FIND_DLL: + { + OPENFILENAME file; + char DllLocation[512]; + wsprintf(DllLocation,"%s",GetDllLocation()); + + memset(&file, 0, sizeof(file)); + file.lStructSize = sizeof(file); + file.hwndOwner = parentWnd; + file.Flags = OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_ENABLEHOOK | OFN_EXPLORER ; +/// file.lpstrFile = AOut::the_AOut->DllLocation; + file.lpstrFile = DllLocation; + file.lpstrFilter = "Lame DLL (lame_enc.dll)\0LAME_ENC.DLL\0DLL (*.dll)\0*.DLL\0All (*.*)\0*.*\0"; + file.nFilterIndex = 1; + file.nMaxFile = sizeof(DllLocation); + file.lpfnHook = DLLFindCallback; // use to validate the DLL chosen + + GetOpenFileName(&file); + + SetDllLocation(DllLocation); + // use this filename if necessary + } + break; +*/ +/* case IDC_BUTTON_OUTPUT: + { +#ifndef SIMPLE_FOLDER + BROWSEINFO info; + memset(&info,0,sizeof(info)); + + char FolderName[MAX_PATH]; + + info.hwndOwner = parentWnd; + info.pszDisplayName = FolderName; + info.lpfn = BrowseFolderCallbackroc; + info.lParam = (LPARAM) this; + + // get the localised window title + TCHAR output[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_DIR_SELECT,output,250); + info.lpszTitle = output; + +#ifdef BIF_EDITBOX + info.ulFlags |= BIF_EDITBOX; +#else // BIF_EDITBOX + info.ulFlags |= 0x0010; +#endif // BIF_EDITBOX + +#ifdef BIF_VALIDATE + info.ulFlags |= BIF_VALIDATE; +#else // BIF_VALIDATE + info.ulFlags |= 0x0020; +#endif // BIF_VALIDATE + +#ifdef BIF_NEWDIALOGSTYLE + info.ulFlags |= BIF_NEWDIALOGSTYLE; +#else // BIF_NEWDIALOGSTYLE + info.ulFlags |= 0x0040; +#endif // BIF_NEWDIALOGSTYLE + + ITEMIDLIST *item = SHBrowseForFolder(&info); + + if (item != NULL) + { + char tmpOutputDir[MAX_PATH]; + wsprintf(tmpOutputDir,"%s",GetOutputDirectory()); + + SHGetPathFromIDList( item,tmpOutputDir ); + SetOutputDirectory( tmpOutputDir ); + ::SetWindowText(GetDlgItem( parentWnd, IDC_EDIT_OUTPUTDIR), tmpOutputDir); +// wsprintf(OutputDir,FolderName); + } +#else // SIMPLE_FOLDER + OPENFILENAME file; + + memset(&file, 0, sizeof(file)); + file.lStructSize = sizeof(file); + file.hwndOwner = parentWnd; + file.Flags = OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_ENABLEHOOK | OFN_EXPLORER ; +// file.lpstrFile = GetDllLocation(); +// file.lpstrFile = GetOutputDirectory(); + file.lpstrInitialDir = GetOutputDirectory(); + file.lpstrFilter = "A Directory\0.*\0"; +// file.nFilterIndex = 1; + file.nMaxFile = MAX_PATH; +// file.lpfnHook = DLLFindCallback; // use to validate the DLL chosen +// file.Flags = OFN_ENABLESIZING | OFN_NOREADONLYRETURN | OFN_HIDEREADONLY; + file.Flags = OFN_NOREADONLYRETURN | OFN_HIDEREADONLY | OFN_EXPLORER; + + TCHAR output[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_DIR_SELECT,output,250); + file.lpstrTitle = output; + + GetSaveFileName(&file); +#endif // SIMPLE_FOLDER + } + break; +*/ + case IDC_CHECK_ENC_ABR: + EnableAbrOptions(parentWnd, ::IsDlgButtonChecked( parentWnd, IDC_CHECK_ENC_ABR) == BST_CHECKED); + break; +/* case IDC_RADIO_BITRATE_CBR: + AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_CBR); + break; + + case IDC_RADIO_BITRATE_VBR: + AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_VBR); + break; + + case IDC_RADIO_BITRATE_ABR: + AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_ABR); + break; + + case IDC_CHECK_RESAMPLE: + { + bool tmp_bResampleUsed = (::IsDlgButtonChecked( parentWnd, IDC_CHECK_RESAMPLE) == BST_CHECKED); + if (tmp_bResampleUsed) + { + ::EnableWindow(::GetDlgItem(parentWnd,IDC_COMBO_SAMPLEFREQ), TRUE); + } + else + { + ::EnableWindow(::GetDlgItem(parentWnd,IDC_COMBO_SAMPLEFREQ), FALSE); + } + } + break; +*/ +/* case IDC_COMBO_SETTINGS: +// if (CBN_SELCHANGE == GET_WM_COMMAND_CMD(wParam, lParam)) + if (CBN_SELENDOK == GET_WM_COMMAND_CMD(wParam, lParam)) + { + char string[MAX_PATH]; + int nIdx = SendMessage(HWND(lParam), CB_GETCURSEL, NULL, NULL); + SendMessage(HWND(lParam), CB_GETLBTEXT , nIdx, (LPARAM) string); + + // get the info corresponding to the new selected item + SelectSavedParams(string); + UpdateDlgFromValue(parentWnd); + } + break; +*/ +/* case IDC_BUTTON_CONFIG_SAVE: + { + // save the data in the current config + char string[MAX_PATH]; + ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + UpdateValueFromDlg(parentWnd); + SaveValuesToStringKey(string); + SelectSavedParams(string); + UpdateConfigs(parentWnd); + UpdateDlgFromValue(parentWnd); + } + break; + + case IDC_BUTTON_CONFIG_RENAME: + { + char string[MAX_PATH]; + ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + if (RenameCurrentTo(string)) + { + // Update the names displayed + UpdateConfigs(parentWnd); + } + + } + break; + + case IDC_BUTTON_CONFIG_DELETE: + { + char string[MAX_PATH]; + ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + if (DeleteConfig(string)) + { + // Update the names displayed + UpdateConfigs(parentWnd); + UpdateDlgFromValue(parentWnd); + } + } + break; +*/ + } + + return FALSE; +} + +bool AEncodeProperties::RenameCurrentTo(const std::string & new_config_name) +{ + bool bResult = false; + + // display all the names of the saved configs + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + if (CurrentNode->Attribute("default") != NULL) + { + std::string CurrentConfigName = *CurrentNode->Attribute("default"); + + // no rename possible for Current + if (CurrentConfigName == "") + { + bResult = true; + } + else if (CurrentConfigName != "Current") + { + // find the config that correspond to CurrentConfig + TiXmlElement* iterateElmt = CurrentNode->FirstChildElement("config"); +// int Idx = 0; + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + /** + \todo support language names + */ + if (tmpname != NULL) + { + if (tmpname->compare(CurrentConfigName) == 0) + { + iterateElmt->SetAttribute("name",new_config_name); + bResult = true; + break; + } + } +// Idx++; + iterateElmt = iterateElmt->NextSiblingElement("config"); + } + } + + if (bResult) + { + CurrentNode->SetAttribute("default",new_config_name); + + my_stored_data.SaveFile(my_store_location); + } + } + } + + return bResult; +} + +bool AEncodeProperties::DeleteConfig(const std::string & config_name) +{ + bool bResult = false; + + if (config_name != "Current") + { + // display all the names of the saved configs + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + TiXmlElement* iterateElmt = CurrentNode->FirstChildElement("config"); +// int Idx = 0; + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + /** + \todo support language names + */ + if (tmpname != NULL) + { + if (tmpname->compare(config_name) == 0) + { + CurrentNode->RemoveChild(iterateElmt); + bResult = true; + break; + } + } +// Idx++; + iterateElmt = iterateElmt->NextSiblingElement("config"); + } + } + + if (bResult) + { + my_stored_data.SaveFile(my_store_location); + + // select a new default config : "Current" + SelectSavedParams("Current"); + + } + } + + return bResult; +} + +void AEncodeProperties::UpdateConfigs(const HWND HwndDlg) +{ + // Add User configs +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_RESETCONTENT , NULL, NULL); + + // display all the names of the saved configs + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + std::string CurrentConfig = ""; + + if (CurrentNode->Attribute("default") != NULL) + { + CurrentConfig = *CurrentNode->Attribute("default"); + } + + TiXmlElement* iterateElmt; + +my_debug.OutPut("are we here ?"); + + // find the config that correspond to CurrentConfig + iterateElmt = CurrentNode->FirstChildElement("config"); + int Idx = 0; + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + /** + \todo support language names + */ + if (tmpname != NULL) + { +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_ADDSTRING, NULL, (LPARAM) tmpname->c_str()); + if (tmpname->compare(CurrentConfig) == 0) + { +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_SETCURSEL, Idx, NULL); + SelectSavedParams(*tmpname); + UpdateDlgFromValue(HwndDlg); + } + } +my_debug.OutPut("Idx = %d",Idx); + + Idx++; + // only Current config supported now +// iterateElmt = iterateElmt->NextSiblingElement("config"); + iterateElmt = NULL; +my_debug.OutPut("iterateElmt = 0x%08X",iterateElmt); + + } + } +} +/* +void AEncodeProperties::UpdateAbrSteps(unsigned int min, unsigned int max, unsigned int step) const +{ +} +*/ +void AEncodeProperties::UpdateDlgFromSlides(HWND hwndDlg) const +{ + UINT value_min, value_max, value_step, value; + char tmp[4]; + + value_min = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_GETPOS, NULL, NULL); + value_max = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_GETPOS, NULL, NULL); + + if (value_min>value_max) + { + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_SETPOS, TRUE, value_max); + UpdateDlgFromSlides(hwndDlg); + return; + } + + if (value_max<value_min) + { + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_SETPOS, TRUE, value_min); + UpdateDlgFromSlides(hwndDlg); + return; + } + + wsprintf(tmp,"%3d",value_min); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_MIN_VALUE), tmp); + + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETRANGEMIN, TRUE, value_min); + + wsprintf(tmp,"%3d",value_max); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_MAX_VALUE), tmp); + + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETRANGEMAX, TRUE, value_max); + + value_step = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_GETPOS, NULL, NULL); + wsprintf(tmp,"%3d",value_step); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_STEP_VALUE), tmp); + + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_CLEARTICS, TRUE, 0); + for(UINT i=value_max; i>=value_min;i-=value_step) + { + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETTIC, 0, i); + } + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETLINESIZE, 0, value_step); + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETPAGESIZE, 0, value_step); + + value = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_GETPOS, NULL, NULL); + wsprintf(tmp,"%3d",value); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_SAMPLE_VALUE), tmp); +} + +void AEncodeProperties::EnableAbrOptions(HWND hDialog, bool enable) +{ + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_MIN), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_MAX), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_STEP), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_SAMPLE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MIN), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MAX), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_STEP), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_SAMPLE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MIN_VALUE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MAX_VALUE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_STEP_VALUE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_SAMPLE_VALUE), enable); +} + diff --git a/lame-3.97/ACM/.svn/text-base/AEncodeProperties.h.svn-base b/lame-3.97/ACM/.svn/text-base/AEncodeProperties.h.svn-base new file mode 100644 index 0000000..4d2e1db --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/AEncodeProperties.h.svn-base @@ -0,0 +1,448 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: AEncodeProperties.h,v 1.5 2002/04/07 13:31:35 robux4 Exp $ +*/ + +#if !defined(_AENCODEPROPERTIES_H__INCLUDED_) +#define _AENCODEPROPERTIES_H__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include <windows.h> +#include <string> + +#include "ADbg/ADbg.h" +//#include "BladeMP3EncDLL.h" +#include "tinyxml/tinyxml.h" +//#include "AParameters/AParameters.h" + +typedef const struct { + UINT id; + const char *tip; +} ToolTipItem; +/** + \class AEncodeProperties + \brief the AEncodeProperties class is responsible for handling all the encoding properties +*/ +class AEncodeProperties +{ +public: + /** + \brief default constructor + + \param the windows module with which you can retrieve many informations + */ + AEncodeProperties(HMODULE hModule); + + /** + \brief default destructor + */ + virtual ~AEncodeProperties() {} + + /** + \enum BRMode + \brief A bitrate mode (CBR, VBR, ABR) + */ + enum BRMode { BR_CBR, BR_VBR, BR_ABR }; + + /** + \brief Handle all the commands that occur in the Config dialog box + */ + bool HandleDialogCommand(const HWND parentWnd, const WPARAM wParam, const LPARAM lParam); + /** + \brief check wether 2 instances are equal, ie have the same encoding parameters + */ + bool operator != (const AEncodeProperties & the_instance) const; + + /** + \brief Check wether the Encode process should use the Copyright bit + */ + inline const bool GetCopyrightMode() const { return bCopyright; } + /** + \brief Check wether the Encode process should use the CRC bit + */ + inline const bool GetCRCMode() const { return bCRC; } + /** + \brief Check wether the Encode process should use the Original bit + */ + inline const bool GetOriginalMode() const { return bOriginal; } + /** + \brief Check wether the Encode process should use the Private bit + */ + inline const bool GetPrivateMode() const { return bPrivate; } + /** + \brief Check wether the Encode process should use the Smart Bitrate output + */ + inline const bool GetSmartOutputMode() const { return bSmartOutput; } + /** + \brief Check wether the Encode process should allow Average Bitrate output + */ + inline const bool GetAbrOutputMode() const { return bAbrOutput; } + + /** + \brief Check wether the Encode process shouldn't use the Bit Reservoir + */ + inline const bool GetNoBiResMode() const { return bNoBitRes; } + + /** + \brief Check wether the Encode process should force the channel mode (stereo or mono resampling) + */ + inline const bool GetForceChannelMode() const { return bForceChannel; } + + /** + \brief Check wether the Encode process should use the VBR mode + */ + inline const BRMode GetVBRUseMode() const { return mBRmode; } + /** + \brief Check wether the Encode process should use the Xing frame in the VBR mode + \note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file. + */ + inline const bool GetXingFrameMode() const { return bXingFrame; } + + /** + \brief Check wether the Encode process should resample before encoding + */ + inline const bool GetResampleMode() const { return bResample; } + + /** + \brief Set wether the Encode process should use the Copyright bit + */ + inline void SetCopyrightMode(const bool bMode) { bCopyright = bMode; } + /** + \brief Set wether the Encode process should use the CRC bit + */ + inline void SetCRCMode(const bool bMode) { bCRC = bMode; } + /** + \brief Set wether the Encode process should use the Original bit + */ + inline void SetOriginalMode(const bool bMode) { bOriginal = bMode; } + /** + \brief Set wether the Encode process should use the Private bit + */ + inline void SetPrivateMode(const bool bMode) { bPrivate = bMode; } + + /** + \brief Set wether the Encode process should use the Smart Bitrate output + */ + inline void SetSmartOutputMode(const bool bMode) { bSmartOutput = bMode; } + /** + \brief Set wether the Encode process should use the Average Bitrate output + */ + inline void SetAbrOutputMode(const bool bMode) { bAbrOutput = bMode; } + + + /** + \brief Set wether the Encode process shouldn't use the Bit Reservoir + */ + inline void SetNoBiResMode(const bool bMode) { bNoBitRes = bMode; } + + /** + \brief Set wether the Encode process should force the channel mode (stereo or mono resampling) + */ + inline void SetForceChannelMode(const bool bMode) { bForceChannel = bMode; } + + /** + \brief Set wether the Encode process should use the VBR mode + */ + inline void SetVBRUseMode(const BRMode mode) { mBRmode = mode; } + + /** + \brief Set wether the Encode process should use the Xing frame in the VBR mode + \note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file. + */ + inline void SetXingFrameMode(const bool bMode) { bXingFrame = bMode; } + + /** + \brief CBR : Get the bitrate to use / + VBR : Get the minimum bitrate value + */ + const unsigned int GetBitrateValue() const; + + /** + \brief Get the current (VBR:min) bitrate for the specified MPEG version + + \param bitrate the data that will be filled with the bitrate + \param MPEG_Version The MPEG version (MPEG1 or MPEG2) + + \return 0 if the bitrate is not found, 1 if the bitrate is found + */ + const int GetBitrateValue(DWORD & bitrate, const DWORD MPEG_Version) const; + /** + \brief Get the current (VBR:min) bitrate for MPEG I + + \param bitrate the data that will be filled with the bitrate + + \return 0 if the bitrate is not found, 1 if the bitrate is found + */ + const int GetBitrateValueMPEG1(DWORD & bitrate) const; + /** + \brief Get the current (VBR:min) bitrate for MPEG II + + \param bitrate the data that will be filled with the bitrate + + \return 0 if the bitrate is not found, 1 if the bitrate is found + */ + const int GetBitrateValueMPEG2(DWORD & bitrate) const; + + /** + \brief Get the current (VBR:min) bitrate in the form of a string + + \param string the string that will be filled + \param string_size the size of the string + + \return -1 if the bitrate is not found, and the number of char copied otherwise + */ + inline const int GetBitrateString(char * string, int string_size) const {return GetBitrateString(string,string_size,nMinBitrateIndex); } + + /** + \brief Get the (VBR:min) bitrate corresponding to the specified index in the form of a string + + \param string the string that will be filled + \param string_size the size of the string + \param a_bitrateID the index in the Bitrate table + + \return -1 if the bitrate is not found, and the number of char copied otherwise + */ + const int GetBitrateString(char * string, int string_size, int a_bitrateID) const; + + /** + \brief Get the number of possible bitrates + */ + inline const int GetBitrateLentgh() const { return sizeof(the_Bitrates) / sizeof(unsigned int); } + /** + \brief Get the number of possible sampling frequencies + */ + inline const unsigned int GetResampleFreq() const { return the_SamplingFreqs[nSamplingFreqIndex]; } + /** + \brief Get the max compression ratio allowed (1:15 default) + */ + inline double GetSmartRatio() const { return SmartRatioMax;} + /** + \brief Get the min ABR bitrate possible + */ + inline unsigned int GetAbrBitrateMin() const { return AverageBitrate_Min;} + /** + \brief Get the max ABR bitrate possible + */ + inline unsigned int GetAbrBitrateMax() const { return AverageBitrate_Max;} + /** + \brief Get the step between ABR bitrates + */ + inline unsigned int GetAbrBitrateStep() const { return AverageBitrate_Step;} + + /** + \brief Get the VBR attributes for a specified MPEG version + + \param MaxBitrate receive the maximum bitrate possible in the VBR mode + \param Quality receive the quality value (0 to 9 see Lame doc for more info) + \param VBRHeader receive the value that indicates wether the VBR/Xing header should be filled + \param MPEG_Version The MPEG version (MPEG1 or MPEG2) + + \return the VBR mode (Old, New, ABR, MTRH, Default or None) + */ +// VBRMETHOD GetVBRValue(DWORD & MaxBitrate, int & Quality, DWORD & AbrBitrate, BOOL & VBRHeader, const DWORD MPEG_Version) const; + + /** + \brief Get the Lame DLL Location + */ +// const char * GetDllLocation() const { return DllLocation.c_str(); } + /** + \brief Set the Lame DLL Location + */ +// void SetDllLocation( const char * the_string ) { DllLocation = the_string; } + + /** + \brief Get the output directory for encoding + */ +// const char * GetOutputDirectory() const { return OutputDir.c_str(); } + /** + \brief Set the output directory for encoding + */ +// void SetOutputDirectory( const char * the_string ) { OutputDir = the_string; } + + /** + \brief Get the current channel mode to use + */ + const unsigned int GetChannelModeValue() const; + /** + \brief Get the current channel mode in the form of a string + */ + inline const char * GetChannelModeString() const {return GetChannelModeString(nChannelIndex); } + /** + \brief Get the channel mode in the form of a string for the specified Channel mode index + + \param a_channelID the Channel mode index (see GetChannelLentgh()) + */ + const char * GetChannelModeString(const int a_channelID) const; + /** + \brief Get the number of possible channel mode + */ + inline const int GetChannelLentgh() const { return 3; } + + /** + \brief Get the current preset to use, see lame documentation/code for more info on the possible presets + */ +// const LAME_QUALTIY_PRESET GetPresetModeValue() const; + /** + \brief Get the preset in the form of a string for the specified Channel mode index + + \param a_presetID the preset index (see GetPresetLentgh()) + */ + const char * GetPresetModeString(const int a_presetID) const; + /** + \brief Get the number of possible presets + */ +// inline const int GetPresetLentgh() const { return sizeof(the_Presets) / sizeof(LAME_QUALTIY_PRESET); } + + /** + \brief Start the user configuration process (called by AOut::config()) + */ + bool Config(const HINSTANCE hInstance, const HWND HwndParent); + + /** + \brief Init the config dialog box with the right texts and choices + */ + bool InitConfigDlg(HWND hDialog); + + /** + \brief Update the instance parameters from the config dialog box + */ + bool UpdateValueFromDlg(HWND hDialog); + /** + \brief Update the config dialog box from the instance parameters + */ + bool UpdateDlgFromValue(HWND hDialog); + + /** + \brief Update the config dialog box with the BitRate mode + */ + static void DisplayVbrOptions(const HWND hDialog, const BRMode the_mode); + + /** + \brief Handle the saving of parameters when something has changed in the config dialog box + */ + void SaveParams(const HWND hDialog); + + /** + \brief Save the current parameters (current config in use) + */ + void ParamsSave(void); + /** + \brief Load the parameters (current config in use) + */ + void ParamsRestore(void); + + /** + \brief Select the specified config name as the new default one + */ + void SelectSavedParams(const std::string config_name); + /** + \brief Save the current parameters to the specified config name + */ + void SaveValuesToStringKey(const std::string & config_name); + /** + \brief Rename the current config name to something else + */ + bool RenameCurrentTo(const std::string & new_config_name); + /** + \brief Delete the config name from the saved configs + */ + bool DeleteConfig(const std::string & config_name); + + ADbg my_debug; + + /** + \brief Update the slides value (on scroll) + */ + void UpdateDlgFromSlides(HWND parent_window) const; + + static ToolTipItem Tooltips[13]; +private: + + bool bCopyright; + bool bCRC; + bool bOriginal; + bool bPrivate; + bool bNoBitRes; + BRMode mBRmode; + bool bXingFrame; + bool bForceChannel; + bool bResample; + bool bSmartOutput; + bool bAbrOutput; + + int VbrQuality; + unsigned int AverageBitrate_Min; + unsigned int AverageBitrate_Max; + unsigned int AverageBitrate_Step; + + double SmartRatioMax; + + static const unsigned int the_ChannelModes[3]; + int nChannelIndex; + + static const unsigned int the_Bitrates[18]; + static const unsigned int the_MPEG1_Bitrates[14]; + static const unsigned int the_MPEG2_Bitrates[14]; + int nMinBitrateIndex; // CBR and VBR + int nMaxBitrateIndex; // only used in VBR mode + + static const unsigned int the_SamplingFreqs[9]; + int nSamplingFreqIndex; + +// static const LAME_QUALTIY_PRESET the_Presets[17]; + int nPresetIndex; + +// char DllLocation[512]; +// std::string DllLocation; +// char OutputDir[MAX_PATH]; +// std::string OutputDir; + +// AParameters my_base_parameters; + TiXmlDocument my_stored_data; + std::string my_store_location; + std::string my_current_config; + +// HINSTANCE hDllInstance; + + void SaveValuesToElement(TiXmlElement * the_element) const; + inline void SetAttributeBool(TiXmlElement * the_elt,const std::string & the_string, const bool the_value) const; + void UpdateConfigs(const HWND HwndDlg); + void EnableAbrOptions(HWND hDialog, bool enable); + + HMODULE my_hModule; + + /** + \brief + + \param config_name + \param parentNode + */ + void GetValuesFromKey(const std::string & config_name, const TiXmlNode & parentNode); +}; + +#endif // !defined(_AENCODEPROPERTIES_H__INCLUDED_) diff --git a/lame-3.97/ACM/.svn/text-base/DecodeStream.cpp.svn-base b/lame-3.97/ACM/.svn/text-base/DecodeStream.cpp.svn-base new file mode 100644 index 0000000..c2c753c --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/DecodeStream.cpp.svn-base @@ -0,0 +1,242 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: DecodeStream.cpp,v 1.3 2002/01/25 17:51:42 robux4 Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <assert.h> +#include <windows.h> + +#ifdef ENABLE_DECODING + +#include "adebug.h" + +#include "DecodeStream.h" + +// static methods + +DecodeStream * DecodeStream::Create() +{ + DecodeStream * Result; + + Result = new DecodeStream; + + return Result; +} + +const bool DecodeStream::Erase(const DecodeStream * a_ACMStream) +{ + delete a_ACMStream; + return true; +} + +// class methods + +DecodeStream::DecodeStream() : + m_WorkingBufferUseSize(0), + gfp(NULL) +{ + /// \todo get the debug level from the registry +my_debug = new ADbg(DEBUG_LEVEL_CREATION); + if (my_debug != NULL) { + unsigned char DebugFileName[512]; + + my_debug->setPrefix("MPG123stream"); /// \todo get it from the registry +my_debug->setIncludeTime(true); /// \todo get it from the registry + +// Check in the registry if we have to Output Debug information +DebugFileName[0] = '\0'; + + HKEY OssKey; + if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { + DWORD DataType; + DWORD DebugFileNameSize = 512; + if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { + if (DataType == REG_SZ) { + my_debug->setUseFile(true); + my_debug->setDebugFile((char *)DebugFileName); + my_debug->OutPut("Debug file is %s",(char *)DebugFileName); + } + } + } + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "DecodeStream Creation (0X%08X)",this); + } + else { + ADbg debug; + debug.OutPut("DecodeStream::ACMACMStream : Impossible to create my_debug"); + } + +} + +DecodeStream::~DecodeStream() +{ +// lame_close( gfp ); + + if (my_debug != NULL) + { + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "DecodeStream Deletion (0X%08X)",this); + delete my_debug; + } +} + +bool DecodeStream::init(const int nSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const int nSourceBitrate) +{ + bool bResult = false; + + my_SamplesPerSec = nSamplesPerSec; + my_Channels = nChannels; + my_AvgBytesPerSec = nAvgBytesPerSec; + my_SourceBitrate = nSourceBitrate; + + bResult = true; + + return bResult; +} + +bool DecodeStream::open() +{ + bool bResult = false; + + bResult = bool(InitMP3(&my_DecodeData) != 0); + + return bResult; +} + +bool DecodeStream::close(LPBYTE pOutputBuffer, DWORD *pOutputSize) +{ + + bool bResult = false; +/* + int nOutputSamples = 0; + + nOutputSamples = lame_encode_flush( gfp, pOutputBuffer, 0 ); + + if ( nOutputSamples < 0 ) + { + // BUFFER_TOO_SMALL + *pOutputSize = 0; + } + else + { + *pOutputSize = nOutputSamples; + + bResult = true; + } +/* + // lame will be close in VbrWriteTag function + if ( !lame_get_bWriteVbrTag( gfp ) ) + { + // clean up of allocated memory + lame_close( gfp ); + } +*/ + + ExitMP3(&my_DecodeData); + + bResult = true; + + return bResult; +} + +DWORD DecodeStream::GetOutputSizeForInput(const DWORD the_SrcLength) const +{ + DWORD Result; + + double OutputInputRatio = double(my_SamplesPerSec * 2 * my_Channels) / double(my_SourceBitrate); + + OutputInputRatio *= 1.15; // allow 15% more + + Result = DWORD(double(the_SrcLength) * OutputInputRatio); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "Result = %d (OutputInputRatio = %f)",Result,OutputInputRatio); + + return Result; +} + +bool DecodeStream::ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader) +{ + bool result = false; + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "enter DecodeStream::ConvertBuffer"); +} + + int ProcessedBytes; + + int ret = decodeMP3(&my_DecodeData, a_StreamHeader->pbSrc, a_StreamHeader->cbSrcLength, (char *)a_StreamHeader->pbDst, a_StreamHeader->cbDstLength, &ProcessedBytes); + + switch (ret) + { + case MP3_OK: + a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; + a_StreamHeader->cbDstLengthUsed = ProcessedBytes; + result = true; + break; + case MP3_NEED_MORE: + a_StreamHeader->cbSrcLengthUsed = 0; + a_StreamHeader->cbDstLengthUsed = 0; + break; + case MP3_ERR: + break; + } + +/* + DWORD InSize = a_StreamHeader->cbSrcLength / 2, OutSize = a_StreamHeader->cbDstLength; // 2 for 8<->16 bits + +// Encode it +int dwSamples; + int nOutputSamples = 0; + + dwSamples = InSize / lame_get_num_channels( gfp ); + + if ( 1 == lame_get_num_channels( gfp ) ) + { + nOutputSamples = lame_encode_buffer(gfp,(PSHORT)a_StreamHeader->pbSrc,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + else + { + nOutputSamples = lame_encode_buffer_interleaved(gfp,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + + a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; + a_StreamHeader->cbDstLengthUsed = nOutputSamples; + + result = a_StreamHeader->cbDstLengthUsed <= a_StreamHeader->cbDstLength; +*/ + my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "UsedSize = %d / EncodedSize = %d, result = %d, ret = %s", a_StreamHeader->cbSrcLengthUsed, a_StreamHeader->cbDstLengthUsed, result, + (ret == MP3_OK)?"MP3_OK":(ret == MP3_NEED_MORE)?"MP3_NEED_MORE":"error"); + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "DecodeStream::ConvertBuffer result = %d",result); +} + + return result; +} +#endif // ENABLE_DECODING diff --git a/lame-3.97/ACM/.svn/text-base/DecodeStream.h.svn-base b/lame-3.97/ACM/.svn/text-base/DecodeStream.h.svn-base new file mode 100644 index 0000000..1e6c1ee --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/DecodeStream.h.svn-base @@ -0,0 +1,83 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: DecodeStream.h,v 1.1 2002/01/23 20:39:46 robux4 Exp $ +*/ + +#if !defined(_DECODESTREAM_H__INCLUDED_) +#define _DECODESTREAM_H__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include "ADbg/ADbg.h" + +#include <config.h> +#include "util.h" +#include "interface.h" + +class DecodeStream +{ +public: + DecodeStream( ); + virtual ~DecodeStream( ); + + static DecodeStream * Create(); + static const bool Erase(const DecodeStream * a_ACMStream); + + bool init(const int nSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const int nSourceBitrate); + bool open(); + bool close(LPBYTE pOutputBuffer, DWORD *pOutputSize); + + DWORD GetOutputSizeForInput(const DWORD the_SrcLength) const; + bool ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader); + + static unsigned int GetOutputSampleRate(int samples_per_sec, int bitrate, int channels); + +protected: + lame_global_flags * gfp; + + ADbg * my_debug; + int my_SamplesPerSec; + int my_Channels; + int my_AvgBytesPerSec; + DWORD my_SamplesPerBlock; + int my_SourceBitrate; + + MPSTR my_DecodeData; + + unsigned int m_WorkingBufferUseSize; + char m_WorkingBuffer[2304*2]; // should be at least twice my_SamplesPerBlock + + inline int GetBytesPerBlock(DWORD bytes_per_sec, DWORD samples_per_sec, int BlockAlign) const; + +}; + +#endif // !defined(_DECODESTREAM_H__INCLUDED_) + diff --git a/lame-3.97/ACM/.svn/text-base/LameACM.inf.svn-base b/lame-3.97/ACM/.svn/text-base/LameACM.inf.svn-base new file mode 100644 index 0000000..be70430 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/LameACM.inf.svn-base @@ -0,0 +1,91 @@ +; Lame codec +; enable MP3 compression in Windows + +; Usage : right-click on this file and choose "Install" in the pop up menu + +[Version] +Signature = "$CHICAGO$" +Class = MEDIA + +[SourceDisksNames] +1="Lame MP3 Install Disk",, 0001 + +[SourceDisksFiles] +LameACM.inf=1 +LameACM.acm=1 +lame_acm.xml=1 + +[Installable.Drivers] +lameacm = 1:LameACM.acm, "msacm.lameacm", %DisplayNameWin% , , , + +[DefaultInstall] +CopyFiles = LameACM.Copy,LameACM.Copy.Inf +Updateinis = LameACM.Updateini +;addreg = LameACM.AddReg,LameACM.AddReg9x,LameACM.DoReg +addreg = LameACM.AddReg,LameACM.AddReg9x +MediaType = SOFTWARE + +[DefaultInstall.ntx86] +CopyFiles = LameACM.Copy,LameACM.Copy.Inf +;addreg = LameACM.AddReg,LameACM.AddRegNT,LameACM.DoReg +addreg = LameACM.AddReg,LameACM.AddRegNT +MediaType = SOFTWARE + +[Remove_LameMP3] +;AddReg = LameACM.Unregister +DelReg = LameACM.DelReg +DelFiles = LameACM.Copy,LameACM.Copy.Inf +UpdateInis = LameACM.UpdateIni + +[LameACM.Copy] +LameACM.acm +lame_acm.xml + +[LameACM.Copy.Inf] +LameACM.inf + +[LameACM.UpdateIni] +system.ini, drivers32,,"msacm.lameacm=LameACM.acm" + +[LameACM.AddReg] +HKLM, "Software\Microsoft\Windows NT\CurrentVersion\Drivers32","msacm.lameacm",,"LameACM.acm" +HKLM, "Software\Microsoft\Windows NT\CurrentVersion\Drivers.desc","LameACM.acm",,%DisplayNameWin% + + +[LameACM.AddReg9x] +HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,Description,,%DisplayNameWin% +HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,Driver,,LameACM.acm +HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,FriendlyName,,%DisplayNameWin% +HKLM,%UnInstallPath%,DisplayName,,%DisplayNameWin% +HKLM,%UnInstallPath%,UninstallString,,"%10%\rundll.exe setupx.dll,InstallHinfSection Remove_LameMP3 132 %17%\%InfFile%" + +[LameACM.AddRegNT] +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32","msacm.lameacm",,"LameACM.acm" +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc","LameACM.acm",,%DisplayNameWin% +HKLM,%UnInstallPath%,DisplayName,,%DisplayNameWin% +HKLM,%UnInstallPath%,UninstallString,,"%11%\rundll32.exe setupapi,InstallHinfSection Remove_LameMP3 132 %17%\%InfFile%" + +;[LameACM.DoReg] +;HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,"Lame ACM MP3 Codec",,"%11%\regsvr32.exe /s %11%\LameCom.acm" + +[LameACM.DelReg] +HKLM,"SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm" +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc","LameACM.acm",,"" +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32","msacm.lameacm",,"" +HKLM,%UnInstallPath% + +;[LameACM.Unregister] +;HKLM,"Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup","Lame ACM MP3 Codec",,"%11%\regsvr32.exe /s /u %11%\LameCom.acm" + +[DestinationDirs] +DefaultDestDir = 11 ; LDID_SYS +LameACM.Copy = 11 +LameACM.Copy.Inf = 17 + +[Strings] +InfFile="LameACM.inf" +DisplayNameWin="Lame ACM MP3 Codec" +UnInstallPath="Software\Microsoft\Windows\CurrentVersion\Uninstall\LameACM" +MediaClassName="Media Devices" +mfgname="Steve Lhomme" + diff --git a/lame-3.97/ACM/.svn/text-base/Makefile.am.svn-base b/lame-3.97/ACM/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..c05a1cf --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,28 @@ +## $Id: Makefile.am,v 1.6 2005/08/21 17:32:07 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +SUBDIRS = ADbg ddk tinyxml + +EXTRA_DIST = \ + ACM.cpp \ + ACM.h \ + ACMStream.cpp \ + ACMStream.h \ + AEncodeProperties.cpp \ + AEncodeProperties.h \ + DecodeStream.cpp \ + DecodeStream.h \ + LameACM.inf \ + TODO \ + acm.rc \ + adebug.h \ + lame.ico \ + lameACM.def \ + lameACM_vc6.dsp \ + lameACM_vc7.vcproj \ + lame_acm.xml \ + main.cpp \ + readme.txt \ + resource.h + diff --git a/lame-3.97/ACM/.svn/text-base/Makefile.in.svn-base b/lame-3.97/ACM/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..9af2561 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,527 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global TODO +subdir = ACM +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +SUBDIRS = ADbg ddk tinyxml +EXTRA_DIST = \ + ACM.cpp \ + ACM.h \ + ACMStream.cpp \ + ACMStream.h \ + AEncodeProperties.cpp \ + AEncodeProperties.h \ + DecodeStream.cpp \ + DecodeStream.h \ + LameACM.inf \ + TODO \ + acm.rc \ + adebug.h \ + lame.ico \ + lameACM.def \ + lameACM_vc6.dsp \ + lameACM_vc7.vcproj \ + lame_acm.xml \ + main.cpp \ + readme.txt \ + resource.h + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-libtool \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/.svn/text-base/TODO.svn-base b/lame-3.97/ACM/.svn/text-base/TODO.svn-base new file mode 100644 index 0000000..c88aba2 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/TODO.svn-base @@ -0,0 +1,9 @@ +- known bug : when recording, converting, and recording a lame_close() call fail +- allow decompression the same way as in the command-line +- allow VBR mode +- allow channel resampling (mono to stereo / stereo to mono) +- allow internal resampling (difference in the format suggestion) +- use global pointers for string +- use the bitrate/freq tables from LAME + +/ add the decoding engine diff --git a/lame-3.97/ACM/.svn/text-base/acm.rc.svn-base b/lame-3.97/ACM/.svn/text-base/acm.rc.svn-base new file mode 100644 index 0000000..d86837f --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/acm.rc.svn-base @@ -0,0 +1,219 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,9,1,0 + PRODUCTVERSION 0,9,1,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x3L + FILESUBTYPE 0x8L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "This is an ACM driver for Win32 using Lame to encode\0" + VALUE "CompanyName", "http://www.mp3dev.org/\0" + VALUE "FileDescription", "Lame MP3 codec engine\0" + VALUE "FileVersion", "0.9.1\0" + VALUE "InternalName", "lameACM\0" + VALUE "LegalCopyright", "Copyright � 2002 Steve Lhomme, Copyright � 2002-2004 The LAME Project\0" + VALUE "LegalTrademarks", "LGPL (see gnu.org)\0" + VALUE "OriginalFilename", "lameACM.acm\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "Lame MP3 codec\0" + VALUE "ProductVersion", "0.9.1\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON ICON DISCARDABLE "lame.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 231, 204 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Lame MP3 codec : About" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,183,50,14 + PUSHBUTTON "Cancel",IDCANCEL,125,183,50,14 + GROUPBOX "Encoding",IDC_STATIC,7,7,142,166 + GROUPBOX "Decoding",IDC_STATIC_DECODING,154,7,70,113,WS_DISABLED + GROUPBOX "Bits",IDC_STATIC,16,121,124,42 + CONTROL "Copyright",IDC_CHECK_COPYRIGHT,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,23,132,45,10 + CONTROL "Checksum",IDC_CHECK_CHECKSUM,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,84,132,49,10 + CONTROL "Original",IDC_CHECK_ORIGINAL,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,23,148,39,10 + CONTROL "Private",IDC_CHECK_PRIVATE,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,84,148,38,10 + COMBOBOX IDC_COMBO_ENC_STEREO,70,21,60,53,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Stereo mode",IDC_STATIC,23,24,41,8 + CONTROL "Smart Encode",IDC_CHECK_ENC_SMART,"Button", + BS_AUTOCHECKBOX | BS_FLAT | WS_GROUP | WS_TABSTOP,49,39, + 61,10 + ICON IDI_ICON,IDC_STATIC_ENC_ICON,179,129,20,20 + CTEXT "v0.0.0 - 0.00",IDC_STATIC_CONFIG_VERSION,168,155,43,17 + CONTROL "Average BitRate",IDC_CHECK_ENC_ABR,"Button", + BS_AUTOCHECKBOX | BS_FLAT | WS_GROUP | WS_TABSTOP,49,53, + 68,10 + LTEXT "Min",IDC_STATIC_AVERAGE_MIN,19,67,12,8 + LTEXT "Max",IDC_STATIC_AVERAGE_MAX,17,79,14,8 + LTEXT "Step",IDC_STATIC_AVERAGE_STEP,15,91,16,8 + LTEXT "test",IDC_STATIC_AVERAGE_SAMPLE,19,105,12,8 + CONTROL "Slider2",IDC_SLIDER_AVERAGE_MIN,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | + WS_TABSTOP,33,67,92,11 + CONTROL "Slider3",IDC_SLIDER_AVERAGE_MAX,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | + WS_TABSTOP,33,79,92,11 + CONTROL "Slider1",IDC_SLIDER_AVERAGE_STEP,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | + WS_TABSTOP,33,91,92,11 + CONTROL "Slider4",IDC_SLIDER_AVERAGE_SAMPLE,"msctls_trackbar32", + WS_TABSTOP,33,104,92,12 + CTEXT "000",IDC_STATIC_AVERAGE_SAMPLE_VALUE,125,105,15,9,0, + WS_EX_STATICEDGE + CTEXT "000",IDC_STATIC_AVERAGE_STEP_VALUE,125,92,15,9,0, + WS_EX_STATICEDGE + CTEXT "000",IDC_STATIC_AVERAGE_MAX_VALUE,125,80,15,9,0, + WS_EX_STATICEDGE + CTEXT "000",IDC_STATIC_AVERAGE_MIN_VALUE,125,67,15,9,0, + WS_EX_STATICEDGE +END + +IDD_ABOUT DIALOG DISCARDABLE 0, 0, 187, 77 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Lame MP3 codec : About" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,130,56,50,14 + LTEXT "Steve Lhomme + LAME developers",IDC_STATIC,7,33,112,8 + LTEXT "LGPL license",IDC_STATIC,7,20,43,8 + ICON IDI_ICON,IDC_STATIC,145,16,20,20 + LTEXT "Static",IDC_STATIC_ABOUT_TITLE,7,7,173,8 + LTEXT "http://www.mp3dev.org/",IDC_STATIC_ABOUT_URL,7,47,80,8 + LTEXT "icon : Lucas Granito",IDC_STATIC,7,61,64,8 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 224 + TOPMARGIN, 7 + BOTTOMMARGIN, 197 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 180 + TOPMARGIN, 7 + BOTTOMMARGIN, 70 + END +END +#endif // APSTUDIO_INVOKED + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lame-3.97/ACM/.svn/text-base/adebug.h.svn-base b/lame-3.97/ACM/.svn/text-base/adebug.h.svn-base new file mode 100644 index 0000000..32ec192 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/adebug.h.svn-base @@ -0,0 +1,39 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: adebug.h,v 1.2 2002/01/22 19:45:02 robux4 Exp $ +*/ + +#if !defined(_DEBUG_H__INCLUDED_) +#define _DEBUG_H__INCLUDED_ + +#define DEBUG_LEVEL_CREATION 0 + +#define DEBUG_LEVEL_MSG 0 +#define DEBUG_LEVEL_FUNC_START 1 +#define DEBUG_LEVEL_FUNC_DEBUG 2 +#define DEBUG_LEVEL_FUNC_CODE 3 + +#endif /* !defined(_DEBUG_H__INCLUDED_) */ + diff --git a/lame-3.97/ACM/.svn/text-base/lame.ico.svn-base b/lame-3.97/ACM/.svn/text-base/lame.ico.svn-base new file mode 100644 index 0000000..5610b8c --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/lame.ico.svn-base Binary files differ diff --git a/lame-3.97/ACM/.svn/text-base/lameACM.def.svn-base b/lame-3.97/ACM/.svn/text-base/lameACM.def.svn-base new file mode 100644 index 0000000..3dbe1b4 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/lameACM.def.svn-base @@ -0,0 +1,25 @@ +; Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows +; +; Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2.1 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +LIBRARY lameACM + +DESCRIPTION 'lameACM.acm: MP3 Lame ACM Codec' + +EXPORTS DriverProc + +; EOF diff --git a/lame-3.97/ACM/.svn/text-base/lameACM_vc6.dsp.svn-base b/lame-3.97/ACM/.svn/text-base/lameACM_vc6.dsp.svn-base new file mode 100644 index 0000000..e79e3ad --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/lameACM_vc6.dsp.svn-base @@ -0,0 +1,246 @@ +# Microsoft Developer Studio Project File - Name="lameACM" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=lameACM - Win32 Debug NASM +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "lameACM_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "lameACM_vc6.mak" CFG="lameACM - Win32 Debug NASM" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "lameACM - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "lameACM - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "lameACM - Win32 Debug NASM" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "lameACM - Win32 Release NASM" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "lameACM - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MT /W3 /GX /Ox /Ot /Og /Ob2 /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "NDEBUG" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libc.lib libcp.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ELSEIF "$(CFG)" == "lameACM - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MTd /W3 /GX /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "_DEBUG" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libcd.lib libcpd.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" /pdbtype:sept +# SUBTRACT LINK32 /map +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ELSEIF "$(CFG)" == "lameACM - Win32 Debug NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_NASM" +# PROP BASE Intermediate_Dir "Debug_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug_NASM" +# PROP Intermediate_Dir "Debug_NASM" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /Zp2 /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MTd /W3 /GX /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "_DEBUG" /D "HAVE_NASM" /D "MMX_choose_table" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# SUBTRACT BASE LINK32 /map +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libcd.lib libcpd.lib ADbg/Debug/adbg.lib tinyxml/Debug/tinyxml.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" /pdbtype:sept +# SUBTRACT LINK32 /map +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ELSEIF "$(CFG)" == "lameACM - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_NASM" +# PROP BASE Intermediate_Dir "Release_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_NASM" +# PROP Intermediate_Dir "Release_NASM" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /Zp2 /MT /W3 /GX /Ox /Ot /Og /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MT /W3 /GX /Ox /Ot /Og /Ob2 /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "NDEBUG" /D "HAVE_NASM" /D "MMX_choose_table" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /map /machine:I386 +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libc.lib libcp.lib ADbg\Release\adbg.lib tinyxml/Release/tinyxml.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "lameACM - Win32 Release" +# Name "lameACM - Win32 Debug" +# Name "lameACM - Win32 Debug NASM" +# Name "lameACM - Win32 Release NASM" +# Begin Group "Source" + +# PROP Default_Filter "c;cpp" +# Begin Source File + +SOURCE=.\ACM.cpp +# End Source File +# Begin Source File + +SOURCE=.\ACMStream.cpp +# End Source File +# Begin Source File + +SOURCE=.\AEncodeProperties.cpp +# End Source File +# Begin Source File + +SOURCE=.\DecodeStream.cpp +# End Source File +# Begin Source File + +SOURCE=.\lameACM.def +# End Source File +# Begin Source File + +SOURCE=.\main.cpp +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\ACM.h +# End Source File +# Begin Source File + +SOURCE=.\ACMStream.h +# End Source File +# Begin Source File + +SOURCE=.\adebug.h +# End Source File +# Begin Source File + +SOURCE=.\AEncodeProperties.h +# End Source File +# Begin Source File + +SOURCE=.\DecodeStream.h +# End Source File +# End Group +# Begin Group "Resource" + +# PROP Default_Filter "rc" +# Begin Source File + +SOURCE=.\acm.rc +# End Source File +# Begin Source File + +SOURCE=.\lame.ico +# End Source File +# End Group +# Begin Group "Install" + +# PROP Default_Filter "inf;acm" +# Begin Source File + +SOURCE=.\LameACM.inf +# End Source File +# End Group +# Begin Source File + +SOURCE=.\readme.txt +# End Source File +# Begin Source File + +SOURCE=.\TODO +# End Source File +# End Target +# End Project diff --git a/lame-3.97/ACM/.svn/text-base/lameACM_vc7.vcproj.svn-base b/lame-3.97/ACM/.svn/text-base/lameACM_vc7.vcproj.svn-base new file mode 100644 index 0000000..572c55f --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/lameACM_vc7.vcproj.svn-base @@ -0,0 +1,1197 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="lameACM" + ProjectGUID="{88A0CD70-E576-456B-9C13-1D6AD838B87E}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug NASM|Win32" + OutputDirectory=".\Debug_NASM" + IntermediateDirectory=".\Debug_NASM" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug_NASM/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug_NASM/" + ObjectFile=".\Debug_NASM/" + ProgramDataBaseFileName=".\Debug_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib ADbg/Debug/adbg.lib tinyxml/Debug/tinyxml.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug_NASM/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug_NASM/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug_NASM/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lameACM_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release NASM|Win32" + OutputDirectory=".\Release_NASM" + IntermediateDirectory=".\Release_NASM" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release_NASM/lameACM_vc6.pch" + AssemblerListingLocation=".\Release_NASM/" + ObjectFile=".\Release_NASM/" + ProgramDataBaseFileName=".\Release_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib ADbg\Release\adbg.lib tinyxml/Release/tinyxml.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release_NASM/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release_NASM/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release_NASM/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release_NASM/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lameACM_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lameACM_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source" + Filter="c;cpp"> + <File + RelativePath="ACM.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="ACMStream.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="AEncodeProperties.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="DecodeStream.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="lameACM.def"> + </File> + <File + RelativePath="main.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Include" + Filter="h"> + <File + RelativePath="ACM.h"> + </File> + <File + RelativePath="ACMStream.h"> + </File> + <File + RelativePath="adebug.h"> + </File> + <File + RelativePath="AEncodeProperties.h"> + </File> + <File + RelativePath="DecodeStream.h"> + </File> + </Filter> + <Filter + Name="Resource" + Filter="rc"> + <File + RelativePath="acm.rc"> + </File> + <File + RelativePath="lame.ico"> + </File> + </Filter> + <Filter + Name="Install" + Filter="inf;acm"> + <File + RelativePath="LameACM.inf"> + </File> + </Filter> + <File + RelativePath="readme.txt"> + </File> + <File + RelativePath="TODO"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/ACM/.svn/text-base/lame_acm.xml.svn-base b/lame-3.97/ACM/.svn/text-base/lame_acm.xml.svn-base new file mode 100644 index 0000000..0fc5186 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/lame_acm.xml.svn-base @@ -0,0 +1,13 @@ +<lame_acm> + <encodings default="Current"> + <config name="Current"> + <Smart use="true" /> + <Copyright use="true" /> + <CRC use="true" /> + <Original use="false" /> + <Private use="false" /> + <Channel mode="Joint-stereo" /> + <ABR use="true" min="88" max="160" step="6" /> + </config> + </encodings> +</lame_acm> diff --git a/lame-3.97/ACM/.svn/text-base/main.cpp.svn-base b/lame-3.97/ACM/.svn/text-base/main.cpp.svn-base new file mode 100644 index 0000000..81af4b4 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/main.cpp.svn-base @@ -0,0 +1,216 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: main.cpp,v 1.4 2002/01/29 20:37:05 robux4 Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <windows.h> + +/// The ACM is considered as a driver and run in Kernel-Mode +/// So the new/delete operators have to be overriden in order to use memory +/// readable out of the calling process + +void * operator new( unsigned int cb ) +{ + return LocalAlloc(LPTR, cb); // VirtualAlloc +} + +void operator delete(void *block) { + LocalFree(block); +} + +extern "C" { + + void *acm_Calloc( size_t num, size_t size ) + { + return LocalAlloc(LPTR, num * size); // VirtualAlloc + } + + void *acm_Malloc( size_t size ) + { + return LocalAlloc(LPTR, size); // VirtualAlloc + } + + void acm_Free( void * mem) + { + LocalFree(mem); + } +}; + +////// End of memory instrumentation + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include <assert.h> + +#include "AEncodeProperties.h" +#include "ACM.h" +#include "resource.h" +#include "adebug.h" +#include <version.h> + +ADbg * debug = NULL; + +LONG WINAPI DriverProc(DWORD dwDriverId, HDRVR hdrvr, UINT msg, LONG lParam1, LONG lParam2) +{ + + switch (msg) + { + case DRV_OPEN: // acmDriverOpen + { + if (debug == NULL) { + debug = new ADbg(DEBUG_LEVEL_CREATION); + debug->setPrefix("LAMEdrv"); + } + + if (debug != NULL) + { + // Sent when the driver is opened. + if (lParam2 != NULL) + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_OPEN (ID 0x%08X), pDesc = 0x%08X",dwDriverId,lParam2); + else + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_OPEN (ID 0x%08X), pDesc = NULL",dwDriverId); + } + + if (lParam2 != NULL) { + LPACMDRVOPENDESC pDesc = (LPACMDRVOPENDESC)lParam2; + + if (pDesc->fccType != ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC) { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "wrong pDesc->fccType (0x%08X)",pDesc->fccType); + } + return NULL; + } + } else { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "pDesc == NULL"); + } + } + + ACM * ThisACM = new ACM(GetDriverModuleHandle(hdrvr)); + + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "OPENED instance 0x%08X",ThisACM); + } + + return (LONG)ThisACM;// returns 0L to fail + // value subsequently used + // for dwDriverId. + } + break; + + case DRV_CLOSE: // acmDriverClose + { + if (debug != NULL) + { + // Sent when the driver is closed. Drivers are + // unloaded when the open count reaches zero. + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_CLOSE"); + } + + ACM * ThisACM = (ACM *)dwDriverId; + delete ThisACM; + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "CLOSED instance 0x%08X",ThisACM); + delete debug; + debug = NULL; + } + return 1L; // returns 0L to fail + } + break; + + case DRV_LOAD: + { + // nothing to do + if (debug != NULL) + { +// debug->OutPut(DEBUG_LEVEL_MSG, "DRV_LOAD, version %s %s %s", ACM_VERSION, __DATE__, __TIME__); + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_LOAD, %s %s", __DATE__, __TIME__); + } + return 1L; + } + break; + + case DRV_ENABLE: + { + // nothing to do + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_ENABLE"); + } + return 1L; + } + break; + + case DRV_DISABLE: + { + // nothing to do + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_DISABLE"); + } + return 1L; + } + break; + + case DRV_FREE: + { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_FREE"); + } + return 1L; + } + break; + + default: + { + ACM * ThisACM = (ACM *)dwDriverId; + + if (ThisACM != NULL) + return ThisACM->DriverProcedure(hdrvr, msg, lParam1, lParam2); + else + { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "Driver not opened, unknown message (0x%08X), lParam1 = 0x%08X, lParam2 = 0x%08X", msg, lParam1, lParam2); + } + + return DefDriverProc (dwDriverId, hdrvr, msg, lParam1, lParam2); + } + } + break; + } +} + diff --git a/lame-3.97/ACM/.svn/text-base/readme.txt.svn-base b/lame-3.97/ACM/.svn/text-base/readme.txt.svn-base new file mode 100644 index 0000000..92a6422 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/readme.txt.svn-base @@ -0,0 +1,29 @@ +In order to build this codec, you need the Windows98 DDK from Microsoft. It can also work +with the Windows2000/ME/XP/2003 DDK: + +http://www.microsoft.com/ddk/ + +Alternatively, the required headers are also available in CYGWIN+w32api, MINGW32 or Wine : + +http://www.cygwin.com/ +http://www.mingw.org/ +http://www.winehq.com/ + + +If you do not have a ddk, you should be able to use the alternative msacmdrv.h provided +with this ACM codec. It is not used by default because it would probably broke any real +DDK already installed. + + + +--------------- + +Define ENABLE_DECODING if you want to use the decoding (alpha state, doesn't decode at the + moment, so use it only if you plan to develop) + +--------------- + +To release this codec you will need : +- lameACM.acm (result of the build process) +- lameACM.inf +- lame_acm.xml (where the initial configuration is stored) diff --git a/lame-3.97/ACM/.svn/text-base/resource.h.svn-base b/lame-3.97/ACM/.svn/text-base/resource.h.svn-base new file mode 100644 index 0000000..9052032 --- /dev/null +++ b/lame-3.97/ACM/.svn/text-base/resource.h.svn-base @@ -0,0 +1,42 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by acm.rc +// +#define IDI_ICON 101 +#define IDD_CONFIG 102 +#define IDD_ABOUT 103 +#define IDC_STATIC_DECODING 1000 +#define IDC_CHECK_COPYRIGHT 1001 +#define IDC_CHECK_CHECKSUM 1002 +#define IDC_CHECK_ORIGINAL 1003 +#define IDC_CHECK_PRIVATE 1004 +#define IDC_COMBO_ENC_STEREO 1005 +#define IDC_CHECK_ENC_SMART 1006 +#define IDC_STATIC_ENC_ICON 1007 +#define IDC_STATIC_ABOUT_TITLE 1008 +#define IDC_STATIC_ABOUT_URL 1009 +#define IDC_STATIC_CONFIG_VERSION 1010 +#define IDC_CHECK_ENC_ABR 1011 +#define IDC_SLIDER_AVERAGE_MIN 1012 +#define IDC_SLIDER_AVERAGE_MAX 1013 +#define IDC_SLIDER_AVERAGE_STEP 1014 +#define IDC_SLIDER_AVERAGE_SAMPLE 1015 +#define IDC_STATIC_AVERAGE_MIN 1016 +#define IDC_STATIC_AVERAGE_MAX 1017 +#define IDC_STATIC_AVERAGE_STEP 1018 +#define IDC_STATIC_AVERAGE_SAMPLE 1019 +#define IDC_STATIC_AVERAGE_MIN_VALUE 1020 +#define IDC_STATIC_AVERAGE_MAX_VALUE 1021 +#define IDC_STATIC_AVERAGE_STEP_VALUE 1022 +#define IDC_STATIC_AVERAGE_SAMPLE_VALUE 1023 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 105 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1024 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/lame-3.97/ACM/ACM.cpp b/lame-3.97/ACM/ACM.cpp new file mode 100644 index 0000000..a8b312a --- /dev/null +++ b/lame-3.97/ACM/ACM.cpp @@ -0,0 +1,1421 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACM.cpp,v 1.18 2005/03/13 14:43:21 robert Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <algorithm> + +#include <windows.h> +#include <windowsx.h> +#include <intshcut.h> + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include <assert.h> + +#include <version.h> + +#include "adebug.h" +#include "resource.h" +#include "ACMStream.h" + +#ifdef ENABLE_DECODING +#include "DecodeStream.h" +#endif // ENABLE_DECODING + +#include "ACM.h" + +#ifndef IDC_HAND +#define IDC_HAND MAKEINTRESOURCE(32649) +#endif // IDC_HAND + +char ACM::VersionString[20]; + +const char ACM_VERSION[] = "0.9.0"; + +#ifdef WIN32 +// +// 32-bit versions +// +#if (WINVER >= 0x0400) + #define VERSION_ACM_DRIVER MAKE_ACM_VERSION(4, 0, 0) +#else +#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(3, 51, 0) +#endif +#define VERSION_MSACM MAKE_ACM_VERSION(3, 50, 0) + +#else +// +// 16-bit versions +// +#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(1, 0, 0) +#define VERSION_MSACM MAKE_ACM_VERSION(2, 1, 0) + +#endif + +#define PERSONAL_FORMAT WAVE_FORMAT_MPEGLAYER3 +#define SIZE_FORMAT_STRUCT sizeof(MPEGLAYER3WAVEFORMAT) +//#define SIZE_FORMAT_STRUCT 0 + +//static const char channel_mode[][13] = {"mono","stereo","joint stereo","dual channel"}; +static const char channel_mode[][13] = {"mono","stereo"}; +static const unsigned int mpeg1_freq[] = {48000,44100,32000}; +static const unsigned int mpeg2_freq[] = {24000,22050,16000,12000,11025,8000}; +static const unsigned int mpeg1_bitrate[] = {320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32}; +static const unsigned int mpeg2_bitrate[] = {160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8}; + +#define SIZE_CHANNEL_MODE (sizeof(channel_mode) / (sizeof(char) * 13)) +#define SIZE_FREQ_MPEG1 (sizeof(mpeg1_freq) / sizeof(unsigned int)) +#define SIZE_FREQ_MPEG2 (sizeof(mpeg2_freq) / sizeof(unsigned int)) +#define SIZE_BITRATE_MPEG1 (sizeof(mpeg1_bitrate) / sizeof(unsigned int)) +#define SIZE_BITRATE_MPEG2 (sizeof(mpeg2_bitrate) / sizeof(unsigned int)) + +static const int FORMAT_TAG_MAX_NB = 2; // PCM and PERSONAL (mandatory to have at least PCM and your format) +static const int FILTER_TAG_MAX_NB = 0; // this is a codec, not a filter + +// number of supported PCM formats +static const int FORMAT_MAX_NB_PCM = + 2 * // number of PCM channel mode (stereo/mono) + (SIZE_FREQ_MPEG1 + // number of MPEG 1 sampling freq + SIZE_FREQ_MPEG2); // number of MPEG 2 sampling freq + +////////////////////////////////////////////////////////////////////// +// +////////////////////////////////////////////////////////////////////// +bool bitrate_item::operator<(const bitrate_item & other_bitrate) const +{ + return (other_bitrate.frequency < frequency || + (other_bitrate.frequency == frequency && + (other_bitrate.bitrate < bitrate || + (other_bitrate.bitrate == bitrate && + (other_bitrate.channels < channels))))); +} + +////////////////////////////////////////////////////////////////////// +// Configuration Dialog +////////////////////////////////////////////////////////////////////// +/* +static CALLBACK ConfigProc( + HWND hwndDlg, // handle to dialog box +UINT uMsg, // message +WPARAM wParam, // first message parameter +LPARAM lParam // second message parameter +) +{ + BOOL bResult; + + switch (uMsg) { + case WM_COMMAND: + UINT command; + command = GET_WM_COMMAND_ID(wParam, lParam); + if (IDOK == command) + { + EndDialog(hwndDlg, (IDOK == command)); + } else if (IDCANCEL == command) + { + EndDialog(hwndDlg, (IDOK == command)); + } + bResult = FALSE; + break; + default: + bResult = FALSE; // will be treated by DefWindowProc +} + return bResult; +} + + +inline DWORD ACM::Configure(HWND hParentWindow, LPDRVCONFIGINFO pConfig) +{ + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : Configure (Parent Window = 0x%08X)",hParentWindow); + + DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_CONFIG), hParentWindow, ::ConfigProc , (LPARAM)this); + + return DRVCNF_OK; // Can also return + // DRVCNF_CANCEL + // and DRVCNF_RESTART +} +*/ +////////////////////////////////////////////////////////////////////// +// About Dialog +////////////////////////////////////////////////////////////////////// + +static BOOL CALLBACK AboutProc( + HWND hwndDlg, // handle to dialog box +UINT uMsg, // message +WPARAM wParam, // first message parameter +LPARAM lParam // second message parameter +) +{ + static HBRUSH hBrushStatic = NULL; +// static LOGFONT lf; // structure for font information +// static HFONT hfnt; + static HCURSOR hcOverCursor = NULL; + BOOL bResult; + + switch (uMsg) { + case WM_INITDIALOG: + char tmp[150]; + wsprintf(tmp,"LAME MP3 codec v%s", ACM::GetVersionString()); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_ABOUT_TITLE), tmp); + +/* + ::GetObject(::GetStockObject(DEFAULT_GUI_FONT), sizeof(LOGFONT), &lf); + lf.lfUnderline = TRUE; + + hfnt = ::CreateFontIndirect(&lf); + + ::SendMessage(::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), WM_SETFONT, (WPARAM) hfnt, TRUE); +* / + hBrushStatic = ::CreateSolidBrush(::GetSysColor (COLOR_BTNFACE)); +*/ hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_HAND); + if (hcOverCursor == NULL) + hcOverCursor = ::LoadCursor(NULL,(LPCTSTR)IDC_CROSS); + + bResult = TRUE; + break; +/* + case WM_CTLCOLORSTATIC: + /// \todo only if there are URLs + if ((HWND)lParam == ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL)) + { + ::SetTextColor((HDC)wParam, ::GetSysColor (COLOR_HIGHLIGHT)); + ::SetBkColor((HDC)wParam, ::GetSysColor (COLOR_BTNFACE)); + + return (LRESULT) hBrushStatic; + } + else + return (LRESULT) NULL; +*/ + case WM_MOUSEMOVE: + { + POINT pnt; + ::GetCursorPos(&pnt); + + RECT rect; + ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect); + + if ( ::PtInRect(&rect,pnt) ) + { + ::SetCursor(hcOverCursor); + } + + + } + break; + + case WM_LBUTTONUP: + { + POINT pnt; + ::GetCursorPos(&pnt); + + RECT rect; + ::GetWindowRect( ::GetDlgItem(hwndDlg,IDC_STATIC_ABOUT_URL), &rect); + + TCHAR Url[200]; + bool bUrl = false; + if (::PtInRect(&rect,pnt)) + { + wsprintf(Url,LAME_URL); + bUrl = true; + } + + if (bUrl) + { + LPSTR tmpStr; + HRESULT hresult = ::TranslateURL(Url, TRANSLATEURL_FL_GUESS_PROTOCOL|TRANSLATEURL_FL_GUESS_PROTOCOL, &tmpStr); + if (hresult == S_OK) + ::ShellExecute(hwndDlg,"open",tmpStr,NULL,"",SW_SHOWMAXIMIZED ); + else if (hresult == S_FALSE) + ::ShellExecute(hwndDlg,"open",Url,NULL,"",SW_SHOWMAXIMIZED ); + } + + } + break; + + case WM_COMMAND: + UINT command; + command = GET_WM_COMMAND_ID(wParam, lParam); + if (IDOK == command) + { + EndDialog(hwndDlg, TRUE); + } + bResult = FALSE; + break; + + case IDC_STATIC_ABOUT_URL: + break; + default: + bResult = FALSE; // will be treated by DefWindowProc +} + return bResult; +} + +inline DWORD ACM::About(HWND hParentWindow) +{ + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM : About (Parent Window = 0x%08X)",hParentWindow); + + DialogBoxParam( my_hModule, MAKEINTRESOURCE(IDD_ABOUT), hParentWindow, ::AboutProc , (LPARAM)this); + + return DRVCNF_OK; // Can also return +// DRVCNF_CANCEL +// and DRVCNF_RESTART +} + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +ACM::ACM( HMODULE hModule ) + :my_hModule(hModule), + my_hIcon(NULL), + my_debug(ADbg(DEBUG_LEVEL_CREATION)), + my_EncodingProperties(hModule) +{ + my_EncodingProperties.ParamsRestore(); + + /// \todo get the debug level from the registry + unsigned char DebugFileName[512]; + + char tmp[128]; + wsprintf(tmp,"LAMEacm 0x%08X",this); + my_debug.setPrefix(tmp); /// \todo get it from the registry + my_debug.setIncludeTime(true); /// \todo get it from the registry + + // Check in the registry if we have to Output Debug information + DebugFileName[0] = '\0'; + + HKEY OssKey; + if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { + DWORD DataType; + DWORD DebugFileNameSize = 512; + if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { + if (DataType == REG_SZ) { + my_debug.setUseFile(true); + my_debug.setDebugFile((char *)DebugFileName); + my_debug.OutPut("Debug file is %s",(char *)DebugFileName); + } + } + } + +#if LAME_ALPHA_VERSION > 0 + wsprintf(VersionString,"%s - %d.%d (alpha %d)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION,LAME_PATCH_VERSION); +#elif LAME_BETA_VERSION > 0 + wsprintf(VersionString,"%s - %d.%d (beta %d)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION, LAME_PATCH_VERSION); +#else + wsprintf(VersionString,"%s - %d.%d (stable)", ACM_VERSION, LAME_MAJOR_VERSION, LAME_MINOR_VERSION); +#endif + + BuildBitrateTable(); + + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "New ACM Creation (0x%08X)",this); +} + +ACM::~ACM() +{ +// not used, it's done automatically when closing the driver if (my_hIcon != NULL) +// CloseHandle(my_hIcon); + + bitrate_table.clear(); + + my_debug.OutPut(DEBUG_LEVEL_FUNC_START, "ACM Deleted (0x%08X)",this); +} + +////////////////////////////////////////////////////////////////////// +// Main message handler +////////////////////////////////////////////////////////////////////// + +LONG ACM::DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2) +{ + DWORD dwRes = 0L; + +//my_debug.OutPut(DEBUG_LEVEL_MSG, "message 0x%08X for ThisACM 0x%08X", msg, this); + +switch (msg) { + case DRV_INSTALL: + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_INSTALL"); + // Sent when the driver is installed. + dwRes = DRVCNF_OK; // Can also return + break; // DRVCNF_CANCEL + // and DRV_RESTART + + case DRV_REMOVE: + // Sent when the driver is removed. + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_REMOVE"); + dwRes = 1L; // return value ignored + break; + + case DRV_QUERYCONFIGURE: + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_QUERYCONFIGURE"); + // Sent to determine if the driver can be + // configured. + dwRes = 1L; // Zero indicates configuration + break; // NOT supported + + case DRV_CONFIGURE: + my_debug.OutPut(DEBUG_LEVEL_MSG, "DRV_CONFIGURE"); + // Sent to display the configuration + // dialog box for the driver. +// dwRes = Configure( (HWND) lParam1, (LPDRVCONFIGINFO) lParam2 ); + if (my_EncodingProperties.Config(my_hModule, (HWND) lParam1)) + { + dwRes = DRVCNF_OK; // Can also return + // DRVCNF_CANCEL + // and DRVCNF_RESTART + } else { + dwRes = DRVCNF_CANCEL; + } + break; + + /************************************** + // ACM additional messages + ***************************************/ + + case ACMDM_DRIVER_ABOUT: + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_ABOUT"); + + dwRes = About( (HWND) lParam1 ); + + break; + + case ACMDM_DRIVER_DETAILS: // acmDriverDetails + // Fill-in general informations about the driver/codec + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_DRIVER_DETAILS"); + + dwRes = OnDriverDetails(hdrvr, (LPACMDRIVERDETAILS) lParam1); + + break; + + case ACMDM_FORMATTAG_DETAILS: // acmFormatTagDetails + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMATTAG_DETAILS"); + + dwRes = OnFormatTagDetails((LPACMFORMATTAGDETAILS) lParam1, lParam2); + + break; + + case ACMDM_FORMAT_DETAILS: // acmFormatDetails + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_DETAILS"); + + dwRes = OnFormatDetails((LPACMFORMATDETAILS) lParam1, lParam2); + + break; + + case ACMDM_FORMAT_SUGGEST: // acmFormatSuggest + // Sent to determine if the driver can be + // configured. + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_FORMAT_SUGGEST"); + dwRes = OnFormatSuggest((LPACMDRVFORMATSUGGEST) lParam1); + break; + + /************************************** + // ACM stream messages + ***************************************/ + + case ACMDM_STREAM_OPEN: + // Sent to determine if the driver can be + // configured. + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_OPEN"); + dwRes = OnStreamOpen((LPACMDRVSTREAMINSTANCE) lParam1); + break; + + case ACMDM_STREAM_SIZE: + // returns a recommended size for a source + // or destination buffer on an ACM stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_SIZE"); + dwRes = OnStreamSize((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMSIZE)lParam2); + break; + + case ACMDM_STREAM_PREPARE: + // prepares an ACMSTREAMHEADER structure for + // an ACM stream conversion + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_PREPARE"); + dwRes = OnStreamPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2); + break; + + case ACMDM_STREAM_UNPREPARE: + // cleans up the preparation performed by + // the ACMDM_STREAM_PREPARE message for an ACM stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_UNPREPARE"); + dwRes = OnStreamUnPrepareHeader((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMSTREAMHEADER) lParam2); + break; + + case ACMDM_STREAM_CONVERT: + // perform a conversion on the specified conversion stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CONVERT"); + dwRes = OnStreamConvert((LPACMDRVSTREAMINSTANCE)lParam1, (LPACMDRVSTREAMHEADER) lParam2); + + break; + + case ACMDM_STREAM_CLOSE: + // closes an ACM conversion stream + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACMDM_STREAM_CLOSE"); + dwRes = OnStreamClose((LPACMDRVSTREAMINSTANCE)lParam1); + break; + + /************************************** + // Unknown message + ***************************************/ + + default: + // Process any other messages. + my_debug.OutPut(DEBUG_LEVEL_MSG, "ACM::DriverProc unknown message (0x%08X), lParam1 = 0x%08X, lParam2 = 0x%08X", msg, lParam1, lParam2); + return DefDriverProc ((DWORD)this, hdrvr, msg, lParam1, lParam2); + } + + return dwRes; +} + +////////////////////////////////////////////////////////////////////// +// Special message handlers +////////////////////////////////////////////////////////////////////// +/*! + Retreive the config details of this ACM driver + The index represent the specified format + + \param a_FormatDetails will be filled with all the corresponding data +*/ +inline DWORD ACM::OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILS a_Query = 0x%08X",a_Query); + switch (a_Query & ACM_FORMATDETAILSF_QUERYMASK) { + + // Fill-in the informations corresponding to the FormatDetails->dwFormatTagIndex + case ACM_FORMATDETAILSF_INDEX : + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_INDEX for index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); + if (a_FormatDetails->dwFormatTag == PERSONAL_FORMAT) { + if (a_FormatDetails->dwFormatIndex < GetNumberEncodingFormats()) { + LPWAVEFORMATEX WaveExt; + WaveExt = a_FormatDetails->pwfx; + + WaveExt->wFormatTag = PERSONAL_FORMAT; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + GetMP3FormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat); + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + Result = MMSYSERR_NOERROR; + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); + } + } + else if (a_FormatDetails->dwFormatTag == WAVE_FORMAT_PCM) { + if (a_FormatDetails->dwFormatIndex < FORMAT_MAX_NB_PCM) { + LPWAVEFORMATEX WaveExt; + WaveExt = a_FormatDetails->pwfx; + + WaveExt->wFormatTag = WAVE_FORMAT_PCM; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format in : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + GetPCMFormatForIndex(a_FormatDetails->dwFormatIndex, *WaveExt, a_FormatDetails->szFormat); + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "format out : channels %d, sample rate %d", WaveExt->nChannels, WaveExt->nSamplesPerSec); + Result = MMSYSERR_NOERROR; + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATDETAILSF_INDEX unknown index 0x%04X:%03d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex); + } + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Unknown a_FormatDetails->dwFormatTag = 0x%08X",a_FormatDetails->dwFormatTag); + } + + case ACM_FORMATDETAILSF_FORMAT : + /// \todo we may output the corresponding strong (only for personal format) + LPWAVEFORMATEX WaveExt; + WaveExt = a_FormatDetails->pwfx; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "enter ACM_FORMATDETAILSF_FORMAT : 0x%04X:%03d, format in : channels %d, sample rate %d",a_FormatDetails->dwFormatTag,a_FormatDetails->dwFormatIndex, WaveExt->nChannels, WaveExt->nSamplesPerSec); + + Result = MMSYSERR_NOERROR; + break; + + default: + Result = ACMERR_NOTPOSSIBLE; + break; + } + + a_FormatDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + + return Result; +} + +/*! + Retreive the details of each known format by this ACM driver + The index represent the specified format (0 = MP3 / 1 = PCM) + + \param a_FormatTagDetails will be filled with all the corresponding data +*/ +inline DWORD ACM::OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query) +{ + DWORD Result; + DWORD the_format = WAVE_FORMAT_UNKNOWN; // the format to give details + + if (a_FormatTagDetails->cbStruct >= sizeof(*a_FormatTagDetails)) { + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACMDM_FORMATTAG_DETAILS, a_Query = 0x%08X",a_Query); + switch(a_Query & ACM_FORMATTAGDETAILSF_QUERYMASK) { + + case ACM_FORMATTAGDETAILSF_INDEX: + // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_INDEX for index %03d",a_FormatTagDetails->dwFormatTagIndex); + + if (a_FormatTagDetails->dwFormatTagIndex < FORMAT_TAG_MAX_NB) { + switch (a_FormatTagDetails->dwFormatTagIndex) + { + case 0: + the_format = PERSONAL_FORMAT; + break; + default : + the_format = WAVE_FORMAT_PCM; + break; + } + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_INDEX for unsupported index %03d",a_FormatTagDetails->dwFormatTagIndex); + Result = ACMERR_NOTPOSSIBLE; + } + break; + + case ACM_FORMATTAGDETAILSF_FORMATTAG: + // Fill-in the informations corresponding to the a_FormatDetails->dwFormatTagIndex and hdrvr given + switch (a_FormatTagDetails->dwFormatTag) + { + case WAVE_FORMAT_PCM: + the_format = WAVE_FORMAT_PCM; + break; + case PERSONAL_FORMAT: + the_format = PERSONAL_FORMAT; + break; + default: + return (ACMERR_NOTPOSSIBLE); + } + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "get ACM_FORMATTAGDETAILSF_FORMATTAG for index 0x%02X, cStandardFormats = %d",a_FormatTagDetails->dwFormatTagIndex,a_FormatTagDetails->cStandardFormats); + break; + case ACM_FORMATTAGDETAILSF_LARGESTSIZE: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "ACM_FORMATTAGDETAILSF_LARGESTSIZE not used"); + Result = 0L; + break; + default: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown Format tag query"); + Result = MMSYSERR_NOTSUPPORTED; + break; + } + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails the_format = 0x%08X",the_format); + switch(the_format) + { + case WAVE_FORMAT_PCM: + a_FormatTagDetails->dwFormatTag = WAVE_FORMAT_PCM; + a_FormatTagDetails->dwFormatTagIndex = 0; + a_FormatTagDetails->cbFormatSize = sizeof(PCMWAVEFORMAT); + /// \note 0 may mean we don't know how to decode + a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + a_FormatTagDetails->cStandardFormats = FORMAT_MAX_NB_PCM; + // should be filled by Windows a_FormatTagDetails->szFormatTag[0] = '\0'; + Result = MMSYSERR_NOERROR; + break; + case PERSONAL_FORMAT: + a_FormatTagDetails->dwFormatTag = PERSONAL_FORMAT; + a_FormatTagDetails->dwFormatTagIndex = 1; + a_FormatTagDetails->cbFormatSize = SIZE_FORMAT_STRUCT; + a_FormatTagDetails->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + a_FormatTagDetails->cStandardFormats = GetNumberEncodingFormats(); + lstrcpyW( a_FormatTagDetails->szFormatTag, L"Lame MP3" ); + Result = MMSYSERR_NOERROR; + break; + default: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails Unknown format 0x%08X",the_format); + return (ACMERR_NOTPOSSIBLE); + } + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnFormatTagDetails %d possibilities for format 0x%08X",a_FormatTagDetails->cStandardFormats,the_format); + } + else + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "a_FormatTagDetails->cbStruct < sizeof(*a_FormatDetails)"); + Result = ACMERR_NOTPOSSIBLE; + } + + return Result; +} + +/*! + Retreive the global details of this ACM driver + + \param a_DriverDetail will be filled with all the corresponding data +*/ +inline DWORD ACM::OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail) +{ + if (my_hIcon == NULL) + my_hIcon = LoadIcon(GetDriverModuleHandle(hdrvr), MAKEINTRESOURCE(IDI_ICON)); + a_DriverDetail->hicon = my_hIcon; + + a_DriverDetail->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC; + a_DriverDetail->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED; + + /// \note this is an explicit hack of the FhG values + /// \note later it could be a new value when the decoding is done + a_DriverDetail->wMid = MM_FRAUNHOFER_IIS; + a_DriverDetail->wPid = MM_FHGIIS_MPEGLAYER3; + + a_DriverDetail->vdwACM = VERSION_MSACM; + a_DriverDetail->vdwDriver = VERSION_ACM_DRIVER; + a_DriverDetail->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; + a_DriverDetail->cFormatTags = FORMAT_TAG_MAX_NB; // 2 : MP3 and PCM +// a_DriverDetail->cFormatTags = 1; // 2 : MP3 and PCM + a_DriverDetail->cFilterTags = FILTER_TAG_MAX_NB; + + lstrcpyW( a_DriverDetail->szShortName, L"LAME MP3" ); + char tmpStr[128]; + wsprintf(tmpStr, "LAME MP3 Codec v%s", GetVersionString()); + int u = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, 0); + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, tmpStr, -1, a_DriverDetail->szLongName, u); + lstrcpyW( a_DriverDetail->szCopyright, L"2002 Steve Lhomme" ); + lstrcpyW( a_DriverDetail->szLicensing, L"LGPL (see gnu.org)" ); + /// \todo update this part when the code changes + lstrcpyW( a_DriverDetail->szFeatures , L"only CBR implementation" ); + + return MMSYSERR_NOERROR; // Can also return DRVCNF_CANCEL +} + +/*! + Suggest an output format for the specified input format + + \param a_FormatSuggest will be filled with all the corresponding data +*/ +inline DWORD ACM::OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest) +{ + DWORD Result = MMSYSERR_NOTSUPPORTED; + DWORD fdwSuggest = (ACM_FORMATSUGGESTF_TYPEMASK & a_FormatSuggest->fdwSuggest); + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest %s%s%s%s (0x%08X)", + (fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS) ? "channels, ":"", + (fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC) ? "samples/sec, ":"", + (fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE) ? "bits/sample, ":"", + (fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG) ? "format, ":"", + fdwSuggest); + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for source format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", + a_FormatSuggest->pwfxSrc->wFormatTag, + a_FormatSuggest->pwfxSrc->nChannels, + a_FormatSuggest->pwfxSrc->nSamplesPerSec, + a_FormatSuggest->pwfxSrc->nAvgBytesPerSec, + a_FormatSuggest->pwfxSrc->nBlockAlign, + a_FormatSuggest->pwfxSrc->wBitsPerSample); + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", + a_FormatSuggest->pwfxDst->wFormatTag, + a_FormatSuggest->pwfxDst->nChannels, + a_FormatSuggest->pwfxDst->nSamplesPerSec, + a_FormatSuggest->pwfxDst->nAvgBytesPerSec, + a_FormatSuggest->pwfxDst->nBlockAlign, + a_FormatSuggest->pwfxDst->wBitsPerSample); + + switch (a_FormatSuggest->pwfxSrc->wFormatTag) + { + case WAVE_FORMAT_PCM: + /// \todo handle here the decoding ? + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PCM source"); + // + // if the destination format tag is restricted, verify that + // it is within our capabilities... + // + // this driver is able to decode to PCM + // + if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest) + { + if (PERSONAL_FORMAT != a_FormatSuggest->pwfxDst->wFormatTag) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wFormatTag = PERSONAL_FORMAT; + } + + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed A"); + // + // if the destination channel count is restricted, verify that + // it is within our capabilities... + // + // this driver is not able to change the number of channels + // + if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels; + } + + if (a_FormatSuggest->pwfxSrc->nChannels != 1 && a_FormatSuggest->pwfxSrc->nChannels != 2) + return MMSYSERR_INVALPARAM; + + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed B"); + // + // if the destination samples per second is restricted, verify + // that it is within our capabilities... + // + // this driver is not able to change the sample rate + // + if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec; + } + + +my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed C"); + // + // if the destination bits per sample is restricted, verify + // that it is within our capabilities... + // + // We prefer decoding to 16-bit PCM. + // + if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest) + { + if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) ) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wBitsPerSample = 16; + } + + // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN; + a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; + + a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nChannels * 64000 / 8; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed"); + Result = MMSYSERR_NOERROR; + + + break; + case PERSONAL_FORMAT: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest for PERSONAL source"); + // + // if the destination format tag is restricted, verify that + // it is within our capabilities... + // + // this driver is able to decode to PCM + // + if (ACM_FORMATSUGGESTF_WFORMATTAG & fdwSuggest) + { + if (WAVE_FORMAT_PCM != a_FormatSuggest->pwfxDst->wFormatTag) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; + } + + + // + // if the destination channel count is restricted, verify that + // it is within our capabilities... + // + // this driver is not able to change the number of channels + // + if (ACM_FORMATSUGGESTF_NCHANNELS & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nChannels != a_FormatSuggest->pwfxDst->nChannels) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nChannels = a_FormatSuggest->pwfxSrc->nChannels; + } + + + // + // if the destination samples per second is restricted, verify + // that it is within our capabilities... + // + // this driver is not able to change the sample rate + // + if (ACM_FORMATSUGGESTF_NSAMPLESPERSEC & fdwSuggest) + { + if (a_FormatSuggest->pwfxSrc->nSamplesPerSec != a_FormatSuggest->pwfxDst->nSamplesPerSec) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->nSamplesPerSec = a_FormatSuggest->pwfxSrc->nSamplesPerSec; + } + + + // + // if the destination bits per sample is restricted, verify + // that it is within our capabilities... + // + // We prefer decoding to 16-bit PCM. + // + if (ACM_FORMATSUGGESTF_WBITSPERSAMPLE & fdwSuggest) + { + if ( (16 != a_FormatSuggest->pwfxDst->wBitsPerSample) && (8 != a_FormatSuggest->pwfxDst->wBitsPerSample) ) + return (ACMERR_NOTPOSSIBLE); + } + else + { + a_FormatSuggest->pwfxDst->wBitsPerSample = 16; + } + + // a_FormatSuggest->pwfxDst->nBlockAlign = FORMAT_BLOCK_ALIGN; + a_FormatSuggest->pwfxDst->nBlockAlign = a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; + + /// \todo this value must be a correct one ! + a_FormatSuggest->pwfxDst->nAvgBytesPerSec = a_FormatSuggest->pwfxDst->nSamplesPerSec * a_FormatSuggest->pwfxDst->nChannels * a_FormatSuggest->pwfxDst->wBitsPerSample / 8; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggest succeed"); + Result = MMSYSERR_NOERROR; + + + break; + } + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Suggested destination format = 0x%04X, channels = %d, Samples/s = %d, AvgB/s = %d, BlockAlign = %d, b/sample = %d", + a_FormatSuggest->pwfxDst->wFormatTag, + a_FormatSuggest->pwfxDst->nChannels, + a_FormatSuggest->pwfxDst->nSamplesPerSec, + a_FormatSuggest->pwfxDst->nAvgBytesPerSec, + a_FormatSuggest->pwfxDst->nBlockAlign, + a_FormatSuggest->pwfxDst->wBitsPerSample); + + return Result; +} + +/*! + Create a stream instance for decoding/encoding + + \param a_StreamInstance contain information about the stream desired +*/ +inline DWORD ACM::OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + // + // the most important condition to check before doing anything else + // is that this ACM driver can actually perform the conversion we are + // being opened for. this check should fail as quickly as possible + // if the conversion is not possible by this driver. + // + // it is VERY important to fail quickly so the ACM can attempt to + // find a driver that is suitable for the conversion. also note that + // the ACM may call this driver several times with slightly different + // format specifications before giving up. + // + // this driver first verifies that the source and destination formats + // are acceptable... + // + switch (a_StreamInstance->pwfxSrc->wFormatTag) + { + case WAVE_FORMAT_PCM: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM source (%05d samples %d channels %d bits/sample)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample); + if (a_StreamInstance->pwfxDst->wFormatTag == PERSONAL_FORMAT) + { + unsigned int OutputFrequency; + + /// \todo Smart mode + if (my_EncodingProperties.GetSmartOutputMode()) + OutputFrequency = ACMStream::GetOutputSampleRate(a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxDst->nAvgBytesPerSec,a_StreamInstance->pwfxDst->nChannels); + else + OutputFrequency = a_StreamInstance->pwfxSrc->nSamplesPerSec; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL output (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,8 * a_StreamInstance->pwfxDst->nAvgBytesPerSec); + + /// \todo add the possibility to have channel resampling (mono to stereo / stereo to mono) + /// \todo support resampling ? + /// \todo only do the test on OutputFrequency in "Smart Output" mode + if (a_StreamInstance->pwfxDst->nSamplesPerSec != OutputFrequency || +// a_StreamInstance->pwfxSrc->nSamplesPerSec != a_StreamInstance->pwfxDst->nSamplesPerSec || + a_StreamInstance->pwfxSrc->nChannels != a_StreamInstance->pwfxDst->nChannels || + a_StreamInstance->pwfxSrc->wBitsPerSample != 16) + { + Result = ACMERR_NOTPOSSIBLE; + } else { + if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0) + { + ACMStream * the_stream = ACMStream::Create(); + a_StreamInstance->dwInstance = (DWORD) the_stream; + + if (the_stream != NULL) + { + MPEGLAYER3WAVEFORMAT * casted = (MPEGLAYER3WAVEFORMAT *) a_StreamInstance->pwfxDst; + vbr_mode a_mode = (casted->fdwFlags-2 == 0)?vbr_abr:vbr_off; + if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec, + OutputFrequency, + a_StreamInstance->pwfxDst->nChannels, + a_StreamInstance->pwfxDst->nAvgBytesPerSec, + a_mode)) + Result = MMSYSERR_NOERROR; + else + ACMStream::Erase( the_stream ); + } + } + else + { + Result = MMSYSERR_NOERROR; + } + } + } + break; + case PERSONAL_FORMAT: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PERSONAL source (%05d samples %d channels %d bits/sample %d kbps)",a_StreamInstance->pwfxSrc->nSamplesPerSec,a_StreamInstance->pwfxSrc->nChannels,a_StreamInstance->pwfxSrc->wBitsPerSample,8 * a_StreamInstance->pwfxSrc->nAvgBytesPerSec); + if (a_StreamInstance->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) + { +#ifdef ENABLE_DECODING + if ((a_StreamInstance->fdwOpen & ACM_STREAMOPENF_QUERY) == 0) + { + /// \todo create the decoding stream + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream for PCM output (%05d samples %d channels %d bits/sample %d B/s)",a_StreamInstance->pwfxDst->nSamplesPerSec,a_StreamInstance->pwfxDst->nChannels,a_StreamInstance->pwfxDst->wBitsPerSample,a_StreamInstance->pwfxDst->nAvgBytesPerSec); + + DecodeStream * the_stream = DecodeStream::Create(); + a_StreamInstance->dwInstance = (DWORD) the_stream; + + if (the_stream != NULL) + { + if (the_stream->init(a_StreamInstance->pwfxDst->nSamplesPerSec, + a_StreamInstance->pwfxDst->nChannels, + a_StreamInstance->pwfxDst->nAvgBytesPerSec, + a_StreamInstance->pwfxSrc->nAvgBytesPerSec)) + Result = MMSYSERR_NOERROR; + else + DecodeStream::Erase( the_stream ); + } + } + else + { + /// \todo decoding verification + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream is valid"); + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + break; + } + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Open stream Result = %d",Result); + return Result; +} + +inline DWORD ACM::OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + switch (ACM_STREAMSIZEF_QUERYMASK & the_StreamSize->fdwSize) + { + case ACM_STREAMSIZEF_DESTINATION: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get source buffer size for destination size = %d",the_StreamSize->cbDstLength); + break; + case ACM_STREAMSIZEF_SOURCE: + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "Get destination buffer size for source size = %d",the_StreamSize->cbSrcLength); + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength); + Result = MMSYSERR_NOERROR; + } + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + the_StreamSize->cbDstLength = the_stream->GetOutputSizeForInput(the_StreamSize->cbSrcLength); + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + break; + default: + Result = MMSYSERR_INVALFLAG; + break; + } + + return Result; +} + +inline DWORD ACM::OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamClose the stream 0x%X",a_StreamInstance->dwInstance); + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream::Erase( (ACMStream *) a_StreamInstance->dwInstance ); + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream::Erase( (DecodeStream *) a_StreamInstance->dwInstance ); +#endif // ENABLE_DECODING + } + + // nothing to do yet + Result = MMSYSERR_NOERROR; + + return Result; +} + +inline DWORD ACM::OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, " prepare : Src : %d (0x%08X) / %d - Dst : %d (0x%08X) / %d" + , a_StreamHeader->cbSrcLength + , a_StreamHeader->pbSrc + , a_StreamHeader->cbSrcLengthUsed + , a_StreamHeader->cbDstLength + , a_StreamHeader->pbDst + , a_StreamHeader->cbDstLengthUsed + ); + + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance; + + if (the_stream->open(my_EncodingProperties)) + Result = MMSYSERR_NOERROR; + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance; + + if (the_stream->open()) + Result = MMSYSERR_NOERROR; +#endif // ENABLE_DECODING + } + + return Result; +} + +inline DWORD ACM::OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "unprepare : Src : %d / %d - Dst : %d / %d" + , a_StreamHeader->cbSrcLength + , a_StreamHeader->cbSrcLengthUsed + , a_StreamHeader->cbDstLength + , a_StreamHeader->cbDstLengthUsed + ); + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + ACMStream * the_stream = (ACMStream *)a_StreamInstance->dwInstance; + DWORD OutputSize = a_StreamHeader->cbDstLength; + + if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength)) + { + a_StreamHeader->cbDstLengthUsed = OutputSize; + Result = MMSYSERR_NOERROR; + } + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM== a_StreamInstance->pwfxDst->wFormatTag) + { +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *)a_StreamInstance->dwInstance; + DWORD OutputSize = a_StreamHeader->cbDstLength; + + if (the_stream->close(a_StreamHeader->pbDst, &OutputSize) && (OutputSize <= a_StreamHeader->cbDstLength)) + { + a_StreamHeader->cbDstLengthUsed = OutputSize; + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + + return Result; +} + +inline DWORD ACM::OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader) +{ + DWORD Result = ACMERR_NOTPOSSIBLE; + + if (WAVE_FORMAT_PCM == a_StreamInstance->pwfxSrc->wFormatTag && + PERSONAL_FORMAT == a_StreamInstance->pwfxDst->wFormatTag) + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = PCM (encode)"); + + ACMStream * the_stream = (ACMStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + if (the_stream->ConvertBuffer( a_StreamHeader )) + Result = MMSYSERR_NOERROR; + } + } + else if (PERSONAL_FORMAT == a_StreamInstance->pwfxSrc->wFormatTag && + WAVE_FORMAT_PCM == a_StreamInstance->pwfxDst->wFormatTag) + { + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert SRC = MP3 (decode)"); + +#ifdef ENABLE_DECODING + DecodeStream * the_stream = (DecodeStream *) a_StreamInstance->dwInstance; + if (the_stream != NULL) + { + if (the_stream->ConvertBuffer( a_StreamHeader )) + Result = MMSYSERR_NOERROR; + } +#endif // ENABLE_DECODING + } + else + my_debug.OutPut(DEBUG_LEVEL_FUNC_CODE, "OnStreamConvert unsupported conversion"); + + return Result; +} + + +void ACM::GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const +{ + int Block_size; + char temp[ACMFORMATDETAILS_FORMAT_CHARS]; + + + if (the_Index < bitrate_table.size()) + { + // the_Format.wBitsPerSample = 16; + the_Format.wBitsPerSample = 0; + + /// \todo handle more channel modes (mono, stereo, joint-stereo, dual-channel) + // the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE); + + the_Format.nBlockAlign = 1; + + the_Format.nSamplesPerSec = bitrate_table[the_Index].frequency; + the_Format.nAvgBytesPerSec = bitrate_table[the_Index].bitrate * 1000 / 8; + if (bitrate_table[the_Index].frequency >= mpeg1_freq[SIZE_FREQ_MPEG1-1]) + Block_size = 1152; + else + Block_size = 576; + + the_Format.nChannels = bitrate_table[the_Index].channels; + + the_Format.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); + MPEGLAYER3WAVEFORMAT * tmpFormat = (MPEGLAYER3WAVEFORMAT *) &the_Format; + tmpFormat->wID = 1; + // this is the only way I found to know if we do CBR or ABR + tmpFormat->fdwFlags = 2 + ((bitrate_table[the_Index].mode == vbr_abr)?0:2); + tmpFormat->nBlockSize = Block_size * the_Format.nAvgBytesPerSec / the_Format.nSamplesPerSec; + tmpFormat->nFramesPerBlock = 1; + tmpFormat->nCodecDelay = 0; // 0x0571 on FHG + + /// \todo : generate the string with the appropriate stereo mode + if (bitrate_table[the_Index].mode == vbr_abr) + wsprintfA( temp, "%d Hz, %d kbps ABR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo"); + else + wsprintfA( temp, "%d Hz, %d kbps CBR, %s", the_Format.nSamplesPerSec, the_Format.nAvgBytesPerSec * 8 / 1000, (the_Format.nChannels == 1)?"Mono":"Stereo"); + + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, temp, -1, the_String, ACMFORMATDETAILS_FORMAT_CHARS); + } + } + +void ACM::GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const +{ + the_Format.nChannels = SIZE_CHANNEL_MODE - int(the_Index % SIZE_CHANNEL_MODE); + the_Format.wBitsPerSample = 16; + the_Format.nBlockAlign = the_Format.nChannels * the_Format.wBitsPerSample / 8; + + + DWORD a_Channel_Independent = the_Index / SIZE_CHANNEL_MODE; + + // first MPEG1 frequencies + if (a_Channel_Independent < SIZE_FREQ_MPEG1) + { + the_Format.nSamplesPerSec = mpeg1_freq[a_Channel_Independent]; + } + else + { + a_Channel_Independent -= SIZE_FREQ_MPEG1; + the_Format.nSamplesPerSec = mpeg2_freq[a_Channel_Independent]; + } + + the_Format.nAvgBytesPerSec = the_Format.nSamplesPerSec * the_Format.nChannels * the_Format.wBitsPerSample / 8; +} + +DWORD ACM::GetNumberEncodingFormats() const +{ + return bitrate_table.size(); +} + +bool ACM::IsSmartOutput(const int frequency, const int bitrate, const int channels) const +{ + double compression_ratio = double(frequency * 2 * channels) / double(bitrate * 100); + +//my_debug.OutPut(DEBUG_LEVEL_FUNC_DEBUG, "compression_ratio %f, freq %d, bitrate %d, channels %d", compression_ratio, frequency, bitrate, channels); + + if(my_EncodingProperties.GetSmartOutputMode()) + return (compression_ratio <= my_EncodingProperties.GetSmartRatio()); + else return true; +} + +void ACM::BuildBitrateTable() +{ + my_debug.OutPut("entering BuildBitrateTable"); + + // fill the table + unsigned int channel,bitrate,freq; + + bitrate_table.clear(); + + // CBR bitrates + for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++) + { + // MPEG I + for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++) + { + for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG1;bitrate++) + { + + if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], mpeg1_bitrate[bitrate], channel+1)) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg1_freq[freq]; + bitrate_table_tmp->bitrate = mpeg1_bitrate[bitrate]; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_off; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + // MPEG II / II.5 + for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++) + { + for (bitrate = 0;bitrate < SIZE_BITRATE_MPEG2;bitrate++) + { + if (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], mpeg2_bitrate[bitrate], channel+1)) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg2_freq[freq]; + bitrate_table_tmp->bitrate = mpeg2_bitrate[bitrate]; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_abr; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + } + + if (my_EncodingProperties.GetAbrOutputMode()) + // ABR bitrates + { + for (channel = 0;channel < SIZE_CHANNEL_MODE;channel++) + { + // MPEG I + for (freq = 0;freq < SIZE_FREQ_MPEG1;freq++) + { + for (bitrate = my_EncodingProperties.GetAbrBitrateMax(); + bitrate >= my_EncodingProperties.GetAbrBitrateMin(); + bitrate -= my_EncodingProperties.GetAbrBitrateStep()) + { + if (bitrate >= mpeg1_bitrate[SIZE_BITRATE_MPEG1-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg1_freq[freq], bitrate, channel+1))) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg1_freq[freq]; + bitrate_table_tmp->bitrate = bitrate; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_abr; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + // MPEG II / II.5 + for (freq = 0;freq < SIZE_FREQ_MPEG2;freq++) + { + for (bitrate = my_EncodingProperties.GetAbrBitrateMax(); + bitrate >= my_EncodingProperties.GetAbrBitrateMin(); + bitrate -= my_EncodingProperties.GetAbrBitrateStep()) + { + if (bitrate >= mpeg2_bitrate[SIZE_BITRATE_MPEG2-1] && (!my_EncodingProperties.GetSmartOutputMode() || IsSmartOutput(mpeg2_freq[freq], bitrate, channel+1))) + { + bitrate_item * bitrate_table_tmp = new bitrate_item; + if (bitrate_table_tmp == NULL) + return; + + bitrate_table_tmp->frequency = mpeg2_freq[freq]; + bitrate_table_tmp->bitrate = bitrate; + bitrate_table_tmp->channels = channel+1; + bitrate_table_tmp->mode = vbr_abr; + bitrate_table.push_back(*bitrate_table_tmp); + } + } + } + } + } + + // sorting by frequency/bitrate/channel + std::sort(bitrate_table.begin(), bitrate_table.end()); + +/* { + // display test + int i=0; + for (i=0; i<bitrate_table.size();i++) + { + my_debug.OutPut("bitrate_table[%d].frequency = %d",i,bitrate_table[i].frequency); + my_debug.OutPut("bitrate_table[%d].bitrate = %d",i,bitrate_table[i].bitrate); + my_debug.OutPut("bitrate_table[%d].channel = %d",i,bitrate_table[i].channels); + my_debug.OutPut("bitrate_table[%d].ABR = %s\n",i,(bitrate_table[i].mode == vbr_abr)?"ABR":"CBR"); + } + }*/ + + my_debug.OutPut("leaving BuildBitrateTable"); +} diff --git a/lame-3.97/ACM/ACM.h b/lame-3.97/ACM/ACM.h new file mode 100644 index 0000000..32333ef --- /dev/null +++ b/lame-3.97/ACM/ACM.h @@ -0,0 +1,100 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACM.h,v 1.7 2002/04/06 14:01:33 robux4 Exp $ +*/ + +#if !defined(_ACM_H__INCLUDED_) +#define _ACM_H__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include <vector> + +#include <windows.h> +#include <mmsystem.h> +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include "lame.h" + +#include "ADbg/ADbg.h" + +class AEncodeProperties; + +class bitrate_item { + public: + unsigned int frequency; + unsigned int bitrate; + unsigned int channels; + vbr_mode mode; + + bool operator<(const bitrate_item & bitrate) const; +}; + +class ACM +{ +public: + ACM( HMODULE hModule ); + virtual ~ACM(); + + LONG DriverProcedure(const HDRVR hdrvr, const UINT msg, LONG lParam1, LONG lParam2); + + static const char * GetVersionString(void) {return VersionString;} + +protected: +// inline DWORD Configure( HWND hParentWindow, LPDRVCONFIGINFO pConfig ); + inline DWORD About( HWND hParentWindow ); + + inline DWORD OnDriverDetails(const HDRVR hdrvr, LPACMDRIVERDETAILS a_DriverDetail); + inline DWORD OnFormatTagDetails(LPACMFORMATTAGDETAILS a_FormatTagDetails, const LPARAM a_Query); + inline DWORD OnFormatDetails(LPACMFORMATDETAILS a_FormatDetails, const LPARAM a_Query); + inline DWORD OnFormatSuggest(LPACMDRVFORMATSUGGEST a_FormatSuggest); + inline DWORD OnStreamOpen(LPACMDRVSTREAMINSTANCE a_StreamInstance); + inline DWORD OnStreamClose(LPACMDRVSTREAMINSTANCE a_StreamInstance); + inline DWORD OnStreamSize(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMSIZE the_StreamSize); + inline DWORD OnStreamPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader); + inline DWORD OnStreamUnPrepareHeader(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMSTREAMHEADER a_StreamHeader); + inline DWORD OnStreamConvert(LPACMDRVSTREAMINSTANCE a_StreamInstance, LPACMDRVSTREAMHEADER a_StreamHeader); + + void GetMP3FormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const; + void GetPCMFormatForIndex(const DWORD the_Index, WAVEFORMATEX & the_Format, unsigned short the_String[ACMFORMATDETAILS_FORMAT_CHARS]) const; + DWORD GetNumberEncodingFormats() const; + bool IsSmartOutput(const int frequency, const int bitrate, const int channels) const; + void BuildBitrateTable(); + + HMODULE my_hModule; + HICON my_hIcon; + ADbg my_debug; + AEncodeProperties my_EncodingProperties; + std::vector<bitrate_item> bitrate_table; + + static char VersionString[20]; +}; + +#endif // !defined(_ACM_H__INCLUDED_) + diff --git a/lame-3.97/ACM/ACMStream.cpp b/lame-3.97/ACM/ACMStream.cpp new file mode 100644 index 0000000..e2b012b --- /dev/null +++ b/lame-3.97/ACM/ACMStream.cpp @@ -0,0 +1,367 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACMStream.cpp,v 1.10 2004/07/11 18:11:39 bouvigne Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <assert.h> +#include <windows.h> + +#include "adebug.h" + +#include "ACMStream.h" + +// static methods + +ACMStream * ACMStream::Create() +{ + ACMStream * Result; + + Result = new ACMStream; + + return Result; +} + +const bool ACMStream::Erase(const ACMStream * a_ACMStream) +{ + delete a_ACMStream; + return true; +} + +// class methods + +ACMStream::ACMStream() : + m_WorkingBufferUseSize(0), + gfp(NULL) +{ + /// \todo get the debug level from the registry +my_debug = new ADbg(DEBUG_LEVEL_CREATION); + if (my_debug != NULL) { + unsigned char DebugFileName[512]; + + my_debug->setPrefix("LAMEstream"); /// \todo get it from the registry +my_debug->setIncludeTime(true); /// \todo get it from the registry + +// Check in the registry if we have to Output Debug information +DebugFileName[0] = '\0'; + + HKEY OssKey; + if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { + DWORD DataType; + DWORD DebugFileNameSize = 512; + if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { + if (DataType == REG_SZ) { + my_debug->setUseFile(true); + my_debug->setDebugFile((char *)DebugFileName); + my_debug->OutPut("Debug file is %s",(char *)DebugFileName); + } + } + } + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Creation (0X%08X)",this); + } + else { + ADbg debug; + debug.OutPut("ACMStream::ACMACMStream : Impossible to create my_debug"); + } + +} + +ACMStream::~ACMStream() +{ + // release memory - encoding is finished + if (gfp) lame_close( gfp ); + + if (my_debug != NULL) + { + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "ACMStream Deletion (0X%08X)",this); + delete my_debug; + } +} + +bool ACMStream::init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode) +{ + bool bResult = false; + + my_SamplesPerSec = nSamplesPerSec; + my_OutBytesPerSec = nOutputSamplesPerSec; + my_Channels = nChannels; + my_AvgBytesPerSec = nAvgBytesPerSec; + my_VBRMode = mode; + + bResult = true; + + return bResult; + +} + +bool ACMStream::open(const AEncodeProperties & the_Properties) +{ + bool bResult = false; + + // Init the MP3 Stream + // Init the global flags structure + gfp = lame_init(); + + // Set input sample frequency + lame_set_in_samplerate( gfp, my_SamplesPerSec ); + + // Set output sample frequency + lame_set_out_samplerate( gfp, my_OutBytesPerSec ); + + lame_set_num_channels( gfp, my_Channels ); + if (my_Channels == 1) + lame_set_mode( gfp, MONO ); + else + lame_set_mode( gfp, (MPEG_mode_e)the_Properties.GetChannelModeValue()) ; /// \todo Get the mode from the default configuration + +// lame_set_VBR( gfp, vbr_off ); /// \note VBR not supported for the moment + lame_set_VBR( gfp, my_VBRMode ); /// \note VBR not supported for the moment + + if (my_VBRMode == vbr_abr) + { + lame_set_VBR_q( gfp, 1 ); + + lame_set_VBR_mean_bitrate_kbps( gfp, (my_AvgBytesPerSec * 8 + 500) / 1000 ); + + if (24000 > lame_get_in_samplerate( gfp )) + { + // For MPEG-II + lame_set_VBR_min_bitrate_kbps( gfp, 8); + + lame_set_VBR_max_bitrate_kbps( gfp, 160); + } + else + { + // For MPEG-I + lame_set_VBR_min_bitrate_kbps( gfp, 32); + + lame_set_VBR_max_bitrate_kbps( gfp, 320); + } + } + + // Set bitrate + lame_set_brate( gfp, my_AvgBytesPerSec * 8 / 1000 ); + + /// \todo Get the mode from the default configuration + // Set copyright flag? + lame_set_copyright( gfp, the_Properties.GetCopyrightMode()?1:0 ); + // Do we have to tag it as non original + lame_set_original( gfp, the_Properties.GetOriginalMode()?1:0 ); + // Add CRC? + lame_set_error_protection( gfp, the_Properties.GetCRCMode()?1:0 ); + // Set private bit? + lame_set_extension( gfp, the_Properties.GetPrivateMode()?1:0 ); + // INFO tag support not possible in ACM - it requires rewinding + // output stream to the beginning after encoding is finished. + lame_set_bWriteVbrTag( gfp, 0 ); + + if (0 == lame_init_params( gfp )) + { + //LAME encoding call will accept any number of samples. + if ( 0 == lame_get_version( gfp ) ) + { + // For MPEG-II, only 576 samples per frame per channel + my_SamplesPerBlock = 576 * lame_get_num_channels( gfp ); + } + else + { + // For MPEG-I, 1152 samples per frame per channel + my_SamplesPerBlock = 1152 * lame_get_num_channels( gfp ); + } + } + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "version =%d",lame_get_version( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Layer =3"); + switch ( lame_get_mode( gfp ) ) + { + case STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Stereo" ); break; + case JOINT_STEREO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Joint-Stereo" ); break; + case DUAL_CHANNEL: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Forced Stereo" ); break; + case MONO: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Mono" ); break; + case NOT_SET: /* FALLTROUGH */ + default: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "mode =Error (unknown)" ); break; + } + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "sampling frequency =%.1f kHz", lame_get_in_samplerate( gfp ) /1000.0 ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "bitrate =%d kbps", lame_get_brate( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Min bitrate =%d kbps", lame_get_VBR_min_bitrate_kbps( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Vbr Max bitrate =%d kbps", lame_get_VBR_max_bitrate_kbps( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Quality Setting =%d", lame_get_quality( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass frequency =%d", lame_get_lowpassfreq( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Low pass width =%d", lame_get_lowpasswidth( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass frequency =%d", lame_get_highpassfreq( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "High pass width =%d", lame_get_highpasswidth( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "No Short Blocks =%d", lame_get_no_short_blocks( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "de-emphasis =%d", lame_get_emphasis( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "private flag =%d", lame_get_extension( gfp ) ); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "copyright flag =%d", lame_get_copyright( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "original flag =%d", lame_get_original( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "CRC =%s", lame_get_error_protection( gfp ) ? "on" : "off" ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Fast mode =%s", ( lame_get_quality( gfp ) )? "enabled" : "disabled" ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Force mid/side stereo =%s", ( lame_get_force_ms( gfp ) )?"enabled":"disabled" ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Padding Type =%d", lame_get_padding_type( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Disable Resorvoir =%d", lame_get_disable_reservoir( gfp ) ); + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "VBR =%s, VBR_q =%d, VBR method =", + ( lame_get_VBR( gfp ) !=vbr_off ) ? "enabled": "disabled", + lame_get_VBR_q( gfp ) ); + + switch ( lame_get_VBR( gfp ) ) + { + case vbr_off: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_off" ); break; + case vbr_mt : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mt" ); break; + case vbr_rh : my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_rh" ); break; + case vbr_mtrh: my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_mtrh" ); break; + case vbr_abr: + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "vbr_abr (average bitrate %d kbps)", lame_get_VBR_mean_bitrate_kbps( gfp ) ); + break; + default: + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "error, unknown VBR setting"); + break; + } + + my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "Write VBR Header =%s\n", ( lame_get_bWriteVbrTag( gfp ) ) ?"Yes":"No"); + +#ifdef FROM_DLL +beConfig.format.LHV1.dwReSampleRate = my_OutBytesPerSec; // force the user resampling +#endif // FROM_DLL + + bResult = true; + + return bResult; +} + +bool ACMStream::close(LPBYTE pOutputBuffer, DWORD *pOutputSize) +{ + +bool bResult = false; + + int nOutputSamples = 0; + + nOutputSamples = lame_encode_flush( gfp, pOutputBuffer, 0 ); + + if ( nOutputSamples < 0 ) + { + // BUFFER_TOO_SMALL +*pOutputSize = 0; + } + else +{ + *pOutputSize = nOutputSamples; + + bResult = true; + } + + // lame will be closed in destructor + //lame_close( gfp ); + + return bResult; +} + +DWORD ACMStream::GetOutputSizeForInput(const DWORD the_SrcLength) const +{ +/* double OutputInputRatio; + + if (my_VBRMode == vbr_off) + OutputInputRatio = double(my_AvgBytesPerSec) / double(my_OutBytesPerSec * 2); + else // reserve the space for 320 kbps + OutputInputRatio = 40000.0 / double(my_OutBytesPerSec * 2); + + OutputInputRatio *= 1.15; // allow 15% more*/ + + DWORD Result; + +// Result = DWORD(double(the_SrcLength) * OutputInputRatio); + Result = DWORD(1.25*the_SrcLength + 7200); + +my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "Result = %d",Result); + + return Result; +} + +bool ACMStream::ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader) +{ + bool result; + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "enter ACMStream::ConvertBuffer"); +} + + DWORD InSize = a_StreamHeader->cbSrcLength / 2, OutSize = a_StreamHeader->cbDstLength; // 2 for 8<->16 bits + +// Encode it +int dwSamples; + int nOutputSamples = 0; + + dwSamples = InSize / lame_get_num_channels( gfp ); + + if ( 1 == lame_get_num_channels( gfp ) ) + { + nOutputSamples = lame_encode_buffer(gfp,(PSHORT)a_StreamHeader->pbSrc,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + else + { + nOutputSamples = lame_encode_buffer_interleaved(gfp,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + + a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; + a_StreamHeader->cbDstLengthUsed = nOutputSamples; + + result = a_StreamHeader->cbDstLengthUsed <= a_StreamHeader->cbDstLength; + + my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "UsedSize = %d / EncodedSize = %d, result = %d (%d <= %d)", InSize, OutSize, result, a_StreamHeader->cbDstLengthUsed, a_StreamHeader->cbDstLength); + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "ACMStream::ConvertBuffer result = %d (0x%02X 0x%02X)",result,a_StreamHeader->pbDst[0],a_StreamHeader->pbDst[1]); +} + + return result; +} + +unsigned int ACMStream::GetOutputSampleRate(int samples_per_sec, int bitrate, int channels) +{ + if (bitrate==0) + bitrate = (64000*channels)/8; + + /// \todo pass through the same LAME routine + unsigned int OutputFrequency; + double compression_ratio = double(samples_per_sec * 16 * channels / (bitrate * 8)); + if (compression_ratio > 13.) + OutputFrequency = map2MP3Frequency( (10. * bitrate * 8) / (16 * channels)); + else + OutputFrequency = map2MP3Frequency( 0.97 * samples_per_sec ); + + return OutputFrequency; +} + diff --git a/lame-3.97/ACM/ACMStream.h b/lame-3.97/ACM/ACMStream.h new file mode 100644 index 0000000..6f1e12a --- /dev/null +++ b/lame-3.97/ACM/ACMStream.h @@ -0,0 +1,83 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: ACMStream.h,v 1.4 2002/04/06 14:01:33 robux4 Exp $ +*/ + +#if !defined(_ACMSTREAM_H__INCLUDED_) +#define _ACMSTREAM_H__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include "ADbg/ADbg.h" + +#include <config.h> +#include "util.h" + +#include "AEncodeProperties.h" + +class ACMStream +{ +public: + ACMStream( ); + virtual ~ACMStream( ); + + static ACMStream * Create(); + static const bool Erase(const ACMStream * a_ACMStream); + + bool init(const int nSamplesPerSec, const int nOutputSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const vbr_mode mode); + bool open(const AEncodeProperties & the_Properties); + bool close(LPBYTE pOutputBuffer, DWORD *pOutputSize); + + DWORD GetOutputSizeForInput(const DWORD the_SrcLength) const; + bool ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader); + + static unsigned int GetOutputSampleRate(int samples_per_sec, int bitrate, int channels); + +protected: + lame_global_flags * gfp; + + ADbg * my_debug; + int my_SamplesPerSec; + int my_Channels; + int my_AvgBytesPerSec; + int my_OutBytesPerSec; + vbr_mode my_VBRMode; + DWORD my_SamplesPerBlock; + +unsigned int m_WorkingBufferUseSize; + char m_WorkingBuffer[2304*2]; // should be at least twice my_SamplesPerBlock + +inline int GetBytesPerBlock(DWORD bytes_per_sec, DWORD samples_per_sec, int BlockAlign) const; + +}; + +#endif // !defined(_ACMSTREAM_H__INCLUDED_) + diff --git a/lame-3.97/ACM/ADbg/.svn/all-wcprops b/lame-3.97/ACM/ADbg/.svn/all-wcprops new file mode 100644 index 0000000..f0d0d8e --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM/ADbg +END +ADbg.dsp +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/ADbg/ADbg.dsp +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM/ADbg/Makefile.in +END +ADbg.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/ADbg/ADbg.h +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/ADbg/Makefile.am +END +ADbg.cpp +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/ADbg/ADbg.cpp +END +ADbg_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/ADbg/ADbg_vc7.vcproj +END diff --git a/lame-3.97/ACM/ADbg/.svn/entries b/lame-3.97/ACM/ADbg/.svn/entries new file mode 100644 index 0000000..7ec5a3a --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/ACM/ADbg +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +ADbg.dsp +file + + + + +2012-01-23T14:07:04.788490Z +d421be1a10694a6b719ae30220b55a12 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +2715 + +Makefile.in +file + + + + +2012-01-23T14:07:04.788490Z +0945114d890cf105c114e77df83573fb +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +9699 + +ADbg.h +file + + + + +2012-01-23T14:07:04.788490Z +9b00cc73695785cc97264d69dd47fd35 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3474 + +Makefile.am +file + + + + +2012-01-23T14:07:04.789492Z +274e5181ea59a3b7f025b3ab0e976d3d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +171 + +ADbg.cpp +file + + + + +2012-01-23T14:07:04.789492Z +1acf82738767b9ee7203152ea4af7221 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4467 + +ADbg_vc7.vcproj +file + + + + +2012-01-23T14:07:04.789492Z +b3c84395a9ce23b259742eda11984894 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +12414 + diff --git a/lame-3.97/ACM/ADbg/.svn/prop-base/ADbg.h.svn-base b/lame-3.97/ACM/ADbg/.svn/prop-base/ADbg.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/prop-base/ADbg.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/ADbg/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/ACM/ADbg/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.cpp.svn-base b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.cpp.svn-base new file mode 100644 index 0000000..80dc92f --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.cpp.svn-base @@ -0,0 +1,181 @@ +/************************************************************************ +Project : C++ debugging class +File version : 0.4 + +BSD License post 1999 : + +Copyright (c) 2001, Steve Lhomme +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +- The name of the author may not be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +************************************************************************/ + +#include <stdio.h> +#include <stdarg.h> +#include <windows.h> + +#include "ADbg.h" + +#if !defined(NDEBUG) + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +ADbg::ADbg(int level) +:my_level(level) +,my_time_included(false) +,my_use_file(false) +,my_debug_output(true) +,hFile(NULL) +{ + prefix[0] = '\0'; + OutPut(-1,"ADbg Creation at debug level = %d (0x%08X)",my_level,this); +} + +ADbg::~ADbg() +{ + unsetDebugFile(); + OutPut(-1,"ADbg Deletion (0x%08X)",this); +} + +inline int ADbg::_OutPut(const char * format,va_list params) const +{ + int result; + + char tst[1000]; + char myformat[256]; + + if (my_time_included) { + SYSTEMTIME time; + GetSystemTime(&time); + if (prefix[0] == '\0') + wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s\r\n", + time.wYear, + time.wMonth, + time.wDay, + time.wHour, + time.wMinute, + time.wSecond, + time.wMilliseconds, + format); + else + wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s - %s\r\n", + time.wYear, + time.wMonth, + time.wDay, + time.wHour, + time.wMinute, + time.wSecond, + time.wMilliseconds, + prefix, + format); + } else { + if (prefix[0] == '\0') + wsprintf( myformat, "%s\r\n", format); + else + wsprintf( myformat, "%s - %s\r\n", prefix, format); + } + + result = vsprintf(tst,myformat,params); + + if (my_debug_output) + OutputDebugString(tst); + + if (my_use_file && (hFile != NULL)) { + SetFilePointer( hFile, 0, 0, FILE_END ); + DWORD written; + WriteFile( hFile, tst, lstrlen(tst), &written, NULL ); + } + + return result; +} + +int ADbg::OutPut(int forLevel, const char * format,...) const +{ + int result=0; + + if (forLevel >= my_level) { + va_list tstlist; + int result; + + va_start(tstlist, format); + + result = _OutPut(format,tstlist); + + } + + return result; +} + +int ADbg::OutPut(const char * format,...) const +{ + va_list tstlist; + + va_start(tstlist, format); + + return _OutPut(format,tstlist); +} + +bool ADbg::setDebugFile(const char * NewFilename) { + bool result; + result = unsetDebugFile(); + + if (result) { + result = false; + + hFile = CreateFile(NewFilename, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); + + if (hFile != INVALID_HANDLE_VALUE) { + SetFilePointer( hFile, 0, 0, FILE_END ); + + result = true; + + OutPut(-1,"Debug file Opening succeeded"); + + } + else + OutPut(-1,"Debug file %s Opening failed",NewFilename); + } + + return result; +} + +bool ADbg::unsetDebugFile() { + bool result = (hFile == NULL); + + if (hFile != NULL) { + result = (CloseHandle(hFile) != 0); + + if (result) { + OutPut(-1,"Debug file Closing succeeded"); + hFile = NULL; + } + } + + return result; +} + +#endif // !defined(NDEBUG) diff --git a/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.dsp.svn-base b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.dsp.svn-base new file mode 100644 index 0000000..82ab42a --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.dsp.svn-base @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="ADbg" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=ADbg - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ADbg.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ADbg.mak" CFG="ADbg - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ADbg - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "ADbg - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ADbg - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD BASE RSC /l 0x40c +# ADD RSC /l 0x40c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "ADbg - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD BASE RSC /l 0x40c +# ADD RSC /l 0x40c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "ADbg - Win32 Release" +# Name "ADbg - Win32 Debug" +# Begin Group "Sources" + +# PROP Default_Filter "cpp" +# Begin Source File + +SOURCE=.\ADbg.cpp +# End Source File +# End Group +# Begin Group "Headers" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\ADbg.h +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.h.svn-base b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.h.svn-base new file mode 100644 index 0000000..9cb40b8 --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg.h.svn-base @@ -0,0 +1,133 @@ +/************************************************************************ +Project : C++ debugging class +File version : 0.4 + +BSD License post 1999 : + +Copyright (c) 2001, Steve Lhomme +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +- The name of the author may not be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +************************************************************************/ + +#if !defined(_DBG_H__INCLUDED_) +#define _DBG_H__INCLUDED_ + +#include <windows.h> + +static const int MAX_PREFIX_LENGTH = 128; + +#if !defined(NDEBUG) +// define the working debugging class + +class ADbg +{ +public: + ADbg(int level = 0); + virtual ~ADbg(); + + /// \todo make an inline function to test the level first and the process + int OutPut(int level, const char * format,...) const; + + int OutPut(const char * format,...) const; + + inline int setLevel(const int level) { + return my_level = level; + } + + inline bool setIncludeTime(const bool included = true) { + return my_time_included = included; + } + + bool setDebugFile(const char * NewFilename); + bool unsetDebugFile(); + + inline bool setUseFile(const bool usefile = true) { + return my_use_file = usefile; + } + + inline const char * setPrefix(const char * string) { + return strncpy(prefix, string, MAX_PREFIX_LENGTH); + } + +private: + int my_level; + bool my_time_included; + bool my_use_file; + bool my_debug_output; + + int _OutPut(const char * format,va_list params) const; + + char prefix[MAX_PREFIX_LENGTH]; + + HANDLE hFile; +}; + +#else // !defined(NDEBUG) + +// define a class that does nothing (no output) + +class ADbg +{ +public: + ADbg(int level = 0){} + virtual ~ADbg() {} + + inline int OutPut(int level, const char * format,...) const { + return 0; + } + + inline int OutPut(const char * format,...) const { + return 0; + } + + inline int setLevel(const int level) { + return level; + } + + inline bool setIncludeTime(const bool included = true) { + return true; + } + + inline bool setDebugFile(const char * NewFilename) { + return true; + } + + inline bool unsetDebugFile() { + return true; + } + + inline bool setUseFile(const bool usefile = true) { + return true; + } + + inline const char * setPrefix(const char * string) { + return string; + } +}; + +#endif // !defined(NDEBUG) + +#endif // !defined(_DBG_H__INCLUDED_) diff --git a/lame-3.97/ACM/ADbg/.svn/text-base/ADbg_vc7.vcproj.svn-base b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg_vc7.vcproj.svn-base new file mode 100644 index 0000000..c967dda --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/text-base/ADbg_vc7.vcproj.svn-base @@ -0,0 +1,465 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="ADbg" + ProjectGUID="{4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/ADbg.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/ADbg.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/ADbg.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Sources" + Filter="cpp"> + <File + RelativePath="ADbg.cpp"> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Headers" + Filter="h"> + <File + RelativePath="ADbg.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/ACM/ADbg/.svn/text-base/Makefile.am.svn-base b/lame-3.97/ACM/ADbg/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..684e4c1 --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,10 @@ +## $Id: Makefile.am,v 1.2 2005/08/21 17:32:08 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + ADbg.cpp \ + ADbg.dsp \ + ADbg_vc7.vcproj \ + ADbg.h + diff --git a/lame-3.97/ACM/ADbg/.svn/text-base/Makefile.in.svn-base b/lame-3.97/ACM/ADbg/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..251515e --- /dev/null +++ b/lame-3.97/ACM/ADbg/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,353 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = ACM/ADbg +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + ADbg.cpp \ + ADbg.dsp \ + ADbg_vc7.vcproj \ + ADbg.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/ADbg/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/ADbg/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/../.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/ADbg/ADbg.cpp b/lame-3.97/ACM/ADbg/ADbg.cpp new file mode 100644 index 0000000..80dc92f --- /dev/null +++ b/lame-3.97/ACM/ADbg/ADbg.cpp @@ -0,0 +1,181 @@ +/************************************************************************ +Project : C++ debugging class +File version : 0.4 + +BSD License post 1999 : + +Copyright (c) 2001, Steve Lhomme +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +- The name of the author may not be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +************************************************************************/ + +#include <stdio.h> +#include <stdarg.h> +#include <windows.h> + +#include "ADbg.h" + +#if !defined(NDEBUG) + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +ADbg::ADbg(int level) +:my_level(level) +,my_time_included(false) +,my_use_file(false) +,my_debug_output(true) +,hFile(NULL) +{ + prefix[0] = '\0'; + OutPut(-1,"ADbg Creation at debug level = %d (0x%08X)",my_level,this); +} + +ADbg::~ADbg() +{ + unsetDebugFile(); + OutPut(-1,"ADbg Deletion (0x%08X)",this); +} + +inline int ADbg::_OutPut(const char * format,va_list params) const +{ + int result; + + char tst[1000]; + char myformat[256]; + + if (my_time_included) { + SYSTEMTIME time; + GetSystemTime(&time); + if (prefix[0] == '\0') + wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s\r\n", + time.wYear, + time.wMonth, + time.wDay, + time.wHour, + time.wMinute, + time.wSecond, + time.wMilliseconds, + format); + else + wsprintf(myformat,"%04d/%02d/%02d %02d:%02d:%02d.%03d UTC : %s - %s\r\n", + time.wYear, + time.wMonth, + time.wDay, + time.wHour, + time.wMinute, + time.wSecond, + time.wMilliseconds, + prefix, + format); + } else { + if (prefix[0] == '\0') + wsprintf( myformat, "%s\r\n", format); + else + wsprintf( myformat, "%s - %s\r\n", prefix, format); + } + + result = vsprintf(tst,myformat,params); + + if (my_debug_output) + OutputDebugString(tst); + + if (my_use_file && (hFile != NULL)) { + SetFilePointer( hFile, 0, 0, FILE_END ); + DWORD written; + WriteFile( hFile, tst, lstrlen(tst), &written, NULL ); + } + + return result; +} + +int ADbg::OutPut(int forLevel, const char * format,...) const +{ + int result=0; + + if (forLevel >= my_level) { + va_list tstlist; + int result; + + va_start(tstlist, format); + + result = _OutPut(format,tstlist); + + } + + return result; +} + +int ADbg::OutPut(const char * format,...) const +{ + va_list tstlist; + + va_start(tstlist, format); + + return _OutPut(format,tstlist); +} + +bool ADbg::setDebugFile(const char * NewFilename) { + bool result; + result = unsetDebugFile(); + + if (result) { + result = false; + + hFile = CreateFile(NewFilename, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); + + if (hFile != INVALID_HANDLE_VALUE) { + SetFilePointer( hFile, 0, 0, FILE_END ); + + result = true; + + OutPut(-1,"Debug file Opening succeeded"); + + } + else + OutPut(-1,"Debug file %s Opening failed",NewFilename); + } + + return result; +} + +bool ADbg::unsetDebugFile() { + bool result = (hFile == NULL); + + if (hFile != NULL) { + result = (CloseHandle(hFile) != 0); + + if (result) { + OutPut(-1,"Debug file Closing succeeded"); + hFile = NULL; + } + } + + return result; +} + +#endif // !defined(NDEBUG) diff --git a/lame-3.97/ACM/ADbg/ADbg.dsp b/lame-3.97/ACM/ADbg/ADbg.dsp new file mode 100644 index 0000000..82ab42a --- /dev/null +++ b/lame-3.97/ACM/ADbg/ADbg.dsp @@ -0,0 +1,100 @@ +# Microsoft Developer Studio Project File - Name="ADbg" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=ADbg - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ADbg.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ADbg.mak" CFG="ADbg - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ADbg - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "ADbg - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ADbg - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD BASE RSC /l 0x40c +# ADD RSC /l 0x40c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "ADbg - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD BASE RSC /l 0x40c +# ADD RSC /l 0x40c +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "ADbg - Win32 Release" +# Name "ADbg - Win32 Debug" +# Begin Group "Sources" + +# PROP Default_Filter "cpp" +# Begin Source File + +SOURCE=.\ADbg.cpp +# End Source File +# End Group +# Begin Group "Headers" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\ADbg.h +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/ACM/ADbg/ADbg.h b/lame-3.97/ACM/ADbg/ADbg.h new file mode 100644 index 0000000..9cb40b8 --- /dev/null +++ b/lame-3.97/ACM/ADbg/ADbg.h @@ -0,0 +1,133 @@ +/************************************************************************ +Project : C++ debugging class +File version : 0.4 + +BSD License post 1999 : + +Copyright (c) 2001, Steve Lhomme +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +- The name of the author may not be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +************************************************************************/ + +#if !defined(_DBG_H__INCLUDED_) +#define _DBG_H__INCLUDED_ + +#include <windows.h> + +static const int MAX_PREFIX_LENGTH = 128; + +#if !defined(NDEBUG) +// define the working debugging class + +class ADbg +{ +public: + ADbg(int level = 0); + virtual ~ADbg(); + + /// \todo make an inline function to test the level first and the process + int OutPut(int level, const char * format,...) const; + + int OutPut(const char * format,...) const; + + inline int setLevel(const int level) { + return my_level = level; + } + + inline bool setIncludeTime(const bool included = true) { + return my_time_included = included; + } + + bool setDebugFile(const char * NewFilename); + bool unsetDebugFile(); + + inline bool setUseFile(const bool usefile = true) { + return my_use_file = usefile; + } + + inline const char * setPrefix(const char * string) { + return strncpy(prefix, string, MAX_PREFIX_LENGTH); + } + +private: + int my_level; + bool my_time_included; + bool my_use_file; + bool my_debug_output; + + int _OutPut(const char * format,va_list params) const; + + char prefix[MAX_PREFIX_LENGTH]; + + HANDLE hFile; +}; + +#else // !defined(NDEBUG) + +// define a class that does nothing (no output) + +class ADbg +{ +public: + ADbg(int level = 0){} + virtual ~ADbg() {} + + inline int OutPut(int level, const char * format,...) const { + return 0; + } + + inline int OutPut(const char * format,...) const { + return 0; + } + + inline int setLevel(const int level) { + return level; + } + + inline bool setIncludeTime(const bool included = true) { + return true; + } + + inline bool setDebugFile(const char * NewFilename) { + return true; + } + + inline bool unsetDebugFile() { + return true; + } + + inline bool setUseFile(const bool usefile = true) { + return true; + } + + inline const char * setPrefix(const char * string) { + return string; + } +}; + +#endif // !defined(NDEBUG) + +#endif // !defined(_DBG_H__INCLUDED_) diff --git a/lame-3.97/ACM/ADbg/ADbg_vc7.vcproj b/lame-3.97/ACM/ADbg/ADbg_vc7.vcproj new file mode 100644 index 0000000..c967dda --- /dev/null +++ b/lame-3.97/ACM/ADbg/ADbg_vc7.vcproj @@ -0,0 +1,465 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="ADbg" + ProjectGUID="{4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/ADbg.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/ADbg.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/ADbg.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="1"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/ADbg.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\ADbg.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Sources" + Filter="cpp"> + <File + RelativePath="ADbg.cpp"> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Headers" + Filter="h"> + <File + RelativePath="ADbg.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/ACM/ADbg/Makefile.am b/lame-3.97/ACM/ADbg/Makefile.am new file mode 100644 index 0000000..684e4c1 --- /dev/null +++ b/lame-3.97/ACM/ADbg/Makefile.am @@ -0,0 +1,10 @@ +## $Id: Makefile.am,v 1.2 2005/08/21 17:32:08 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + ADbg.cpp \ + ADbg.dsp \ + ADbg_vc7.vcproj \ + ADbg.h + diff --git a/lame-3.97/ACM/ADbg/Makefile.in b/lame-3.97/ACM/ADbg/Makefile.in new file mode 100644 index 0000000..251515e --- /dev/null +++ b/lame-3.97/ACM/ADbg/Makefile.in @@ -0,0 +1,353 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = ACM/ADbg +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + ADbg.cpp \ + ADbg.dsp \ + ADbg_vc7.vcproj \ + ADbg.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/ADbg/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/ADbg/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/../.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/AEncodeProperties.cpp b/lame-3.97/ACM/AEncodeProperties.cpp new file mode 100644 index 0000000..42f5410 --- /dev/null +++ b/lame-3.97/ACM/AEncodeProperties.cpp @@ -0,0 +1,2028 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: AEncodeProperties.cpp,v 1.8 2002/04/08 18:43:30 robux4 Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // !defined(STRICT) + +#include <windows.h> +#include <windowsx.h> +#include <shlobj.h> +#include <assert.h> + +#ifdef _MSC_VER +// no problem with unknown pragmas +#pragma warning(disable: 4068) +#endif + +#include "resource.h" +#include <config.h> +#include "util.h" +#include "adebug.h" +#include "AEncodeProperties.h" +#include "ACM.h" +//#include "AParameters/AParameters.h" + +#ifndef TTS_BALLOON +#define TTS_BALLOON 0x40 +#endif // TTS_BALLOON + +const unsigned int AEncodeProperties::the_Bitrates[18] = {320, 256, 224, 192, 160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8 }; +const unsigned int AEncodeProperties::the_MPEG1_Bitrates[14] = {320, 256, 224, 192, 160, 128, 112, 96, 80, 64, 56, 48, 40, 32 }; +const unsigned int AEncodeProperties::the_MPEG2_Bitrates[14] = {160, 144, 128, 112, 96, 80, 64, 56, 48, 40, 32, 24, 16, 8}; +const unsigned int AEncodeProperties::the_ChannelModes[3] = { STEREO, JOINT_STEREO, DUAL_CHANNEL }; +//const char AEncodeProperties::the_Presets[][13] = {"None", "CD", "Studio", "Hi-Fi", "Phone", "Voice", "Radio", "Tape", "FM", "AM", "SW"}; +//const LAME_QUALTIY_PRESET AEncodeProperties::the_Presets[] = {LQP_NOPRESET, LQP_R3MIX_QUALITY, LQP_NORMAL_QUALITY, LQP_LOW_QUALITY, LQP_HIGH_QUALITY, LQP_VERYHIGH_QUALITY, LQP_VOICE_QUALITY, LQP_PHONE, LQP_SW, LQP_AM, LQP_FM, LQP_VOICE, LQP_RADIO, LQP_TAPE, LQP_HIFI, LQP_CD, LQP_STUDIO}; +//const unsigned int AEncodeProperties::the_SamplingFreqs[9] = { 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000 }; + +ToolTipItem AEncodeProperties::Tooltips[13]={ + { IDC_CHECK_ENC_ABR, "Allow encoding with an average bitrate\r\ninstead of a constant one.\r\n\r\nIt can improve the quality for the same bitrate." }, + { IDC_CHECK_COPYRIGHT, "Mark the encoded data as copyrighted." }, + { IDC_CHECK_CHECKSUM, "Put a checksum in the encoded data.\r\n\r\nThis can make the file less sensitive to data loss." }, + { IDC_CHECK_ORIGINAL, "Mark the encoded data as an original file." }, + { IDC_CHECK_PRIVATE, "Mark the encoded data as private." }, + { IDC_COMBO_ENC_STEREO, "Select the type of stereo mode used for encoding:\r\n\r\n- Stereo : the usual one\r\n- Joint-Stereo : mix both channel to achieve better compression\r\n- Dual Channel : treat both channel as separate" }, + { IDC_STATIC_DECODING, "Decoding not supported for the moment by the codec." }, + { IDC_CHECK_ENC_SMART, "Disable bitrate when there is too much compression.\r\n(default 1:15 ratio)" }, + { IDC_STATIC_CONFIG_VERSION, "Version of this codec.\r\n\r\nvX.X.X is the version of the codec interface.\r\nX.XX is the version of the encoding engine." }, + { IDC_SLIDER_AVERAGE_MIN, "Select the minimum Average Bitrate allowed." }, + { IDC_SLIDER_AVERAGE_MAX, "Select the maximum Average Bitrate allowed." }, + { IDC_SLIDER_AVERAGE_STEP, "Select the step of Average Bitrate between the min and max.\r\n\r\nA step of 5 between 152 and 165 means you have :\r\n165, 160 and 155" }, + { IDC_SLIDER_AVERAGE_SAMPLE, "Check the resulting values of the (min,max,step) combination.\r\n\r\nUse the keyboard to navigate (right -> left)." }, +}; +//int AEncodeProperties::tst = 0; + +/* +#pragma argsused +static UINT CALLBACK DLLFindCallback( + HWND hdlg, // handle to child dialog box + UINT uiMsg, // message identifier + WPARAM wParam, // message parameter + LPARAM lParam // message parameter + ) +{ + UINT result = 0; + + switch (uiMsg) + { + case WM_NOTIFY: + OFNOTIFY * info = (OFNOTIFY *)lParam; + if (info->hdr.code == CDN_FILEOK) + { + result = 1; // by default we don't accept the file + + // Check if the selected file is a valid DLL with all the required functions + ALameDLL * tstFile = new ALameDLL; + if (tstFile != NULL) + { + if (tstFile->Load(info->lpOFN->lpstrFile)) + { + result = 0; + } + + delete tstFile; + } + + if (result == 1) + { + TCHAR output[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_DLL_UNRECOGNIZED,output,250); + AOut::MyMessageBox( output, MB_OK|MB_ICONEXCLAMATION, hdlg); + SetWindowLong(hdlg, DWL_MSGRESULT , -100); + } + } + } + + return result; +} + +#pragma argsused +static int CALLBACK BrowseFolderCallbackroc( + HWND hwnd, + UINT uMsg, + LPARAM lParam, + LPARAM lpData + ) +{ + AEncodeProperties * the_prop; + the_prop = (AEncodeProperties *) lpData; + + + if (uMsg == BFFM_INITIALIZED) + { +// char FolderName[MAX_PATH]; +// SHGetPathFromIDList((LPITEMIDLIST) lParam,FolderName); +//ADbg tst; +//tst.OutPut("init folder to %s ",the_prop->GetOutputDirectory()); +// CreateFile(); + ::SendMessage(hwnd, BFFM_SETSELECTION, (WPARAM)TRUE, (LPARAM)the_prop->GetOutputDirectory()); + }/* else if (uMsg == BFFM_SELCHANGED) + { + // verify that the folder is writable +// ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)0); // disable + char FolderName[MAX_PATH]; + SHGetPathFromIDList((LPITEMIDLIST) lParam, FolderName); + +// if (CreateFile(FolderName,STANDARD_RIGHTS_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL) == INVALID_HANDLE_VALUE) + if ((GetFileAttributes(FolderName) & FILE_ATTRIBUTE_DIRECTORY) != 0) + ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)1); // enable + else + ::SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM)0); // disable +//ADbg tst; +//tst.OutPut("change folder to %s ",FolderName); + }* / + + return 0; +} +*/ +#pragma argsused +static BOOL CALLBACK ConfigProc( + HWND hwndDlg, // handle to dialog box + UINT uMsg, // message + WPARAM wParam, // first message parameter + LPARAM lParam // second message parameter + ) +{ + BOOL bResult; + AEncodeProperties * the_prop; + the_prop = (AEncodeProperties *) GetProp(hwndDlg, "AEncodeProperties-Config"); + + switch (uMsg) { + case WM_COMMAND: + if (the_prop != NULL) + { + bResult = the_prop->HandleDialogCommand( hwndDlg, wParam, lParam); + } + break; + case WM_INITDIALOG: + assert(the_prop == NULL); + + the_prop = (AEncodeProperties *) lParam; + the_prop->my_debug.OutPut("there hwnd = 0x%08X",hwndDlg); + + assert(the_prop != NULL); + + SetProp(hwndDlg, "AEncodeProperties-Config", the_prop); + + the_prop->InitConfigDlg(hwndDlg); + + bResult = TRUE; + break; + + case WM_HSCROLL: + // check if it's the ABR sliders + if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_MIN)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_MAX)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_STEP)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + else if ((HWND)lParam == GetDlgItem(hwndDlg,IDC_SLIDER_AVERAGE_SAMPLE)) + { + the_prop->UpdateDlgFromSlides(hwndDlg); + } + break; + + case WM_NOTIFY: + if (TTN_GETDISPINFO == ((LPNMHDR)lParam)->code) { + NMTTDISPINFO *lphdr = (NMTTDISPINFO *)lParam; + UINT id = (lphdr->uFlags & TTF_IDISHWND) ? GetWindowLong((HWND)lphdr->hdr.idFrom, GWL_ID) : lphdr->hdr.idFrom; + + *lphdr->lpszText = 0; + + SendMessage(lphdr->hdr.hwndFrom, TTM_SETMAXTIPWIDTH, 0, 5000); + + for(int i=0; i<sizeof AEncodeProperties::Tooltips/sizeof AEncodeProperties::Tooltips[0]; ++i) { + if (id == AEncodeProperties::Tooltips[i].id) + lphdr->lpszText = const_cast<char *>(AEncodeProperties::Tooltips[i].tip); + } + + return TRUE; + } + break; + + default: + bResult = FALSE; // will be treated by DefWindowProc + } + return bResult; +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// +/** + \class AEncodeProperties +*/ + + +const char * AEncodeProperties::GetChannelModeString(int a_channelID) const +{ + assert(a_channelID < sizeof(the_ChannelModes)); + + switch (a_channelID) { + case 0: + return "Stereo"; + case 1: + return "Joint-stereo"; + case 2: + return "Dual Channel"; + default: + assert(a_channelID); + return NULL; + } +} + +const int AEncodeProperties::GetBitrateString(char * string, int string_size, int a_bitrateID) const +{ + assert(a_bitrateID < sizeof(the_Bitrates)); + assert(string != NULL); + + if (string_size >= 4) + return wsprintf(string,"%d",the_Bitrates[a_bitrateID]); + else + return -1; +} + +const unsigned int AEncodeProperties::GetChannelModeValue() const +{ + assert(nChannelIndex < sizeof(the_ChannelModes)); + + return the_ChannelModes[nChannelIndex]; +} + +const unsigned int AEncodeProperties::GetBitrateValue() const +{ + assert(nMinBitrateIndex < sizeof(the_Bitrates)); + + return the_Bitrates[nMinBitrateIndex]; +} + +inline const int AEncodeProperties::GetBitrateValueMPEG2(DWORD & bitrate) const +{ + int i; + + for (i=0;i<sizeof(the_MPEG2_Bitrates)/sizeof(unsigned int);i++) + { + if (the_MPEG2_Bitrates[i] == the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG2_Bitrates[i]; + return 0; + } + else if (the_MPEG2_Bitrates[i] < the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG2_Bitrates[i]; + return -1; + } + } + + bitrate = 160; + return -1; +} + +inline const int AEncodeProperties::GetBitrateValueMPEG1(DWORD & bitrate) const +{ + int i; + + for (i=sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1;i>=0;i--) + { + if (the_MPEG1_Bitrates[i] == the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG1_Bitrates[i]; + return 0; + } + else if (the_MPEG1_Bitrates[i] > the_Bitrates[nMinBitrateIndex]) + { + bitrate = the_MPEG1_Bitrates[i]; + return 1; + } + } + + bitrate = 32; + return 1; +} +/* +const int AEncodeProperties::GetBitrateValue(DWORD & bitrate, const DWORD MPEG_Version) const +{ + assert((MPEG_Version == MPEG1) || (MPEG_Version == MPEG2)); + assert(nMinBitrateIndex < sizeof(the_Bitrates)); + + if (MPEG_Version == MPEG2) + return GetBitrateValueMPEG2(bitrate); + else + return GetBitrateValueMPEG1(bitrate); +} +/* +const char * AEncodeProperties::GetPresetModeString(const int a_presetID) const +{ + assert(a_presetID < sizeof(the_Presets)); + + switch (a_presetID) { + case 1: + return "r3mix"; + case 2: + return "Normal"; + case 3: + return "Low"; + case 4: + return "High"; + case 5: + return "Very High"; + case 6: + return "Voice"; + case 7: + return "Phone"; + case 8: + return "SW"; + case 9: + return "AM"; + case 10: + return "FM"; + case 11: + return "Voice"; + case 12: + return "Radio"; + case 13: + return "Tape"; + case 14: + return "Hi-Fi"; + case 15: + return "CD"; + case 16: + return "Studio"; + default: + return "None"; + } +} + +const LAME_QUALTIY_PRESET AEncodeProperties::GetPresetModeValue() const +{ + assert(nPresetIndex < sizeof(the_Presets)); + + return the_Presets[nPresetIndex]; +} +*/ +bool AEncodeProperties::Config(const HINSTANCE Hinstance, const HWND HwndParent) +{ + //WM_INITDIALOG ? + + // remember the instance to retreive strings +// hDllInstance = Hinstance; + + my_debug.OutPut("here"); + int ret = ::DialogBoxParam(Hinstance, MAKEINTRESOURCE(IDD_CONFIG), HwndParent, ::ConfigProc, (LPARAM) this); +/* if (ret == -1) + { + LPVOID lpMsgBuf; + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + // Process any inserts in lpMsgBuf. + // ... + // Display the string. + AOut::MyMessageBox( (LPCTSTR)lpMsgBuf, MB_OK | MB_ICONINFORMATION ); + // Free the buffer. + LocalFree( lpMsgBuf ); + return false; + } +*/ + return true; +} + +bool AEncodeProperties::InitConfigDlg(HWND HwndDlg) +{ + // get all the required strings +// TCHAR Version[5]; +// LoadString(hDllInstance, IDS_STRING_VERSION, Version, 5); + + int i; + + // Add required channel modes + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetChannelLentgh();i++) + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_ADDSTRING, NULL, (LPARAM) GetChannelModeString(i)); + + char tmp[20]; + wsprintf(tmp, "v%s",ACM::GetVersionString()); + SetWindowText( GetDlgItem( HwndDlg, IDC_STATIC_CONFIG_VERSION), tmp); + + // Add all possible re-sampling freq +/* SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_RESETCONTENT , NULL, NULL); + char tmp[10]; + for (i=0;i<sizeof(the_SamplingFreqs)/sizeof(unsigned int);i++) + { + wsprintf(tmp, "%d", the_SamplingFreqs[i]); + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_ADDSTRING, NULL, (LPARAM) tmp ); + } +*/ + + // Add required bitrates +/* SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetBitrateLentgh();i++) + { + GetBitrateString(tmp, 5, i); + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_ADDSTRING, NULL, (LPARAM) tmp ); + } + + // Add bitrates to the VBR combo box too + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetBitrateLentgh();i++) + { + GetBitrateString(tmp, 5, i); + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_ADDSTRING, NULL, (LPARAM) tmp ); + } + + // Add VBR Quality Slider + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_SETRANGE, TRUE, MAKELONG(0,9)); + + // Add presets + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_RESETCONTENT , NULL, NULL); + for (i=0;i<GetPresetLentgh();i++) + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_ADDSTRING, NULL, (LPARAM) GetPresetModeString(i)); +*/ + + // Add ABR Sliders + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_SETRANGE, TRUE, MAKELONG(8,320)); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_SETRANGE, TRUE, MAKELONG(8,320)); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_SETRANGE, TRUE, MAKELONG(1,16)); + + // Tool-Tip initialiasiation + TOOLINFO ti; + HWND ToolTipWnd; + char DisplayStr[30] = "test tooltip"; + + ToolTipWnd = CreateWindowEx(WS_EX_TOPMOST, + TOOLTIPS_CLASS, + NULL, + WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP|TTS_BALLOON , + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + HwndDlg, + NULL, + NULL, + NULL + ); + + SetWindowPos(ToolTipWnd, + HWND_TOPMOST, + 0, + 0, + 0, + 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + + /* INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE */ + ti.cbSize = sizeof(TOOLINFO); + ti.uFlags = TTF_SUBCLASS | TTF_IDISHWND; + ti.hwnd = HwndDlg; + ti.lpszText = LPSTR_TEXTCALLBACK; + + /* SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW */ + for(i=0; i<sizeof Tooltips/sizeof Tooltips[0]; ++i) { + ti.uId = (WPARAM)GetDlgItem(HwndDlg, Tooltips[i].id); + + if (ti.uId) + SendMessage(ToolTipWnd, TTM_ADDTOOL, 0, (LPARAM)&ti); + } + +my_debug.OutPut("call UpdateConfigs"); + + UpdateConfigs(HwndDlg); + +my_debug.OutPut("call UpdateDlgFromValue"); + + UpdateDlgFromValue(HwndDlg); + + + my_debug.OutPut("finished InitConfigDlg"); + + + return true; +} + +bool AEncodeProperties::UpdateDlgFromValue(HWND HwndDlg) +{ + // get all the required strings +// TCHAR Version[5]; +// LoadString(hDllInstance, IDS_STRING_VERSION, Version, 5); + + int i; + + // Check boxes if required + ::CheckDlgButton( HwndDlg, IDC_CHECK_CHECKSUM, GetCRCMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_ORIGINAL, GetOriginalMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_PRIVATE, GetPrivateMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_COPYRIGHT, GetCopyrightMode() ?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_ENC_SMART, GetSmartOutputMode()?BST_CHECKED:BST_UNCHECKED ); + ::CheckDlgButton( HwndDlg, IDC_CHECK_ENC_ABR, GetAbrOutputMode() ?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_RESERVOIR, !GetNoBiResMode() ?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_XINGVBR, GetXingFrameMode()?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_RESAMPLE, GetResampleMode() ?BST_CHECKED:BST_UNCHECKED ); +// ::CheckDlgButton( HwndDlg, IDC_CHECK_CHANNELFORCE, bForceChannel ?BST_CHECKED:BST_UNCHECKED ); + + // Add required channel modes + for (i=0;i<GetChannelLentgh();i++) + { + if (i == nChannelIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_SETCURSEL, i, NULL); + break; + } + } + + // Add VBR Quality + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_SETPOS, TRUE, AverageBitrate_Min); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_SETPOS, TRUE, AverageBitrate_Max); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_SETPOS, TRUE, AverageBitrate_Step); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETPOS, TRUE, AverageBitrate_Max); + + UpdateDlgFromSlides(HwndDlg); + + EnableAbrOptions(HwndDlg, GetAbrOutputMode()); +// UpdateAbrSteps(AverageBitrate_Min, AverageBitrate_Max, AverageBitrate_Step); + // Add all possible re-sampling freq +/* SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_SETCURSEL, nSamplingFreqIndex, NULL); + + + // Add required bitrates + for (i=0;i<GetBitrateLentgh();i++) + { + if (i == nMinBitrateIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_SETCURSEL, i, NULL); + break; + } + } + + // Add bitrates to the VBR combo box too + for (i=0;i<GetBitrateLentgh();i++) + { + if (i == nMaxBitrateIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_SETCURSEL, i, NULL); + break; + } + } + +// SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_SETRANGE, TRUE, MAKELONG(0,9)); + + char tmp[3]; + wsprintf(tmp,"%d",VbrQuality); + SetWindowText(GetDlgItem( HwndDlg, IDC_CONFIG_QUALITY), tmp); + SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_SETPOS, TRUE, VbrQuality); + + wsprintf(tmp,"%d",AverageBitrate); + SetWindowText(GetDlgItem( HwndDlg, IDC_EDIT_AVERAGE), tmp); + + // Display VBR settings if needed + AEncodeProperties::DisplayVbrOptions(HwndDlg, mBRmode); + + // Display Resample settings if needed + if (GetResampleMode()) + { + ::EnableWindow(::GetDlgItem(HwndDlg,IDC_COMBO_SAMPLEFREQ), TRUE); + } + else + { + ::EnableWindow(::GetDlgItem(HwndDlg,IDC_COMBO_SAMPLEFREQ), FALSE); + } + + + // Add presets + for (i=0;i<GetPresetLentgh();i++) + { + if (i == nPresetIndex) + { + SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_SETCURSEL, i, NULL); + break; + } + } + + // Add User configs +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_RESETCONTENT , NULL, NULL); + ::SetWindowText(::GetDlgItem( HwndDlg, IDC_EDIT_OUTPUTDIR), OutputDir.c_str()); +*/ + /** + \todo Select the right saved config + */ + + return true; +} + +bool AEncodeProperties::UpdateValueFromDlg(HWND HwndDlg) +{ + nChannelIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_ENC_STEREO), CB_GETCURSEL, NULL, NULL); +// nMinBitrateIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_BITRATE), CB_GETCURSEL, NULL, NULL); +// nMaxBitrateIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_MAXBITRATE), CB_GETCURSEL, NULL, NULL); +// nPresetIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_PRESET), CB_GETCURSEL, NULL, NULL); +// VbrQuality = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_QUALITY), TBM_GETPOS , NULL, NULL); +// nSamplingFreqIndex = SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SAMPLEFREQ), CB_GETCURSEL, NULL, NULL); + + bCRC = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_CHECKSUM) == BST_CHECKED); + bCopyright = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_COPYRIGHT) == BST_CHECKED); + bOriginal = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_ORIGINAL) == BST_CHECKED); + bPrivate = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_PRIVATE) == BST_CHECKED); + bSmartOutput = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_ENC_SMART) == BST_CHECKED); + bAbrOutput = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_ENC_ABR) == BST_CHECKED); +// bNoBitRes =!(::IsDlgButtonChecked( HwndDlg, IDC_CHECK_RESERVOIR) == BST_CHECKED); +// bXingFrame = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_XINGVBR) == BST_CHECKED); +// bResample = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_RESAMPLE) == BST_CHECKED); +// bForceChannel = (::IsDlgButtonChecked( HwndDlg, IDC_CHECK_CHANNELFORCE) == BST_CHECKED); + + AverageBitrate_Min = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_GETPOS , NULL, NULL); + AverageBitrate_Max = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_GETPOS , NULL, NULL); + AverageBitrate_Step = SendMessage(GetDlgItem( HwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_GETPOS , NULL, NULL); + + EnableAbrOptions(HwndDlg, bAbrOutput); + +my_debug.OutPut("nChannelIndex %d, bCRC %d, bCopyright %d, bOriginal %d, bPrivate %d",nChannelIndex, bCRC, bCopyright, bOriginal, bPrivate); + +/* char tmpPath[MAX_PATH]; + ::GetWindowText( ::GetDlgItem( HwndDlg, IDC_EDIT_OUTPUTDIR), tmpPath, MAX_PATH); + OutputDir = tmpPath; + + if (::IsDlgButtonChecked(HwndDlg, IDC_RADIO_BITRATE_CBR) == BST_CHECKED) + mBRmode = BR_CBR; + else if (::IsDlgButtonChecked(HwndDlg, IDC_RADIO_BITRATE_VBR) == BST_CHECKED) + mBRmode = BR_VBR; + else + mBRmode = BR_ABR; + + ::GetWindowText( ::GetDlgItem( HwndDlg, IDC_EDIT_AVERAGE), tmpPath, MAX_PATH); + AverageBitrate = atoi(tmpPath); + if (AverageBitrate < 8) + AverageBitrate = 8; + if (AverageBitrate > 320) + AverageBitrate = 320; +*/ + return true; +} +/* +VBRMETHOD AEncodeProperties::GetVBRValue(DWORD & MaxBitrate, int & Quality, DWORD & AbrBitrate, BOOL & VBRHeader, const DWORD MPEG_Version) const +{ + assert((MPEG_Version == MPEG1) || (MPEG_Version == MPEG2)); + assert(nMaxBitrateIndex < sizeof(the_Bitrates)); + + if (mBRmode == BR_VBR) + { + MaxBitrate = the_Bitrates[nMaxBitrateIndex]; + + if (MPEG_Version == MPEG1) + MaxBitrate = MaxBitrate>the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]?MaxBitrate:the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]; + else + MaxBitrate = MaxBitrate<the_MPEG2_Bitrates[0]?MaxBitrate:the_MPEG2_Bitrates[0]; + + VBRHeader = bXingFrame; + Quality = VbrQuality; + AbrBitrate = 0; + + return VBR_METHOD_DEFAULT; // for the moment + } + else if (mBRmode == BR_ABR) + { + MaxBitrate = the_Bitrates[nMaxBitrateIndex]; + + if (MPEG_Version == MPEG1) + MaxBitrate = MaxBitrate>the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]?MaxBitrate:the_MPEG1_Bitrates[sizeof(the_MPEG1_Bitrates)/sizeof(unsigned int)-1]; + else + MaxBitrate = MaxBitrate<the_MPEG2_Bitrates[0]?MaxBitrate:the_MPEG2_Bitrates[0]; + + VBRHeader = bXingFrame; + Quality = 0; + AbrBitrate = AverageBitrate*1000; + return VBR_METHOD_ABR; + } + else + { + return VBR_METHOD_NONE; + } +} +*/ +void AEncodeProperties::ParamsRestore() +{ + // use these default parameters in case one is not found + bCopyright = true; + bCRC = true; + bOriginal = true; + bPrivate = true; + bNoBitRes = false; // enable bit reservoir + bXingFrame = true; + bResample = false; + bForceChannel = false; + bSmartOutput = true; + bAbrOutput = true; + + AverageBitrate_Min = 80; // a bit lame + AverageBitrate_Max = 160; // a bit lame + AverageBitrate_Step = 8; // a bit lame + SmartRatioMax = 15.0; + + nChannelIndex = 2; // joint-stereo + mBRmode = BR_CBR; + nMinBitrateIndex = 6; // 128 kbps (works for both MPEGI and II) + nMaxBitrateIndex = 4; // 160 kbps (works for both MPEGI and II) + nPresetIndex = 0; // None + VbrQuality = 1; // Quite High +// AverageBitrate = 128; // a bit lame + nSamplingFreqIndex = 1; // 44100 + +// OutputDir = "c:\\"; + +// DllLocation = "plugins\\lame_enc.dll"; + + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + std::string CurrentConfig = ""; + + if (CurrentNode->Attribute("default") != NULL) + { + CurrentConfig = *CurrentNode->Attribute("default"); + } + +/* // output parameters + TiXmlElement* iterateElmt = node->FirstChildElement("DLL"); + if (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("location"); + if (tmpname != NULL) + { + DllLocation = *tmpname; + } + } +*/ + GetValuesFromKey(CurrentConfig, *CurrentNode); + } + else + { + /** + \todo save the data in the file ! + */ + } +} + +void AEncodeProperties::ParamsSave() +{ +/* + + + save the current parameters in the corresponding subkey + + + + + HKEY OssKey; + + if (RegCreateKeyEx ( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI\\out_lame", 0, "", REG_OPTION_NON_VOLATILE, KEY_WRITE , NULL, &OssKey, NULL ) == ERROR_SUCCESS) { + + if (RegSetValueEx(OssKey, "DLL Location", 0, REG_EXPAND_SZ, (CONST BYTE *)DllLocation, strlen(DllLocation)+1 ) != ERROR_SUCCESS) + return; + + RegCloseKey(OssKey); + } +*/ +} +/* +void AEncodeProperties::DisplayVbrOptions(const HWND hDialog, const BRMode the_mode) +{ + bool bVBR = false; + bool bABR = false; + + switch ( the_mode ) + { + case BR_CBR: + ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_CBR); + break; + case BR_VBR: + ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_VBR); + bVBR = true; + break; + case BR_ABR: + ::CheckRadioButton(hDialog, IDC_RADIO_BITRATE_CBR, IDC_RADIO_BITRATE_ABR, IDC_RADIO_BITRATE_ABR); + bABR = true; + break; + + } + + if(bVBR|bABR) + { + ::SetWindowText(::GetDlgItem(hDialog,IDC_STATIC_MINBITRATE), "Min Bitrate"); + } + else + { + ::SetWindowText(::GetDlgItem(hDialog,IDC_STATIC_MINBITRATE), "Bitrate"); + } + + ::EnableWindow(::GetDlgItem( hDialog, IDC_CHECK_XINGVBR), bVBR|bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_COMBO_MAXBITRATE), bVBR|bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_MAXBITRATE), bVBR|bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_QUALITY), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_CONFIG_QUALITY), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY_LOW), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_VBRQUALITY_HIGH), bVBR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_ABR), bABR); + + ::EnableWindow(::GetDlgItem( hDialog, IDC_EDIT_AVERAGE), bABR); +} +*/ +AEncodeProperties::AEncodeProperties(HMODULE hModule) + :my_debug(ADbg(DEBUG_LEVEL_CREATION)), + my_hModule(hModule) +{ + std::string path = ""; +// HMODULE htmp = LoadLibrary("out_lame.dll"); + if (hModule != NULL) + { + char output[MAX_PATH]; + ::GetModuleFileName(hModule, output, MAX_PATH); +// ::FreeLibrary(htmp); + + path = output; + } + my_store_location = path.substr(0,path.find_last_of('\\')+1); + my_store_location += "lame_acm.xml"; + + my_debug.OutPut("store path = %s",my_store_location.c_str()); +//#ifdef OLD +// ::OutputDebugString(my_store_location.c_str()); + + // make sure the XML file is present + HANDLE hFile = ::CreateFile(my_store_location.c_str(), 0, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL ); + ::CloseHandle(hFile); +//#endif // OLD + my_debug.OutPut("AEncodeProperties creation completed (0x%08X)",this); +} + +// Save the values to the right XML saved config +void AEncodeProperties::SaveValuesToStringKey(const std::string & config_name) +{ + // get the current data in the file to keep them + if (my_stored_data.LoadFile(my_store_location)) + { + // check if the Node corresponding to the config_name already exist. + TiXmlNode* node = my_stored_data.FirstChild("lame_acm"); + + if (node != NULL) + { + TiXmlElement* ConfigNode = node->FirstChildElement("encodings"); + + if (ConfigNode != NULL) + { + // look all the <config> tags + TiXmlElement* tmpNode = ConfigNode->FirstChildElement("config"); + while (tmpNode != NULL) + { + const std::string * tmpname = tmpNode->Attribute("name"); + if (tmpname->compare(config_name) == 0) + { + break; + } + tmpNode = tmpNode->NextSiblingElement("config"); + } + + if (tmpNode == NULL) + { + // Create the node + tmpNode = new TiXmlElement("config"); + tmpNode->SetAttribute("name",config_name); + + // save data in the node + SaveValuesToElement(tmpNode); + + ConfigNode->InsertEndChild(*tmpNode); + } + else + { + // save data in the node + SaveValuesToElement(tmpNode); + } + + + // and save the file + my_stored_data.SaveFile(my_store_location); + } + } + } +} + +void AEncodeProperties::GetValuesFromKey(const std::string & config_name, const TiXmlNode & parentNode) +{ + TiXmlElement* tmpElt; + TiXmlElement* iterateElmt; + + // find the config that correspond to CurrentConfig + iterateElmt = parentNode.FirstChildElement("config"); + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + if ((tmpname != NULL) && (tmpname->compare(config_name) == 0)) + { + break; + } + iterateElmt = iterateElmt->NextSiblingElement("config"); + } + + if (iterateElmt != NULL) + { + // get all the parameters saved in this Element + const std::string * tmpname; + + // Smart output parameter + tmpElt = iterateElmt->FirstChildElement("Smart"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bSmartOutput = (tmpname->compare("true") == 0); + + tmpname = tmpElt->Attribute("ratio"); + if (tmpname != NULL) + SmartRatioMax = atof(tmpname->c_str()); + } + + // Smart output parameter + tmpElt = iterateElmt->FirstChildElement("ABR"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bAbrOutput = (tmpname->compare("true") == 0); + + tmpname = tmpElt->Attribute("min"); + if (tmpname != NULL) + AverageBitrate_Min = atoi(tmpname->c_str()); + + tmpname = tmpElt->Attribute("max"); + if (tmpname != NULL) + AverageBitrate_Max = atoi(tmpname->c_str()); + + tmpname = tmpElt->Attribute("step"); + if (tmpname != NULL) + AverageBitrate_Step = atoi(tmpname->c_str()); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Copyright"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bCopyright = (tmpname->compare("true") == 0); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("CRC"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bCRC = (tmpname->compare("true") == 0); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Original"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bOriginal = (tmpname->compare("true") == 0); + } + + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Private"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bPrivate = (tmpname->compare("true") == 0); + } +/* + // Copyright parameter + tmpElt = iterateElmt->FirstChildElement("Bit_reservoir"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bNoBitRes = !(tmpname->compare("true") == 0); + } + + // bitrates + tmpElt = iterateElmt->FirstChildElement("bitrate"); + tmpname = tmpElt->Attribute("min"); + if (tmpname != NULL) + { + unsigned int uitmp = atoi(tmpname->c_str()); + for (int i=0;i<sizeof(the_Bitrates)/sizeof(unsigned int);i++) + { + if (the_Bitrates[i] == uitmp) + { + nMinBitrateIndex = i; + break; + } + } + } + + tmpname = tmpElt->Attribute("max"); + if (tmpname != NULL) + { + unsigned int uitmp = atoi(tmpname->c_str()); + for (int i=0;i<sizeof(the_Bitrates)/sizeof(unsigned int);i++) + { + if (the_Bitrates[i] == uitmp) + { + nMaxBitrateIndex = i; + break; + } + } + } +*/ +/* + // resampling parameters + tmpElt = iterateElmt->FirstChildElement("resampling"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + bResample = (tmpname->compare("true") == 0); + + unsigned int uitmp = atoi(tmpElt->Attribute("freq")->c_str()); + for (int i=0;i<sizeof(the_SamplingFreqs)/sizeof(unsigned int);i++) + { + if (the_SamplingFreqs[i] == uitmp) + { + nSamplingFreqIndex = i; + break; + } + } + } + + // VBR parameters + tmpElt = iterateElmt->FirstChildElement("VBR"); + if (tmpElt != NULL) + { + tmpname = tmpElt->Attribute("use"); + if (tmpname != NULL) + { + if (tmpname->compare("ABR") == 0) + mBRmode = BR_ABR; + else if (tmpname->compare("true") == 0) + mBRmode = BR_VBR; + else + mBRmode = BR_CBR; + } + + tmpname = tmpElt->Attribute("header"); + if (tmpname != NULL) + bXingFrame = (tmpname->compare("true") == 0); + + tmpname = tmpElt->Attribute("quality"); + if (tmpname != NULL) + { + VbrQuality = atoi(tmpname->c_str()); + } + + tmpname = tmpElt->Attribute("average"); + if (tmpname != NULL) + { + AverageBitrate = atoi(tmpname->c_str()); + } + else + { + } + } + + // output parameters + tmpElt = iterateElmt->FirstChildElement("output"); + if (tmpElt != NULL) + { + OutputDir = *tmpElt->Attribute("path"); + } +*/ +//#ifdef OLD + // Channel mode parameter + tmpElt = iterateElmt->FirstChildElement("Channel"); + if (tmpElt != NULL) + { + const std::string * tmpStr = tmpElt->Attribute("mode"); + if (tmpStr != NULL) + { + for (int i=0;i<GetChannelLentgh();i++) + { + if (tmpStr->compare(GetChannelModeString(i)) == 0) + { + nChannelIndex = i; + break; + } + } + } +/* + tmpname = tmpElt->Attribute("force"); + if (tmpname != NULL) + bForceChannel = (tmpname->compare("true") == 0); +*/ + } +//#endif // OLD + + // Preset parameter +/* + tmpElt = iterateElmt->FirstChildElement("Preset"); + if (tmpElt != NULL) + { + const std::string * tmpStr = tmpElt->Attribute("type"); + for (int i=0;i<GetPresetLentgh();i++) + { + if (tmpStr->compare(GetPresetModeString(i)) == 0) + { + nPresetIndex = i; + break; + } + } + + } +*/ + } +} + +/** + \todo save the parameters +* / +void AEncodeProperties::SaveParams(const HWND hParentWnd) +{ + char string[MAX_PATH]; +/* int nIdx = SendMessage(::GetDlgItem( hParentWnd ,IDC_COMBO_SETTINGS ), CB_GETCURSEL, NULL, NULL); + ::SendMessage(::GetDlgItem( hParentWnd ,IDC_COMBO_SETTINGS ), CB_GETLBTEXT , nIdx, (LPARAM) string); +* / +}*/ + +bool AEncodeProperties::operator !=(const AEncodeProperties & the_instance) const +{ +/* + ::OutputDebugString(bCopyright != the_instance.bCopyright?"1":"-"); + ::OutputDebugString(bCRC != the_instance.bCRC ?"2":"-"); + ::OutputDebugString(bOriginal != the_instance.bOriginal ?"3":"-"); + ::OutputDebugString(bPrivate != the_instance.bPrivate ?"4":"-"); + ::OutputDebugString(bNoBitRes != the_instance.bNoBitRes ?"5":"-"); + ::OutputDebugString(mBRmode != the_instance.mBRmode ?"6":"-"); + ::OutputDebugString(bXingFrame != the_instance.bXingFrame?"7":"-"); + ::OutputDebugString(bForceChannel != the_instance.bForceChannel?"8":"-"); + ::OutputDebugString(bResample != the_instance.bResample ?"9":"-"); + ::OutputDebugString(nChannelIndex != the_instance.nChannelIndex?"10":"-"); + ::OutputDebugString(nMinBitrateIndex != the_instance.nMinBitrateIndex?"11":"-"); + ::OutputDebugString(nMaxBitrateIndex != the_instance.nMaxBitrateIndex?"12":"-"); + ::OutputDebugString(nPresetIndex != the_instance.nPresetIndex?"13":"-"); + ::OutputDebugString(VbrQuality != the_instance.VbrQuality?"14":"-"); + ::OutputDebugString(AverageBitrate != the_instance.AverageBitrate?"15":"-"); + ::OutputDebugString(nSamplingFreqIndex != the_instance.nSamplingFreqIndex?"16":"-"); + ::OutputDebugString(OutputDir.compare(the_instance.OutputDir) != 0?"17":"-"); + + std::string tmp = ""; + char tmpI[10]; + _itoa(AverageBitrate,tmpI,10); + tmp += tmpI; + tmp += " != "; + _itoa(the_instance.AverageBitrate,tmpI,10); + tmp += tmpI; + ::OutputDebugString(tmp.c_str()); +*/ + return ((bCopyright != the_instance.bCopyright) + || (bCRC != the_instance.bCRC) + || (bOriginal != the_instance.bOriginal) + || (bPrivate != the_instance.bPrivate) + || (bSmartOutput != the_instance.bSmartOutput) + || (SmartRatioMax != the_instance.SmartRatioMax) + || (bAbrOutput != the_instance.bAbrOutput) + || (AverageBitrate_Min != the_instance.AverageBitrate_Min) + || (AverageBitrate_Max != the_instance.AverageBitrate_Max) + || (AverageBitrate_Step != the_instance.AverageBitrate_Step) + || (bNoBitRes != the_instance.bNoBitRes) + || (mBRmode != the_instance.mBRmode) + || (bXingFrame != the_instance.bXingFrame) + || (bForceChannel != the_instance.bForceChannel) + || (bResample != the_instance.bResample) + || (nChannelIndex != the_instance.nChannelIndex) + || (nMinBitrateIndex != the_instance.nMinBitrateIndex) + || (nMaxBitrateIndex != the_instance.nMaxBitrateIndex) + || (nPresetIndex != the_instance.nPresetIndex) + || (VbrQuality != the_instance.VbrQuality) +// || (AverageBitrate != the_instance.AverageBitrate) + || (nSamplingFreqIndex != the_instance.nSamplingFreqIndex) +// || (OutputDir.compare(the_instance.OutputDir) != 0) + ); +} + +void AEncodeProperties::SelectSavedParams(const std::string the_string) +{ + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + if (CurrentNode != NULL) + { + CurrentNode->SetAttribute("default",the_string); + GetValuesFromKey(the_string, *CurrentNode); + my_stored_data.SaveFile(my_store_location); + } + } +} + +inline void AEncodeProperties::SetAttributeBool(TiXmlElement * the_elt,const std::string & the_string, const bool the_value) const +{ + if (the_value == false) + the_elt->SetAttribute(the_string, "false"); + else + the_elt->SetAttribute(the_string, "true"); +} + +void AEncodeProperties::SaveValuesToElement(TiXmlElement * the_element) const +{ + // get all the parameters saved in this Element + TiXmlElement * tmpElt; + + // Bit Reservoir parameter +/* + tmpElt = the_element->FirstChildElement("Bit_reservoir"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Bit_reservoir"); + SetAttributeBool(tmpElt, "use", !bNoBitRes); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool(tmpElt, "use", !bNoBitRes); + } +*/ + // Copyright parameter + tmpElt = the_element->FirstChildElement("Copyright"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Copyright"); + SetAttributeBool( tmpElt, "use", bCopyright); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bCopyright); + } + + // Smart Output parameter + tmpElt = the_element->FirstChildElement("Smart"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Smart"); + SetAttributeBool( tmpElt, "use", bSmartOutput); + tmpElt->SetAttribute("ratio", SmartRatioMax); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bSmartOutput); + tmpElt->SetAttribute("ratio", SmartRatioMax); + } + + // Smart Output parameter + tmpElt = the_element->FirstChildElement("ABR"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("ABR"); + SetAttributeBool( tmpElt, "use", bAbrOutput); + tmpElt->SetAttribute("min", AverageBitrate_Min); + tmpElt->SetAttribute("max", AverageBitrate_Max); + tmpElt->SetAttribute("step", AverageBitrate_Step); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bAbrOutput); + tmpElt->SetAttribute("min", AverageBitrate_Min); + tmpElt->SetAttribute("max", AverageBitrate_Max); + tmpElt->SetAttribute("step", AverageBitrate_Step); + } + + // CRC parameter + tmpElt = the_element->FirstChildElement("CRC"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("CRC"); + SetAttributeBool( tmpElt, "use", bCRC); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bCRC); + } + + // Original parameter + tmpElt = the_element->FirstChildElement("Original"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Original"); + SetAttributeBool( tmpElt, "use", bOriginal); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bOriginal); + } + + // Private parameter + tmpElt = the_element->FirstChildElement("Private"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Private"); + SetAttributeBool( tmpElt, "use", bPrivate); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bPrivate); + } + + // Channel Mode parameter + tmpElt = the_element->FirstChildElement("Channel"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Channel"); + tmpElt->SetAttribute("mode", GetChannelModeString(nChannelIndex)); +// SetAttributeBool( tmpElt, "force", bForceChannel); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("mode", GetChannelModeString(nChannelIndex)); +// SetAttributeBool( tmpElt, "force", bForceChannel); + } +/* + // Preset parameter + tmpElt = the_element->FirstChildElement("Preset"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("Preset"); + tmpElt->SetAttribute("type", GetPresetModeString(nPresetIndex)); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("type", GetPresetModeString(nPresetIndex)); + } + + // Bitrate parameter + tmpElt = the_element->FirstChildElement("bitrate"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("bitrate"); + tmpElt->SetAttribute("min", the_Bitrates[nMinBitrateIndex]); + tmpElt->SetAttribute("max", the_Bitrates[nMaxBitrateIndex]); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("min", the_Bitrates[nMinBitrateIndex]); + tmpElt->SetAttribute("max", the_Bitrates[nMaxBitrateIndex]); + } + + // Output Directory parameter + tmpElt = the_element->FirstChildElement("output"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("output"); + tmpElt->SetAttribute("path", OutputDir); + the_element->InsertEndChild(*tmpElt); + } + else + { + tmpElt->SetAttribute("path", OutputDir); + } +*/ +/* + // Resampling parameter + tmpElt = the_element->FirstChildElement("resampling"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("resampling"); + SetAttributeBool( tmpElt, "use", bResample); + tmpElt->SetAttribute("freq", the_SamplingFreqs[nSamplingFreqIndex]); + the_element->InsertEndChild(*tmpElt); + } + else + { + SetAttributeBool( tmpElt, "use", bResample); + tmpElt->SetAttribute("freq", the_SamplingFreqs[nSamplingFreqIndex]); + } + + // VBR parameter + tmpElt = the_element->FirstChildElement("VBR"); + if (tmpElt == NULL) + { + tmpElt = new TiXmlElement("VBR"); + + if (mBRmode == BR_ABR) + tmpElt->SetAttribute("use", "ABR"); + else + SetAttributeBool( tmpElt, "use", (mBRmode != BR_CBR)); + + SetAttributeBool( tmpElt, "header", bXingFrame); + tmpElt->SetAttribute("quality", VbrQuality); + tmpElt->SetAttribute("average", AverageBitrate); + the_element->InsertEndChild(*tmpElt); + } + else + { + if (mBRmode == BR_ABR) + tmpElt->SetAttribute("use", "ABR"); + else + SetAttributeBool( tmpElt, "use", (mBRmode != BR_CBR)); + + SetAttributeBool( tmpElt, "header", bXingFrame); + tmpElt->SetAttribute("quality", VbrQuality); + tmpElt->SetAttribute("average", AverageBitrate); + } +*/ +} + +bool AEncodeProperties::HandleDialogCommand(const HWND parentWnd, const WPARAM wParam, const LPARAM lParam) +{ + UINT command; + command = GET_WM_COMMAND_ID(wParam, lParam); + + switch (command) + { + case IDOK : + { + bool bShouldEnd = true; + + // save parameters + char string[MAX_PATH]; +// ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + wsprintf(string,"Current"); // only the Current config is supported at the moment + + my_debug.OutPut("my_hModule = 0x%08X",my_hModule); +/* + AEncodeProperties tmpDlgProps(my_hModule); + AEncodeProperties tmpSavedProps(my_hModule); +//#ifdef OLD + tmpDlgProps.UpdateValueFromDlg(parentWnd); + tmpSavedProps.SelectSavedParams(string); + tmpSavedProps.ParamsRestore(); + // check if the values from the DLG are the same as the one saved in the config file + // if yes, just do nothing +/* + if (tmpDlgProps != tmpSavedProps) + { + int save; + + if (strcmp(string,"Current") == 0) + { + // otherwise, prompt the user if he wants to overwrite the settings + TCHAR tmpStr[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_PROMPT_REPLACE_CURRENT,tmpStr,250); + + save = AOut::MyMessageBox( tmpStr, MB_OKCANCEL|MB_ICONQUESTION, parentWnd); + } + else + { + // otherwise, prompt the user if he wants to overwrite the settings + TCHAR tmpStr[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_PROMPT_REPLACE_SETING,tmpStr,250); + TCHAR tmpDsp[500]; + wsprintf(tmpDsp,tmpStr,string); + + save = AOut::MyMessageBox( tmpDsp, MB_YESNOCANCEL|MB_ICONQUESTION, parentWnd); + } + + if (save == IDCANCEL) + bShouldEnd = false; + else if (save == IDNO) + { + // save the values in 'current' + UpdateValueFromDlg(parentWnd); + SaveValuesToStringKey("Current"); + SelectSavedParams("Current"); + } + else + { + // do so and save in XML + UpdateValueFromDlg(parentWnd); + SaveValuesToStringKey(string); + } + } +*/ +//#endif // OLD +my_debug.OutPut("before : nChannelIndex %d, bCRC %d, bCopyright %d, bOriginal %d, bPrivate %d",nChannelIndex, bCRC, bCopyright, bOriginal, bPrivate); + +my_debug.OutPut("call UpdateValueFromDlg"); + + UpdateValueFromDlg(parentWnd); + +my_debug.OutPut("call SaveValuesToStringKey"); + + SaveValuesToStringKey("Current"); // only Current config is supported now + +// SaveParams(parentWnd); + +//my_debug.OutPut("call SelectSavedParams"); + +// SelectSavedParams(string); +// UpdateDlgFromValue(parentWnd); + +my_debug.OutPut("finished saving"); + + if (bShouldEnd) + { + RemoveProp(parentWnd, "AEncodeProperties-Config"); + + EndDialog(parentWnd, true); + } + } + break; + + case IDCANCEL: + RemoveProp(parentWnd, "AEncodeProperties-Config"); + EndDialog(parentWnd, false); + break; + +/* case IDC_FIND_DLL: + { + OPENFILENAME file; + char DllLocation[512]; + wsprintf(DllLocation,"%s",GetDllLocation()); + + memset(&file, 0, sizeof(file)); + file.lStructSize = sizeof(file); + file.hwndOwner = parentWnd; + file.Flags = OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_ENABLEHOOK | OFN_EXPLORER ; +/// file.lpstrFile = AOut::the_AOut->DllLocation; + file.lpstrFile = DllLocation; + file.lpstrFilter = "Lame DLL (lame_enc.dll)\0LAME_ENC.DLL\0DLL (*.dll)\0*.DLL\0All (*.*)\0*.*\0"; + file.nFilterIndex = 1; + file.nMaxFile = sizeof(DllLocation); + file.lpfnHook = DLLFindCallback; // use to validate the DLL chosen + + GetOpenFileName(&file); + + SetDllLocation(DllLocation); + // use this filename if necessary + } + break; +*/ +/* case IDC_BUTTON_OUTPUT: + { +#ifndef SIMPLE_FOLDER + BROWSEINFO info; + memset(&info,0,sizeof(info)); + + char FolderName[MAX_PATH]; + + info.hwndOwner = parentWnd; + info.pszDisplayName = FolderName; + info.lpfn = BrowseFolderCallbackroc; + info.lParam = (LPARAM) this; + + // get the localised window title + TCHAR output[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_DIR_SELECT,output,250); + info.lpszTitle = output; + +#ifdef BIF_EDITBOX + info.ulFlags |= BIF_EDITBOX; +#else // BIF_EDITBOX + info.ulFlags |= 0x0010; +#endif // BIF_EDITBOX + +#ifdef BIF_VALIDATE + info.ulFlags |= BIF_VALIDATE; +#else // BIF_VALIDATE + info.ulFlags |= 0x0020; +#endif // BIF_VALIDATE + +#ifdef BIF_NEWDIALOGSTYLE + info.ulFlags |= BIF_NEWDIALOGSTYLE; +#else // BIF_NEWDIALOGSTYLE + info.ulFlags |= 0x0040; +#endif // BIF_NEWDIALOGSTYLE + + ITEMIDLIST *item = SHBrowseForFolder(&info); + + if (item != NULL) + { + char tmpOutputDir[MAX_PATH]; + wsprintf(tmpOutputDir,"%s",GetOutputDirectory()); + + SHGetPathFromIDList( item,tmpOutputDir ); + SetOutputDirectory( tmpOutputDir ); + ::SetWindowText(GetDlgItem( parentWnd, IDC_EDIT_OUTPUTDIR), tmpOutputDir); +// wsprintf(OutputDir,FolderName); + } +#else // SIMPLE_FOLDER + OPENFILENAME file; + + memset(&file, 0, sizeof(file)); + file.lStructSize = sizeof(file); + file.hwndOwner = parentWnd; + file.Flags = OFN_FILEMUSTEXIST | OFN_NODEREFERENCELINKS | OFN_ENABLEHOOK | OFN_EXPLORER ; +// file.lpstrFile = GetDllLocation(); +// file.lpstrFile = GetOutputDirectory(); + file.lpstrInitialDir = GetOutputDirectory(); + file.lpstrFilter = "A Directory\0.*\0"; +// file.nFilterIndex = 1; + file.nMaxFile = MAX_PATH; +// file.lpfnHook = DLLFindCallback; // use to validate the DLL chosen +// file.Flags = OFN_ENABLESIZING | OFN_NOREADONLYRETURN | OFN_HIDEREADONLY; + file.Flags = OFN_NOREADONLYRETURN | OFN_HIDEREADONLY | OFN_EXPLORER; + + TCHAR output[250]; + ::LoadString(AOut::GetInstance(),IDS_STRING_DIR_SELECT,output,250); + file.lpstrTitle = output; + + GetSaveFileName(&file); +#endif // SIMPLE_FOLDER + } + break; +*/ + case IDC_CHECK_ENC_ABR: + EnableAbrOptions(parentWnd, ::IsDlgButtonChecked( parentWnd, IDC_CHECK_ENC_ABR) == BST_CHECKED); + break; +/* case IDC_RADIO_BITRATE_CBR: + AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_CBR); + break; + + case IDC_RADIO_BITRATE_VBR: + AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_VBR); + break; + + case IDC_RADIO_BITRATE_ABR: + AEncodeProperties::DisplayVbrOptions(parentWnd, AEncodeProperties::BR_ABR); + break; + + case IDC_CHECK_RESAMPLE: + { + bool tmp_bResampleUsed = (::IsDlgButtonChecked( parentWnd, IDC_CHECK_RESAMPLE) == BST_CHECKED); + if (tmp_bResampleUsed) + { + ::EnableWindow(::GetDlgItem(parentWnd,IDC_COMBO_SAMPLEFREQ), TRUE); + } + else + { + ::EnableWindow(::GetDlgItem(parentWnd,IDC_COMBO_SAMPLEFREQ), FALSE); + } + } + break; +*/ +/* case IDC_COMBO_SETTINGS: +// if (CBN_SELCHANGE == GET_WM_COMMAND_CMD(wParam, lParam)) + if (CBN_SELENDOK == GET_WM_COMMAND_CMD(wParam, lParam)) + { + char string[MAX_PATH]; + int nIdx = SendMessage(HWND(lParam), CB_GETCURSEL, NULL, NULL); + SendMessage(HWND(lParam), CB_GETLBTEXT , nIdx, (LPARAM) string); + + // get the info corresponding to the new selected item + SelectSavedParams(string); + UpdateDlgFromValue(parentWnd); + } + break; +*/ +/* case IDC_BUTTON_CONFIG_SAVE: + { + // save the data in the current config + char string[MAX_PATH]; + ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + UpdateValueFromDlg(parentWnd); + SaveValuesToStringKey(string); + SelectSavedParams(string); + UpdateConfigs(parentWnd); + UpdateDlgFromValue(parentWnd); + } + break; + + case IDC_BUTTON_CONFIG_RENAME: + { + char string[MAX_PATH]; + ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + if (RenameCurrentTo(string)) + { + // Update the names displayed + UpdateConfigs(parentWnd); + } + + } + break; + + case IDC_BUTTON_CONFIG_DELETE: + { + char string[MAX_PATH]; + ::GetWindowText(::GetDlgItem( parentWnd, IDC_COMBO_SETTINGS), string, MAX_PATH); + + if (DeleteConfig(string)) + { + // Update the names displayed + UpdateConfigs(parentWnd); + UpdateDlgFromValue(parentWnd); + } + } + break; +*/ + } + + return FALSE; +} + +bool AEncodeProperties::RenameCurrentTo(const std::string & new_config_name) +{ + bool bResult = false; + + // display all the names of the saved configs + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + if (CurrentNode->Attribute("default") != NULL) + { + std::string CurrentConfigName = *CurrentNode->Attribute("default"); + + // no rename possible for Current + if (CurrentConfigName == "") + { + bResult = true; + } + else if (CurrentConfigName != "Current") + { + // find the config that correspond to CurrentConfig + TiXmlElement* iterateElmt = CurrentNode->FirstChildElement("config"); +// int Idx = 0; + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + /** + \todo support language names + */ + if (tmpname != NULL) + { + if (tmpname->compare(CurrentConfigName) == 0) + { + iterateElmt->SetAttribute("name",new_config_name); + bResult = true; + break; + } + } +// Idx++; + iterateElmt = iterateElmt->NextSiblingElement("config"); + } + } + + if (bResult) + { + CurrentNode->SetAttribute("default",new_config_name); + + my_stored_data.SaveFile(my_store_location); + } + } + } + + return bResult; +} + +bool AEncodeProperties::DeleteConfig(const std::string & config_name) +{ + bool bResult = false; + + if (config_name != "Current") + { + // display all the names of the saved configs + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + TiXmlElement* iterateElmt = CurrentNode->FirstChildElement("config"); +// int Idx = 0; + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + /** + \todo support language names + */ + if (tmpname != NULL) + { + if (tmpname->compare(config_name) == 0) + { + CurrentNode->RemoveChild(iterateElmt); + bResult = true; + break; + } + } +// Idx++; + iterateElmt = iterateElmt->NextSiblingElement("config"); + } + } + + if (bResult) + { + my_stored_data.SaveFile(my_store_location); + + // select a new default config : "Current" + SelectSavedParams("Current"); + + } + } + + return bResult; +} + +void AEncodeProperties::UpdateConfigs(const HWND HwndDlg) +{ + // Add User configs +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_RESETCONTENT , NULL, NULL); + + // display all the names of the saved configs + // get the values from the saved file if possible + if (my_stored_data.LoadFile(my_store_location)) + { + TiXmlNode* node; + + node = my_stored_data.FirstChild("lame_acm"); + + TiXmlElement* CurrentNode = node->FirstChildElement("encodings"); + + std::string CurrentConfig = ""; + + if (CurrentNode->Attribute("default") != NULL) + { + CurrentConfig = *CurrentNode->Attribute("default"); + } + + TiXmlElement* iterateElmt; + +my_debug.OutPut("are we here ?"); + + // find the config that correspond to CurrentConfig + iterateElmt = CurrentNode->FirstChildElement("config"); + int Idx = 0; + while (iterateElmt != NULL) + { + const std::string * tmpname = iterateElmt->Attribute("name"); + /** + \todo support language names + */ + if (tmpname != NULL) + { +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_ADDSTRING, NULL, (LPARAM) tmpname->c_str()); + if (tmpname->compare(CurrentConfig) == 0) + { +// SendMessage(GetDlgItem( HwndDlg, IDC_COMBO_SETTINGS), CB_SETCURSEL, Idx, NULL); + SelectSavedParams(*tmpname); + UpdateDlgFromValue(HwndDlg); + } + } +my_debug.OutPut("Idx = %d",Idx); + + Idx++; + // only Current config supported now +// iterateElmt = iterateElmt->NextSiblingElement("config"); + iterateElmt = NULL; +my_debug.OutPut("iterateElmt = 0x%08X",iterateElmt); + + } + } +} +/* +void AEncodeProperties::UpdateAbrSteps(unsigned int min, unsigned int max, unsigned int step) const +{ +} +*/ +void AEncodeProperties::UpdateDlgFromSlides(HWND hwndDlg) const +{ + UINT value_min, value_max, value_step, value; + char tmp[4]; + + value_min = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_GETPOS, NULL, NULL); + value_max = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_GETPOS, NULL, NULL); + + if (value_min>value_max) + { + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MIN), TBM_SETPOS, TRUE, value_max); + UpdateDlgFromSlides(hwndDlg); + return; + } + + if (value_max<value_min) + { + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_MAX), TBM_SETPOS, TRUE, value_min); + UpdateDlgFromSlides(hwndDlg); + return; + } + + wsprintf(tmp,"%3d",value_min); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_MIN_VALUE), tmp); + + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETRANGEMIN, TRUE, value_min); + + wsprintf(tmp,"%3d",value_max); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_MAX_VALUE), tmp); + + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETRANGEMAX, TRUE, value_max); + + value_step = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_STEP), TBM_GETPOS, NULL, NULL); + wsprintf(tmp,"%3d",value_step); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_STEP_VALUE), tmp); + + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_CLEARTICS, TRUE, 0); + for(UINT i=value_max; i>=value_min;i-=value_step) + { + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETTIC, 0, i); + } + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETLINESIZE, 0, value_step); + SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_SETPAGESIZE, 0, value_step); + + value = SendMessage(GetDlgItem( hwndDlg, IDC_SLIDER_AVERAGE_SAMPLE), TBM_GETPOS, NULL, NULL); + wsprintf(tmp,"%3d",value); + ::SetWindowText(GetDlgItem( hwndDlg, IDC_STATIC_AVERAGE_SAMPLE_VALUE), tmp); +} + +void AEncodeProperties::EnableAbrOptions(HWND hDialog, bool enable) +{ + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_MIN), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_MAX), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_STEP), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_SLIDER_AVERAGE_SAMPLE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MIN), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MAX), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_STEP), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_SAMPLE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MIN_VALUE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_MAX_VALUE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_STEP_VALUE), enable); + ::EnableWindow(::GetDlgItem( hDialog, IDC_STATIC_AVERAGE_SAMPLE_VALUE), enable); +} + diff --git a/lame-3.97/ACM/AEncodeProperties.h b/lame-3.97/ACM/AEncodeProperties.h new file mode 100644 index 0000000..4d2e1db --- /dev/null +++ b/lame-3.97/ACM/AEncodeProperties.h @@ -0,0 +1,448 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: AEncodeProperties.h,v 1.5 2002/04/07 13:31:35 robux4 Exp $ +*/ + +#if !defined(_AENCODEPROPERTIES_H__INCLUDED_) +#define _AENCODEPROPERTIES_H__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include <windows.h> +#include <string> + +#include "ADbg/ADbg.h" +//#include "BladeMP3EncDLL.h" +#include "tinyxml/tinyxml.h" +//#include "AParameters/AParameters.h" + +typedef const struct { + UINT id; + const char *tip; +} ToolTipItem; +/** + \class AEncodeProperties + \brief the AEncodeProperties class is responsible for handling all the encoding properties +*/ +class AEncodeProperties +{ +public: + /** + \brief default constructor + + \param the windows module with which you can retrieve many informations + */ + AEncodeProperties(HMODULE hModule); + + /** + \brief default destructor + */ + virtual ~AEncodeProperties() {} + + /** + \enum BRMode + \brief A bitrate mode (CBR, VBR, ABR) + */ + enum BRMode { BR_CBR, BR_VBR, BR_ABR }; + + /** + \brief Handle all the commands that occur in the Config dialog box + */ + bool HandleDialogCommand(const HWND parentWnd, const WPARAM wParam, const LPARAM lParam); + /** + \brief check wether 2 instances are equal, ie have the same encoding parameters + */ + bool operator != (const AEncodeProperties & the_instance) const; + + /** + \brief Check wether the Encode process should use the Copyright bit + */ + inline const bool GetCopyrightMode() const { return bCopyright; } + /** + \brief Check wether the Encode process should use the CRC bit + */ + inline const bool GetCRCMode() const { return bCRC; } + /** + \brief Check wether the Encode process should use the Original bit + */ + inline const bool GetOriginalMode() const { return bOriginal; } + /** + \brief Check wether the Encode process should use the Private bit + */ + inline const bool GetPrivateMode() const { return bPrivate; } + /** + \brief Check wether the Encode process should use the Smart Bitrate output + */ + inline const bool GetSmartOutputMode() const { return bSmartOutput; } + /** + \brief Check wether the Encode process should allow Average Bitrate output + */ + inline const bool GetAbrOutputMode() const { return bAbrOutput; } + + /** + \brief Check wether the Encode process shouldn't use the Bit Reservoir + */ + inline const bool GetNoBiResMode() const { return bNoBitRes; } + + /** + \brief Check wether the Encode process should force the channel mode (stereo or mono resampling) + */ + inline const bool GetForceChannelMode() const { return bForceChannel; } + + /** + \brief Check wether the Encode process should use the VBR mode + */ + inline const BRMode GetVBRUseMode() const { return mBRmode; } + /** + \brief Check wether the Encode process should use the Xing frame in the VBR mode + \note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file. + */ + inline const bool GetXingFrameMode() const { return bXingFrame; } + + /** + \brief Check wether the Encode process should resample before encoding + */ + inline const bool GetResampleMode() const { return bResample; } + + /** + \brief Set wether the Encode process should use the Copyright bit + */ + inline void SetCopyrightMode(const bool bMode) { bCopyright = bMode; } + /** + \brief Set wether the Encode process should use the CRC bit + */ + inline void SetCRCMode(const bool bMode) { bCRC = bMode; } + /** + \brief Set wether the Encode process should use the Original bit + */ + inline void SetOriginalMode(const bool bMode) { bOriginal = bMode; } + /** + \brief Set wether the Encode process should use the Private bit + */ + inline void SetPrivateMode(const bool bMode) { bPrivate = bMode; } + + /** + \brief Set wether the Encode process should use the Smart Bitrate output + */ + inline void SetSmartOutputMode(const bool bMode) { bSmartOutput = bMode; } + /** + \brief Set wether the Encode process should use the Average Bitrate output + */ + inline void SetAbrOutputMode(const bool bMode) { bAbrOutput = bMode; } + + + /** + \brief Set wether the Encode process shouldn't use the Bit Reservoir + */ + inline void SetNoBiResMode(const bool bMode) { bNoBitRes = bMode; } + + /** + \brief Set wether the Encode process should force the channel mode (stereo or mono resampling) + */ + inline void SetForceChannelMode(const bool bMode) { bForceChannel = bMode; } + + /** + \brief Set wether the Encode process should use the VBR mode + */ + inline void SetVBRUseMode(const BRMode mode) { mBRmode = mode; } + + /** + \brief Set wether the Encode process should use the Xing frame in the VBR mode + \note the Xing frame is a silent frame at the beginning that contain VBR statistics about the file. + */ + inline void SetXingFrameMode(const bool bMode) { bXingFrame = bMode; } + + /** + \brief CBR : Get the bitrate to use / + VBR : Get the minimum bitrate value + */ + const unsigned int GetBitrateValue() const; + + /** + \brief Get the current (VBR:min) bitrate for the specified MPEG version + + \param bitrate the data that will be filled with the bitrate + \param MPEG_Version The MPEG version (MPEG1 or MPEG2) + + \return 0 if the bitrate is not found, 1 if the bitrate is found + */ + const int GetBitrateValue(DWORD & bitrate, const DWORD MPEG_Version) const; + /** + \brief Get the current (VBR:min) bitrate for MPEG I + + \param bitrate the data that will be filled with the bitrate + + \return 0 if the bitrate is not found, 1 if the bitrate is found + */ + const int GetBitrateValueMPEG1(DWORD & bitrate) const; + /** + \brief Get the current (VBR:min) bitrate for MPEG II + + \param bitrate the data that will be filled with the bitrate + + \return 0 if the bitrate is not found, 1 if the bitrate is found + */ + const int GetBitrateValueMPEG2(DWORD & bitrate) const; + + /** + \brief Get the current (VBR:min) bitrate in the form of a string + + \param string the string that will be filled + \param string_size the size of the string + + \return -1 if the bitrate is not found, and the number of char copied otherwise + */ + inline const int GetBitrateString(char * string, int string_size) const {return GetBitrateString(string,string_size,nMinBitrateIndex); } + + /** + \brief Get the (VBR:min) bitrate corresponding to the specified index in the form of a string + + \param string the string that will be filled + \param string_size the size of the string + \param a_bitrateID the index in the Bitrate table + + \return -1 if the bitrate is not found, and the number of char copied otherwise + */ + const int GetBitrateString(char * string, int string_size, int a_bitrateID) const; + + /** + \brief Get the number of possible bitrates + */ + inline const int GetBitrateLentgh() const { return sizeof(the_Bitrates) / sizeof(unsigned int); } + /** + \brief Get the number of possible sampling frequencies + */ + inline const unsigned int GetResampleFreq() const { return the_SamplingFreqs[nSamplingFreqIndex]; } + /** + \brief Get the max compression ratio allowed (1:15 default) + */ + inline double GetSmartRatio() const { return SmartRatioMax;} + /** + \brief Get the min ABR bitrate possible + */ + inline unsigned int GetAbrBitrateMin() const { return AverageBitrate_Min;} + /** + \brief Get the max ABR bitrate possible + */ + inline unsigned int GetAbrBitrateMax() const { return AverageBitrate_Max;} + /** + \brief Get the step between ABR bitrates + */ + inline unsigned int GetAbrBitrateStep() const { return AverageBitrate_Step;} + + /** + \brief Get the VBR attributes for a specified MPEG version + + \param MaxBitrate receive the maximum bitrate possible in the VBR mode + \param Quality receive the quality value (0 to 9 see Lame doc for more info) + \param VBRHeader receive the value that indicates wether the VBR/Xing header should be filled + \param MPEG_Version The MPEG version (MPEG1 or MPEG2) + + \return the VBR mode (Old, New, ABR, MTRH, Default or None) + */ +// VBRMETHOD GetVBRValue(DWORD & MaxBitrate, int & Quality, DWORD & AbrBitrate, BOOL & VBRHeader, const DWORD MPEG_Version) const; + + /** + \brief Get the Lame DLL Location + */ +// const char * GetDllLocation() const { return DllLocation.c_str(); } + /** + \brief Set the Lame DLL Location + */ +// void SetDllLocation( const char * the_string ) { DllLocation = the_string; } + + /** + \brief Get the output directory for encoding + */ +// const char * GetOutputDirectory() const { return OutputDir.c_str(); } + /** + \brief Set the output directory for encoding + */ +// void SetOutputDirectory( const char * the_string ) { OutputDir = the_string; } + + /** + \brief Get the current channel mode to use + */ + const unsigned int GetChannelModeValue() const; + /** + \brief Get the current channel mode in the form of a string + */ + inline const char * GetChannelModeString() const {return GetChannelModeString(nChannelIndex); } + /** + \brief Get the channel mode in the form of a string for the specified Channel mode index + + \param a_channelID the Channel mode index (see GetChannelLentgh()) + */ + const char * GetChannelModeString(const int a_channelID) const; + /** + \brief Get the number of possible channel mode + */ + inline const int GetChannelLentgh() const { return 3; } + + /** + \brief Get the current preset to use, see lame documentation/code for more info on the possible presets + */ +// const LAME_QUALTIY_PRESET GetPresetModeValue() const; + /** + \brief Get the preset in the form of a string for the specified Channel mode index + + \param a_presetID the preset index (see GetPresetLentgh()) + */ + const char * GetPresetModeString(const int a_presetID) const; + /** + \brief Get the number of possible presets + */ +// inline const int GetPresetLentgh() const { return sizeof(the_Presets) / sizeof(LAME_QUALTIY_PRESET); } + + /** + \brief Start the user configuration process (called by AOut::config()) + */ + bool Config(const HINSTANCE hInstance, const HWND HwndParent); + + /** + \brief Init the config dialog box with the right texts and choices + */ + bool InitConfigDlg(HWND hDialog); + + /** + \brief Update the instance parameters from the config dialog box + */ + bool UpdateValueFromDlg(HWND hDialog); + /** + \brief Update the config dialog box from the instance parameters + */ + bool UpdateDlgFromValue(HWND hDialog); + + /** + \brief Update the config dialog box with the BitRate mode + */ + static void DisplayVbrOptions(const HWND hDialog, const BRMode the_mode); + + /** + \brief Handle the saving of parameters when something has changed in the config dialog box + */ + void SaveParams(const HWND hDialog); + + /** + \brief Save the current parameters (current config in use) + */ + void ParamsSave(void); + /** + \brief Load the parameters (current config in use) + */ + void ParamsRestore(void); + + /** + \brief Select the specified config name as the new default one + */ + void SelectSavedParams(const std::string config_name); + /** + \brief Save the current parameters to the specified config name + */ + void SaveValuesToStringKey(const std::string & config_name); + /** + \brief Rename the current config name to something else + */ + bool RenameCurrentTo(const std::string & new_config_name); + /** + \brief Delete the config name from the saved configs + */ + bool DeleteConfig(const std::string & config_name); + + ADbg my_debug; + + /** + \brief Update the slides value (on scroll) + */ + void UpdateDlgFromSlides(HWND parent_window) const; + + static ToolTipItem Tooltips[13]; +private: + + bool bCopyright; + bool bCRC; + bool bOriginal; + bool bPrivate; + bool bNoBitRes; + BRMode mBRmode; + bool bXingFrame; + bool bForceChannel; + bool bResample; + bool bSmartOutput; + bool bAbrOutput; + + int VbrQuality; + unsigned int AverageBitrate_Min; + unsigned int AverageBitrate_Max; + unsigned int AverageBitrate_Step; + + double SmartRatioMax; + + static const unsigned int the_ChannelModes[3]; + int nChannelIndex; + + static const unsigned int the_Bitrates[18]; + static const unsigned int the_MPEG1_Bitrates[14]; + static const unsigned int the_MPEG2_Bitrates[14]; + int nMinBitrateIndex; // CBR and VBR + int nMaxBitrateIndex; // only used in VBR mode + + static const unsigned int the_SamplingFreqs[9]; + int nSamplingFreqIndex; + +// static const LAME_QUALTIY_PRESET the_Presets[17]; + int nPresetIndex; + +// char DllLocation[512]; +// std::string DllLocation; +// char OutputDir[MAX_PATH]; +// std::string OutputDir; + +// AParameters my_base_parameters; + TiXmlDocument my_stored_data; + std::string my_store_location; + std::string my_current_config; + +// HINSTANCE hDllInstance; + + void SaveValuesToElement(TiXmlElement * the_element) const; + inline void SetAttributeBool(TiXmlElement * the_elt,const std::string & the_string, const bool the_value) const; + void UpdateConfigs(const HWND HwndDlg); + void EnableAbrOptions(HWND hDialog, bool enable); + + HMODULE my_hModule; + + /** + \brief + + \param config_name + \param parentNode + */ + void GetValuesFromKey(const std::string & config_name, const TiXmlNode & parentNode); +}; + +#endif // !defined(_AENCODEPROPERTIES_H__INCLUDED_) diff --git a/lame-3.97/ACM/DecodeStream.cpp b/lame-3.97/ACM/DecodeStream.cpp new file mode 100644 index 0000000..c2c753c --- /dev/null +++ b/lame-3.97/ACM/DecodeStream.cpp @@ -0,0 +1,242 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: DecodeStream.cpp,v 1.3 2002/01/25 17:51:42 robux4 Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <assert.h> +#include <windows.h> + +#ifdef ENABLE_DECODING + +#include "adebug.h" + +#include "DecodeStream.h" + +// static methods + +DecodeStream * DecodeStream::Create() +{ + DecodeStream * Result; + + Result = new DecodeStream; + + return Result; +} + +const bool DecodeStream::Erase(const DecodeStream * a_ACMStream) +{ + delete a_ACMStream; + return true; +} + +// class methods + +DecodeStream::DecodeStream() : + m_WorkingBufferUseSize(0), + gfp(NULL) +{ + /// \todo get the debug level from the registry +my_debug = new ADbg(DEBUG_LEVEL_CREATION); + if (my_debug != NULL) { + unsigned char DebugFileName[512]; + + my_debug->setPrefix("MPG123stream"); /// \todo get it from the registry +my_debug->setIncludeTime(true); /// \todo get it from the registry + +// Check in the registry if we have to Output Debug information +DebugFileName[0] = '\0'; + + HKEY OssKey; + if (RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SOFTWARE\\MUKOLI", 0, KEY_READ , &OssKey ) == ERROR_SUCCESS) { + DWORD DataType; + DWORD DebugFileNameSize = 512; + if (RegQueryValueEx( OssKey, "DebugFile", NULL, &DataType, DebugFileName, &DebugFileNameSize ) == ERROR_SUCCESS) { + if (DataType == REG_SZ) { + my_debug->setUseFile(true); + my_debug->setDebugFile((char *)DebugFileName); + my_debug->OutPut("Debug file is %s",(char *)DebugFileName); + } + } + } + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "DecodeStream Creation (0X%08X)",this); + } + else { + ADbg debug; + debug.OutPut("DecodeStream::ACMACMStream : Impossible to create my_debug"); + } + +} + +DecodeStream::~DecodeStream() +{ +// lame_close( gfp ); + + if (my_debug != NULL) + { + my_debug->OutPut(DEBUG_LEVEL_FUNC_START, "DecodeStream Deletion (0X%08X)",this); + delete my_debug; + } +} + +bool DecodeStream::init(const int nSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const int nSourceBitrate) +{ + bool bResult = false; + + my_SamplesPerSec = nSamplesPerSec; + my_Channels = nChannels; + my_AvgBytesPerSec = nAvgBytesPerSec; + my_SourceBitrate = nSourceBitrate; + + bResult = true; + + return bResult; +} + +bool DecodeStream::open() +{ + bool bResult = false; + + bResult = bool(InitMP3(&my_DecodeData) != 0); + + return bResult; +} + +bool DecodeStream::close(LPBYTE pOutputBuffer, DWORD *pOutputSize) +{ + + bool bResult = false; +/* + int nOutputSamples = 0; + + nOutputSamples = lame_encode_flush( gfp, pOutputBuffer, 0 ); + + if ( nOutputSamples < 0 ) + { + // BUFFER_TOO_SMALL + *pOutputSize = 0; + } + else + { + *pOutputSize = nOutputSamples; + + bResult = true; + } +/* + // lame will be close in VbrWriteTag function + if ( !lame_get_bWriteVbrTag( gfp ) ) + { + // clean up of allocated memory + lame_close( gfp ); + } +*/ + + ExitMP3(&my_DecodeData); + + bResult = true; + + return bResult; +} + +DWORD DecodeStream::GetOutputSizeForInput(const DWORD the_SrcLength) const +{ + DWORD Result; + + double OutputInputRatio = double(my_SamplesPerSec * 2 * my_Channels) / double(my_SourceBitrate); + + OutputInputRatio *= 1.15; // allow 15% more + + Result = DWORD(double(the_SrcLength) * OutputInputRatio); + + my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "Result = %d (OutputInputRatio = %f)",Result,OutputInputRatio); + + return Result; +} + +bool DecodeStream::ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader) +{ + bool result = false; + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "enter DecodeStream::ConvertBuffer"); +} + + int ProcessedBytes; + + int ret = decodeMP3(&my_DecodeData, a_StreamHeader->pbSrc, a_StreamHeader->cbSrcLength, (char *)a_StreamHeader->pbDst, a_StreamHeader->cbDstLength, &ProcessedBytes); + + switch (ret) + { + case MP3_OK: + a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; + a_StreamHeader->cbDstLengthUsed = ProcessedBytes; + result = true; + break; + case MP3_NEED_MORE: + a_StreamHeader->cbSrcLengthUsed = 0; + a_StreamHeader->cbDstLengthUsed = 0; + break; + case MP3_ERR: + break; + } + +/* + DWORD InSize = a_StreamHeader->cbSrcLength / 2, OutSize = a_StreamHeader->cbDstLength; // 2 for 8<->16 bits + +// Encode it +int dwSamples; + int nOutputSamples = 0; + + dwSamples = InSize / lame_get_num_channels( gfp ); + + if ( 1 == lame_get_num_channels( gfp ) ) + { + nOutputSamples = lame_encode_buffer(gfp,(PSHORT)a_StreamHeader->pbSrc,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + else + { + nOutputSamples = lame_encode_buffer_interleaved(gfp,(PSHORT)a_StreamHeader->pbSrc,dwSamples,a_StreamHeader->pbDst,a_StreamHeader->cbDstLength); + } + + a_StreamHeader->cbSrcLengthUsed = a_StreamHeader->cbSrcLength; + a_StreamHeader->cbDstLengthUsed = nOutputSamples; + + result = a_StreamHeader->cbDstLengthUsed <= a_StreamHeader->cbDstLength; +*/ + my_debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "UsedSize = %d / EncodedSize = %d, result = %d, ret = %s", a_StreamHeader->cbSrcLengthUsed, a_StreamHeader->cbDstLengthUsed, result, + (ret == MP3_OK)?"MP3_OK":(ret == MP3_NEED_MORE)?"MP3_NEED_MORE":"error"); + +if (my_debug != NULL) +{ +my_debug->OutPut(DEBUG_LEVEL_FUNC_DEBUG, "DecodeStream::ConvertBuffer result = %d",result); +} + + return result; +} +#endif // ENABLE_DECODING diff --git a/lame-3.97/ACM/DecodeStream.h b/lame-3.97/ACM/DecodeStream.h new file mode 100644 index 0000000..1e6c1ee --- /dev/null +++ b/lame-3.97/ACM/DecodeStream.h @@ -0,0 +1,83 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: DecodeStream.h,v 1.1 2002/01/23 20:39:46 robux4 Exp $ +*/ + +#if !defined(_DECODESTREAM_H__INCLUDED_) +#define _DECODESTREAM_H__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include "ADbg/ADbg.h" + +#include <config.h> +#include "util.h" +#include "interface.h" + +class DecodeStream +{ +public: + DecodeStream( ); + virtual ~DecodeStream( ); + + static DecodeStream * Create(); + static const bool Erase(const DecodeStream * a_ACMStream); + + bool init(const int nSamplesPerSec, const int nChannels, const int nAvgBytesPerSec, const int nSourceBitrate); + bool open(); + bool close(LPBYTE pOutputBuffer, DWORD *pOutputSize); + + DWORD GetOutputSizeForInput(const DWORD the_SrcLength) const; + bool ConvertBuffer(LPACMDRVSTREAMHEADER a_StreamHeader); + + static unsigned int GetOutputSampleRate(int samples_per_sec, int bitrate, int channels); + +protected: + lame_global_flags * gfp; + + ADbg * my_debug; + int my_SamplesPerSec; + int my_Channels; + int my_AvgBytesPerSec; + DWORD my_SamplesPerBlock; + int my_SourceBitrate; + + MPSTR my_DecodeData; + + unsigned int m_WorkingBufferUseSize; + char m_WorkingBuffer[2304*2]; // should be at least twice my_SamplesPerBlock + + inline int GetBytesPerBlock(DWORD bytes_per_sec, DWORD samples_per_sec, int BlockAlign) const; + +}; + +#endif // !defined(_DECODESTREAM_H__INCLUDED_) + diff --git a/lame-3.97/ACM/LameACM.inf b/lame-3.97/ACM/LameACM.inf new file mode 100644 index 0000000..be70430 --- /dev/null +++ b/lame-3.97/ACM/LameACM.inf @@ -0,0 +1,91 @@ +; Lame codec +; enable MP3 compression in Windows + +; Usage : right-click on this file and choose "Install" in the pop up menu + +[Version] +Signature = "$CHICAGO$" +Class = MEDIA + +[SourceDisksNames] +1="Lame MP3 Install Disk",, 0001 + +[SourceDisksFiles] +LameACM.inf=1 +LameACM.acm=1 +lame_acm.xml=1 + +[Installable.Drivers] +lameacm = 1:LameACM.acm, "msacm.lameacm", %DisplayNameWin% , , , + +[DefaultInstall] +CopyFiles = LameACM.Copy,LameACM.Copy.Inf +Updateinis = LameACM.Updateini +;addreg = LameACM.AddReg,LameACM.AddReg9x,LameACM.DoReg +addreg = LameACM.AddReg,LameACM.AddReg9x +MediaType = SOFTWARE + +[DefaultInstall.ntx86] +CopyFiles = LameACM.Copy,LameACM.Copy.Inf +;addreg = LameACM.AddReg,LameACM.AddRegNT,LameACM.DoReg +addreg = LameACM.AddReg,LameACM.AddRegNT +MediaType = SOFTWARE + +[Remove_LameMP3] +;AddReg = LameACM.Unregister +DelReg = LameACM.DelReg +DelFiles = LameACM.Copy,LameACM.Copy.Inf +UpdateInis = LameACM.UpdateIni + +[LameACM.Copy] +LameACM.acm +lame_acm.xml + +[LameACM.Copy.Inf] +LameACM.inf + +[LameACM.UpdateIni] +system.ini, drivers32,,"msacm.lameacm=LameACM.acm" + +[LameACM.AddReg] +HKLM, "Software\Microsoft\Windows NT\CurrentVersion\Drivers32","msacm.lameacm",,"LameACM.acm" +HKLM, "Software\Microsoft\Windows NT\CurrentVersion\Drivers.desc","LameACM.acm",,%DisplayNameWin% + + +[LameACM.AddReg9x] +HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,Description,,%DisplayNameWin% +HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,Driver,,LameACM.acm +HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm,FriendlyName,,%DisplayNameWin% +HKLM,%UnInstallPath%,DisplayName,,%DisplayNameWin% +HKLM,%UnInstallPath%,UninstallString,,"%10%\rundll.exe setupx.dll,InstallHinfSection Remove_LameMP3 132 %17%\%InfFile%" + +[LameACM.AddRegNT] +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32","msacm.lameacm",,"LameACM.acm" +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc","LameACM.acm",,%DisplayNameWin% +HKLM,%UnInstallPath%,DisplayName,,%DisplayNameWin% +HKLM,%UnInstallPath%,UninstallString,,"%11%\rundll32.exe setupapi,InstallHinfSection Remove_LameMP3 132 %17%\%InfFile%" + +;[LameACM.DoReg] +;HKLM,Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup,"Lame ACM MP3 Codec",,"%11%\regsvr32.exe /s %11%\LameCom.acm" + +[LameACM.DelReg] +HKLM,"SYSTEM\CurrentControlSet\Control\MediaResources\msacm\msacm.lameacm" +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc","LameACM.acm",,"" +HKLM,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32","msacm.lameacm",,"" +HKLM,%UnInstallPath% + +;[LameACM.Unregister] +;HKLM,"Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup","Lame ACM MP3 Codec",,"%11%\regsvr32.exe /s /u %11%\LameCom.acm" + +[DestinationDirs] +DefaultDestDir = 11 ; LDID_SYS +LameACM.Copy = 11 +LameACM.Copy.Inf = 17 + +[Strings] +InfFile="LameACM.inf" +DisplayNameWin="Lame ACM MP3 Codec" +UnInstallPath="Software\Microsoft\Windows\CurrentVersion\Uninstall\LameACM" +MediaClassName="Media Devices" +mfgname="Steve Lhomme" + diff --git a/lame-3.97/ACM/Makefile.am b/lame-3.97/ACM/Makefile.am new file mode 100644 index 0000000..c05a1cf --- /dev/null +++ b/lame-3.97/ACM/Makefile.am @@ -0,0 +1,28 @@ +## $Id: Makefile.am,v 1.6 2005/08/21 17:32:07 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +SUBDIRS = ADbg ddk tinyxml + +EXTRA_DIST = \ + ACM.cpp \ + ACM.h \ + ACMStream.cpp \ + ACMStream.h \ + AEncodeProperties.cpp \ + AEncodeProperties.h \ + DecodeStream.cpp \ + DecodeStream.h \ + LameACM.inf \ + TODO \ + acm.rc \ + adebug.h \ + lame.ico \ + lameACM.def \ + lameACM_vc6.dsp \ + lameACM_vc7.vcproj \ + lame_acm.xml \ + main.cpp \ + readme.txt \ + resource.h + diff --git a/lame-3.97/ACM/Makefile.in b/lame-3.97/ACM/Makefile.in new file mode 100644 index 0000000..9af2561 --- /dev/null +++ b/lame-3.97/ACM/Makefile.in @@ -0,0 +1,527 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global TODO +subdir = ACM +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +SUBDIRS = ADbg ddk tinyxml +EXTRA_DIST = \ + ACM.cpp \ + ACM.h \ + ACMStream.cpp \ + ACMStream.h \ + AEncodeProperties.cpp \ + AEncodeProperties.h \ + DecodeStream.cpp \ + DecodeStream.h \ + LameACM.inf \ + TODO \ + acm.rc \ + adebug.h \ + lame.ico \ + lameACM.def \ + lameACM_vc6.dsp \ + lameACM_vc7.vcproj \ + lame_acm.xml \ + main.cpp \ + readme.txt \ + resource.h + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-libtool \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/TODO b/lame-3.97/ACM/TODO new file mode 100644 index 0000000..c88aba2 --- /dev/null +++ b/lame-3.97/ACM/TODO @@ -0,0 +1,9 @@ +- known bug : when recording, converting, and recording a lame_close() call fail +- allow decompression the same way as in the command-line +- allow VBR mode +- allow channel resampling (mono to stereo / stereo to mono) +- allow internal resampling (difference in the format suggestion) +- use global pointers for string +- use the bitrate/freq tables from LAME + +/ add the decoding engine diff --git a/lame-3.97/ACM/acm.rc b/lame-3.97/ACM/acm.rc new file mode 100644 index 0000000..d86837f --- /dev/null +++ b/lame-3.97/ACM/acm.rc @@ -0,0 +1,219 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 0,9,1,0 + PRODUCTVERSION 0,9,1,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x3L + FILESUBTYPE 0x8L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "This is an ACM driver for Win32 using Lame to encode\0" + VALUE "CompanyName", "http://www.mp3dev.org/\0" + VALUE "FileDescription", "Lame MP3 codec engine\0" + VALUE "FileVersion", "0.9.1\0" + VALUE "InternalName", "lameACM\0" + VALUE "LegalCopyright", "Copyright � 2002 Steve Lhomme, Copyright � 2002-2004 The LAME Project\0" + VALUE "LegalTrademarks", "LGPL (see gnu.org)\0" + VALUE "OriginalFilename", "lameACM.acm\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "Lame MP3 codec\0" + VALUE "ProductVersion", "0.9.1\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON ICON DISCARDABLE "lame.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONFIG DIALOGEX 0, 0, 231, 204 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Lame MP3 codec : About" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,65,183,50,14 + PUSHBUTTON "Cancel",IDCANCEL,125,183,50,14 + GROUPBOX "Encoding",IDC_STATIC,7,7,142,166 + GROUPBOX "Decoding",IDC_STATIC_DECODING,154,7,70,113,WS_DISABLED + GROUPBOX "Bits",IDC_STATIC,16,121,124,42 + CONTROL "Copyright",IDC_CHECK_COPYRIGHT,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,23,132,45,10 + CONTROL "Checksum",IDC_CHECK_CHECKSUM,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,84,132,49,10 + CONTROL "Original",IDC_CHECK_ORIGINAL,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,23,148,39,10 + CONTROL "Private",IDC_CHECK_PRIVATE,"Button",BS_AUTOCHECKBOX | + BS_FLAT | WS_GROUP | WS_TABSTOP,84,148,38,10 + COMBOBOX IDC_COMBO_ENC_STEREO,70,21,60,53,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Stereo mode",IDC_STATIC,23,24,41,8 + CONTROL "Smart Encode",IDC_CHECK_ENC_SMART,"Button", + BS_AUTOCHECKBOX | BS_FLAT | WS_GROUP | WS_TABSTOP,49,39, + 61,10 + ICON IDI_ICON,IDC_STATIC_ENC_ICON,179,129,20,20 + CTEXT "v0.0.0 - 0.00",IDC_STATIC_CONFIG_VERSION,168,155,43,17 + CONTROL "Average BitRate",IDC_CHECK_ENC_ABR,"Button", + BS_AUTOCHECKBOX | BS_FLAT | WS_GROUP | WS_TABSTOP,49,53, + 68,10 + LTEXT "Min",IDC_STATIC_AVERAGE_MIN,19,67,12,8 + LTEXT "Max",IDC_STATIC_AVERAGE_MAX,17,79,14,8 + LTEXT "Step",IDC_STATIC_AVERAGE_STEP,15,91,16,8 + LTEXT "test",IDC_STATIC_AVERAGE_SAMPLE,19,105,12,8 + CONTROL "Slider2",IDC_SLIDER_AVERAGE_MIN,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | + WS_TABSTOP,33,67,92,11 + CONTROL "Slider3",IDC_SLIDER_AVERAGE_MAX,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | + WS_TABSTOP,33,79,92,11 + CONTROL "Slider1",IDC_SLIDER_AVERAGE_STEP,"msctls_trackbar32", + TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_GROUP | + WS_TABSTOP,33,91,92,11 + CONTROL "Slider4",IDC_SLIDER_AVERAGE_SAMPLE,"msctls_trackbar32", + WS_TABSTOP,33,104,92,12 + CTEXT "000",IDC_STATIC_AVERAGE_SAMPLE_VALUE,125,105,15,9,0, + WS_EX_STATICEDGE + CTEXT "000",IDC_STATIC_AVERAGE_STEP_VALUE,125,92,15,9,0, + WS_EX_STATICEDGE + CTEXT "000",IDC_STATIC_AVERAGE_MAX_VALUE,125,80,15,9,0, + WS_EX_STATICEDGE + CTEXT "000",IDC_STATIC_AVERAGE_MIN_VALUE,125,67,15,9,0, + WS_EX_STATICEDGE +END + +IDD_ABOUT DIALOG DISCARDABLE 0, 0, 187, 77 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Lame MP3 codec : About" +FONT 8, "MS Sans Serif" +BEGIN + DEFPUSHBUTTON "OK",IDOK,130,56,50,14 + LTEXT "Steve Lhomme + LAME developers",IDC_STATIC,7,33,112,8 + LTEXT "LGPL license",IDC_STATIC,7,20,43,8 + ICON IDI_ICON,IDC_STATIC,145,16,20,20 + LTEXT "Static",IDC_STATIC_ABOUT_TITLE,7,7,173,8 + LTEXT "http://www.mp3dev.org/",IDC_STATIC_ABOUT_URL,7,47,80,8 + LTEXT "icon : Lucas Granito",IDC_STATIC,7,61,64,8 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_CONFIG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 224 + TOPMARGIN, 7 + BOTTOMMARGIN, 197 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 180 + TOPMARGIN, 7 + BOTTOMMARGIN, 70 + END +END +#endif // APSTUDIO_INVOKED + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lame-3.97/ACM/adebug.h b/lame-3.97/ACM/adebug.h new file mode 100644 index 0000000..32ec192 --- /dev/null +++ b/lame-3.97/ACM/adebug.h @@ -0,0 +1,39 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: adebug.h,v 1.2 2002/01/22 19:45:02 robux4 Exp $ +*/ + +#if !defined(_DEBUG_H__INCLUDED_) +#define _DEBUG_H__INCLUDED_ + +#define DEBUG_LEVEL_CREATION 0 + +#define DEBUG_LEVEL_MSG 0 +#define DEBUG_LEVEL_FUNC_START 1 +#define DEBUG_LEVEL_FUNC_DEBUG 2 +#define DEBUG_LEVEL_FUNC_CODE 3 + +#endif /* !defined(_DEBUG_H__INCLUDED_) */ + diff --git a/lame-3.97/ACM/ddk/.svn/all-wcprops b/lame-3.97/ACM/ddk/.svn/all-wcprops new file mode 100644 index 0000000..6546b39 --- /dev/null +++ b/lame-3.97/ACM/ddk/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM/ddk +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM/ddk/Makefile.in +END +msacmdrv.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/ddk/msacmdrv.h +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/ddk/Makefile.am +END diff --git a/lame-3.97/ACM/ddk/.svn/entries b/lame-3.97/ACM/ddk/.svn/entries new file mode 100644 index 0000000..f5fdca6 --- /dev/null +++ b/lame-3.97/ACM/ddk/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/ACM/ddk +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Makefile.in +file + + + + +2012-01-23T14:07:04.805495Z +77695ac387186b70d4ebc8b9b5f79e0d +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +9657 + +msacmdrv.h +file + + + + +2012-01-23T14:07:04.805495Z +c4ffa9fc53b5a067d41b0fee0fff05fb +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +6424 + +Makefile.am +file + + + + +2012-01-23T14:07:04.806491Z +4503ccd84c766e6e1302967d3b516d29 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +133 + diff --git a/lame-3.97/ACM/ddk/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/ACM/ddk/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/ddk/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/ddk/.svn/prop-base/msacmdrv.h.svn-base b/lame-3.97/ACM/ddk/.svn/prop-base/msacmdrv.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/ddk/.svn/prop-base/msacmdrv.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/ddk/.svn/text-base/Makefile.am.svn-base b/lame-3.97/ACM/ddk/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..4988997 --- /dev/null +++ b/lame-3.97/ACM/ddk/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,6 @@ +## $Id: Makefile.am,v 1.1 2003/12/09 15:48:37 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + msacmdrv.h diff --git a/lame-3.97/ACM/ddk/.svn/text-base/Makefile.in.svn-base b/lame-3.97/ACM/ddk/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..4066f36 --- /dev/null +++ b/lame-3.97/ACM/ddk/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,350 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = ACM/ddk +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + msacmdrv.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/ddk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/ddk/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/../.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/ddk/.svn/text-base/msacmdrv.h.svn-base b/lame-3.97/ACM/ddk/.svn/text-base/msacmdrv.h.svn-base new file mode 100644 index 0000000..aa3c200 --- /dev/null +++ b/lame-3.97/ACM/ddk/.svn/text-base/msacmdrv.h.svn-base @@ -0,0 +1,185 @@ +/** + * + * Alternative msacmdrv.h file, for use in the Lame project. + * File from the FFDshow project, released under LGPL by permission + * from Milan Cutka. + * Modified by Gabriel Bouvigne to allow compilation of Lame. + * + * Copyright (c) 2003 Milan Cutka + * Copyright (c) 2003 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef _MSACMDRV_H_ +#define _MSACMDRV_H_ + + +#include <mmreg.h> +#include <msacm.h> + + + +typedef unsigned long ULONG_PTR, *PULONG_PTR; + + + +typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; + + +#undef ACMDRIVERDETAILS +#undef PACMDRIVERDETAILS +#undef LPACMDRIVERDETAILS + +#define ACMDRIVERDETAILS ACMDRIVERDETAILSW +#define PACMDRIVERDETAILS PACMDRIVERDETAILSW +#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW + +#undef ACMFORMATTAGDETAILS +#undef PACMFORMATTAGDETAILS +#undef LPACMFORMATTAGDETAILS + +#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW +#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW +#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW + +#undef ACMFORMATDETAILS +#undef PACMFORMATDETAILS +#undef LPACMFORMATDETAILS + +#define ACMFORMATDETAILS ACMFORMATDETAILSW +#define PACMFORMATDETAILS PACMFORMATDETAILSW +#define LPACMFORMATDETAILS LPACMFORMATDETAILSW + + +#define MAKE_ACM_VERSION(mjr, mnr, bld) (((long)(mjr)<<24)| \ + ((long)(mnr)<<16)| \ + ((long)bld)) + +#define VERSION_MSACM MAKE_ACM_VERSION(3, 50, 0) +#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(4, 0, 0) + + +#define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1) +#define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10) + +#define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20) +#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21) + +#define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25) +#define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26) +#define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27) + +#define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50) +#define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51) + +#define ACMDM_STREAM_OPEN (ACMDM_BASE + 76) +#define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77) +#define ACMDM_STREAM_SIZE (ACMDM_BASE + 78) +#define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79) +#define ACMDM_STREAM_RESET (ACMDM_BASE + 80) +#define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81) +#define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82) + +typedef struct tACMDRVFORMATSUGGEST +{ + DWORD cbStruct; // sizeof(ACMDRVFORMATSUGGEST) + DWORD fdwSuggest; // Suggest flags + LPWAVEFORMATEX pwfxSrc; // Source Format + DWORD cbwfxSrc; // Source Size + LPWAVEFORMATEX pwfxDst; // Dest format + DWORD cbwfxDst; // Dest Size + +} ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST, FAR *LPACMDRVFORMATSUGGEST; + + + + +typedef struct tACMDRVOPENDESC +{ + DWORD cbStruct; // sizeof(ACMDRVOPENDESC) + FOURCC fccType; // 'audc' + FOURCC fccComp; // sub-type (not used--must be 0) + DWORD dwVersion; // current version of ACM opening you + DWORD dwFlags; // + DWORD dwError; // result from DRV_OPEN request + LPCWSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName + LPCWSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName + DWORD dnDevNode; // devnode id for pnp drivers. + +} ACMDRVOPENDESC, *PACMDRVOPENDESC, FAR *LPACMDRVOPENDESC; + + +typedef struct tACMDRVSTREAMINSTANCE +{ + DWORD cbStruct; + LPWAVEFORMATEX pwfxSrc; + LPWAVEFORMATEX pwfxDst; + LPWAVEFILTER pwfltr; + DWORD_PTR dwCallback; + DWORD_PTR dwInstance; + DWORD fdwOpen; + DWORD fdwDriver; + DWORD_PTR dwDriver; + HACMSTREAM has; + +} ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE, FAR *LPACMDRVSTREAMINSTANCE; + +typedef struct tACMDRVSTREAMSIZE +{ + DWORD cbStruct; + DWORD fdwSize; + DWORD cbSrcLength; + DWORD cbDstLength; + +} ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE, FAR *LPACMDRVSTREAMSIZE; + +typedef struct tACMDRVSTREAMHEADER FAR *LPACMDRVSTREAMHEADER; +typedef struct tACMDRVSTREAMHEADER +{ + DWORD cbStruct; + DWORD fdwStatus; + DWORD_PTR dwUser; + LPBYTE pbSrc; + DWORD cbSrcLength; + DWORD cbSrcLengthUsed; + DWORD_PTR dwSrcUser; + LPBYTE pbDst; + DWORD cbDstLength; + DWORD cbDstLengthUsed; + DWORD_PTR dwDstUser; + + DWORD fdwConvert; // flags passed from convert func + LPACMDRVSTREAMHEADER padshNext; // for async driver queueing + DWORD fdwDriver; // driver instance flags + DWORD_PTR dwDriver; // driver instance data + + // + // all remaining fields are used by the ACM for bookkeeping purposes. + // an ACM driver should never use these fields (though than can be + // helpful for debugging)--note that the meaning of these fields + // may change, so do NOT rely on them in shipping code. + // + DWORD fdwPrepared; + DWORD_PTR dwPrepared; + LPBYTE pbPreparedSrc; + DWORD cbPreparedSrcLength; + LPBYTE pbPreparedDst; + DWORD cbPreparedDstLength; + +} ACMDRVSTREAMHEADER, *PACMDRVSTREAMHEADER; + +#endif diff --git a/lame-3.97/ACM/ddk/Makefile.am b/lame-3.97/ACM/ddk/Makefile.am new file mode 100644 index 0000000..4988997 --- /dev/null +++ b/lame-3.97/ACM/ddk/Makefile.am @@ -0,0 +1,6 @@ +## $Id: Makefile.am,v 1.1 2003/12/09 15:48:37 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + msacmdrv.h diff --git a/lame-3.97/ACM/ddk/Makefile.in b/lame-3.97/ACM/ddk/Makefile.in new file mode 100644 index 0000000..4066f36 --- /dev/null +++ b/lame-3.97/ACM/ddk/Makefile.in @@ -0,0 +1,350 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = ACM/ddk +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + msacmdrv.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/ddk/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/ddk/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/../.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/ddk/msacmdrv.h b/lame-3.97/ACM/ddk/msacmdrv.h new file mode 100644 index 0000000..aa3c200 --- /dev/null +++ b/lame-3.97/ACM/ddk/msacmdrv.h @@ -0,0 +1,185 @@ +/** + * + * Alternative msacmdrv.h file, for use in the Lame project. + * File from the FFDshow project, released under LGPL by permission + * from Milan Cutka. + * Modified by Gabriel Bouvigne to allow compilation of Lame. + * + * Copyright (c) 2003 Milan Cutka + * Copyright (c) 2003 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef _MSACMDRV_H_ +#define _MSACMDRV_H_ + + +#include <mmreg.h> +#include <msacm.h> + + + +typedef unsigned long ULONG_PTR, *PULONG_PTR; + + + +typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; + + +#undef ACMDRIVERDETAILS +#undef PACMDRIVERDETAILS +#undef LPACMDRIVERDETAILS + +#define ACMDRIVERDETAILS ACMDRIVERDETAILSW +#define PACMDRIVERDETAILS PACMDRIVERDETAILSW +#define LPACMDRIVERDETAILS LPACMDRIVERDETAILSW + +#undef ACMFORMATTAGDETAILS +#undef PACMFORMATTAGDETAILS +#undef LPACMFORMATTAGDETAILS + +#define ACMFORMATTAGDETAILS ACMFORMATTAGDETAILSW +#define PACMFORMATTAGDETAILS PACMFORMATTAGDETAILSW +#define LPACMFORMATTAGDETAILS LPACMFORMATTAGDETAILSW + +#undef ACMFORMATDETAILS +#undef PACMFORMATDETAILS +#undef LPACMFORMATDETAILS + +#define ACMFORMATDETAILS ACMFORMATDETAILSW +#define PACMFORMATDETAILS PACMFORMATDETAILSW +#define LPACMFORMATDETAILS LPACMFORMATDETAILSW + + +#define MAKE_ACM_VERSION(mjr, mnr, bld) (((long)(mjr)<<24)| \ + ((long)(mnr)<<16)| \ + ((long)bld)) + +#define VERSION_MSACM MAKE_ACM_VERSION(3, 50, 0) +#define VERSION_ACM_DRIVER MAKE_ACM_VERSION(4, 0, 0) + + +#define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1) +#define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10) + +#define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20) +#define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21) + +#define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25) +#define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26) +#define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27) + +#define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50) +#define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51) + +#define ACMDM_STREAM_OPEN (ACMDM_BASE + 76) +#define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77) +#define ACMDM_STREAM_SIZE (ACMDM_BASE + 78) +#define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79) +#define ACMDM_STREAM_RESET (ACMDM_BASE + 80) +#define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81) +#define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82) + +typedef struct tACMDRVFORMATSUGGEST +{ + DWORD cbStruct; // sizeof(ACMDRVFORMATSUGGEST) + DWORD fdwSuggest; // Suggest flags + LPWAVEFORMATEX pwfxSrc; // Source Format + DWORD cbwfxSrc; // Source Size + LPWAVEFORMATEX pwfxDst; // Dest format + DWORD cbwfxDst; // Dest Size + +} ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST, FAR *LPACMDRVFORMATSUGGEST; + + + + +typedef struct tACMDRVOPENDESC +{ + DWORD cbStruct; // sizeof(ACMDRVOPENDESC) + FOURCC fccType; // 'audc' + FOURCC fccComp; // sub-type (not used--must be 0) + DWORD dwVersion; // current version of ACM opening you + DWORD dwFlags; // + DWORD dwError; // result from DRV_OPEN request + LPCWSTR pszSectionName; // see DRVCONFIGINFO.lpszDCISectionName + LPCWSTR pszAliasName; // see DRVCONFIGINFO.lpszDCIAliasName + DWORD dnDevNode; // devnode id for pnp drivers. + +} ACMDRVOPENDESC, *PACMDRVOPENDESC, FAR *LPACMDRVOPENDESC; + + +typedef struct tACMDRVSTREAMINSTANCE +{ + DWORD cbStruct; + LPWAVEFORMATEX pwfxSrc; + LPWAVEFORMATEX pwfxDst; + LPWAVEFILTER pwfltr; + DWORD_PTR dwCallback; + DWORD_PTR dwInstance; + DWORD fdwOpen; + DWORD fdwDriver; + DWORD_PTR dwDriver; + HACMSTREAM has; + +} ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE, FAR *LPACMDRVSTREAMINSTANCE; + +typedef struct tACMDRVSTREAMSIZE +{ + DWORD cbStruct; + DWORD fdwSize; + DWORD cbSrcLength; + DWORD cbDstLength; + +} ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE, FAR *LPACMDRVSTREAMSIZE; + +typedef struct tACMDRVSTREAMHEADER FAR *LPACMDRVSTREAMHEADER; +typedef struct tACMDRVSTREAMHEADER +{ + DWORD cbStruct; + DWORD fdwStatus; + DWORD_PTR dwUser; + LPBYTE pbSrc; + DWORD cbSrcLength; + DWORD cbSrcLengthUsed; + DWORD_PTR dwSrcUser; + LPBYTE pbDst; + DWORD cbDstLength; + DWORD cbDstLengthUsed; + DWORD_PTR dwDstUser; + + DWORD fdwConvert; // flags passed from convert func + LPACMDRVSTREAMHEADER padshNext; // for async driver queueing + DWORD fdwDriver; // driver instance flags + DWORD_PTR dwDriver; // driver instance data + + // + // all remaining fields are used by the ACM for bookkeeping purposes. + // an ACM driver should never use these fields (though than can be + // helpful for debugging)--note that the meaning of these fields + // may change, so do NOT rely on them in shipping code. + // + DWORD fdwPrepared; + DWORD_PTR dwPrepared; + LPBYTE pbPreparedSrc; + DWORD cbPreparedSrcLength; + LPBYTE pbPreparedDst; + DWORD cbPreparedDstLength; + +} ACMDRVSTREAMHEADER, *PACMDRVSTREAMHEADER; + +#endif diff --git a/lame-3.97/ACM/lame.ico b/lame-3.97/ACM/lame.ico new file mode 100644 index 0000000..5610b8c --- /dev/null +++ b/lame-3.97/ACM/lame.ico Binary files differ diff --git a/lame-3.97/ACM/lameACM.def b/lame-3.97/ACM/lameACM.def new file mode 100644 index 0000000..3dbe1b4 --- /dev/null +++ b/lame-3.97/ACM/lameACM.def @@ -0,0 +1,25 @@ +; Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows +; +; Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Lesser General Public +; License as published by the Free Software Foundation; either +; version 2.1 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Lesser General Public License for more details. +; +; You should have received a copy of the GNU Lesser General Public +; License along with this library; if not, write to the Free Software +; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +LIBRARY lameACM + +DESCRIPTION 'lameACM.acm: MP3 Lame ACM Codec' + +EXPORTS DriverProc + +; EOF diff --git a/lame-3.97/ACM/lameACM_vc6.dsp b/lame-3.97/ACM/lameACM_vc6.dsp new file mode 100644 index 0000000..e79e3ad --- /dev/null +++ b/lame-3.97/ACM/lameACM_vc6.dsp @@ -0,0 +1,246 @@ +# Microsoft Developer Studio Project File - Name="lameACM" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=lameACM - Win32 Debug NASM +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "lameACM_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "lameACM_vc6.mak" CFG="lameACM - Win32 Debug NASM" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "lameACM - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "lameACM - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "lameACM - Win32 Debug NASM" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "lameACM - Win32 Release NASM" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "lameACM - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MT /W3 /GX /Ox /Ot /Og /Ob2 /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "NDEBUG" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libc.lib libcp.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ELSEIF "$(CFG)" == "lameACM - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MTd /W3 /GX /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "_DEBUG" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libcd.lib libcpd.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" /pdbtype:sept +# SUBTRACT LINK32 /map +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ELSEIF "$(CFG)" == "lameACM - Win32 Debug NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_NASM" +# PROP BASE Intermediate_Dir "Debug_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug_NASM" +# PROP Intermediate_Dir "Debug_NASM" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /Zp2 /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MTd /W3 /GX /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "_DEBUG" /D "HAVE_NASM" /D "MMX_choose_table" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# SUBTRACT BASE LINK32 /map +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libcd.lib libcpd.lib ADbg/Debug/adbg.lib tinyxml/Debug/tinyxml.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" /pdbtype:sept +# SUBTRACT LINK32 /map +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ELSEIF "$(CFG)" == "lameACM - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_NASM" +# PROP BASE Intermediate_Dir "Release_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_NASM" +# PROP Intermediate_Dir "Release_NASM" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /Zp2 /MT /W3 /GX /Ox /Ot /Og /Ob2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /Zp2 /MT /W3 /GX /Ox /Ot /Og /Ob2 /I "../libmp3lame" /I "../include" /I ".." /I "../.." /I "../mpglib" /I "./" /D "NDEBUG" /D "HAVE_NASM" /D "MMX_choose_table" /D "_BLADEDLL" /D "TAKEHIRO_IEEE754_HACK" /D "HAVE_CONFIG_H" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "WIN32" /D "NOANALYSIS" /D "LAME_ACM" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /map /machine:I386 +# ADD LINK32 shell32.lib url.lib gdi32.lib winmm.lib advapi32.lib user32.lib kernel32.lib libc.lib libcp.lib ADbg\Release\adbg.lib tinyxml/Release/tinyxml.lib /nologo /subsystem:windows /dll /map /machine:I386 /nodefaultlib /out:"..\output\lameACM.acm" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=copy lameacm.inf ..\output\*.* copy lame_acm.xml ..\output\*.* +# End Special Build Tool + +!ENDIF + +# Begin Target + +# Name "lameACM - Win32 Release" +# Name "lameACM - Win32 Debug" +# Name "lameACM - Win32 Debug NASM" +# Name "lameACM - Win32 Release NASM" +# Begin Group "Source" + +# PROP Default_Filter "c;cpp" +# Begin Source File + +SOURCE=.\ACM.cpp +# End Source File +# Begin Source File + +SOURCE=.\ACMStream.cpp +# End Source File +# Begin Source File + +SOURCE=.\AEncodeProperties.cpp +# End Source File +# Begin Source File + +SOURCE=.\DecodeStream.cpp +# End Source File +# Begin Source File + +SOURCE=.\lameACM.def +# End Source File +# Begin Source File + +SOURCE=.\main.cpp +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\ACM.h +# End Source File +# Begin Source File + +SOURCE=.\ACMStream.h +# End Source File +# Begin Source File + +SOURCE=.\adebug.h +# End Source File +# Begin Source File + +SOURCE=.\AEncodeProperties.h +# End Source File +# Begin Source File + +SOURCE=.\DecodeStream.h +# End Source File +# End Group +# Begin Group "Resource" + +# PROP Default_Filter "rc" +# Begin Source File + +SOURCE=.\acm.rc +# End Source File +# Begin Source File + +SOURCE=.\lame.ico +# End Source File +# End Group +# Begin Group "Install" + +# PROP Default_Filter "inf;acm" +# Begin Source File + +SOURCE=.\LameACM.inf +# End Source File +# End Group +# Begin Source File + +SOURCE=.\readme.txt +# End Source File +# Begin Source File + +SOURCE=.\TODO +# End Source File +# End Target +# End Project diff --git a/lame-3.97/ACM/lameACM_vc7.vcproj b/lame-3.97/ACM/lameACM_vc7.vcproj new file mode 100644 index 0000000..572c55f --- /dev/null +++ b/lame-3.97/ACM/lameACM_vc7.vcproj @@ -0,0 +1,1197 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="lameACM" + ProjectGUID="{88A0CD70-E576-456B-9C13-1D6AD838B87E}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug NASM|Win32" + OutputDirectory=".\Debug_NASM" + IntermediateDirectory=".\Debug_NASM" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug_NASM/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug_NASM/" + ObjectFile=".\Debug_NASM/" + ProgramDataBaseFileName=".\Debug_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib ADbg/Debug/adbg.lib tinyxml/Debug/tinyxml.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug_NASM/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug_NASM/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug_NASM/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lameACM_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release NASM|Win32" + OutputDirectory=".\Release_NASM" + IntermediateDirectory=".\Release_NASM" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release_NASM/lameACM_vc6.pch" + AssemblerListingLocation=".\Release_NASM/" + ObjectFile=".\Release_NASM/" + ProgramDataBaseFileName=".\Release_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib ADbg\Release\adbg.lib tinyxml/Release/tinyxml.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release_NASM/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release_NASM/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release_NASM/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release_NASM/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lameACM_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="1" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lameACM_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libcd.lib libcpd.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lameACM.pdb" + SubSystem="2" + ImportLibrary=".\Debug/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="_DEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Debug/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="2" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + GlobalOptimizations="TRUE" + InlineFunctionExpansion="2" + FavorSizeOrSpeed="1" + AdditionalIncludeDirectories="../libmp3lame,../include,..,../..,../mpglib,./" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM" + RuntimeLibrary="0" + StructMemberAlignment="2" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lameACM_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="url.lib winmm.lib libc.lib libcp.lib" + OutputFile="..\output\lameACM.acm" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + IgnoreAllDefaultLibraries="TRUE" + ModuleDefinitionFile=".\lameACM.def" + ProgramDatabaseFile=".\Release/lameACM.pdb" + GenerateMapFile="TRUE" + MapFileName=".\Release/lameACM.map" + SubSystem="2" + ImportLibrary=".\Release/lameACM.lib" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + PreprocessorDefinitions="NDEBUG" + MkTypLibCompatible="TRUE" + SuppressStartupBanner="TRUE" + TargetEnvironment="1" + TypeLibraryName=".\Release/lameACM_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool" + CommandLine="copy lameacm.inf ..\output\*.* +copy lame_acm.xml ..\output\*.* +"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source" + Filter="c;cpp"> + <File + RelativePath="ACM.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="ACMStream.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="AEncodeProperties.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="DecodeStream.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + <File + RelativePath="lameACM.def"> + </File> + <File + RelativePath="main.cpp"> + <FileConfiguration + Name="Debug NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;HAVE_NASM;MMX_choose_table;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="_DEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="3" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="NDEBUG;_BLADEDLL;TAKEHIRO_IEEE754_HACK;HAVE_CONFIG_H;HAVE_MPGLIB;_WINDOWS;WIN32;NOANALYSIS;LAME_ACM;$(NoInherit)"/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Include" + Filter="h"> + <File + RelativePath="ACM.h"> + </File> + <File + RelativePath="ACMStream.h"> + </File> + <File + RelativePath="adebug.h"> + </File> + <File + RelativePath="AEncodeProperties.h"> + </File> + <File + RelativePath="DecodeStream.h"> + </File> + </Filter> + <Filter + Name="Resource" + Filter="rc"> + <File + RelativePath="acm.rc"> + </File> + <File + RelativePath="lame.ico"> + </File> + </Filter> + <Filter + Name="Install" + Filter="inf;acm"> + <File + RelativePath="LameACM.inf"> + </File> + </Filter> + <File + RelativePath="readme.txt"> + </File> + <File + RelativePath="TODO"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/ACM/lame_acm.xml b/lame-3.97/ACM/lame_acm.xml new file mode 100644 index 0000000..0fc5186 --- /dev/null +++ b/lame-3.97/ACM/lame_acm.xml @@ -0,0 +1,13 @@ +<lame_acm> + <encodings default="Current"> + <config name="Current"> + <Smart use="true" /> + <Copyright use="true" /> + <CRC use="true" /> + <Original use="false" /> + <Private use="false" /> + <Channel mode="Joint-stereo" /> + <ABR use="true" min="88" max="160" step="6" /> + </config> + </encodings> +</lame_acm> diff --git a/lame-3.97/ACM/main.cpp b/lame-3.97/ACM/main.cpp new file mode 100644 index 0000000..81af4b4 --- /dev/null +++ b/lame-3.97/ACM/main.cpp @@ -0,0 +1,216 @@ +/** + * + * Lame ACM wrapper, encode/decode MP3 based RIFF/AVI files in MS Windows + * + * Copyright (c) 2002 Steve Lhomme <steve.lhomme at free.fr> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/*! + \author Steve Lhomme + \version \$Id: main.cpp,v 1.4 2002/01/29 20:37:05 robux4 Exp $ +*/ + +#if !defined(STRICT) +#define STRICT +#endif // STRICT + +#include <windows.h> + +/// The ACM is considered as a driver and run in Kernel-Mode +/// So the new/delete operators have to be overriden in order to use memory +/// readable out of the calling process + +void * operator new( unsigned int cb ) +{ + return LocalAlloc(LPTR, cb); // VirtualAlloc +} + +void operator delete(void *block) { + LocalFree(block); +} + +extern "C" { + + void *acm_Calloc( size_t num, size_t size ) + { + return LocalAlloc(LPTR, num * size); // VirtualAlloc + } + + void *acm_Malloc( size_t size ) + { + return LocalAlloc(LPTR, size); // VirtualAlloc + } + + void acm_Free( void * mem) + { + LocalFree(mem); + } +}; + +////// End of memory instrumentation + +#include <mmreg.h> +#include <msacm.h> +#include <msacmdrv.h> + +#include <assert.h> + +#include "AEncodeProperties.h" +#include "ACM.h" +#include "resource.h" +#include "adebug.h" +#include <version.h> + +ADbg * debug = NULL; + +LONG WINAPI DriverProc(DWORD dwDriverId, HDRVR hdrvr, UINT msg, LONG lParam1, LONG lParam2) +{ + + switch (msg) + { + case DRV_OPEN: // acmDriverOpen + { + if (debug == NULL) { + debug = new ADbg(DEBUG_LEVEL_CREATION); + debug->setPrefix("LAMEdrv"); + } + + if (debug != NULL) + { + // Sent when the driver is opened. + if (lParam2 != NULL) + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_OPEN (ID 0x%08X), pDesc = 0x%08X",dwDriverId,lParam2); + else + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_OPEN (ID 0x%08X), pDesc = NULL",dwDriverId); + } + + if (lParam2 != NULL) { + LPACMDRVOPENDESC pDesc = (LPACMDRVOPENDESC)lParam2; + + if (pDesc->fccType != ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC) { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "wrong pDesc->fccType (0x%08X)",pDesc->fccType); + } + return NULL; + } + } else { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "pDesc == NULL"); + } + } + + ACM * ThisACM = new ACM(GetDriverModuleHandle(hdrvr)); + + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "OPENED instance 0x%08X",ThisACM); + } + + return (LONG)ThisACM;// returns 0L to fail + // value subsequently used + // for dwDriverId. + } + break; + + case DRV_CLOSE: // acmDriverClose + { + if (debug != NULL) + { + // Sent when the driver is closed. Drivers are + // unloaded when the open count reaches zero. + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_CLOSE"); + } + + ACM * ThisACM = (ACM *)dwDriverId; + delete ThisACM; + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_FUNC_CODE, "CLOSED instance 0x%08X",ThisACM); + delete debug; + debug = NULL; + } + return 1L; // returns 0L to fail + } + break; + + case DRV_LOAD: + { + // nothing to do + if (debug != NULL) + { +// debug->OutPut(DEBUG_LEVEL_MSG, "DRV_LOAD, version %s %s %s", ACM_VERSION, __DATE__, __TIME__); + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_LOAD, %s %s", __DATE__, __TIME__); + } + return 1L; + } + break; + + case DRV_ENABLE: + { + // nothing to do + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_ENABLE"); + } + return 1L; + } + break; + + case DRV_DISABLE: + { + // nothing to do + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_DISABLE"); + } + return 1L; + } + break; + + case DRV_FREE: + { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "DRV_FREE"); + } + return 1L; + } + break; + + default: + { + ACM * ThisACM = (ACM *)dwDriverId; + + if (ThisACM != NULL) + return ThisACM->DriverProcedure(hdrvr, msg, lParam1, lParam2); + else + { + if (debug != NULL) + { + debug->OutPut(DEBUG_LEVEL_MSG, "Driver not opened, unknown message (0x%08X), lParam1 = 0x%08X, lParam2 = 0x%08X", msg, lParam1, lParam2); + } + + return DefDriverProc (dwDriverId, hdrvr, msg, lParam1, lParam2); + } + } + break; + } +} + diff --git a/lame-3.97/ACM/readme.txt b/lame-3.97/ACM/readme.txt new file mode 100644 index 0000000..92a6422 --- /dev/null +++ b/lame-3.97/ACM/readme.txt @@ -0,0 +1,29 @@ +In order to build this codec, you need the Windows98 DDK from Microsoft. It can also work +with the Windows2000/ME/XP/2003 DDK: + +http://www.microsoft.com/ddk/ + +Alternatively, the required headers are also available in CYGWIN+w32api, MINGW32 or Wine : + +http://www.cygwin.com/ +http://www.mingw.org/ +http://www.winehq.com/ + + +If you do not have a ddk, you should be able to use the alternative msacmdrv.h provided +with this ACM codec. It is not used by default because it would probably broke any real +DDK already installed. + + + +--------------- + +Define ENABLE_DECODING if you want to use the decoding (alpha state, doesn't decode at the + moment, so use it only if you plan to develop) + +--------------- + +To release this codec you will need : +- lameACM.acm (result of the build process) +- lameACM.inf +- lame_acm.xml (where the initial configuration is stored) diff --git a/lame-3.97/ACM/resource.h b/lame-3.97/ACM/resource.h new file mode 100644 index 0000000..9052032 --- /dev/null +++ b/lame-3.97/ACM/resource.h @@ -0,0 +1,42 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by acm.rc +// +#define IDI_ICON 101 +#define IDD_CONFIG 102 +#define IDD_ABOUT 103 +#define IDC_STATIC_DECODING 1000 +#define IDC_CHECK_COPYRIGHT 1001 +#define IDC_CHECK_CHECKSUM 1002 +#define IDC_CHECK_ORIGINAL 1003 +#define IDC_CHECK_PRIVATE 1004 +#define IDC_COMBO_ENC_STEREO 1005 +#define IDC_CHECK_ENC_SMART 1006 +#define IDC_STATIC_ENC_ICON 1007 +#define IDC_STATIC_ABOUT_TITLE 1008 +#define IDC_STATIC_ABOUT_URL 1009 +#define IDC_STATIC_CONFIG_VERSION 1010 +#define IDC_CHECK_ENC_ABR 1011 +#define IDC_SLIDER_AVERAGE_MIN 1012 +#define IDC_SLIDER_AVERAGE_MAX 1013 +#define IDC_SLIDER_AVERAGE_STEP 1014 +#define IDC_SLIDER_AVERAGE_SAMPLE 1015 +#define IDC_STATIC_AVERAGE_MIN 1016 +#define IDC_STATIC_AVERAGE_MAX 1017 +#define IDC_STATIC_AVERAGE_STEP 1018 +#define IDC_STATIC_AVERAGE_SAMPLE 1019 +#define IDC_STATIC_AVERAGE_MIN_VALUE 1020 +#define IDC_STATIC_AVERAGE_MAX_VALUE 1021 +#define IDC_STATIC_AVERAGE_STEP_VALUE 1022 +#define IDC_STATIC_AVERAGE_SAMPLE_VALUE 1023 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 105 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1024 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/lame-3.97/ACM/tinyxml/.svn/all-wcprops b/lame-3.97/ACM/tinyxml/.svn/all-wcprops new file mode 100644 index 0000000..d4cb77b --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/all-wcprops @@ -0,0 +1,107 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM/tinyxml +END +Makefile.tinyxml +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/Makefile.tinyxml +END +makedistlinux +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/makedistlinux +END +xmltest.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/xmltest.cpp +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/328/monitor/trunk/lame-3.97/ACM/tinyxml/Makefile.in +END +makedistwin.bat +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/tinyxml/makedistwin.bat +END +tinyxml_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/tinyxml_vc7.vcproj +END +tinyxml.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/tinyxml.cpp +END +changes.txt +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/tinyxml/changes.txt +END +tinyxml.dsp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/tinyxml.dsp +END +tinyxml.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/tinyxml/tinyxml.h +END +dox +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/dox +END +tinyxmlerror.cpp +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/tinyxmlerror.cpp +END +tinyxmlparser.cpp +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/tinyxmlparser.cpp +END +test.dsp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/test.dsp +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/Makefile.am +END +test.dsw +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/ACM/tinyxml/test.dsw +END +readme.txt +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/321/monitor/trunk/lame-3.97/ACM/tinyxml/readme.txt +END diff --git a/lame-3.97/ACM/tinyxml/.svn/entries b/lame-3.97/ACM/tinyxml/.svn/entries new file mode 100644 index 0000000..6c2ef64 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/entries @@ -0,0 +1,606 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/ACM/tinyxml +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Makefile.tinyxml +file + + + + +2012-01-23T14:07:04.856445Z +33a0599e3c4fda830b30998f9d867ed4 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +5103 + +makedistlinux +file + + + + +2012-01-23T14:07:04.856445Z +07ba26436ecb7203bca9e049b67e8753 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +533 + +xmltest.cpp +file + + + + +2012-01-23T14:07:04.856445Z +3551a401165fd207e70d7c150799c99e +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9791 + +Makefile.in +file + + + + +2012-01-23T14:07:04.857492Z +1962e9e12f86f18ff9010f521291d1ee +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +9892 + +makedistwin.bat +file + + + + +2012-01-23T14:07:04.857492Z +a8765790faae00616a934102898410eb +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +331 + +tinyxml_vc7.vcproj +file + + + + +2012-01-23T14:07:04.857492Z +267105e28945aba5de785151f5119c8e +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15960 + +tinyxml.cpp +file + + + + +2012-01-23T14:07:04.857492Z +18de94a3ee3d91967663f1218835168c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +18466 + +changes.txt +file + + + + +2012-01-23T14:07:04.858499Z +30eb3f579366e09c4c8e7c1ce289ad40 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3352 + +tinyxml.dsp +file + + + + +2012-01-23T14:07:04.858499Z +532789ad732aa226400dbca3e1f9a5da +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4274 + +tinyxml.h +file + + + + +2012-01-23T14:07:04.860498Z +9978c5ba4e35a723fc561f43d1d9e656 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +26170 + +dox +file + + + + +2012-01-23T14:07:04.859499Z +ab13fa1d0ec366e50ed271044d2f089d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +28081 + +tinyxmlerror.cpp +file + + + + +2012-01-23T14:07:04.860498Z +8b9a820da1ec44f146f0683f40f6d4d3 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +687 + +tinyxmlparser.cpp +file + + + + +2012-01-23T14:07:04.861490Z +4c2362e052bc6e8756dfea8dceea4e3e +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +17770 + +test.dsp +file + + + + +2012-01-23T14:07:04.861490Z +6943c4740f30f94f983340dcc1984069 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3478 + +Makefile.am +file + + + + +2012-01-23T14:07:04.861490Z +2660a9f6e8e05f4258a81098cb2d2716 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +354 + +test.dsw +file + + + + +2012-01-23T14:07:04.862491Z +8f2c7968cfd070aa791e1b7ec1791c76 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +808 + +readme.txt +file + + + + +2012-01-23T14:07:04.862491Z +34fb954a853b4d08e2b41b026ae4f727 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +10256 + diff --git a/lame-3.97/ACM/tinyxml/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/ACM/tinyxml/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/tinyxml/.svn/prop-base/changes.txt.svn-base b/lame-3.97/ACM/tinyxml/.svn/prop-base/changes.txt.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/prop-base/changes.txt.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/ACM/tinyxml/.svn/prop-base/makedistwin.bat.svn-base b/lame-3.97/ACM/tinyxml/.svn/prop-base/makedistwin.bat.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/prop-base/makedistwin.bat.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/ACM/tinyxml/.svn/prop-base/readme.txt.svn-base b/lame-3.97/ACM/tinyxml/.svn/prop-base/readme.txt.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/prop-base/readme.txt.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/ACM/tinyxml/.svn/prop-base/tinyxml.h.svn-base b/lame-3.97/ACM/tinyxml/.svn/prop-base/tinyxml.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/prop-base/tinyxml.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.am.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..e0bd660 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,20 @@ +## $Id: Makefile.am,v 1.2 2005/08/21 17:32:08 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + Makefile.tinyxml \ + changes.txt \ + dox \ + makedistlinux \ + makedistwin.bat \ + readme.txt \ + test.dsp \ + test.dsw \ + tinyxml.cpp \ + tinyxml.dsp \ + tinyxml_vc7.vcproj \ + tinyxml.h \ + tinyxmlerror.cpp \ + tinyxmlparser.cpp \ + xmltest.cpp diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.in.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..cdd7cf6 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,364 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = ACM/tinyxml +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + Makefile.tinyxml \ + changes.txt \ + dox \ + makedistlinux \ + makedistwin.bat \ + readme.txt \ + test.dsp \ + test.dsw \ + tinyxml.cpp \ + tinyxml.dsp \ + tinyxml_vc7.vcproj \ + tinyxml.h \ + tinyxmlerror.cpp \ + tinyxmlparser.cpp \ + xmltest.cpp + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/tinyxml/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/tinyxml/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/../.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.tinyxml.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.tinyxml.svn-base new file mode 100644 index 0000000..58f4693 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/Makefile.tinyxml.svn-base @@ -0,0 +1,150 @@ +#**************************************************************************** +# +# Makefil for TinyXml test. +# Lee Thomason +# www.grinninglizard.com +# +# This is a GNU make (gmake) makefile +#**************************************************************************** + +# DEBUG can be set to YES to include debugging info, or NO otherwise +DEBUG := YES + +# PROFILE can be set to YES to include profiling info, or NO otherwise +PROFILE := NO + +#**************************************************************************** + +CC := gcc +CXX := g++ +LD := g++ +AR := ar rc +RANLIB := ranlib + +DEBUG_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -g -DDEBUG +RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -O2 + +LIBS := + +DEBUG_CXXFLAGS := ${DEBUG_CFLAGS} +RELEASE_CXXFLAGS := ${RELEASE_CFLAGS} + +DEBUG_LDFLAGS := -g +RELEASE_LDFLAGS := + +ifeq (YES, ${DEBUG}) + CFLAGS := ${DEBUG_CFLAGS} + CXXFLAGS := ${DEBUG_CXXFLAGS} + LDFLAGS := ${DEBUG_LDFLAGS} +else + CFLAGS := ${RELEASE_CFLAGS} + CXXFLAGS := ${RELEASE_CXXFLAGS} + LDFLAGS := ${RELEASE_LDFLAGS} +endif + +ifeq (YES, ${PROFILE}) + CFLAGS := ${CFLAGS} -pg + CXXFLAGS := ${CXXFLAGS} -pg + LDFLAGS := ${LDFLAGS} -pg +endif + +#**************************************************************************** +# Preprocessor directives +#**************************************************************************** + +ifeq (YES, ${PROFILE}) + DEFS := +else + DEFS := +endif + +#**************************************************************************** +# Include paths +#**************************************************************************** + +#INCS := -I/usr/include/g++-2 -I/usr/local/include +INCS := + + +#**************************************************************************** +# Makefile code common to all platforms +#**************************************************************************** + +CFLAGS := ${CFLAGS} ${DEFS} +CXXFLAGS := ${CXXFLAGS} ${DEFS} + +#**************************************************************************** +# Targets of the build +#**************************************************************************** + +OUTPUT := xmltest + +all: ${OUTPUT} + + +#**************************************************************************** +# Source files +#**************************************************************************** + +SRCS := tinyxml.cpp tinyxmlparser.cpp xmltest.cpp tinyxmlerror.cpp + +# Add on the sources for libraries +SRCS := ${SRCS} + +OBJS := $(addsuffix .o,$(basename ${SRCS})) + +#**************************************************************************** +# Output +#**************************************************************************** + +${OUTPUT}: ${OBJS} + ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} + +#**************************************************************************** +# common rules +#**************************************************************************** + +# Rules for compiling source files to object files +%.o : %.cpp + ${CXX} -c ${CXXFLAGS} ${INCS} $< -o $@ + +%.o : %.c + ${CC} -c ${CFLAGS} ${INCS} $< -o $@ + +clean: + -rm -f core ${OBJS} ${OUTPUT} + +depend: + makedepend ${INCS} ${SRCS} +# DO NOT DELETE + +tinyxml.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +tinyxml.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +tinyxml.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +tinyxml.o: /usr/include/bits/sched.h /usr/include/libio.h +tinyxml.o: /usr/include/_G_config.h /usr/include/wchar.h +tinyxml.o: /usr/include/bits/wchar.h /usr/include/gconv.h +tinyxml.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h +tinyxmlparser.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +tinyxmlparser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +tinyxmlparser.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +tinyxmlparser.o: /usr/include/bits/sched.h /usr/include/libio.h +tinyxmlparser.o: /usr/include/_G_config.h /usr/include/wchar.h +tinyxmlparser.o: /usr/include/bits/wchar.h /usr/include/gconv.h +tinyxmlparser.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h +tinyxmlparser.o: /usr/include/ctype.h /usr/include/endian.h +tinyxmlparser.o: /usr/include/bits/endian.h +xmltest.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +xmltest.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +xmltest.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +xmltest.o: /usr/include/bits/sched.h /usr/include/libio.h +xmltest.o: /usr/include/_G_config.h /usr/include/wchar.h +xmltest.o: /usr/include/bits/wchar.h /usr/include/gconv.h +xmltest.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h +tinyxmlerror.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +tinyxmlerror.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +tinyxmlerror.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +tinyxmlerror.o: /usr/include/bits/sched.h /usr/include/libio.h +tinyxmlerror.o: /usr/include/_G_config.h /usr/include/wchar.h +tinyxmlerror.o: /usr/include/bits/wchar.h /usr/include/gconv.h +tinyxmlerror.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/changes.txt.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/changes.txt.svn-base new file mode 100644 index 0000000..c0b4cf7 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/changes.txt.svn-base @@ -0,0 +1,81 @@ +Changes in version 1.0.1: +- Fixed comment tags which were outputing as '<?--' instead of + the correct '<!--'. +- Implemented the Next and Prev methods of the TiXmlAttribute class. +- Renamed 'LastAttribtute' to 'LastAttribute' +- Fixed bad pointer to 'isspace' that could occur while parsing text. +- Errors finding beginning and end of tags no longer throw it into an + infinite loop. (Hopefully.) + +Changes in version 1.0.2 +- Minor documentation fixes. + +Changes in version 1.0.3 +- After nodes are added to a document, they return a pointer + to the new node instead of a bool for success. +- Elements can be constructed with a value, which is the + element name. Every element must have a value or it will be + invalid, but the code changes to enforce this are not fully + in place. + +Changes in version 1.1.0 +- Added the TiXmlAttributeSet class to pull the attributes into + a seperate container. +- Moved the doubly liked list out of XmlBase. Now XmlBase only + requires the Print() function and defines some utility functions. +- Moved errors into a seperate file. (With the idea of internationalization + to the other latin-1 languages.) +- Added the "NodeType" +- Fixed white space parsing in text to conform with the standard. + Basically, all white space becomes just one space. +- Added the TiXmlDeclaration class to read xml declarations. + +Changes in version 1.2.0 +- Removed the factory. The factory was not really in the spirit + of small and simple, confused the code, and was of limited value. +- Added FirstChildElement and NextSiblingElement, because they + are such common functions. +- Re-wrote the example to test and demonstrate more functionality. + +Changes in version 1.2.1 +- Fixed a bug where comments couldn't be inside elements. +- Loading now clears out existing XML rather than appending. +- Added the "Clear" method on a node to delete all its children. + +Changes in version 1.2.2 +- Fixed TiXmlAttribute::Previous actually returning "next." Thanks + to Rickard Troedsson for the bug fix. + +Changes in version 1.2.3 +- Added the TIXML prefix to the error strings to resolve conflicts + with #defines in OS headers. Thanks to Steve Lhomme. +- Fixed a delete buf that should be a delete [] buf. + Thanks to Ephi Sinowitz. + +Changes in version 1.2.4 +- ReplaceChild() was almost guarenteed to fail. Should be fixed, + thanks to Joe Smith. Joe also pointed out that the Print() functions + should take stream references: I agree, and would like to overload + the Print() method to take either format, but I don't want to do + this in a dot release. +- Some compilers seem to need an extra <ctype.h> include. Thanks + to Steve Lhomme for that. + +Changes in version 2.0.0 +- Made the ToXXX() casts safe if 'this' is null. + When "LoadFile" is called with a filename, the value will correctly get set. + Thanks to Brian Yoder. +- Fixed bug where isalpha() and isalnum() would get called with a negative value for + high ascii numbers. Thanks to Alesky Aksenov. +- Fixed some errors codes that were not getting set. +- Made methods "const" that were not. +- Added a switch to enable or disable the ignoring of white space. ( TiXmlDocument::SetIgnoreWhiteSpace() ) +- Greater standardization and code re-use in the parser. +- Added a stream out operator. +- Added a stream in operator. +- Entity support. + +TODO +CDATA. +Support for "generic entity" #xxx thing. + diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/dox.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/dox.svn-base new file mode 100644 index 0000000..f431877 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/dox.svn-base @@ -0,0 +1,708 @@ +# Doxyfile 1.2.2 + +# This file describes the settings to be used by doxygen for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = TinyXml + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = ./docs + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, +# Korean, Hungarian, Spanish, Romanian, Russian, Croatian, Polish, and +# Portuguese. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the Javadoc-style will +# behave just like the Qt-style comments. + +JAVADOC_AUTOBRIEF = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# The ENABLE_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = . "readme.txt" + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +FILE_PATTERNS = *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = . + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using a WORD or other. +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Warning: This feature +# is still experimental and very incomplete. + +GENERATE_XML = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other +# documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented header file showing +# the documented files that directly or indirectly include this file + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/makedistlinux.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/makedistlinux.svn-base new file mode 100644 index 0000000..eaff150 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/makedistlinux.svn-base @@ -0,0 +1,34 @@ +echo "Making version: " +echo $1 +echo $2 +echo $3 + +rm ./docs/* + +doxygen dox +rm -rf ./tinyxml/* + +rm tinyxml_$1_$2_$3.zip +rm tinyxml_$1_$2_$3.tar.gz + +rmdir tinyxml +mkdir tinyxml + +cp readme.txt ./tinyxml +cp changes.txt ./tinyxml +cp Makefile ./tinyxml + +cp tinyxml.cpp tinyxml +cp tinyxmlerror.cpp tinyxml +cp tinyxmlparser.cpp tinyxml +cp xmltest.cpp tinyxml + +cp tinyxml.h tinyxml +cp tinyxml.dsp tinyxml + +mkdir ./tinyxml/docs +cp ./docs/* ./tinyxml/docs + +tar -zcf tinyxml_$1_$2_$3.tar.gz tinyxml +zip -r -q -9 tinyxml_$1_$2_$3.zip tinyxml + diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/makedistwin.bat.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/makedistwin.bat.svn-base new file mode 100644 index 0000000..99a7b11 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/makedistwin.bat.svn-base @@ -0,0 +1,19 @@ +del .\tinyxml_win\*.* +del .\docs\*.* + +doxygen dox +mkdir tinyxml_win + +copy readme.txt tinyxml_win +copy changes.txt tinyxml_win + +copy *.cpp tinyxml_win +copy *.h tinyxml_win +copy *.dsp tinyxml_win +copy test0.xml tinyxml_win +copy test1.xml tinyxml_win +copy test2.xml tinyxml_win + +mkdir .\tinyxml_win\docs +copy docs .\tinyxml_win\docs + diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/readme.txt.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/readme.txt.svn-base new file mode 100644 index 0000000..c98c0f3 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/readme.txt.svn-base @@ -0,0 +1,309 @@ +/** @mainpage + +<h1> TinyXml </h1> + +TinyXml is a simple, small, C++ XML parser that can be easily +integrating into other programs. + + +<h2> What it does. </h2> + +In brief, TinyXml parses an XML document, and builds from that a +Document Object Model that can be read, modified, and saved. + +XML stands for "eXtensible Markup Language." It allows you to create +your own document markups. Where HTML does a very good job of marking +documents for browsers, XML allows you to define any kind of document +markup, for example a document that describes a "to do" list for an +organizer application. XML is a very structured and convenient format. +All those random file formats created to store application data can +all be replaced with XML. One parser for everything. + +There are different ways to access and interact with XML data. +TinyXml uses a Document Object Model, meaning the XML data is parsed +into a tree objects that can be browsed and manipulated, and then +written back to disk. You can also construct an XML document from +scratch with C++ objects and write this to disk. + +TinyXml is designed to be easy and fast. It is one header and three cpp +files. Simply add these to your project and off you go. There is an +example to get you started. It is released under the ZLib license, +so you can use it in open source or commercial code. + +It attempts to be a flexible parser, but with truly correct and +compliant XML output (with the exception of the character set, +below.) TinyXml should compile on any reasonably C++ +system. It does not rely on exceptions or RTTI, and only uses the STL +string class. + + +<h2> What it doesn't do. </h2> + +It doesn�t parse or use DTDs (Document Type Definitions) or XSL�s +(eXtensible Stylesheet Language.) It is limited to the ASCII +character set. There are other parsers out there (check out +www.sourceforge.org, search for XML) that are much more fully +featured. But they are also much bigger, take longer to set up in +your project, have a higher learning curve, and often have a more +restrictive license. If you are working with browsers or have more +complete XML needs, TinyXml is not the parser for you. + + +<h2> Code Status. </h2> + +Currently in use, TinyXml is looking pretty stable. If you find +bugs, send them in and we'll get them straightened out as soon as possible. + +There are some areas of improvement; please check sourceforge if you are +interested in working on TinxXml. + + +<h2> Changes between version 1 and 2 </h2> + + +<h3> Entities </h3> +TinyXml recognizes the pre-defined "entity references", meaning special +characters. Namely: + +@verbatim + & & + < < + > > + " " + ' � +@endverbatim + +These are recognized when the XML document is read, and translated to there +ASCII equivalents. For instance, text with the XML of: + +@verbatim + Far & Away +@endverbatim + +will have the Value() of "Far & Away" when queried from the TiXmlText object, +but will be written back to the XML stream/file as an entitity. + +TiXml will ignore unknown entities and the +@verbatim +"&#x" +@endverbatim +entities, and leave them unprocessed. + + +<h3> Streams </h3> +TiXml has been modified to support both C (FILE) and C++ (operator <<,>>) +streams. There are some differences that you may need to be aware of. + +C style output: + - based on FILE* + - the Print() and SaveFile() methods + + Generates formatted output, with plenty of white space, intended to be as + human-readable as possible. They are very fast, and tolerant of ill formed + XML documents. For example, an XML document that contains 2 root elements + and 2 declarations, will print. + +C style input: + - based on FILE* + - the Parse() and LoadFile() methods + + A fast, tolerant read. Use whenever you don't need the C++ streams. + +C++ style ouput: + - based on std::ostream + - operator<< + + Generates condensed output, intended for network transmission rather than + readability. Depending on your system's implementation of the ostream class, + these may be somewhat slower. (Or may not.) Not tolerant of ill formed XML: + a document should contain the correct one root element. Additional root level + elements will not be streamed out. + +C++ style input: + - based on std::istream + - operator>> + + Reads XML from a stream, making it useful for network transmission. The tricky + part is knowing when the XML document is complete, since there will almost + certainly be other data in the stream. TinyXml will assume the XML data is + complete after it reads the root element. Also not that operator>> is somewhat + slower than Parse, due to both implementation of the STL and limitations of + TinyXml. + +<h3> White space </h3> +The world simply does not agree on whether white space should be kept, or condensed. +For example, pretend the '_' is a space, and look at "Hello____world". HTML, and +at least some XML parsers, will interpret this as "Hello_world". They condense white +space. Some XML parsers do not, and will leave it as "Hello____world". (Remember +to keep pretending the _ is a space.) + +It's an issue that hasn't been resolved to my satisfaction. TinyXml supports both +motifs. Call TiXmlBase::SetCondenseWhiteSpace( bool ) to set the desired behavior. +The default is to condense white space. + +If you change the default, you should call TiXmlBase::SetCondenseWhiteSpace( bool ) +before making any calls to Parse XML data, and I don't recommend changing it after +it has been set. + + +<h2> Using and Installing </h2> + +To Compile and Run xmltest: + +A Linux Makefile and a Windows Visual C++ .dsp file is provided. +Simply compile and run. It will write the file demotest.xml to your +disk and generate output on the screen. It also tests walking the +DOM by printing out the number of nodes found using different +techniques. + +The Linux makefile is very generic and will +probably run on other systems, but is only tested on Linux. You no +longer need to run 'make depend'. The dependecies have been +hard coded. + + +To Use in an Application: + +Add tinyxml.cpp, tinyxml.h, tinyxmlerror.cpp, and tinyxmlparser.cpp to your +project or make file. That's it! It should compile on any reasonably +compliant C++ system. You do not need to enable exceptions or +RTTI for TinyXml. + + +<h2> Where it may go. </h2> + +At this point, I'm focusing on tightening up remaining issues. +Bug fixes (though comfortably rare) and minor interface +corrections. + +There are some "it would be nice if..." items. I'll keep those +posted as tasks on SourceForge. (www.sourceforge.net/projects/tinyxml) + + +<h2> How TinyXml works. </h2> + +An example is probably the best way to go. Take: +@verbatim + <?xml version="1.0" standalone=�no�> + <?-- Our to do list data --> + <ToDo> + <Item priority="1"> Go to the <bold>Toy store!</bold></Item> + <Item priority="2"> Do bills</Item> + </ToDo> +@endverbatim + +It�s not much of a To Do list, but it will do. To read this file +(say "demo.xml") you would create a document, and parse it in: +@verbatim + TiXmlDocument doc( "demo.xml" ); + doc.LoadFile(); +@endverbatim + +And it�s ready to go. Now let�s look at some lines and how they +relate to the DOM. + +<?xml version="1.0" standalone=�no�> + + The first line is a declaration, and gets turned into the + TiXmlDeclaration class. It will be the first child of the + document node. + + This is the only directive/special tag parsed by by TinyXml. + Generally directive targs are stored in TiXmlUnknown so the + commands won�t be lost when it is saved back to disk. + +<?-- Our to do list data --> + + A comment. Will become a TiXmlComment object. + +<ToDo> + + The ToDo tag defines a TiXmlElement object. This one does not have + any attributes, but will contain 2 other elements, both of which + are items. + +<Item priority="1"> + + Creates another TiXmlElement which is a child of the "ToDo" element. + This element has 1 attribute, with the name �priority� and the value + �1�. + +Go to the + + A TiXmlText. This is a leaf node and cannot contain other nodes. + It is a child of the �Item" Element. + +<bold> + + Another TiXmlElement, this one a child of the "Item" element. + +Etc. + +Looking at the entire object tree, you end up with: +@verbatim +TiXmlDocument "demo.xml" + TiXmlDeclaration "version='1.0'" "standalone=�no�" + TiXmlComment " Our to do list data" + TiXmlElement "ToDo" + TiXmlElement "Item" Attribtutes: priority = 1 + TiXmlText "Go to the " + TiXmlElement "bold" + TiXmlText "Toy store!" + TiXmlElement "Item" Attributes: priority=2 + TiXmlText "bills" +@endverbatim + +<h2> Contributors </h2> + +Thanks very much to everyone who sends suggestions, bugs, ideas, and +encouragement. It all helps, and makes this project fun. A special thanks +to the contributors on the web pages that keep it lively. + +So many people have sent in bugs and ideas, that rather than list here I +try to give credit due in the "changes.txt" file. + +<h2> Documentation </h2> + +The documentation is build with Doxygen, using the 'dox' +configuration file. + +<h2> License </h2> + +TinyXml is released under the zlib license: + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +<h2> References </h2> + +The World Wide Web Consortium is the definitive standard body for +XML, and there web pages contain huge amounts of information. I also +recommend "XML Pocket Reference" by Robert Eckstein and published by +O�Reilly. + +<h2> Contact Me: </h2> + +I�d appreciates your suggestions, and would love to know if you +use TinyXml. I hope you enjoy it and find it useful. Please post +questions, comments, file bugs, or contact me at: + +www.sourceforge.net/projects/tinyxml + +Lee Thomason +*/ diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/test.dsp.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/test.dsp.svn-base new file mode 100644 index 0000000..ec6445f --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/test.dsp.svn-base @@ -0,0 +1,95 @@ +# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 5.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=test - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "test.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "test - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "test - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "test - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "test - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "test___W" +# PROP BASE Intermediate_Dir "test___W" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "test___W" +# PROP Intermediate_Dir "test___W" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "test - Win32 Release" +# Name "test - Win32 Debug" +# Begin Source File + +SOURCE=.\demotest.xml +# End Source File +# Begin Source File + +SOURCE=.\smalltest.xml +# End Source File +# Begin Source File + +SOURCE=.\xmltest.cpp +# End Source File +# End Target +# End Project diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/test.dsw.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/test.dsw.svn-base new file mode 100644 index 0000000..46bd976 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/test.dsw.svn-base @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 5.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "test"=.\test.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name tinyxml + End Project Dependency +}}} + +############################################################################### + +Project: "tinyxml"=.\tinyxml.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.cpp.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.cpp.svn-base new file mode 100644 index 0000000..981131e --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.cpp.svn-base @@ -0,0 +1,1007 @@ +/* +Copyright (c) 2000 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include <iostream> +#include <sstream> +#include <fstream> +#include "tinyxml.h" +using namespace std; + + +bool TiXmlBase::condenseWhiteSpace = true; + + +void TiXmlBase::PutString( const std::string& str, std::ostream* stream ) +{ + // Scan for the all important '&' + unsigned int i=0, j=0; + + while ( i < str.length() ) + { + unsigned next = str.find( '&', i ); + + if ( next == string::npos ) + { + stream->write( &str.at( i ), str.length() - i ); + return; + } + + // We found an entity. + if ( next - i > 0 ) + stream->write( &str.at( i ), next - i ); + i = next; + + // Check for the special "&#x" entitity + if ( i < str.length() - 2 + && str[i] == '&' + && str[i+1] == '#' + && str[i+2] == 'x' ) + { + stream->put( str[i] ); + } + else + { + for ( j=0; j<NUM_ENTITY; ++j ) + { + if ( str[i] == entity[j].chr ) + { + stream->write( entity[j].str, entity[j].strLength ); + break; + } + } + if ( j == NUM_ENTITY ) + { + stream->put( str[i] ); + } + } + ++i; + } +} + + +TiXmlNode::TiXmlNode( NodeType _type ) +{ + parent = 0; + type = _type; + firstChild = 0; + lastChild = 0; + prev = 0; + next = 0; +} + + +TiXmlNode::~TiXmlNode() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } +} + + +void TiXmlNode::Clear() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } + + firstChild = 0; + lastChild = 0; +} + + +TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) +{ + node->parent = this; + + node->prev = lastChild; + node->next = 0; + + if ( lastChild ) + lastChild->next = node; + else + firstChild = node; // it was an empty list. + + lastChild = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) +{ + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + + return LinkEndChild( node ); +} + + +TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) +{ + if ( beforeThis->parent != this ) + return 0; + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->next = beforeThis; + node->prev = beforeThis->prev; + beforeThis->prev->next = node; + beforeThis->prev = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) +{ + if ( afterThis->parent != this ) + return 0; + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->prev = afterThis; + node->next = afterThis->next; + afterThis->next->prev = node; + afterThis->next = node; + return node; +} + + +TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) +{ + if ( replaceThis->parent != this ) + return 0; + + TiXmlNode* node = withThis.Clone(); + if ( !node ) + return 0; + + node->next = replaceThis->next; + node->prev = replaceThis->prev; + + if ( replaceThis->next ) + replaceThis->next->prev = node; + else + lastChild = node; + + if ( replaceThis->prev ) + replaceThis->prev->next = node; + else + firstChild = node; + + delete replaceThis; + node->parent = this; + return node; +} + + +bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) +{ + if ( removeThis->parent != this ) + { + assert( 0 ); + return false; + } + + if ( removeThis->next ) + removeThis->next->prev = removeThis->prev; + else + lastChild = removeThis->prev; + + if ( removeThis->prev ) + removeThis->prev->next = removeThis->next; + else + firstChild = removeThis->next; + + delete removeThis; + return true; +} + + +TiXmlNode* TiXmlNode::FirstChild( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = firstChild; node; node = node->next ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +TiXmlNode* TiXmlNode::LastChild( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = lastChild; node; node = node->prev ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +TiXmlNode* TiXmlNode::IterateChildren( TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild(); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling(); + } +} + + +TiXmlNode* TiXmlNode::IterateChildren( const std::string& val, TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild( val ); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling( val ); + } +} + + +TiXmlNode* TiXmlNode::NextSibling( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = next; node; node = node->next ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +TiXmlNode* TiXmlNode::PreviousSibling( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = prev; node; node = node->prev ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +void TiXmlElement::RemoveAttribute( const std::string& name ) +{ + TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + { + attributeSet.Remove( node ); + delete node; + } +} + + +TiXmlElement* TiXmlNode::FirstChildElement() const +{ + TiXmlNode* node; + + for ( node = FirstChild(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +TiXmlElement* TiXmlNode::FirstChildElement( const std::string& value ) const +{ + TiXmlNode* node; + + for ( node = FirstChild( value ); + node; + node = node->NextSibling( value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +TiXmlElement* TiXmlNode::NextSiblingElement() const +{ + TiXmlNode* node; + + for ( node = NextSibling(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +TiXmlElement* TiXmlNode::NextSiblingElement( const std::string& value ) const +{ + TiXmlNode* node; + + for ( node = NextSibling( value ); + node; + node = node->NextSibling( value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + + +TiXmlDocument* TiXmlNode::GetDocument() const +{ + const TiXmlNode* node; + + for( node = this; node; node = node->parent ) + { + if ( node->ToDocument() ) + return node->ToDocument(); + } + return 0; +} + + +// TiXmlElement::TiXmlElement() +// : TiXmlNode( TiXmlNode::ELEMENT ) +// { +// } + +TiXmlElement::TiXmlElement( const std::string& _value ) + : TiXmlNode( TiXmlNode::ELEMENT ) +{ + firstChild = lastChild = 0; + value = _value; +} + +TiXmlElement::~TiXmlElement() +{ + while( attributeSet.First() ) + { + TiXmlAttribute* node = attributeSet.First(); + attributeSet.Remove( node ); + delete node; + } +} + +const std::string* TiXmlElement::Attribute( const std::string& name ) const +{ + TiXmlAttribute* node = attributeSet.Find( name ); + + if ( node ) + return &(node->Value() ); + + return 0; +} + + +const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const +{ + const std::string* s = Attribute( name ); + if ( s ) + *i = atoi( s->c_str() ); + else + *i = 0; + return s; +} + + +void TiXmlElement::SetAttribute( const std::string& name, int val ) +{ + char buf[64]; + sprintf( buf, "%d", val ); + + std::string v = buf; + + SetAttribute( name, v ); +} + + +void TiXmlElement::SetAttribute( const std::string& name, const std::string& value ) +{ + TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + { + node->SetValue( value ); + return; + } + + TiXmlAttribute* attrib = new TiXmlAttribute( name, value ); + if ( attrib ) + { + attributeSet.Add( attrib ); + } + else + { + TiXmlDocument* document = GetDocument(); + if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY ); + } +} + + +void TiXmlElement::Print( FILE* cfile, int depth ) const +{ + int i; + for ( i=0; i<depth; i++ ) + { + fprintf( cfile, " " ); + } + + fprintf( cfile, "<%s", value.c_str() ); + + TiXmlAttribute* attrib; + for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) + { + fprintf( cfile, " " ); + attrib->Print( cfile, depth ); + } + + // There are 3 different formatting approaches: + // 1) An element without children is printed as a <foo /> node + // 2) An element with only a text child is printed as <foo> text </foo> + // 3) An element with children is printed on multiple lines. + TiXmlNode* node; + if ( !firstChild ) + { + fprintf( cfile, " />" ); + } + else if ( firstChild == lastChild && firstChild->ToText() ) + { + fprintf( cfile, ">" ); + firstChild->Print( cfile, depth + 1 ); + fprintf( cfile, "</%s>", value.c_str() ); + } + else + { + fprintf( cfile, ">" ); + + for ( node = firstChild; node; node=node->NextSibling() ) + { + if ( !node->ToText() ) + { + fprintf( cfile, "\n" ); + } + node->Print( cfile, depth+1 ); + } + fprintf( cfile, "\n" ); + for( i=0; i<depth; ++i ) + fprintf( cfile, " " ); + fprintf( cfile, "</%s>", value.c_str() ); + } +} + + +void TiXmlElement::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<" << value; + + TiXmlAttribute* attrib; + for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) + { + (*stream) << " "; + attrib->StreamOut( stream ); + } + + // If this node has children, give it a closing tag. Else + // make it an empty tag. + TiXmlNode* node; + if ( firstChild ) + { + (*stream) << ">"; + + for ( node = firstChild; node; node=node->NextSibling() ) + { + node->StreamOut( stream ); + } + (*stream) << "</" << value << ">"; + } + else + { + (*stream) << " />"; + } +} + + +TiXmlNode* TiXmlElement::Clone() const +{ + TiXmlElement* clone = new TiXmlElement( Value() ); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + + // Clone the attributes, then clone the children. + TiXmlAttribute* attribute = 0; + for( attribute = attributeSet.First(); + attribute; + attribute = attribute->Next() ) + { + clone->SetAttribute( attribute->Name(), attribute->Value() ); + } + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + clone->LinkEndChild( node->Clone() ); + } + return clone; +} + + +TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT ) +{ + error = false; +// ignoreWhiteSpace = true; +} + + +TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) +{ +// ignoreWhiteSpace = true; + value = documentName; + error = false; +} + + +bool TiXmlDocument::LoadFile() +{ + return LoadFile( value ); +} + + +bool TiXmlDocument::SaveFile() const +{ + return SaveFile( value ); +} + + +bool TiXmlDocument::LoadFile( const std::string& filename ) +{ + // Delete the existing data: + Clear(); + value = filename; + + FILE* file = fopen( filename.c_str(), "r" ); + + if ( file ) + { + // Get the file size, so we can pre-allocate the string. HUGE speed impact. + long length = 0; + fseek( file, 0, SEEK_END ); + length = ftell( file ); + fseek( file, 0, SEEK_SET ); + + // If we have a file, assume it is all one big XML file, and read it in. + // The document parser may decide the document ends sooner than the entire file, however. + std::string data; + data.reserve( length ); + + const int BUF_SIZE = 2048; + char buf[BUF_SIZE]; + + while( fgets( buf, BUF_SIZE, file ) ) + { + data += buf; + } + fclose( file ); + + Parse( data.c_str() ); + if ( !Error() ) + { + return true; + } + } + SetError( TIXML_ERROR_OPENING_FILE ); + return false; +} + + +bool TiXmlDocument::SaveFile( const std::string& filename ) const +{ + // The old c stuff lives on... + FILE* fp = fopen( filename.c_str(), "w" ); + if ( fp ) + { + Print( fp, 0 ); + fclose( fp ); + return true; + } + return false; +} + + +TiXmlNode* TiXmlDocument::Clone() const +{ + TiXmlDocument* clone = new TiXmlDocument(); + if ( !clone ) + return 0; + + CopyToClone( clone ); + clone->error = error; + clone->errorDesc = errorDesc; + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + clone->LinkEndChild( node->Clone() ); + } + return clone; +} + + +void TiXmlDocument::Print( FILE* cfile, int depth ) const +{ + TiXmlNode* node; + for ( node=FirstChild(); node; node=node->NextSibling() ) + { + node->Print( cfile, depth ); + fprintf( cfile, "\n" ); + } +} + + +void TiXmlDocument::StreamOut( std::ostream* out ) const +{ + TiXmlNode* node; + for ( node=FirstChild(); node; node=node->NextSibling() ) + { + node->StreamOut( out ); + + // Special rule for streams: stop after the root element. + // The stream in code will only read one element, so don't + // write more than one. + if ( node->ToElement() ) + break; + } +} + + +TiXmlAttribute* TiXmlAttribute::Next() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( next->value.empty() && next->name.empty() ) + return 0; + return next; +} + + +TiXmlAttribute* TiXmlAttribute::Previous() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( prev->value.empty() && prev->name.empty() ) + return 0; + return prev; +} + + +void TiXmlAttribute::Print( FILE* cfile, int /*depth*/ ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 500 ); + + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlAttribute::StreamOut( std::ostream* stream ) const +{ + if ( value.find( '\"' ) != std::string::npos ) + { + PutString( name, stream ); + (*stream) << "=" << "'"; + PutString( value, stream ); + (*stream) << "'"; + } + else + { + PutString( name, stream ); + (*stream) << "=" << "\""; + PutString( value, stream ); + (*stream) << "\""; + } +} + + +void TiXmlAttribute::SetIntValue( int value ) +{ + std::string s; + std::ostringstream stream( s ); + stream << value; + SetValue( stream.str() ); +} + + +void TiXmlAttribute::SetDoubleValue( double value ) +{ + std::string s; + std::ostringstream stream( s ); + stream << value; + SetValue( stream.str() ); +} + + +const int TiXmlAttribute::IntValue() const +{ + int v; + std::istringstream string( value ); + string >> v; + return v; +} + + +const double TiXmlAttribute::DoubleValue() const +{ + double v; + std::istringstream string( value ); + string >> v; + return v; +} + + +void TiXmlComment::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 1000 ); + + for ( int i=0; i<depth; i++ ) + { + fprintf( cfile, " " ); + } + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlComment::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<!--"; + PutString( value, stream ); + (*stream) << "-->"; +} + + +TiXmlNode* TiXmlComment::Clone() const +{ + TiXmlComment* clone = new TiXmlComment(); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + return clone; +} + + +void TiXmlText::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 1000 ); + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlText::StreamOut( std::ostream* stream ) const +{ + PutString( value, stream ); +} + + +TiXmlNode* TiXmlText::Clone() const +{ + TiXmlText* clone = 0; + clone = new TiXmlText( "" ); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + return clone; +} + + +TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, + const std::string& _encoding, + const std::string& _standalone ) + : TiXmlNode( TiXmlNode::DECLARATION ) +{ + version = _version; + encoding = _encoding; + standalone = _standalone; +} + + +void TiXmlDeclaration::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 200 ); + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlDeclaration::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<?xml "; + + if ( !version.empty() ) + { + (*stream) << "version=\""; + PutString( version, stream ); + (*stream) << "\" "; + } + if ( !encoding.empty() ) + { + (*stream) << "encoding=\""; + PutString( encoding, stream ); + (*stream ) << "\" "; + } + if ( !standalone.empty() ) + { + (*stream) << "standalone=\""; + PutString( standalone, stream ); + (*stream) << "\" "; + } + (*stream) << "?>"; +} + + +TiXmlNode* TiXmlDeclaration::Clone() const +{ + TiXmlDeclaration* clone = new TiXmlDeclaration(); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + clone->version = version; + clone->encoding = encoding; + clone->standalone = standalone; + return clone; +} + + +void TiXmlUnknown::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 200 ); + StreamOut( &stream ); + + for ( int i=0; i<depth; i++ ) + fprintf( cfile, " " ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlUnknown::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<" << value << ">"; // Don't use entities hear! It is unknown. +} + + +TiXmlNode* TiXmlUnknown::Clone() const +{ + TiXmlUnknown* clone = new TiXmlUnknown(); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + return clone; +} + + +TiXmlAttributeSet::TiXmlAttributeSet() +{ + sentinel.next = &sentinel; + sentinel.prev = &sentinel; +} + + +TiXmlAttributeSet::~TiXmlAttributeSet() +{ + assert( sentinel.next == &sentinel ); + assert( sentinel.prev == &sentinel ); +} + + +void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) +{ + assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. + + addMe->next = &sentinel; + addMe->prev = sentinel.prev; + + sentinel.prev->next = addMe; + sentinel.prev = addMe; +} + +void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) +{ + TiXmlAttribute* node; + + for( node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node == removeMe ) + { + node->prev->next = node->next; + node->next->prev = node->prev; + node->next = 0; + node->prev = 0; + return; + } + } + assert( 0 ); // we tried to remove a non-linked attribute. +} + + +TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const +{ + TiXmlAttribute* node; + + for( node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node->Name() == name ) + return node; + } + return 0; +} + diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.dsp.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.dsp.svn-base new file mode 100644 index 0000000..56b78dc --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.dsp.svn-base @@ -0,0 +1,109 @@ +# Microsoft Developer Studio Project File - Name="tinyxml" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=tinyxml - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "tinyxml.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "tinyxml.mak" CFG="tinyxml - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "tinyxml - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "tinyxml - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "tinyxml - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "tinyxml - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "tinyxml - Win32 Release" +# Name "tinyxml - Win32 Debug" +# Begin Source File + +SOURCE=.\changes.txt +# End Source File +# Begin Source File + +SOURCE=.\readme.txt +# End Source File +# Begin Source File + +SOURCE=.\tinyxml.cpp +# End Source File +# Begin Source File + +SOURCE=.\tinyxml.h +# End Source File +# Begin Source File + +SOURCE=.\tinyxmlerror.cpp +# End Source File +# Begin Source File + +SOURCE=.\tinyxmlparser.cpp +# End Source File +# End Target +# End Project diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.h.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.h.svn-base new file mode 100644 index 0000000..b9f1205 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml.h.svn-base @@ -0,0 +1,804 @@ +/* +Copyright (c) 2000 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + + +#ifndef TINYXML_INCLUDED +#define TINYXML_INCLUDED + +#pragma warning( disable : 4530 ) +#pragma warning( disable : 4786 ) + +#include <string> +#include <stdio.h> +#include <assert.h> + +class TiXmlDocument; +class TiXmlElement; +class TiXmlComment; +class TiXmlUnknown; +class TiXmlAttribute; +class TiXmlText; +class TiXmlDeclaration; + + +// Help out windows: +#if defined( _DEBUG ) && !defined( DEBUG ) + #define DEBUG +#endif + +#if defined( DEBUG ) && defined( _MSC_VER ) + #include <windows.h> + #define TIXML_LOG OutputDebugString +#else + #define TIXML_LOG printf +#endif + + +/** TiXmlBase is a base class for every class in TinyXml. + It does little except to establish that TinyXml classes + can be printed and provide some utility functions. + + In XML, the document and elements can contain + other elements and other types of nodes. + + @verbatim + A Document can contain: Element (container or leaf) + Comment (leaf) + Unknown (leaf) + Declaration( leaf ) + + An Element can contain: Element (container or leaf) + Text (leaf) + Attributes (not on tree) + Comment (leaf) + Unknown (leaf) + + A Decleration contains: Attributes (not on tree) + @endverbatim +*/ +class TiXmlBase +{ + friend class TiXmlNode; + friend class TiXmlElement; + friend class TiXmlDocument; + + public: + TiXmlBase() {} + virtual ~TiXmlBase() {} + + /** All TinyXml classes can print themselves to a filestream. + This is a formatted print, and will insert tabs and newlines. + + (For an unformatted stream, use the << operator.) + */ + virtual void Print( FILE* cfile, int depth ) const = 0; + + // [internal] Underlying implementation of the operator << + virtual void StreamOut ( std::ostream* out ) const = 0; + + /** The world does not agree on whether white space should be kept or + not. In order to make everyone happy, these global, static functions + are provided to set whether or not TinyXml will condense all white space + into a single space or not. The default is to condense. Note changing these + values is not thread safe. + */ + static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } + + /// Return the current white space setting. + static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } + + protected: + static const char* SkipWhiteSpace( const char* ); + static bool StreamWhiteSpace( std::istream* in, std::string* tag ); + static bool IsWhiteSpace( int c ) { return ( isspace( c ) || c == '\n' || c == '\r' ); } + + /* Read to the specified character. + Returns true if the character found and no error. + */ + static bool StreamTo( std::istream* in, int character, std::string* tag ); + + /* Reads an XML name into the string provided. Returns + a pointer just past the last character of the name, + or 0 if the function has an error. + */ + static const char* ReadName( const char*, std::string* name ); + + /* Reads text. Returns a pointer past the given end tag. + Wickedly complex options, but it keeps the (sensitive) code in one place. + */ + static const char* ReadText( const char* in, // where to start + std::string* text, // the string read + bool ignoreWhiteSpace, // whether to keep the white space + const char* endTag, // what ends this text + bool ignoreCase ); // whether to ignore case in the end tag + + virtual const char* Parse( const char* p ) = 0; + + // If an entity has been found, transform it into a character. + static const char* GetEntity( const char* in, char* value ); + + // Get a character, while interpreting entities. + inline static const char* GetChar( const char* p, char* value ) + { + assert( p ); + if ( *p == '&' ) + { + return GetEntity( p, value ); + } + else + { + *value = *p; + return p+1; + } + } + + // Puts a string to a stream, expanding entities as it goes. + // Note this should not contian the '<', '>', etc, or they will be transformed into entities! + static void PutString( const std::string& str, std::ostream* stream ); + + // Return true if the next characters in the stream are any of the endTag sequences. + bool static StringEqual( const char* p, + const char* endTag, + bool ignoreCase ); + + + enum + { + TIXML_NO_ERROR = 0, + TIXML_ERROR, + TIXML_ERROR_OPENING_FILE, + TIXML_ERROR_OUT_OF_MEMORY, + TIXML_ERROR_PARSING_ELEMENT, + TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, + TIXML_ERROR_READING_ELEMENT_VALUE, + TIXML_ERROR_READING_ATTRIBUTES, + TIXML_ERROR_PARSING_EMPTY, + TIXML_ERROR_READING_END_TAG, + TIXML_ERROR_PARSING_UNKNOWN, + TIXML_ERROR_PARSING_COMMENT, + TIXML_ERROR_PARSING_DECLARATION, + TIXML_ERROR_DOCUMENT_EMPTY, + + TIXML_ERROR_STRING_COUNT + }; + static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; + + private: + struct Entity + { + const char* str; + unsigned int strLength; + int chr; + }; + enum + { + NUM_ENTITY = 5, + MAX_ENTITY_LENGTH = 6 + + }; + static Entity entity[ NUM_ENTITY ]; + static bool condenseWhiteSpace; +}; + + +/** The parent class for everything in the Document Object Model. + (Except for attributes, which are contained in elements.) + Nodes have siblings, a parent, and children. A node can be + in a document, or stand on its own. The type of a TiXmlNode + can be queried, and it can be cast to its more defined type. +*/ +class TiXmlNode : public TiXmlBase +{ + public: + + /** An output stream operator, for every class. Note that this outputs + without any newlines or formatting, as opposed to Print(), which + includes tabs and new lines. + + The operator<< and operator>> are not completely symmetric. Writing + a node to a stream is very well defined. You'll get a nice stream + of output, without any extra whitespace or newlines. + + But reading is not as well defined. (As it always is.) If you create + a TiXmlElement (for example) and read that from an input stream, + the text needs to define an element or junk will result. This is + true of all input streams, but it's worth keeping in mind. + + A TiXmlDocument will read nodes until it reads a root element. + */ + friend std::ostream& operator<< ( std::ostream& out, const TiXmlNode& base ) + { + base.StreamOut( &out ); + return out; + } + + /** An input stream operator, for every class. Tolerant of newlines and + formatting, but doesn't expect them. + */ + friend std::istream& operator>> ( std::istream& in, TiXmlNode& base ) + { + std::string tag; + tag.reserve( 8 * 1000 ); + base.StreamIn( &in, &tag ); + + base.Parse( tag.c_str() ); + return in; + } + + /** The types of XML nodes supported by TinyXml. (All the + unsupported types are picked up by UNKNOWN.) + */ + enum NodeType + { + DOCUMENT, + ELEMENT, + COMMENT, + UNKNOWN, + TEXT, + DECLARATION, + TYPECOUNT + }; + + virtual ~TiXmlNode(); + + /** The meaning of 'value' changes for the specific type of + TiXmlNode. + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + + The subclasses will wrap this function. + */ + const std::string& Value() const { return value; } + + /** Changes the value of the node. Defined as: + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + */ + void SetValue( const std::string& _value ) { value = _value; } + + /// Delete all the children of this node. Does not affect 'this'. + void Clear(); + + /// One step up the DOM. + TiXmlNode* Parent() const { return parent; } + + TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. + TiXmlNode* FirstChild( const std::string& value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. + + TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. + TiXmlNode* LastChild( const std::string& value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. + + /** An alternate way to walk the children of a node. + One way to iterate over nodes is: + @verbatim + for( child = parent->FirstChild(); child; child = child->NextSibling() ) + @endverbatim + + IterateChildren does the same thing with the syntax: + @verbatim + child = 0; + while( child = parent->IterateChildren( child ) ) + @endverbatim + + IterateChildren takes the previous child as input and finds + the next one. If the previous child is null, it returns the + first. IterateChildren will return null when done. + */ + TiXmlNode* IterateChildren( TiXmlNode* previous ) const; + + /// This flavor of IterateChildren searches for children with a particular 'value' + TiXmlNode* IterateChildren( const std::string& value, TiXmlNode* previous ) const; + + /** Add a new node related to this. Adds a child past the LastChild. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); + + /** Add a new node related to this. Adds a child before the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); + + /** Add a new node related to this. Adds a child after the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); + + /** Replace a child of this node. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); + + /// Delete a child of this node. + bool RemoveChild( TiXmlNode* removeThis ); + + /// Navigate to a sibling node. + TiXmlNode* PreviousSibling() const { return prev; } + + /// Navigate to a sibling node. + TiXmlNode* PreviousSibling( const std::string& ) const; + + /// Navigate to a sibling node. + TiXmlNode* NextSibling() const { return next; } + + /// Navigate to a sibling node with the given 'value'. + TiXmlNode* NextSibling( const std::string& ) const; + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + TiXmlElement* NextSiblingElement() const; + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + TiXmlElement* NextSiblingElement( const std::string& ) const; + + /// Convenience function to get through elements. + TiXmlElement* FirstChildElement() const; + + /// Convenience function to get through elements. + TiXmlElement* FirstChildElement( const std::string& value ) const; + + /// Query the type (as an enumerated value, above) of this node. + virtual int Type() const { return type; } + + /** Return a pointer to the Document this node lives in. + Returns null if not in a document. + */ + TiXmlDocument* GetDocument() const; + + /// Returns true if this node has no children. + bool NoChildren() const { return !firstChild; } + + TiXmlDocument* ToDocument() const { return ( this && type == DOCUMENT ) ? (TiXmlDocument*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlElement* ToElement() const { return ( this && type == ELEMENT ) ? (TiXmlElement*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlComment* ToComment() const { return ( this && type == COMMENT ) ? (TiXmlComment*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlUnknown* ToUnknown() const { return ( this && type == UNKNOWN ) ? (TiXmlUnknown*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlText* ToText() const { return ( this && type == TEXT ) ? (TiXmlText*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlDeclaration* ToDeclaration() const { return ( this && type == DECLARATION ) ? (TiXmlDeclaration*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + + virtual TiXmlNode* Clone() const = 0; + + // The real work of the input operator. + virtual void StreamIn( std::istream* in, std::string* tag ) = 0; + + protected: + TiXmlNode( NodeType type ); + + // The node is passed in by ownership. This object will delete it. + TiXmlNode* LinkEndChild( TiXmlNode* addThis ); + + // Figure out what is at *p, and parse it. Returns null if it is not an xml node. + TiXmlNode* Identify( const char* start ); + + void CopyToClone( TiXmlNode* target ) const { target->value = value; } + + TiXmlNode* parent; + NodeType type; + + TiXmlNode* firstChild; + TiXmlNode* lastChild; + + std::string value; + + TiXmlNode* prev; + TiXmlNode* next; +}; + + +/** An attribute is a name-value pair. Elements have an arbitrary + number of attributes, each with a unique name. + + @note The attributes are not TiXmlNodes, since they are not + part of the tinyXML document object model. There are other + suggested ways to look at this problem. + + @note Attributes have a parent +*/ +class TiXmlAttribute : public TiXmlBase +{ + friend class TiXmlAttributeSet; + + public: + /// Construct an empty attribute. + TiXmlAttribute() : prev( 0 ), next( 0 ) {} + + /// Construct an attribute with a name and value. + TiXmlAttribute( const std::string& _name, const std::string& _value ) : name( _name ), value( _value ), prev( 0 ), next( 0 ) {} + + const std::string& Name() const { return name; } ///< Return the name of this attribute. + + const std::string& Value() const { return value; } ///< Return the value of this attribute. + const int IntValue() const; ///< Return the value of this attribute, converted to an integer. + const double DoubleValue() const; ///< Return the value of this attribute, converted to a double. + + void SetName( const std::string& _name ) { name = _name; } ///< Set the name of this attribute. + void SetValue( const std::string& _value ) { value = _value; } ///< Set the value. + void SetIntValue( int value ); ///< Set the value from an integer. + void SetDoubleValue( double value ); ///< Set the value from a double. + + /// Get the next sibling attribute in the DOM. Returns null at end. + TiXmlAttribute* Next() const; + /// Get the previous sibling attribute in the DOM. Returns null at beginning. + TiXmlAttribute* Previous() const; + + bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } + bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } + bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } + + /* [internal use] + Attribtue parsing starts: first letter of the name + returns: the next char after the value end quote + */ + virtual const char* Parse( const char* p ); + + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + + // [internal use] + virtual void StreamOut( std::ostream* out ) const; + + // [internal use] + // Set the document pointer so the attribute can report errors. + void SetDocument( TiXmlDocument* doc ) { document = doc; } + + private: + TiXmlDocument* document; // A pointer back to a document, for error reporting. + std::string name; + std::string value; + + TiXmlAttribute* prev; + TiXmlAttribute* next; +}; + + +/* A class used to manage a group of attributes. + It is only used internally, both by the ELEMENT and the DECLARATION. + + The set can be changed transparent to the Element and Declaration + classes that use it, but NOT transparent to the Attribute + which has to implement a next() and previous() method. Which makes + it a bit problematic and prevents the use of STL. + + This version is implemented with circular lists because: + - I like circular lists + - it demonstrates some independence from the (typical) doubly linked list. +*/ +class TiXmlAttributeSet +{ + public: + TiXmlAttributeSet(); + ~TiXmlAttributeSet(); + + void Add( TiXmlAttribute* attribute ); + void Remove( TiXmlAttribute* attribute ); + + TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } + TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } + + TiXmlAttribute* Find( const std::string& name ) const; + + private: + TiXmlAttribute sentinel; +}; + + +/** The element is a container class. It has a value, the element name, + and can contain other elements, text, comments, and unknowns. + Elements also contain an arbitrary number of attributes. +*/ +class TiXmlElement : public TiXmlNode +{ + public: + /// Construct an element. + TiXmlElement( const std::string& value ); + + virtual ~TiXmlElement(); + + /** Given an attribute name, attribute returns the value + for the attribute of that name, or null if none exists. + */ + const std::string* Attribute( const std::string& name ) const; + + /** Given an attribute name, attribute returns the value + for the attribute of that name, or null if none exists. + */ + const std::string* Attribute( const std::string& name, int* i ) const; + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const std::string& name, + const std::string& value ); + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const std::string& name, + int value ); + + /** Deletes an attribute with the given name. + */ + void RemoveAttribute( const std::string& name ); + + TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. + TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. + + // [internal use] Creates a new Element and returs it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + /* [internal use] + Attribtue parsing starts: next char past '<' + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); + + /* [internal use] + Reads the "value" of the element -- another element, or text. + This should terminate with the current end tag. + */ + const char* ReadValue( const char* in ); + bool ReadValue( std::istream* in ); + + private: + TiXmlAttributeSet attributeSet; +}; + + +/** An XML comment. +*/ +class TiXmlComment : public TiXmlNode +{ + public: + /// Constructs an empty comment. + TiXmlComment() : TiXmlNode( TiXmlNode::COMMENT ) {} + virtual ~TiXmlComment() {} + + // [internal use] Creates a new Element and returs it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + /* [internal use] + Attribtue parsing starts: at the ! of the !-- + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); +}; + + +/** XML text. Contained in an element. +*/ +class TiXmlText : public TiXmlNode +{ + public: + TiXmlText( const std::string& initValue ) : TiXmlNode( TiXmlNode::TEXT ) { SetValue( initValue ); } + virtual ~TiXmlText() {} + + + // [internal use] Creates a new Element and returns it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + bool Blank() const; // returns true if all white space and new lines + /* [internal use] + Attribtue parsing starts: First char of the text + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); +}; + + +/** In correct XML the declaration is the first entry in the file. + @verbatim + <?xml version="1.0" standalone="yes"?> + @endverbatim + + TinyXml will happily read or write files without a declaration, + however. There are 3 possible attributes to the declaration: + version, encoding, and standalone. + + Note: In this version of the code, the attributes are + handled as special cases, not generic attributes, simply + because there can only be at most 3 and they are always the same. +*/ +class TiXmlDeclaration : public TiXmlNode +{ + public: + /// Construct an empty declaration. + TiXmlDeclaration() : TiXmlNode( TiXmlNode::DECLARATION ) {} + + /// Construct. + TiXmlDeclaration( const std::string& version, + const std::string& encoding, + const std::string& standalone ); + + virtual ~TiXmlDeclaration() {} + + /// Version. Will return empty if none was found. + const std::string& Version() const { return version; } + /// Encoding. Will return empty if none was found. + const std::string& Encoding() const { return encoding; } + /// Is this a standalone document? + const std::string& Standalone() const { return standalone; } + + // [internal use] Creates a new Element and returs it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + // [internal use] + // Attribtue parsing starts: next char past '<' + // returns: next char past '>' + + virtual const char* Parse( const char* p ); + + private: + std::string version; + std::string encoding; + std::string standalone; +}; + + +/** Any tag that tinyXml doesn't recognize is save as an + unknown. It is a tag of text, but should not be modified. + It will be written back to the XML, unchanged, when the file + is saved. +*/ +class TiXmlUnknown : public TiXmlNode +{ + public: + TiXmlUnknown() : TiXmlNode( TiXmlNode::UNKNOWN ) {} + virtual ~TiXmlUnknown() {} + + // [internal use] + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + /* [internal use] + Attribute parsing starts: First char of the text + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); +}; + + +/** Always the top level node. A document binds together all the + XML pieces. It can be saved, loaded, and printed to the screen. + The 'value' of a document node is the xml file name. +*/ +class TiXmlDocument : public TiXmlNode +{ + public: + /// Create an empty document, that has no name. + TiXmlDocument(); + /// Create a document with a name. The name of the document is also the filename of the xml. + TiXmlDocument( const std::string& documentName ); + + virtual ~TiXmlDocument() {} + + /** Load a file using the current document value. + Returns true if successful. Will delete any existing + document data before loading. + */ + bool LoadFile(); + /// Save a file using the current document value. Returns true if successful. + bool SaveFile() const; + /// Load a file using the given filename. Returns true if successful. + bool LoadFile( const std::string& filename ); + /// Save a file using the given filename. Returns true if successful. + bool SaveFile( const std::string& filename ) const; + + /// Parse the given null terminated block of xml data. + virtual const char* Parse( const char* p ); + + /** Get the root element -- the only top level element -- of the document. + In well formed XML, there should only be one. TinyXml is tolerant of + multiple elements at the document level. + */ + TiXmlElement* RootElement() const { return FirstChildElement(); } + + /// If, during parsing, a error occurs, Error will be set to true. + bool Error() const { return error; } + + /// Contains a textual (english) description of the error if one occurs. + const std::string& ErrorDesc() const { return errorDesc; } + + /** Generally, you probably want the error string ( ErrorDesc() ). But if you + prefer the ErrorId, this function will fetch it. + */ + const int ErrorId() const { return errorId; } + + /// If you have handled the error, it can be reset with this call. + void ClearError() { error = false; errorId = 0; errorDesc = ""; } + + /** Dump the document to standard out. */ + void Print() const { Print( stdout, 0 ); } + + // [internal use] + virtual void Print( FILE* cfile, int depth = 0 ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual TiXmlNode* Clone() const; + // [internal use] + void SetError( int err ) { assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); + error = true; + errorId = err; + errorDesc = errorString[ errorId ]; } + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + + private: + bool error; + int errorId; + std::string errorDesc; +}; + + + +#endif + diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml_vc7.vcproj.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml_vc7.vcproj.svn-base new file mode 100644 index 0000000..9c7b686 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxml_vc7.vcproj.svn-base @@ -0,0 +1,601 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="tinyxml" + ProjectGUID="{9A0946C9-F019-4643-A53A-259BF980F5F9}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/tinyxml.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/tinyxml.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/tinyxml.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="changes.txt"> + </File> + <File + RelativePath="readme.txt"> + </File> + <File + RelativePath="tinyxml.cpp"> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="tinyxml.h"> + </File> + <File + RelativePath="tinyxmlerror.cpp"> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="tinyxmlparser.cpp"> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxmlerror.cpp.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxmlerror.cpp.svn-base new file mode 100644 index 0000000..11b9486 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxmlerror.cpp.svn-base @@ -0,0 +1,26 @@ +#include "tinyxml.h" + +// The goal of the seperate error file is to make the first +// step towards localization. tinyxml (currently) only supports +// latin-1, but at least the error messages could now be translated. +// +// It also cleans up the code a bit. +// + +const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] = +{ + "No error", + "Error", + "Failed to open file", + "Memory allocation failed.", + "Error parsing Element.", + "Failed to read Element name", + "Error reading Element value.", + "Error reading Attributes.", + "Error: empty tag.", + "Error reading end tag.", + "Error parsing Unknown.", + "Error parsing Comment.", + "Error parsing Declaration.", + "Error document empty." +}; diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxmlparser.cpp.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxmlparser.cpp.svn-base new file mode 100644 index 0000000..ef9b0c1 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/tinyxmlparser.cpp.svn-base @@ -0,0 +1,928 @@ +/* +Copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include "tinyxml.h" +#include <ctype.h> +#include <strstream> +using namespace std; + +//#define DEBUG_PARSER + +TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = +{ + { "&", 5, '&' }, + { "<", 4, '<' }, + { ">", 4, '>' }, + { """, 6, '\"' }, + { "'", 6, '\'' } +}; + + +const char* TiXmlBase::SkipWhiteSpace( const char* p ) +{ + if ( !p || !*p ) + { + return 0; + } + while ( p && *p ) + { + if ( isspace( *p ) || *p == '\n' || *p =='\r' ) // Still using old rules for white space. + ++p; + else + break; + } + + return p; +} + + +/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream* in, std::string* tag ) +{ + for( ;; ) + { + if ( !in->good() ) return false; + + int c = in->peek(); + if ( !IsWhiteSpace( c ) ) + return true; + *tag += in->get(); + } +} + + +/*static*/ bool TiXmlBase::StreamTo( std::istream* in, int character, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->peek(); + if ( c == character ) + return true; + + in->get(); + *tag += c; + } + return false; +} + + +const char* TiXmlBase::ReadName( const char* p, string* name ) +{ + *name = ""; + assert( p ); + + // Names start with letters or underscores. + // After that, they can be letters, underscores, numbers, + // hyphens, or colons. (Colons are valid ony for namespaces, + // but tinyxml can't tell namespaces from names.) + if ( p && *p + && ( isalpha( (unsigned char) *p ) || *p == '_' ) ) + { + while( p && *p + && ( isalnum( (unsigned char ) *p ) + || *p == '_' + || *p == '-' + || *p == ':' ) ) + { + (*name) += *p; + ++p; + } + return p; + } + return 0; +} + + +const char* TiXmlBase::GetEntity( const char* p, char* value ) +{ + // Presume an entity, and pull it out. + string ent; + int i; + + // Ignore the &#x entities. + if ( strncmp( "&#x", p, 3 ) == 0 ) + { + *value = *p; + return p+1; + } + + // Now try to match it. + for( i=0; i<NUM_ENTITY; ++i ) + { + if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 ) + { + assert( strlen( entity[i].str ) == entity[i].strLength ); + *value = entity[i].chr; + return ( p + entity[i].strLength ); + } + } + + // So it wasn't an entity, its unrecognized, or something like that. + *value = *p; // Don't put back the last one, since we return it! + return p+1; +} + + +bool TiXmlBase::StringEqual( const char* p, + const char* tag, + bool ignoreCase ) +{ + assert( p ); + if ( !p || !*p ) + { + assert( 0 ); + return false; + } + + if ( tolower( *p ) == tolower( *tag ) ) + { + const char* q = p; + + if (ignoreCase) + { + while ( *q && *tag && *q == *tag ) + { + ++q; + ++tag; + } + + if ( *tag == 0 ) // Have we found the end of the tag, and everything equal? + { + return true; + } + } + else + { + while ( *q && *tag && tolower( *q ) == tolower( *tag ) ) + { + ++q; + ++tag; + } + + if ( *tag == 0 ) + { + return true; + } + } + } + return false; +} + + +const char* TiXmlBase::ReadText( const char* p, + string* text, + bool trimWhiteSpace, + const char* endTag, + bool caseInsensitive ) +{ + *text = ""; + + if ( !trimWhiteSpace // certain tags always keep whitespace + || !condenseWhiteSpace ) // if true, whitespace is always kept + { + // Keep all the white space. + while ( p && *p + && !StringEqual( p, endTag, caseInsensitive ) + ) + { + char c; + p = GetChar( p, &c ); + text->append( &c, 1 ); + } + } + else + { + bool whitespace = false; + + // Remove leading white space: + p = SkipWhiteSpace( p ); + while ( p && *p + && !StringEqual( p, endTag, caseInsensitive ) ) + { + if ( *p == '\r' || *p == '\n' ) + { + whitespace = true; + ++p; + } + else if ( isspace( *p ) ) + { + whitespace = true; + ++p; + } + else + { + // If we've found whitespace, add it before the + // new character. Any whitespace just becomes a space. + if ( whitespace ) + { + text->append( " ", 1 ); + whitespace = false; + } + char c; + p = GetChar( p, &c ); + text->append( &c, 1 ); + } + } + } + return p + strlen( endTag ); +} + + +void TiXmlDocument::StreamIn( std::istream* in, std::string* tag ) +{ + // The basic issue with a document is that we don't know what we're + // streaming. Read something presumed to be a tag (and hope), then + // identify it, and call the appropriate stream method on the tag. + // + // This "pre-streaming" will never read the closing ">" so the + // sub-tag can orient itself. + + if ( !StreamTo( in, '<', tag ) ) + { + SetError( TIXML_ERROR_PARSING_EMPTY ); + return; + } + + while ( in->good() ) + { + int tagIndex = tag->length(); + while ( in->good() && in->peek() != '>' ) + { + int c = in->get(); + (*tag) += (char) c; + } + + if ( in->good() ) + { + // We now have something we presume to be a node of + // some sort. Identify it, and call the node to + // continue streaming. + TiXmlNode* node = Identify( tag->c_str() + tagIndex ); + + if ( node ) + { + node->StreamIn( in, tag ); + bool isElement = node->ToElement() != 0; + delete node; + node = 0; + + // If this is the root element, we're done. Parsing will be + // done by the >> operator. + if ( isElement ) + { + return; + } + } + else + { + SetError( TIXML_ERROR ); + return; + } + } + } + // We should have returned sooner. + SetError( TIXML_ERROR ); +} + + +const char* TiXmlDocument::Parse( const char* p ) +{ + // Parse away, at the document level. Since a document + // contains nothing but other tags, most of what happens + // here is skipping white space. + // + // In this variant (as opposed to stream and Parse) we + // read everything we can. + + + if ( !p || !*p || !( p = SkipWhiteSpace( p ) ) ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY ); + return false; + } + + while ( p && *p ) + { + TiXmlNode* node = Identify( p ); + if ( node ) + { + p = node->Parse( p ); + LinkEndChild( node ); + } + else + { + break; + } + p = SkipWhiteSpace( p ); + } + // All is well. + return p; +} + + +TiXmlNode* TiXmlNode::Identify( const char* p ) +{ + TiXmlNode* returnNode = 0; + + p = SkipWhiteSpace( p ); + if( !p || !*p || *p != '<' ) + { + return 0; + } + + TiXmlDocument* doc = GetDocument(); + p = SkipWhiteSpace( p ); + + if ( !p || !*p ) + { + return 0; + } + + // What is this thing? + // - Elements start with a letter or underscore, but xml is reserved. + // - Comments: <!-- + // - Decleration: <?xml + // - Everthing else is unknown to tinyxml. + // + + const char* xmlHeader = { "<?xml" }; + const char* commentHeader = { "<!--" }; + + if ( StringEqual( p, xmlHeader, true ) ) + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Declaration\n" ); + #endif + returnNode = new TiXmlDeclaration(); + } + else if ( isalpha( *(p+1) ) + || *(p+1) == '_' ) + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Element\n" ); + #endif + returnNode = new TiXmlElement( "" ); + } + else if ( StringEqual( p, commentHeader, false ) ) + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Comment\n" ); + #endif + returnNode = new TiXmlComment(); + } + else + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Unknown\n" ); + #endif + returnNode = new TiXmlUnknown(); + } + + if ( returnNode ) + { + // Set the parent, so it can report errors + returnNode->parent = this; + //p = returnNode->Parse( p ); + } + else + { + if ( doc ) + doc->SetError( TIXML_ERROR_OUT_OF_MEMORY ); + } + return returnNode; +} + + +void TiXmlElement::StreamIn( std::istream* in, std::string* tag ) +{ + // We're called with some amount of pre-parsing. That is, some of "this" + // element is in "tag". Go ahead and stream to the closing ">" + while( in->good() ) + { + int c = in->get(); + (*tag) += (char) c ; + + if ( c == '>' ) + break; + } + + if ( tag->length() < 3 ) return; + + // Okay...if we are a "/>" tag, then we're done. We've read a complete tag. + // If not, identify and stream. + + if ( tag->at( tag->length() - 1 ) == '>' + && tag->at( tag->length() - 2 ) == '/' ) + { + // All good! + return; + } + else if ( tag->at( tag->length() - 1 ) == '>' ) + { + // There is more. Could be: + // text + // closing tag + // another node. + for ( ;; ) + { + StreamWhiteSpace( in, tag ); + + // Do we have text? + if ( in->peek() != '<' ) + { + // Yep, text. + TiXmlText text( "" ); + text.StreamIn( in, tag ); + + // What follows text is a closing tag or another node. + // Go around again and figure it out. + continue; + } + + // We now have either a closing tag...or another node. + // We should be at a "<", regardless. + if ( !in->good() ) return; + assert( in->peek() == '<' ); + int tagIndex = tag->length(); + + bool closingTag = false; + bool firstCharFound = false; + + for( ;; ) + { + if ( !in->good() ) + return; + + int c = in->peek(); + + if ( c == '>' ) + break; + + *tag += c; + in->get(); + + if ( !firstCharFound && c != '<' && !IsWhiteSpace( c ) ) + { + firstCharFound = true; + if ( c == '/' ) + closingTag = true; + } + } + // If it was a closing tag, then read in the closing '>' to clean up the input stream. + // If it was not, the streaming will be done by the tag. + if ( closingTag ) + { + int c = in->get(); + assert( c == '>' ); + *tag += c; + + // We are done, once we've found our closing tag. + return; + } + else + { + // If not a closing tag, id it, and stream. + const char* tagloc = tag->c_str() + tagIndex; + TiXmlNode* node = Identify( tagloc ); + if ( !node ) + return; + node->StreamIn( in, tag ); + delete node; + node = 0; + + // No return: go around from the beginning: text, closing tag, or node. + } + } + } +} + + +const char* TiXmlElement::Parse( const char* p ) +{ + p = SkipWhiteSpace( p ); + TiXmlDocument* document = GetDocument(); + + if ( !p || !*p || *p != '<' ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT ); + return false; + } + + p = SkipWhiteSpace( p+1 ); + + // Read the name. + p = ReadName( p, &value ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME ); + return false; + } + + string endTag = "</"; + endTag += value; + endTag += ">"; + + // Check for and read attributes. Also look for an empty + // tag or an end tag. + while ( p && *p ) + { + p = SkipWhiteSpace( p ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + if ( *p == '/' ) + { + ++p; + // Empty tag. + if ( *p != '>' ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_EMPTY ); + return 0; + } + return (p+1); + } + else if ( *p == '>' ) + { + // Done with attributes (if there were any.) + // Read the value -- which can include other + // elements -- read the end tag, and return. + ++p; + p = ReadValue( p ); // Note this is an Element method, and will set the error if one happens. + if ( !p || !*p ) + return 0; + + // We should find the end tag now + if ( StringEqual( p, endTag.c_str(), false ) ) + { + p += endTag.length(); + return p; + } + else + { + if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG ); + return 0; + } + } + else + { + // Try to read an element: + TiXmlAttribute attrib; + attrib.SetDocument( document ); + p = attrib.Parse( p ); + + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT ); + return 0; + } + SetAttribute( attrib.Name(), attrib.Value() ); + } + } + return p; +} + + +const char* TiXmlElement::ReadValue( const char* p ) +{ + TiXmlDocument* document = GetDocument(); + + // Read in text and elements in any order. + p = SkipWhiteSpace( p ); + while ( p && *p ) + { +// string text; +// while ( p && *p && *p != '<' ) +// { +// text += (*p); +// ++p; +// } +// +// p = SkipWhiteSpace( p ); + + if ( *p != '<' ) + { + // Take what we have, make a text element. + TiXmlText* textNode = new TiXmlText( "" ); + + if ( !textNode ) + { + if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY ); + return 0; + } + + p = textNode->Parse( p ); + + if ( !textNode->Blank() ) + LinkEndChild( textNode ); + else + delete textNode; + } + else + { + // We hit a '<' + // Have we hit a new element or an end tag? + if ( StringEqual( p, "</", false ) ) + { + return p; + } + else + { + TiXmlNode* node = Identify( p ); + if ( node ) + { + p = node->Parse( p ); + LinkEndChild( node ); + } + else + { + return 0; + } + } + } + p = SkipWhiteSpace( p ); + } + + if ( !p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ELEMENT_VALUE ); + } + return p; +} + + +void TiXmlUnknown::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->get(); + (*tag) += c; + + if ( c == '>' ) + { + // All is well. + return; + } + } +} + + +const char* TiXmlUnknown::Parse( const char* p ) +{ + TiXmlDocument* document = GetDocument(); + p = SkipWhiteSpace( p ); + if ( !p || !*p || *p != '<' ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_UNKNOWN ); + return 0; + } + ++p; + value = ""; + + while ( p && *p && *p != '>' ) + { + value += *p; + ++p; + } + + if ( !p ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_UNKNOWN ); + } + if ( *p == '>' ) + return p+1; + return p; +} + + +void TiXmlComment::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->get(); + (*tag) += c; + + if ( c == '>' + && tag->at( tag->length() - 2 ) == '-' + && tag->at( tag->length() - 3 ) == '-' ) + { + // All is well. + return; + } + } +} + + +const char* TiXmlComment::Parse( const char* p ) +{ + TiXmlDocument* document = GetDocument(); + value = ""; + + p = SkipWhiteSpace( p ); + const char* startTag = "<!--"; + const char* endTag = "-->"; + + if ( !StringEqual( p, startTag, false ) ) + { + document->SetError( TIXML_ERROR_PARSING_COMMENT ); + return 0; + } + p += strlen( startTag ); + p = ReadText( p, &value, false, endTag, false ); + return p; +} + + +const char* TiXmlAttribute::Parse( const char* p ) +{ + p = SkipWhiteSpace( p ); + if ( !p || !*p ) return 0; + + // Read the name, the '=' and the value. + p = ReadName( p, &name ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + p = SkipWhiteSpace( p ); + if ( !p || !*p || *p != '=' ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + + ++p; // skip '=' + p = SkipWhiteSpace( p ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + + const char* end; + + if ( *p == '\'' ) + { + ++p; + end = "\'"; + p = ReadText( p, &value, false, end, false ); + } + else if ( *p == '"' ) + { + ++p; + end = "\""; + p = ReadText( p, &value, false, end, false ); + } + else + { + // All attribute values should be in single or double quotes. + // But this is such a common error that the parser will try + // its best, even without them. + value = ""; + while ( p && *p // existence + && !isspace( *p ) && *p != '\n' && *p != '\r' // whitespace + && *p != '/' && *p != '>' ) // tag end + { + value += *p; + ++p; + } + } + return p; +} + + +void TiXmlText::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->peek(); + if ( c == '<' ) + return; + + (*tag) += c; + in->get(); + } +} + + + +const char* TiXmlText::Parse( const char* p ) +{ + value = ""; + + //TiXmlDocument* doc = GetDocument(); + bool ignoreWhite = true; +// if ( doc && !doc->IgnoreWhiteSpace() ) ignoreWhite = false; + + const char* end = "<"; + p = ReadText( p, &value, ignoreWhite, end, false ); + if ( p ) + return p-1; // don't truncate the '<' + return 0; +} + + +void TiXmlDeclaration::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->get(); + (*tag) += c; + + if ( c == '>' ) + { + // All is well. + return; + } + } +} + +const char* TiXmlDeclaration::Parse( const char* p ) +{ + p = SkipWhiteSpace( p ); + // Find the beginning, find the end, and look for + // the stuff in-between. + TiXmlDocument* document = GetDocument(); + if ( !p || !*p || !StringEqual( p, "<?xml", true ) ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_DECLARATION ); + return 0; + } + + p += 5; +// const char* start = p+5; +// const char* end = strstr( start, "?>" ); + + version = ""; + encoding = ""; + standalone = ""; + + while ( p && *p ) + { + if ( *p == '>' ) + { + ++p; + return p; + } + + p = SkipWhiteSpace( p ); + if ( StringEqual( p, "version", true ) ) + { +// p += 7; + TiXmlAttribute attrib; + p = attrib.Parse( p ); + version = attrib.Value(); + } + else if ( StringEqual( p, "encoding", true ) ) + { +// p += 8; + TiXmlAttribute attrib; + p = attrib.Parse( p ); + encoding = attrib.Value(); + } + else if ( StringEqual( p, "standalone", true ) ) + { +// p += 10; + TiXmlAttribute attrib; + p = attrib.Parse( p ); + standalone = attrib.Value(); + } + else + { + // Read over whatever it is. + while( p && *p && *p != '>' && !isspace( *p ) ) + ++p; + } + } + return 0; +} + +bool TiXmlText::Blank() const +{ + for ( unsigned i=0; i<value.size(); i++ ) + if ( !isspace( value[i] ) ) + return false; + return true; +} + diff --git a/lame-3.97/ACM/tinyxml/.svn/text-base/xmltest.cpp.svn-base b/lame-3.97/ACM/tinyxml/.svn/text-base/xmltest.cpp.svn-base new file mode 100644 index 0000000..7029ac8 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/.svn/text-base/xmltest.cpp.svn-base @@ -0,0 +1,326 @@ +#include "tinyxml.h" +#include <iostream> +#include <sstream> +#include <strstream> +using namespace std; + +int gPass = 0; +int gFail = 0; + +// Utility functions: +template< class T > +bool XmlTest( const char* testString, T expected, T found, bool noEcho = false ) +{ + if ( expected == found ) + cout << "[pass]"; + else + cout << "[fail]"; + + if ( noEcho ) + cout << " " << testString; + else + cout << " " << testString << " [" << expected << "][" << found << "]"; + cout << "\n"; + + bool pass = ( expected == found ); + if ( pass ) + ++gPass; + else + ++gFail; + return pass; +} + + +// +// This file demonstrates some basic functionality of TinyXml. +// Note that the example is very contrived. It presumes you know +// what is in the XML file. But it does test the basic operations, +// and show how to add and remove nodes. +// + +int main() +{ + // + // We start with the 'demoStart' todo list. Process it. And + // should hopefully end up with the todo list as illustrated. + // + const char* demoStart = + "<?xml version=\"1.0\" standalone='no' >\n" + "<!-- Our to do list data -->" + "<ToDo>\n" + "<!-- Do I need a secure PDA? -->\n" + "<Item priority=\"1\" distance='close'> Go to the <bold>Toy store!</bold></Item>" + "<Item priority=\"2\" distance='none'> Do bills </Item>" + "<Item priority=\"2\" distance='far & back'> Look for Evil Dinosaurs! </Item>" + "</ToDo>"; + + /* What the todo list should look like after processing. + In stream (no formatting) representation. */ + const char* demoEnd = + "<?xml version=\"1.0\" standalone=\"no\" ?>" + "<!-- Our to do list data -->" + "<ToDo>" + "<!-- Do I need a secure PDA? -->" + "<Item priority=\"2\" distance=\"close\">Go to the" + "<bold>Toy store!" + "</bold>" + "</Item>" + "<Item priority=\"1\" distance=\"far\">Talk to:" + "<Meeting where=\"School\">" + "<Attendee name=\"Marple\" position=\"teacher\" />" + "<Attendee name=\"Vo‚\" position=\"counselor\" />" + "</Meeting>" + "<Meeting where=\"Lunch\" />" + "</Item>" + "<Item priority=\"2\" distance=\"here\">Do bills" + "</Item>" + "</ToDo>"; + + // The example parses from the character string (above): + + { + // Write to a file and read it back, to check file I/O. + + TiXmlDocument doc( "demotest.xml" ); + doc.Parse( demoStart ); + + if ( doc.Error() ) + { + printf( "Error in %s: %s\n", doc.Value().c_str(), doc.ErrorDesc().c_str() ); + exit( 1 ); + } + doc.SaveFile(); + } + + TiXmlDocument doc( "demotest.xml" ); + bool loadOkay = doc.LoadFile(); + + if ( !loadOkay ) + { + printf( "Could not load test file 'demotest.xml'. Error='%s'. Exiting.\n", doc.ErrorDesc().c_str() ); + exit( 1 ); + } + + printf( "** Demo doc read from disk: ** \n\n" ); + doc.Print( stdout ); + + TiXmlNode* node = 0; + TiXmlElement* todoElement = 0; + TiXmlElement* itemElement = 0; + + + // -------------------------------------------------------- + // An example of changing existing attributes, and removing + // an element from the document. + // -------------------------------------------------------- + + // Get the "ToDo" element. + // It is a child of the document, and can be selected by name. + node = doc.FirstChild( "ToDo" ); + assert( node ); + todoElement = node->ToElement(); + assert( todoElement ); + + // Going to the toy store is now our second priority... + // So set the "priority" attribute of the first item in the list. + node = todoElement->FirstChildElement(); // This skips the "PDA" comment. + assert( node ); + itemElement = node->ToElement(); + assert( itemElement ); + itemElement->SetAttribute( "priority", 2 ); + + // Change the distance to "doing bills" from + // "none" to "here". It's the next sibling element. + itemElement = itemElement->NextSiblingElement(); + assert( itemElement ); + itemElement->SetAttribute( "distance", "here" ); + + // Remove the "Look for Evil Dinosours!" item. + // It is 1 more sibling away. We ask the parent to remove + // a particular child. + itemElement = itemElement->NextSiblingElement(); + todoElement->RemoveChild( itemElement ); + + itemElement = 0; + + // -------------------------------------------------------- + // What follows is an example of created elements and text + // nodes and adding them to the document. + // -------------------------------------------------------- + + // Add some meetings. + TiXmlElement item( "Item" ); + item.SetAttribute( "priority", "1" ); + item.SetAttribute( "distance", "far" ); + + TiXmlText text( "Talk to:" ); + + TiXmlElement meeting1( "Meeting" ); + meeting1.SetAttribute( "where", "School" ); + + TiXmlElement meeting2( "Meeting" ); + meeting2.SetAttribute( "where", "Lunch" ); + + TiXmlElement attendee1( "Attendee" ); + attendee1.SetAttribute( "name", "Marple" ); + attendee1.SetAttribute( "position", "teacher" ); + + TiXmlElement attendee2( "Attendee" ); + attendee2.SetAttribute( "name", "Vo‚" ); + attendee2.SetAttribute( "position", "counselor" ); + + // Assemble the nodes we've created: + meeting1.InsertEndChild( attendee1 ); + meeting1.InsertEndChild( attendee2 ); + + item.InsertEndChild( text ); + item.InsertEndChild( meeting1 ); + item.InsertEndChild( meeting2 ); + + // And add the node to the existing list after the first child. + node = todoElement->FirstChild( "Item" ); + assert( node ); + itemElement = node->ToElement(); + assert( itemElement ); + + todoElement->InsertAfterChild( itemElement, item ); + + printf( "\n** Demo doc processed: ** \n\n" ); + doc.Print( stdout ); + + printf( "** Demo doc processed to stream: ** \n\n" ); + cout << doc << endl << endl; + + // -------------------------------------------------------- + // Different tests...do we have what we expect? + // -------------------------------------------------------- + + int count = 0; + TiXmlElement* element; + + ////////////////////////////////////////////////////// + cout << "** Basic structure. **\n"; + ostringstream outputStream( ostringstream::out ); + outputStream << doc; + + XmlTest( "Output stream correct.", string( demoEnd ), outputStream.str(), true ); + + node = doc.RootElement(); + XmlTest( "Root element exists.", true, ( node != 0 && node->ToElement() ) ); + XmlTest( "Root element value is 'ToDo'.", string( "ToDo" ), node->Value() ); + node = node->FirstChild(); + XmlTest( "First child exists & is a comment.", true, ( node != 0 && node->ToComment() ) ); + node = node->NextSibling(); + XmlTest( "Sibling element exists & is an element.", true, ( node != 0 && node->ToElement() ) ); + XmlTest( "Value is 'Item'.", string( "Item" ), node->Value() ); + node = node->FirstChild(); + XmlTest( "First child exists.", true, ( node != 0 && node->ToText() ) ); + XmlTest( "Value is 'Go to the'.", string( "Go to the" ), node->Value() ); + + + ////////////////////////////////////////////////////// + cout << "\n** Iterators. **" << "\n"; + // Walk all the top level nodes of the document. + count = 0; + for( node = doc.FirstChild(); + node; + node = node->NextSibling() ) + { + count++; + } + XmlTest( "Top level nodes, using First / Next.", 3, count ); + + count = 0; + for( node = doc.LastChild(); + node; + node = node->PreviousSibling() ) + { + count++; + } + XmlTest( "Top level nodes, using Last / Previous.", 3, count ); + + // Walk all the top level nodes of the document, + // using a different sytax. + count = 0; + for( node = doc.IterateChildren( 0 ); + node; + node = doc.IterateChildren( node ) ) + { + count++; + } + XmlTest( "Top level nodes, using IterateChildren.", 3, count ); + + // Walk all the elements in a node. + count = 0; + for( element = todoElement->FirstChildElement(); + element; + element = element->NextSiblingElement() ) + { + count++; + } + XmlTest( "Children of the 'ToDo' element, using First / Next.", + 3, count ); + + // Walk all the elements in a node by value. + count = 0; + for( node = todoElement->FirstChild( "Item" ); + node; + node = node->NextSibling( "Item" ) ) + { + count++; + } + XmlTest( "'Item' children of the 'ToDo' element, using First/Next.", 3, count ); + + count = 0; + for( node = todoElement->LastChild( "Item" ); + node; + node = node->PreviousSibling( "Item" ) ) + { + count++; + } + XmlTest( "'Item' children of the 'ToDo' element, using Last/Previous.", 3, count ); + + + ////////////////////////////////////////////////////// + cout << "\n** Parsing. **\n"; + istringstream parse0( "<Element0 attribute0='foo0' attribute1= noquotes attribute2 = '>' />" ); + TiXmlElement element0( "default" ); + parse0 >> element0; + + XmlTest( "Element parsed, value is 'Element0'.", string( "Element0" ), element0.Value() ); + XmlTest( "Reads attribute 'attribute0=\"foo0\"'.", string( "foo0" ), *( element0.Attribute( "attribute0" ) ) ); + XmlTest( "Reads incorrectly formatted 'attribute1=noquotes'.", string( "noquotes" ), *( element0.Attribute( "attribute1" ) ) ); + XmlTest( "Read attribute with entity value '>'.", string( ">" ), *( element0.Attribute( "attribute2" ) ) ); + + ////////////////////////////////////////////////////// + cout << "\n** Streaming. **\n"; + + // Round trip check: stream in, then stream back out to verify. The stream + // out has already been checked, above. We use the output + + istringstream inputStringStream( outputStream.str() ); + TiXmlDocument document0; + + inputStringStream >> document0; + + ostringstream outputStream0( ostringstream::out ); + outputStream0 << document0; + + XmlTest( "Stream round trip correct.", string( demoEnd ), outputStream0.str(), true ); + + ////////////////////////////////////////////////////// + cout << "\n** Parsing, no Condense Whitespace **\n"; + TiXmlBase::SetCondenseWhiteSpace( false ); + + istringstream parse1( "<start>This is \ntext</start>" ); + TiXmlElement text1( "text" ); + parse1 >> text1; + + XmlTest( "Condense white space OFF.", string( "This is \ntext" ), + text1.FirstChild()->Value(), + true ); + + cout << endl << "Pass " << gPass << ", Fail " << gFail << endl; + return 0; +} + diff --git a/lame-3.97/ACM/tinyxml/Makefile.am b/lame-3.97/ACM/tinyxml/Makefile.am new file mode 100644 index 0000000..e0bd660 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/Makefile.am @@ -0,0 +1,20 @@ +## $Id: Makefile.am,v 1.2 2005/08/21 17:32:08 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + Makefile.tinyxml \ + changes.txt \ + dox \ + makedistlinux \ + makedistwin.bat \ + readme.txt \ + test.dsp \ + test.dsw \ + tinyxml.cpp \ + tinyxml.dsp \ + tinyxml_vc7.vcproj \ + tinyxml.h \ + tinyxmlerror.cpp \ + tinyxmlparser.cpp \ + xmltest.cpp diff --git a/lame-3.97/ACM/tinyxml/Makefile.in b/lame-3.97/ACM/tinyxml/Makefile.in new file mode 100644 index 0000000..cdd7cf6 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/Makefile.in @@ -0,0 +1,364 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = ACM/tinyxml +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + Makefile.tinyxml \ + changes.txt \ + dox \ + makedistlinux \ + makedistwin.bat \ + readme.txt \ + test.dsp \ + test.dsw \ + tinyxml.cpp \ + tinyxml.dsp \ + tinyxml_vc7.vcproj \ + tinyxml.h \ + tinyxmlerror.cpp \ + tinyxmlparser.cpp \ + xmltest.cpp + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ACM/tinyxml/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign ACM/tinyxml/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/../.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/ACM/tinyxml/Makefile.tinyxml b/lame-3.97/ACM/tinyxml/Makefile.tinyxml new file mode 100644 index 0000000..58f4693 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/Makefile.tinyxml @@ -0,0 +1,150 @@ +#**************************************************************************** +# +# Makefil for TinyXml test. +# Lee Thomason +# www.grinninglizard.com +# +# This is a GNU make (gmake) makefile +#**************************************************************************** + +# DEBUG can be set to YES to include debugging info, or NO otherwise +DEBUG := YES + +# PROFILE can be set to YES to include profiling info, or NO otherwise +PROFILE := NO + +#**************************************************************************** + +CC := gcc +CXX := g++ +LD := g++ +AR := ar rc +RANLIB := ranlib + +DEBUG_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -g -DDEBUG +RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-format -O2 + +LIBS := + +DEBUG_CXXFLAGS := ${DEBUG_CFLAGS} +RELEASE_CXXFLAGS := ${RELEASE_CFLAGS} + +DEBUG_LDFLAGS := -g +RELEASE_LDFLAGS := + +ifeq (YES, ${DEBUG}) + CFLAGS := ${DEBUG_CFLAGS} + CXXFLAGS := ${DEBUG_CXXFLAGS} + LDFLAGS := ${DEBUG_LDFLAGS} +else + CFLAGS := ${RELEASE_CFLAGS} + CXXFLAGS := ${RELEASE_CXXFLAGS} + LDFLAGS := ${RELEASE_LDFLAGS} +endif + +ifeq (YES, ${PROFILE}) + CFLAGS := ${CFLAGS} -pg + CXXFLAGS := ${CXXFLAGS} -pg + LDFLAGS := ${LDFLAGS} -pg +endif + +#**************************************************************************** +# Preprocessor directives +#**************************************************************************** + +ifeq (YES, ${PROFILE}) + DEFS := +else + DEFS := +endif + +#**************************************************************************** +# Include paths +#**************************************************************************** + +#INCS := -I/usr/include/g++-2 -I/usr/local/include +INCS := + + +#**************************************************************************** +# Makefile code common to all platforms +#**************************************************************************** + +CFLAGS := ${CFLAGS} ${DEFS} +CXXFLAGS := ${CXXFLAGS} ${DEFS} + +#**************************************************************************** +# Targets of the build +#**************************************************************************** + +OUTPUT := xmltest + +all: ${OUTPUT} + + +#**************************************************************************** +# Source files +#**************************************************************************** + +SRCS := tinyxml.cpp tinyxmlparser.cpp xmltest.cpp tinyxmlerror.cpp + +# Add on the sources for libraries +SRCS := ${SRCS} + +OBJS := $(addsuffix .o,$(basename ${SRCS})) + +#**************************************************************************** +# Output +#**************************************************************************** + +${OUTPUT}: ${OBJS} + ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} + +#**************************************************************************** +# common rules +#**************************************************************************** + +# Rules for compiling source files to object files +%.o : %.cpp + ${CXX} -c ${CXXFLAGS} ${INCS} $< -o $@ + +%.o : %.c + ${CC} -c ${CFLAGS} ${INCS} $< -o $@ + +clean: + -rm -f core ${OBJS} ${OUTPUT} + +depend: + makedepend ${INCS} ${SRCS} +# DO NOT DELETE + +tinyxml.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +tinyxml.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +tinyxml.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +tinyxml.o: /usr/include/bits/sched.h /usr/include/libio.h +tinyxml.o: /usr/include/_G_config.h /usr/include/wchar.h +tinyxml.o: /usr/include/bits/wchar.h /usr/include/gconv.h +tinyxml.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h +tinyxmlparser.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +tinyxmlparser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +tinyxmlparser.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +tinyxmlparser.o: /usr/include/bits/sched.h /usr/include/libio.h +tinyxmlparser.o: /usr/include/_G_config.h /usr/include/wchar.h +tinyxmlparser.o: /usr/include/bits/wchar.h /usr/include/gconv.h +tinyxmlparser.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h +tinyxmlparser.o: /usr/include/ctype.h /usr/include/endian.h +tinyxmlparser.o: /usr/include/bits/endian.h +xmltest.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +xmltest.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +xmltest.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +xmltest.o: /usr/include/bits/sched.h /usr/include/libio.h +xmltest.o: /usr/include/_G_config.h /usr/include/wchar.h +xmltest.o: /usr/include/bits/wchar.h /usr/include/gconv.h +xmltest.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h +tinyxmlerror.o: tinyxml.h /usr/include/stdio.h /usr/include/features.h +tinyxmlerror.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h +tinyxmlerror.o: /usr/include/bits/types.h /usr/include/bits/pthreadtypes.h +tinyxmlerror.o: /usr/include/bits/sched.h /usr/include/libio.h +tinyxmlerror.o: /usr/include/_G_config.h /usr/include/wchar.h +tinyxmlerror.o: /usr/include/bits/wchar.h /usr/include/gconv.h +tinyxmlerror.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h diff --git a/lame-3.97/ACM/tinyxml/changes.txt b/lame-3.97/ACM/tinyxml/changes.txt new file mode 100644 index 0000000..c0b4cf7 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/changes.txt @@ -0,0 +1,81 @@ +Changes in version 1.0.1: +- Fixed comment tags which were outputing as '<?--' instead of + the correct '<!--'. +- Implemented the Next and Prev methods of the TiXmlAttribute class. +- Renamed 'LastAttribtute' to 'LastAttribute' +- Fixed bad pointer to 'isspace' that could occur while parsing text. +- Errors finding beginning and end of tags no longer throw it into an + infinite loop. (Hopefully.) + +Changes in version 1.0.2 +- Minor documentation fixes. + +Changes in version 1.0.3 +- After nodes are added to a document, they return a pointer + to the new node instead of a bool for success. +- Elements can be constructed with a value, which is the + element name. Every element must have a value or it will be + invalid, but the code changes to enforce this are not fully + in place. + +Changes in version 1.1.0 +- Added the TiXmlAttributeSet class to pull the attributes into + a seperate container. +- Moved the doubly liked list out of XmlBase. Now XmlBase only + requires the Print() function and defines some utility functions. +- Moved errors into a seperate file. (With the idea of internationalization + to the other latin-1 languages.) +- Added the "NodeType" +- Fixed white space parsing in text to conform with the standard. + Basically, all white space becomes just one space. +- Added the TiXmlDeclaration class to read xml declarations. + +Changes in version 1.2.0 +- Removed the factory. The factory was not really in the spirit + of small and simple, confused the code, and was of limited value. +- Added FirstChildElement and NextSiblingElement, because they + are such common functions. +- Re-wrote the example to test and demonstrate more functionality. + +Changes in version 1.2.1 +- Fixed a bug where comments couldn't be inside elements. +- Loading now clears out existing XML rather than appending. +- Added the "Clear" method on a node to delete all its children. + +Changes in version 1.2.2 +- Fixed TiXmlAttribute::Previous actually returning "next." Thanks + to Rickard Troedsson for the bug fix. + +Changes in version 1.2.3 +- Added the TIXML prefix to the error strings to resolve conflicts + with #defines in OS headers. Thanks to Steve Lhomme. +- Fixed a delete buf that should be a delete [] buf. + Thanks to Ephi Sinowitz. + +Changes in version 1.2.4 +- ReplaceChild() was almost guarenteed to fail. Should be fixed, + thanks to Joe Smith. Joe also pointed out that the Print() functions + should take stream references: I agree, and would like to overload + the Print() method to take either format, but I don't want to do + this in a dot release. +- Some compilers seem to need an extra <ctype.h> include. Thanks + to Steve Lhomme for that. + +Changes in version 2.0.0 +- Made the ToXXX() casts safe if 'this' is null. + When "LoadFile" is called with a filename, the value will correctly get set. + Thanks to Brian Yoder. +- Fixed bug where isalpha() and isalnum() would get called with a negative value for + high ascii numbers. Thanks to Alesky Aksenov. +- Fixed some errors codes that were not getting set. +- Made methods "const" that were not. +- Added a switch to enable or disable the ignoring of white space. ( TiXmlDocument::SetIgnoreWhiteSpace() ) +- Greater standardization and code re-use in the parser. +- Added a stream out operator. +- Added a stream in operator. +- Entity support. + +TODO +CDATA. +Support for "generic entity" #xxx thing. + diff --git a/lame-3.97/ACM/tinyxml/dox b/lame-3.97/ACM/tinyxml/dox new file mode 100644 index 0000000..f431877 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/dox @@ -0,0 +1,708 @@ +# Doxyfile 1.2.2 + +# This file describes the settings to be used by doxygen for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = TinyXml + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = ./docs + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, +# Korean, Hungarian, Spanish, Romanian, Russian, Croatian, Polish, and +# Portuguese. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a class diagram (in Html and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. + +CLASS_DIAGRAMS = YES + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the Javadoc-style will +# behave just like the Qt-style comments. + +JAVADOC_AUTOBRIEF = YES + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# The ENABLE_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = . "readme.txt" + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +FILE_PATTERNS = *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = . + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using a WORD or other. +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Warning: This feature +# is still experimental and very incomplete. + +GENERATE_XML = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other +# documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to +# YES then doxygen will generate a graph for each documented header file showing +# the documented files that directly or indirectly include this file + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/lame-3.97/ACM/tinyxml/makedistlinux b/lame-3.97/ACM/tinyxml/makedistlinux new file mode 100644 index 0000000..eaff150 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/makedistlinux @@ -0,0 +1,34 @@ +echo "Making version: " +echo $1 +echo $2 +echo $3 + +rm ./docs/* + +doxygen dox +rm -rf ./tinyxml/* + +rm tinyxml_$1_$2_$3.zip +rm tinyxml_$1_$2_$3.tar.gz + +rmdir tinyxml +mkdir tinyxml + +cp readme.txt ./tinyxml +cp changes.txt ./tinyxml +cp Makefile ./tinyxml + +cp tinyxml.cpp tinyxml +cp tinyxmlerror.cpp tinyxml +cp tinyxmlparser.cpp tinyxml +cp xmltest.cpp tinyxml + +cp tinyxml.h tinyxml +cp tinyxml.dsp tinyxml + +mkdir ./tinyxml/docs +cp ./docs/* ./tinyxml/docs + +tar -zcf tinyxml_$1_$2_$3.tar.gz tinyxml +zip -r -q -9 tinyxml_$1_$2_$3.zip tinyxml + diff --git a/lame-3.97/ACM/tinyxml/makedistwin.bat b/lame-3.97/ACM/tinyxml/makedistwin.bat new file mode 100755 index 0000000..99a7b11 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/makedistwin.bat @@ -0,0 +1,19 @@ +del .\tinyxml_win\*.* +del .\docs\*.* + +doxygen dox +mkdir tinyxml_win + +copy readme.txt tinyxml_win +copy changes.txt tinyxml_win + +copy *.cpp tinyxml_win +copy *.h tinyxml_win +copy *.dsp tinyxml_win +copy test0.xml tinyxml_win +copy test1.xml tinyxml_win +copy test2.xml tinyxml_win + +mkdir .\tinyxml_win\docs +copy docs .\tinyxml_win\docs + diff --git a/lame-3.97/ACM/tinyxml/readme.txt b/lame-3.97/ACM/tinyxml/readme.txt new file mode 100644 index 0000000..c98c0f3 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/readme.txt @@ -0,0 +1,309 @@ +/** @mainpage + +<h1> TinyXml </h1> + +TinyXml is a simple, small, C++ XML parser that can be easily +integrating into other programs. + + +<h2> What it does. </h2> + +In brief, TinyXml parses an XML document, and builds from that a +Document Object Model that can be read, modified, and saved. + +XML stands for "eXtensible Markup Language." It allows you to create +your own document markups. Where HTML does a very good job of marking +documents for browsers, XML allows you to define any kind of document +markup, for example a document that describes a "to do" list for an +organizer application. XML is a very structured and convenient format. +All those random file formats created to store application data can +all be replaced with XML. One parser for everything. + +There are different ways to access and interact with XML data. +TinyXml uses a Document Object Model, meaning the XML data is parsed +into a tree objects that can be browsed and manipulated, and then +written back to disk. You can also construct an XML document from +scratch with C++ objects and write this to disk. + +TinyXml is designed to be easy and fast. It is one header and three cpp +files. Simply add these to your project and off you go. There is an +example to get you started. It is released under the ZLib license, +so you can use it in open source or commercial code. + +It attempts to be a flexible parser, but with truly correct and +compliant XML output (with the exception of the character set, +below.) TinyXml should compile on any reasonably C++ +system. It does not rely on exceptions or RTTI, and only uses the STL +string class. + + +<h2> What it doesn't do. </h2> + +It doesn�t parse or use DTDs (Document Type Definitions) or XSL�s +(eXtensible Stylesheet Language.) It is limited to the ASCII +character set. There are other parsers out there (check out +www.sourceforge.org, search for XML) that are much more fully +featured. But they are also much bigger, take longer to set up in +your project, have a higher learning curve, and often have a more +restrictive license. If you are working with browsers or have more +complete XML needs, TinyXml is not the parser for you. + + +<h2> Code Status. </h2> + +Currently in use, TinyXml is looking pretty stable. If you find +bugs, send them in and we'll get them straightened out as soon as possible. + +There are some areas of improvement; please check sourceforge if you are +interested in working on TinxXml. + + +<h2> Changes between version 1 and 2 </h2> + + +<h3> Entities </h3> +TinyXml recognizes the pre-defined "entity references", meaning special +characters. Namely: + +@verbatim + & & + < < + > > + " " + ' � +@endverbatim + +These are recognized when the XML document is read, and translated to there +ASCII equivalents. For instance, text with the XML of: + +@verbatim + Far & Away +@endverbatim + +will have the Value() of "Far & Away" when queried from the TiXmlText object, +but will be written back to the XML stream/file as an entitity. + +TiXml will ignore unknown entities and the +@verbatim +"&#x" +@endverbatim +entities, and leave them unprocessed. + + +<h3> Streams </h3> +TiXml has been modified to support both C (FILE) and C++ (operator <<,>>) +streams. There are some differences that you may need to be aware of. + +C style output: + - based on FILE* + - the Print() and SaveFile() methods + + Generates formatted output, with plenty of white space, intended to be as + human-readable as possible. They are very fast, and tolerant of ill formed + XML documents. For example, an XML document that contains 2 root elements + and 2 declarations, will print. + +C style input: + - based on FILE* + - the Parse() and LoadFile() methods + + A fast, tolerant read. Use whenever you don't need the C++ streams. + +C++ style ouput: + - based on std::ostream + - operator<< + + Generates condensed output, intended for network transmission rather than + readability. Depending on your system's implementation of the ostream class, + these may be somewhat slower. (Or may not.) Not tolerant of ill formed XML: + a document should contain the correct one root element. Additional root level + elements will not be streamed out. + +C++ style input: + - based on std::istream + - operator>> + + Reads XML from a stream, making it useful for network transmission. The tricky + part is knowing when the XML document is complete, since there will almost + certainly be other data in the stream. TinyXml will assume the XML data is + complete after it reads the root element. Also not that operator>> is somewhat + slower than Parse, due to both implementation of the STL and limitations of + TinyXml. + +<h3> White space </h3> +The world simply does not agree on whether white space should be kept, or condensed. +For example, pretend the '_' is a space, and look at "Hello____world". HTML, and +at least some XML parsers, will interpret this as "Hello_world". They condense white +space. Some XML parsers do not, and will leave it as "Hello____world". (Remember +to keep pretending the _ is a space.) + +It's an issue that hasn't been resolved to my satisfaction. TinyXml supports both +motifs. Call TiXmlBase::SetCondenseWhiteSpace( bool ) to set the desired behavior. +The default is to condense white space. + +If you change the default, you should call TiXmlBase::SetCondenseWhiteSpace( bool ) +before making any calls to Parse XML data, and I don't recommend changing it after +it has been set. + + +<h2> Using and Installing </h2> + +To Compile and Run xmltest: + +A Linux Makefile and a Windows Visual C++ .dsp file is provided. +Simply compile and run. It will write the file demotest.xml to your +disk and generate output on the screen. It also tests walking the +DOM by printing out the number of nodes found using different +techniques. + +The Linux makefile is very generic and will +probably run on other systems, but is only tested on Linux. You no +longer need to run 'make depend'. The dependecies have been +hard coded. + + +To Use in an Application: + +Add tinyxml.cpp, tinyxml.h, tinyxmlerror.cpp, and tinyxmlparser.cpp to your +project or make file. That's it! It should compile on any reasonably +compliant C++ system. You do not need to enable exceptions or +RTTI for TinyXml. + + +<h2> Where it may go. </h2> + +At this point, I'm focusing on tightening up remaining issues. +Bug fixes (though comfortably rare) and minor interface +corrections. + +There are some "it would be nice if..." items. I'll keep those +posted as tasks on SourceForge. (www.sourceforge.net/projects/tinyxml) + + +<h2> How TinyXml works. </h2> + +An example is probably the best way to go. Take: +@verbatim + <?xml version="1.0" standalone=�no�> + <?-- Our to do list data --> + <ToDo> + <Item priority="1"> Go to the <bold>Toy store!</bold></Item> + <Item priority="2"> Do bills</Item> + </ToDo> +@endverbatim + +It�s not much of a To Do list, but it will do. To read this file +(say "demo.xml") you would create a document, and parse it in: +@verbatim + TiXmlDocument doc( "demo.xml" ); + doc.LoadFile(); +@endverbatim + +And it�s ready to go. Now let�s look at some lines and how they +relate to the DOM. + +<?xml version="1.0" standalone=�no�> + + The first line is a declaration, and gets turned into the + TiXmlDeclaration class. It will be the first child of the + document node. + + This is the only directive/special tag parsed by by TinyXml. + Generally directive targs are stored in TiXmlUnknown so the + commands won�t be lost when it is saved back to disk. + +<?-- Our to do list data --> + + A comment. Will become a TiXmlComment object. + +<ToDo> + + The ToDo tag defines a TiXmlElement object. This one does not have + any attributes, but will contain 2 other elements, both of which + are items. + +<Item priority="1"> + + Creates another TiXmlElement which is a child of the "ToDo" element. + This element has 1 attribute, with the name �priority� and the value + �1�. + +Go to the + + A TiXmlText. This is a leaf node and cannot contain other nodes. + It is a child of the �Item" Element. + +<bold> + + Another TiXmlElement, this one a child of the "Item" element. + +Etc. + +Looking at the entire object tree, you end up with: +@verbatim +TiXmlDocument "demo.xml" + TiXmlDeclaration "version='1.0'" "standalone=�no�" + TiXmlComment " Our to do list data" + TiXmlElement "ToDo" + TiXmlElement "Item" Attribtutes: priority = 1 + TiXmlText "Go to the " + TiXmlElement "bold" + TiXmlText "Toy store!" + TiXmlElement "Item" Attributes: priority=2 + TiXmlText "bills" +@endverbatim + +<h2> Contributors </h2> + +Thanks very much to everyone who sends suggestions, bugs, ideas, and +encouragement. It all helps, and makes this project fun. A special thanks +to the contributors on the web pages that keep it lively. + +So many people have sent in bugs and ideas, that rather than list here I +try to give credit due in the "changes.txt" file. + +<h2> Documentation </h2> + +The documentation is build with Doxygen, using the 'dox' +configuration file. + +<h2> License </h2> + +TinyXml is released under the zlib license: + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + +<h2> References </h2> + +The World Wide Web Consortium is the definitive standard body for +XML, and there web pages contain huge amounts of information. I also +recommend "XML Pocket Reference" by Robert Eckstein and published by +O�Reilly. + +<h2> Contact Me: </h2> + +I�d appreciates your suggestions, and would love to know if you +use TinyXml. I hope you enjoy it and find it useful. Please post +questions, comments, file bugs, or contact me at: + +www.sourceforge.net/projects/tinyxml + +Lee Thomason +*/ diff --git a/lame-3.97/ACM/tinyxml/test.dsp b/lame-3.97/ACM/tinyxml/test.dsp new file mode 100644 index 0000000..ec6445f --- /dev/null +++ b/lame-3.97/ACM/tinyxml/test.dsp @@ -0,0 +1,95 @@ +# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 5.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=test - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "test.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "test - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "test - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "test - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "test - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "test___W" +# PROP BASE Intermediate_Dir "test___W" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "test___W" +# PROP Intermediate_Dir "test___W" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "test - Win32 Release" +# Name "test - Win32 Debug" +# Begin Source File + +SOURCE=.\demotest.xml +# End Source File +# Begin Source File + +SOURCE=.\smalltest.xml +# End Source File +# Begin Source File + +SOURCE=.\xmltest.cpp +# End Source File +# End Target +# End Project diff --git a/lame-3.97/ACM/tinyxml/test.dsw b/lame-3.97/ACM/tinyxml/test.dsw new file mode 100644 index 0000000..46bd976 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/test.dsw @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 5.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "test"=.\test.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name tinyxml + End Project Dependency +}}} + +############################################################################### + +Project: "tinyxml"=.\tinyxml.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/ACM/tinyxml/tinyxml.cpp b/lame-3.97/ACM/tinyxml/tinyxml.cpp new file mode 100644 index 0000000..981131e --- /dev/null +++ b/lame-3.97/ACM/tinyxml/tinyxml.cpp @@ -0,0 +1,1007 @@ +/* +Copyright (c) 2000 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include <iostream> +#include <sstream> +#include <fstream> +#include "tinyxml.h" +using namespace std; + + +bool TiXmlBase::condenseWhiteSpace = true; + + +void TiXmlBase::PutString( const std::string& str, std::ostream* stream ) +{ + // Scan for the all important '&' + unsigned int i=0, j=0; + + while ( i < str.length() ) + { + unsigned next = str.find( '&', i ); + + if ( next == string::npos ) + { + stream->write( &str.at( i ), str.length() - i ); + return; + } + + // We found an entity. + if ( next - i > 0 ) + stream->write( &str.at( i ), next - i ); + i = next; + + // Check for the special "&#x" entitity + if ( i < str.length() - 2 + && str[i] == '&' + && str[i+1] == '#' + && str[i+2] == 'x' ) + { + stream->put( str[i] ); + } + else + { + for ( j=0; j<NUM_ENTITY; ++j ) + { + if ( str[i] == entity[j].chr ) + { + stream->write( entity[j].str, entity[j].strLength ); + break; + } + } + if ( j == NUM_ENTITY ) + { + stream->put( str[i] ); + } + } + ++i; + } +} + + +TiXmlNode::TiXmlNode( NodeType _type ) +{ + parent = 0; + type = _type; + firstChild = 0; + lastChild = 0; + prev = 0; + next = 0; +} + + +TiXmlNode::~TiXmlNode() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } +} + + +void TiXmlNode::Clear() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } + + firstChild = 0; + lastChild = 0; +} + + +TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) +{ + node->parent = this; + + node->prev = lastChild; + node->next = 0; + + if ( lastChild ) + lastChild->next = node; + else + firstChild = node; // it was an empty list. + + lastChild = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) +{ + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + + return LinkEndChild( node ); +} + + +TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) +{ + if ( beforeThis->parent != this ) + return 0; + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->next = beforeThis; + node->prev = beforeThis->prev; + beforeThis->prev->next = node; + beforeThis->prev = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) +{ + if ( afterThis->parent != this ) + return 0; + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->prev = afterThis; + node->next = afterThis->next; + afterThis->next->prev = node; + afterThis->next = node; + return node; +} + + +TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) +{ + if ( replaceThis->parent != this ) + return 0; + + TiXmlNode* node = withThis.Clone(); + if ( !node ) + return 0; + + node->next = replaceThis->next; + node->prev = replaceThis->prev; + + if ( replaceThis->next ) + replaceThis->next->prev = node; + else + lastChild = node; + + if ( replaceThis->prev ) + replaceThis->prev->next = node; + else + firstChild = node; + + delete replaceThis; + node->parent = this; + return node; +} + + +bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) +{ + if ( removeThis->parent != this ) + { + assert( 0 ); + return false; + } + + if ( removeThis->next ) + removeThis->next->prev = removeThis->prev; + else + lastChild = removeThis->prev; + + if ( removeThis->prev ) + removeThis->prev->next = removeThis->next; + else + firstChild = removeThis->next; + + delete removeThis; + return true; +} + + +TiXmlNode* TiXmlNode::FirstChild( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = firstChild; node; node = node->next ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +TiXmlNode* TiXmlNode::LastChild( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = lastChild; node; node = node->prev ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +TiXmlNode* TiXmlNode::IterateChildren( TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild(); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling(); + } +} + + +TiXmlNode* TiXmlNode::IterateChildren( const std::string& val, TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild( val ); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling( val ); + } +} + + +TiXmlNode* TiXmlNode::NextSibling( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = next; node; node = node->next ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +TiXmlNode* TiXmlNode::PreviousSibling( const std::string& value ) const +{ + TiXmlNode* node; + for ( node = prev; node; node = node->prev ) + { + if ( node->Value() == value ) + return node; + } + return 0; +} + + +void TiXmlElement::RemoveAttribute( const std::string& name ) +{ + TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + { + attributeSet.Remove( node ); + delete node; + } +} + + +TiXmlElement* TiXmlNode::FirstChildElement() const +{ + TiXmlNode* node; + + for ( node = FirstChild(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +TiXmlElement* TiXmlNode::FirstChildElement( const std::string& value ) const +{ + TiXmlNode* node; + + for ( node = FirstChild( value ); + node; + node = node->NextSibling( value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +TiXmlElement* TiXmlNode::NextSiblingElement() const +{ + TiXmlNode* node; + + for ( node = NextSibling(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +TiXmlElement* TiXmlNode::NextSiblingElement( const std::string& value ) const +{ + TiXmlNode* node; + + for ( node = NextSibling( value ); + node; + node = node->NextSibling( value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + + +TiXmlDocument* TiXmlNode::GetDocument() const +{ + const TiXmlNode* node; + + for( node = this; node; node = node->parent ) + { + if ( node->ToDocument() ) + return node->ToDocument(); + } + return 0; +} + + +// TiXmlElement::TiXmlElement() +// : TiXmlNode( TiXmlNode::ELEMENT ) +// { +// } + +TiXmlElement::TiXmlElement( const std::string& _value ) + : TiXmlNode( TiXmlNode::ELEMENT ) +{ + firstChild = lastChild = 0; + value = _value; +} + +TiXmlElement::~TiXmlElement() +{ + while( attributeSet.First() ) + { + TiXmlAttribute* node = attributeSet.First(); + attributeSet.Remove( node ); + delete node; + } +} + +const std::string* TiXmlElement::Attribute( const std::string& name ) const +{ + TiXmlAttribute* node = attributeSet.Find( name ); + + if ( node ) + return &(node->Value() ); + + return 0; +} + + +const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const +{ + const std::string* s = Attribute( name ); + if ( s ) + *i = atoi( s->c_str() ); + else + *i = 0; + return s; +} + + +void TiXmlElement::SetAttribute( const std::string& name, int val ) +{ + char buf[64]; + sprintf( buf, "%d", val ); + + std::string v = buf; + + SetAttribute( name, v ); +} + + +void TiXmlElement::SetAttribute( const std::string& name, const std::string& value ) +{ + TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + { + node->SetValue( value ); + return; + } + + TiXmlAttribute* attrib = new TiXmlAttribute( name, value ); + if ( attrib ) + { + attributeSet.Add( attrib ); + } + else + { + TiXmlDocument* document = GetDocument(); + if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY ); + } +} + + +void TiXmlElement::Print( FILE* cfile, int depth ) const +{ + int i; + for ( i=0; i<depth; i++ ) + { + fprintf( cfile, " " ); + } + + fprintf( cfile, "<%s", value.c_str() ); + + TiXmlAttribute* attrib; + for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) + { + fprintf( cfile, " " ); + attrib->Print( cfile, depth ); + } + + // There are 3 different formatting approaches: + // 1) An element without children is printed as a <foo /> node + // 2) An element with only a text child is printed as <foo> text </foo> + // 3) An element with children is printed on multiple lines. + TiXmlNode* node; + if ( !firstChild ) + { + fprintf( cfile, " />" ); + } + else if ( firstChild == lastChild && firstChild->ToText() ) + { + fprintf( cfile, ">" ); + firstChild->Print( cfile, depth + 1 ); + fprintf( cfile, "</%s>", value.c_str() ); + } + else + { + fprintf( cfile, ">" ); + + for ( node = firstChild; node; node=node->NextSibling() ) + { + if ( !node->ToText() ) + { + fprintf( cfile, "\n" ); + } + node->Print( cfile, depth+1 ); + } + fprintf( cfile, "\n" ); + for( i=0; i<depth; ++i ) + fprintf( cfile, " " ); + fprintf( cfile, "</%s>", value.c_str() ); + } +} + + +void TiXmlElement::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<" << value; + + TiXmlAttribute* attrib; + for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() ) + { + (*stream) << " "; + attrib->StreamOut( stream ); + } + + // If this node has children, give it a closing tag. Else + // make it an empty tag. + TiXmlNode* node; + if ( firstChild ) + { + (*stream) << ">"; + + for ( node = firstChild; node; node=node->NextSibling() ) + { + node->StreamOut( stream ); + } + (*stream) << "</" << value << ">"; + } + else + { + (*stream) << " />"; + } +} + + +TiXmlNode* TiXmlElement::Clone() const +{ + TiXmlElement* clone = new TiXmlElement( Value() ); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + + // Clone the attributes, then clone the children. + TiXmlAttribute* attribute = 0; + for( attribute = attributeSet.First(); + attribute; + attribute = attribute->Next() ) + { + clone->SetAttribute( attribute->Name(), attribute->Value() ); + } + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + clone->LinkEndChild( node->Clone() ); + } + return clone; +} + + +TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT ) +{ + error = false; +// ignoreWhiteSpace = true; +} + + +TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) +{ +// ignoreWhiteSpace = true; + value = documentName; + error = false; +} + + +bool TiXmlDocument::LoadFile() +{ + return LoadFile( value ); +} + + +bool TiXmlDocument::SaveFile() const +{ + return SaveFile( value ); +} + + +bool TiXmlDocument::LoadFile( const std::string& filename ) +{ + // Delete the existing data: + Clear(); + value = filename; + + FILE* file = fopen( filename.c_str(), "r" ); + + if ( file ) + { + // Get the file size, so we can pre-allocate the string. HUGE speed impact. + long length = 0; + fseek( file, 0, SEEK_END ); + length = ftell( file ); + fseek( file, 0, SEEK_SET ); + + // If we have a file, assume it is all one big XML file, and read it in. + // The document parser may decide the document ends sooner than the entire file, however. + std::string data; + data.reserve( length ); + + const int BUF_SIZE = 2048; + char buf[BUF_SIZE]; + + while( fgets( buf, BUF_SIZE, file ) ) + { + data += buf; + } + fclose( file ); + + Parse( data.c_str() ); + if ( !Error() ) + { + return true; + } + } + SetError( TIXML_ERROR_OPENING_FILE ); + return false; +} + + +bool TiXmlDocument::SaveFile( const std::string& filename ) const +{ + // The old c stuff lives on... + FILE* fp = fopen( filename.c_str(), "w" ); + if ( fp ) + { + Print( fp, 0 ); + fclose( fp ); + return true; + } + return false; +} + + +TiXmlNode* TiXmlDocument::Clone() const +{ + TiXmlDocument* clone = new TiXmlDocument(); + if ( !clone ) + return 0; + + CopyToClone( clone ); + clone->error = error; + clone->errorDesc = errorDesc; + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + clone->LinkEndChild( node->Clone() ); + } + return clone; +} + + +void TiXmlDocument::Print( FILE* cfile, int depth ) const +{ + TiXmlNode* node; + for ( node=FirstChild(); node; node=node->NextSibling() ) + { + node->Print( cfile, depth ); + fprintf( cfile, "\n" ); + } +} + + +void TiXmlDocument::StreamOut( std::ostream* out ) const +{ + TiXmlNode* node; + for ( node=FirstChild(); node; node=node->NextSibling() ) + { + node->StreamOut( out ); + + // Special rule for streams: stop after the root element. + // The stream in code will only read one element, so don't + // write more than one. + if ( node->ToElement() ) + break; + } +} + + +TiXmlAttribute* TiXmlAttribute::Next() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( next->value.empty() && next->name.empty() ) + return 0; + return next; +} + + +TiXmlAttribute* TiXmlAttribute::Previous() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( prev->value.empty() && prev->name.empty() ) + return 0; + return prev; +} + + +void TiXmlAttribute::Print( FILE* cfile, int /*depth*/ ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 500 ); + + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlAttribute::StreamOut( std::ostream* stream ) const +{ + if ( value.find( '\"' ) != std::string::npos ) + { + PutString( name, stream ); + (*stream) << "=" << "'"; + PutString( value, stream ); + (*stream) << "'"; + } + else + { + PutString( name, stream ); + (*stream) << "=" << "\""; + PutString( value, stream ); + (*stream) << "\""; + } +} + + +void TiXmlAttribute::SetIntValue( int value ) +{ + std::string s; + std::ostringstream stream( s ); + stream << value; + SetValue( stream.str() ); +} + + +void TiXmlAttribute::SetDoubleValue( double value ) +{ + std::string s; + std::ostringstream stream( s ); + stream << value; + SetValue( stream.str() ); +} + + +const int TiXmlAttribute::IntValue() const +{ + int v; + std::istringstream string( value ); + string >> v; + return v; +} + + +const double TiXmlAttribute::DoubleValue() const +{ + double v; + std::istringstream string( value ); + string >> v; + return v; +} + + +void TiXmlComment::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 1000 ); + + for ( int i=0; i<depth; i++ ) + { + fprintf( cfile, " " ); + } + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlComment::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<!--"; + PutString( value, stream ); + (*stream) << "-->"; +} + + +TiXmlNode* TiXmlComment::Clone() const +{ + TiXmlComment* clone = new TiXmlComment(); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + return clone; +} + + +void TiXmlText::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 1000 ); + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlText::StreamOut( std::ostream* stream ) const +{ + PutString( value, stream ); +} + + +TiXmlNode* TiXmlText::Clone() const +{ + TiXmlText* clone = 0; + clone = new TiXmlText( "" ); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + return clone; +} + + +TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, + const std::string& _encoding, + const std::string& _standalone ) + : TiXmlNode( TiXmlNode::DECLARATION ) +{ + version = _version; + encoding = _encoding; + standalone = _standalone; +} + + +void TiXmlDeclaration::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 200 ); + StreamOut( &stream ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlDeclaration::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<?xml "; + + if ( !version.empty() ) + { + (*stream) << "version=\""; + PutString( version, stream ); + (*stream) << "\" "; + } + if ( !encoding.empty() ) + { + (*stream) << "encoding=\""; + PutString( encoding, stream ); + (*stream ) << "\" "; + } + if ( !standalone.empty() ) + { + (*stream) << "standalone=\""; + PutString( standalone, stream ); + (*stream) << "\" "; + } + (*stream) << "?>"; +} + + +TiXmlNode* TiXmlDeclaration::Clone() const +{ + TiXmlDeclaration* clone = new TiXmlDeclaration(); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + clone->version = version; + clone->encoding = encoding; + clone->standalone = standalone; + return clone; +} + + +void TiXmlUnknown::Print( FILE* cfile, int depth ) const +{ + ostringstream stream( ostringstream::out ); + stream.str().reserve( 200 ); + StreamOut( &stream ); + + for ( int i=0; i<depth; i++ ) + fprintf( cfile, " " ); + fprintf( cfile, "%s", stream.str().c_str() ); +} + + +void TiXmlUnknown::StreamOut( std::ostream* stream ) const +{ + (*stream) << "<" << value << ">"; // Don't use entities hear! It is unknown. +} + + +TiXmlNode* TiXmlUnknown::Clone() const +{ + TiXmlUnknown* clone = new TiXmlUnknown(); + + if ( !clone ) + return 0; + + CopyToClone( clone ); + return clone; +} + + +TiXmlAttributeSet::TiXmlAttributeSet() +{ + sentinel.next = &sentinel; + sentinel.prev = &sentinel; +} + + +TiXmlAttributeSet::~TiXmlAttributeSet() +{ + assert( sentinel.next == &sentinel ); + assert( sentinel.prev == &sentinel ); +} + + +void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) +{ + assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. + + addMe->next = &sentinel; + addMe->prev = sentinel.prev; + + sentinel.prev->next = addMe; + sentinel.prev = addMe; +} + +void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) +{ + TiXmlAttribute* node; + + for( node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node == removeMe ) + { + node->prev->next = node->next; + node->next->prev = node->prev; + node->next = 0; + node->prev = 0; + return; + } + } + assert( 0 ); // we tried to remove a non-linked attribute. +} + + +TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const +{ + TiXmlAttribute* node; + + for( node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node->Name() == name ) + return node; + } + return 0; +} + diff --git a/lame-3.97/ACM/tinyxml/tinyxml.dsp b/lame-3.97/ACM/tinyxml/tinyxml.dsp new file mode 100644 index 0000000..56b78dc --- /dev/null +++ b/lame-3.97/ACM/tinyxml/tinyxml.dsp @@ -0,0 +1,109 @@ +# Microsoft Developer Studio Project File - Name="tinyxml" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=tinyxml - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "tinyxml.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "tinyxml.mak" CFG="tinyxml - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "tinyxml - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "tinyxml - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "tinyxml - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "tinyxml - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "tinyxml - Win32 Release" +# Name "tinyxml - Win32 Debug" +# Begin Source File + +SOURCE=.\changes.txt +# End Source File +# Begin Source File + +SOURCE=.\readme.txt +# End Source File +# Begin Source File + +SOURCE=.\tinyxml.cpp +# End Source File +# Begin Source File + +SOURCE=.\tinyxml.h +# End Source File +# Begin Source File + +SOURCE=.\tinyxmlerror.cpp +# End Source File +# Begin Source File + +SOURCE=.\tinyxmlparser.cpp +# End Source File +# End Target +# End Project diff --git a/lame-3.97/ACM/tinyxml/tinyxml.h b/lame-3.97/ACM/tinyxml/tinyxml.h new file mode 100644 index 0000000..b9f1205 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/tinyxml.h @@ -0,0 +1,804 @@ +/* +Copyright (c) 2000 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + + +#ifndef TINYXML_INCLUDED +#define TINYXML_INCLUDED + +#pragma warning( disable : 4530 ) +#pragma warning( disable : 4786 ) + +#include <string> +#include <stdio.h> +#include <assert.h> + +class TiXmlDocument; +class TiXmlElement; +class TiXmlComment; +class TiXmlUnknown; +class TiXmlAttribute; +class TiXmlText; +class TiXmlDeclaration; + + +// Help out windows: +#if defined( _DEBUG ) && !defined( DEBUG ) + #define DEBUG +#endif + +#if defined( DEBUG ) && defined( _MSC_VER ) + #include <windows.h> + #define TIXML_LOG OutputDebugString +#else + #define TIXML_LOG printf +#endif + + +/** TiXmlBase is a base class for every class in TinyXml. + It does little except to establish that TinyXml classes + can be printed and provide some utility functions. + + In XML, the document and elements can contain + other elements and other types of nodes. + + @verbatim + A Document can contain: Element (container or leaf) + Comment (leaf) + Unknown (leaf) + Declaration( leaf ) + + An Element can contain: Element (container or leaf) + Text (leaf) + Attributes (not on tree) + Comment (leaf) + Unknown (leaf) + + A Decleration contains: Attributes (not on tree) + @endverbatim +*/ +class TiXmlBase +{ + friend class TiXmlNode; + friend class TiXmlElement; + friend class TiXmlDocument; + + public: + TiXmlBase() {} + virtual ~TiXmlBase() {} + + /** All TinyXml classes can print themselves to a filestream. + This is a formatted print, and will insert tabs and newlines. + + (For an unformatted stream, use the << operator.) + */ + virtual void Print( FILE* cfile, int depth ) const = 0; + + // [internal] Underlying implementation of the operator << + virtual void StreamOut ( std::ostream* out ) const = 0; + + /** The world does not agree on whether white space should be kept or + not. In order to make everyone happy, these global, static functions + are provided to set whether or not TinyXml will condense all white space + into a single space or not. The default is to condense. Note changing these + values is not thread safe. + */ + static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } + + /// Return the current white space setting. + static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } + + protected: + static const char* SkipWhiteSpace( const char* ); + static bool StreamWhiteSpace( std::istream* in, std::string* tag ); + static bool IsWhiteSpace( int c ) { return ( isspace( c ) || c == '\n' || c == '\r' ); } + + /* Read to the specified character. + Returns true if the character found and no error. + */ + static bool StreamTo( std::istream* in, int character, std::string* tag ); + + /* Reads an XML name into the string provided. Returns + a pointer just past the last character of the name, + or 0 if the function has an error. + */ + static const char* ReadName( const char*, std::string* name ); + + /* Reads text. Returns a pointer past the given end tag. + Wickedly complex options, but it keeps the (sensitive) code in one place. + */ + static const char* ReadText( const char* in, // where to start + std::string* text, // the string read + bool ignoreWhiteSpace, // whether to keep the white space + const char* endTag, // what ends this text + bool ignoreCase ); // whether to ignore case in the end tag + + virtual const char* Parse( const char* p ) = 0; + + // If an entity has been found, transform it into a character. + static const char* GetEntity( const char* in, char* value ); + + // Get a character, while interpreting entities. + inline static const char* GetChar( const char* p, char* value ) + { + assert( p ); + if ( *p == '&' ) + { + return GetEntity( p, value ); + } + else + { + *value = *p; + return p+1; + } + } + + // Puts a string to a stream, expanding entities as it goes. + // Note this should not contian the '<', '>', etc, or they will be transformed into entities! + static void PutString( const std::string& str, std::ostream* stream ); + + // Return true if the next characters in the stream are any of the endTag sequences. + bool static StringEqual( const char* p, + const char* endTag, + bool ignoreCase ); + + + enum + { + TIXML_NO_ERROR = 0, + TIXML_ERROR, + TIXML_ERROR_OPENING_FILE, + TIXML_ERROR_OUT_OF_MEMORY, + TIXML_ERROR_PARSING_ELEMENT, + TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, + TIXML_ERROR_READING_ELEMENT_VALUE, + TIXML_ERROR_READING_ATTRIBUTES, + TIXML_ERROR_PARSING_EMPTY, + TIXML_ERROR_READING_END_TAG, + TIXML_ERROR_PARSING_UNKNOWN, + TIXML_ERROR_PARSING_COMMENT, + TIXML_ERROR_PARSING_DECLARATION, + TIXML_ERROR_DOCUMENT_EMPTY, + + TIXML_ERROR_STRING_COUNT + }; + static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; + + private: + struct Entity + { + const char* str; + unsigned int strLength; + int chr; + }; + enum + { + NUM_ENTITY = 5, + MAX_ENTITY_LENGTH = 6 + + }; + static Entity entity[ NUM_ENTITY ]; + static bool condenseWhiteSpace; +}; + + +/** The parent class for everything in the Document Object Model. + (Except for attributes, which are contained in elements.) + Nodes have siblings, a parent, and children. A node can be + in a document, or stand on its own. The type of a TiXmlNode + can be queried, and it can be cast to its more defined type. +*/ +class TiXmlNode : public TiXmlBase +{ + public: + + /** An output stream operator, for every class. Note that this outputs + without any newlines or formatting, as opposed to Print(), which + includes tabs and new lines. + + The operator<< and operator>> are not completely symmetric. Writing + a node to a stream is very well defined. You'll get a nice stream + of output, without any extra whitespace or newlines. + + But reading is not as well defined. (As it always is.) If you create + a TiXmlElement (for example) and read that from an input stream, + the text needs to define an element or junk will result. This is + true of all input streams, but it's worth keeping in mind. + + A TiXmlDocument will read nodes until it reads a root element. + */ + friend std::ostream& operator<< ( std::ostream& out, const TiXmlNode& base ) + { + base.StreamOut( &out ); + return out; + } + + /** An input stream operator, for every class. Tolerant of newlines and + formatting, but doesn't expect them. + */ + friend std::istream& operator>> ( std::istream& in, TiXmlNode& base ) + { + std::string tag; + tag.reserve( 8 * 1000 ); + base.StreamIn( &in, &tag ); + + base.Parse( tag.c_str() ); + return in; + } + + /** The types of XML nodes supported by TinyXml. (All the + unsupported types are picked up by UNKNOWN.) + */ + enum NodeType + { + DOCUMENT, + ELEMENT, + COMMENT, + UNKNOWN, + TEXT, + DECLARATION, + TYPECOUNT + }; + + virtual ~TiXmlNode(); + + /** The meaning of 'value' changes for the specific type of + TiXmlNode. + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + + The subclasses will wrap this function. + */ + const std::string& Value() const { return value; } + + /** Changes the value of the node. Defined as: + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + */ + void SetValue( const std::string& _value ) { value = _value; } + + /// Delete all the children of this node. Does not affect 'this'. + void Clear(); + + /// One step up the DOM. + TiXmlNode* Parent() const { return parent; } + + TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. + TiXmlNode* FirstChild( const std::string& value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. + + TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. + TiXmlNode* LastChild( const std::string& value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. + + /** An alternate way to walk the children of a node. + One way to iterate over nodes is: + @verbatim + for( child = parent->FirstChild(); child; child = child->NextSibling() ) + @endverbatim + + IterateChildren does the same thing with the syntax: + @verbatim + child = 0; + while( child = parent->IterateChildren( child ) ) + @endverbatim + + IterateChildren takes the previous child as input and finds + the next one. If the previous child is null, it returns the + first. IterateChildren will return null when done. + */ + TiXmlNode* IterateChildren( TiXmlNode* previous ) const; + + /// This flavor of IterateChildren searches for children with a particular 'value' + TiXmlNode* IterateChildren( const std::string& value, TiXmlNode* previous ) const; + + /** Add a new node related to this. Adds a child past the LastChild. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); + + /** Add a new node related to this. Adds a child before the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); + + /** Add a new node related to this. Adds a child after the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); + + /** Replace a child of this node. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); + + /// Delete a child of this node. + bool RemoveChild( TiXmlNode* removeThis ); + + /// Navigate to a sibling node. + TiXmlNode* PreviousSibling() const { return prev; } + + /// Navigate to a sibling node. + TiXmlNode* PreviousSibling( const std::string& ) const; + + /// Navigate to a sibling node. + TiXmlNode* NextSibling() const { return next; } + + /// Navigate to a sibling node with the given 'value'. + TiXmlNode* NextSibling( const std::string& ) const; + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + TiXmlElement* NextSiblingElement() const; + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + TiXmlElement* NextSiblingElement( const std::string& ) const; + + /// Convenience function to get through elements. + TiXmlElement* FirstChildElement() const; + + /// Convenience function to get through elements. + TiXmlElement* FirstChildElement( const std::string& value ) const; + + /// Query the type (as an enumerated value, above) of this node. + virtual int Type() const { return type; } + + /** Return a pointer to the Document this node lives in. + Returns null if not in a document. + */ + TiXmlDocument* GetDocument() const; + + /// Returns true if this node has no children. + bool NoChildren() const { return !firstChild; } + + TiXmlDocument* ToDocument() const { return ( this && type == DOCUMENT ) ? (TiXmlDocument*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlElement* ToElement() const { return ( this && type == ELEMENT ) ? (TiXmlElement*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlComment* ToComment() const { return ( this && type == COMMENT ) ? (TiXmlComment*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlUnknown* ToUnknown() const { return ( this && type == UNKNOWN ) ? (TiXmlUnknown*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlText* ToText() const { return ( this && type == TEXT ) ? (TiXmlText*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + TiXmlDeclaration* ToDeclaration() const { return ( this && type == DECLARATION ) ? (TiXmlDeclaration*) this : 0; } ///< Cast to a more defined type. Will return null not of the requested type. + + virtual TiXmlNode* Clone() const = 0; + + // The real work of the input operator. + virtual void StreamIn( std::istream* in, std::string* tag ) = 0; + + protected: + TiXmlNode( NodeType type ); + + // The node is passed in by ownership. This object will delete it. + TiXmlNode* LinkEndChild( TiXmlNode* addThis ); + + // Figure out what is at *p, and parse it. Returns null if it is not an xml node. + TiXmlNode* Identify( const char* start ); + + void CopyToClone( TiXmlNode* target ) const { target->value = value; } + + TiXmlNode* parent; + NodeType type; + + TiXmlNode* firstChild; + TiXmlNode* lastChild; + + std::string value; + + TiXmlNode* prev; + TiXmlNode* next; +}; + + +/** An attribute is a name-value pair. Elements have an arbitrary + number of attributes, each with a unique name. + + @note The attributes are not TiXmlNodes, since they are not + part of the tinyXML document object model. There are other + suggested ways to look at this problem. + + @note Attributes have a parent +*/ +class TiXmlAttribute : public TiXmlBase +{ + friend class TiXmlAttributeSet; + + public: + /// Construct an empty attribute. + TiXmlAttribute() : prev( 0 ), next( 0 ) {} + + /// Construct an attribute with a name and value. + TiXmlAttribute( const std::string& _name, const std::string& _value ) : name( _name ), value( _value ), prev( 0 ), next( 0 ) {} + + const std::string& Name() const { return name; } ///< Return the name of this attribute. + + const std::string& Value() const { return value; } ///< Return the value of this attribute. + const int IntValue() const; ///< Return the value of this attribute, converted to an integer. + const double DoubleValue() const; ///< Return the value of this attribute, converted to a double. + + void SetName( const std::string& _name ) { name = _name; } ///< Set the name of this attribute. + void SetValue( const std::string& _value ) { value = _value; } ///< Set the value. + void SetIntValue( int value ); ///< Set the value from an integer. + void SetDoubleValue( double value ); ///< Set the value from a double. + + /// Get the next sibling attribute in the DOM. Returns null at end. + TiXmlAttribute* Next() const; + /// Get the previous sibling attribute in the DOM. Returns null at beginning. + TiXmlAttribute* Previous() const; + + bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } + bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } + bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } + + /* [internal use] + Attribtue parsing starts: first letter of the name + returns: the next char after the value end quote + */ + virtual const char* Parse( const char* p ); + + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + + // [internal use] + virtual void StreamOut( std::ostream* out ) const; + + // [internal use] + // Set the document pointer so the attribute can report errors. + void SetDocument( TiXmlDocument* doc ) { document = doc; } + + private: + TiXmlDocument* document; // A pointer back to a document, for error reporting. + std::string name; + std::string value; + + TiXmlAttribute* prev; + TiXmlAttribute* next; +}; + + +/* A class used to manage a group of attributes. + It is only used internally, both by the ELEMENT and the DECLARATION. + + The set can be changed transparent to the Element and Declaration + classes that use it, but NOT transparent to the Attribute + which has to implement a next() and previous() method. Which makes + it a bit problematic and prevents the use of STL. + + This version is implemented with circular lists because: + - I like circular lists + - it demonstrates some independence from the (typical) doubly linked list. +*/ +class TiXmlAttributeSet +{ + public: + TiXmlAttributeSet(); + ~TiXmlAttributeSet(); + + void Add( TiXmlAttribute* attribute ); + void Remove( TiXmlAttribute* attribute ); + + TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } + TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } + + TiXmlAttribute* Find( const std::string& name ) const; + + private: + TiXmlAttribute sentinel; +}; + + +/** The element is a container class. It has a value, the element name, + and can contain other elements, text, comments, and unknowns. + Elements also contain an arbitrary number of attributes. +*/ +class TiXmlElement : public TiXmlNode +{ + public: + /// Construct an element. + TiXmlElement( const std::string& value ); + + virtual ~TiXmlElement(); + + /** Given an attribute name, attribute returns the value + for the attribute of that name, or null if none exists. + */ + const std::string* Attribute( const std::string& name ) const; + + /** Given an attribute name, attribute returns the value + for the attribute of that name, or null if none exists. + */ + const std::string* Attribute( const std::string& name, int* i ) const; + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const std::string& name, + const std::string& value ); + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const std::string& name, + int value ); + + /** Deletes an attribute with the given name. + */ + void RemoveAttribute( const std::string& name ); + + TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. + TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. + + // [internal use] Creates a new Element and returs it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + /* [internal use] + Attribtue parsing starts: next char past '<' + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); + + /* [internal use] + Reads the "value" of the element -- another element, or text. + This should terminate with the current end tag. + */ + const char* ReadValue( const char* in ); + bool ReadValue( std::istream* in ); + + private: + TiXmlAttributeSet attributeSet; +}; + + +/** An XML comment. +*/ +class TiXmlComment : public TiXmlNode +{ + public: + /// Constructs an empty comment. + TiXmlComment() : TiXmlNode( TiXmlNode::COMMENT ) {} + virtual ~TiXmlComment() {} + + // [internal use] Creates a new Element and returs it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + /* [internal use] + Attribtue parsing starts: at the ! of the !-- + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); +}; + + +/** XML text. Contained in an element. +*/ +class TiXmlText : public TiXmlNode +{ + public: + TiXmlText( const std::string& initValue ) : TiXmlNode( TiXmlNode::TEXT ) { SetValue( initValue ); } + virtual ~TiXmlText() {} + + + // [internal use] Creates a new Element and returns it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + bool Blank() const; // returns true if all white space and new lines + /* [internal use] + Attribtue parsing starts: First char of the text + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); +}; + + +/** In correct XML the declaration is the first entry in the file. + @verbatim + <?xml version="1.0" standalone="yes"?> + @endverbatim + + TinyXml will happily read or write files without a declaration, + however. There are 3 possible attributes to the declaration: + version, encoding, and standalone. + + Note: In this version of the code, the attributes are + handled as special cases, not generic attributes, simply + because there can only be at most 3 and they are always the same. +*/ +class TiXmlDeclaration : public TiXmlNode +{ + public: + /// Construct an empty declaration. + TiXmlDeclaration() : TiXmlNode( TiXmlNode::DECLARATION ) {} + + /// Construct. + TiXmlDeclaration( const std::string& version, + const std::string& encoding, + const std::string& standalone ); + + virtual ~TiXmlDeclaration() {} + + /// Version. Will return empty if none was found. + const std::string& Version() const { return version; } + /// Encoding. Will return empty if none was found. + const std::string& Encoding() const { return encoding; } + /// Is this a standalone document? + const std::string& Standalone() const { return standalone; } + + // [internal use] Creates a new Element and returs it. + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + // [internal use] + // Attribtue parsing starts: next char past '<' + // returns: next char past '>' + + virtual const char* Parse( const char* p ); + + private: + std::string version; + std::string encoding; + std::string standalone; +}; + + +/** Any tag that tinyXml doesn't recognize is save as an + unknown. It is a tag of text, but should not be modified. + It will be written back to the XML, unchanged, when the file + is saved. +*/ +class TiXmlUnknown : public TiXmlNode +{ + public: + TiXmlUnknown() : TiXmlNode( TiXmlNode::UNKNOWN ) {} + virtual ~TiXmlUnknown() {} + + // [internal use] + virtual TiXmlNode* Clone() const; + // [internal use] + virtual void Print( FILE* cfile, int depth ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + /* [internal use] + Attribute parsing starts: First char of the text + returns: next char past '>' + */ + virtual const char* Parse( const char* p ); +}; + + +/** Always the top level node. A document binds together all the + XML pieces. It can be saved, loaded, and printed to the screen. + The 'value' of a document node is the xml file name. +*/ +class TiXmlDocument : public TiXmlNode +{ + public: + /// Create an empty document, that has no name. + TiXmlDocument(); + /// Create a document with a name. The name of the document is also the filename of the xml. + TiXmlDocument( const std::string& documentName ); + + virtual ~TiXmlDocument() {} + + /** Load a file using the current document value. + Returns true if successful. Will delete any existing + document data before loading. + */ + bool LoadFile(); + /// Save a file using the current document value. Returns true if successful. + bool SaveFile() const; + /// Load a file using the given filename. Returns true if successful. + bool LoadFile( const std::string& filename ); + /// Save a file using the given filename. Returns true if successful. + bool SaveFile( const std::string& filename ) const; + + /// Parse the given null terminated block of xml data. + virtual const char* Parse( const char* p ); + + /** Get the root element -- the only top level element -- of the document. + In well formed XML, there should only be one. TinyXml is tolerant of + multiple elements at the document level. + */ + TiXmlElement* RootElement() const { return FirstChildElement(); } + + /// If, during parsing, a error occurs, Error will be set to true. + bool Error() const { return error; } + + /// Contains a textual (english) description of the error if one occurs. + const std::string& ErrorDesc() const { return errorDesc; } + + /** Generally, you probably want the error string ( ErrorDesc() ). But if you + prefer the ErrorId, this function will fetch it. + */ + const int ErrorId() const { return errorId; } + + /// If you have handled the error, it can be reset with this call. + void ClearError() { error = false; errorId = 0; errorDesc = ""; } + + /** Dump the document to standard out. */ + void Print() const { Print( stdout, 0 ); } + + // [internal use] + virtual void Print( FILE* cfile, int depth = 0 ) const; + // [internal use] + virtual void StreamOut ( std::ostream* out ) const; + // [internal use] + virtual TiXmlNode* Clone() const; + // [internal use] + void SetError( int err ) { assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); + error = true; + errorId = err; + errorDesc = errorString[ errorId ]; } + // [internal use] + virtual void StreamIn( std::istream* in, std::string* tag ); + + protected: + + private: + bool error; + int errorId; + std::string errorDesc; +}; + + + +#endif + diff --git a/lame-3.97/ACM/tinyxml/tinyxml_vc7.vcproj b/lame-3.97/ACM/tinyxml/tinyxml_vc7.vcproj new file mode 100644 index 0000000..9c7b686 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/tinyxml_vc7.vcproj @@ -0,0 +1,601 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="tinyxml" + ProjectGUID="{9A0946C9-F019-4643-A53A-259BF980F5F9}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/tinyxml.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/tinyxml.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/tinyxml.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Debug\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/tinyxml.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile=".\Release\tinyxml.lib"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="changes.txt"> + </File> + <File + RelativePath="readme.txt"> + </File> + <File + RelativePath="tinyxml.cpp"> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="tinyxml.h"> + </File> + <File + RelativePath="tinyxmlerror.cpp"> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="tinyxmlparser.cpp"> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/ACM/tinyxml/tinyxmlerror.cpp b/lame-3.97/ACM/tinyxml/tinyxmlerror.cpp new file mode 100644 index 0000000..11b9486 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/tinyxmlerror.cpp @@ -0,0 +1,26 @@ +#include "tinyxml.h" + +// The goal of the seperate error file is to make the first +// step towards localization. tinyxml (currently) only supports +// latin-1, but at least the error messages could now be translated. +// +// It also cleans up the code a bit. +// + +const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] = +{ + "No error", + "Error", + "Failed to open file", + "Memory allocation failed.", + "Error parsing Element.", + "Failed to read Element name", + "Error reading Element value.", + "Error reading Attributes.", + "Error: empty tag.", + "Error reading end tag.", + "Error parsing Unknown.", + "Error parsing Comment.", + "Error parsing Declaration.", + "Error document empty." +}; diff --git a/lame-3.97/ACM/tinyxml/tinyxmlparser.cpp b/lame-3.97/ACM/tinyxml/tinyxmlparser.cpp new file mode 100644 index 0000000..ef9b0c1 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/tinyxmlparser.cpp @@ -0,0 +1,928 @@ +/* +Copyright (c) 2000-2002 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include "tinyxml.h" +#include <ctype.h> +#include <strstream> +using namespace std; + +//#define DEBUG_PARSER + +TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = +{ + { "&", 5, '&' }, + { "<", 4, '<' }, + { ">", 4, '>' }, + { """, 6, '\"' }, + { "'", 6, '\'' } +}; + + +const char* TiXmlBase::SkipWhiteSpace( const char* p ) +{ + if ( !p || !*p ) + { + return 0; + } + while ( p && *p ) + { + if ( isspace( *p ) || *p == '\n' || *p =='\r' ) // Still using old rules for white space. + ++p; + else + break; + } + + return p; +} + + +/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream* in, std::string* tag ) +{ + for( ;; ) + { + if ( !in->good() ) return false; + + int c = in->peek(); + if ( !IsWhiteSpace( c ) ) + return true; + *tag += in->get(); + } +} + + +/*static*/ bool TiXmlBase::StreamTo( std::istream* in, int character, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->peek(); + if ( c == character ) + return true; + + in->get(); + *tag += c; + } + return false; +} + + +const char* TiXmlBase::ReadName( const char* p, string* name ) +{ + *name = ""; + assert( p ); + + // Names start with letters or underscores. + // After that, they can be letters, underscores, numbers, + // hyphens, or colons. (Colons are valid ony for namespaces, + // but tinyxml can't tell namespaces from names.) + if ( p && *p + && ( isalpha( (unsigned char) *p ) || *p == '_' ) ) + { + while( p && *p + && ( isalnum( (unsigned char ) *p ) + || *p == '_' + || *p == '-' + || *p == ':' ) ) + { + (*name) += *p; + ++p; + } + return p; + } + return 0; +} + + +const char* TiXmlBase::GetEntity( const char* p, char* value ) +{ + // Presume an entity, and pull it out. + string ent; + int i; + + // Ignore the &#x entities. + if ( strncmp( "&#x", p, 3 ) == 0 ) + { + *value = *p; + return p+1; + } + + // Now try to match it. + for( i=0; i<NUM_ENTITY; ++i ) + { + if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 ) + { + assert( strlen( entity[i].str ) == entity[i].strLength ); + *value = entity[i].chr; + return ( p + entity[i].strLength ); + } + } + + // So it wasn't an entity, its unrecognized, or something like that. + *value = *p; // Don't put back the last one, since we return it! + return p+1; +} + + +bool TiXmlBase::StringEqual( const char* p, + const char* tag, + bool ignoreCase ) +{ + assert( p ); + if ( !p || !*p ) + { + assert( 0 ); + return false; + } + + if ( tolower( *p ) == tolower( *tag ) ) + { + const char* q = p; + + if (ignoreCase) + { + while ( *q && *tag && *q == *tag ) + { + ++q; + ++tag; + } + + if ( *tag == 0 ) // Have we found the end of the tag, and everything equal? + { + return true; + } + } + else + { + while ( *q && *tag && tolower( *q ) == tolower( *tag ) ) + { + ++q; + ++tag; + } + + if ( *tag == 0 ) + { + return true; + } + } + } + return false; +} + + +const char* TiXmlBase::ReadText( const char* p, + string* text, + bool trimWhiteSpace, + const char* endTag, + bool caseInsensitive ) +{ + *text = ""; + + if ( !trimWhiteSpace // certain tags always keep whitespace + || !condenseWhiteSpace ) // if true, whitespace is always kept + { + // Keep all the white space. + while ( p && *p + && !StringEqual( p, endTag, caseInsensitive ) + ) + { + char c; + p = GetChar( p, &c ); + text->append( &c, 1 ); + } + } + else + { + bool whitespace = false; + + // Remove leading white space: + p = SkipWhiteSpace( p ); + while ( p && *p + && !StringEqual( p, endTag, caseInsensitive ) ) + { + if ( *p == '\r' || *p == '\n' ) + { + whitespace = true; + ++p; + } + else if ( isspace( *p ) ) + { + whitespace = true; + ++p; + } + else + { + // If we've found whitespace, add it before the + // new character. Any whitespace just becomes a space. + if ( whitespace ) + { + text->append( " ", 1 ); + whitespace = false; + } + char c; + p = GetChar( p, &c ); + text->append( &c, 1 ); + } + } + } + return p + strlen( endTag ); +} + + +void TiXmlDocument::StreamIn( std::istream* in, std::string* tag ) +{ + // The basic issue with a document is that we don't know what we're + // streaming. Read something presumed to be a tag (and hope), then + // identify it, and call the appropriate stream method on the tag. + // + // This "pre-streaming" will never read the closing ">" so the + // sub-tag can orient itself. + + if ( !StreamTo( in, '<', tag ) ) + { + SetError( TIXML_ERROR_PARSING_EMPTY ); + return; + } + + while ( in->good() ) + { + int tagIndex = tag->length(); + while ( in->good() && in->peek() != '>' ) + { + int c = in->get(); + (*tag) += (char) c; + } + + if ( in->good() ) + { + // We now have something we presume to be a node of + // some sort. Identify it, and call the node to + // continue streaming. + TiXmlNode* node = Identify( tag->c_str() + tagIndex ); + + if ( node ) + { + node->StreamIn( in, tag ); + bool isElement = node->ToElement() != 0; + delete node; + node = 0; + + // If this is the root element, we're done. Parsing will be + // done by the >> operator. + if ( isElement ) + { + return; + } + } + else + { + SetError( TIXML_ERROR ); + return; + } + } + } + // We should have returned sooner. + SetError( TIXML_ERROR ); +} + + +const char* TiXmlDocument::Parse( const char* p ) +{ + // Parse away, at the document level. Since a document + // contains nothing but other tags, most of what happens + // here is skipping white space. + // + // In this variant (as opposed to stream and Parse) we + // read everything we can. + + + if ( !p || !*p || !( p = SkipWhiteSpace( p ) ) ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY ); + return false; + } + + while ( p && *p ) + { + TiXmlNode* node = Identify( p ); + if ( node ) + { + p = node->Parse( p ); + LinkEndChild( node ); + } + else + { + break; + } + p = SkipWhiteSpace( p ); + } + // All is well. + return p; +} + + +TiXmlNode* TiXmlNode::Identify( const char* p ) +{ + TiXmlNode* returnNode = 0; + + p = SkipWhiteSpace( p ); + if( !p || !*p || *p != '<' ) + { + return 0; + } + + TiXmlDocument* doc = GetDocument(); + p = SkipWhiteSpace( p ); + + if ( !p || !*p ) + { + return 0; + } + + // What is this thing? + // - Elements start with a letter or underscore, but xml is reserved. + // - Comments: <!-- + // - Decleration: <?xml + // - Everthing else is unknown to tinyxml. + // + + const char* xmlHeader = { "<?xml" }; + const char* commentHeader = { "<!--" }; + + if ( StringEqual( p, xmlHeader, true ) ) + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Declaration\n" ); + #endif + returnNode = new TiXmlDeclaration(); + } + else if ( isalpha( *(p+1) ) + || *(p+1) == '_' ) + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Element\n" ); + #endif + returnNode = new TiXmlElement( "" ); + } + else if ( StringEqual( p, commentHeader, false ) ) + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Comment\n" ); + #endif + returnNode = new TiXmlComment(); + } + else + { + #ifdef DEBUG_PARSER + TIXML_LOG( "XML parsing Unknown\n" ); + #endif + returnNode = new TiXmlUnknown(); + } + + if ( returnNode ) + { + // Set the parent, so it can report errors + returnNode->parent = this; + //p = returnNode->Parse( p ); + } + else + { + if ( doc ) + doc->SetError( TIXML_ERROR_OUT_OF_MEMORY ); + } + return returnNode; +} + + +void TiXmlElement::StreamIn( std::istream* in, std::string* tag ) +{ + // We're called with some amount of pre-parsing. That is, some of "this" + // element is in "tag". Go ahead and stream to the closing ">" + while( in->good() ) + { + int c = in->get(); + (*tag) += (char) c ; + + if ( c == '>' ) + break; + } + + if ( tag->length() < 3 ) return; + + // Okay...if we are a "/>" tag, then we're done. We've read a complete tag. + // If not, identify and stream. + + if ( tag->at( tag->length() - 1 ) == '>' + && tag->at( tag->length() - 2 ) == '/' ) + { + // All good! + return; + } + else if ( tag->at( tag->length() - 1 ) == '>' ) + { + // There is more. Could be: + // text + // closing tag + // another node. + for ( ;; ) + { + StreamWhiteSpace( in, tag ); + + // Do we have text? + if ( in->peek() != '<' ) + { + // Yep, text. + TiXmlText text( "" ); + text.StreamIn( in, tag ); + + // What follows text is a closing tag or another node. + // Go around again and figure it out. + continue; + } + + // We now have either a closing tag...or another node. + // We should be at a "<", regardless. + if ( !in->good() ) return; + assert( in->peek() == '<' ); + int tagIndex = tag->length(); + + bool closingTag = false; + bool firstCharFound = false; + + for( ;; ) + { + if ( !in->good() ) + return; + + int c = in->peek(); + + if ( c == '>' ) + break; + + *tag += c; + in->get(); + + if ( !firstCharFound && c != '<' && !IsWhiteSpace( c ) ) + { + firstCharFound = true; + if ( c == '/' ) + closingTag = true; + } + } + // If it was a closing tag, then read in the closing '>' to clean up the input stream. + // If it was not, the streaming will be done by the tag. + if ( closingTag ) + { + int c = in->get(); + assert( c == '>' ); + *tag += c; + + // We are done, once we've found our closing tag. + return; + } + else + { + // If not a closing tag, id it, and stream. + const char* tagloc = tag->c_str() + tagIndex; + TiXmlNode* node = Identify( tagloc ); + if ( !node ) + return; + node->StreamIn( in, tag ); + delete node; + node = 0; + + // No return: go around from the beginning: text, closing tag, or node. + } + } + } +} + + +const char* TiXmlElement::Parse( const char* p ) +{ + p = SkipWhiteSpace( p ); + TiXmlDocument* document = GetDocument(); + + if ( !p || !*p || *p != '<' ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT ); + return false; + } + + p = SkipWhiteSpace( p+1 ); + + // Read the name. + p = ReadName( p, &value ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME ); + return false; + } + + string endTag = "</"; + endTag += value; + endTag += ">"; + + // Check for and read attributes. Also look for an empty + // tag or an end tag. + while ( p && *p ) + { + p = SkipWhiteSpace( p ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + if ( *p == '/' ) + { + ++p; + // Empty tag. + if ( *p != '>' ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_EMPTY ); + return 0; + } + return (p+1); + } + else if ( *p == '>' ) + { + // Done with attributes (if there were any.) + // Read the value -- which can include other + // elements -- read the end tag, and return. + ++p; + p = ReadValue( p ); // Note this is an Element method, and will set the error if one happens. + if ( !p || !*p ) + return 0; + + // We should find the end tag now + if ( StringEqual( p, endTag.c_str(), false ) ) + { + p += endTag.length(); + return p; + } + else + { + if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG ); + return 0; + } + } + else + { + // Try to read an element: + TiXmlAttribute attrib; + attrib.SetDocument( document ); + p = attrib.Parse( p ); + + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT ); + return 0; + } + SetAttribute( attrib.Name(), attrib.Value() ); + } + } + return p; +} + + +const char* TiXmlElement::ReadValue( const char* p ) +{ + TiXmlDocument* document = GetDocument(); + + // Read in text and elements in any order. + p = SkipWhiteSpace( p ); + while ( p && *p ) + { +// string text; +// while ( p && *p && *p != '<' ) +// { +// text += (*p); +// ++p; +// } +// +// p = SkipWhiteSpace( p ); + + if ( *p != '<' ) + { + // Take what we have, make a text element. + TiXmlText* textNode = new TiXmlText( "" ); + + if ( !textNode ) + { + if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY ); + return 0; + } + + p = textNode->Parse( p ); + + if ( !textNode->Blank() ) + LinkEndChild( textNode ); + else + delete textNode; + } + else + { + // We hit a '<' + // Have we hit a new element or an end tag? + if ( StringEqual( p, "</", false ) ) + { + return p; + } + else + { + TiXmlNode* node = Identify( p ); + if ( node ) + { + p = node->Parse( p ); + LinkEndChild( node ); + } + else + { + return 0; + } + } + } + p = SkipWhiteSpace( p ); + } + + if ( !p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ELEMENT_VALUE ); + } + return p; +} + + +void TiXmlUnknown::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->get(); + (*tag) += c; + + if ( c == '>' ) + { + // All is well. + return; + } + } +} + + +const char* TiXmlUnknown::Parse( const char* p ) +{ + TiXmlDocument* document = GetDocument(); + p = SkipWhiteSpace( p ); + if ( !p || !*p || *p != '<' ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_UNKNOWN ); + return 0; + } + ++p; + value = ""; + + while ( p && *p && *p != '>' ) + { + value += *p; + ++p; + } + + if ( !p ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_UNKNOWN ); + } + if ( *p == '>' ) + return p+1; + return p; +} + + +void TiXmlComment::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->get(); + (*tag) += c; + + if ( c == '>' + && tag->at( tag->length() - 2 ) == '-' + && tag->at( tag->length() - 3 ) == '-' ) + { + // All is well. + return; + } + } +} + + +const char* TiXmlComment::Parse( const char* p ) +{ + TiXmlDocument* document = GetDocument(); + value = ""; + + p = SkipWhiteSpace( p ); + const char* startTag = "<!--"; + const char* endTag = "-->"; + + if ( !StringEqual( p, startTag, false ) ) + { + document->SetError( TIXML_ERROR_PARSING_COMMENT ); + return 0; + } + p += strlen( startTag ); + p = ReadText( p, &value, false, endTag, false ); + return p; +} + + +const char* TiXmlAttribute::Parse( const char* p ) +{ + p = SkipWhiteSpace( p ); + if ( !p || !*p ) return 0; + + // Read the name, the '=' and the value. + p = ReadName( p, &name ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + p = SkipWhiteSpace( p ); + if ( !p || !*p || *p != '=' ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + + ++p; // skip '=' + p = SkipWhiteSpace( p ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES ); + return 0; + } + + const char* end; + + if ( *p == '\'' ) + { + ++p; + end = "\'"; + p = ReadText( p, &value, false, end, false ); + } + else if ( *p == '"' ) + { + ++p; + end = "\""; + p = ReadText( p, &value, false, end, false ); + } + else + { + // All attribute values should be in single or double quotes. + // But this is such a common error that the parser will try + // its best, even without them. + value = ""; + while ( p && *p // existence + && !isspace( *p ) && *p != '\n' && *p != '\r' // whitespace + && *p != '/' && *p != '>' ) // tag end + { + value += *p; + ++p; + } + } + return p; +} + + +void TiXmlText::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->peek(); + if ( c == '<' ) + return; + + (*tag) += c; + in->get(); + } +} + + + +const char* TiXmlText::Parse( const char* p ) +{ + value = ""; + + //TiXmlDocument* doc = GetDocument(); + bool ignoreWhite = true; +// if ( doc && !doc->IgnoreWhiteSpace() ) ignoreWhite = false; + + const char* end = "<"; + p = ReadText( p, &value, ignoreWhite, end, false ); + if ( p ) + return p-1; // don't truncate the '<' + return 0; +} + + +void TiXmlDeclaration::StreamIn( std::istream* in, std::string* tag ) +{ + while ( in->good() ) + { + int c = in->get(); + (*tag) += c; + + if ( c == '>' ) + { + // All is well. + return; + } + } +} + +const char* TiXmlDeclaration::Parse( const char* p ) +{ + p = SkipWhiteSpace( p ); + // Find the beginning, find the end, and look for + // the stuff in-between. + TiXmlDocument* document = GetDocument(); + if ( !p || !*p || !StringEqual( p, "<?xml", true ) ) + { + if ( document ) document->SetError( TIXML_ERROR_PARSING_DECLARATION ); + return 0; + } + + p += 5; +// const char* start = p+5; +// const char* end = strstr( start, "?>" ); + + version = ""; + encoding = ""; + standalone = ""; + + while ( p && *p ) + { + if ( *p == '>' ) + { + ++p; + return p; + } + + p = SkipWhiteSpace( p ); + if ( StringEqual( p, "version", true ) ) + { +// p += 7; + TiXmlAttribute attrib; + p = attrib.Parse( p ); + version = attrib.Value(); + } + else if ( StringEqual( p, "encoding", true ) ) + { +// p += 8; + TiXmlAttribute attrib; + p = attrib.Parse( p ); + encoding = attrib.Value(); + } + else if ( StringEqual( p, "standalone", true ) ) + { +// p += 10; + TiXmlAttribute attrib; + p = attrib.Parse( p ); + standalone = attrib.Value(); + } + else + { + // Read over whatever it is. + while( p && *p && *p != '>' && !isspace( *p ) ) + ++p; + } + } + return 0; +} + +bool TiXmlText::Blank() const +{ + for ( unsigned i=0; i<value.size(); i++ ) + if ( !isspace( value[i] ) ) + return false; + return true; +} + diff --git a/lame-3.97/ACM/tinyxml/xmltest.cpp b/lame-3.97/ACM/tinyxml/xmltest.cpp new file mode 100644 index 0000000..7029ac8 --- /dev/null +++ b/lame-3.97/ACM/tinyxml/xmltest.cpp @@ -0,0 +1,326 @@ +#include "tinyxml.h" +#include <iostream> +#include <sstream> +#include <strstream> +using namespace std; + +int gPass = 0; +int gFail = 0; + +// Utility functions: +template< class T > +bool XmlTest( const char* testString, T expected, T found, bool noEcho = false ) +{ + if ( expected == found ) + cout << "[pass]"; + else + cout << "[fail]"; + + if ( noEcho ) + cout << " " << testString; + else + cout << " " << testString << " [" << expected << "][" << found << "]"; + cout << "\n"; + + bool pass = ( expected == found ); + if ( pass ) + ++gPass; + else + ++gFail; + return pass; +} + + +// +// This file demonstrates some basic functionality of TinyXml. +// Note that the example is very contrived. It presumes you know +// what is in the XML file. But it does test the basic operations, +// and show how to add and remove nodes. +// + +int main() +{ + // + // We start with the 'demoStart' todo list. Process it. And + // should hopefully end up with the todo list as illustrated. + // + const char* demoStart = + "<?xml version=\"1.0\" standalone='no' >\n" + "<!-- Our to do list data -->" + "<ToDo>\n" + "<!-- Do I need a secure PDA? -->\n" + "<Item priority=\"1\" distance='close'> Go to the <bold>Toy store!</bold></Item>" + "<Item priority=\"2\" distance='none'> Do bills </Item>" + "<Item priority=\"2\" distance='far & back'> Look for Evil Dinosaurs! </Item>" + "</ToDo>"; + + /* What the todo list should look like after processing. + In stream (no formatting) representation. */ + const char* demoEnd = + "<?xml version=\"1.0\" standalone=\"no\" ?>" + "<!-- Our to do list data -->" + "<ToDo>" + "<!-- Do I need a secure PDA? -->" + "<Item priority=\"2\" distance=\"close\">Go to the" + "<bold>Toy store!" + "</bold>" + "</Item>" + "<Item priority=\"1\" distance=\"far\">Talk to:" + "<Meeting where=\"School\">" + "<Attendee name=\"Marple\" position=\"teacher\" />" + "<Attendee name=\"Vo‚\" position=\"counselor\" />" + "</Meeting>" + "<Meeting where=\"Lunch\" />" + "</Item>" + "<Item priority=\"2\" distance=\"here\">Do bills" + "</Item>" + "</ToDo>"; + + // The example parses from the character string (above): + + { + // Write to a file and read it back, to check file I/O. + + TiXmlDocument doc( "demotest.xml" ); + doc.Parse( demoStart ); + + if ( doc.Error() ) + { + printf( "Error in %s: %s\n", doc.Value().c_str(), doc.ErrorDesc().c_str() ); + exit( 1 ); + } + doc.SaveFile(); + } + + TiXmlDocument doc( "demotest.xml" ); + bool loadOkay = doc.LoadFile(); + + if ( !loadOkay ) + { + printf( "Could not load test file 'demotest.xml'. Error='%s'. Exiting.\n", doc.ErrorDesc().c_str() ); + exit( 1 ); + } + + printf( "** Demo doc read from disk: ** \n\n" ); + doc.Print( stdout ); + + TiXmlNode* node = 0; + TiXmlElement* todoElement = 0; + TiXmlElement* itemElement = 0; + + + // -------------------------------------------------------- + // An example of changing existing attributes, and removing + // an element from the document. + // -------------------------------------------------------- + + // Get the "ToDo" element. + // It is a child of the document, and can be selected by name. + node = doc.FirstChild( "ToDo" ); + assert( node ); + todoElement = node->ToElement(); + assert( todoElement ); + + // Going to the toy store is now our second priority... + // So set the "priority" attribute of the first item in the list. + node = todoElement->FirstChildElement(); // This skips the "PDA" comment. + assert( node ); + itemElement = node->ToElement(); + assert( itemElement ); + itemElement->SetAttribute( "priority", 2 ); + + // Change the distance to "doing bills" from + // "none" to "here". It's the next sibling element. + itemElement = itemElement->NextSiblingElement(); + assert( itemElement ); + itemElement->SetAttribute( "distance", "here" ); + + // Remove the "Look for Evil Dinosours!" item. + // It is 1 more sibling away. We ask the parent to remove + // a particular child. + itemElement = itemElement->NextSiblingElement(); + todoElement->RemoveChild( itemElement ); + + itemElement = 0; + + // -------------------------------------------------------- + // What follows is an example of created elements and text + // nodes and adding them to the document. + // -------------------------------------------------------- + + // Add some meetings. + TiXmlElement item( "Item" ); + item.SetAttribute( "priority", "1" ); + item.SetAttribute( "distance", "far" ); + + TiXmlText text( "Talk to:" ); + + TiXmlElement meeting1( "Meeting" ); + meeting1.SetAttribute( "where", "School" ); + + TiXmlElement meeting2( "Meeting" ); + meeting2.SetAttribute( "where", "Lunch" ); + + TiXmlElement attendee1( "Attendee" ); + attendee1.SetAttribute( "name", "Marple" ); + attendee1.SetAttribute( "position", "teacher" ); + + TiXmlElement attendee2( "Attendee" ); + attendee2.SetAttribute( "name", "Vo‚" ); + attendee2.SetAttribute( "position", "counselor" ); + + // Assemble the nodes we've created: + meeting1.InsertEndChild( attendee1 ); + meeting1.InsertEndChild( attendee2 ); + + item.InsertEndChild( text ); + item.InsertEndChild( meeting1 ); + item.InsertEndChild( meeting2 ); + + // And add the node to the existing list after the first child. + node = todoElement->FirstChild( "Item" ); + assert( node ); + itemElement = node->ToElement(); + assert( itemElement ); + + todoElement->InsertAfterChild( itemElement, item ); + + printf( "\n** Demo doc processed: ** \n\n" ); + doc.Print( stdout ); + + printf( "** Demo doc processed to stream: ** \n\n" ); + cout << doc << endl << endl; + + // -------------------------------------------------------- + // Different tests...do we have what we expect? + // -------------------------------------------------------- + + int count = 0; + TiXmlElement* element; + + ////////////////////////////////////////////////////// + cout << "** Basic structure. **\n"; + ostringstream outputStream( ostringstream::out ); + outputStream << doc; + + XmlTest( "Output stream correct.", string( demoEnd ), outputStream.str(), true ); + + node = doc.RootElement(); + XmlTest( "Root element exists.", true, ( node != 0 && node->ToElement() ) ); + XmlTest( "Root element value is 'ToDo'.", string( "ToDo" ), node->Value() ); + node = node->FirstChild(); + XmlTest( "First child exists & is a comment.", true, ( node != 0 && node->ToComment() ) ); + node = node->NextSibling(); + XmlTest( "Sibling element exists & is an element.", true, ( node != 0 && node->ToElement() ) ); + XmlTest( "Value is 'Item'.", string( "Item" ), node->Value() ); + node = node->FirstChild(); + XmlTest( "First child exists.", true, ( node != 0 && node->ToText() ) ); + XmlTest( "Value is 'Go to the'.", string( "Go to the" ), node->Value() ); + + + ////////////////////////////////////////////////////// + cout << "\n** Iterators. **" << "\n"; + // Walk all the top level nodes of the document. + count = 0; + for( node = doc.FirstChild(); + node; + node = node->NextSibling() ) + { + count++; + } + XmlTest( "Top level nodes, using First / Next.", 3, count ); + + count = 0; + for( node = doc.LastChild(); + node; + node = node->PreviousSibling() ) + { + count++; + } + XmlTest( "Top level nodes, using Last / Previous.", 3, count ); + + // Walk all the top level nodes of the document, + // using a different sytax. + count = 0; + for( node = doc.IterateChildren( 0 ); + node; + node = doc.IterateChildren( node ) ) + { + count++; + } + XmlTest( "Top level nodes, using IterateChildren.", 3, count ); + + // Walk all the elements in a node. + count = 0; + for( element = todoElement->FirstChildElement(); + element; + element = element->NextSiblingElement() ) + { + count++; + } + XmlTest( "Children of the 'ToDo' element, using First / Next.", + 3, count ); + + // Walk all the elements in a node by value. + count = 0; + for( node = todoElement->FirstChild( "Item" ); + node; + node = node->NextSibling( "Item" ) ) + { + count++; + } + XmlTest( "'Item' children of the 'ToDo' element, using First/Next.", 3, count ); + + count = 0; + for( node = todoElement->LastChild( "Item" ); + node; + node = node->PreviousSibling( "Item" ) ) + { + count++; + } + XmlTest( "'Item' children of the 'ToDo' element, using Last/Previous.", 3, count ); + + + ////////////////////////////////////////////////////// + cout << "\n** Parsing. **\n"; + istringstream parse0( "<Element0 attribute0='foo0' attribute1= noquotes attribute2 = '>' />" ); + TiXmlElement element0( "default" ); + parse0 >> element0; + + XmlTest( "Element parsed, value is 'Element0'.", string( "Element0" ), element0.Value() ); + XmlTest( "Reads attribute 'attribute0=\"foo0\"'.", string( "foo0" ), *( element0.Attribute( "attribute0" ) ) ); + XmlTest( "Reads incorrectly formatted 'attribute1=noquotes'.", string( "noquotes" ), *( element0.Attribute( "attribute1" ) ) ); + XmlTest( "Read attribute with entity value '>'.", string( ">" ), *( element0.Attribute( "attribute2" ) ) ); + + ////////////////////////////////////////////////////// + cout << "\n** Streaming. **\n"; + + // Round trip check: stream in, then stream back out to verify. The stream + // out has already been checked, above. We use the output + + istringstream inputStringStream( outputStream.str() ); + TiXmlDocument document0; + + inputStringStream >> document0; + + ostringstream outputStream0( ostringstream::out ); + outputStream0 << document0; + + XmlTest( "Stream round trip correct.", string( demoEnd ), outputStream0.str(), true ); + + ////////////////////////////////////////////////////// + cout << "\n** Parsing, no Condense Whitespace **\n"; + TiXmlBase::SetCondenseWhiteSpace( false ); + + istringstream parse1( "<start>This is \ntext</start>" ); + TiXmlElement text1( "text" ); + parse1 >> text1; + + XmlTest( "Condense white space OFF.", string( "This is \ntext" ), + text1.FirstChild()->Value(), + true ); + + cout << endl << "Pass " << gPass << ", Fail " << gFail << endl; + return 0; +} + diff --git a/lame-3.97/API b/lame-3.97/API new file mode 100644 index 0000000..c850df5 --- /dev/null +++ b/lame-3.97/API @@ -0,0 +1,107 @@ +The LAME API + +This is the simple interface to the encoding part of libmp3lame.so. +The library also contains routines for adding id3 tags and +mp3 decoding. These routines are not fully documented, +but you can figure them out by looking at "include/lame.h" and the +example frontend encoder/decoder source code in frontend/main.c + +All of these steps should be done for every MP3 to be encoded. + + +========================================================================= + +1. (optional) Get the version number of the encoder, if you are interested. + void get_lame_version(char *strbuf, size_t buflen, const char *prefix); + + +2. Error messages. By default, LAME will write error messages to +stderr using vfprintf(). For GUI applications, this is often a problem +and you need to set your own error message handlers: + + lame_set_errorf(gfp,error_handler_function); + lame_set_debugf(gfp,error_handler_function); + lame_set_msgf(gfp,error_handler_function); + +See lame.h for details. + + +3. Initialize the encoder. sets default for all encoder parameters. + + #include "lame.h" + lame_global_flags *gfp; + gfp = lame_init(); + +The default (if you set nothing) is a J-Stereo, 44.1khz +128kbps CBR mp3 file at quality 5. Override various default settings +as necessary, for example: + + lame_set_num_channels(gfp,2); + lame_set_in_samplerate(gfp,44100); + lame_set_brate(gfp,128); + lame_set_mode(gfp,1); + lame_set_quality(gfp,2); /* 2=high 5 = medium 7=low */ + + +See lame.h for the complete list of options. Note that there are +some lame_set_*() calls not documented in lame.h. These functions +are experimental and for testing only. They may be removed in +the future. + + + +4. Set more internal configuration based on data provided above, + as well as checking for problems. Check that ret_code >= 0. + + ret_code = lame_init_params(gfp); + + + +5. Encode some data. input pcm data, output (maybe) mp3 frames. +This routine handles all buffering, resampling and filtering for you. +The required mp3buffer_size can be computed from num_samples, +samplerate and encoding rate, but here is a worst case estimate: +mp3buffer_size (in bytes) = 1.25*num_samples + 7200. +num_samples = the number of PCM samples in each channel. It is +not the sum of the number of samples in the L and R channels. + +The return code = number of bytes output in mp3buffer. This can be 0. +If it is <0, an error occured. + + int lame_encode_buffer(lame_global_flags *gfp, + short int leftpcm[], short int rightpcm[], + int num_samples,char *mp3buffer,int mp3buffer_size); + + +There are also routines for various types of input +(float, long, interleaved, etc). See lame.h for details. + + +6. lame_encode_flush will flush the buffers and may return a +final few mp3 frames. mp3buffer should be at least 7200 bytes. +return code = number of bytes output to mp3buffer. This can be 0. + +int lame_encode_flush(lame_global_flags *,char *mp3buffer, int mp3buffer_size); + + +7. Write the Xing VBR/INFO tag to mp3 file. + +void lame_mp3_tags_fid(lame_global_flags *,FILE* fid); + +This adds a valid mp3 frame which contains information about the +bitstream some players may find usefull. It is used for CBR,ABR and +VBR. The routine will attempt to rewind the output stream to the +beginning. If this is not possible, (for example, you are encoding to +stdout) you should specifically disable the tag by calling +lame_set_bWriteVbrTag(gfp,0) in step 3 above, and call +lame_mp3_tags_fid() with fid=NULL. If the rewind fails and +the tag was not disabled, the first mp3 frame in the bitstream +will be all 0's. + + + +8. free the internal data structures. + +void lame_close(lame_global_flags *); + + diff --git a/lame-3.97/COPYING b/lame-3.97/COPYING new file mode 100644 index 0000000..bf50f20 --- /dev/null +++ b/lame-3.97/COPYING @@ -0,0 +1,482 @@ + GNU LIBRARY GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the library GPL. It is + numbered 2 because it goes with version 2 of the ordinary GPL.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Library General Public License, applies to some +specially designated Free Software Foundation software, and to any +other libraries whose authors decide to use it. You can use it for +your libraries, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the library, or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link a program with the library, you must provide +complete object files to the recipients so that they can relink them +with the library, after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + Our method of protecting your rights has two steps: (1) copyright +the library, and (2) offer you this license which gives you legal +permission to copy, distribute and/or modify the library. + + Also, for each distributor's protection, we want to make certain +that everyone understands that there is no warranty for this free +library. If the library is modified by someone else and passed on, we +want its recipients to know that what they have is not the original +version, so that any problems introduced by others will not reflect on +the original authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that companies distributing free +software will individually obtain patent licenses, thus in effect +transforming the program into proprietary software. To prevent this, +we have made it clear that any patent must be licensed for everyone's +free use or not licensed at all. + + Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License, which was designed for utility programs. This +license, the GNU Library General Public License, applies to certain +designated libraries. This license is quite different from the ordinary +one; be sure to read it in full, and don't assume that anything in it is +the same as in the ordinary license. + + The reason we have a separate public license for some libraries is that +they blur the distinction we usually make between modifying or adding to a +program and simply using it. Linking a program with a library, without +changing the library, is in some sense simply using the library, and is +analogous to running a utility program or application program. However, in +a textual and legal sense, the linked executable is a combined work, a +derivative of the original library, and the ordinary General Public License +treats it as such. + + Because of this blurred distinction, using the ordinary General +Public License for libraries did not effectively promote software +sharing, because most developers did not use the libraries. We +concluded that weaker conditions might promote sharing better. + + However, unrestricted linking of non-free programs would deprive the +users of those programs of all benefit from the free status of the +libraries themselves. This Library General Public License is intended to +permit developers of non-free programs to use free libraries, while +preserving your freedom as a user of such programs to change the free +libraries that are incorporated in them. (We have not seen how to achieve +this as regards changes in header files, but we have achieved it as regards +changes in the actual functions of the Library.) The hope is that this +will lead to faster development of free libraries. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, while the latter only +works together with the library. + + Note that it is possible for a library to be covered by the ordinary +General Public License rather than by this special one. + + GNU LIBRARY GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library which +contains a notice placed by the copyright holder or other authorized +party saying it may be distributed under the terms of this Library +General Public License (also called "this License"). Each licensee is +addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also compile or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + c) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + d) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the source code distributed need not include anything that is normally +distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Library General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307 USA. + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/lame-3.97/ChangeLog b/lame-3.97/ChangeLog new file mode 100644 index 0000000..048f8a0 --- /dev/null +++ b/lame-3.97/ChangeLog @@ -0,0 +1,33713 @@ + + ChangeLog for LAME +-==================- + + - All dates/times are in GMT. + - This file contains the complete changelog, even commit logs of + non official branches. An entry of the form "filename (branchname):" + may not apply to the source you get with this package. + - Generated from cvs log entries + (cvs2cl --gmt -S --branches --no-wrap --header ChangeLog.header) + +-- + +2005-09-04 19:45 aleidinger + + * configure: + + Regen. + +2005-09-04 19:35 aleidinger + + * config.h.in: + + Add the bits for largefile support. + + Submitted by: Diego "Flameeyes" Pettenò <flameeyes@gentoo.org> + Bug ID: 1271744 + +2005-09-04 19:11 aleidinger + + * configure.in: + + Remove some flags which gcc 4.x doesn't understand anymore. + + Noticed by: Rogério Brito + +2005-09-04 19:05 aleidinger + + * aclocal.m4, config.h.in, Makefile.in, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: + + Regen. + +2005-09-04 19:05 aleidinger + + * depcomp, install-sh, ltmain.sh, missing, mkinstalldirs, + frontend/depcomp, libmp3lame/depcomp, misc/depcomp, + mpglib/depcomp: + + Update to recent autotools. + +2005-09-04 19:02 aleidinger + + * frontend/Makefile.am: + + Play catchup with the autotools. + +2005-09-04 18:54 aleidinger + + * configure.in: + + Initialize autoconf correctly (with lame mailinglist address). + +2005-09-04 16:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix adptive threshold calculation. + +2005-09-04 12:03 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + little bit better lossless coding + +2005-09-04 11:52 rbrito + + * doc/man/lame.1: + + Fixed typo in manpage. + +2005-09-04 07:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better skip method for not audible scalefactor band. + +2005-09-04 06:56 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not calculate not audible scalefactor band. + +2005-09-04 06:16 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + forgot to commit when adding sfb energy caching. sorry. + +2005-09-04 03:10 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + caching sfb energy = sum of xr^2 + +2005-09-04 03:09 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + suppress conditional jump + +2005-09-04 02:21 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + better pipelining and use of pshufd in ix_max_SSE2 + +2005-09-04 02:09 takehiro + + * libmp3lame/: tables.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + SSE2 version of ix_max() + +2005-09-04 02:08 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-09-03 15:38 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up coding. + +2005-09-03 14:49 takehiro + + * libmp3lame/: quantize.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + changed parameter of xrmax_MMX() + +2005-09-03 13:38 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-09-03 13:31 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + added sumofsqr_SSE() for ia32 + +2005-09-03 13:10 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + use aligned memory access + +2005-09-03 12:45 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + use SSE register for data backup. + +2005-09-03 12:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + xrmax_SSE() support on x86_64 + +2005-09-03 11:16 takehiro + + * libmp3lame/: quantize.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + SSE version of xrmax() + +2005-09-02 18:09 bouvigne + + * frontend/parse.c: + + fixed a stupid bug with --preset medium/standard/extreme + +2005-09-02 17:16 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + changed default setting of replaygain analysis, "enable fast" -> "disable all". + +2005-09-01 18:12 bouvigne + + * libmp3lame/VbrTag.c: + + 320kbps cbr was flagged as "non optimal" in the info header + +2005-08-31 16:21 takehiro + + * libmp3lame/quantize.c, libmp3lame/lame-analysis.h, + frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + display how many bits used in the "large value" region and count1 region. + +2005-08-28 17:30 bouvigne + + * frontend/parse.c, libmp3lame/version.h: + + Changed the way "--preset xxx" is handled, + as I've seen many users passing "--preset standard --vbr-new". + Presets are now evaluated during initialisation, so this kind of command + line now properly works. + +2005-08-28 17:02 bouvigne + + * libmp3lame/lame.c, Makefile.MSVC, libmp3lame/version.c, + libmp3lame/version.h, frontend/parse.c: + + 64bits build from within win64 platform sdk + +2005-08-28 12:19 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use 128bit constants + +2005-08-28 12:11 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + better pipelining + +2005-08-27 12:03 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use cos(2x) = cos(x)*cos(x) - sin(x)*sin(x) = 1 - 2*sin(x)*sin(x) + +2005-08-27 08:25 takehiro + + * configure, configure.in: + + fix for configure problem reported by Steven P. Ulrick. + +2005-08-27 08:10 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + clean up. + +2005-08-27 07:58 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + clean up counter register usage + +2005-08-25 16:28 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + suppress table size + +2005-08-25 12:14 takehiro + + * debian/: Makefile.am, Makefile.in: + + follow the file name change. + +2005-08-23 15:50 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + new tonality -> masking ratio conversion method and masking ratio limitation + in the lower frequency region. + +2005-08-23 14:15 takehiro + + * libmp3lame/: encoder.h, lame.c, newmdct.c, psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + rename internal variable name, start_sfb_* -> max_sfb_* + update verbose print of internal setting. + +2005-08-22 16:20 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + do not call best_scalefac_store() when no noise shaping, becase in such case + all the scalefac values are always zero. + +2005-08-22 15:21 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + do not calculate MDCT beyond cutoff even when adaptive cutoff is enabled. + +2005-08-22 13:47 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + display internal setting for "adaptive lowpass cutoff" + +2005-08-22 13:46 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fix "optimal setting" flag is always cleared when the input file is below 32kH + +2005-08-22 13:11 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + do not process filtering when no filter enabled. + +2005-08-21 17:32 bouvigne + + * Makefile.am, ACM/Makefile.am, ACM/lameACM_vc7.vcproj, + ACM/ADbg/ADbg_vc7.vcproj, ACM/ADbg/Makefile.am, + ACM/tinyxml/Makefile.am, ACM/tinyxml/tinyxml_vc7.vcproj, + Dll/LameDll_vc7.vcproj, Dll/Makefile.am, frontend/Makefile.am, + frontend/lame_vc7.vcproj, frontend/mp3x_vc7.vcproj, + libmp3lame/Makefile.am, libmp3lame/libmp3lame_vc7.vcproj, + mpglib/Makefile.am, mpglib/mpglib_vc7.vcproj: + + added project files for VC7 + +2005-08-21 17:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + use adaptive cutoff when no lowpass filter setting ("-k" option) + +2005-08-21 15:25 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix default cutoff setting when adaptive cutoff. + +2005-08-21 14:15 takehiro + + * libmp3lame/: encoder.h, lame.c, psymodel.c, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + adaptive cutoff frequency calculation. + very experimental and not works correctly (of course is not enabled by default) + +2005-08-21 08:40 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + revive -q settings for VBR/ABR + +2005-08-21 08:05 takehiro + + * libmp3lame/i386/: fftsse.nas, quantSSE.nas + (takehiro-2002_05_07-experimental): + + clean up + +2005-08-21 06:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up x86_64 code. + +2005-08-21 06:09 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use loopalign instead of align + +2005-08-21 05:54 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + use movlps instead of movups + +2005-08-21 05:42 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + trivial + +2005-08-21 04:50 takehiro + + * libmp3lame/i386/: choose_table.nas, quantSSE.nas + (takehiro-2002_05_07-experimental): + + small asm-coding hack. + +2005-08-21 03:32 takehiro + + * libmp3lame/: encoder.h, tags.c + (takehiro-2002_05_07-experimental): + + Support generic genre name like "MyOriginalGenre" (bugid #1265218 @ sf.net) + +2005-08-20 18:34 takehiro + + * libmp3lame/i386/fftsse.nas (takehiro-2002_05_07-experimental): + + clean up. + +2005-08-20 18:05 takehiro + + * libmp3lame/: util.c, util.h (takehiro-2002_05_07-experimental): + + one more support for SSE on x86_64 + +2005-08-20 18:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + ASM code support for x86_64 environment (only tested with FedoraCore3@cf.sf.net) + +2005-08-20 17:48 bouvigne + + * doc/html/switchs.html: + + typo + +2005-08-20 16:47 takehiro + + * configure, configure.in, libmp3lame/Makefile.am, + libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + auto* things for x86_64 related files. + +2005-08-20 14:21 takehiro + + * libmp3lame/i386/ssesub.c (takehiro-2002_05_07-experimental): + + remove unused files/dirs + +2005-08-20 13:42 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + remove redundant operation and fix comments. + +2005-08-20 11:32 takehiro + + * libmp3lame/: lame.c, psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + modification related to asm version of lr2ms (forgot to commit. oops) + +2005-08-20 09:25 takehiro + + * libmp3lame/: util.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + SSE version of LR -> MS. gains 1% speed. + +2005-08-20 08:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-08-16 07:56 rbrito + + * debian/: changelog, control: + + Make libmp3lame0 provide and replace liblame0, not conflict with it. + +2005-08-16 07:11 rbrito + + * debian/: changelog, control, libmp3lame0-dev.files: + + Fixed development package to not include shared libraries. + Other misc fixes. + + Yet more to come. + +2005-08-16 01:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimized pow075() for generic CPU. + remove C++ style comments. + +2005-08-15 04:25 rbrito + + * debian/: changelog, control, liblame0-dev.docs, + liblame0-dev.files, liblame0.files, libmp3lame0-dev.docs, + libmp3lame0-dev.files, libmp3lame0.files, rules: + + Update Debian packaging so that the library packages follow the SONAME + rules. + + Also incorporate some changes from Christian Marillat's packages in the + basic lame package. + + More changes to come soon. + +2005-08-14 07:05 takehiro + + * libmp3lame/: bitstream.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-08-13 14:12 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + optimize quad-code writing routine. + +2005-08-13 12:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + move the comments at more suitable place. + +2005-08-13 12:08 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimizations. + +2005-08-13 09:17 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + faster count bits for quad-code region. + +2005-08-11 14:43 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + reduce memory access by caching data to be written. + +2005-08-10 15:22 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + caching huffman code to be written to reduce bitwise operation. + +2005-08-10 14:55 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + more pruning at lossless coding. same result, faster calculation. + +2005-08-08 17:22 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + one more pruning of lossless coding. + +2005-08-08 16:33 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimize speed of lossless coding with better pruning. + +2005-08-07 14:07 takehiro + + * doc/man/lame.1: + + when the input is raw, the input file will be treated as native endian. + (bugid 1158189) + +2005-08-07 13:24 bouvigne + + * doc/html/switchs.html: + + update of stereo modes description + +2005-08-07 12:34 takehiro + + * configure, aclocal.m4 (takehiro-2002_05_07-experimental): + + regen + +2005-08-07 10:44 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + surpress memcpy + +2005-08-07 09:37 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix debug build + +2005-08-06 17:29 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce table size. + +2005-08-06 17:20 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + surpress warnings + +2005-08-06 17:14 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + fix comments + +2005-08-06 14:51 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix typo. + +2005-08-06 06:37 takehiro + + * libmp3lame/: psymodel.c, i386/ssesub.c + (takehiro-2002_05_07-experimental): + + trivial + +2005-08-06 06:09 takehiro + + * libmp3lame/: machine.h, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + cleanup and suppress memory usage when SMALL_CACHE and IEEE754 + +2005-08-06 04:46 takehiro + + * frontend/timestatus.c (takehiro-2002_05_07-experimental): + + fix --nohist switch. + +2005-08-05 15:22 takehiro + + * doc/man/lame.1: + + added "per sample" for the description of --bitwidth option. (bugid #1158196) + +2005-08-05 09:22 vitaly-ivanov + + * dshow/: Mpegac.cpp, Mpegac.h: + + Another timestamp fix. Added additional resynchronization points (now there are 4 resynch points) in order to implement absolutely accurate in-out synchronization + +2005-08-04 15:15 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix MPEG2 Layer3 VBR encoding (correct form of rev.1.178.2.223). + +2005-08-04 14:56 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix short block encoding. It may select the subblock gain which makes quantized + values larger than the IXMAX. + +2005-08-04 14:01 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + revert last (rev.1.178.2.223) changes. + +2005-08-04 14:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not use preflag when MPEG2 + +2005-08-04 11:27 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix for MPEG2 VBR coding. Still MPEG2-VBR needs many tweaking. + +2005-08-04 06:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial simplification. + +2005-08-04 02:30 takehiro + + * libmp3lame/: encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + fix bitrate histgram display when mono. + +2005-08-04 01:42 rbrito + + * debian/: changelog, control, rules: + + Updates for Debian packaging. + +2005-08-04 01:40 rbrito + + * doc/man/lame.1: + + Documentation of switches: --{un,}signed and --{big,little}-endian. + +2005-08-03 14:40 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + supress warnings on 64bit environment. + +2005-08-03 14:04 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + more clean up when with --nohist or --silent. + +2005-08-03 07:11 takehiro + + * libmp3lame/i386/nasm.h (takehiro-2002_05_07-experimental): + + Add magic words from libflac to tell LAME does not need exectable stack. + +2005-08-02 13:30 takehiro + + * frontend/main.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix brhist display when CBR + +2005-08-01 17:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + update comments + +2005-08-01 15:51 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + more MAX_BITS off-by-one fixes, including comments. + +2005-08-01 13:10 vitaly-ivanov + + * dshow/: Mpegac.cpp, Property.rc: + + Output timestamps fix. There was a serious bug when input audio samples had time gaps between each other - DirectShow timestamps for output samples were calculated wrong in this case + +2005-08-01 07:06 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix off by one of MAX_BITS. + +2005-08-01 06:30 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + supress table size. + +2005-07-30 16:30 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not use 4096 bits/granule limits when not strict ISO mode. + +2005-07-28 13:05 rbrito + + * doc/html/: basic.html, contributors.html, examples.html, + history.html, id3.html, switchs.html: + + Minor spelling corrections and other fixes to documentation. + +2005-07-28 13:02 rbrito + + * debian/rules: + + Safe version for compilation with GCC 4. + +2005-07-27 21:49 rbrito + + * doc/html/: presets.html, switchs.html: + + Spelling fixes for documentation. + +2005-07-27 21:38 rbrito + + * doc/man/lame.1: + + Include description of the "medium" preset in the manpage. + + Fix some spelling errors on the manpage. + +2005-07-27 08:43 rbrito + + * debian/changelog, debian/control, debian/lame.manpages, + debian/rules, doc/man/lame.1: + + Small fixes for lame manpage to make lintian happy. More updates to come. + +2005-07-27 07:41 rbrito + + * debian/changelog: + + Preparation for the new beta release. More changes to come. + +2005-07-26 23:31 takehiro + + * config.h.in, configure.in, frontend/main.c + (takehiro-2002_05_07-experimental): + + experimental patch to autodetect UTF-8 ID3v2 tag by Edmund GRIMLEY EVANS. + +2005-07-26 13:59 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix 4096bits limits for one _granule_ when VBR. + old code mistook it for one _channel and granule_. + +2005-07-24 16:54 takehiro + + * libmp3lame/: lame.c, psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + suppress warnings + +2005-07-24 16:52 takehiro + + * libmp3lame/: lame.c, psymodel.c, util.c + (takehiro-2002_05_07-experimental): + + added lr2ms() function and use it. This is the preparation for future asm-optimizations. + +2005-07-24 16:51 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fixed reservoir limitation setup. + +2005-07-24 16:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added some comments arround the bit reservoir. + +2005-07-24 16:28 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + [no log message] + +2005-07-24 16:11 takehiro + + * libmp3lame/: lame.c, quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + SSE2 version of quntize_ISO (from gogo) + +2005-07-24 13:02 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix bit/byte confusion. + +2005-07-20 14:30 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fixed compilation problem on some OS which has a "trancate" + +2005-07-20 14:22 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + update comments. + +2005-07-16 08:30 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fixed tarck tag ID. + +2005-07-16 08:04 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, + libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + ID3 tag update. + - merged UTF-8 patch from egrimleyevans + (http://sourceforge.net/tracker/index.php?func=detail&aid=1192706&group_id=290&atid=300290) + + - Fixed ID3v1 track number tag. When the track number is larger than 255, it was recoded as "track number % 256" in the ID3v1. + + - Changed internal track number representation to char* from int. It may allow + to use "leading zero" track number in ID3v2 tag, like "01/23". + +2005-07-16 07:30 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added "--ignore-tag-errors" to the usage message + +2005-07-10 16:13 bouvigne + + * libmp3lame/: presets.c, version.h: + + alpha 11: update of abr/cbr 160-320 + +2005-06-29 12:26 vitaly-ivanov + + * dshow/: Encoder.cpp, PropPage.cpp, PropPage_adv.cpp, Property.rc: + + Joint / Standard stereo selection fix. Got rid of automatic joint stereo encoding when the bit rate is relatively low, now it's up to the user + +2005-06-25 08:14 vitaly-ivanov + + * dshow/: Encoder.h, Property.rc, aboutprp.cpp, .cvsignore: + + [no log message] + +2005-06-24 10:03 vitaly-ivanov + + * dshow/: .cvsignore, Encoder.cpp, Encoder.h, Mpegac.cpp, + Mpegac.def, Mpegac.h, PropPage.cpp, PropPage.h, PropPage_adv.cpp, + PropPage_adv.h, Property.rc, README, REG.CPP, UIDS.H, + aboutprp.cpp, aboutprp.h, dshow.dsp, dshow.dsw, iaudioprops.h, + resource.h: + + [no log message] + +2005-06-24 09:37 vitaly-ivanov + + * dshow/REG.H: + + [no log message] + +2005-06-04 16:06 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + fix for configure with --disable-shared. + +2005-05-29 16:41 takehiro + + * Makefile.in, aclocal.m4, configure, ltmain.sh, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen with automake1.9.5 + +2005-05-29 16:40 takehiro + + * libmp3lame/: tables.c, psymodel.c + (takehiro-2002_05_07-experimental): + + psymodel parameter tuning (1) + +2005-05-29 16:10 takehiro + + * debian/: changelog, control: + + fixed version number (upstream -> downstream) + + patch from Jack, from + http://sourceforge.net/tracker/index.php?func=detail&aid=1201172&group_id=290&atid=100290 + +2005-05-29 15:59 takehiro + + * debian/rules (takehiro-2002_05_07-experimental): + + added files to remove when clean. + +2005-05-29 14:43 takehiro + + * libmp3lame/: tables.c, takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix sing handling. + It somtime makes assertion failure on MMX2 supported machines. + +2005-05-29 14:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimized init_global_gain(), by initializing gi->count1, gi->big_values + only when it is "really" needed. + +2005-05-25 14:17 takehiro + + * frontend/: get_audio.c, parse.c: + + fixed output message even when "--silent" + (bug #1145932) + +2005-05-25 13:56 takehiro + + * libmp3lame/lame.c: + + fix format strings to print out the "float" value. + (bug #1207470) + +2005-05-25 13:47 takehiro + + * frontend/parse.c: + + removed -Z option description, which has no effects currently. + +2005-05-21 09:07 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + suppress magic number. + +2005-05-20 14:46 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + clean up the new workarround for the frequency resolution + in the lower frequency. + +2005-05-17 15:46 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + Do not calculate the simultaneous masking in the lower frequency, where the + frequency resolution is not sufficient. + + This is a temporaly code. This should be done by changing the spread function. + +2005-05-14 17:45 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + dirty hack arround truncate() + +2005-05-14 16:28 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + reduce division by changing log(x/y) -> log(x) - log(y), part 2. + supress magic numbers. + +2005-05-14 16:27 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix assertion failure when a quantized value exceeds IXMAX(8206) + +2005-05-14 13:47 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-05-14 13:16 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + remove some optimization options which is not supported by gcc4. + +2005-05-14 12:31 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix debug built problem on the machine without memset() + +2005-05-14 08:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed log(x/y) as log(x)-log(y), when FAST_LOG. + +2005-05-14 06:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix built problem when USE_IEEE754_HACK but not USE_FAST_LOG. + +2005-05-14 03:43 takehiro + + * debian/: changelog, control (takehiro-2002_05_07-experimental): + + patch from Jack (jablko), including the bug report #1201172 + +2005-05-12 17:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + supress magic numbers + +2005-05-11 15:51 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + for better portability, do not use "long long", use uint64_t instead. + +2005-05-11 15:50 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + remove unused portion of window coefs. + +2005-05-11 15:14 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimizing mask_add(), part 2. + - faster log() -> trncate() calculation for IEEE754 HACK. + +2005-05-11 14:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimizing mask_add() (part 1) + +2005-05-10 17:24 takehiro + + * libmp3lame/: psymodel.c, machine.h + (takehiro-2002_05_07-experimental): + + optimizing PE calculation. + +2005-05-10 17:10 takehiro + + * libmp3lame/: tables.c, machine.h + (takehiro-2002_05_07-experimental): + + use integer calculation @ fast_log2(). + This is a preparation for farther speed optimizations. + +2005-05-06 01:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix typo. + +2005-05-04 17:21 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + fix typo + +2005-05-04 17:01 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen by hand. + +2005-05-04 17:00 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + - do not use "-march" option for the case of cross build. + - added comments about SPARC + IEEE754 hack + +2005-05-04 16:58 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + update x^(3/4) hack. + - use IEEE754 HACK version of fabs() + - better "digital silent" detection. not use sum, but use maximum. + +2005-05-04 16:57 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + common expression reduction. + +2005-04-26 16:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix selection of the band to increase the scalefactor, when all the band have no + audible noise. + +2005-04-25 16:35 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix handling of SCALEFAC_ANYTHING_GOES in calc_noise(). + This sometimes makes assertion failure when with --substep option. + +2005-04-24 10:28 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix it skips clipping when with --decode option. + +2005-04-23 18:25 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + clean up. + +2005-04-23 18:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Handmade aprox. code to calculate x^(3/4) for IEEE754 machines. + On MacOSX + G4, the speed gain is arround 14% ! + +2005-04-23 15:31 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + supress warnings + +2005-04-23 15:11 takehiro + + * testcase.mp3, frontend/get_audio.c, frontend/get_audio.h, + frontend/gtkanal.c, frontend/main.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c + (takehiro-2002_05_07-experimental): + + use floating values for the data between frontend and encoding core. + +2005-04-23 10:10 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + prevent to re-initialization. + +2005-04-23 10:08 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + add error check for lame_decoe_init() + fix comment. + +2005-04-23 09:57 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + clean up + +2005-04-23 09:56 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + clean up endianness. + fix mp3 decoding. + +2005-04-23 08:42 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning masking parameter balance for long/short blocks. + +2005-04-23 08:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix memory copy size in CBR_2nd_iteration(). + This bug causes assertion failure when CBR with -h option. + +2005-04-23 08:07 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce memory copy size. + +2005-04-23 07:57 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + little bit better initial value for quantization factor search. + +2005-04-23 07:55 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + reduce memory copy size. + +2005-04-22 17:39 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + supress warnings with GCC4.0 + +2005-04-21 16:36 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + oops, stupid bug in loop counter... sorry. + +2005-04-21 15:42 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + improve the spreading function for the lower frequency, + where the resolution of frequency is not sufficient for phsycho-analysis. + +2005-04-21 15:36 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + clean up. + +2005-04-21 15:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + verbose the configuration message. + +2005-04-17 17:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + clean up arround lame_print_internals() + +2005-04-17 16:16 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, main.h, parse.c + (takehiro-2002_05_07-experimental): + + clean up endianness detection and configuration. + +2005-04-17 15:49 takehiro + + * frontend/: get_audio.c, get_audio.h + (takehiro-2002_05_07-experimental): + + clean up MAX_U_32_NUM definition + +2005-04-17 15:42 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + general clean up. + +2005-04-17 15:35 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix assertion failure when CBR encoding. + +2005-04-17 12:49 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + clean up options. + - make some options as experimental. + - fix floating point/integer argument. + +2005-04-17 11:01 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimized best_huffman_divide(), by removing needless call of choose_table(). + +2005-04-16 15:58 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + general clean up. + - supress magic numbers + - use putbits16() instead of putbits24(), where it can. + - trivial loop counter optimization + +2005-04-16 13:55 takehiro + + * testcase.mp3, libmp3lame/psymodel.c + (takehiro-2002_05_07-experimental): + + ATH value adjustment for M/S channels. + +2005-04-16 13:53 takehiro + + * libmp3lame/bitstream.c, frontend/brhist.c, frontend/main.c + (takehiro-2002_05_07-experimental): + + supress warnings + +2005-04-16 10:42 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + reduce conditional jumps + +2005-04-16 10:42 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + added (FLOAT) cast in fast_log() macros. + +2005-04-13 14:12 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + oops, I disabled the new code... + +2005-04-13 14:11 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + one more fix for the delay. + +2005-04-13 13:50 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix frame delay + +2005-04-13 13:41 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimize lossless coding efficiency and speed (mainly for low bitrate). + +2005-04-09 17:50 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimized bitstream copy code. + +2005-04-09 17:29 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + one more reduction of needless divide point search in best_huffman_divide() + +2005-04-09 09:58 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + prevent needless search of best_huffman_divide(). + +2005-04-04 01:20 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimize best_scalefac_store() + - only call noquant_count_bits() when it is really needed. + - skip the band with the SCALEFAC_ANYTHING_GOES. + +2005-04-03 18:28 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + little bit better lossless coding. + +2005-04-03 18:27 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + make assertion condition strictly. + +2005-04-03 17:42 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + one more off by one... oops. + +2005-04-03 17:24 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix off-by-one bug. + +2005-04-03 12:25 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + use the theoretical minimum value of xr34. + +2005-04-03 11:57 takehiro + + * frontend/: gtkanal.c, mp3x.c (takehiro-2002_05_07-experimental): + + fix (part of) mp3x display delay problem + +2005-04-03 11:32 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix table selection + +2005-04-03 05:50 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce calling ixmax() and simplify count_bits() + +2005-04-02 18:32 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + potential fix for floating point exception when analysing MPEG2 Layer3 encoding by mp3x. + +2005-04-02 17:06 takehiro + + * frontend/timestatus.c (takehiro-2002_05_07-experimental): + + reduce calling GetRealTime() + +2005-04-02 16:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Try to find the better quantization factor in the higher frequncy band, + even when it fails to encode without the noise in the lower frequency band. + +2005-04-02 16:21 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + simplify the loop condition. + +2005-04-02 14:54 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + do not use putbits24(), where the length to write is lesser than 18. + +2005-04-02 14:02 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix off-by-one bug in best_huffman_divide() + +2005-04-02 12:21 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix comments and reduce the table size. + +2005-04-02 12:13 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + simplify cont_bit_noESC_from4() and add comments. + +2005-04-02 11:56 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + remove needless memory clear. + +2005-04-02 07:28 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + Now alpha 14. + - Dramatical VBR speed improvement. + 10-20% on typical archtecture (i86, Alpha, Sparc), and 95% on G4. + CBR also gains but it is little (2% on the typical arch, 30% on G4). + - New and improved ATH level autoadjustment. + - Use subblock gain more (CBR and VBR). + - Fix quantization bug in count1 region, which causes annoying noise in high-freq. + +2005-04-02 07:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + supress magic numbers. + +2005-03-29 15:07 takehiro + + * libmp3lame/: machine.h, quantize.c, tables.c, takehiro.c + (takehiro-2002_05_07-experimental): + + supress magic numbers. + +2005-03-28 17:26 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + it seems thmath.h decreases spped very much on Alpha system. + +2005-03-28 16:58 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix debug/release build is reverted and warnings + +2005-03-28 16:57 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix built on 64bit machines (I checked it on Alpha and AMD64) + +2005-03-28 09:44 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + adjust message width + +2005-03-28 03:51 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + fix SCALEFAC_ANYTHING_GOES bug finally! now it gains speed improvement arround 15%. + + and fix count1 region quantization. + +2005-03-28 03:50 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added alignment check when debug build. + +2005-03-27 17:48 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix treatment of scale factor band with "anything goes". + But it seems there're still bugs arround it. + +2005-03-27 16:45 takehiro + + * libmp3lame/: machine.h, quantize.c, quantize_pvt.h, tables.c, + tables.h, takehiro.c (takehiro-2002_05_07-experimental): + + fix it may use preflag on short blocks. + use integer value of quantization adjustments. + +2005-03-27 15:22 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix comments one more. + +2005-03-27 11:57 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fixed comments + +2005-03-27 09:32 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + code clean up. + +2005-03-26 19:58 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix comment + +2005-03-26 19:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not call scale_bitcounter() to check the scalefac values is valid or not. + (spped up arround 1.5%) + +2005-03-26 19:37 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it recognize (scalefac=SCALEFAC_ANYTHING_GOES) + (subblock gain = 2) as + not an amplified band. + +2005-03-26 10:39 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + suppress magic numbers + +2005-03-26 09:48 takehiro + + * frontend/: main.c, timestatus.c + (takehiro-2002_05_07-experimental): + + reduce calling lame_get_frameNum() + +2005-03-23 03:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use subblock_gain more when VBR. + +2005-03-23 03:06 takehiro + + * libmp3lame/: machine.h, tables.c + (takehiro-2002_05_07-experimental): + + cleanup + +2005-03-22 16:58 takehiro + + * libmp3lame/: tables.c, takehiro.c, tables.h + (takehiro-2002_05_07-experimental): + + make scfsi_band[] as static variable. + +2005-03-22 13:42 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove gabages. + oops... + +2005-03-22 13:40 takehiro + + * libmp3lame/: quantize_pvt.h, tables.c + (takehiro-2002_05_07-experimental): + + more precise ROUNDFAC definition. + +2005-03-22 07:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix built problem on old (not C99) compilers. + +2005-03-21 16:24 takehiro + + * libmp3lame/: encoder.h, quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + reduce memory copy size. + +2005-03-21 14:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Fix loop variable initialization. + This will fix decreasing bitrate too much on VBR. + + Zerofy "not audible" region at first to increase the speed. + +2005-03-20 17:28 bouvigne + + * libmp3lame/: encoder.c, lame.c, presets.c, quantize.c, + quantize.h: + + allow masking adjustements in ABR/CBR + +2005-03-19 18:34 bouvigne + + * libmp3lame/version.h: + + alpha 10 + +2005-03-19 17:51 bouvigne + + * libmp3lame/presets.c: + + updated vbr 0/1/2/3 presets + +2005-03-19 16:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix MPEG2/Layer3 encoding. + +2005-03-19 16:05 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2005-03-19 16:04 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + try to use "preflag" more often. + +2005-03-19 15:04 bouvigne + + * libmp3lame/quantize_pvt.c: + + also use nssfb21 in short blocks + +2005-03-19 15:03 bouvigne + + * libmp3lame/quantize.c: + + typo + +2005-03-19 14:44 bouvigne + + * libmp3lame/quantize.c: + + updated psfb21 analog silence detection + +2005-03-19 10:41 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + improve (lossless) scalefactor compression + +2005-03-19 09:43 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + supress magic numbers + +2005-03-19 08:48 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + reduce table size. + +2005-03-19 08:21 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-19 08:08 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix CPU specific optimization option. + +2005-03-19 07:33 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-03-18 16:31 takehiro + + * libmp3lame/: bitstream.c, machine.h, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + sign bit hack for IEEE754 + +2005-03-18 16:03 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + simplify + +2005-03-18 13:24 takehiro + + * debian/: control, rules (takehiro-2002_05_07-experimental): + + sync with the HEAD. + +2005-03-18 05:26 rbrito + + * debian/changelog, debian/control, debian/rules, doc/man/lame.1: + + Slight modifications to debian packaging (with more to come). + Minor changes to the frontend manpage. + +2005-03-17 16:46 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added (FLOAT) cast (I hope this is last). + +2005-03-17 16:41 takehiro + + * libmp3lame/: gain_analysis.c, lame.c, psymodel.c, quantize.c, + tags.c (takehiro-2002_05_07-experimental): + + added "(FLOAT)" cast + remove redundant #include + +2005-03-17 15:03 takehiro + + * frontend/rtp.c (takehiro-2002_05_07-experimental): + + fix build problem on cygwin. + +2005-03-17 14:34 takehiro + + * config.h.in, configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-17 14:28 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + do not check the winsocket. + this is the preparation for fixing bugid #1164417 + +2005-03-16 16:07 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + IEEE754 hack for quantizing 0/1 region. + +2005-03-16 14:53 takehiro + + * config.h.in, configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-16 14:52 takehiro + + * configure.in, libmp3lame/machine.h + (takehiro-2002_05_07-experimental): + + check tgmath.h and use it. + +2005-03-15 16:31 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + do not output error message when with --silent. + +2005-03-15 15:49 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen. + +2005-03-15 15:48 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + play with compiler options on G4. I've got 14% gain from it. + +2005-03-15 15:37 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + supress warning. + +2005-03-15 00:26 robert + + * libmp3lame/vbrquantize.c: + + yet another -Y thing: calc_xmin does not compute upto max_nonzero_coeff + in the -Y case. + +2005-03-14 22:32 robert + + * libmp3lame/vbrquantize.c: + + bugfix for vbr-new when sub block gain violates IXMAXVAL constrain in -Y case + +2005-03-14 21:53 robert + + * libmp3lame/quantize_pvt.c: + + removed an assert in calc_noise_core_c + cod_info->count1 == 0 seems to be a common case + +2005-03-14 15:18 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial clean up. + +2005-03-14 14:53 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + Separate preflag check from scale bit counting. + It changes preflag, but it is undesirable for VBR encoding. + +2005-03-14 14:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + IEEE754 hack for quantization in count1 region. + +2005-03-14 13:31 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + display 'LR+i' as '%' character. + +2005-03-13 17:20 robert + + * libmp3lame/presets.c: + + removing placebo -bx from fast presets + it's a placebo with vbr-old too, but keep it that way a little bit longer + +2005-03-13 17:14 takehiro + + * configure.in, configure (takehiro-2002_05_07-experimental): + + yasm needs -m amd64 to output the elf64 objects. + +2005-03-13 17:11 takehiro + + * libmp3lame/i386/: cpua.nas, nasm.h + (takehiro-2002_05_07-experimental): + + now it can be compiled on x86-64 linux (FC3). but still remains lot of work... + +2005-03-13 17:01 robert + + * frontend/mp3x.c: + + forgot to commit this one, removed unused parameter from usage parameter list + +2005-03-13 14:46 robert + + * libmp3lame/: encoder.c, set_get.c, version.c, version.h: + + removing unused ATH auto adjust types. JDs is now the only one + +2005-03-13 14:43 robert + + * ACM/ACM.cpp: + + version + +2005-03-13 14:42 robert + + * frontend/: main.c, parse.c, parse.h: + + print helptext for internal switches only when internal switches are available + +2005-03-13 12:58 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + changed include path option, -i -> -I + +2005-03-13 12:31 takehiro + + * libmp3lame/: lame.c, i386/Makefile.am, i386/Makefile.in, + i386/cpu_feat.nas, i386/cpua.nas + (takehiro-2002_05_07-experimental): + + changed CPU feature detection code (which is from GOGO3), + because the old one uses pushad/popad which is not supported on x86-64. + +2005-03-13 10:16 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-03-13 10:15 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + added yasm check, to prepare for asm code on i86_64. + +2005-03-12 23:01 robert + + * libmp3lame/vbrquantize.c: + + vbr-new: fixing the -Y bug, that sfb21 wasn't quantized at all + +2005-03-12 20:41 takehiro + + * libmp3lame/: bitstream.c, encoder.h, takehiro.c + (takehiro-2002_05_07-experimental): + + simplify scfsi[] flag. + +2005-03-12 20:41 takehiro + + * libmp3lame/: machine.h, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + clean up "(double)" cast. + +2005-03-12 18:12 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + oops. too much optimized... gi->scalefac[0] may be lesser than 0. + +2005-03-12 17:39 bouvigne + + * libmp3lame/lame.c: + + fix: q2 and higher were NOT enabling substep shaping 2 + +2005-03-12 17:38 bouvigne + + * mpglib/mpg123.h: + + fix for replaygain-accurate + +2005-03-12 17:17 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix "stupid" message when -S + (bugid #1145932) + +2005-03-12 13:58 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + follow variable type change + +2005-03-12 13:54 takehiro + + * configure, configure.in, libmp3lame/Makefile.am, + libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + added ppc directory + +2005-03-12 12:35 takehiro + + * libmp3lame/: bitstream.c, encoder.h, quantize_pvt.h, tables.c, + tables.h, takehiro.c (takehiro-2002_05_07-experimental): + + reduce variable size and changed these order, to archive better cache performance. + +2005-03-11 19:26 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + added "(FLOAT)" cast. + +2005-03-11 17:45 takehiro + + * mpglib/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-11 17:44 takehiro + + * mpglib/Makefile.am (takehiro-2002_05_07-experimental): + + added layer[123].h to the distribution. + +2005-03-11 17:18 takehiro + + * Makefile.in, aclocal.m4, ACM/Makefile.in, ACM/ADbg/Makefile.in, + ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in (takehiro-2002_05_07-experimental): + + regen with the latest gtk.m4 + +2005-03-11 16:49 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + use max value of loudness. + +2005-03-11 16:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix a comment + +2005-03-11 15:31 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + ATH value should be always same value whatever the value of ATHAdjustLimit is. + +2005-03-11 15:29 takehiro + + * libmp3lame/: psymodel.c, version.h + (takehiro-2002_05_07-experimental): + + implement tonality-aware ATH adjustment. + +2005-03-11 15:28 takehiro + + * libmp3lame/psymodel.h (takehiro-2002_05_07-experimental): + + enlarge ATH adjustment range to clarify the flaw of ATH adjustment algorithm. + +2005-03-11 13:58 takehiro + + * debian/Makefile.in (takehiro-2002_05_07-experimental): + + regen... soryy I made it on cygwin... + +2005-03-11 11:14 takehiro + + * libmp3lame/: bitstream.c, newmdct.c, takehiro.c + (takehiro-2002_05_07-experimental): + + added "(FLOAT)" cast. + +2005-03-11 10:27 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + remove C++ style comments + +2005-03-11 10:18 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + make sfBandIndex[] as static. + +2005-03-11 10:11 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix build problem when without decoder (--disable-decoder) + +2005-03-11 09:41 takehiro + + * configMS.h (takehiro-2002_05_07-experimental): + + fix build problem with Makefile.unix + +2005-03-11 09:40 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + supress warnings when without decoder (--disable-decoder) + +2005-03-11 09:40 takehiro + + * frontend/: brhist.c, brhist.h (takehiro-2002_05_07-experimental): + + make Console_IO as static. + +2005-03-11 09:38 takehiro + + * Makefile.unix (takehiro-2002_05_07-experimental): + + TAKEHIRO_IEEE754_HACK -> USE_IEEE754_HACK + +2005-03-11 09:29 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + remove redundant pragma. this one is declared in configMS.h + +2005-03-11 03:06 takehiro + + * Makefile.in, ACM/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-11 03:05 takehiro + + * ACM/Makefile.am (takehiro-2002_05_07-experimental): + + remove unused file + +2005-03-08 23:07 robert + + * Makefile.unix, frontend/parse.c, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/presets.c, + libmp3lame/set_get.c, libmp3lame/util.h: + + removing some unused member of lame_internal_flags structure + +2005-03-06 18:59 bouvigne + + * libmp3lame/takehiro.c: + + faster noquant_count_bits + +2005-03-06 16:56 bouvigne + + * doc/html/history.html: + + history + +2005-03-06 16:17 bouvigne + + * libmp3lame/: presets.c, version.h: + + updated V3 and V2 presets + +2005-03-06 13:17 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed 2.0f -> (FLOAT)2.0, for --enable-all-double + +2005-03-05 18:26 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + slightly faster quantization (not totally sure if it is really faster) + + Also fixed a severe bug in ISO quantization when not using the IEEE hack + +2005-03-05 13:45 bouvigne + + * configMS.h, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/util.h: + + update of the intrinsics coding style + +2005-03-05 12:40 bouvigne + + * libmp3lame/quantize_pvt.c: + + minor speed increase in calc_noise + +2005-03-03 17:01 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + fix IS ratio display. + +2005-03-03 16:59 takehiro + + * frontend/: main.c, timestatus.c + (takehiro-2002_05_07-experimental): + + print out histgram even when CBR encoding. + +2005-03-02 17:50 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-02 17:46 takehiro + + * configure, configure.in (takehiro-2002_05_07-experimental): + + fix --enable-double-float does not work at all. + +2005-03-02 17:01 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + the previous one contains gabages... regen. + +2005-03-02 16:59 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + fix debug build on some non-x86 linux machines. + +2005-03-02 16:58 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix for some 64bit machines (ie. Alpha) + +2005-03-02 15:35 takehiro + + * configure, config.h.in (takehiro-2002_05_07-experimental): + + regen + +2005-03-01 16:59 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + add check for vecLib/vDSP.h, to prepare for Altivec optimization. + +2005-02-28 22:45 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, util.h: + + calc_noise is back to the C version + +2005-02-28 16:52 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + some IEEE754 hack for the CPU with small cache. + +2005-02-27 22:03 bouvigne + + * libmp3lame/quantize_pvt.c: + + calc_noise: + fixed an assertion failure in frames with no big_values + +2005-02-27 20:43 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, util.h: + + sse version of calc_noise (speedup is very small) + +2005-02-27 17:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes fail to encode the short block. + +2005-02-27 15:08 bouvigne + + * configMS.h, libmp3lame/quantize.c, libmp3lame/util.h: + + slightly faster init_xrpow_core_sse + +2005-02-27 14:25 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + now alpha13 + + - replaygain radio/accurate is implemented. + * including replaygain support even when the input is mp3 file. + this is not supported on the current LAME3.x + + - support "TLEN" ID3v2 tag. + + - fix frame # estimation when the input is mp3. + + - fix VBR tag infomation leakage. + + - fix mpeg1 layer1,2 decoder bug. + + - Robert's new eye candy for the frontend. + + - one more reentrant work for the MP3 decoder + + - SSE version of FFT, done by Gilad Raichshtain + + - small optimizations. but replaygain makes it slow down much, + the optimizations are hidden by it... + + - some PPC code added from Robert Stiles and Hans-Peter Dusel. + But not work at all, at least currently. + +2005-02-27 14:16 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + sync with the main branch. + - Robert's new eye candy. + +2005-02-26 14:06 takehiro + + * frontend/: brhist.c, main.c, main.h, parse.c, timestatus.c + (takehiro-2002_05_07-experimental): + + fix duplicated variable of "brhist" + +2005-02-26 09:38 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + added TLEN tag when id3v2 tag is used. + (RFE #1064076) + +2005-02-26 06:21 takehiro + + * frontend/get_audio.c: + + fix mp3 frame # estimation (bugid #934072). + +2005-02-26 05:41 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix # of mp3 frames estimation (bugid #934072). + +2005-02-25 19:01 bouvigne + + * configMS.h: + + intrinsics support for ICL + +2005-02-25 01:21 robert + + * frontend/: brhist.c, timestatus.c: + + RH_HIST: don't print unused channel modes and block types + +2005-02-24 00:27 robert + + * frontend/brhist.c: + + fix scrolling problem I introduced with the last commit + +2005-02-23 17:58 bouvigne + + * libmp3lame/quantize_pvt.c: + + slightly faster calc_noise + +2005-02-22 02:06 robert + + * libmp3lame/psymodel.c: + + Compile time option to enable GPSYCHO like block type switching in NSPSYTUNE. + Due to differences in convolution, the switching does not happen exactly + as in GPSYCHO. (disabled by default, edit psymodel.c to activate) + +2005-02-19 22:47 robert + + * frontend/: brhist.c, brhist.h, main.c: + + some statistics about block type distribution + +2005-02-19 18:48 bouvigne + + * configMS.h: + + conditionnal intrinsics support for MSVC (probably also works for ICL) + +2005-02-19 15:32 bouvigne + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + util.h: + + SSE intrinsic version of init_xrpow + It is now using 1% of total time (using 4% in the standard version) + +2005-02-15 06:39 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix for old compilers. + +2005-02-14 17:01 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added MP3 transcoding TODO. + +2005-02-14 15:46 takehiro + + * libmp3lame/tags.c, testcase.mp3 + (takehiro-2002_05_07-experimental): + + fix information leakage when VBR tag write out. + +2005-02-14 15:14 takehiro + + * Makefile.am, Makefile.in, testcase.mp3 + (takehiro-2002_05_07-experimental): + + added tag itself to test when "make test" + +2005-02-14 13:15 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix it crashes with floating point exception when without --clipdetect option. + +2005-02-14 13:12 takehiro + + * libmp3lame/: bitstream.c, encoder.h, tags.c + (takehiro-2002_05_07-experimental): + + make the clip detection work. + +2005-02-14 13:11 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + do not use "double" + +2005-02-14 12:58 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2005-02-14 12:54 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + clean up. + - remove duplicated pragma. + - do not unroll manually. + +2005-02-13 16:35 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + make it reentrant. + +2005-02-13 14:42 bouvigne + + * libmp3lame/psymodel.c: + + minor speedup + +2005-02-12 16:51 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + oops, enbugged... + now --replaygain-accurate runs (at least it does not crash). + +2005-02-12 16:31 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix decoder initialization when --replaygain-accurate. + +2005-02-12 16:30 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + cleanup + +2005-02-12 15:59 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + prepare for --replaygain-accurate. only preparation. not works. + +2005-02-12 15:58 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + added/cleaned up the replaygain related APIs. + +2005-02-12 08:32 takehiro + + * frontend/main.c, frontend/main.h, frontend/parse.c, + libmp3lame/bitstream.c, libmp3lame/encoder.h, + libmp3lame/gain_analysis.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + replaygain support (1) + - fast replaygain now works. + +2005-02-09 01:45 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + code simplification + +2005-02-08 11:06 takehiro + + * libmp3lame/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + fix mingw build problem, as is done on the main branch by Robert. + +2005-02-07 22:02 robert + + * configure.in, libmp3lame/Makefile.am, libmp3lame/Makefile.in: + + fixing mingw32 configure problems + +2005-02-07 13:45 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + added (FLOAT) cast to the floating point constants.(one more) + +2005-02-07 12:28 takehiro + + * libmp3lame/: encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + reduce malloc/free as is done in the main branch by Robert. + +2005-02-06 23:05 robert + + * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h: + + some MSVC warning level 4 issues resolved + +2005-02-06 20:23 robert + + * libmp3lame/: quantize.c, takehiro.c, vbrquantize.c: + + resolved compiler warnings + +2005-02-06 19:49 robert + + * libmp3lame/: lame.c, machine.h, quantize_pvt.c, util.c, util.h, + vbrquantize.c: + + lame.c: fixed lost break in lame_init_parms + reduced calloc/free calls (where called once per frame, now once per run) + machine.h: removed IIPOW20 + util.c, util.h: removed VBR_t, added in_buffer_[0/1] to lame_internal_flags + vbrquantize.c: fixed some small rounding problem in quantize routines + +2005-02-05 14:14 robert + + * libmp3lame/vbrquantize.c: + + eleminating dead code + expanding preprocessor defines + works probably not with GPsycho anymore, but NSPSYTUNE only (G.not tested) + doesn't try to use 126 bits at minimum per granule anymore, less bloating + on mono like signals where the difference signal is almost zero. + +2005-02-05 13:32 bouvigne + + * libmp3lame/version.h: + + bumped alpha + +2005-02-05 13:31 bouvigne + + * libmp3lame/lame.c: + + enabled ath adjustment for abr/cbr + +2005-02-04 18:34 bouvigne + + * libmp3lame/lame.c: + + sorry, I shouldn't have commited this one + +2005-02-02 04:35 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + remove comma, which is not allowed in C++ (but allowed in C) + +2005-02-02 04:11 takehiro + + * libmp3lame/: psymodel.c, set_get.c + (takehiro-2002_05_07-experimental): + + reduce warning when with "-W" option. + +2005-02-01 10:29 bouvigne + + * libmp3lame/: bitstream.c, lame.c, takehiro.c: + + reduced warnings + +2005-01-30 22:31 robert + + * Makefile.unix, libmp3lame/vbrquantize.c: + + scalefactor allocation should work now as expected + +2005-01-30 22:27 robert + + * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h: + + off by one bug: + we do access iipow20 by values in [0,Q_MAX2] inclusive, + that makes Q_MAX2+1 entries in total + +2005-01-30 19:34 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + there's no GPSYCHO. + +2005-01-30 19:13 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-01-30 19:13 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix automatic CPU specific optimization on cygwin. + +2005-01-30 18:01 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen. + +2005-01-30 18:00 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + hope this will fix the build failure on MinGW + NASM + +2005-01-30 16:00 takehiro + + * libmp3lame/: encoder.h, lame.c, tables.c + (takehiro-2002_05_07-experimental): + + optimize the layout of the coefficients for resampling. + +2005-01-30 15:51 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix it outputs message even when with --silent. + +2005-01-30 14:49 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + added cast to the floating point constants (one more) + +2005-01-30 14:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added cast to floating point constants. + +2005-01-30 12:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use bit-consumption to estimate the "goodness" of quantization, + as is done in LAME 3.x. + +2005-01-29 19:40 bouvigne + + * libmp3lame/presets.c: + + updated vbr presets 9 to 4 + +2005-01-29 18:42 bouvigne + + * libmp3lame/takehiro.c: + + fixed a crash + +2005-01-29 18:11 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c: + + quantize_xrpow: also re-use previously computed data in short blocks + +2005-01-25 21:47 bouvigne + + * libmp3lame/quantize.c: + + X9: more bits into reservoir + +2005-01-23 18:07 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + added replaygain/nogap API + added replaygain commandline option. + +2005-01-23 18:07 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + cosmetic + +2005-01-23 18:06 takehiro + + * HACKING (takehiro-2002_05_07-experimental): + + update current state. + +2005-01-23 16:25 bouvigne + + * libmp3lame/takehiro.c: + + oops, quantize_xrpow optimization has been accidentally disabled in november + +2005-01-23 14:27 bouvigne + + * libmp3lame/lame.c: + + reinstated old q1 (increase only 1 sf per iteration) + +2005-01-22 18:15 bouvigne + + * libmp3lame/quantize_pvt.c: + + problem with q1 and q0 finally found. + I am unable to trace it prior to "the big 3.94 merge". + +2005-01-22 09:19 takehiro + + * libmp3lame/: tags.c, tags.h (takehiro-2002_05_07-experimental): + + fix for unsigned/singed comparison warning. + +2005-01-20 17:10 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + added fftsse.nas support + /\\ - \\/ + +2005-01-20 17:07 takehiro + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + support SSE version of FFT. + +2005-01-20 16:38 takehiro + + * libmp3lame/quantize.c: + + to clarify the relationship of "if-then-else" and suppress warnings from gcc, + added braces. + +2005-01-20 16:35 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in, choose_table.nas, + fftsse.nas, ffttbl.nas (takehiro-2002_05_07-experimental): + + clean up. remove unused code and tables, and update comments. + +2005-01-20 16:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + cosmetic + +2005-01-20 16:28 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-01-19 16:08 takehiro + + * libmp3lame/: tables.c, i386/Makefile.am, i386/Makefile.in, + i386/fftsse.nas, i386/ffttbl.nas + (takehiro-2002_05_07-experimental): + + patched version of FHT_SSE (by Gilad Raichshtain). + and support code for it (by me). + +2005-01-18 07:04 takehiro + + * libmp3lame/bitstream.c, frontend/get_audio.c + (takehiro-2002_05_07-experimental): + + suppress warnings on MSVC6 + +2005-01-16 18:19 takehiro + + * libmp3lame/bitstream.c, libmp3lame/lame.c, mpglib/interface.h + (takehiro-2002_05_07-experimental): + + fix for when --disable-decoder + +2005-01-16 18:12 takehiro + + * mpglib/interface.h (takehiro-2002_05_07-experimental): + + added prototype declaration of decode_init_for_replaygain() + +2005-01-16 18:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix memory leak when RG used. This is enbugged by the previos commit. + +2005-01-16 18:00 takehiro + + * libmp3lame/: bitstream.c, lame.c, mpglib_interface.c + (takehiro-2002_05_07-experimental): + + prepare for ReplayGain merge. + +2005-01-15 18:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + to prevent a floating point exception, add a limit to retry. + +2005-01-15 18:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2005-01-15 17:15 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + use libsndfile when input is unknown RIFF-wave format + +2005-01-15 14:15 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + libmp3lame/version.c was removed. + +2005-01-15 14:08 takehiro + + * .cvsignore (takehiro-2002_05_07-experimental): + + added configure-stamp + +2005-01-15 14:07 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update frontend TODO. + +2005-01-15 14:02 takehiro + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + libmp3lame/version.c was removed. + +2005-01-15 12:56 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2005-01-15 12:56 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + always use libsndfile if it is found. + +2005-01-15 12:30 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix mp3 input....oops. + +2005-01-15 12:27 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix endianness of RIFF wave PCM. + +2005-01-15 12:05 takehiro + + * frontend/: get_audio.c, get_audio.h, gtkanal.c, main.c, main.h, + parse.c (takehiro-2002_05_07-experimental): + + cleaning up LIBSNDFILE, part 3. + + use libsndfile only when the frontend does not know how to handle the + input file format. + +2005-01-15 10:54 takehiro + + * frontend/rtp.h (takehiro-2002_05_07-experimental): + + make them static + +2005-01-15 10:53 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + make those which can be static as static. + +2005-01-15 09:43 takehiro + + * frontend/: get_audio.c, parse.c + (takehiro-2002_05_07-experimental): + + clean up arround libsndfile, part 2. + +2005-01-15 09:30 takehiro + + * frontend/: get_audio.c, get_audio.h + (takehiro-2002_05_07-experimental): + + part of cleaning up LIBSNDFILE + +2005-01-15 07:25 takehiro + + * frontend/: get_audio.c, get_audio.h, gtkanal.c, parse.c + (takehiro-2002_05_07-experimental): + + clean up MPEG Layer 1,2,3 input + +2005-01-13 19:18 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2005-01-13 19:17 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.h: + + use bits in quant_comp + +2005-01-13 18:54 bouvigne + + * libmp3lame/presets.c: + + updated ath values for abr/cbr + +2005-01-13 18:20 bouvigne + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h: + + Replaced X9 by the former X10 (ssd). + The abr/cbr modes are using this comparison + +2005-01-13 16:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix rounding of bitrate calculation + +2005-01-12 18:24 takehiro + + * mpglib/: common.c, layer1.c, layer2.c + (takehiro-2002_05_07-experimental): + + patches from the latest debian package, including some boundary check code. + +2005-01-10 17:38 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + changed one function name, iteration_loop -> CBR_iteration_loop + +2005-01-10 17:11 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix it always output the banner even when with --silent/--quiet. + +2005-01-10 14:48 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + testcase for alpha12 + +2005-01-10 13:17 takehiro + + * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): + + remove outdated comments + +2005-01-10 13:16 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + update alpha version and psymodel version + - fix too much slow down with higher VBR quality (like -V0) + - changed long/short block switching code. + +2005-01-10 13:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + changed VBR strategy to prevent "slow down" when the higher quality (like -V0) + is selected. + + When we cannot encode the frame without noticible distortion with the allowed + bitrate, simply encode the frame with the highest allowed bitrate. + +2005-01-10 13:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it abort when higher VBR. enbug at the previous comit. sorry. + +2005-01-10 12:38 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + for better error message + +2005-01-10 12:21 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + better use of "anything goes" scalefactor band when VBR. + faster and smaller bitrate without any quality regression (theoretically) + +2005-01-10 10:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed block switching to use "sum" of energy in subblocks, + instead of their "max". + + and improve comments. + +2005-01-10 09:23 takehiro + + * libmp3lame/quantize_pvt.c: + + seems it cannot build on Linux and some Unix. + to fix this, I changed max() -> Max(). + +2005-01-09 17:31 bouvigne + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h: + + display SSD in mp3x + +2005-01-09 17:31 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + do not compute noise if best quant has no distorted band and current quant + is bigger than the best one + +2005-01-09 09:19 takehiro + + * frontend/: get_audio.h, gtkanal.c, mp3x.c + (takehiro-2002_05_07-experimental): + + cosmetic changes (fix comments and so on) + +2005-01-09 09:14 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + clean up, mainly fixing comments + +2005-01-09 09:06 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, set_get.c, version.c + (takehiro-2002_05_07-experimental): + + merged version.c into set_get.c and fixed comments (there's no GPSYCHO support) + +2005-01-08 11:47 bouvigne + + * libmp3lame/version.h: + + bumped alpha + +2005-01-08 11:46 bouvigne + + * libmp3lame/psymodel.c: + + limited ATH effect in short blocks. + This is fundamentally wrong, but otherwise it produces bad quality + +2005-01-08 10:58 bouvigne + + * libmp3lame/: lame.c, presets.c, quantize.c, quantize_pvt.c, + quantize_pvt.h: + + updated VBR presets to match the cbr/abr changes + (also corrected the --cbr behavior) + +2005-01-08 10:56 bouvigne + + * doc/html/history.html: + + history + +2005-01-05 14:23 takehiro + + * frontend/: main.c, main.h, mp3x.c, parse.c + (takehiro-2002_05_07-experimental): + + remove "lame_XXX" function to separate name space + +2005-01-05 11:08 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated. BTW, it seems plusv site is vanished... + +2005-01-01 18:19 takehiro + + * configure, configure.in (takehiro-2002_05_07-experimental): + + adjust spacing + +2004-12-31 14:42 takehiro + + * frontend/: get_audio.c, main.c, main.h, parse.c + (takehiro-2002_05_07-experimental): + + one more clean up arround get_audio + +2004-12-31 14:33 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + simplify + +2004-12-31 12:22 takehiro + + * frontend/.cvsignore (takehiro-2002_05_07-experimental): + + added mp3rtp to ignore + +2004-12-31 12:07 takehiro + + * frontend/main.c: + + merge 1.73.2.34 -> 1.73.2.35 + fix it outputs CR even when --silent/--quiet + (bug #973302) + +2004-12-31 11:56 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix it outputs CR even when --silent/--quiet + (bug #973302) + +2004-12-31 11:26 takehiro + + * frontend/mp3rtp.c: + + fix buffer overrun(same in my experimental branch). + +2004-12-31 11:23 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + fix buffer overrun(related to bug #1036590) + + # but still it does not work correctly + +2004-12-31 07:37 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + adjust ABR quality/bitrate control + +2004-12-27 16:13 bouvigne + + * libmp3lame/lame.c: + + cbr/abr: adjusted lowpass + +2004-12-27 15:32 bouvigne + + * libmp3lame/presets.c: + + abr/cbr: adjusted m/s and short/long + +2004-12-27 10:03 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + added for large(>2GB) file support. + +2004-12-19 18:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix scalefactor band region... oops. + +2004-12-19 18:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix the calculation of scalefactor value when VBR. + + In the band whose allowed noise threshold is very high, we do not need to + encode the quantized values. Now LAME uses it properly. + +2004-12-19 17:16 takehiro + + * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): + + added parenthis to avoid some side effects. + +2004-12-13 18:16 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + changed the order of members to localize the write access of memory. + +2004-12-13 18:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added hard limits of threshold for ABR, to prevent too much degration + +2004-12-13 17:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes slows down too much. + +2004-12-13 17:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + change threshold for short blocks same as that of long blocks. + +2004-12-13 17:04 takehiro + + * config.h.in (takehiro-2002_05_07-experimental): + + TAKEHIRO_IEEE754 -> USE_IEEE754 + +2004-12-13 15:09 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-12-13 14:01 takehiro + + * DEFINES, Makefile.MSVC, configMS.h, configure.in, + libmp3lame/bitstream.c, libmp3lame/machine.h, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c + (takehiro-2002_05_07-experimental): + + TAKEHIRO_IEEE754_HACK -> USE_IEEE754_HACK + +2004-12-13 14:01 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + changed a commet. + +2004-12-13 12:40 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix MPEG2 decoding, from foobar2k + +2004-12-12 18:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + use MDCT filter in -q5 and the better. + +2004-12-12 17:52 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix typo + +2004-12-12 17:52 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix table value initialization. + +2004-12-12 17:51 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + fix filtering not working completely... oops. + +2004-12-12 10:57 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix comment + +2004-12-12 10:47 takehiro + + * libmp3lame/: encoder.h, lame.c, newmdct.c, tables.c + (takehiro-2002_05_07-experimental): + + new filtering algorithm. Better resolution (110Hz @ fs=44.1kHz) + and "not" slow much. + + but not enabled by default. + +2004-12-12 08:26 takehiro + + * libmp3lame/i386/ssesub.c (takehiro-2002_05_07-experimental): + + test implementation of SSE support with imtrinsic. + + TODO: + - how to build it and configure support ? + - need more functions to implement. + +2004-12-10 17:56 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization in lossless coding. + +2004-12-10 02:35 takehiro + + * libmp3lame/: encoder.h, lame.c, tables.c, i386/choose_table.nas, + i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + MMX2 support + +2004-12-10 00:21 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-12-09 17:36 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + cosmetic changes & reduce warnings. + +2004-12-09 17:29 takehiro + + * libmp3lame/: quantize.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + MMX version of xr_max() + make VBR/ABR 1% faster. + +2004-12-09 17:05 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + merge from main branch. + - changed words; "default: foobar" -> "default=foobar" + - enable bitrate histogram by default + +2004-12-05 18:10 takehiro + + * libmp3lame/: bitstream.c, takehiro.c + (takehiro-2002_05_07-experimental): + + fix encoding failure of velvet.wav with CBR 128 + +2004-12-05 18:09 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + cosmetic change + +2004-12-05 17:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + considering the shape of window function when long/short block switching. + +2004-12-05 12:18 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen with "tag fixed" version. + +2004-12-05 12:16 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fix VBR(LAME) tag contains a gabage. + +2004-12-02 16:29 takehiro + + * frontend/.indent.pro, libmp3lame/.indent.pro, misc/.indent.pro + (takehiro-2002_05_07-experimental): + + I think no one uses .indent.pro + so I remove them. + +2004-12-02 16:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better threshold controll for ABR. + +2004-11-30 19:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it may overflow + +2004-11-30 18:57 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + VBR speed optimization + +2004-11-30 18:55 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix assertion + +2004-11-30 18:54 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimization by changing table values. + +2004-11-30 10:19 takehiro + + * configMS.h (takehiro-2002_05_07-experimental): + + fix for MSVC "inline" keyword + +2004-11-30 09:39 takehiro + + * libmp3lame/: encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + precalculate width information + +2004-11-30 08:58 takehiro + + * libmp3lame/: encoder.h, lame.c, quantize.c, quantize_pvt.h, + takehiro.c (takehiro-2002_05_07-experimental): + + table size reduction + +2004-11-30 08:55 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + clean up. + +2004-11-30 07:59 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + generalized signbits encoding hack for IEEE754 + +2004-11-30 07:52 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + IEEE754 hack for sign bit. + +2004-11-30 07:41 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix decoding... oops... + +2004-11-30 01:07 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + cleanup + +2004-11-30 01:05 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + tuning VBR scalefactor prediction and fix treatment of almost silent scalefactor. + +2004-11-29 23:41 takehiro + + * libmp3lame/psymodel.c: + + fix ATHlower is always "0". + +2004-11-29 18:01 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix comments + +2004-11-29 18:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + changed VBR scalefactor prediction method. + use "previous" scalefactor's values as predicted value. + +2004-11-29 16:46 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix for out of memory. + +2004-11-29 04:51 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + remove unused definitions + +2004-11-29 04:51 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + remove console.h + +2004-11-28 19:10 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c: + + some FLOAT -> int + +2004-11-28 19:09 takehiro + + * frontend/: Makefile.am, Makefile.in, console.c, console.h + (takehiro-2002_05_07-experimental): + + remove unused files. + +2004-11-28 18:21 takehiro + + * Dll/BladeMP3EncDLL.c: + + added brancket to fix bugid#1003342 on sf.net + +2004-11-28 17:15 takehiro + + * frontend/get_audio.c, frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + "-s" option is now prior to the frequency data in .wav file header. + +2004-11-28 15:21 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed double constants into FLOAT type + +2004-11-28 14:47 takehiro + + * libmp3lame/: lame.c, mpglib_interface.c, quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + To optimize more, changed sign of gfc->width[] (now they are minus value) + +2004-11-28 14:24 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-11-28 14:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-11-28 14:01 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + now ABR is based on VBR, so the -q setting has no meaning. + +2004-11-28 13:58 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + changed table type int -> char, to avoid cache line conflict. + +2004-11-28 13:40 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + little bit optimizing + +2004-11-28 12:58 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-11-28 12:57 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + oops... use "-mcpu" and "-mtune" by checking gcc version. + +2004-11-28 11:38 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + use calculation instead of table. + (encoding results may be different from previous versions, but that's "lossless" difference) + +2004-11-28 11:06 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + make them static + +2004-11-28 10:33 takehiro + + * configure, configure.in (takehiro-2002_05_07-experimental): + + changed -mcpu -> -mtune, because newer gcc doesn't like -mcpu. + +2004-11-28 08:47 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-11-28 08:47 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + changed optimization option + +2004-11-27 19:43 takehiro + + * Makefile.MSVC, Makefile.in, Makefile.unix, aclocal.m4, configure, + ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.am, frontend/Makefile.in, + frontend/get_audio.c, frontend/get_audio.h, + frontend/lame_vc6.dsp, frontend/main.c, frontend/mp3rtp.c, + frontend/mp3x_vc6.dsp, frontend/portableio.c, + frontend/portableio.h, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + remove portableio.[ch] + use automake 1.9.2 to regen the auto* stuffs. + +2004-11-27 17:28 takehiro + + * frontend/: get_audio.c, portableio.c, portableio.h + (takehiro-2002_05_07-experimental): + + remove Read32BitsHighLow() + +2004-11-27 17:21 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix file size reading + +2004-11-27 17:21 takehiro + + * frontend/: portableio.c, portableio.h + (takehiro-2002_05_07-experimental): + + remove unused functions. + +2004-11-27 09:57 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + remove AIFF support from LAME standard input code. + if you need an AIFF support, use libsndfile instead. + +2004-11-23 18:38 takehiro + + * configure, configure.in, frontend/get_audio.c + (takehiro-2002_05_07-experimental): + + support libsndfile 1.0.x + (and remove support that of 0.x) + +2004-11-23 15:18 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2004-11-23 15:18 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + - ABR quality adjustment. + (oops, I forget to commit in the previous one) + +2004-11-23 15:17 takehiro + + * libmp3lame/: quantize.c, encoder.h + (takehiro-2002_05_07-experimental): + + - ABR quality adjustment (little bit). + - manually inlining finish_VBR_coding() + +2004-11-23 09:46 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + supress magic numbers + +2004-11-23 08:27 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization by reducing branch. + +2004-11-21 18:45 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + now alpha 11, including new ABR + +2004-11-21 18:45 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + clean up + +2004-11-21 18:41 takehiro + + * libmp3lame/: encoder.h, quantize.c + (takehiro-2002_05_07-experimental): + + brand new ABR algorith. + - simply adjust the psycho-threshold by checking (target bitrate) vs. + (current bitrate) + +2004-11-21 18:32 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + fix VBR tag is completely messed up! + +2004-11-21 12:28 takehiro + + * libmp3lame/: bitstream.c, encoder.h, lame.c, psymodel.c, + quantize.c, quantize_pvt.h, tables.c + (takehiro-2002_05_07-experimental): + + simplify the initialization of gr_info[][] + +2004-11-21 12:26 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + cosmetic change + +2004-11-21 12:25 takehiro + + * libmp3lame/tables.h (takehiro-2002_05_07-experimental): + + changed comments + +2004-11-21 12:23 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + optimize in the case of width = 2. + +2004-11-21 10:45 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c + (takehiro-2002_05_07-experimental): + + use 32bit input even when MP3 decoding, to prepare better precision mp3 decoder. + remove "get_audio16()" function, because now it is not needed at all. + +2004-11-20 18:43 takehiro + + * frontend/: gtkanal.c, main.c (takehiro-2002_05_07-experimental): + + To make mp3x use 32bit integer encoding interface. + Because it has used 16bit interface, it could not analyze the 32bit input data. + Now it is fixed. + +2004-11-20 11:49 takehiro + + * frontend/gpkplotting.c (takehiro-2002_05_07-experimental): + + merge from main branch. + - more explicit display of noise values + +2004-11-17 19:54 bouvigne + + * libmp3lame/: quantize.c, util.h: + + noise shaping type 3: + amplify bands within 50% of distortion, + then refine by amplifying the most distorted band + +2004-10-24 14:26 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2004-10-24 14:25 bouvigne + + * libmp3lame/lame.c: + + reworked -q values: + noise_shaping_amp 2 removed + full Huffman search removed in q0 + full outer loop search enabled in q0 + +2004-10-24 14:21 bouvigne + + * libmp3lame/: quantize.c, util.h: + + full outer loop search: + allows to search for better quantization until global_gain==255 + +2004-09-18 10:20 takehiro + + * ACM/ACM.cpp (takehiro-2002_05_07-experimental): + + sync with main branch (r1.17) + - fix by Dmitriy Startsev + +2004-09-18 10:09 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + fix bug item #1003342 + +2004-08-19 19:49 bouvigne + + * doc/html/history.html: + + added 3.96.1 + +2004-08-19 19:36 bouvigne + + * doc/html/modes.html: + + spelling, clarifications + +2004-07-28 20:33 robert + + * configure, configure.in (RELEASE__3_96-bugfix-branch): + + updating configure to version number 3.96.1 + +2004-07-21 18:59 bouvigne + + * doc/html/: history.html, index.html + (RELEASE__3_96-bugfix-branch): + + updated for 3.96.1 + +2004-07-21 18:52 bouvigne + + * ACM/: ACM.cpp, ACMStream.cpp, acm.rc + (RELEASE__3_96-bugfix-branch): + + sync fixes from main branch + +2004-07-21 18:46 bouvigne + + * ACM/ACM.cpp: + + fix by Dmitriy Startsev + +2004-07-11 18:12 bouvigne + + * ACM/acm.rc: + + updated version number because of recent fixes + +2004-07-11 18:11 bouvigne + + * ACM/ACMStream.cpp: + + fixed a potential crash + +2004-07-11 18:05 bouvigne + + * ACM/ACM.cpp: + + Should fix the display issue under win95 + +2004-07-11 17:11 bouvigne + + * ACM/ACM.cpp: + + fix crash when used through directshow. + It still does not work in this configuration, but at least it does not crash anymore. + +2004-06-27 19:32 robert + + * libmp3lame/psymodel.c (RELEASE__3_96-bugfix-branch): + + fixed short block detection using mid and side channels + +2004-06-27 13:02 bouvigne + + * libmp3lame/psymodel.c: + + fixed short block detection using mid and side channels + +2004-06-26 17:08 robert + + * Makefile.unix, ACM/ACM.cpp, libmp3lame/gain_analysis.c, + libmp3lame/gain_analysis.h, libmp3lame/lame.c, + libmp3lame/psymodel.c, libmp3lame/vbrquantize.c, + libmp3lame/version.c, libmp3lame/version.h + (RELEASE__3_96-bugfix-branch): + + back porting some bug fixes into 3.96 stable branch + + patch by takehiro: + + fix bug id 921798 + http://sourceforge.net/tracker/index.php?func=detail&aid=921798&group_id=290&atid=100290 + + This is reported as bug for "BCC", but it may happen for every compiler. + + patch by olcios: + + A better fix for the FP x86 problem. Provided by Andrew Church. Modified by olcios. + + patch by bouvigne: + + restored use of padding when not using bit reservoir + + patch by robert: + + bug fix for lame crashing occasionally when using --vbr-new + +2004-06-26 15:35 bouvigne + + * libmp3lame/encoder.c: + + lame_encode_frame_init + +2004-06-20 17:28 bouvigne + + * doc/html/history.html, libmp3lame/lame.c: + + restored use of padding when not using bit reservoir + +2004-06-18 19:15 bouvigne + + * libmp3lame/: bitstream.c, encoder.c, l3side.h, lame.c, + mpglib_interface.c, newmdct.c, psymodel.c, quantize.c, + quantize_pvt.c, quantize_pvt.h, reservoir.c, takehiro.c, util.c, + VbrTag.c, util.h, vbrquantize.c, vbrquantize.h, version.h: + + FLOAT8 -> FLOAT + +2004-06-06 15:31 bouvigne + + * frontend/: gpkplotting.c, gtkanal.c: + + more explicit display of noise values + +2004-06-06 14:15 bouvigne + + * frontend/gtkanal.c: + + display more scalefactor band splitting lines. + (as in exp branch) + +2004-06-06 09:48 bouvigne + + * doc/html/history.html: + + history + +2004-06-05 15:46 bouvigne + + * libmp3lame/quantize.c: + + small speedup: init_xrpow only up to max non-zero coeff + +2004-05-31 17:35 bouvigne + + * libmp3lame/takehiro.c: + + reduced the number of calls to quantization function + +2004-05-27 23:55 robert + + * libmp3lame/version.h: + + now at 3.97 alpha 2 + +2004-05-27 23:52 robert + + * libmp3lame/: takehiro.c, vbrquantize.c: + + bug fix for lame crashing occasionally when using --vbr-new + PS: scalefactor allocation is still not optimal + +2004-05-26 21:37 bouvigne + + * libmp3lame/takehiro.c: + + fixed a stupid bug + +2004-05-26 21:04 bouvigne + + * libmp3lame/takehiro.c: + + fixed a bug in quantize_xrpow, but it is still crashing + Oddly, cbr/abr are working fine, and low vbr settings are also working fine. + -V2 is not working + +2004-05-23 13:16 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c, util.h: + + Use function pointer to select between quantization methods. + This should ease plugin of vectorized versions + +2004-05-23 12:47 bouvigne + + * libmp3lame/takehiro.c: + + factorized code which is selecting which lines to quantize + +2004-05-23 12:43 bouvigne + + * configMS.h: + + version + +2004-05-23 06:23 takehiro + + * libmp3lame/: tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + make some tables as static + +2004-05-23 04:23 takehiro + + * libmp3lame/i386/: choose_table.nas, fft3dn.nas, quantSSE.nas + (takehiro-2002_05_07-experimental): + + fix possible link problem on cygwin + +2004-05-22 16:18 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + fix cygwin build + +2004-05-22 14:26 takehiro + + * libmp3lame/: encoder.h, quantize_pvt.h, tables.c, takehiro.c, + i386/choose_table.nas (takehiro-2002_05_07-experimental): + + reduce MMX code, because C code is faster than asm one :p + and trivial coding tweaks. + +2004-05-22 14:02 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimization by reducing conditional jumps + +2004-05-22 13:53 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + optimization by changing multiply -> shift + +2004-05-22 10:54 takehiro + + * libmp3lame/: takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + faster choose_table_*() implimentation. use cached value of ix_max(). + +2004-05-22 09:14 takehiro + + * libmp3lame/: takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + changed choose_table_*() API, for further optimizations. + +2004-05-16 16:57 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + choose_from2 is only used when table=1 or 3. + +2004-05-16 16:54 takehiro + + * libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + added ReplayGain tag output. + +2004-05-16 16:49 takehiro + + * include/lame.h, libmp3lame/encoder.h, libmp3lame/lame.c, + libmp3lame/tags.c (takehiro-2002_05_07-experimental): + + Changed API of tag-output function making it possible to return the error code. + and clean up arround tag output code. + +2004-05-16 16:47 takehiro + + * libmp3lame/gain_analysis.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-05-16 16:46 takehiro + + * frontend/: get_audio.c, main.c, portableio.c, portableio.h + (takehiro-2002_05_07-experimental): + + trivial + +2004-05-16 12:48 takehiro + + * Makefile.unix (takehiro-2002_05_07-experimental): + + to follow that amiga_mpega.c is removed. + +2004-05-16 12:47 takehiro + + * frontend/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2004-05-15 13:06 takehiro + + * Makefile.MSVC, libmp3lame/libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + added gain_analysis.[ch] + +2004-05-15 13:04 takehiro + + * ACM/LameACM.inf (takehiro-2002_05_07-experimental): + + (very experimental thing) added "register/unregister program" + +2004-05-15 13:03 takehiro + + * ACM/TODO (takehiro-2002_05_07-experimental): + + it always "preset" so the itmes are removed. + +2004-05-15 12:58 takehiro + + * Makefile.unix (takehiro-2002_05_07-experimental): + + fix testcase + added gain_analysis + +2004-05-15 10:37 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-05-15 10:09 takehiro + + * frontend/: Makefile.am, amiga_mpega.c + (takehiro-2002_05_07-experimental): + + do not use amiga_mpega.c. use mpg123 instead. + +2004-05-15 08:56 takehiro + + * libmp3lame/: bitstream.c, encoder.h, gain_analysis.c + (takehiro-2002_05_07-experimental): + + added replaygain calculation code. + (but not enabled yet) + +2004-05-14 19:29 aleidinger + + * Makefile.in, ACM/Makefile.in, ACM/ADbg/Makefile.in, + ACM/ddk/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + regen with new auto* version + +2004-05-14 19:26 aleidinger + + * configure: + + regen with new auto* version + +2004-05-14 19:22 aleidinger + + * aclocal.m4: + + regen with new auto* version + +2004-05-14 19:20 aleidinger + + * frontend/depcomp, libmp3lame/depcomp, mpglib/depcomp, depcomp, + install-sh, missing: + + update to a new version + +2004-05-14 19:12 aleidinger + + * testcase.mp3: + + update it to have a more sane number + +2004-05-14 19:11 aleidinger + + * Makefile.am: + + Tell the users that they do not have to care about the output of make test. + +2004-05-14 17:29 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2004-05-14 17:11 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + reduce warning + +2004-05-14 16:55 takehiro + + * libmp3lame/Makefile.am (takehiro-2002_05_07-experimental): + + added gain_analysis.[ch] + +2004-05-05 06:34 takehiro + + * libmp3lame/: lame.c, mpglib_interface.c + (takehiro-2002_05_07-experimental): + + free the decoding work area of replaygain analysis. + +2004-05-05 06:29 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix memory leakage when it uses decoding functions. + +2004-05-05 06:29 takehiro + + * libmp3lame/: gain_analysis.c, gain_analysis.h + (takehiro-2002_05_07-experimental): + + sync with the latest version + +2004-05-05 06:27 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix for the machine without memset() + +2004-05-05 06:23 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix for the machine without memset() + +2004-05-05 06:22 takehiro + + * frontend/: get_audio.c, main.c + (takehiro-2002_05_07-experimental): + + one more AIFF cleanup + +2004-05-05 06:18 takehiro + + * frontend/: get_audio.c, get_audio.h, portableio.h + (takehiro-2002_05_07-experimental): + + clean up AIFF related code. but still it cannot read AIFF file... + +2004-05-05 06:02 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, mp3rtp.c + (takehiro-2002_05_07-experimental): + + reduce warning + +2004-05-05 05:55 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + remove AMIGA_MPEG support. + use mpg123 instead. + +2004-04-25 13:08 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix "stop/plot" button working. + Thanx reporting, Gaby. + +2004-04-25 12:42 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix obvious bugs... + +2004-04-25 12:33 bouvigne + + * frontend/gtkanal.c: + + fixed mp3x monopolizing processor in its idle loop + +2004-04-25 10:18 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + merged into lame.c + +2004-04-25 10:07 takehiro + + * libmp3lame/: Makefile.in, libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + regen + +2004-04-25 09:47 takehiro + + * Makefile.MSVC, Makefile.unix, frontend/brhist.c, include/lame.h, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/encoder.h, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + merged encoder.c into lame.c. + + remove lame_bitrate_kpbs(). use bitrate_table[][] directly instead of it. + +2004-04-25 09:06 takehiro + + * libmp3lame/: encoder.h, quantize.c + (takehiro-2002_05_07-experimental): + + reduce memory usage by moving maxXR[] from gi to gfc. + +2004-04-25 06:13 takehiro + + * libmp3lame/psymodel.c: + + fix bug id 921798 + http://sourceforge.net/tracker/index.php?func=detail&aid=921798&group_id=290&atid=100290 + + This is reported as bug for "BCC", but it may happen for every compiler. + +2004-04-24 18:29 olcios + + * libmp3lame/gain_analysis.h: + + changed some constants' types to long + +2004-04-24 17:47 olcios + + * libmp3lame/: gain_analysis.c, gain_analysis.h: + + A better fix for the FP x86 problem. Provided by Andrew Church. Modified by olcios. + +2004-04-24 17:02 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix it access to the log2tab[LARGE_BITS] + +2004-04-24 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it always use the bit pressure algorith for short blocks on long blocks. + +2004-04-24 16:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + remove one mp3x TODO item (but still many TODOs about mp3x...) + +2004-04-24 16:33 takehiro + + * testcase.mp3, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/tags.c + (takehiro-2002_05_07-experimental): + + one more error code clean up. + +2004-04-24 16:31 takehiro + + * mpglib/: interface.c, layer3.c + (takehiro-2002_05_07-experimental): + + cosmetic change and comment style fix. + +2004-04-24 16:30 takehiro + + * mpglib/mpglib.h (takehiro-2002_05_07-experimental): + + patch from Dmitriy Startsev. + (yes, this is from Dmitriy... sorry) + +2004-04-24 16:27 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + to check the "free-ed memory access" + +2004-04-24 16:26 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix mp3x cannot displays short mp3 file (it segfaults). + +2004-04-24 13:36 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix flush code + +2004-04-24 13:09 takehiro + + * include/lame.h, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + update error code. + +2004-04-24 11:09 takehiro + + * libmp3lame/: bitstream.c, encoder.h, quantize.c + (takehiro-2002_05_07-experimental): + + fix comments and cosmetic change + +2004-04-24 10:44 takehiro + + * libmp3lame/: bitstream.c, lame.c, tags.c, tags.h, util.c + (takehiro-2002_05_07-experimental): + + fix CRC calculation + remove redundant include + added some comments about flushing + +2004-04-24 10:40 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + remove commnts, which are the same as in lame.h + +2004-04-24 10:39 takehiro + + * libmp3lame/psymodel.c, libmp3lame/quantize.c, include/lame.h, + libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-04-18 18:11 takehiro + + * libmp3lame/: lame.c, tables.c, tags.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + clean up arround VBR Tag frame size. + clean up arround "POSTDELAY" + +2004-04-18 17:30 takehiro + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + follow the filename changes + +2004-04-18 17:24 takehiro + + * libmp3lame/: util.c, util.h (takehiro-2002_05_07-experimental): + + fix build problem on Linux + +2004-04-18 17:16 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + follow the file name change. + +2004-04-18 17:10 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + remove redundant include + +2004-04-18 17:10 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2004-04-18 17:09 takehiro + + * libmp3lame/: Makefile.am, VbrTag.c, VbrTag.h, bitstream.c, + bitstream.h, encoder.c, id3tag.c, id3tag.h, lame.c, tags.c, + tags.h, util.c, util.h (takehiro-2002_05_07-experimental): + + merged "VbrTag.c" and "id3tag.c" into one (tags.c) + merged "VbrTag.h" and "id3tag.h" into one (tags.h) + simplify the CRC related code. + +2004-04-18 12:59 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + fix mpglib problem. The patch is from Kristian Hermansen. + (forwarded by Dmitriy Startsev) + +2004-04-18 12:43 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + encoder.h, id3tag.c, id3tag.h, lame.c, newmdct.c, psymodel.c, + quantize_pvt.h, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + * large clean up arround Tags and Header. + - directly output the Tags/Headers instead of using add_dummy_byte() + + reduce memory usage by using "union" + +2004-04-18 11:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added MP3X bug as TODO. + +2004-04-18 11:11 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, encoder.h, lame.c, + newmdct.c, psymodel.c, quantize.c, tables.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + clean up lame_t structure. + +2004-04-18 10:32 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix MP3X monopolizing the processor in its idle loop. + +2004-04-14 22:15 robert + + * frontend/get_audio.c, mpglib/common.c, mpglib/common.h, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/interface.c, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer2.h, + mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, + mpglib/mpglib.h, mpglib/tabinit.c: + + fixing the decoding issue with the reported "Christmas" song. + I've taken Takehiro's modifications and getting the same output + as he does on his 4.0 branch. Imho this is not the best solution + to the given problem, but it works for now. + +2004-04-14 16:48 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + fix build problem reported by PAN-san. + +2004-04-13 17:21 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix fatal bug in scalefactor value lossless coding. + +2004-04-12 12:29 aleidinger + + * debian/lame.docs: + + PRESETS.draft does not exists anymore. + +2004-04-11 18:16 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + adjust ATH adjustment. + +2004-04-11 18:15 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix "1 sample" delay + +2004-04-11 17:24 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix mp3x FFT energy display. + +2004-04-11 15:39 glessard + + * frontend/main.c, include/lame.h, libmp3lame/set_get.c: + + Added two sets of set/get functions to the API. They modify and read the + nogap_total and nogap_current variables of the internal_flags struct. + Added calls to these functions to the gapless-encoding loop of the frontend. + +2004-04-11 15:06 aleidinger + + * ChangeLog: + + update + +2004-04-11 15:04 aleidinger + + * configure: + + regen + +2004-04-11 15:00 aleidinger + + * config.h.in: + + Add some missing LARGEFILE pieces. This patch is also in the generated + lame-3.96 tarball, it just enters the CVS repository for 3.97 for + organizational reasons. + +2004-04-11 14:58 aleidinger + + * configure.in: + + Welcome to lame 3.97. + +2004-04-11 14:27 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c, set_get.c, tables.c + (takehiro-2002_05_07-experimental): + + merged gfc->num_channels & gfc->channels_in + some trivial clean up. + +2004-04-11 13:54 takehiro + + * libmp3lame/VbrTag.c, libmp3lame/encoder.h, libmp3lame/lame.c, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.c, + libmp3lame/util.h, include/lame.h + (takehiro-2002_05_07-experimental): + + changed error/debug/normal message output code. + +2004-04-11 13:10 takehiro + + * debian/: changelog, lame.docs, rules + (takehiro-2002_05_07-experimental): + + updated for lame4 + +2004-04-11 13:09 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c, mpglib_interface.c, + tables.c (takehiro-2002_05_07-experimental): + + clean up the members of structure lame_t. + +2004-04-11 13:08 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + fix build problem when --disable-analysis-hook + +2004-04-11 13:05 bouvigne + + * libmp3lame/version.h: + + 3.97a1 + +2004-04-11 13:03 bouvigne + + * libmp3lame/version.h: + + release 3.96 + +2004-04-11 13:03 bouvigne + + * doc/html/history.html: + + history + +2004-04-11 13:02 bouvigne + + * debian/changelog: + + updated debian changelog + +2004-04-11 13:01 bouvigne + + * libmp3lame/presets.c: + + use X9 to select abr/cbr quantization, + use sfscale up to 160kbps + +2004-04-11 12:50 bouvigne + + * Makefile.in: + + manually updated Makefile.in + +2004-04-11 12:12 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen (by hand) + +2004-04-11 12:10 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix confusion arround "decoder" and "decode" + +2004-04-11 11:58 takehiro + + * libmp3lame/lame-analysis.h, frontend/gtkanal.c + (takehiro-2002_05_07-experimental): + + trivial + +2004-04-11 11:57 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c + (takehiro-2002_05_07-experimental): + + one more fix for "very the beginig samples" + +2004-04-11 11:55 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes goes into infinite loop when with i-stereo. + +2004-04-10 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x display delay. + +2004-04-10 16:56 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + remove redandunt code. + +2004-04-10 16:48 takehiro + + * libmp3lame/: encoder.c, encoder.h, lame.c, newmdct.c, psymodel.c, + quantize.c, set_get.c (takehiro-2002_05_07-experimental): + + fix "start" delay and reduce buffer size. + still there's known bugs in mp3x and the tail part encoding. + +2004-04-10 16:15 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix trivial bug when stereo input + +2004-04-10 15:43 takehiro + + * frontend/: get_audio.c, get_audio.h, gtkanal.c, lametime.c, + lametime.h, main.c, mp3rtp.c (takehiro-2002_05_07-experimental): + + frontend code fix and clean up. + - fix it cut the beginning 17 samples when input is .wav file. + - fix function names. remove "lame_" prefix from the functions which is not + LAME API. + - and some trivial clean up. + +2004-04-10 13:23 takehiro + + * frontend/gpkplotting.c (takehiro-2002_05_07-experimental): + + remove unused definition + +2004-04-10 12:08 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + clarify the comment + +2004-04-04 15:13 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + reduce POSTDELAY when MPEG2 layer3 + +2004-04-04 12:49 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.h, + libmp3lame/lame.c, libmp3lame/set_get.c, libmp3lame/tables.c + (takehiro-2002_05_07-experimental): + + rename ns-(bass|alto|treble) options and their implementation. + +2004-04-04 12:45 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + always support MPEG1. + +2004-04-04 12:33 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial + +2004-04-04 11:55 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-04-04 11:54 takehiro + + * libmp3lame/: util.c, machine.h + (takehiro-2002_05_07-experimental): + + include file clean up. + +2004-04-04 11:52 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + replace snprintf() with strncat() and so on, for some old systems. + +2004-04-03 19:30 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + work arround for short blocks with i-stereo bug. + and some simplification of i-stereo code. + +2004-04-03 19:25 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + display more scalefactor band splitting lines. + +2004-04-03 17:35 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix uninitialized memory access (found by valgrind). + +2004-04-03 17:28 bouvigne + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h: + + Add X9 quantization selection method. + It increases applaud.wav substancially. + Not enabled by default + +2004-04-03 17:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + try to find better scalefactor combination when i-stereo. + +2004-04-03 17:07 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove one condition which is always stisfied. + +2004-04-03 13:17 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better bit allocation when substep noise shaping. + +2004-04-02 16:37 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix "all even" hack. + +2004-04-02 15:54 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + better bit allocation for CBR. + - increase bit allocation on start/end blocks, where the effect of + best_huffman_divide() is very weak. + - increase bit allocation when --substep is enabled. + + some trivial clean up. + +2004-03-30 15:49 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix it sometimes crashes with -q0 or -q1 + CBR + +2004-03-28 16:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2004-03-28 13:11 bouvigne + + * libmp3lame/version.h: + + 3.96 beta 2 + +2004-03-28 13:10 bouvigne + + * doc/html/history.html: + + history + +2004-03-28 13:10 bouvigne + + * libmp3lame/presets.c: + + updated minimal bitrate for V1 and V2 + +2004-03-28 12:41 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + reduce array size + +2004-03-28 12:16 takehiro + + * libmp3lame/: bitstream.c, encoder.c, encoder.h, lame.c, + quantize.c, tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + warning fix, cleanup, and cosmetic change. + +2004-03-28 12:16 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + there is already VC6 project file. We (maybe) need .net project/solution file. + +2004-03-28 11:29 takehiro + + * frontend/mp3x.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + remove lame_encode_finish() API + +2004-03-28 11:28 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fixed mixed block statics + trivial optimization/clean up + +2004-03-27 17:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + - use calc_sfb_noise() and calc_sfb_noise_fast() do not return minus value. + - little better CBR_2nd_bitalloc() + +2004-03-27 14:50 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + reduce table size. + +2004-03-27 14:49 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix warnings + +2004-03-27 12:38 takehiro + + * libmp3lame/: bitstream.c, quantize.c + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-03-27 11:18 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + simplification arround huffman code output + +2004-03-27 09:47 takehiro + + * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.h, tables.c, + takehiro.c (takehiro-2002_05_07-experimental): + + clean up. fix warning and trivial optimizations. + +2004-03-27 08:31 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2004-03-27 07:48 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + simplify the code arround huffman coding with the escape sequence. + +2004-03-23 22:17 robert + + * libmp3lame/vbrquantize.c, Makefile.unix: + + rewritten vbr-new + + the scalefactor allocation functions take into account now, that some + minimal scalefactor has to be used (the less IXMAX_VAL case) + + the output of vbr-new is not bit identical to previous ones, but the + code is much more straight forward now. + +2004-03-23 22:11 robert + + * libmp3lame/util.c: + + patch for resampling code, found by Takehiro + + this patch removes some unneccessary integer rounding + resulting mp3s where bit identical, but resampling is faster now + +2004-03-23 03:07 olcios + + * frontend/parse.c: + + fixed a compile-time issue in --longhelp + +2004-03-23 01:57 olcios + + * USAGE, doc/html/switchs.html, doc/man/lame.1, frontend/main.c, + frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.h: + + 1. added --noreplaygain switch that disables RG 2. added --replaygain-fast switch that complements --replaygain-accurate. The new switch is enabled by default in the frontend. 3. Made RG analysis no longer default in libmp3lib. RG can still be fully controlled via the libmp3lib interface, but for other interfaces, like DLL or ACM, that provide no RG control, RG analysis is now _disabled_. 4. updated documentation + +2004-03-21 17:53 takehiro + + * frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c, libmp3lame/version.c, mpglib/interface.c + (takehiro-2002_05_07-experimental): + + more API clean up and cosmetic changes. + +2004-03-21 17:51 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + faster float comparison when FLOAT is float. + some cosmetic changes + +2004-03-21 17:14 takehiro + + * libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/id3tag.c, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/machine.h, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.h, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/takehiro.c, mpglib/interface.c + (takehiro-2002_05_07-experimental): + + clean up APIs and variable names (to fix warnings when -Wshadow) + +2004-03-21 16:27 takehiro + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/id3tag.c, + libmp3lame/lame-analysis.h, libmp3lame/machine.h, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/takehiro.c, libmp3lame/version.h + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-03-21 15:51 takehiro + + * libmp3lame/: machine.h, psymodel.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + clean up arround IEEE754 hack. + +2004-03-21 15:47 takehiro + + * libmp3lame/: VbrTag.c, encoder.h + (takehiro-2002_05_07-experimental): + + remove unused "nogap" related variables. + +2004-03-21 15:41 takehiro + + * libmp3lame/: VbrTag.c, encoder.c, encoder.h + (takehiro-2002_05_07-experimental): + + fix invalid vbr header output when ABR. + merge gfc->frameNum and gfc->nVbrNumFrames. + +2004-03-21 14:51 takehiro + + * libmp3lame/: encoder.h, psymodel.c, psymodel.h, quantize.c + (takehiro-2002_05_07-experimental): + + remove magic numbers + +2004-03-21 14:32 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + header file style/comment fix. + +2004-03-21 14:32 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial + +2004-03-21 14:31 takehiro + + * mpglib/: layer3.c, mpg123.h (takehiro-2002_05_07-experimental): + + trivial optimization + +2004-03-21 14:31 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + remove obsolete API. + +2004-03-21 13:51 takehiro + + * ACM/DecodeStream.h, frontend/gtkanal.c, frontend/mp3x.c, + frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/id3tag.c, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/set_get.c, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/util.h, libmp3lame/version.c, mpglib/layer3.c, + mpglib/mpglib.h (takehiro-2002_05_07-experimental): + + clean up header files. + +2004-03-21 13:00 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + new testcase + +2004-03-21 12:37 takehiro + + * libmp3lame/: encoder.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + clean up APIs of set_frame_pinfo() + +2004-03-21 12:34 takehiro + + * libmp3lame/: lame.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + clean up arround buffer flush. + and remove "mf_samples_to_encode" from lame_t. + +2004-03-21 12:33 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2004-03-21 11:55 takehiro + + * libmp3lame/: encoder.c, lame.c, quantize.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + clean up and "possible" bug of resampling code. + - calculate resampling value with "sample_t" instead of "int". + - moved resampling initialization code into tables.c + +2004-03-21 10:37 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + oops, remove gabage... + +2004-03-21 10:34 takehiro + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + clean up internal APIs + +2004-03-21 10:33 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix prototype declaration, to clarify all the ASM code cannot run when FLOAT!=float + +2004-03-21 07:12 takehiro + + * libmp3lame/: lame.c, util.c (takehiro-2002_05_07-experimental): + + header file clean up (I hope it works...) + +2004-03-21 07:10 takehiro + + * libmp3lame/: encoder.c, lame.c, util.h + (takehiro-2002_05_07-experimental): + + do not use calloc in lame_encode_* functions. + and moved some functions for better conjunctions. + +2004-03-21 07:09 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial + +2004-03-21 05:08 takehiro + + * ACM/main.cpp (takehiro-2002_05_07-experimental): + + fix build problem on mingw + +2004-03-20 17:28 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + move fill_buffer() function and make it static and bit optimizing. + +2004-03-20 16:04 takehiro + + * libmp3lame/: quantize.c, util.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + Faster quantization code, based on the ideas from the main line (done by Gaby). + about 2% faster on VBR. The same algorithm can be applied to the CBR, but + currently is not. + +2004-03-19 22:09 olcios + + * libmp3lame/gain_analysis.c: + + changed the pre-processor condition related to the x86's extended FP bug when compiled by GCC with optimizations + +2004-03-19 18:18 olcios + + * libmp3lame/gain_analysis.c: + + improved comment + +2004-03-19 13:17 olcios + + * libmp3lame/gain_analysis.c: + + workaround for the gcc ceil() bug when compiled with optimizations + +2004-03-18 22:00 olcios + + * libmp3lame/gain_analysis.h: + + fixed compile-time problem with uint32_t on gcc + +2004-03-18 16:11 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix uninitialized memory access. + +2004-03-18 14:27 aleidinger + + * libmp3lame/: gain_analysis.c, gain_analysis.h: + + Replace Uint32_t and Int32_t with uint32_t and int32_t. There are only few + instances of them used, so there's no need to typedef new types for them. + + I hope this fixes problems on OSX reported on lame-dev. + + While I'm here, fix a cast (rgData->sampleWindow is long, not int). + +2004-03-17 18:56 aleidinger + + * libmp3lame/: bitstream.c, gain_analysis.c, gain_analysis.h, + lame.c: + + - remove config.h (prerequisite) include from gain_analysis.h + - make sure prerequisites get included in every file before gain_analysis.h + +2004-03-14 18:22 bouvigne + + * libmp3lame/gain_analysis.h: + + solved the potential data type problem + +2004-03-14 17:13 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/bitstream.c, + libmp3lame/encoder.c, libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.h, + libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + mpglib/layer3.c, mpglib/mpg123.h, mpglib/tabinit.c + (takehiro-2002_05_07-experimental): + + cosmetic changes. + +2004-03-14 16:19 takehiro + + * ACM/readme.txt (takehiro-2002_05_07-experimental): + + sync main branch + +2004-03-14 16:18 takehiro + + * ACM/ACMStream.cpp (takehiro-2002_05_07-experimental): + + sync main branch. + +2004-03-14 16:15 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + fix MSVC6+NASM compilation + +2004-03-14 16:00 takehiro + + * ACM/main.cpp (takehiro-2002_05_07-experimental): + + oops, I removed too much. + +2004-03-14 13:47 takehiro + + * frontend/brhist.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c + (takehiro-2002_05_07-experimental): + + cosmetic and reduce warnings + +2004-03-14 12:46 takehiro + + * libmp3lame/: bitstream.h, machine.h, psymodel.c, quantize_pvt.h, + tables.c, util.h (takehiro-2002_05_07-experimental): + + fix build problem on vanilla(without ICC) VC6. + better ATH handling for psymodel + and some minor cosmetic change + +2004-03-14 12:44 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-03-14 12:43 takehiro + + * libmp3lame/: gain_analysis.c, gain_analysis.h + (takehiro-2002_05_07-experimental): + + backport from the main branch. + (only copied. not working currently). + +2004-03-14 11:50 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better 8kHz/128kbps bit allocation. + +2004-03-14 06:17 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + sync main branch (fix freeformat decoding bug done by Robert Hegemann) + +2004-03-13 14:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix a warning. + +2004-03-13 13:00 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + fix build problem on VC6+debug mode + +2004-03-13 12:59 takehiro + + * libmp3lame/libmp3lame_vc6.dsp (takehiro-2002_05_07-experimental): + + fix build problem on VC6 + +2004-03-11 23:43 olcios + + * libmp3lame/bitstream.c: + + fixed a bug related to the usage of mpglib when decoding on the fly + +2004-03-11 19:35 olcios + + * libmp3lame/lame.c: + + fixed compile-time problem when mpglib is disabled + +2004-03-10 20:49 robert + + * doc/html/: contributors.html, history.html: + + history + +2004-03-10 00:50 robert + + * mpglib/interface.c: + + patch for freeformat decoding bug + +2004-03-09 19:04 bouvigne + + * libmp3lame/lame.c: + + typo + +2004-03-09 00:35 robert + + * libmp3lame/vbrquantize.c: + + found a sample which did not give bit identical result with the previous + patch. found out why and corrected it, so now the results for + find_scalefac_ave_[x34|ISO] are identical to the original code, + but --preset fast standard is ~7 percent faster now. + +2004-03-08 04:13 takehiro + + * mpglib/layer1.c (takehiro-2002_05_07-experimental): + + fix layer1 compilation problem. + +2004-03-08 04:12 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + remove unused label + +2004-03-08 04:04 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix alignment work and build problem with icl(MS-Windows) + +2004-03-08 00:54 robert + + * libmp3lame/vbrquantize.c: + + faster "find_scalefac_ave_[x34|ISO]": + this patch gave bit identical results on all tested samples compared to + previous version, so I'm pretty much confident that I don't introduce + a new bug here. + the speeding up of this functions results in an overall speed increase of + almost 7 percent for --preset fast standard + +2004-03-07 23:55 robert + + * Makefile.unix, Makefile.MSVC: + + in case of single precision (FLOAT8==float) we have to make sure that + the mpglib uses REAL==float too. otherwise the decoder will moan about + too small buffers + +2004-03-07 14:18 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + no Xing-VBR header except layer 3 + +2004-03-06 17:52 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix it ignores --scale option. + +2004-03-06 17:37 takehiro + + * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): + + remove Japanese comments. + +2004-03-06 16:32 takehiro + + * libmp3lame/: psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + revert the last psymodel change, and implement the better way to archive + more precise frequency analysis in the lower frequency region. This is + done by changing frequency -> bark conversion equation. + +2004-03-06 16:02 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + remove Jananese comments. + +2004-03-06 15:36 bouvigne + + * libmp3lame/version.h: + + entering beta stage + +2004-03-06 15:34 bouvigne + + * doc/html/history.html: + + history + +2004-03-01 22:21 robert + + * configMS.h, libmp3lame/version.h: + + we are now at 3.96 alpha 4 + +2004-03-01 22:20 robert + + * libmp3lame/psymodel.c: + + bug fix: the highly optimized loops did an off by one access resulting + in often invalid energy and threshold calculations. (both psy models + affected). added a workaround and some assertions. + +2004-03-01 15:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for testcase... (oops, simple mistake) + +2004-02-29 19:55 robert + + * libmp3lame/: bitstream.c, takehiro.c: + + fixing the "huffman decode overrun" and "mp3x problem" + +2004-02-29 18:20 bouvigne + + * doc/html/: contributors.html, history.html: + + no message + +2004-02-29 18:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for 8kHz with 128kbps. + +2004-02-29 17:58 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c, util.h + (takehiro-2002_05_07-experimental): + + better partitioning for psymodel calculation (very much experimental!) + +2004-02-29 17:17 takehiro + + * mpglib/layer1.c: + + fix layer1 decoding bug + +2004-02-29 17:16 takehiro + + * mpglib/layer1.c (takehiro-2002_05_07-experimental): + + fix monural file decoding bug in layer1, reported by Goran Markovic. + +2004-02-26 17:20 takehiro + + * frontend/get_audio.c: + + fixed Layer2 decoding bug reported by Goran Markovic + +2004-02-26 16:31 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fixed Layer2 decoding issue, reported by Goran Markovic. + +2004-02-25 22:10 robert + + * libmp3lame/util.c: + + fixing some aliasing problem in fastlog2 calculation + +2004-02-25 21:46 robert + + * libmp3lame/vbrquantize.c: + + getting rid of a warning about a function being defined but not used + +2004-02-25 21:46 robert + + * libmp3lame/gain_analysis.c: + + fixing code relying on compiler implementation details + +2004-02-25 21:41 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/VbrTag.c, libmp3lame/set_get.c, + libmp3lame/util.c: + + getting rid of some compiler warnings: + - about too long string constants + - about C++ stylish comments + there is still a warning about the use of a C99 hexadecimal floating + constant in portableio.c. will this compile on older C-compilers? + +2004-02-24 02:18 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + testcase with new huffman coding. + +2004-02-24 01:57 olcios + + * libmp3lame/lame.c: + + fixed a bug with --resample and ReplayGain analysis of input data. With certain parameters the data sent to analysis was mangled (some samples missing, some doubled, some in the wrong order). With most natural music the error wasn't vast (below 1dB), but with e.g. a sine wave the gain error was audible. + +2004-02-23 19:48 bouvigne + + * libmp3lame/gain_analysis.h: + + now works under gcc, but I am not sure about the typedefs on different platforms. + +2004-02-23 18:53 bouvigne + + * libmp3lame/: gain_analysis.h, util.h: + + moved replaygain_t to gain_analysis.h + +2004-02-23 14:50 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + improve lossless coding when all the quantized values in the same scalefactor band are even number. + +2004-02-22 21:17 bouvigne + + * libmp3lame/: bitstream.c, gain_analysis.c, gain_analysis.h, + lame.c, util.c, util.h: + + made ReplayGain reentrant + +2004-02-22 21:16 bouvigne + + * libmp3lame/quantize_pvt.c: + + yet another "usefullsize" bug (found by passing the python tests) + +2004-02-22 21:14 bouvigne + + * test/: CBRABR.op, VBR.op, misc.op, shortCBRABR.op, shortVBR.op: + + Updated test files. + As the cbr/abr and vbr ones are quite long, I also added some short ones. + +2004-02-17 00:37 robert + + * libmp3lame/lame.c: + + bug fix: in mono mode all block type where of short type due to forced + block type coupling + +2004-02-16 21:51 robert + + * libmp3lame/gain_analysis.c: + + bug fix by John Edwards (48 kHz replay gain segmentation fault) + +2004-02-15 21:39 robert + + * libmp3lame/: lame.c, vbrquantize.c: + + standard ISO quantization for vbr-mtrh + +2004-02-15 19:05 robert + + * libmp3lame/: lame.c, takehiro.c: + + bug fix: usefullsize may become negativ due to some optimizations + +2004-02-15 13:09 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + sprintf -> snprintf and some trivial clean up. + +2004-02-15 01:20 robert + + * libmp3lame/takehiro.c: + + a simple -V9 -f line lets LAME crash, + there seems to be something wrong with scalefactor width + at least my inserted assertions indicate this + +2004-02-10 02:04 robert + + * libmp3lame/vbrquantize.c: + + try to make some use of max_nonzero_coeff in vbr-mtrh + +2004-02-08 21:58 takehiro + + * frontend/: brhist.c, get_audio.c, get_audio.h, gtkanal.c, + lame.dsp, main.c, mp3rtp.c, parse.c, timestatus.c, timestatus.h + (takehiro-2002_05_07-experimental): + + misc clean ups. + - gfp/gfc things + - mp3 decoding patch from Dmitriy Startsev + - remove an old file + +2004-02-08 21:57 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + mp3 decoding patch from Dmitriy Startsev + +2004-02-08 19:00 bouvigne + + * libmp3lame/presets.c: + + reduced the number of short blocks + +2004-02-08 14:08 bouvigne + + * Makefile.am, lame.dsw: + + removed old workspace + +2004-02-08 12:44 bouvigne + + * libmp3lame/: quantize_pvt.c, takehiro.c: + + inverted a while statement, some int ->unsigned. + I hope that they will be safe this time. + +2004-02-08 03:10 robert + + * libmp3lame/takehiro.c: + + sorry Gabriel, reverting your signed->unsigned patch due to exceptions + while encoding awe32_20sec.wav using --preset standard + +2004-02-08 03:06 robert + + * libmp3lame/quantize_pvt.c: + + sorry Gabriel, reverting your signed->unsigned patch because of + exceptions in awe32_20sec.wav using --preset standard + +2004-02-08 03:01 robert + + * libmp3lame/vbrquantize.c: + + bug fix: scalefactors may have been read from uninitialized memory + +2004-02-08 02:12 robert + + * libmp3lame/: takehiro.c, vbrquantize.c: + + calculating xrpow_max for vbr_mtrh too + +2004-02-07 19:38 bouvigne + + * libmp3lame/: quantize_pvt.c, takehiro.c: + + some int -> unsigned int + +2004-02-06 16:56 takehiro + + * frontend/get_audio.c, mpglib/interface.c: + + mp3 decoding patch from Dmitriy Startsev + +2004-02-04 20:17 bouvigne + + * libmp3lame/version.h: + + bump alpha because of the fixed crash + +2004-02-04 20:16 bouvigne + + * libmp3lame/takehiro.c: + + fixed a crash in quantize_xrpow occuring when using low bitrates (32kbps) + +2004-02-02 15:20 olcios + + * USAGE, doc/html/switchs.html: + + reworded the RG part. Discussed with: Alexander Leidinger + +2004-02-02 14:17 olcios + + * testcase.mp3: + + oops, committed an experimental file, reverting back to 1.80 + +2004-02-02 13:28 aleidinger + + * configure: + + regen + +2004-02-02 13:25 aleidinger + + * configure.in: + + Add a check for 64 bit off_t's ("LARGEFILE" support). + + This may not be enough as lame uses ints and longs where other types + may be more correct, but it may work in some cases. + + HOWTO provided by: Dan Nelson <dnelson@allantgroup.com> + +2004-02-02 13:02 aleidinger + + * doc/man/lame.1: + + - reformatted the replaygain part (less than 80 characters per line) + - reworded some parts + - add a note about the decoder requierement for the --decode, + --replaygain-accurate and --clipdetect options + + Discussed with: Aleksander Korzynski + +2004-02-02 12:58 aleidinger + + * config.h.in, configure: + + regen + +2004-02-02 12:57 aleidinger + + * configMS.h: + + Add the DECODE_ON_THE_FLY define in the HAVE_MPGLIB case. + +2004-02-02 12:57 aleidinger + + * configure.in, include/lame.h: + + - enable bitrate histogram by default + discussed with Gabriel in Sept. 03 + + - define DECODE_ON_THE_FLY for the replaygain feature in the HAVE_MPGLIB + case too (moved from include/lame.h, I think it's cleaner this way) + discussed with Aleksander Korzynski + +2004-02-02 12:38 aleidinger + + * libmp3lame/id3tag.c: + + Patch from Ti Kan <ti@amb.org>: + ---snip--- + Below is a patch to make Lame 3.95.1 compile and run on AIX, HP-UX, + IRIX, Solaris, UnixWare, SCO Open Server and SunOS 4.1.x. + + The change involves the call to snprintf() in libmp3lame/id3tag.c., + but snprintf() is not available on many of these platforms. I know + that in general replacing snprintf() with sprintf() removes a layer + of string buffer overflow protection, but in this case it should + be safe because the size of string is bounded. + ---snip--- + +2004-01-31 20:05 olcios + + * testcase.mp3, frontend/main.c, libmp3lame/lame.c: + + disabled peak sample detection when LAME tag is not written into the file + +2004-01-29 16:39 bouvigne + + * doc/html/history.html: + + history + +2004-01-29 16:31 bouvigne + + * libmp3lame/version.h: + + bump alpha because of the fixed crashes + +2004-01-29 16:26 bouvigne + + * libmp3lame/takehiro.c: + + fixed bug #886989 + +2004-01-26 14:00 olcios + + * USAGE, doc/html/switchs.html, doc/man/lame.1, frontend/parse.c: + + updated documentation and --longhelp on RG + +2004-01-26 12:05 olcios + + * frontend/main.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/lame.c, libmp3lame/set_get.c, + libmp3lame/util.h: + + removed ReportLameTagProgress (it is not LAME API). Fixed --replaygain-accurate and --clipdetect. + +2004-01-25 10:12 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + fix a bug when the malloc is failed. + +2004-01-25 10:06 takehiro + + * libmp3lame/: lame.c, VbrTag.c (takehiro-2002_05_07-experimental): + + fix id3v2 tag output + +2004-01-25 10:05 takehiro + + * libmp3lame/: VbrTag.h, id3tag.c, id3tag.h, quantize.h + (takehiro-2002_05_07-experimental): + + trivial + +2004-01-25 08:44 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + fix total track number buffer overrun bug. + +2004-01-25 08:34 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + remove unused prototype + +2004-01-25 08:33 takehiro + + * frontend/parse.c, libmp3lame/id3tag.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + total track ID3 tag, requested at sf.net (Request ID #630803) + http://sourceforge.net/tracker/index.php?func=detail&aid=630803&group_id=290&atid=350290 + +2004-01-25 08:30 takehiro + + * lame_vc6.dsw (takehiro-2002_05_07-experimental): + + sync with the main branch.(related mp3x projects) + +2004-01-25 08:28 takehiro + + * frontend/lame.dsw (takehiro-2002_05_07-experimental): + + remove old files. + +2004-01-25 05:45 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added message about "--preset medium" + +2004-01-24 17:37 takehiro + + * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, ACMStream.h, + AEncodeProperties.cpp, DecodeStream.cpp, main.cpp + (takehiro-2002_05_07-experimental): + + fix build problem(I hope...) + +2004-01-24 17:31 takehiro + + * frontend/main.h (takehiro-2002_05_07-experimental): + + sync the main branch. + - include limits.h only when there's the header. + +2004-01-24 17:28 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + sync with the main branch. + - remove message output during reading AIFF file. + +2004-01-21 13:50 aleidinger + + * Makefile.in, ACM/Makefile.in, Dll/Makefile.in, + frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: + + regen + +2004-01-21 13:48 aleidinger + + * frontend/main.h: + + only include limits.h if it is present on the system + +2004-01-21 10:17 bouvigne + + * libmp3lame/quantize.c: + + missing {} in last fix + +2004-01-21 09:41 bouvigne + + * ACM/ACM.dsw, ACM/Makefile.am, ACM/lameACM.dsp, Makefile.B32, + Makefile.DJGPP, Makefile.am, PRESETS.draft, README.B32, + README.DJGPP, Dll/Example.dsp, Dll/Example.dsw, + Dll/MP3EncDll.dsp, Dll/MP3EncDll.dsw, Dll/Makefile.am, + frontend/Makefile.am, frontend/lame.dsp, frontend/lame.dsw, + frontend/mp3x.dsp, frontend/mp3x.dsw, libmp3lame/Makefile.am, + libmp3lame/libmp3lame.dsp, mpglib/Makefile.am, mpglib/mpglib.dsp: + + removed old unmaintained files + +2004-01-20 18:41 bouvigne + + * libmp3lame/quantize.c: + + fixed a crash: + sometimes quantization could overflow because of big xr_pow values + +2004-01-20 17:04 takehiro + + * Dll/Makefile.mingw32 (takehiro-2002_05_07-experimental): + + remove unused include path + +2004-01-20 16:24 takehiro + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, + Makefile.mingw32 (takehiro-2002_05_07-experimental): + + DLL build and minor message fix. but we may need API fix, too... + +2004-01-20 06:22 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + do not include "internal" header file. + +2004-01-18 15:54 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-01-18 15:52 takehiro + + * config.h.in, configure.in, mac/Precompile_Common.h + (takehiro-2002_05_07-experimental): + + remove ieee754_float64_t + +2004-01-18 13:51 takehiro + + * frontend/gtkanal.c, libmp3lame/quantize.c + (takehiro-2002_05_07-experimental): + + mp3x: fix mean bits display when mono or mpeg2 + +2004-01-18 13:48 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + make it sure not to call "experimental" switches when it is not DEBUG mode or ALPHA version. + +2004-01-18 13:21 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix typo + +2004-01-18 12:52 takehiro + + * Makefile.am, Makefile.in, PRESETS.draft, lame.dsw, ACM/ACM.dsw, + ACM/Makefile.am, ACM/Makefile.in, ACM/lameACM.dsp, + Dll/Example.dsp, Dll/Example.dsw, Dll/MP3EncDll.dsp, + Dll/MP3EncDll.dsw, Dll/Makefile.am, Dll/Makefile.in, + frontend/Makefile.am, frontend/Makefile.in, frontend/mp3x.dsp, + frontend/mp3x.dsw, frontend/mp3x_vc6.dsp, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/libmp3lame.dsp, + mpglib/Makefile.am, mpglib/Makefile.in, mpglib/mpglib.dsp + (takehiro-2002_05_07-experimental): + + remove all the outdated files. + copied mp3x_vc6.dsp from main branch. + +2004-01-18 12:51 takehiro + + * libmp3lame/: quantize.c, lame.c + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-18 12:47 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2004-01-18 12:47 takehiro + + * config.h.in, configure.in, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/takehiro.c + (takehiro-2002_05_07-experimental): + + replace "unsigned long long" -> "uint64_t" + +2004-01-18 12:46 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-17 18:33 takehiro + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, mpglib/interface.c + (takehiro-2002_05_07-experimental): + + moved VBR header related code. now the vbr header structure is in lame.h. + This means applications can use the VBR header information via it. + +2004-01-17 18:21 takehiro + + * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + remove unused definition + +2004-01-17 18:19 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-17 18:14 takehiro + + * libmp3lame/: bitstream.c, lame.c + (takehiro-2002_05_07-experimental): + + fix assert() condition. + remove unused function. + +2004-01-17 18:08 takehiro + + * frontend/main.c, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h + (takehiro-2002_05_07-experimental): + + remove ReportLameTagProgress(). it is not LAME API at all... + +2004-01-17 18:07 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-17 17:56 takehiro + + * libmp3lame/: encoder.h, lame.c, machine.h, util.h + (takehiro-2002_05_07-experimental): + + include file clean up. + +2004-01-17 17:44 takehiro + + * libmp3lame/mpglib_interface.c, mpglib/interface.c, + mpglib/interface.h, mpglib/mpglib.h + (takehiro-2002_05_07-experimental): + + changed InitMP3() and ExitMP3() API. + +2004-01-17 17:37 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + remove freegfc() prototype + +2004-01-17 17:35 takehiro + + * libmp3lame/: util.c, lame.c (takehiro-2002_05_07-experimental): + + simplify freegfc() + +2004-01-17 17:04 takehiro + + * frontend/brhist.c, frontend/console.c, frontend/get_audio.c, + frontend/gpkplotting.c, frontend/gtkanal.c, frontend/main.c, + frontend/mp3rtp.c, frontend/rtp.c, include/lame.h, + libmp3lame/lame-analysis.h, libmp3lame/machine.h, + libmp3lame/mpglib_interface.c, mpglib/common.c, + mpglib/decode_i386.c, mpglib/interface.c, mpglib/layer1.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/mpg123.h + (takehiro-2002_05_07-experimental): + + renamed "stereo" -> "channels" to make things more clear. + remove unused definitions. + +2004-01-17 14:25 takehiro + + * README.B32, README.DJGPP (takehiro-2002_05_07-experimental): + + too much old. removed. + +2004-01-17 14:23 takehiro + + * API, HACKING, ACM/ACMStream.h, ACM/DecodeStream.h, + Dll/BladeMP3EncDLL.c, Dll/Makefile.mingw32, dshow/Encoder.h, + frontend/brhist.c, frontend/brhist.h, frontend/get_audio.c, + frontend/get_audio.h, frontend/gtkanal.c, frontend/gtkanal.h, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/parse.h, frontend/timestatus.c, + frontend/timestatus.h, include/lame.h, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/id3tag.c, + libmp3lame/id3tag.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/libmp3lame_vc6.dsp, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/quantize_pvt.h, + libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + mpglib/Makefile.am, mpglib/Makefile.in, mpglib/common.c, + mpglib/common.h, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/interface.h, mpglib/layer1.c, + mpglib/layer1.h, mpglib/layer2.c, mpglib/layer2.h, + mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, + mpglib/mpglib.h (takehiro-2002_05_07-experimental): + + Large API clean up. + To make MP3 decoding function reentrant, we need to replace the all API... + + all the variables are now marked as "INTERNAL" and applications cannot + access them directly. + + "lame_global_flags" structure is removed. Use "lame_t" instead. + +2004-01-17 14:11 takehiro + + * Makefile.B32, Makefile.DJGPP (takehiro-2002_05_07-experimental): + + They are too much outdated. removed. + +2004-01-17 11:34 takehiro + + * config.h.in, configure.in, frontend/brhist.c, + frontend/get_audio.c, frontend/get_audio.h, + frontend/gpkplotting.c, frontend/gtkanal.c, frontend/main.c, + frontend/main.h, frontend/parse.c, frontend/portableio.c, + libmp3lame/mpglib_interface.c, mac/Precompile_Common.h, + mpglib/common.c, mpglib/interface.c, mpglib/layer2.c, + mpglib/layer3.c, mpglib/mpg123.h + (takehiro-2002_05_07-experimental): + + cleanup. remove unused functions/definitions. + +2004-01-17 10:51 takehiro + + * frontend/parse.h (takehiro-2002_05_07-experimental): + + fix warning + +2004-01-17 10:45 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix usage message of --priority + +2004-01-17 10:17 takehiro + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + frontend/portableio.c, frontend/portableio.h, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/lame.c, libmp3lame/tables.c, + mpglib/common.c, mpglib/common.h, mpglib/tabinit.c + (takehiro-2002_05_07-experimental): + + remove unused code and old APIs. + make some functions/arrays static. + +2004-01-17 09:35 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix it does not write id3v2 at all. + make bitrate table static. + +2004-01-15 19:05 aleidinger + + * frontend/parse.c: + + We should not need errno... introduced in the last commit, remove it. + +2004-01-15 19:04 aleidinger + + * frontend/parse.c: + + Different fix for the priority parsing bug, uses less code. + + Tested by: Gabriel + +2004-01-15 13:54 bouvigne + + * doc/html/history.html, ACM/TODO, doc/html/index.html, + doc/html/switchs.html: + + doc, history + +2004-01-15 11:15 bouvigne + + * include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + made lame.h identical with or without DECODE_ON_THE_FLY. + made gfp identical with or without DECODE_ON_THE_FLY. + +2004-01-15 01:24 olcios + + * USAGE, frontend/parse.c, libmp3lame/lame.c: + + changed the behaviour of --clipdetect to force RG analysis on decoded data (not input data). Updated --longhelp and documentation + +2004-01-14 14:38 bouvigne + + * libmp3lame/psymodel.c: + + minor code change in mask_add + +2004-01-14 14:16 bouvigne + + * libmp3lame/psymodel.c: + + minor code change in mask_add + +2004-01-13 19:23 bouvigne + + * frontend/parse.c: + + isnumber ->is_number + +2004-01-13 18:35 glessard + + * frontend/get_audio.c: + + Removed a spurious fprintf that occurred during AIFF-C decoding. + +2004-01-13 17:36 bouvigne + + * USAGE: + + ReplayGain ->89dB + +2004-01-13 17:30 takehiro + + * frontend/get_audio.c: + + fix mp3 decoding... + +2004-01-13 13:30 bouvigne + + * frontend/parse.c: + + fixed issue when --priority is not followed by a number but by another + argument. + + Btw, the situation is the same with a lot of other settings. + +2004-01-13 12:36 bouvigne + + * libmp3lame/version.h: + + 3.96a1 + +2004-01-12 18:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + bit better diveding point of huffman coding. + +2004-01-12 17:23 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2004-01-12 16:54 takehiro + + * libmp3lame/: lame.c, quantize.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + implement lame_set_maskingadjust() and lame_set_maskingadjust_short() as is in LAME3.x branch. + + get_XX functions are not yet coded. + +2004-01-12 16:50 takehiro + + * libmp3lame/: lame.c, set_get.c, tables.c + (takehiro-2002_05_07-experimental): + + fix it ignores --athlower and --athcurve option (always use default setting) + and clean up ATH related functions. + +2004-01-12 14:49 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + better mp3 file header analysis (and bugfix). + +2004-01-12 13:44 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + consider subblock position when calculating the PE value + (usually, subblock 3 needs more bits than subblock 1) + +2004-01-12 13:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-12 09:03 bouvigne + + * doc/html/history.html: + + history + +2004-01-12 08:59 bouvigne + + * libmp3lame/gain_analysis.c: + + changed RG level to 89dB + +2004-01-12 08:42 bouvigne + + * libmp3lame/version.h: + + back into 3.95 because of the fixed crash + +2004-01-12 08:41 bouvigne + + * libmp3lame/takehiro.c: + + fixed a potential crash with fast vbr (introduced by myself) + +2004-01-12 07:17 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + added "--sameblock" option, to help the playback problems on some buggy decoders.(like some DVD/CD-R mp3 player) + +2004-01-12 06:50 takehiro + + * frontend/parse.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + clean up quality setting. + +2004-01-11 15:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for short block i-stereo band mis-selection. + +2004-01-11 15:01 bouvigne + + * libmp3lame/lame.c: + + small cleanup in the lowpass/samplefreq selection code + +2004-01-11 14:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + quick fix for i-stereo. it accidentially uses i-stereo on the scalefactor + where we do not want to use (and where we do not set the direction). + +2004-01-11 14:04 takehiro + + * config.h.in, configure (takehiro-2002_05_07-experimental): + + regen + +2004-01-11 13:37 takehiro + + * configure.in, mac/Precompile_Common.h + (takehiro-2002_05_07-experimental): + + remove IEEE854_float80 + +2004-01-11 12:46 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2004-01-11 12:45 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix the fatal reservoir usage bug. + - meaning of "--nores" was opposite. + - it does not use reservoir at all when VBR. + +2004-01-11 12:02 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + fix Tag problem when CBR. + +2004-01-11 12:01 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-11 11:56 takehiro + + * frontend/mp3rtp.c (takehiro-2002_05_07-experimental): + + rtp cannot send vbr header. + +2004-01-11 11:37 takehiro + + * libmp3lame/: VbrTag.c, VbrTag.h + (takehiro-2002_05_07-experimental): + + make PutLameVBR() as static + +2004-01-11 11:22 aleidinger + + * configure: + + regen + +2004-01-11 11:20 aleidinger + + * configure.in: + + Welcome to 3.96. + +2004-01-11 10:21 bouvigne + + * libmp3lame/version.h: + + We are now in 3.96 + +2004-01-11 10:03 takehiro + + * frontend/: get_audio.c, get_audio.h + (takehiro-2002_05_07-experimental): + + ignore the MPEG header whose layer is not same as the filename. + +2004-01-11 09:56 takehiro + + * frontend/get_audio.h (takehiro-2002_05_07-experimental): + + fix build problem with libsndfile. + +2004-01-11 02:21 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove unused tables. + +2004-01-11 01:19 takehiro + + * testcase.mp3, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + choose from 4 code table when ixmax = 2, 3, ..., 7 + +2004-01-10 22:47 takehiro + + * libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + cosmetic + +2004-01-10 21:20 olcios + + * doc/html/history.html: + + cosmetic + +2004-01-10 20:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x sometimes crashes. + +2004-01-10 20:31 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen by hand + +2004-01-10 20:29 takehiro + + * Makefile.B32, Makefile.unix, config.h.in, configure.in, + frontend/mp3x.dsp (takehiro-2002_05_07-experimental): + + remove symbol HAVE_GTK + +2004-01-10 20:20 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial + +2004-01-10 20:16 takehiro + + * frontend/mp3x.c, libmp3lame/lame.c, libmp3lame/set_get.c, + libmp3lame/set_get.h, mpglib/layer3.c + (takehiro-2002_05_07-experimental): + + clean up and fix analyzer hook related code. + +2004-01-10 20:15 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial + +2004-01-10 19:34 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c, + i386/choose_table.nas (takehiro-2002_05_07-experimental): + + clean up huffman coding tables. + +2004-01-10 19:24 takehiro + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + little bit better huffman coding when ix_max = 2 + +2004-01-10 18:25 takehiro + + * testcase.mp3, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + little bit better huffman coding when ix_max is 1. + +2004-01-10 17:28 olcios + + * USAGE: + + cosmetic change + +2004-01-10 16:14 takehiro + + * libmp3lame/lame.c: + + fix the display of lowpass fileter config. + +2004-01-10 16:01 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + main line merge. + - Gaby's VBRtag fix (do not include the vbr header into the vbr seek table as it breaks a player). + +2004-01-10 15:57 takehiro + + * ACM/ACMStream.cpp (takehiro-2002_05_07-experimental): + + main line merge + - Gaby's buffer size fix. + +2004-01-10 12:59 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added one more error check. + +2004-01-10 12:31 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update + +2004-01-10 12:29 aleidinger + + * testcase.mp3: + + testcase for 3.95 + +2004-01-10 12:29 takehiro + + * doc/html/history.html: + + added mpglib fix + +2004-01-10 12:18 aleidinger + + * ChangeLog: + + update CVS history + +2004-01-10 12:13 aleidinger + + * libmp3lame/version.h: + + Preperation for 3.95 RELEASE. + + Please notify me and Gabriel in case you change something from this + point in time upto the 3.96 version bump. + +2004-01-10 12:10 aleidinger + + * doc/html/history.html: + + faster on PPC + +2004-01-10 12:03 aleidinger + + * libmp3lame/util.h: + + do not use FastLog implicitely + +2004-01-10 12:02 aleidinger + + * configMS.h: + + explicit use of FastLog + +2004-01-10 11:42 aleidinger + + * configure: + + regen + +2004-01-10 11:35 aleidinger + + * configure.in: + + - use the IEEE 754 hack and FastLog on x86 and PPC only + - make the use of FastLog explicit + + PPC performance: + 1GHz G4 + "Standard" : 396 s (100%) + FastLog : 371 s ( 93%) + FastLog, 754 : 365 s ( 92%) + 754 : 388 s ( 98%) + + 2GHz G5 (dual), cbr, vbr + "Standard" : 166 s (100%), 328 s (100%) + FastLog : 169 s (102%), 338 s (102%) + FastLog, 754 : 148 s ( 90%), 288 s ( 88%) + 754 : 145 s ( 87%), 279 s ( 85%) + + On a G5 we shouldn't use FastLog (I assume highly optimized for G5 log*() + routines in the standard math library), but configure doesn't know ATM how + do check for a G5. + +2004-01-10 10:38 takehiro + + * frontend/get_audio.c: + + backport from my experimental branch to fix the crash when invalid input. + +2004-01-10 10:27 takehiro + + * mpglib/: common.c, interface.c, layer1.c, layer3.c: + + backport from my experimenhtal branch, to fix the crash when invalid input. + +2004-01-10 09:55 takehiro + + * doc/html/history.html: + + effetc->affect reported at sf.net (BugID #867502) + +2004-01-08 19:55 olcios + + * libmp3lame/gain_analysis.c: + + comment update (clarification) + +2004-01-08 19:14 olcios + + * USAGE: + + Removed --replaygain from USAGE, because it had been defaulted and the option removed from LAME. Updated information on --replaygain-accurate. + +2004-01-08 15:58 bouvigne + + * configMS.h, doc/html/history.html, doc/html/index.html: + + predicted release date: January 11th + +2004-01-07 17:58 aleidinger + + * frontend/Makefile.in: + + regen + +2004-01-07 17:57 aleidinger + + * frontend/Makefile.am: + + Add mp3x_vc6.dsp. + + Requested by: Gabriel + +2004-01-07 17:35 bouvigne + + * README.WINGTK, lame_vc6.dsw, frontend/lame_vc6.dsp, + frontend/mp3x_vc6.dsp, libmp3lame/libmp3lame_vc6.dsp, + mpglib/mpglib_vc6.dsp: + + added back mp3x to the VC6 projects + +2004-01-07 15:57 aleidinger + + * configure: + + regen + +2004-01-07 15:51 aleidinger + + * configure.in: + + - bump version to 3.95 + - disable layer1 decoding by default + - reword the layer options and some option descriptions + - enable the use of the fast log function on every CPU (for x86 this + is implicit by the ieee hack) + +2004-01-07 15:26 aleidinger + + * config.h.in: + + add the fast log option + +2004-01-07 13:26 bouvigne + + * mpglib/mpglib_vc6.dsp: + + disable layer I + +2004-01-06 14:38 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2004-01-06 13:53 bouvigne + + * libmp3lame/VbrTag.c: + + do not include the vbr header into the vbr seek table as it breaks a player + +2004-01-05 18:58 takehiro + + * libmp3lame/: lame.c, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + fix ABR bitrate + changed VBR quality <-> compression ratio mapping. + changed gfc->masking_lower setting + +2004-01-05 17:51 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix a warning. + reduce prefetch length. + +2004-01-05 16:25 bouvigne + + * doc/html/history.html: + + history + +2004-01-05 16:19 bouvigne + + * ACM/ACMStream.cpp: + + fixed a buffer requirement error + +2004-01-05 09:45 bouvigne + + * libmp3lame/: l3side.h, quantize.c, takehiro.c: + + faster count_bits + +2004-01-05 07:35 takehiro + + * mpglib/common.c (takehiro-2002_05_07-experimental): + + one more fix for seg.fault + +2004-01-05 07:30 takehiro + + * mpglib/common.c (takehiro-2002_05_07-experimental): + + fix seg.fault (not good way, indeed) + +2004-01-05 07:16 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix typo and disable LAYER1 decoding by default. + +2004-01-05 07:15 takehiro + + * libmp3lame/i386/Makefile.in, configure + (takehiro-2002_05_07-experimental): + + regen + +2004-01-05 07:14 takehiro + + * libmp3lame/i386/Makefile.am (takehiro-2002_05_07-experimental): + + fix build problem + +2004-01-05 06:47 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + more strict syncword check when no LAYER1/2 support. + +2004-01-04 19:45 takehiro + + * libmp3lame/: lame.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + finished fixing mono encoding (initialization problem of inter-channel masking value) + remove useless code in stereo->mono mix down. + fix ATH adjustment code initialization. + +2004-01-04 17:35 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix mono-mode bitrate selection. + +2004-01-04 15:39 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix the condition to use freeformat or not. + +2004-01-04 11:04 bouvigne + + * libmp3lame/lame.c: + + corrected -k + +2004-01-03 17:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + trivial clean up and fix comments. + +2004-01-03 16:47 bouvigne + + * doc/html/history.html: + + history + +2004-01-03 16:22 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix possible highpass filter display problem. + +2004-01-03 16:17 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + changed short block switching threshold for 8/16 kbps. + +2004-01-03 04:11 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix "FATAL" typo. + some code clean up. + +2004-01-03 04:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix for mono encoding. + +2004-01-02 19:53 bouvigne + + * libmp3lame/lame.c: + + changed quality mapping + +2004-01-02 19:51 bouvigne + + * libmp3lame/takehiro.c: + + faster count_bits + +2004-01-02 19:49 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + Faster quantizations + Only 5% speedup when using Takehiro's ieee754 hack, but about 60% + speedup otherwise. (Should please Mac users) + +2004-01-02 09:02 takehiro + + * mpglib/common.c (takehiro-2002_05_07-experimental): + + check emphasis bits in mpeg header. + +2004-01-01 17:52 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix warning on mingw (and probabry VC) + +2004-01-01 17:51 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + changed function name, lame_decode_fromfile -> decode_fromfile because it is not LAME standard API. + +2004-01-01 17:23 takehiro + + * mpglib/layer1.c (takehiro-2002_05_07-experimental): + + fix stereo value handling. + +2004-01-01 15:22 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix location where emphasis is recorded. + +2004-01-01 15:21 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + prepare for better MP3 header detection. + +2003-12-31 19:07 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix assertion condition. + fix i-stereo bit usage counting. + +2003-12-31 04:27 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-12-30 19:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up.(code to check the MAX_BITS is moved) + +2003-12-30 18:52 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + ok, new years present. + here goes alpha10! + +2003-12-30 18:47 takehiro + + * ACM/ddk/.cvsignore (takehiro-2002_05_07-experimental): + + added to ignore Makefile + +2003-12-30 18:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it makes invalid mp3 file when 320kbps. + +2003-12-30 18:45 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added one more check. + trivial coding clean up. + +2003-12-30 17:12 takehiro + + * Makefile.in, aclocal.m4, configure, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/ddk/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen with automake1.7.9, autoconf 2.59 on cygwin. + +2003-12-30 13:03 takehiro + + * testcase.mp3, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-12-30 12:28 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix masking_lower hadling + +2003-12-30 12:26 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + do not store FFT value when not using analyzer + +2003-12-30 10:23 takehiro + + * configure, ACM/Makefile.in, ACM/ddk/Makefile.in + (takehiro-2002_05_07-experimental): + + regen + +2003-12-30 10:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2003-12-29 18:45 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + hadling masking_lower is moved to quantize.c from psymodel.c + fix bug in threshold calculation of short block last sfb. + better intensity stereo band selection.(do not use IS at lower frequency) + fix comments + +2003-12-29 18:09 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + omit MDCT calculation beyond cutoff. + The gain(for MDCT) is arround 15% when 18kHz cutoff. + +2003-12-29 08:05 takehiro + + * libmp3lame/: set_get.c, tables.c + (takehiro-2002_05_07-experimental): + + reservoir size fix for 320kbps over. + +2003-12-29 08:05 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added one error check. + +2003-12-28 15:41 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix reservoir max size configuration. + +2003-12-28 13:57 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix free format detection. 320kbps is not always free format. + +2003-12-28 12:48 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix MPEG2 scalefactor output. + +2003-12-28 12:47 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + better error detection for debug mode. + +2003-12-28 12:11 takehiro + + * frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix -k option. + +2003-12-28 11:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix warning + +2003-12-28 11:48 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + many cosmetic change and clean up. + +2003-12-27 17:45 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + use more fine resolution infomation for block switching. + +2003-12-27 14:55 takehiro + + * testcase.mp3, libmp3lame/psymodel.c + (takehiro-2002_05_07-experimental): + + update testcase + clean up psymodel.c + +2003-12-27 14:24 takehiro + + * frontend/gtkanal.c, libmp3lame/encoder.c, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.h, + libmp3lame/version.h (takehiro-2002_05_07-experimental): + + now psymodel version 0.91-3 + - new ATH adjustment. + * ATH adjustment per channel, not per granule. + - display ATH adjustment value in mp3x. + - new long/short block switching code. + * now it is aware of post masking. + * switch to short block when post echo may happen. + - better long->short masking (threshold/energy) conversion. + +2003-12-23 10:29 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + added one comment. + +2003-12-23 10:22 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-12-23 10:13 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning/fixing norm[] values of the spreading function. + +2003-12-22 16:36 bouvigne + + * doc/html/history.html: + + history + +2003-12-22 09:44 bouvigne + + * libmp3lame/quantize_pvt.c: + + reduced warnings + +2003-12-21 18:41 bouvigne + + * frontend/: get_audio.c, main.c, parse.c: + + reduced warnings + +2003-12-21 18:14 bouvigne + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, quantize.c, + quantize_pvt.c, quantize_pvt.h, util.h: + + FLOAT8 -> FLOAT + +2003-12-21 16:09 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + safer threshold calculation arround attack detected position. + +2003-12-21 15:12 takehiro + + * configure.in, ACM/Makefile.am (takehiro-2002_05_07-experimental): + + added ACM/ddk directory + +2003-12-21 15:06 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + update comment as is done in main line. + +2003-12-21 15:03 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix short block ATH scaling and masking threshold. + +2003-12-21 13:30 takehiro + + * libmp3lame/: psymodel.c, lame.c, tables.c + (takehiro-2002_05_07-experimental): + + - temporal masking aware short/long block switching. + - tuning reduce side value. + - fixed long->short block threshold conversion factor. + - fixed array declaration bug in short block threshold calculation. + +2003-12-21 12:46 bouvigne + + * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, + psymodel.h, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, util.h: + + FLOAT8 -> FLOAT + +2003-12-21 12:30 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove bval_width[] related code. + +2003-12-21 12:25 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix 8kbps decode bug (backport from main line) + +2003-12-21 10:16 bouvigne + + * libmp3lame/: VbrTag.c, lame.c, psymodel.c, util.c, util.h: + + FLOAT8 -> FLOAT + +2003-12-20 14:48 bouvigne + + * libmp3lame/psymodel.c: + + fixed calc_interchannel_masking when encoding to mono + +2003-12-20 14:33 bouvigne + + * libmp3lame/lame.c: + + fixed lowpass value for high bitrate vbr profiles + +2003-12-20 14:31 bouvigne + + * libmp3lame/version.h: + + Using 3.95 as version number. + We will decide latter what to choose about version numbers + +2003-12-19 13:55 bouvigne + + * libmp3lame/version.h: + + Moved back to 3.94b in order to not have some 3.95b spreading on the web. + We now have to decide if we should go in the 3.94release direction or in the 3.95b direction + +2003-12-18 18:47 bouvigne + + * libmp3lame/version.h: + + welcome in 3.95 + +2003-12-18 17:13 aleidinger + + * ChangeLog: + + ChangeLog for 3.94b. + +2003-12-18 15:46 bouvigne + + * libmp3lame/version.h: + + 3.94b + +2003-12-18 12:54 aleidinger + + * frontend/get_audio.c: + + Takehiro noticed a bug in the pipe fix, it results in a click sound at + the end of the encoding of BlackBirds.wav. + + This fix is a merge from the experimental branch and doesn't seem to be + harmful while encoding over a pipe, but I'm not sure if I was able to + reproduce the situation where the original fix was needed. + + I've tested: + mkfifo pipetest + lame -preset 96 pipetest pipetest.mp3 + other shell: cat wav >pipetest + +2003-12-17 18:45 bouvigne + + * frontend/parse.c: + + help + +2003-12-17 11:52 bouvigne + + * libmp3lame/psymodel.c: + + updated comment regarding spreading function + +2003-12-15 17:07 bouvigne + + * mpglib/layer3.c: + + fixed 8kHz decoding + +2003-12-15 11:48 takehiro + + * ACM/ddk/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + sync with main line + +2003-12-14 17:56 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added some new items. + - highpass filter for psycho-analysis. + - temporal-masking-aware block switching. + +2003-12-14 17:52 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + clean up s3_func() (no results difference) + remove normalization and bark width consideration. + # hehe, it's now obvious to see which frequency makes strong masking :p + +2003-12-12 18:22 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + coding style update. + check the INFO sub-chunk in LIST chunk. + +2003-12-12 18:21 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix it treat the chunk after data chunk as part of data chunk. + +2003-12-12 17:24 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + trivial style update (including comment style, etc). + +2003-12-12 16:52 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + remove nb_1 from gfc. + +2003-12-12 16:15 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix last change (oops, I checked-in the wrong version...) + +2003-12-12 16:12 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix bit reservoir handling when looooooooow bit rate. + +2003-12-12 14:31 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-12-12 14:31 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + added error check code. + +2003-12-12 13:29 takehiro + + * frontend/main.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + clean up variables in gfc and gfp. + +2003-12-09 17:22 olcios + + * frontend/parse.c: + + Fixed typo. + +2003-12-09 17:19 olcios + + * frontend/parse.c: + + Fixed an error message. + +2003-12-09 16:08 aleidinger + + * ACM/Makefile.in: + + regen + +2003-12-09 16:01 aleidinger + + * configure: + + regen + +2003-12-09 15:51 aleidinger + + * ACM/ddk/Makefile.in: + + Add the autoconf Makefile. + +2003-12-09 15:49 aleidinger + + * configure.in: + + Add the ACM/ddk subdirectory. + +2003-12-09 15:49 aleidinger + + * ACM/Makefile.am: + + Add the ddk subdirectory. + +2003-12-09 15:48 aleidinger + + * ACM/ddk/Makefile.am: + + Add an automake Makefile. + +2003-12-09 15:06 bouvigne + + * libmp3lame/version.h: + + Bump alpha + +2003-12-09 15:05 bouvigne + + * frontend/parse.c: + + do not display --r3mix in help + +2003-12-09 15:03 bouvigne + + * doc/html/history.html: + + 3.94 release date? + +2003-12-09 14:59 bouvigne + + * doc/html/: basic.html, examples.html, history.html, index.html, + modes.html, presets.html, switchs.html: + + 3.94 documentation + +2003-12-08 16:52 bouvigne + + * libmp3lame/VbrTag.c: + + Use integer format for ReplayGain peak value + +2003-12-06 20:54 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2003-12-06 20:10 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + make best_huffman_divide() as static. + make it do not call best_huffman_divide() twice when vbr. + +2003-12-06 19:00 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix warning of quantize_sfb_3DN() prototype declaration. + fix pseudo half step bug on 3DNow!/SSE machines. + +2003-12-06 17:17 takehiro + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + remove experimental switches from context structure. + +2003-12-06 13:37 takehiro + + * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-12-06 11:10 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + reduce subblock gain value. + +2003-12-06 07:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + VBR code update. + - fixed sf value range limit(not fatal, but possible quality degrade in higher VBR quality mode). + - adjust the initiail value of scalefactor search for speed up(arround 1 or 2%).CVS: ---------------------------------------------------------------------- + +2003-12-05 12:49 aleidinger + + * libmp3lame/i386/Makefile.in: + + add missing " + +2003-12-04 12:26 aleidinger + + * libmp3lame/i386/Makefile.in: + + nasm -> NASM fix + +2003-12-03 16:35 takehiro + + * testcase.mp3, libmp3lame/quantize.c + (takehiro-2002_05_07-experimental): + + changed short block noise estimation (max noise -> sum noise). + +2003-12-03 15:32 takehiro + + * frontend/rtp.c (takehiro-2002_05_07-experimental): + + sync with main line. + +2003-12-03 03:09 olcios + + * include/lame.h: + + comments / doc + +2003-12-03 02:18 olcios + + * frontend/get_audio.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c: + + Brought back the possibility to run lame_decode_init() more than once + +2003-12-03 01:44 olcios + + * frontend/get_audio.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/set_get.c: + + Made it impossible to simultaneously use mp3 input and decoding on the fly. + +2003-12-01 17:45 takehiro + + * configure, Dll/Makefile.in, frontend/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen + +2003-12-01 17:44 takehiro + + * libmp3lame/i386/Makefile.am (takehiro-2002_05_07-experimental): + + backport Alex's dirty hack, which is less dirty than mine :) + +2003-12-01 17:43 takehiro + + * ltmain.sh (takehiro-2002_05_07-experimental): + + replaced the one from libtool 1.5 + +2003-12-01 15:45 takehiro + + * frontend/depcomp, libmp3lame/depcomp, misc/depcomp, + mpglib/depcomp (takehiro-2002_05_07-experimental): + + removed unused file (build system uses ../depcomp) + +2003-11-29 12:14 aleidinger + + * ChangeLog: + + update + +2003-11-29 12:10 aleidinger + + * test/cvscheck.sh: + + add the automated test script which mt used to run every day + +2003-11-29 12:09 aleidinger + + * configure: + + regen with autoconf 2.57 + +2003-11-29 12:06 aleidinger + + * ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, + Dll/Makefile.in, Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in: + + regen with automake 1.7 + +2003-11-29 12:05 aleidinger + + * configure.in: + + - Check for some features a little bit earlier. + - Fix a AC_DEFINE so the newer tools don't moan. + +2003-11-29 12:03 aleidinger + + * libmp3lame/i386/Makefile.am: + + HACK HACK HACK, UGLY UGLY HACK! + + make this work with libtool 1.5 + + If anybody knows how do this in a more sane way, please teach me how to + do it. + +2003-11-29 12:01 aleidinger + + * ltmain.sh: + + update with libtool 1.5 version + +2003-11-29 12:00 aleidinger + + * aclocal.m4: + + update with newer autotools + +2003-11-29 11:59 aleidinger + + * config.h.in: + + add some missing undefs + +2003-11-29 11:16 aleidinger + + * frontend/rtp.c: + + fix some errors which are new with gcc 3.x + +2003-11-29 09:49 aleidinger + + * frontend/depcomp, libmp3lame/depcomp, mpglib/depcomp: + + use the ones provided by automake 1.7 + +2003-11-29 09:45 aleidinger + + * missing, mkinstalldirs, depcomp, install-sh: + + use the ones provided by automake 1.7 + +2003-11-29 09:44 aleidinger + + * config.guess, config.sub: + + use the ones provided with libtool 1.5 + +2003-11-28 18:23 takehiro + + * frontend/brhist.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/lame.c, libmp3lame/tables.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + clean up bitrate histgram code. + +2003-11-28 17:53 takehiro + + * libmp3lame/: bitstream.c, lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + remove unused definition (resample_t) + rename Bit_stream_struct -> bit_stream_t + +2003-11-28 17:30 takehiro + + * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c, + tables.c, util.h (takehiro-2002_05_07-experimental): + + move and rename "gfp->exp_nspsytune" => "gfc->nsPsy.tune" + +2003-11-28 17:20 takehiro + + * libmp3lame/: psymodel.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + remove "ath_over" from III_psy_ratio + +2003-11-28 17:17 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + make lame_decode1_headersB_clipchoice() as static + +2003-11-28 16:48 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + remove unused code + +2003-11-28 16:46 takehiro + + * libmp3lame/: util.c, util.h, i386/cpu_feat.nas + (takehiro-2002_05_07-experimental): + + simplify the CPU feature detection code. + +2003-11-28 16:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + divide TODO item about encoding quality problem into 2 piece. + +2003-11-28 16:38 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix comments. + +2003-11-28 16:24 takehiro + + * libmp3lame/: encoder.c, lame.c + (takehiro-2002_05_07-experimental): + + trivial + +2003-11-28 16:24 takehiro + + * libmp3lame/: quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + fix warning + simplify the code. + +2003-11-28 16:11 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + sync main branch (lowpass adjustment when mono) + and trivial clean up. + +2003-11-28 16:04 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove unused definition + +2003-11-28 16:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + do not use reservoir when -q 9 + +2003-11-28 15:58 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + remove documents about removed options + +2003-11-28 15:53 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/quantize.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + clean up VBR finish code and remove "-F" option. + LAME always use VBR_hard_min now. + + The option is quite "FAQ"ed and hacky/dirty work arround to conceal + the psymodel flaw. + +2003-11-28 15:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + changed ResvFrameBegin() arguments. + +2003-11-28 15:29 takehiro + + * libmp3lame/: VbrTag.c, encoder.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + clean up pinfo setting code (for analyzer) + +2003-11-28 15:16 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial simplification. + +2003-11-28 15:16 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + make gcd() as static. + +2003-11-28 15:02 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + resampling code bug is fixed. + +2003-11-28 15:01 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + make fill_buffer_resample as static function. + fix the bug in resampling (like from 44099 to 44100) and remove work arround code. + +2003-11-28 14:27 bouvigne + + * libmp3lame/set_get.c: + + Disabled replaygain decode because it crashes when using mp3 input + +2003-11-28 12:22 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + simplify the loudness approx code. + +2003-11-27 12:27 takehiro + + * ACM/ddk/msacmdrv.h (takehiro-2002_05_07-experimental): + + sync with mainline + +2003-11-27 12:20 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, tables.c, + takehiro.c (takehiro-2002_05_07-experimental): + + simplify the function interfaces. + remove unused definitions. + trivial style update. + +2003-11-27 08:24 bouvigne + + * ACM/: readme.txt, ddk/msacmdrv.h: + + Allow compilation of ACM codec without Microsoft platform DDK + +2003-11-26 13:06 bouvigne + + * lame_vc6.dsw: + + Updated ACM dependencies + +2003-11-25 17:32 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial + +2003-11-25 17:22 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + loop hoisting: loop for writing sideinfo and loop for writing part2/part2_3 is now integrated. + +2003-11-25 17:14 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial + +2003-11-25 17:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix byte/bit confusion. + +2003-11-25 16:53 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + do not write magic strings in the post drain part. + +2003-11-25 16:48 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, + config.h.in, configure, configure.in + (takehiro-2002_05_07-experimental): + + update build-system related files for new asm code. + (I hope they runs correctly) + +2003-11-25 16:43 takehiro + + * frontend/gtkanal.c, libmp3lame/encoder.c, libmp3lame/encoder.h, + libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x block-type display + +2003-11-25 15:55 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + psymodel.h is not system header file. + +2003-11-25 15:52 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + remove priority setting code. + we already have a --priority switch on Windows environment, so we do not + need it. + +2003-11-25 15:43 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + one more... + +2003-11-25 15:20 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, quantize.c, tables.c, + util.h (takehiro-2002_05_07-experimental): + + more simplification arround bit stream write out code. + +2003-11-24 18:26 takehiro + + * libmp3lame/: bitstream.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + clean up bitstream write out code. + - header(side info) output code is now very simplified. + - variable length bitstream output code is now simple and fast. + +2003-11-24 17:05 bouvigne + + * libmp3lame/lame.c: + + Do not compute ReplayGain when not using vbr header + +2003-11-24 16:13 takehiro + + * libmp3lame/: bitstream.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + simplify the bitstream output code. + +2003-11-24 14:42 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + added SSE version of quantize_ISO() + +2003-11-24 13:52 bouvigne + + * libmp3lame/lame.c: + + Reduced bandwith when encoding in mono + +2003-11-24 13:39 bouvigne + + * libmp3lame/lame.c: + + Fixed low bitrates lowpass and sampling rate values + (I probably broke it recently) + +2003-11-23 20:13 takehiro + + * frontend/gtkanal.c, libmp3lame/encoder.c, + libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + update mp3x display (arround block switching parameter). + +2003-11-23 20:05 takehiro + + * frontend/parse.c, libmp3lame/VbrTag.c, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c, libmp3lame/set_get.h, libmp3lame/tables.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + remvoe unused features and variables + - ms_sparsing() + - tune() + +2003-11-23 19:47 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/set_get.c, + libmp3lame/set_get.h, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + now it always uses same short block switching threshold for L/R/M channel and S channel. + +2003-11-23 19:41 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 19:31 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + short block threshold tuning. + (of course, need more...) + +2003-11-23 11:22 takehiro + + * libmp3lame/: encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + clean up mode extension update code. + +2003-11-23 10:45 takehiro + + * libmp3lame/: bitstream.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + simplify bitstream writing code. + +2003-11-23 10:27 takehiro + + * libmp3lame/: bitstream.c, psymodel.c + (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-11-23 10:04 takehiro + + * libmp3lame/encoder.h (takehiro-2002_05_07-experimental): + + fix comments and comment out the unused definitions. + +2003-11-23 10:03 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 10:03 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix and simplify the usage message. + +2003-11-23 09:47 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up block type update code + +2003-11-23 09:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 09:14 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix for MPEG2.5 (for the case band width = 2) + +2003-11-23 09:09 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + clean up writing table-id code. + +2003-11-23 09:08 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-23 08:36 takehiro + + * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): + + remove unused code. + +2003-11-22 19:41 takehiro + + * libmp3lame/: bitstream.c, util.h + (takehiro-2002_05_07-experimental): + + optimize bitstream output code. + +2003-11-22 19:14 takehiro + + * libmp3lame/i386/: fft.nas, ffttbl.nas + (takehiro-2002_05_07-experimental): + + remove unused files + +2003-11-22 19:14 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + remove unused extra-dist files + +2003-11-22 18:58 takehiro + + * libmp3lame/: bitstream.c, util.h + (takehiro-2002_05_07-experimental): + + optimize writeheader() + +2003-11-22 18:39 takehiro + + * ACM/TODO (takehiro-2002_05_07-experimental): + + update + +2003-11-22 18:39 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of count1 region quantization + +2003-11-22 18:12 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix message. + +2003-11-22 18:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-22 18:09 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + added version string to SSE and E3DNow. + +2003-11-22 17:43 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix ABR mode sometimes uses 640kbps (!) + +2003-11-22 17:40 takehiro + + * libmp3lame/: lame.c, tables.c, i386/fft3dn.nas + (takehiro-2002_05_07-experimental): + + E3DNow! version of fht() + +2003-11-22 17:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2003-11-22 13:30 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up and merge CBR/ABR code. + +2003-11-22 13:19 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of quantize_ISO() + +2003-11-22 13:03 takehiro + + * Dll/Example_vc6.dsw (takehiro-2002_05_07-experimental): + + sync main branch + - Corrected the dll example project + +2003-11-22 09:03 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-11-22 08:45 takehiro + + * libmp3lame/: quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix warning and build problem + +2003-11-22 07:57 takehiro + + * Dll/MP3export.pas (takehiro-2002_05_07-experimental): + + sync main branch. + - fix calling convention + +2003-11-22 07:56 takehiro + + * Dll/BladeMP3EncDLL.def (takehiro-2002_05_07-experimental): + + added some interface. + +2003-11-22 07:55 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + sync main branch + - display issue fix. + +2003-11-22 07:51 takehiro + + * Dll/Makefile.am (takehiro-2002_05_07-experimental): + + sync main branch. + - added files for vc6 and mingw. + +2003-11-21 17:07 bouvigne + + * Dll/BladeMP3EncDLL.c: + + Display issues + +2003-11-21 17:03 takehiro + + * libmp3lame/: quantize.c, takehiro.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of quantization. + and some asm code optimization/clean up. + +2003-11-21 16:50 bouvigne + + * Dll/BladeMP3EncDLL.c: + + Minor corrections + +2003-11-20 16:04 bouvigne + + * Dll/MP3export.pas: + + Fixed calling convention + +2003-11-20 13:30 bouvigne + + * Dll/Example_vc6.dsw: + + Corrected the dll example project + +2003-11-20 11:16 bouvigne + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + include/lame.h, libmp3lame/set_get.c: + + Changed some Vorbis messages + +2003-11-20 11:08 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + Removed mode_automs + +2003-11-20 10:57 bouvigne + + * libmp3lame/: fft.c, lame.c, util.c, util.h: + + Removed CPU_features.i387 + +2003-11-20 10:46 bouvigne + + * libmp3lame/presets.c: + + Aliased r3mix to vbr-mtrh V3 + +2003-11-19 13:00 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + anihilated streaming/radio/portable named presets, leaving only the -Vx + +2003-11-18 16:18 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix warning + +2003-11-18 16:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + new reservoir handling code for ABR. + +2003-11-18 15:37 takehiro + + * testcase.mp3, libmp3lame/bitstream.c + (takehiro-2002_05_07-experimental): + + simplify the sign hadling code. + +2003-11-18 15:29 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + simplify the error check code. + +2003-11-18 15:21 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimize self check code. + +2003-11-18 14:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + For better/faster encoding, narrowen the frequency region when lower -q. + +2003-11-18 13:59 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-11-18 13:57 takehiro + + * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix bit overflow when i-stereo + tuning CBR bit allocation (on_pe() function) + clean up finish_iteratio_one(). + +2003-11-18 13:20 bouvigne + + * libmp3lame/presets.c: + + low vbr-mtrh presets + +2003-11-18 12:52 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-11-18 12:51 takehiro + + * libmp3lame/: lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + fix CBR_2nd_bitalloc() (it may makes invalid mp3 frame). + remapping -q setting. old -q2 is now -q1 + enable CBR_2nd_bitalloc() when -q 0,1 and 2 + +2003-11-18 12:22 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-18 12:18 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + new CBR bit allocation/reservoir handling code. + still need tuning (there remains some killer samples), + but usually brings better result. + +2003-11-17 02:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix substep noise shaping. + +2003-11-16 18:07 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix possible bit counting bug when CBR and higher -q option. + +2003-11-16 18:05 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + do not display the CPU have i387. + +2003-11-16 17:57 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix typo + +2003-11-16 17:02 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x display. + +2003-11-16 16:11 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix ID3v2 tag length when --keeptag. + +2003-11-16 12:43 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c + (takehiro-2002_05_07-experimental): + + now --keeptag keeps ID3v2 tag when transcoding. + +2003-11-16 11:04 takehiro + + * libmp3lame/: lame.c, machine.h, psymodel.c, set_get.c, tables.c, + util.c, util.h, version.c (takehiro-2002_05_07-experimental): + + update comment style (// -> /* */) + +2003-11-16 11:04 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2003-11-16 10:47 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix one more l3_enc initialization + +2003-11-16 10:31 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix segmentation fault especially when higher VBR quality like -V0. + +2003-11-16 10:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix trivial(but fatal) bug in short block threshold calculation loop... + +2003-11-16 10:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix count1 bit-counting (we must zered all zero region because we use 4-stride in count1 region). + +2003-11-16 09:55 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix i-stereo+VBR fails to encode (internal buffer inconsistency). + +2003-11-15 18:15 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + optimize Huffmancode() by dividing it into tableindex > 15 or not. + +2003-11-15 18:14 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-11-15 17:07 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix warning + +2003-11-15 17:05 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, takehiro.c, + util.h (takehiro-2002_05_07-experimental): + + always use quantize_best() except init_globalgain(). + and some code clean up. + +2003-11-15 11:21 takehiro + + * configure: + + regen + +2003-11-15 11:14 takehiro + + * configure.in: + + fix migw build(as is done in the experimental branch) + +2003-11-15 10:50 takehiro + + * frontend/get_audio.c: + + fix ambiguous message (Bug ID #830035) + +2003-11-14 16:13 bouvigne + + * libmp3lame/lame.c: + + use presets by default when using vbr-mtrh + +2003-11-14 13:24 bouvigne + + * libmp3lame/presets.c: + + vbr-mtrh high vbr presets + +2003-11-12 17:12 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + check and display if the CPU supports Extended 3DNow! + (no E3DNow! code available yet.) + +2003-11-12 15:47 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix build problem for newer NASM ... + +2003-11-12 06:43 takehiro + + * libmp3lame/i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + fix build problem (on some old nasm) + +2003-11-12 06:43 takehiro + + * libmp3lame/i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + fix build problem + +2003-11-11 04:27 takehiro + + * libmp3lame/i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + added Extended 3DNow! check code. + +2003-11-11 04:26 takehiro + + * libmp3lame/: lame.c, quantize.c, util.c, util.h, + i386/cpu_feat.nas (takehiro-2002_05_07-experimental): + + sync main branch (SIMD->SSE change) + +2003-11-10 15:41 bouvigne + + * libmp3lame/: fft.c, lame.c, util.c, util.h, i386/cpu_feat.nas: + + SIMD->SSE + +2003-11-10 15:31 bouvigne + + * libmp3lame/: lame.c, presets.c: + + Add missing values for vbr_rh -Vx scale + +2003-11-10 15:27 takehiro + + * libmp3lame/i386/fft3dn.nas: + + fix cygwin build (with nasm) + +2003-11-10 15:27 takehiro + + * libmp3lame/i386/fft3dn.nas (takehiro-2002_05_07-experimental): + + fix cygwin build with nasm + +2003-11-10 14:58 bouvigne + + * libmp3lame/: lame.c, presets.c: + + fix lowpass values for low vbr presets + +2003-11-10 12:06 bouvigne + + * libmp3lame/: lame.c, presets.c, set_get.c: + + Use presets by default when using vbr_rh + +2003-11-09 17:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix warning + +2003-11-09 17:38 takehiro + + * libmp3lame/: quantize.c, tables.c, tables.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of calc_sfb_noise() (for CBR/VBR/ABR) + and simplify the look up table structure. + +2003-11-09 15:28 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of calc_sfb_noise_fast() (for VBR) + +2003-11-09 14:35 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not call CBR_2nd_bitalloc() when -q >= 6. + sometimes it results in an invalid mp3 file. + +2003-11-09 14:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + revert some part of 1.110.2.190->1.110.2.191. + +2003-11-09 09:43 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + 3DNow! version of calc_noise() + +2003-11-09 09:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-11-09 07:54 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove fftsse, fftfpu related code. + +2003-11-09 06:24 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + always use -q 5 when VBR because VBR mode needs -q 5 + (higher -q setting makes no output change and lower -q setting sometimes makes it to encode invalid mp3 file) + +2003-11-08 17:51 takehiro + + * libmp3lame/: takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + revert part of last change, because it may seg-faults when -q 6,7,8,9 + +2003-11-08 17:45 takehiro + + * libmp3lame/: quantize.c, takehiro.c, i386/choose_table.nas + (takehiro-2002_05_07-experimental): + + changed quantization code. Now it quantizes >8191+15 values into 8191+15. + +2003-11-08 17:44 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix precision problem. + +2003-11-08 16:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + VBR code cleanup and fix minor bug + - when there's not enough bits, it may decrease bitrate too much. + +2003-11-08 07:00 takehiro + + * libmp3lame/i386/: fftfpu.nas, fftsse.nas + (takehiro-2002_05_07-experimental): + + I cannot make it work and run faster than compiler output. so I removed. + +2003-11-07 16:52 takehiro + + * libmp3lame/: encoder.c, takehiro.c + (takehiro-2002_05_07-experimental): + + trivial code clean up + +2003-11-07 16:46 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimization + - precalc adjusted ATH and use them when mask_add() + +2003-11-07 14:54 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + optimize asm code by dirty hack + +2003-11-07 14:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization(loop hoist) + +2003-11-07 14:37 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR mode... + +2003-11-06 17:37 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix trivial bug when non-nasm case + +2003-11-06 17:18 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix substep shaping. + +2003-11-06 17:13 takehiro + + * libmp3lame/: psymodel.c, quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + - prevent "double ATH handling" problem. + - new xr^(3/4) code for 3DNow! (From the latest gogo) + - added multiplication function to sumofsqr_3DN() + +2003-11-05 17:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize calc_noise() at "0 or 1" region + +2003-11-05 14:03 bouvigne + + * libmp3lame/: presets.c, psymodel.c: + + Use Vx scale for presets + +2003-11-03 23:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix subblock_gain is not used(it ignores the switch). + added ugly optimization arround calc_sfb_noise() and calc_sfb_noise_fast(). + +2003-11-03 22:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up substep shaping code bit. + +2003-11-03 18:41 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use 3DNow! more. + +2003-11-03 18:16 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial bug fix... + +2003-11-03 18:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it always uses substep noise shaping (it ignore the option) when VBR. + +2003-11-03 18:09 takehiro + + * libmp3lame/: quantize.c, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + added pow075_3DN (3DNow! version of calculating xr^(3/4)) + added "sum x^2" code for 3DNow! and use it. + +2003-11-03 17:44 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + considering the Fourier analysis limitation, it should estimate loudness + of lower frequency region when ATH adjustment. + +2003-11-03 15:00 bouvigne + + * libmp3lame/: lame.c, presets.c: + + allow vbr presets to not be enforced (preparative work before defaulting) + +2003-11-03 14:04 takehiro + + * testcase.mp3, libmp3lame/quantize.c + (takehiro-2002_05_07-experimental): + + fix infinite loop when short blocks. (oops, trivial bug...) + +2003-11-02 12:10 takehiro + + * libmp3lame/: machine.h, quantize.c, quantize_pvt.h, takehiro.c, + util.h, i386/quantSSE.nas (takehiro-2002_05_07-experimental): + + Precalculate the fabs(xr). + moved xr34[] and absxr[](=fabs(xr)) into gfc. + better alignment work for the compiler not support "align". + +2003-11-01 20:06 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + more comments update and clean up + +2003-11-01 19:50 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize substep noise shaping (trancate_smallspectrums()) + and count_bits() related code. + +2003-11-01 19:30 takehiro + + * libmp3lame/: quantize.c, util.h + (takehiro-2002_05_07-experimental): + + clean up(fix comments and misleading variable names). + +2003-11-01 19:14 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + more clean up. + +2003-11-01 18:47 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + clean up the comments + +2003-11-01 18:33 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + more coding style and comment clean up. + do not quantize all the band in CBR_2nd_bitalloc(). this increase the speed and fix bug when -q6,7,8 + +2003-11-01 18:16 takehiro + + * libmp3lame/: bitstream.c, quantize.c, tables.c, tables.h, + takehiro.c (takehiro-2002_05_07-experimental): + + general code clean up + reduce division in calc_noise() + +2003-11-01 14:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix bug in sfb21 handling code(it mistook dB scale and real scale). + +2003-11-01 12:44 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + coding clean up + +2003-10-30 15:29 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + optimize quantization of "must be quantized to 0 or 1" region. + +2003-10-30 15:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added new setting, "-q 6" + +2003-10-30 14:57 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix small quantization bug in VBR. + +2003-10-30 14:17 takehiro + + * libmp3lame/: encoder.c, quantize.c + (takehiro-2002_05_07-experimental): + + fix low bitrate and intensity stereo. + +2003-10-30 13:09 bouvigne + + * libmp3lame/lame.c: + + Moved replaygain analysis after resampling. It was causing problems when + used with non standard sampling frequencies. + +2003-10-27 15:57 takehiro + + * configure.in, configure (takehiro-2002_05_07-experimental): + + added to use TAKEHIRO_IEEE754_HACK on AMD64 machines. + +2003-10-26 17:58 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-10-26 16:50 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + update -q mapping and comment. + now -q0/-q1 is same as -q2 (-h) + +2003-10-26 16:26 takehiro + + * libmp3lame/: lame.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + more alignment work. + +2003-10-26 16:26 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize calc_noise(). as in main branch, it re-uses the previous + calc_noise result where its scalefactor value is not changed + +2003-10-26 15:22 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added "SIMD (asm used)" message + +2003-10-26 15:22 takehiro + + * libmp3lame/: quantize.c, machine.h + (takehiro-2002_05_07-experimental): + + more alignment work. + +2003-10-26 14:54 takehiro + + * libmp3lame/: machine.h, util.h + (takehiro-2002_05_07-experimental): + + alignment work + +2003-10-26 14:48 takehiro + + * libmp3lame/: quantize.c, takehiro.c, util.h, i386/Makefile.am, + i386/Makefile.in, i386/nasm.h, i386/quantSSE.nas + (takehiro-2002_05_07-experimental): + + SSE version of calculate xr^(3/4), from gogo-no-coda. + +2003-10-26 14:46 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial optimization. + +2003-10-26 12:44 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/tables.c, libmp3lame/takehiro.c + (takehiro-2002_05_07-experimental): + + update substep noise shaping. + - pseudo half step is now default when -q 0 to 4. + - in VBR mode, use substep noise shaping if 320kbps is not enough. + - changed behaivior of --substep option (see the usage message) + +2003-10-26 11:52 takehiro + + * libmp3lame/: encoder.c, quantize.c + (takehiro-2002_05_07-experimental): + + more generalized optimization by using gfc->xrMaxNum. + - we can also use it now with VBR. + +2003-10-26 11:27 takehiro + + * frontend/mp3x.c, include/lame.h + (takehiro-2002_05_07-experimental): + + fix build problem... + +2003-10-26 07:43 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use adjust_global_gain() function when pseudohalf step noise shaping. + fix it sometimes exceed the global_gain limit. + +2003-10-26 07:38 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix build problem when with DECODE_ON_THE_FLY + +2003-10-26 07:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix when subblock_gain or scalefactor_scale is used. + +2003-10-25 20:53 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + re-quantizing only on the sfb where "distortion" is found. (faster !) + + revert "double"->"FLOAT" conversion. + - it makes some problems on the machine of which FLOAT is REALLY FLOAT + (only 32it precision) + +2003-10-25 19:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize/debug gi->xrNumMax usage. + +2003-10-25 19:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added loop break code by looking the noise in sfb21 because there's no sfb value and we can do nothing with it. + +2003-10-25 19:30 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + off by one of max bitrate in VBR. + +2003-10-25 19:28 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, encoder.c, lame.c, + set_get.c (takehiro-2002_05_07-experimental): + + clean up + +2003-10-25 19:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR/ABR with --nores encode. + + and clean up reservoir code. + +2003-10-25 19:27 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + fix VbrInit code. + +2003-10-25 18:12 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix + (takehiro-2002_05_07-experimental): + + fix dependency (remove reservoir.c) + +2003-10-25 18:10 takehiro + + * libmp3lame/: encoder.c, lame.c, lame_global_flags.h, + mpglib_interface.c, psymodel.c, quantize.c, quantize.h, + set_get.c, util.h (takehiro-2002_05_07-experimental): + + analysis hook code clean up. + +2003-10-25 18:10 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added decoder thread unsafe problem. + +2003-10-25 18:02 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix build problem + +2003-10-25 15:52 takehiro + + * configure, configure.in, libmp3lame/machine.h + (takehiro-2002_05_07-experimental): + + remove --enable-all-float option from configure, and make --enable-double-float instead. + +2003-10-25 07:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + faster calc_noise() by using max number of xr. + +2003-10-25 07:15 takehiro + + * libmp3lame/: encoder.c, quantize.c, tables.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + precise number of max xr for long blocks. (faster CBR/ABR) + code clean up. + +2003-10-25 06:31 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added mp3x bug. + +2003-10-23 12:09 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets + +2003-10-22 16:22 takehiro + + * libmp3lame/: encoder.c, quantize.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + count bits/quantization optimization. + - do not quantize/search all zero region where obviously all zero region. + (use previous quantization result to determine the region) + +2003-10-22 13:55 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + remove unused definition + +2003-10-22 10:21 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + changed "double" -> "FLOAT" + +2003-10-22 10:17 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix sometimes preflag does not decrease the bitrate. + +2003-10-22 10:16 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-10-22 08:26 takehiro + + * libmp3lame/takehiro.c: + + fix assertion failure reported by Gabriel. + +2003-10-22 07:33 takehiro + + * libmp3lame/bitstream.c: + + better debug message + +2003-10-22 07:11 takehiro + + * libmp3lame/: libmp3lame.dsp, libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + update for reservoir code clean up. + +2003-10-21 16:31 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, id3tag.c + (takehiro-2002_05_07-experimental): + + one more clean up + +2003-10-21 16:31 takehiro + + * DEFINES, TODO (takehiro-2002_05_07-experimental): + + NEW_DRAIN is now defaulted and it solves wmp6.4 problem + +2003-10-21 16:22 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + remove duplicated error check + make NEW_DRAIN as default + code clean up. + +2003-10-21 09:05 bouvigne + + * libmp3lame/: set_get.c, set_get.h, vbrquantize.c: + + cleanup + +2003-10-20 16:10 olcios + + * doc/html/history.html: + + Added the word "Radio" to the description of the ReplayGain contribution, as it is actually the "Radio" ReplayGain that is computed. + +2003-10-20 15:02 takehiro + + * libmp3lame/: VbrTag.c, VbrTag.h, encoder.c + (takehiro-2002_05_07-experimental): + + clean up VBRTAG related code. + - now the tag is same when --freeformat 128 and when -b 128 + - do not make seek table when CBR + +2003-10-20 13:19 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, VbrTag.c, bitstream.c, + quantize.c, quantize_pvt.h, reservoir.c, reservoir.h, tables.c, + util.h (takehiro-2002_05_07-experimental): + + large clean up arround reservoir related code + +2003-10-20 12:30 bouvigne + + * doc/html/history.html: + + history + +2003-10-20 11:08 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-10-20 07:20 bouvigne + + * libmp3lame/quantize_pvt.c: + + fixed build problem + +2003-10-19 23:26 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix comments. + +2003-10-19 17:19 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-10-19 17:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify the short block noise calculation. + +2003-10-19 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR when i-stereo and completely mono. + +2003-10-19 14:14 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + update + +2003-10-19 14:05 takehiro + + * libmp3lame/: machine.h, mpglib_interface.c, newmdct.c, + quantize.c, tables.c, util.c (takehiro-2002_05_07-experimental): + + remove FLOAT8 at all. + +2003-10-19 14:04 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + "floating" scalefactor optimization when preflag is enabled. + +2003-10-19 13:42 takehiro + + * libmp3lame/: bitstream.c, quantize.c, tables.c, takehiro.c + (takehiro-2002_05_07-experimental): + + fix MPEG2 Layer3 scalefactor store code. + - fix i-stereo mode. + - fix preflag usage. + +2003-10-19 13:13 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + remove unused member + +2003-10-19 12:50 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + Fix subband filtering initialization code. + I hope this solves "very the 1st frame" problem. + +2003-10-19 12:20 takehiro + + * libmp3lame/: bitstream.c, takehiro.c + (takehiro-2002_05_07-experimental): + + use preflag when MPEG2 + added istereo bitstream output code when MPEG2 + (only output code. not support at the bit-allocation). + +2003-10-19 11:41 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + oops, I checked in the wrong version ... + +2003-10-19 11:39 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update + +2003-10-19 11:37 takehiro + + * libmp3lame/: encoder.c, lame.c, newmdct.c, psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + fix very the 1st frame encoding. + at least MPEG2 Layer3 works, but still there's problem... + +2003-10-19 06:24 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix warning when not HAVE_GTK + +2003-10-19 04:45 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated and renumbered. + +2003-10-19 04:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix max sfb value when preflag+IS + +2003-10-19 04:41 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + update comment + +2003-10-18 18:05 takehiro + + * libmp3lame/: encoder.c, quantize.c, tables.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + small clean ups and remove outdated comments. + +2003-10-18 17:19 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.h, libmp3lame/set_get.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + use always max_noise as the noise estimation and remove the "quantcomp" selection + +2003-10-18 16:54 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up and simplify bin_search_StepSize(). + +2003-10-18 16:46 takehiro + + * libmp3lame/: bitstream.c, quantize.c, reservoir.c, reservoir.h + (takehiro-2002_05_07-experimental): + + fix for NEW_DRAIN + fix for target bitrate display in mp3x + and code clean up. + +2003-10-18 16:17 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + small clean up + +2003-10-18 16:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + widen the scalefactor search range when VBR. + and use previous frame information to find the scalefactor. + +2003-10-18 13:44 takehiro + + * libmp3lame/: VbrTag.c, VbrTag.h, bitstream.c, lame.c, psymodel.c, + quantize.c, util.c, util.h (takehiro-2002_05_07-experimental): + + fix warnings + +2003-10-18 13:43 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + short block threshold tuning. + +2003-10-18 12:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix it sometimes drains too much bits into the ancillary. + +2003-10-18 10:42 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + added quality problem. + +2003-10-17 14:39 bouvigne + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h: + + One more speedup in calc_noise, but the function is now a little messy + +2003-10-17 13:50 bouvigne + + * configMS.h: + + updated version number + +2003-10-17 11:49 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + Speedup calc_noise (about 5-10%) by re-using noise values per sfb between + successive calls + +2003-10-16 15:36 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning short block masking threshold calculation. + +2003-10-16 15:12 takehiro + + * libmp3lame/: bitstream.c, encoder.h, newmdct.c, psymodel.c + (takehiro-2002_05_07-experimental): + + simplify the block type update code. + +2003-10-16 15:10 takehiro + + * libmp3lame/: lame.c, quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + trivial coding clean up. + +2003-10-16 13:26 bouvigne + + * libmp3lame/: VbrTag.c, presets.c: + + Put preset used in tag even when just using -b or --abr + +2003-10-16 12:55 bouvigne + + * libmp3lame/VbrTag.c: + + fixed a Lame header bug: + -b xxx --preset yyy was putting xxx as minimum bitrate value in the + tag instead of the value defined in the preset yyy + +2003-10-16 01:32 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix warning when not DEBUG mode + +2003-10-16 01:30 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + one more cleanup + +2003-10-14 17:56 takehiro + + * libmp3lame/: encoder.c, lame-analysis.h, psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + one more general code clean up. + +2003-10-14 17:37 takehiro + + * testcase.mp3, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c, + libmp3lame/reservoir.h, libmp3lame/tables.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + general clean up. + +2003-10-14 16:57 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + write down "i-stereo used or not" to LAME tag. + +2003-10-14 16:56 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + remove automs code + +2003-10-14 16:54 takehiro + + * testcase.mp3, frontend/parse.c, include/lame.h, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove lame_(set|get)_automs + remove "-m a" option + + simplify when no psymodel case (but it has bug in reservoir handling.) + +2003-10-14 16:46 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + compress "floating" scalefactors + +2003-10-14 12:56 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + treat "LR-i" as same as "LR" when display LR/MS history bar. + +2003-10-14 12:23 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix MS_MD_LR_LR will never be selected ... + +2003-10-14 12:21 takehiro + + * libmp3lame/: lame.c, psymodel.c + (takehiro-2002_05_07-experimental): + + update mode/block type selection (mode_ext) code. + - now it uses "START-STOP" block type transition. + - istereo selection code is now simplified. + - and small general code clean ups. + +2003-10-13 17:56 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up istereo related code. + +2003-10-13 17:52 takehiro + + * Makefile.am, Makefile.in (takehiro-2002_05_07-experimental): + + fix testcase failure when not HAVE_GTK + +2003-10-13 17:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix mp3x sometime assertion failure. + +2003-10-13 17:21 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix it forgot to reset the istereo usage sfb when LR_I -> LR_MS + +2003-10-13 15:57 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + widen the sf search range on short block. + some code clean up. + +2003-10-13 15:56 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + tuning tonality estimation of "middle" frequency area. + +2003-10-13 15:25 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + clean up VBR code. + +2003-10-13 13:50 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update with alpha 9 + +2003-10-13 13:48 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + nuke ".raw" from output filename. + fix possible buffer overrun. + +2003-10-13 13:26 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use substep noise shaping even when short block. + do not substep noise shaping on digital silent channel. + +2003-10-13 13:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + init code optimization (do not calculate xr^(3/4) beyond cutoff). + +2003-10-13 13:19 takehiro + + * libmp3lame/: lame.c, tables.c (takehiro-2002_05_07-experimental): + + use same ath adjustment code for VBR/CBR/ABR + +2003-10-13 11:05 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix LR-i stereo selection on short blocks. (I forgot to commit this in alpha9) + +2003-10-13 11:02 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix comment. + +2003-10-13 10:20 takehiro + + * testcase.mp3, libmp3lame/version.h + (takehiro-2002_05_07-experimental): + + here goes alpha9 + +2003-10-13 10:19 takehiro + + * libmp3lame/: encoder.c, lame.c, quantize.c, quantize_pvt.h, + takehiro.c (takehiro-2002_05_07-experimental): + + clean up preflag/istereo code. + +2003-10-13 10:17 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + one more fix about i-stereo aging bug. + +2003-10-13 09:53 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix --allshort and --shortthreshold + +2003-10-11 20:17 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + changed variable name, cod_info_w -> gi_w + +2003-10-11 20:11 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + use best_scalefac when istereo. + +2003-10-11 19:45 takehiro + + * libmp3lame/: lame.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + clean up ATH adjustment code. + +2003-10-11 19:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do not use athAdjust() + +2003-10-11 19:36 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + prepare for "START-STOP" sequence. + +2003-10-11 15:11 takehiro + + * libmp3lame/: encoder.c, psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + fix i-stereo aging bug. + +2003-10-11 14:11 takehiro + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, quantize.c, + quantize.h, util.h (takehiro-2002_05_07-experimental): + + trivial optimization (more and more) + +2003-10-11 13:42 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + trivial optimization + +2003-10-11 13:39 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-10-11 13:19 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + use subblock_gain and scalefac_scale when i-stereo and CBR/ABR. + +2003-10-11 13:13 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + i-stereo with VBR. + +2003-10-11 11:21 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + work arround for mono-input problem when istereo. + +2003-10-11 11:09 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix cutoff when i-stereo enabled but not using istereo frame. + +2003-10-11 11:05 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + make check_istereo() to be aware of the cutoff. + +2003-10-11 10:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix off by one bug in loop_break() + +2003-10-11 10:29 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix off by one bug in PE calculation (and some code clean up). + +2003-10-06 05:09 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + istereo selection code optimization + +2003-10-06 04:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix scalefactor breakage when istereo case + +2003-10-05 18:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + reduce istereo usage ratio. + +2003-10-05 18:04 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + small clean up + +2003-10-05 17:59 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + sync with main branch + - Gaby's freeformat vbrtag fix(rev 1.67->1.68). + +2003-10-05 17:48 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix LR-i mode selection. + +2003-10-05 17:05 takehiro + + * testcase.mp3, frontend/gtkanal.c, libmp3lame/encoder.c, + libmp3lame/quantize.c, libmp3lame/quantize.h + (takehiro-2002_05_07-experimental): + + general mp3x cleanup. + +2003-10-05 16:36 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + remove magic numbers + +2003-10-05 14:17 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + pe -> bit-allocation update.(revert old one) + +2003-10-05 13:59 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix when almost mono input. + +2003-10-05 13:29 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + one more --athonly hack. + +2003-10-05 13:21 takehiro + + * libmp3lame/: quantize.c, tables.c + (takehiro-2002_05_07-experimental): + + simplify calc_xmin when "ATH only". + +2003-10-05 12:15 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix sfb buffer overrun when i-stereo. + +2003-10-05 11:54 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + update the algorithm to select the sfb where it uses i-stereo. + +2003-10-05 10:37 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix short block cutoff sfb calculation. + +2003-10-04 18:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + small optimization + - noise calculation in "all zero" region. + - sfb21 shaping aware loop_break() + +2003-10-04 18:26 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + small clean up + +2003-10-04 16:57 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + VBR quality over 9 (not tuned yet at all). + +2003-10-04 16:52 takehiro + + * libmp3lame/: tables.c, util.h, encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + make it default to do noise shaping in sfb21. + cutoff-aware PE(perceptual entropy) calculation. + +2003-10-02 09:25 takehiro + + * frontend/parse.c: + + fix build problem.(I made a mistake when back porting ...) + +2003-10-01 16:13 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix build problem + +2003-09-29 17:47 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + tonality estimation tuning ... still need more. + +2003-09-29 14:00 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2003-09-29 00:35 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix typo + +2003-09-28 16:44 takehiro + + * configMS.h (takehiro-2002_05_07-experimental): + + fix version + +2003-09-28 16:42 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + small update. + +2003-09-28 16:32 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + re-enable scfsi usage. + +2003-09-28 16:30 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + use scalefactor() macro more. + +2003-09-28 16:19 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tonality estimation fix #1 + - safer tonality estimation at lower frequency. + - tuned sine wave (arround 20Hz) with the option "-v --substep 1" + + - we still need tuning sine wave arround 1kHz. + +2003-09-27 18:39 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + "smoothing" the istereo/narrow-stereo/reduce-side values for default setting. + and code clean up. + +2003-09-27 18:11 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + many small clean up. + + and mp3x update. + - display number of scalefactor bands with a distortion. + - display total noise. + +2003-09-27 17:15 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix display of istereo-ratio and reduce-side factor + +2003-09-27 17:14 takehiro + + * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + remove unused definition + +2003-09-27 17:14 takehiro + + * INSTALL (takehiro-2002_05_07-experimental): + + updated for LAME4 + - remove outdated compile time options including configure option. + +2003-09-27 15:50 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix narrow stereo default setting bug. + +2003-09-27 13:13 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + It assumes the noise is monotonic function of the scalefactor, but it is not true. + To fix it, I added CBR_2nd_bitalloc() function. + +2003-09-27 13:05 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix "%" display. + +2003-09-27 09:58 takehiro + + * frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + added --reduce-side option + + added to display side-channel pe reduction factor and narrowen stereo factor, + when --verbose. + +2003-09-27 08:24 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize.c, set_get.c, + set_get.h, util.h (takehiro-2002_05_07-experimental): + + reduce_ratio option to control MS/LR ratio. + need more tuning. + +2003-09-27 06:16 takehiro + + * frontend/parse.c: + + added priority control on WIN32, backport from experimental branch. + +2003-09-26 13:52 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + remove outdated comment. + +2003-09-26 03:50 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + updated + +2003-09-25 16:27 takehiro + + * frontend/parse.c, libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/set_get.h, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + - added --narrowen-stereo option + - use narrowen stereo default when lower than 90kbps. + +2003-09-25 15:54 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added priority control option on MS-Windows. + (request #649324 @ sf.net) + +2003-09-25 13:21 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen by hand. + +2003-09-25 13:21 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix typo + +2003-09-25 13:15 takehiro + + * libmp3lame/i386/Makefile.in (takehiro-2002_05_07-experimental): + + fix automake bug by hand (work arround) + +2003-09-24 23:18 takehiro + + * Makefile.in, aclocal.m4, config.guess, config.sub, configure, + depcomp, install-sh, missing, mkinstalldirs, ACM/Makefile.in, + ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + frontend/rtp.c, include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in (takehiro-2002_05_07-experimental): + + regen with aclocl-1.7, automake-1.7, autoconf-2.57 + +2003-09-24 23:15 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fixed mingw build. + - socket patch from leighsmith, patch ID #809315 @ sf.net + + socket function is not mandatory when mp3rtp is not built. + - bug report from gadibergman, Bug ID #809678 @ sf.net + +2003-09-23 18:29 takehiro + + * DEFINES (takehiro-2002_05_07-experimental): + + updated + +2003-09-23 18:04 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + it sometime goes into infinite loop when imcomplete wave file... + +2003-09-23 17:28 takehiro + + * libmp3lame/: encoder.c, quantize.c + (takehiro-2002_05_07-experimental): + + added "narrow stereo image" function. + I will add new "right" switch to enable it, but till then, + use -X n (0<n<128) option to enable it. + + larger n makes narrowen the stereo image more. + This helps quality at lower bitrate (arround 64kbps). + My recomendation is "-b 64 -X 30". + +2003-09-23 16:07 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + remove unused definition. + +2003-09-23 15:56 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial coding clean up. + +2003-09-23 15:44 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + new sfb21 treatment hack to make it faster. + +2003-09-23 12:37 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update. + +2003-09-21 18:37 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + tuning CBR/ABR preset bit. + +2003-09-21 16:16 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + bump up to alpha8. + +2003-09-21 16:16 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-09-21 16:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + revert "bitrate cutdown" code in VBR_2nd() + +2003-09-21 16:01 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix it sometimes uses range over sfb value. + +2003-09-21 15:47 takehiro + + * libmp3lame/: tables.c, tables.h + (takehiro-2002_05_07-experimental): + + remove unused definition and array object. + +2003-09-21 15:36 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + remove redundant initialization + added one more sanity check. + +2003-09-21 10:29 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen (by hand :p) + +2003-09-21 10:26 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + treat gcc 3.3.x same as 3.2.x + +2003-09-12 13:00 bouvigne + + * libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/presets.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/set_get.c, include/lame.h, + libmp3lame/set_get.h, libmp3lame/util.h, frontend/parse.c: + + --psymodel 1/2 (gpsycho is 1 and nspsytune is 2) + +2003-08-31 15:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + it should not check sfb21 noise differently. + +2003-08-31 09:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove "reduce bitrate" function from VBR_2nd_bitalloc, + which is redundant (it will be done in the VBR_3rd_bitalloc). + +2003-08-31 09:21 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix noise shaping stop criteria when we need sfb21 noise shaping. + +2003-08-31 09:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added new macro "scalefactor()" to simplify the code. + +2003-08-31 08:53 takehiro + + * mpglib/interface.c (takehiro-2002_05_07-experimental): + + fix null pointer access reported by Andreas Westfeld + +2003-08-20 16:45 bouvigne + + * libmp3lame/lame.c: + + fixed CBR settings bug + (introduced by me) + +2003-08-20 16:16 bouvigne + + * libmp3lame/set_get.c: + + fixed an assertion failure on lame_get_interChRatio + (introduced by me) + +2003-08-17 18:09 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2003-08-17 18:07 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + sync with main branch (type handling and socket function detection) + +2003-08-17 08:12 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + sync main branch (pipe input support) + +2003-08-16 10:36 aleidinger + + * doc/html/history.html: + + add entry for the named pipe bug + +2003-08-16 10:26 aleidinger + + * frontend/get_audio.c: + + Work around a bug which shows up if the input is a FIFO. + + Tested by: Ville Herva <vherva@niksula.hut.fi> + +2003-08-10 12:48 bouvigne + + * include/lame.h, libmp3lame/lame.c, libmp3lame/presets.c, + libmp3lame/psymodel.h, libmp3lame/set_get.c, + libmp3lame/set_get.h: + + use presets by default for abr/cbr + +2003-08-10 10:11 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2003-08-10 10:09 takehiro + + * libmp3lame/: libmp3lame.dsp, libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + new interface to change internal flags + +2003-08-10 10:06 takehiro + + * libmp3lame/Makefile.am (takehiro-2002_05_07-experimental): + + new interface to change internal flags. + +2003-08-10 10:05 takehiro + + * libmp3lame/lame.c, libmp3lame/set_get.c, frontend/parse.c, + include/lame.h, libmp3lame/set_get.h + (takehiro-2002_05_07-experimental): + + sync with main branch and fix comments. + - changed API name + - hidden "internal" flags when stable release (when it will be...) + +2003-08-10 10:03 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + fix comment. + +2003-08-10 10:03 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix it may use i-stereo at sfb21. + +2003-08-10 10:00 takehiro + + * debian/: control, copyright, lame.docs, lame.files, rules + (takehiro-2002_05_07-experimental): + + sync with main branch, except changelog itself. + +2003-08-09 18:55 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix for when there's no LIST chunk. + +2003-08-09 12:54 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix warning one more. + +2003-08-09 12:00 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix aliasing warning + +2003-08-09 11:30 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + added definition for MSVC (as Gabriel did in main branch) + +2003-07-16 01:29 rbrito + + * debian/: changelog, control, copyright, lame.docs, lame.files, + rules: + + Updated debian packaging. + +2003-07-13 10:11 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + RIFF->ID3Tag conversion patch from Charlie Lenahan <CLenahan at fortresstech dot com> + +2003-07-11 16:35 aleidinger + + * doc/html/id3.html, doc/man/lame.1, frontend/parse.c: + + Add --ignore-tag-errors, mostly submitted by Adam Luter + <Adam.Luter@matchwave.com>. + +2003-06-29 15:43 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + revert the latest psymodel update... + +2003-06-15 16:52 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial coding style update (comment style change, // ... -> /* ... */ ) + +2003-06-15 16:48 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + do not output unused information to avoid any confusion. + +2003-06-15 15:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix almost all the VBR infinite loop problem (I hope) + + general code simplification + +2003-06-14 17:52 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplified VBR code. + +2003-06-14 17:36 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify the VBR code. + + fix more infinite loop in VBR, but still .... + +2003-06-14 14:34 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix method 2 of substep shaping. + added VBR_3rd_bitalloc() to reduce bitrate little bit. + +2003-06-14 14:33 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one more safer tonality estimation in lower frequency, especially for human voice. + +2003-06-14 14:32 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-06-14 09:32 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix compilation problem on MSVC reported by Yaroslav Efimov + +2003-06-14 07:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix possible VBR infinite loop... but there are still problems. + +2003-06-08 18:19 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR code assumes noise<->scalefactor is a monotonic function. + + some trivial style update + +2003-06-08 17:05 takehiro + + * include/lame.h, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + remove nspsytune2 + +2003-06-08 16:58 takehiro + + * include/lame.h, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + always use ATH adaptive adjustment + +2003-06-08 16:56 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial clean up + +2003-06-08 16:40 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + experimental LR-i check code (not enabled yet) + +2003-06-04 17:47 takehiro + + * Dll/BladeMP3EncDLL.c (takehiro-2002_05_07-experimental): + + sync main branch + +2003-06-04 17:42 takehiro + + * Dll/BladeMP3EncDLL.c: + + fix quality setting API(patch for BugID 746439 at sf.net, reported by mikokong). + +2003-06-01 18:22 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2003-06-01 18:22 aleidinger + + * libmp3lame/Makefile.am: + + add new private header + +2003-06-01 17:20 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/libmp3lame_vc6.dsp, + libmp3lame/presets.c, libmp3lame/set_get.c, libmp3lame/set_get.h: + + private header for internal set/get interfaces + +2003-06-01 16:12 bouvigne + + * libmp3lame/id3tag.c: + + let's use snprintf, with a define for msvc + +2003-06-01 12:34 takehiro + + * libmp3lame/: lame.c, takehiro.c + (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-06-01 12:25 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + added --is-ratio switches to set the is-ratio. + + remove descriptions about -X,-Y and -Z. + +2003-06-01 12:24 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added istereo-ratio to display. + +2003-06-01 12:19 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + update TODOs and categorize them. + +2003-06-01 09:16 takehiro + + * libmp3lame/: lame.c, quantize.c + (takehiro-2002_05_07-experimental): + + tuning lower bitrate (arround 64kbps). + - improve pe -> bit allocation + - changed cutoff, short-threshold. + +2003-06-01 09:14 bouvigne + + * libmp3lame/VbrTag.c: + + fix seek table for freeformat + + There is still something strange because with + -b128 and + -b128 --freeformat + I do not get the same seek table + +2003-06-01 09:06 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + scfsi debug. + - it forgot to initialize scfsi flag when it changes "not istereo" frame to "istereo" frame. + - when scfsi is not used at all, do not re-calculate the how many bits are needed to store the scalefactors. + +2003-05-31 18:28 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + initialize gfc->l3_side.is_start_sfb_l/s in case not using istereo. + +2003-05-31 18:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + do not do the istereo related processes when dual stereo mode. + +2003-05-31 14:05 bouvigne + + * libmp3lame/id3tag.c: + + ID3 TAG of "Encoder name", backported from experimental branch. + Btw snprintf does not exist under msvc, so I used sprintf. + +2003-05-31 13:52 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + sync with the main branch (fix VBR tag when freeformat by Gabriel) + +2003-05-31 13:30 takehiro + + * libmp3lame/id3tag.c (takehiro-2002_05_07-experimental): + + ID3 TAG of "Encoder name". + This is based on the patch from danchr, at http://www.hydrogenaudio.org/index.php?act=ST&f=15&t=9858& + +2003-05-31 13:16 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + do not use istereo when "analog-monaural". + +2003-05-25 17:00 takehiro + + * libmp3lame/: encoder.c, psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + fix i-stereo frame timing delay. + + do not use i-stereo when completely mono. + +2003-05-25 15:34 bouvigne + + * libmp3lame/VbrTag.c: + + corrected the bitrate index of LAME tag in case of freeformat, + but the seek table is still wrong + +2003-05-25 13:21 takehiro + + * Makefile.in, debian/Makefile.in + (takehiro-2002_05_07-experimental): + + regen + +2003-05-25 13:14 takehiro + + * Makefile.am, debian/Makefile.am + (takehiro-2002_05_07-experimental): + + moved dist-hook, as is in the head branch. + +2003-05-25 13:09 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix initialization of "istereo used band" when istereo is not used at all. + +2003-05-25 13:04 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix istereo stereo image bug when mono. + +2003-05-25 12:28 takehiro + + * include/lame.h, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + psymodel for i-stereo. + determine which sfb to use i-stereo by checking similarity of the masking/energy ratios. + +2003-05-25 07:31 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimize CBR/VBR mode pe<->bit allocation + + trivial simplification arround VBR. + +2003-05-25 03:25 takehiro + + * libmp3lame/: encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + i-stereo improvement. + - auto switching LR-i <=> MS-i + - i-stereo aware pe calculation + +2003-05-25 01:19 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + added i-stereo frame count display. + +2003-05-25 00:59 takehiro + + * TODO (takehiro-2002_05_07-experimental): + + slightly updated about i-stereo. + +2003-05-20 12:19 aleidinger + + * debian/Makefile.in, configure: + + regen + +2003-05-20 12:17 aleidinger + + * aclocal.m4: + + remove gtk12-config + +2003-05-20 12:14 aleidinger + + * Makefile.am, debian/Makefile.am: + + move the dist-hook into the directory where the action happens + +2003-05-20 12:13 aleidinger + + * configure.in: + + some enhancements for compiler problems and detection of the right size of some types + +2003-05-19 04:20 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2003-05-19 04:19 takehiro + + * Makefile.in, aclocal.m4, config.guess, config.sub, ltmain.sh, + ACM/Makefile.in, ACM/ADbg/Makefile.in, ACM/tinyxml/Makefile.in, + Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mac/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + regen with libtool-1.4.2/automake-1.5 to fix nasm enabled build + +2003-05-19 04:17 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix compilation problem on "old" compilers + +2003-05-19 04:09 takehiro + + * .cvsignore (takehiro-2002_05_07-experimental): + + added stamp-h?, remove stamp-h1 + +2003-05-18 17:20 takehiro + + * libmp3lame/: bitstream.c, encoder.c, lame.c, lame_global_flags.h, + psymodel.c, quantize.c, tables.c, takehiro.c, util.h, version.h + (takehiro-2002_05_07-experimental): + + initial support of intensity stereo for lower bitrate + it will be enabled when 64-112kbps by default. + + now bump up the alpha7. + +2003-05-18 16:13 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + when NASM is not enabled, do not print message about "MMX" or "3dNow!" + +2003-05-18 15:05 takehiro + + * Makefile.am: + + added chmod +x debian/rules when make dist. + +2003-05-18 15:03 takehiro + + * Makefile.am, Makefile.in, misc/Makefile.am, misc/Makefile.in + (takehiro-2002_05_07-experimental): + + moved lame.bat + added "chmod +x debian/rules" when "make dist" to resolve BugID #578129 + +2003-05-18 14:15 takehiro + + * Dll/BladeMP3EncDLL.h: + + patch from sf.net, Dll compile with gcc. + +2003-05-18 07:04 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix for the environment which "long" is 64bit. + +2003-05-18 03:45 takehiro + + * frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + simplify the opening message + +2003-05-18 02:35 takehiro + + * frontend/: main.h, parse.c (takehiro-2002_05_07-experimental): + + trivial change and fix warnings + +2003-05-18 02:34 takehiro + + * config.guess (takehiro-2002_05_07-experimental): + + oops, I overwrote the older file. revert. + +2003-05-18 02:31 takehiro + + * config.sub (takehiro-2002_05_07-experimental): + + oops, I overwrite the older file. + +2003-05-18 02:27 takehiro + + * stamp-h.in (takehiro-2002_05_07-experimental): + + removed + +2003-05-18 02:21 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + remove -d and --voice + changed recommended setting + +2003-05-17 18:49 takehiro + + * frontend/: main.c, mp3x.c, parse.c + (takehiro-2002_05_07-experimental): + + simplify the startup messages + fix typo in warning mesage + +2003-05-17 18:35 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + remove all the presets + +2003-05-17 17:55 takehiro + + * acconfig.h, ltconfig (takehiro-2002_05_07-experimental): + + removed + +2003-05-17 17:51 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2003-05-17 17:50 takehiro + + * Makefile.in, aclocal.m4, config.guess, config.h.in, config.sub, + configure.in, ltmain.sh, ACM/Makefile.in, Dll/Makefile.in, + debian/Makefile.in, doc/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, ACM/ADbg/Makefile.in, + ACM/tinyxml/Makefile.in, mac/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + libmp3lame/i386/Makefile.in (takehiro-2002_05_07-experimental): + + regen with autoconf-2.54, automake-1.6, libtool-1.4 + +2003-05-17 17:22 takehiro + + * Dll/BladeMP3EncDLL.h (takehiro-2002_05_07-experimental): + + BladeMP3EncDLL.h patch for GCC from sf.net + +2003-05-15 17:04 takehiro + + * frontend/lametime.c (takehiro-2002_05_07-experimental): + + Fix for SunOS 4, reported by Ti Kan. + +2003-05-15 17:02 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix for sunos 4.x, reported by Ti Kan. + +2003-05-15 16:57 takehiro + + * configure.in, frontend/brhist.c + (takehiro-2002_05_07-experimental): + + fix for BSDI, which does not have term.h (reported by Ti Kan) + +2003-05-15 16:55 takehiro + + * lame.bat, misc/lame.bat (takehiro-2002_05_07-experimental): + + moved lame.bat into misc directory + +2003-05-15 15:09 takehiro + + * libmp3lame/: psymodel.c, psymodel.h, tables.c + (takehiro-2002_05_07-experimental): + + trivial clean up. + +2003-05-15 15:08 takehiro + + * include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + remove set_preset_* functions public. + +2003-05-15 15:07 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + new pseudo sfb21 ath handling code (of course, experimental) + +2003-05-15 14:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + Partial fix of VBR code assuming the qunatizing noise always increase + when the scalefactor increase. This makes reduce bitrate arround 40kbps + with bloat_test.wav. + + This fix is not perfect, because it still assumes the qunatizing noise always + decrease when the scalefactor decrease. + +2003-05-15 12:48 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + update default short block threshold + +2003-05-15 12:04 takehiro + + * libmp3lame/: psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + tuning MSFIX value with creaking.wav + simplified and ATH aware msfix() routine. + +2003-05-11 15:03 bouvigne + + * libmp3lame/presets.c: + + updated low bitrate presets. + Considering quality, we have: + ns1 comp1 > ns1 comp3 >ns2 comp3 >ns2 comp1 + +2003-05-11 13:15 bouvigne + + * libmp3lame/lame.c, frontend/parse.c, include/lame.h, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + --sfscale, inhibited -Z + +2003-05-11 11:33 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, lame.c + (takehiro-2002_05_07-experimental): + + simplified calc_noise() and better_quant(). + + update comments. + + tuning ABR/CBR 64/80/192/224 kbps. + +2003-05-11 10:18 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + added comments on vbr code (from main branch). + + trivial simplification in find_scalefac() + + prepare for fixing VBR code assumes "quantize noise always decrease when + scalefactor decrease". + +2003-05-11 09:49 bouvigne + + * libmp3lame/lame.c, libmp3lame/quantize.c, libmp3lame/set_get.c, + frontend/parse.c, include/lame.h, libmp3lame/util.h: + + --sbgain + +2003-05-10 17:56 takehiro + + * testcase.mp3, frontend/parse.c, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix for -k option (reported by Robert. thanx) + +2003-05-09 14:06 aleidinger + + * frontend/: main.c, lametime.c: + + Fix on SunOs 4, Submitted by: Ti Kan <ti@amb.org> + +2003-05-09 13:44 aleidinger + + * frontend/brhist.c: + + fix on BSD/OS 3.x, Submitted by: Ti Kan <ti@amb.org> + +2003-05-09 13:14 bouvigne + + * libmp3lame/quantize.c: + + re-enabling the psfb12 analog silence detection. This time, the coeffs should + be correct. + However, the coding gain is now quite small + +2003-05-08 12:58 bouvigne + + * libmp3lame/quantize.c: + + I am disabling the code for psfb12 analog + silence detection, as it produces some kind of + dropouts. It probably means that there is a bug + somewhere inside. + +2003-05-04 15:36 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-05-04 15:35 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + working on presets + +2003-05-03 14:34 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + ability to set vbr smooth (for vbr-mtrh) + +2003-05-02 17:38 bouvigne + + * frontend/parse.c: + + internal command line options only available in debug or in alpha. + + This way we should not be worried again by users using non docummented options: + they will not be available for them + +2003-05-02 16:18 bouvigne + + * libmp3lame/vbrquantize.c: + + comments based on some mails exchanged with Robert + +2003-05-01 15:23 bouvigne + + * libmp3lame/lame.c: + + maskingadjust/maskingadjust_short available for vbr-mtrh + +2003-04-27 15:18 bouvigne + + * libmp3lame/: encoder.h, l3side.h, lame.c, quantize.c, + quantize_pvt.c, util.h: + + Analog silence detection in partitionned sfb21 or sfb12 for short blocks + +2003-04-20 17:32 bouvigne + + * libmp3lame/presets.c: + + changed short block quantization comparison to method 0 + for abr/cbr on medium bitrates (because of spahm, fatboy and the likes) , + as suggested by Takehiro. + +2003-04-20 17:03 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-04-20 16:56 bouvigne + + * libmp3lame/quantize.c: + + trivial coding change in psfb21_analogsilence + +2003-04-20 16:25 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + bump up alpha version + +2003-04-20 16:25 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + safer tonality estimation for lower frequency, for better human voice encoding. + + prevent frequent much MS/LR switching. + +2003-04-20 16:22 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning ATH scaling. + +2003-04-20 15:57 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + presets (testing) + +2003-04-20 13:28 bouvigne + + * libmp3lame/: lame.c, util.c, util.h: + + simplified prototype of FindNearestBitrate + +2003-04-20 12:58 bouvigne + + * libmp3lame/presets.c: + + preset insane is now aliased to preset 320 + +2003-04-20 12:53 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + removed some old experimental presets + +2003-04-20 12:33 bouvigne + + * libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/presets.c, + frontend/parse.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + removed presetTune struct + +2003-04-19 16:34 bouvigne + + * libmp3lame/presets.c: + + fixed medium bitrates cbr/abr presets + +2003-04-19 10:19 bouvigne + + * TODO: + + updated the TODO file + +2003-04-12 13:47 bouvigne + + * doc/html/: contributors.html, history.html: + + history + +2003-04-12 10:20 bouvigne + + * libmp3lame/lame.c, include/lame.h, frontend/parse.c: + + enable fast replaygain analysis by default + define DECODE_ON_THE_FLY if compiled with mpglib + +2003-04-07 10:14 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + fix build problem + +2003-04-07 00:57 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-04-06 12:03 takehiro + + * libmp3lame/: lame.c, set_get.c + (takehiro-2002_05_07-experimental): + + fix higher bitrate CBR/ABR preset + first attempt of tuning VBR preset + + fix athaa_sensitivity display and code (there was some confusion arround dB/power) + fix warning of some compare. + +2003-04-06 12:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix masking handling code for pre-echo prevention works too much aggressively. + +2003-04-06 11:59 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + tuning ATH value of MDCT region. + +2003-04-05 17:56 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + added ATHlower to display when verbose mode. + +2003-04-05 17:20 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + improve short block "pre-surge" masking control. + and simplify the code. + +2003-04-05 17:19 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix 1st frame psycho analysis. + +2003-04-05 16:03 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + update lower bitrate ABR/CBR preset. + remove outdated comments + +2003-03-31 16:32 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + - remove long block pre-echo handling code (we don't need it when nspsytune). + - fix the lowpass filter index to determine L/R channnel long/short block switching. + - lower the lowpass filter index to determine long/short block. + +2003-03-30 15:11 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + presets portable/portable1 + +2003-03-24 21:21 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-03-24 21:19 bouvigne + + * include/lame.h, frontend/parse.c, libmp3lame/presets.c: + + presets + +2003-03-24 20:32 bouvigne + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/quantize.c, libmp3lame/set_get.c, libmp3lame/util.h, + include/lame.h, frontend/parse.c: + + maskingadjust/maskingadjustshort for vbr-rh + +2003-03-18 15:56 takehiro + + * libmp3lame/: VbrTag.c, encoder.c, util.c + (takehiro-2002_05_07-experimental): + + trivial coding change + +2003-03-16 18:02 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + update comments and clean up. + +2003-03-16 17:53 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + new bs.totbit overflow handling strategy + +2003-03-16 17:53 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove quantize cmpare method 3 and 10. + update comments of over_noise and tot_noise. + +2003-03-16 17:51 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + trivial coding style update + +2003-03-08 13:56 takehiro + + * libmp3lame/: util.c, lame.c (takehiro-2002_05_07-experimental): + + - fix to work --quantcomp/--shortthreshold(it was ignored and LAME uses always the default) + - bit clean up resample. + +2003-03-08 10:28 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify the inc_subblock_gain() by using table. + +2003-03-04 18:00 takehiro + + * libmp3lame/: bitstream.c, encoder.c, tables.c, tables.h, + takehiro.c, util.h (takehiro-2002_05_07-experimental): + + large clean up arround bit stream code. much simple, faster and small. + + fix and optimize MPEG2/2.5 scalefactor value recoding code + there's still some problem using table 1 and sometime makes invalid bitstream... + +2003-03-03 18:54 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h, takehiro.c + (takehiro-2002_05_07-experimental): + + MPEG2/2.5 scalefactor bit recording optimization. + - now it try to use table 1 + - much simplified code. + +2003-03-03 18:01 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix gr_info initilization when MPEG2/2.5, short blocks. + +2003-03-03 17:59 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix best_huffman_divide() sometime fails the assertion. + do not use "extra" preflag when MPEG2/2.5 (it fails to record scalefactors) + simplify the scale_bitcount_lsf() + +2003-03-03 17:13 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + large clean up and simplification.(result is not changed) + +2003-03-03 17:08 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + general clean up and simplification. + +2003-03-03 17:04 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization (use shift instead of division) + +2003-03-03 10:02 takehiro + + * libmp3lame/: util.h, tables.c, psymodel.c + (takehiro-2002_05_07-experimental): + + first attempt of block switching for not 44.1kHz. + - use "variable" lowpass index for "constant" lowpass frequency. + +2003-03-03 04:14 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + tuning long/short threshold for arround 128kbps. + clean up scaling related code. + +2003-03-03 04:12 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2003-03-03 02:48 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + revert substep=2 tuning. + +2003-03-02 18:08 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + comment style update. + some code simplification + +2003-03-02 17:56 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial style change + +2003-03-02 17:53 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + all "cod_info" are changed "gi" + precisely change the scalefactor when substep = 2 + simplify the pinfo calculation(for mp3x) + +2003-03-02 17:50 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + all "cod_info" is changed to "gi" + optimized best_huffman_divide() little. + update comments. + +2003-03-02 16:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + comment update + +2003-03-02 16:40 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + tuning trancation threshold used in pseudo half step method. + more simplication and comment updation. + +2003-03-02 16:03 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + update comments and simplification. + teration_finish_one() is moved from quantize.c to takehiro.c for better conjunction. + +2003-03-02 16:01 takehiro + + * libmp3lame/: tables.c, machine.h, tables.h + (takehiro-2002_05_07-experimental): + + remove IIPOW20() related macro/arrays, all of which are not used. + +2003-03-02 15:08 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + more clean up and simplification. + +2003-03-02 15:06 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix warning. + +2003-03-02 15:05 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + fix prototype. + +2003-03-02 14:53 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, takehiro.c, + util.h (takehiro-2002_05_07-experimental): + + large simplification mainly arround scale_bitcount() + +2003-03-02 11:39 takehiro + + * libmp3lame/: reservoir.c, reservoir.h + (takehiro-2002_05_07-experimental): + + changed ResvAdjust() as macro. + +2003-03-02 11:35 takehiro + + * libmp3lame/: VbrTag.c, id3tag.h, util.h + (takehiro-2002_05_07-experimental): + + simplify the tag related header files. + +2003-03-02 11:20 takehiro + + * libmp3lame/: tables.c, takehiro.c, version.c + (takehiro-2002_05_07-experimental): + + build problem fix when NASM is not enabled + +2003-03-02 11:19 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + one more initialization simplification. + +2003-03-02 11:13 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + simplify the default setting choosing method. + - use optimum_samplefreq() to determine the output sampling rate, as suggested + by Gabriel. + - use MMX_choose_table always if it uses NASM. + +2003-02-27 17:57 bouvigne + + * libmp3lame/libmp3lame_vc6.dsp: + + fix MSVC build (replay gain) + +2003-02-27 17:46 bouvigne + + * libmp3lame/: encoder.h, l3side.h, lame.c, quantize.c, + quantize_pvt.c, quantize_pvt.h, util.c, util.h: + + analog silence detection in partitionned sfb21 + +2003-02-27 03:55 takehiro + + * libmp3lame/: lame.c, quantize.c + (takehiro-2002_05_07-experimental): + + some substep=2 optimization. + - only do substep-shaping in the last quantization step. + +2003-02-27 03:45 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix amp_scalefac_bands loop exit condition. + +2003-02-27 03:38 takehiro + + * libmp3lame/: psymodel.c, util.h, tables.c, takehiro.c + (takehiro-2002_05_07-experimental): + + optimized little on the case not NASM enabled. + +2003-02-24 03:21 takehiro + + * include/lame.h, libmp3lame/lame.c, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + more ABR/CBR default mode setting (use ABR/CBR preset) + +2003-02-23 18:32 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + sync with the mainline (average compression ratio of VBR mode). + +2003-02-23 18:30 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix quantize_xrpow_ISO() as same as in quantize_xrpow() + +2003-02-23 18:22 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix short block window ID initialization. + +2003-02-23 17:16 takehiro + + * libmp3lame/: set_get.c, lame.c + (takehiro-2002_05_07-experimental): + + always uses abr/cbr preset, when abr/cbr coding. + The cutoff frequency is changed as is in the main branch. + +2003-02-23 16:30 olcios + + * libmp3lame/lame.c: + + fixed bug with --resample and --replaygain (input data analysis) + +2003-02-23 16:27 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify amp_scalefac_bands() + +2003-02-23 16:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + simplify inc_subblock_gain() + +2003-02-23 16:07 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix sfb21 does not quantize if some case. + +2003-02-23 10:29 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + general clean up and optimization. + - amplify band selection cleanup + - skip amplify-method 1 when the max_noise is already lesser than 1.0 + - clean up substep shaping in VBR mode + +2003-02-22 19:06 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + new optimized noise shaping strategy. + start with "sparse" noise_shaping_amp method and retry with the finer method, + when we continuously failed. + + This makes CBR/ABR coding quite faster. + + comment style update.(// -> /* */) + +2003-02-22 19:03 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + clean up init_gr_info + +2003-02-22 17:20 takehiro + + * config.guess, config.sub (takehiro-2002_05_07-experimental): + + sync with the mainline. + - update config files (by CISC) + +2003-02-22 17:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix VBR code for new quantize strategy. + +2003-02-22 02:21 olcios + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, + USAGE, configMS.h, frontend/parse.c, include/lame.h, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/gain_analysis.c, libmp3lame/gain_analysis.h, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c, libmp3lame/util.h: + + ReplayGain analysis of a single file (RadioGain) + +2003-02-21 15:54 cisc + + * config.guess, config.sub: + + Update to latest config files to support more hosts/targets. + +2003-02-21 04:53 takehiro + + * libmp3lame/: machine.h, quantize.c, tables.c, tables.h, + takehiro.c (takehiro-2002_05_07-experimental): + + new quantization strategy. + - the code handling quantization factor moved to quantize_xrpow() and + quantize_xrpow_ISO(). This is preparing for "quantizing only the scalefactor + band whose q-factor is changed" and so on. + - now xrpow[] is constant. + +2003-02-21 04:50 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + clean up initialization + +2003-02-21 01:36 takehiro + + * libmp3lame/: mpglib_interface.c, util.h + (takehiro-2002_05_07-experimental): + + sync mainline. + - changed comment style (// -> /* */) by Robert. + - Extending mpglib by the option to return unclipped floating-point values of samples by olcios. + +2003-02-20 23:13 takehiro + + * libmp3lame/: takehiro.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + optimized quantization + - remove QUANTFAC() macro. + - check the max value in quantization routine (loop hoisting) + +2003-02-20 22:43 takehiro + + * mpglib/: common.c, decode_i386.c, decode_i386.h, huffman.h, + interface.c, interface.h, l2tables.h, layer1.c, layer2.c, + layer2.h, layer3.c, layer3.h (takehiro-2002_05_07-experimental): + + sync mainline. + - changed comment style (// -> /* */) by Robert. + - Extending mpglib by the option to return unclipped floating-point values of samples by olcios. + +2003-02-19 19:46 olcios + + * libmp3lame/mpglib_interface.c, libmp3lame/util.h, + mpglib/decode_i386.c, mpglib/decode_i386.h, mpglib/interface.c, + mpglib/interface.h, mpglib/layer3.c, mpglib/layer3.h: + + Extending mpglib by the option to return unclipped floating-point values of samples. + +2003-02-19 16:40 takehiro + + * libmp3lame/: quantize.c, set_get.c + (takehiro-2002_05_07-experimental): + + ATH related tuning for ABR/CBR preset. + + ABR bit-allocation tuning on short blocks + +2003-02-19 12:14 takehiro + + * libmp3lame/presets.c: + + fix comment style. ( // -> /* */ ) + +2003-02-19 12:10 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + cleanup and ABR 128-160kbps shortthreshold change. + +2003-02-19 10:05 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix comments + +2003-02-19 09:48 takehiro + + * libmp3lame/: encoder.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + remove PE FIR filter. It does not work now. + +2003-02-18 14:49 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + on short blocks, use subblock gain first, instead of scalefac_scale + +2003-02-18 14:46 takehiro + + * libmp3lame/: psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + update PE calculation and pe based bit allocation(CBR,ABR) + do not spend too much on short blocks. + +2003-02-18 14:41 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + remove SNR parameter (attack position aware masking calculation code will replace this). + +2003-02-18 01:11 olcios + + * Makefile.DJGPP: + + Workaround for a problem with make clean, regarding long filenames on some systems. + +2003-02-17 01:02 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix threshold at [SBMAX_s-1] of short blocks + +2003-02-16 19:07 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one and one more brand-new S(L-R) channel short block switching strategy + +2003-02-16 18:53 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up in bitpressure_strategy() + +2003-02-16 18:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix overflow in pulse-like signal detection. + +2003-02-16 18:46 bouvigne + + * libmp3lame/presets.c: + + cbr/abr presets (still not finished?) + +2003-02-16 18:40 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + ATH value scaling clean up and one more revert short block strategy... + +2003-02-16 18:07 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + clean up arround initialization of short blocks. + +2003-02-16 18:06 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + trivial clean up in inc_scalefac_scale() + +2003-02-16 18:05 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + better verbose mode printing + +2003-02-16 13:23 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + bump up alpha5 + +2003-02-16 13:22 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + update testcase + +2003-02-16 13:20 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/tables.c + (takehiro-2002_05_07-experimental): + + ATH related code clean up (always use ATH type 4). + +2003-02-16 13:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + better noise estimation + +2003-02-16 13:14 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + optimized calc_xmin() + +2003-02-16 08:38 takehiro + + * libmp3lame/psymodel.c: + + PE calculation improvement (backported from experimental branch). + Better pe calculation for nspsytune. This brings + - better MS/LR switching + - better reservoir handling (brings better ABR/CBR result) + + I hope the trouble on "SeriousTrouble.wav" is partially fixed (not perfect ?). + +2003-02-16 08:25 takehiro + + * libmp3lame/quantize_pvt.h: + + fix build problem (calc_xmin() prototype fix) + +2003-02-16 08:22 takehiro + + * libmp3lame/quantize.c: + + fix one more subblock_gain handling code. + +2003-02-15 14:07 bouvigne + + * libmp3lame/quantize.c: + + init max_nonzero_coeff to 575 instead of 0 + +2003-02-14 17:41 bouvigne + + * libmp3lame/: l3side.h, quantize.c, quantize_pvt.c, takehiro.c: + + do not calc noise in upper 0 part + +2003-02-10 03:26 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix long->short masking threshold conversion (still experimental). + revert S(L-R) channel blocktype switching strategy. + 1st attempt of short block pre-echo prevention code(lessen masking before the surge on shortblocks, for preecho prevention). + +2003-02-10 03:21 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + verbose mode:added if it uses subblock gain or not. + +2003-02-09 18:01 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + one more tuning short block noise calculation + - max_noise handling fix. + + changed quantcomp_s and quamtcomp + - use quantcomp_s only for short blocks. (do not use for start/end) + +2003-02-09 17:43 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + reduce memory copy in best_huffman_divide() + +2003-02-09 16:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + oops, fix short block noise calculation... + +2003-02-09 16:41 takehiro + + * frontend/gtkanal.c, libmp3lame/lame-analysis.h, + libmp3lame/psymodel.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + changed mp3x "surge intensity" display. + + fix psymodel mis-enables the short blocks when MS stereo. + + changed short blcok setting strategy on the S(L-R) channel. + Although this brings better LR/MS handling for fatboy.wav et.al., this is not true idea but work arround. we should get better ns_msfix(). + + simplify the surge detection in psymodel.c + + added comments on psymodel.c for mp3x display and the window position. + +2003-02-09 16:36 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial simplification + +2003-02-09 16:35 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + new calc noise for short blocks. + it calculates the sum of noise in 3 subblocks at same frequency region. + + I hope this makes --quantcomp hack obsolete. + +2003-02-09 15:19 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + sync main: comments update by Mark. + +2003-02-09 12:36 bouvigne + + * libmp3lame/quantize_pvt.c: + + revert speedup + +2003-02-09 01:25 markt + + * include/lame.h: + + added a comment about reading the file API + +2003-02-08 17:46 bouvigne + + * libmp3lame/: presets.c, version.h: + + presets + +2003-02-08 13:53 bouvigne + + * libmp3lame/quantize_pvt.c: + + small speedup + +2003-02-08 09:51 takehiro + + * frontend/main.c: + + trivial simplification + +2003-02-08 07:22 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + sync main line: comments about lame_init() + +2003-02-07 18:17 bouvigne + + * DEFINES: + + KLEMM_44 + +2003-02-06 20:04 markt + + * include/lame.h: + + updated comments about lame_init() from Kendrick Hamilton + +2003-02-06 06:29 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix analog silence detection + +2003-02-05 09:27 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen + +2003-02-05 09:26 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix subband filtering (always mono...) + +2003-02-04 18:27 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix --keeptag option + +2003-02-04 17:16 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + oops, trivial mistake... + +2003-02-04 17:11 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + some tuning arround attack threshold. not so far from good... + +2003-02-04 17:10 takehiro + + * libmp3lame/: psymodel.c, psymodel.h + (takehiro-2002_05_07-experimental): + + update comment and remove unused lines. + +2003-02-04 17:01 takehiro + + * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/tables.c, libmp3lame/util.h + (takehiro-2002_05_07-experimental): + + use subband filter sample to determine block type. + it still remains parameter tuning, but it works. + +2003-02-04 16:11 takehiro + + * libmp3lame/: encoder.c, newmdct.c, newmdct.h, psymodel.c, + psymodel.h, tables.c, tables.h, util.h + (takehiro-2002_05_07-experimental): + + prepare for using subband filtered samples to determine block switching. + This will archive faster, and better block switching. + + And using this, we can get more precise short block threshold calculation, I hope. + +2003-02-04 16:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix comment and trivial optimization. + +2003-02-04 15:59 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + regen + +2003-02-04 15:59 takehiro + + * configure (takehiro-2002_05_07-experimental): + + to avoid confusion, make version 4.00 + +2003-02-04 15:01 takehiro + + * frontend/: brhist.c, console.c, gtkanal.c, main.c, parse.c, + rtp.c, timestatus.c (takehiro-2002_05_07-experimental): + + sync with main + - comment fix // -> /* */ + - nogap related updates + +2003-02-04 13:18 takehiro + + * libmp3lame/lame.c, libmp3lame/util.h, include/lame.h + (takehiro-2002_05_07-experimental): + + sync main. + - remove coding_t + - update comment + +2003-02-03 18:41 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + remove unused code + +2003-02-03 18:40 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + sync with the head. + +2003-02-03 18:29 takehiro + + * frontend/: get_audio.c, main.h, parse.c + (takehiro-2002_05_07-experimental): + + added --keeptag option and clean up tag copy code. + currently it works only with ID3v1. + +2003-02-02 18:51 bouvigne + + * libmp3lame/version.h: + + bump alpha + +2003-02-02 18:50 bouvigne + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + include/lame.h, libmp3lame/presets.c, libmp3lame/set_get.c, + frontend/parse.c: + + preset medium + +2003-02-02 17:30 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + keep id3tag when reencoding mp3(experimental). + 1. it sometimes mis-recognize the tag. (but this is the same behavior of madplay) + 2. we should add some option to enable/disable this function. + + after 2 is solved, I will backport it to the head branch. + +2003-02-02 17:15 takehiro + + * frontend/: get_audio.c, gtkanal.c + (takehiro-2002_05_07-experimental): + + trivial comment/style update + +2003-02-02 17:10 bouvigne + + * libmp3lame/: lame.c, util.c, util.h: + + removed KLEMM_44 + +2003-02-02 15:50 bouvigne + + * libmp3lame/: lame.c, util.h: + + removed useless structure (coding_t) + +2003-02-02 14:45 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets: standard should be fine, working on medium + +2003-02-02 10:15 bouvigne + + * libmp3lame/psymodel.c: + + comments regarding TMN and NMT (thank you Takehiro) + +2003-02-01 21:59 takehiro + + * libmp3lame/: encoder.c, lame.c, newmdct.c, util.h + (takehiro-2002_05_07-experimental): + + prepare for subband filter output to determine long/short block switching. + - subband filtering in next frame. + - encode delay setting + +2003-02-01 20:06 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + precise error message about nspsytune2 + +2003-02-01 11:49 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + clean up and optimization. + +2003-01-30 12:13 takehiro + + * frontend/get_audio.c: + + bit better mp3 input file sync. but we need one more for Chris.mp3.... + +2003-01-30 08:48 markt + + * libmp3lame/: encoder.c, lame.c: + + + + Formula for the amount of data that had to be in the buffer + before it could be encoded was incorrect. Old formula + (for the polyphase filterbank) was: + + old formula: 286+576*(1+gfc->mode_gr) = 2014 (MPEG1) + + Correct formula is: 512+framesize -32 = 1632 + + Best way to see this is to go through window_subband() in newmdct.c + It access samples x[32*i] through x[510+32*i] for i=0..17. + + So our old condition was too conservative. + + However, the FFT still requires 1904 samples, so the + net change is just to lower the requirement from 2014 to 1904. + +2003-01-28 03:12 takehiro + + * libmp3lame/lame-analysis.h (takehiro-2002_05_07-experimental): + + fix build problem on not HAVE_GTK environment + +2003-01-28 00:29 markt + + * libmp3lame/lame.c: + + short blocks are coupled, even in regular stereo mode. + This is to fix bugs reported in several different hardware decoders. + see comments in lame.c + +2003-01-27 12:22 takehiro + + * libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + added comments ... + +2003-01-27 11:39 takehiro + + * libmp3lame/VbrTag.c: + + fix warning(added return value) + +2003-01-26 17:37 takehiro + + * frontend/get_audio.c: + + added ID3tag v2 skipping function. + +2003-01-26 12:37 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + tuned long block PE calculation parameter. + +2003-01-26 12:09 bouvigne + + * libmp3lame/version.h: + + bumped alpha + +2003-01-26 12:08 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets (under testing) + +2003-01-26 12:02 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + tuned short block PE calculation parameter. + +2003-01-26 11:31 bouvigne + + * libmp3lame/lame.c: + + verbose + +2003-01-26 10:04 takehiro + + * libmp3lame/: takehiro.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + fix wrong "const" declaration. + +2003-01-25 11:02 bouvigne + + * libmp3lame/: lame.c, quantize.c: + + changed -q mapping + +2003-01-24 19:26 bouvigne + + * doc/html/history.html: + + history + +2003-01-22 17:15 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix best_huffman_divide MPEG2 short block treatment. + This is the same bug in count_bits(). + +2003-01-22 15:38 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove inner loop iteration limit (age) and some simple optimization. + +2003-01-21 02:45 takehiro + + * frontend/: parse.c (takehiro-2002_05_07-experimental), parse.c: + + added \n in --preset help + +2003-01-20 18:09 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets (under testing) + +2003-01-19 15:55 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c: + + presets (under testing) + +2003-01-19 09:13 takehiro + + * libmp3lame/: encoder.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + fix fatal bit-counting bug in MPEG2/2.5 short block. + +2003-01-19 06:30 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + oops, type mismatch... + +2003-01-18 14:44 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + added new API, lame_set_use_subblockgain() to set if it uses subblock gain or not. + +2003-01-18 14:42 takehiro + + * frontend/parse.c, libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + added "--sfscale" and "--sbgain" options. + This is replacement of old ambiguous "-Z" option. + +2003-01-13 16:34 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + use --preset insane when --preset 320 + +2003-01-13 13:19 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + 10th quantcomp method, based on 3rd method, but uses over_noise instead of tot_noise. + +2003-01-13 13:11 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix fatal bug which happens when the last partition is wider than the last scalefactor band. + +2003-01-13 11:46 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + fix "off by one" in short block masking calculation. + +2003-01-13 11:45 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + use automatic resample even when ABR. + +2003-01-13 11:34 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + changed DEBUGF -> printf (to fix debug build). + vorbis removing related fix. + +2003-01-13 08:53 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + oops... fix auto short block switching threshold adjustment. + +2003-01-13 08:43 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + oops... fix --quantcomp option. + +2003-01-13 00:49 glessard + + * frontend/: get_audio.c, main.c, main.h, parse.c: + + NOGAP-related changes. + - added '-T' option to force VBR/INFO tag inclusion. + - moved a VBR/INFO tag inclusion decision to parse.c, eliminating the use + of a global variable across modules. + - fixed reading of multiple little-endian AIFF-C files in get_audio.c. For + those files, 'swapbytes' was getting toggled for each file opened in the + sequence, so only every other output file was correct. + +2003-01-12 15:18 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + added --quantcomp option. + +2003-01-12 12:37 takehiro + + * libmp3lame/: VbrTag.c, lame_global_flags.h, util.c + (takehiro-2002_05_07-experimental): + + sync with the head arround VbrTag. + +2003-01-12 12:35 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + ABR/CBR preset sync with the head branch. + +2003-01-12 12:33 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2003-01-11 18:40 bouvigne + + * libmp3lame/presets.c: + + low bitrates presets + +2003-01-11 17:56 markt + + * libmp3lame/: VbrTag.c, lame_global_flags.h, util.c: + + reorganized VBR tag initialization code so that it + could be reset/initialized several times + (for use when encoding in nogap mode) + +2003-01-11 17:42 markt + + * libmp3lame/lame_global_flags.h: + + removed comment within comment delimiter + +2003-01-11 17:41 markt + + * include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/lame_global_flags.h: + + cleaned up some comments about VBR tags being written + to the mp3 file after internal data structures are free + (this has not been true for a long time) + + na + +2003-01-11 15:43 bouvigne + + * libmp3lame/presets.c: + + low bitrates presets + +2003-01-11 13:05 takehiro + + * libmp3lame/: encoder.c, quantize.c, quantize.h + (takehiro-2002_05_07-experimental): + + remove an unused argument of VBR_iteration() + +2003-01-11 12:55 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix mono ABR/VBR encoding + +2003-01-11 12:46 takehiro + + * libmp3lame/lame.c: + + fix ath curve initialization. + +2003-01-11 12:25 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix config print code + +2003-01-11 11:10 takehiro + + * frontend/rtp.c (takehiro-2002_05_07-experimental): + + sync with the head branch + - Include alloca.h if neccessary. (by Alex) + +2003-01-11 11:09 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + sync with the head branch + - GB's Ability to change ath4 shape independantly from vbr_q + +2003-01-11 11:08 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + sync with the head branch (GB's change, "Add the Info frame to the number of frames reported by the Info/vbr tag") + +2003-01-11 11:07 takehiro + + * USAGE (takehiro-2002_05_07-experimental): + + update bit. + +2003-01-11 11:06 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + use "safe" way of short block long->short threshold conversion + better ns_msfix by using the fatc that noise in sfb couldn't exceed its energy. + do not use ns_msfix when we used msfix. + do not long block msfix when the block IS short. + +2003-01-11 04:16 markt + + * frontend/main.c, libmp3lame/VbrTag.c: + + in nogap mode, with VBR tags, we were calling init_bitstream() + (which resets VBR tag data) before writing the VBR tag data. + This is now fixed, but there is still a bug when initializing the + VBR data for the 2nd (or more) encoding in the nogap series. + +2003-01-10 21:22 markt + + * frontend/parse.c: + + forgot a \n in the --longhelp documentation + +2003-01-10 20:18 markt + + * USAGE: + + note that --voice option is obsolete + +2003-01-10 20:12 markt + + * frontend/: main.c, main.h, parse.c: + + added the "--nogaptags" option. + + this will allow VBR tags even for gapless encoding. + The default behavoir is to disable tags for gapless encoding. + +2003-01-10 20:07 markt + + * frontend/parse.c, libmp3lame/VbrTag.c: + + Updated the TOC calculation in the VBR tag to also count + the size of the VBR tag itself. + + This is to make the VBR tag consistent with the recent change + in the VBR frame count (changed so that it also counts the + VBR tag as a frame) + +2003-01-10 19:06 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + fix usage message arround ns(-bass|-alto|-treble|-sfb21|msfix). + +2003-01-10 18:58 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial cleanup (when JOINT_STEREO and no-psymodel, it is always MS stereo) + +2003-01-10 18:57 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix some initilization when ABR. + (It seems ATH-adjust type 3 does not works fine with ABR mode ...) + +2003-01-05 16:49 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + fix compiling error(oops, trivial mistake...) + +2003-01-05 16:36 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + - use ns-(bass|alto|treble|sfb21) in psymodel. And now ATH values are not + affected by these values. + + - sfb21 aware pe(perceptual entropy) calculation. I hope it brings + better LR/MS switching, but CBR/ABR is now not good as it was because of this. + I'm afraid it needs overhaul.... + + - analog silence detection code is moved to pecalc_[ls] functions. + +2003-01-05 14:56 takehiro + + * libmp3lame/version.c (takehiro-2002_05_07-experimental): + + removed unused code + +2003-01-05 08:15 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + one more fix for inc_subblock_gain(). + and some clean up. + +2003-01-05 08:14 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + pe calculation of over 16kHz region. + +2003-01-05 07:22 takehiro + + * libmp3lame/: lame-analysis.h, quantize.h + (takehiro-2002_05_07-experimental): + + move set_frame_pinfo() definition to fix mp3x built + +2003-01-05 07:21 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + remove unused code to fix mp3x built + +2003-01-05 04:28 takehiro + + * DEFINES (takehiro-2002_05_07-experimental): + + completely updated (from Alex's comment). + +2003-01-05 04:11 takehiro + + * libmp3lame/: bitstream.c, encoder.c, quantize.c, reservoir.c, + reservoir.h (takehiro-2002_05_07-experimental): + + - general clean up mainly arround reservoir. + - use faster and not exact quantizing method for the 1st step of VBR. + (It estimates scalefactor step roughly and not needed exactness) + +2003-01-05 03:36 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + remove u_char definition (sync head branch) + +2003-01-02 18:42 bouvigne + + * libmp3lame/psymodel.c: + + In psymodel_init set blocktype_old to NORM_TYPE because the VBR header is long blocks. This might be the problem encountered in some WMP 6.4 + +2003-01-02 18:37 bouvigne + + * libmp3lame/VbrTag.c: + + Add the Info frame to the number of frames reported by the Info/vbr tag + +2003-01-02 18:30 bouvigne + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + reduced 63 warnings to 55 under visual c++. Those were mainly differences between function prototypes in declarations and implementations. + +2003-01-02 18:27 bouvigne + + * libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.c, libmp3lame/util.h, frontend/parse.c, + include/lame.h: + + Ability to change ath4 shape independantly from vbr_q + +2003-01-01 16:14 aleidinger + + * libmp3lame/machine.h: + + Removed u_char typedefs, u_char is not used in the tree (according to grep -r u_char). + +2003-01-01 16:12 aleidinger + + * frontend/rtp.c: + + Include alloca.h if neccessary. + + Noticed by: Tomi Vainio <Tomi.Vainio@Sun.COM> + +2002-12-31 14:00 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/libmp3lame.dsp, libmp3lame/libmp3lame_vc6.dsp + (takehiro-2002_05_07-experimental): + + vbrquantize.[ch] and quantize_pvt.c is merged into quantize.c + +2002-12-31 13:58 takehiro + + * libmp3lame/: bitstream.c, encoder.c, lame.c, lame_global_flags.h, + reservoir.c, tables.c, util.c, util.h, version.h + (takehiro-2002_05_07-experimental): + + general cleanup + gfp->VBR_mean_bitrate_kbps and gfp->brate is merged. + + init_bit_stream_w is moved to lame.c from bitstream.c + + FindNearestBitrate(), map2MP3Frequency(), SmpFrqIndex() + are moved to lame.c from util.c + + fix VBR lowest/highest bitrate in mono-mode + + now alpha 4 + +2002-12-31 13:56 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h, + quantize.h, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + removed analog silence related code in calc_xmin(). + + ABR/CBR code integration. + caller of init_outer_loop() and calc_xmin() is moved to outer_loop() + + off by one fix of global_gain (from the mainline), in outer_loop() + + new vbr code. but still needs more fix. + remove unused code in VBR_prepare() + + vbrquantize.[ch] and quantize_pvt.c is merged into quantize.c + + one more inc_subblock_gain() fix. + +2002-12-31 13:53 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + some cleanup arround pointer. + + analog silence detection in psymodel.c. + + skip short block FFT calculation of joint stereo, if it is not needed. + +2002-12-29 16:48 takehiro + + * frontend/main.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c, + libmp3lame/set_get.c, libmp3lame/tables.c + (takehiro-2002_05_07-experimental): + + cleanups + - all vbr modes are into one. + - more initilization code organization + + experimental tuning of short block switching threshold in ABR presets. + +2002-12-29 16:44 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + update mainly due to long->short threshold convertion + +2002-12-29 09:09 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + follow new APIs + +2002-12-29 08:57 takehiro + + * libmp3lame/: VbrTag.c, bitstream.c, encoder.c, lame.c, + lame_global_flags.h, machine.h, psymodel.c, psymodel.h, tables.c, + tables.h, util.c, util.h, version.h + (takehiro-2002_05_07-experimental): + + general cleanups + - removed KLEMM_44 (I plan to replace the resampling code with ssrc) + - VBR/CBR/ABR related initialization cleanup + - moved initialization related code in lame.c/util.c -> tables.c + - most of "preset" settings are defaulted. + + experimenal tuning + - substep method and use_scalefac_scale setting are removed + from -q option mapping + +2002-12-29 08:51 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + - simplify/removed not needed VBR code. + *** There is still problem which it assumes the quantization noise is + *** monotone function of the scalefactor(quantization factor). + +2002-12-29 08:49 takehiro + + * libmp3lame/: lame-analysis.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c (takehiro-2002_05_07-experimental): + + - use athAdjust() always (in quantize.c) + - removed unused quantcomp_method + +2002-12-29 08:43 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + * follow API changes. + * clean up options. + added options + --shortthreshold + removed options + --r3mix, --phone, --voice, --radio, --tape, --cd, --studio, + --cwlimit, --nspsytune, + --vbr-old, --vbr-new, --vbr-mrth + --short + changed options + --allshort, --noshort (implemented by shortthreshold API) + +2002-12-29 08:40 takehiro + + * libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/libmp3lame_vc6.dsp, libmp3lame/presets.c, + libmp3lame/set_get.c, Makefile.DJGPP, Makefile.MSVC, + Makefile.unix (takehiro-2002_05_07-experimental): + + presets.c is merged into set_get.c + API change + - CHANGED: expX -> "quantocomp_method" + - CHANGED: expZ -> "use_large_scalefac" + - REMOVED: cwlimit related APIs + - REMOVED: short blocks on/off/forced APIs + - NEW: short blocks switching threshold API + +2002-12-27 04:42 takehiro + + * libmp3lame/psymodel.c: + + use ATH value as short block masking lower limit. + +2002-12-27 04:21 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/set_get.c, + libmp3lame/version.h: + + new option --shortthreshold and bump up version number(alpha 8) + and new psymodel version(0.90) for ATHadjust aware psymodel + +2002-12-27 04:17 takehiro + + * libmp3lame/psymodel.c: + + fix assertion failure (oops, my mistake in ATH handling change) + +2002-12-26 05:43 takehiro + + * libmp3lame/: lame.c, psymodel.c, psymodel.h: + + cleanup psymodel initialization preparing for --shortthreshold option. + +2002-12-25 12:13 takehiro + + * libmp3lame/: psymodel.c, quantize.c, set_get.c, util.h, + vbrquantize.c: + + ATH handling fix and simplification. + - use ATH adjust in ns_msfix(), mask_add(), and masking lower limit calculation. + - all ATH adjust related thresholding(ns_msfix, quantcompare and scalefac_scale) is removed. + +2002-12-21 07:12 takehiro + + * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.c, tables.c + (takehiro-2002_05_07-experimental): + + masking_lower related fix for shortblock ATH handling and clean up. + +2002-12-21 07:10 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + trivial style change + +2002-12-21 05:52 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization (when joint stereo, it is always STEREO and channels_out = 2) + +2002-12-21 05:51 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix it uses LR threshold for MS when -m f + +2002-12-21 05:45 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + zero prevention (adding 1e-37) is not needed. + +2002-12-21 04:55 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix + (takehiro-2002_05_07-experimental): + + fix for removing vorbis support + +2002-12-21 04:53 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + short block ATH scaling fix. + +2002-12-18 16:29 takehiro + + * libmp3lame/libmp3lame_vc6.dsp: + + removed tools.h + +2002-12-18 16:27 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, debugscalefac.c, tools.c, + tools.h: + + remove unused files and regen Makefile + +2002-12-16 19:02 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix inc_subblock_gain() to properly handle sfb12 (16kHz over region) MDCT coefs. + +2002-12-16 18:46 takehiro + + * libmp3lame/quantize.c: + + oops, I checked in the wrong version... + +2002-12-16 18:45 takehiro + + * libmp3lame/quantize.c: + + fix inc_subblock_gain() to properly handle sfb12 (16kHz over region) MDCT coefs. + +2002-12-16 18:14 takehiro + + * libmp3lame/: psymodel.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + initial attempt to long->short masking threshold conversion + fix FFT routine selection code. + + adjust masking threshold scaling for VBR. + + fix ATH handling for long block masking threshold. + +2002-12-16 18:10 takehiro + + * libmp3lame/: encoder.c, lame-analysis.h + (takehiro-2002_05_07-experimental): + + mp3x displays MS/LR masking pe difference + +2002-12-15 17:46 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + cleanup related removing vbr-old + +2002-12-15 17:39 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + cleanup related removing vbr-old + +2002-12-15 17:37 takehiro + + * libmp3lame/lame_global_flags.h + (takehiro-2002_05_07-experimental): + + remove an unused variable + +2002-12-15 17:36 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix short block scaling for ATH handling + +2002-12-15 16:25 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix fatal short block ATH handling... + +2002-12-15 12:56 bouvigne + + * libmp3lame/lame.c, frontend/parse.c: + + warning about alpha versions + +2002-12-15 11:59 takehiro + + * ACM/ACMStream.cpp: + + fix access violation when LAME failed to initilize. + I hope this fixes BUG ID 646894 (at sf.net). + +2002-12-15 11:11 takehiro + + * libmp3lame/lame.c: + + fix warning (reported at sf.net by krick.) + +2002-12-15 11:10 takehiro + + * libmp3lame/: util.h, takehiro.c: + + fix warning (reported at sf.net by krick. + +2002-12-15 10:07 takehiro + + * libmp3lame/: presets.c, quantize.c + (takehiro-2002_05_07-experimental): + + remove vbr-old and its presets + +2002-12-15 09:47 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + adjust masking threshold for new mask_add() strategy. + +2002-12-15 09:11 takehiro + + * libmp3lame/lame.c: + + fix -q0 convined with --substep x option. + +2002-12-15 08:56 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix: + + fix for vorbis support remove (I hope) + +2002-12-14 19:19 robert + + * ChangeLog, Makefile.MSVC, lame.bat, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/quantize.c, libmp3lame/util.c, + misc/lame4dos.bat, misc/mlame: + + removed my email address + +2002-12-14 18:56 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix for ATH handling and short block VBR threshold. + +2002-12-14 17:38 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + more fix for msfix and its comment. + +2002-12-14 11:08 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix better ns_msfix (and better MS/LR switching). + +2002-12-14 08:01 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix msfix for symmetric L/R treatment. + +2002-12-13 17:48 takehiro + + * libmp3lame/quantize.c: + + off by one fix for global_gain. + +2002-12-13 17:42 takehiro + + * libmp3lame/: encoder.h, psymodel.c, quantize.c, set_get.c, + tables.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + ATH adjustment related code cleanup (for mostly preset). + and possible fix for "global_gain > 255" (backport from mainline). + +2002-12-13 16:58 takehiro + + * configure, frontend/main.h, libmp3lame/Makefile.in: + + remove vorbis support and regen. + +2002-12-13 16:54 takehiro + + * configure.in, config.h.in, frontend/get_audio.c, frontend/main.c, + frontend/parse.c, libmp3lame/Makefile.am, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/vorbis_interface.c: + + remove vorbis support. + +2002-12-13 14:34 takehiro + + * libmp3lame/lame.c: + + fix for 64bit environment, reported by Tomi Vainio <Tomi.Vainio@Sun.COM> + +2002-12-09 19:00 bouvigne + + * libmp3lame/: quantize.c, version.h: + + fixed the quant_comp problem (probably introduced by me) + so bump the alpha version number + +2002-12-08 17:40 takehiro + + * libmp3lame/version.h: + + now 3.94 alpha 6 + - changed default block switching threshold + - fixed mpglib crash. + +2002-12-08 17:35 takehiro + + * libmp3lame/psymodel.c: + + changed long/short block switching threshold. + +2002-12-08 17:23 takehiro + + * testcase.mp3: + + new testcase for the new default cutoff frequency. + +2002-12-08 17:07 takehiro + + * mpglib/interface.c: + + null pointer check patch from Peter Pawlowski <peter at blorp dot com>, to prevent the random crash. + +2002-12-08 17:02 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.am, + Makefile.in, Makefile.unix, configMS.h, configure, configure.in, + testcase.mp3, frontend/brhist.c, frontend/brhist.h, + frontend/console.c, frontend/console.h, frontend/get_audio.c, + frontend/get_audio.h, frontend/gpkplotting.h, frontend/gtkanal.c, + frontend/gtkanal.h, frontend/lametime.c, frontend/lametime.h, + frontend/main.c, frontend/main.h, frontend/parse.c, + frontend/parse.h, frontend/portableio.h, frontend/rtp.c, + frontend/rtp.h, frontend/timestatus.c, frontend/timestatus.h, + include/lame.h, libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/fft.c, libmp3lame/fft.h, + libmp3lame/gain_analysis.c, libmp3lame/gain_analysis.h, + libmp3lame/id3tag.h, libmp3lame/l3side.h, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/libmp3lame.dsp, + libmp3lame/machine.h, libmp3lame/mpglib_interface.c, + libmp3lame/newmdct.c, libmp3lame/newmdct.h, libmp3lame/presets.c, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/reservoir.h, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h, + libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/vorbis_interface.c, libmp3lame/i386/Makefile.am, + libmp3lame/i386/Makefile.in, mpglib/common.c, mpglib/common.h, + mpglib/dct64_i386.h, mpglib/decode_i386.h, mpglib/huffman.h, + mpglib/interface.c, mpglib/interface.h, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer1.h, mpglib/layer2.c, + mpglib/layer2.h, mpglib/layer3.c, mpglib/layer3.h, + mpglib/mpg123.h, mpglib/mpglib.h, mpglib/tabinit.h: + + overwrite by takehiro_stable branch. + +2002-12-08 16:59 takehiro + + * mac/.cvsignore: + + added + +2002-12-02 20:26 bouvigne + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/presets.c, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, include/lame.h, frontend/parse.c + (takehiro-stable-2002_10_15): + + quant_comp and quant_comp_short + +2002-12-01 17:47 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + now alpha4 + - fix -q0 and -q1 + - -X and -Z option update + + I think we should "-X1,0" as default for ABR/CBR/VBR-old, including all presets. (except fast presets) + please test and tell your result. + +2002-12-01 17:43 takehiro + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c + (takehiro-stable-2002_10_15): + + added "-Z -1" to enable scalefactor scale only(disable subblock gain) + +2002-12-01 16:32 aleidinger + + * ChangeLog: + + update for 3.93.1 + +2002-12-01 16:18 aleidinger + + * configure: + + regen + +2002-12-01 16:15 aleidinger + + * configure.in: + + change version to 3.93.1 + +2002-12-01 16:12 aleidinger + + * configure: + + regen + +2002-12-01 16:10 aleidinger + + * doc/html/history.html: + + sync with webpages + +2002-12-01 16:06 aleidinger + + * configure.in: + + Check for socket() in libsocket if it isn't in libc so rtp can get compiled + on Solaris. + + Noticed by: "Niki W. Waibel" <niki.waibel@gmx.net> + + While I'm here, bail out if some other functions aren't there. + +2002-12-01 15:42 takehiro + + * libmp3lame/lame.c (takehiro-stable-2002_10_15): + + fix -q0 and -q1. This makes -q0 very very slow. + +2002-12-01 15:36 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/vbrquantize.c + (takehiro-stable-2002_10_15): + + now you can specify the method how to compare the quantization + for long/short block independently by -X option.(-X n,m) + +2002-12-01 13:18 takehiro + + * libmp3lame/set_get.c (takehiro-stable-2002_10_15): + + fix comment + +2002-11-30 18:18 bouvigne + + * libmp3lame/version.h: + + version + +2002-11-29 17:07 bouvigne + + * Dll/BladeMP3EncDLL.def: + + dll exports + +2002-11-28 21:05 bouvigne + + * doc/html/: history.html, index.html: + + docs + +2002-11-28 18:06 bouvigne + + * libmp3lame/version.h: + + go back to 3.93 + +2002-11-28 18:04 bouvigne + + * libmp3lame/lame.c: + + revert back q0 to q1 state (due to reports about quality problems) + +2002-11-26 15:45 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + alpha4 solves the fatal error in outer_loop(). it should not select the + data whose global_gain is greater than 255. + +2002-11-25 18:00 bouvigne + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + sync presets with the executable front-end and libmp3lame + +2002-11-25 01:36 takehiro + + * libmp3lame/: Makefile.am, Makefile.in + (takehiro-stable-2002_10_15): + + fix build problem + +2002-11-24 18:37 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + Fix not to select the data whose global_gain is greater than 255. + and inner_loop() manual inlining. + This fix is based on the R.A.F.'s bug report at HA. Thanx R.A.F. + +2002-11-23 18:54 bouvigne + + * libmp3lame/psymodel.c: + + quick fix of nspsytune + +2002-11-17 16:39 takehiro + + * libmp3lame/.indent.pro (takehiro-stable-2002_10_15): + + I forgot to sync this with the head branch. + +2002-11-17 16:34 takehiro + + * Makefile.in, configure, Dll/Makefile.in, libmp3lame/Makefile.in + (takehiro-stable-2002_10_15): + + regen (by hand :p) + +2002-11-17 16:33 takehiro + + * ChangeLog, ChangeLog.header, Makefile.am, configure.in, + Dll/Makefile.am, libmp3lame/Makefile.am + (takehiro-stable-2002_10_15): + + sync with head branch (releasing 3.93 related things). + +2002-11-17 15:59 takehiro + + * doc/html/history.html (takehiro-stable-2002_10_15): + + copy from webpage/history.html + +2002-11-17 11:11 aleidinger + + * configure.in, libmp3lame/version.h: + + We are now at 3.94alpha... + +2002-11-17 10:41 aleidinger + + * doc/html/history.html: + + Copy history from webpage. + +2002-11-17 10:29 aleidinger + + * ChangeLog: + + ChangeLog for 3.93. + +2002-11-17 10:25 aleidinger + + * Dll/Makefile.in, Makefile.in: + + regen + +2002-11-17 10:24 aleidinger + + * Makefile.am: + + Add lame.dsw. + +2002-11-17 10:23 aleidinger + + * Dll/Makefile.am: + + Oops... add missing backslash. + +2002-11-17 10:18 aleidinger + + * Dll/Makefile.in, libmp3lame/Makefile.in: + + regen + +2002-11-17 10:16 aleidinger + + * libmp3lame/Makefile.am: + + Add gain_analysis.[ch] to the distributed files. + +2002-11-17 10:11 aleidinger + + * Dll/Makefile.am: + + Add some missing files. + +2002-11-17 10:09 aleidinger + + * configure: + + gtk12-config -> gtk-config + +2002-11-17 10:05 aleidinger + + * testcase.mp3: + + "Official" testcase.mp3 for this release. + +2002-11-17 09:51 aleidinger + + * ChangeLog.header: + + Add some information about branches. + +2002-11-17 09:46 aleidinger + + * libmp3lame/version.h: + + We are at 3.93-RELEASE now... + +2002-11-17 09:45 aleidinger + + * doc/man/lame.1, frontend/parse.c: + + Warn about fast presets. + +2002-11-16 13:07 takehiro + + * configure (takehiro-2002_05_07-experimental): + + remove vorbis related things + +2002-11-16 12:44 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + removed vorbis related thing + +2002-11-16 10:07 bouvigne + + * doc/html/presets.html: + + warning about fast presets + +2002-11-13 20:56 bouvigne + + * libmp3lame/: lame.c, presets.c, util.c, util.h + (takehiro-stable-2002_10_15): + + change of the default lowpass values (will break testcases) + +2002-11-13 20:24 bouvigne + + * libmp3lame/: lame.c, presets.c: + + rollback of lowpass change before release + +2002-11-10 12:41 takehiro + + * libmp3lame/: encoder.c, psymodel.c, quantize.c + (takehiro-2002_05_07-experimental): + + prepare for intensity-stereo. + +2002-11-10 12:40 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + some trivial optimizations and make some functions static. + +2002-11-10 12:39 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + trivial macro fix + +2002-11-10 12:38 takehiro + + * libmp3lame/newmdct.c (takehiro-2002_05_07-experimental): + + optimize subband filter (lowpass/highpass). + +2002-11-10 12:36 takehiro + + * libmp3lame/i386/: choose_table.nas, fft3dn.nas + (takehiro-2002_05_07-experimental): + + align -> loopalign + better labeling + +2002-11-10 08:24 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + - more db2pow() macro use + - remove traditional code(which do nothing) + +2002-11-10 08:23 takehiro + + * libmp3lame/psymodel.h (takehiro-2002_05_07-experimental): + + fix warning + +2002-11-10 07:55 takehiro + + * frontend/main.c, frontend/parse.c, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.h, libmp3lame/vorbis_interface.c + (takehiro-2002_05_07-experimental): + + remove vorbis support, which is too much outdated. + +2002-11-10 07:53 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial optimization + +2002-11-09 18:45 takehiro + + * libmp3lame/: psymodel.c, tables.c + (takehiro-2002_05_07-experimental): + + - optimize ATH handling in mask_add() by changing ATH.cb[] scaling. + - more faster long block masking threshold calculation. + +2002-11-09 18:43 takehiro + + * libmp3lame/: encoder.c, takehiro.c + (takehiro-2002_05_07-experimental): + + cleanup START/STOP type bit calculation + +2002-11-09 18:42 takehiro + + * libmp3lame/i386/: choose_table.nas, nasm.h + (takehiro-2002_05_07-experimental): + + some sync with GOGO. + +2002-11-09 12:34 takehiro + + * libmp3lame/: encoder.c, machine.h, quantize.c, set_get.c, + tables.c (takehiro-2002_05_07-experimental): + + clean up decibel -> power conversion + +2002-11-09 12:33 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + clean up FFT related code. + more acculate condition check whether we need short block masking calculation. + FIR filter loop unrolling + +2002-11-07 18:47 bouvigne + + * libmp3lame/: lame.c, presets.c, util.c, util.h: + + change of the default lowpass values (will break testcases) + +2002-11-04 16:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + optimize long block masking ratio calculation (partition -> scalefactor band transformation) + +2002-11-04 16:49 takehiro + + * testcase.mp3, libmp3lame/psymodel.c + (takehiro-2002_05_07-experimental): + + fix short block masking calcultion(patition to scalefactor band transformation) + and trivial cleanups, as is always :) + +2002-11-04 16:00 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix mp3x FFT display. + +2002-11-04 15:56 takehiro + + * testcase.mp3, libmp3lame/encoder.c, libmp3lame/psymodel.c, + libmp3lame/reservoir.c, libmp3lame/version.h + (takehiro-2002_05_07-experimental): + + now here goes alpha 2. + - some trivial optimizaions and cleanups on psymodel. + - cleanup mp3x arround + +2002-11-04 13:53 takehiro + + * libmp3lame/: VbrTag.h, encoder.c, lame-analysis.h, machine.h, + psymodel.c, psymodel.h, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, set_get.c, tables.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + large cleanup mainly arround psymodel (continue) + - removed all temporary masking related code, because now I found all the + temporal masking code is completely messed up. + + - do not calculate short block masking ratio when it is not needed. + + - mp3x FFT energy display fix. + + - better perceptual entropy calculation, by using ATH. + + - some include file clean up. + + - some trivial code cleanup arround quantize/bit counting. + +2002-11-04 13:49 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix -q 4 setting. + +2002-11-04 13:48 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix FFT energy display. + +2002-11-03 17:56 takehiro + + * testcase.mp3 (takehiro-2002_05_07-experimental): + + regen with new psymodel, which increases encode delay. + +2002-11-03 17:30 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, encoder.c, encoder.h, + l3side.h, lame-analysis.h, lame.c, lame_global_flags.h, + newmdct.c, psymodel.c, psymodel.h, quantize.c, quantize_pvt.h, + set_get.c, tables.c, takehiro.c, util.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + large cleanup, mainly on PSYMODEL calculation. + - it calculates masking ratio/pe/tot_energy/block_type/frame_type next FRAME, + not next GRANULE. it increases the encoding delay, but code is very simple. + + - "allow different block_type in each channel (L/R)" could be archived even + when joint stereo. + + - l3side.h is merged into util.h + + - MPEG2/2.5, mp3x's display may corrupt (not tested much). + +2002-11-03 17:23 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + trivial + +2002-11-03 17:22 takehiro + + * frontend/: gpkplotting.c, gpkplotting.h, gtkanal.c + (takehiro-2002_05_07-experimental): + + fix for mp3x MDCT original value display + +2002-11-03 17:00 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + fix abr preset + +2002-11-03 16:55 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + fix for not --enable-all-float + +2002-11-02 17:47 takehiro + + * libmp3lame/: lame.c, util.h (takehiro-2002_05_07-experimental): + + trivial cleanup + +2002-11-02 17:30 takehiro + + * libmp3lame/: encoder.c, lame.c, presets.c, psymodel.c, + quantize.c, quantize_pvt.h, set_get.c, tables.c, util.h, + vbrquantize.c (takehiro-2002_05_07-experimental): + + cleanup arround preset. + - merged adaptive ATH and msfix parameter into "normal" setting. + - simplified how to compare the quantization/scalefactor. + +2002-11-02 17:26 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + remove unused prototype. + +2002-11-02 15:50 takehiro + + * libmp3lame/: encoder.c, set_get.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + remove meaningless variables in preset modes. + +2002-11-02 12:26 takehiro + + * libmp3lame/: VbrTag.c, lame.c, presets.c, quantize.c, tables.c, + util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): + + - -q option remapping. + new very old(-3.92) old(3.93) + 9 8,9 8,9 + 8 7 7 + 7 5,6 5,6 + 5,6 2,3,4 3,4 + 4 2 + --substep 5 3 + --substep 5 + 3 2 + --substep 7 3 + --substep 7 + 2 cannot emulate 2 + --substep 7 + 1 cannot emulate 1 + --substep 7 + 0 cannot emulate 0 + --substep 7 + + - fast_log2() optimization and cleanup. + +2002-11-02 12:18 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + ATH adjustment aware masking calculation in mask_add() and ms_fix(). + +2002-10-31 14:56 takehiro + + * libmp3lame/tables.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2002-10-31 14:27 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + some precision fix(maybe) + +2002-10-31 14:26 takehiro + + * doc/html/presets.html (takehiro-2002_05_07-experimental): + + sync with mainline and added some DM presets. + +2002-10-28 11:25 takehiro + + * libmp3lame/: encoder.c, psymodel.h, psymodel.c + (takehiro-2002_05_07-experimental): + + now psymodel never return error. + +2002-10-28 11:15 takehiro + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/l3side.h, libmp3lame/lame.c, libmp3lame/machine.h, + libmp3lame/newmdct.c, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h, libmp3lame/reservoir.c, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c, + libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/vbrquantize.h (takehiro-2002_05_07-experimental): + + changed FLOAT8 -> FLOAT (except one subband filter coefs, which is defined + as "double" in spec). + +2002-10-28 11:12 takehiro + + * mpglib/layer3.c (takehiro-2002_05_07-experimental): + + fix mpglib crash bug, from Mathew Hendry. + +2002-10-28 11:09 takehiro + + * frontend/portableio.h (takehiro-2002_05_07-experimental): + + remove cvs log. + +2002-10-28 10:43 takehiro + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, tables.c, util.h + (takehiro-2002_05_07-experimental): + + remove unused variables + +2002-10-28 10:01 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix long/short typo. + +2002-10-28 10:00 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + added new preset definition + +2002-10-27 14:37 aleidinger + + * configure: + + regen + +2002-10-27 14:36 aleidinger + + * configure.in: + + Forced commit: last commit was - remove -funroll-loops as suggested in the nearby comment Noticed by: takehiro + +2002-10-27 14:32 aleidinger + + * configure.in: + + remove options as suggested in the nearby comment; Noticed by: takehiro + +2002-10-27 13:38 takehiro + + * libmp3lame/: encoder.c, lame.c, lame_global_flags.h, machine.h, + newmdct.c, newmdct.h, presets.c, psymodel.c, psymodel.h, + quantize.c, set_get.c, tables.c, util.h + (takehiro-2002_05_07-experimental): + + large update. + - sync mainline, + * side channel sparsing + * new presets, dm-radio and so on. + * blocktype histgram + * fix arround FLOAT_MAX + * tuning substep noise shaping start frequency + + - large code simplification + * cod_info initialization code is moved to encoder.c + * faster psymodel calculation. + +2002-10-27 13:33 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + sync mainline + - fix arround sfb21 and smoothing method 2 + +2002-10-27 13:32 takehiro + + * libmp3lame/version.h (takehiro-2002_05_07-experimental): + + To avoid confusing, named it as lame4.0 + +2002-10-27 13:30 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, main.h, mp3rtp.c, + mp3x.c, parse.c, parse.h, timestatus.h + (takehiro-2002_05_07-experimental): + + sync mainline + - fix arround PATHNAMELEN + - new presets + - fix warnings + - fix --silent option + - new option "side channel sparsing" + +2002-10-27 13:29 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + - sync mainline (block type histgram, build fix for cygwin) + +2002-10-27 13:26 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2002-10-27 13:26 takehiro + + * configure.in, doc/html/Makefile.am, doc/html/Makefile.in, + doc/html/contributors.html, doc/html/index.html, doc/man/lame.1 + (takehiro-2002_05_07-experimental): + + sync mainline + +2002-10-27 12:19 robert + + * frontend/portableio.h (takehiro-stable-2002_10_15): + + do we need logging of cvs commits in source files? + small fixes in comments due to cvs log entries + +2002-10-27 08:17 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + bump up version number. alpha3 contains + - tuning substep noise shpaing (by me, Takehiro) + - added side channel sparsing (by Robert) + +2002-10-26 20:41 robert + + * configMS.h, frontend/amiga_mpega.c, frontend/brhist.c, + frontend/brhist.h, frontend/console.c, frontend/console.h, + frontend/get_audio.c, frontend/get_audio.h, + frontend/gpkplotting.c, frontend/gpkplotting.h, + frontend/gtkanal.c, frontend/gtkanal.h, frontend/lametime.c, + frontend/lametime.h, frontend/main.c, frontend/main.h, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, + frontend/parse.h, frontend/portableio.c, frontend/portableio.h, + frontend/rtp.c, frontend/rtp.h, frontend/timestatus.c, + frontend/timestatus.h, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/gain_analysis.c, + libmp3lame/gain_analysis.h, libmp3lame/id3tag.c, + libmp3lame/id3tag.h, libmp3lame/l3side.h, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/machine.h, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/presets.c, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/reservoir.h, + libmp3lame/set_get.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h, + libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/vorbis_interface.c, mpglib/common.c, mpglib/common.h, + mpglib/dct64_i386.c, mpglib/dct64_i386.h, mpglib/decode_i386.c, + mpglib/decode_i386.h, mpglib/huffman.h, mpglib/interface.c, + mpglib/interface.h, mpglib/l2tables.h, mpglib/layer1.c, + mpglib/layer1.h, mpglib/layer2.c, mpglib/layer2.h, + mpglib/layer3.c, mpglib/layer3.h, mpglib/mpg123.h, + mpglib/mpglib.h, mpglib/tabinit.c, mpglib/tabinit.h + (takehiro-stable-2002_10_15): + + changed C++ comments into C style comments for + configMS.h + include/*.h + frontend/*.[ch] + mpglib/*.[ch] + libmp3lame/*.[ch] + +2002-10-26 18:53 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-10-26 18:52 takehiro + + * libmp3lame/: Makefile.am, debugscalefac.c + (takehiro-2002_05_07-experimental): + + remove unused debugscalefac.c + +2002-10-26 18:51 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + fix build problem + +2002-10-26 16:48 takehiro + + * libmp3lame/presets.c (takehiro-stable-2002_10_15): + + added interchannel masking to dm-radio-fast preset, too. + +2002-10-26 16:47 takehiro + + * libmp3lame/presets.c (takehiro-stable-2002_10_15): + + lower bitrate adjustment and added inter-channel masking for dm-radio preset. + +2002-10-26 16:32 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + tuned substep-noise-shaping start frequency of short block (--substep 5). + +2002-10-26 12:31 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + fix for not C99 C compiler + +2002-10-26 12:29 takehiro + + * configure (takehiro-stable-2002_10_15): + + regen + +2002-10-26 12:29 takehiro + + * configure.in (takehiro-stable-2002_10_15): + + sync with mainline and added fix for "-funroll-loops" bug on gcc3.0.* + +2002-10-26 12:20 takehiro + + * frontend/parse.c (takehiro-stable-2002_10_15): + + sync mainline... --silent + input from stdin fix. + +2002-10-24 00:04 robert + + * libmp3lame/: vbrquantize.c (takehiro-stable-2002_10_15), + vbrquantize.c: + + bug fix in vbr-new + possible division by zero + +2002-10-23 23:43 robert + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/quantize.c, + libmp3lame/set_get.c, libmp3lame/util.h + (takehiro-stable-2002_10_15): + + added mid/side channel sparsing + --ms-sparsing n | n=0 disable / n=1 mode 1 / n=2 mode 2 + --ms-sparse_low x | default 9 dB + --ms-sparse_high x | default 3 dB + +2002-10-21 01:27 markt + + * frontend/parse.c: + + truely silent when input is stdin patch committed + +2002-10-20 15:38 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + fix possible float exception + +2002-10-20 15:36 takehiro + + * libmp3lame/version.h (takehiro-stable-2002_10_15): + + bump up the alpha2 + +2002-10-20 15:35 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + fix minor boundary check and remove unused variable. + +2002-10-20 13:42 takehiro + + * doc/: html/Makefile.am, html/Makefile.in, html/contributors.html, + html/index.html, html/presets.html, man/lame.1 + (takehiro-stable-2002_10_15): + + sync with mainline + +2002-10-20 13:31 takehiro + + * libmp3lame/quantize.c (takehiro-stable-2002_10_15): + + work arround of --substep for Tom's Diner. + +2002-10-20 13:09 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + faster mask_add() + +2002-10-20 12:31 takehiro + + * libmp3lame/: psymodel.c, quantize_pvt.c, util.h + (takehiro-stable-2002_10_15): + + more optimized usage of FAST_LOG(). + +2002-10-20 11:39 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c (takehiro-stable-2002_10_15): + + removed mixed block related switches, which is "not" as stable as releasing. + fix block type decision code when LR/MS change occurs. + +2002-10-20 08:41 takehiro + + * libmp3lame/machine.h (takehiro-stable-2002_10_15): + + float max should be arround 1e38 or so. + +2002-10-20 08:39 takehiro + + * include/lame.h, libmp3lame/set_get.c + (takehiro-stable-2002_10_15): + + re-introduce the padding related functions/definitions for backward compatibility. + +2002-10-20 08:38 takehiro + + * frontend/: get_audio.c, get_audio.h, main.c, main.h, mp3rtp.c, + mp3x.c, parse.c, parse.h, timestatus.h + (takehiro-stable-2002_10_15): + + sync mainline. + - PATHLEN related fix. + - reduce warning. + +2002-10-20 08:37 takehiro + + * frontend/brhist.c (takehiro-stable-2002_10_15): + + fix for cygwin build. + +2002-10-20 07:34 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + improve attack detection and added release detection for L/S switching. + +2002-10-20 07:27 takehiro + + * libmp3lame/psymodel.c (takehiro-stable-2002_10_15): + + fix warning. + +2002-10-20 07:21 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/presets.c + (takehiro-stable-2002_10_15): + + added some presetes for syncing DM series. + fix --preset medium to use -q3, not -q2. + +2002-10-20 07:18 takehiro + + * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): + + sync mainline. XXL is defaulted. + +2002-10-19 02:11 robert + + * frontend/brhist.c: + + little bit prettier printing of block types stats + +2002-10-19 02:10 robert + + * frontend/brhist.c (takehiro-stable-2002_10_15): + + little bit prettier printing of block type stats + +2002-10-18 23:54 robert + + * frontend/brhist.c, frontend/parse.c, include/lame.h, + libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/util.h + (takehiro-stable-2002_10_15): + + merger from main branch: + simple statistics of block types used (seeing with --brief / --verbose) + +2002-10-18 22:54 robert + + * frontend/brhist.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + added some simple statistics about block types used: + added lame_block_type_hist() and lame_bitrate_block_type_hist() to API + using new switch --brief will show one line of percentage types used + using switch --verbose will show in more detail used block types + +2002-10-17 17:05 bouvigne + + * frontend/parse.c: + + removed some unused functions + +2002-10-17 13:03 aleidinger + + * include/lame.h: + + correct comment about *_bWriteVbrTag() + +2002-10-16 21:13 robert + + * libmp3lame/vbrquantize.c: + + fixing compiler warnings (unused code removed), some clean up + +2002-10-16 18:01 bouvigne + + * frontend/get_audio.c, frontend/get_audio.h, frontend/parse.c, + frontend/parse.h, frontend/timestatus.h, include/lame.h, + libmp3lame/set_get.c, libmp3lame/takehiro.c: + + minor code cleanups in order to reduce warnings + +2002-10-15 22:45 robert + + * frontend/main.h, libmp3lame/machine.h + (takehiro-stable-2002_10_15): + + fixing Win32 issues + +2002-10-15 22:02 robert + + * libmp3lame/: encoder.c, version.h (takehiro-stable-2002_10_15): + + Takehiro I hope you don't mind, but I bump the version to 94 alpha 1 + to avoid confusions if binaries are shown up at HA + +2002-10-15 21:29 robert + + * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): + + fix for --vbr-new -Y crash + we have to calc xr34 for the whole range, for sfb21 too + +2002-10-15 19:16 robert + + * Makefile.unix, libmp3lame/psymodel.c, libmp3lame/util.h: + + reenentrant fix for loudness approx. + +2002-10-15 17:07 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + fix short block with -X 0(vbr smooth method 1), especially for --r3mix. + +2002-10-15 16:35 takehiro + + * libmp3lame/vbrquantize.c (takehiro-stable-2002_10_15): + + fix short block with -X 0(vbr smooth method 1), especially for --r3mix. + +2002-10-15 15:39 takehiro + + * frontend/main.h, libmp3lame/lame.c + (takehiro-2002_05_07-experimental): + + fix for no-GTK, and on windows (same as what I've done mainline). + +2002-10-15 15:37 takehiro + + * frontend/main.h (takehiro-stable-2002_10_15): + + ooops, I missed "n". + +2002-10-15 15:35 takehiro + + * libmp3lame/lame.c (takehiro-stable-2002_10_15): + + fix for no-GTK environment. + +2002-10-15 15:30 takehiro + + * libmp3lame/machine.h (takehiro-2002_05_07-experimental): + + fix arround FLT_MAX/FLOAT_MAX (I hope) + +2002-10-15 15:24 aleidinger + + * configure.in: + + different way of specifying the gcc version in the sparc section, the did not worked because autoconf does some nasty things with [ and ] + +2002-10-15 11:30 aleidinger + + * doc/man/lame.1: + + catch up with HTML docs + +2002-10-15 09:54 aleidinger + + * doc/html/Makefile.in: + + regen + +2002-10-15 09:54 aleidinger + + * doc/html/Makefile.am: + + add presets.html + +2002-10-15 09:53 aleidinger + + * doc/html/presets.html: + + typo fix + +2002-10-15 09:50 aleidinger + + * configure: + + regen + +2002-10-15 09:49 aleidinger + + * configure.in: + + Use sparc optimization on gcc 3.[123456]. + + Submitted by: "Spud McDuck" <dontspamonme@excite.com> + +2002-10-15 09:33 aleidinger + + * frontend/: brhist.c, main.c, main.h, mp3rtp.c, mp3x.c, parse.c: + + PATH_MAX is in POSIX.1 (does not include the trailing NUL, so add +1), not MAXPATHLEN + +2002-10-14 20:06 bouvigne + + * doc/html/: contributors.html, index.html, presets.html: + + html docs + +2002-10-14 16:28 takehiro + + * testcase.mp3 (takehiro-stable-2002_10_15): + + update testcase. + +2002-10-14 16:25 takehiro + + * libmp3lame/: psymodel.c, util.h (takehiro-stable-2002_10_15): + + reenentrant fix for loudness approx. + +2002-10-14 16:06 takehiro + + * Makefile.B32, Makefile.DJGPP, libmp3lame/libmp3lame.dsp + (takehiro-stable-2002_10_15): + + build environment related file update. + I could not test them, but I hope it works. + +2002-10-14 15:53 takehiro + + * frontend/parse.c (takehiro-2002_05_07-experimental): + + obsoleted --cwlimit option. + +2002-10-14 15:53 takehiro + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix + (takehiro-2002_05_07-experimental): + + update Makefiles sync with Makefile.am + +2002-10-13 20:35 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, encoder.c, fft.c, fft.h, + lame.c, lame_global_flags.h, libmp3lame.dsp, libmp3lame_vc6.dsp, + psymodel.c, psymodel.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, set_get.c, tables.c, tables.h, takehiro.c, + util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): + + bunch of cleanup for next generation LAME :) + - goodbye gpsycho. only nspsy is supported. + - functions related the initilization are moved to tables.c + - some functions in quantize_pvt.c are moved to quantize.c + - functions in fft.c moved to psymodel.c and fft.[ch] are removed + - fix ATH-adjust to reentrant. + +2002-10-13 17:30 takehiro + + * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c + (takehiro-2002_05_07-experimental): + + sync the head. record preset parameter in LAME tag. + +2002-10-13 15:52 takehiro + + * frontend/main.h (takehiro-2002_05_07-experimental): + + sync with the head branch. + +2002-10-13 15:48 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, set_get.c, + util.h (takehiro-2002_05_07-experimental): + + - tuned impulse like signal detection of threshold calculation. + + - block switching tuning, for impulse like signal by using maximum of filtered + signal, not by sum of its energy. + + - MP3X: print block switching factor(attack_intensity) instead of mx, + for nspsytune mode. + + - small optimization for ns_firfilter + + - prepare for faster nspsy. calculate the blocktype first, and after it, + only calculate the threshold for that blocktype. + + - clean up nspsy variables (remove unused variables). + + - calc_noise optimization for nspsy. + +2002-10-13 11:36 robert + + * Makefile.MSVC, Makefile.unix (takehiro-2002_05_07-experimental): + + removed scalar.obj from targets + +2002-10-13 08:10 takehiro + + * libmp3lame/: encoder.c, lame.c + (takehiro-2002_05_07-experimental): + + oops, I mis-check in th one older version ;( + +2002-10-13 07:58 takehiro + + * libmp3lame/: encoder.c, lame.c, quantize.c, quantize_pvt.c, + quantize_pvt.h, tables.h (takehiro-2002_05_07-experimental): + + trivial changes. + - cleanup initilization code. + - better conjunctions of functions. + +2002-10-09 17:27 takehiro + + * libmp3lame/encoder.c, libmp3lame/lame.c, frontend/parse.c, + include/lame.h, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + large cleanup arround padding + - padding mode is always set by suitable one. + - gfp->padding_type and the functions to set/get it are removed. + + unused function optimum_samplefreq() is removed. + +2002-10-09 17:24 takehiro + + * libmp3lame/i386/: Makefile.am, Makefile.in, scalar.nas + (takehiro-2002_05_07-experimental): + + remove scalar.nas + +2002-10-09 17:22 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2002-10-09 17:22 takehiro + + * configure.in (takehiro-2002_05_07-experimental): + + fix extopt for gcc 3.1/3.2 + +2002-10-08 19:30 bouvigne + + * libmp3lame/: VbrTag.c, lame.c, lame_global_flags.h, set_get.c: + + preset info stored into Info tag + +2002-10-08 17:43 bouvigne + + * frontend/main.h: + + win32 build fix + +2002-10-08 13:59 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-10-08 13:59 takehiro + + * libmp3lame/: Makefile.am, tools.c, tools.h, util.c + (takehiro-2002_05_07-experimental): + + removed unused tools.[hc] + +2002-10-08 13:38 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen once more :( + +2002-10-08 13:35 takehiro + + * configure (takehiro-2002_05_07-experimental): + + regen + +2002-10-08 13:34 takehiro + + * ltconfig, acinclude.m4, configure.in + (takehiro-2002_05_07-experimental): + + sync the head branch. + fix gcc options for gcc3.1 after and 3.0.x + +2002-10-08 13:30 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-10-08 13:19 takehiro + + * frontend/: main.c, main.h, mp3rtp.c, mp3x.c, parse.c + (takehiro-2002_05_07-experimental): + + sync the head branch. + - MAXPATHLEN related fix. + - sizeof(short) related fix. + +2002-10-08 13:18 takehiro + + * libmp3lame/lameerror.h, include/lame.h, libmp3lame/Makefile.am + (takehiro-2002_05_07-experimental): + + moved error code definitions into lame.h + +2002-10-08 12:58 takehiro + + * frontend/main.c: + + sync my branch: fix warning of ReportLameTagProgress() definition + +2002-10-08 12:51 takehiro + + * libmp3lame/VbrTag.c (takehiro-2002_05_07-experimental): + + remove unneeded include + +2002-10-08 12:50 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix NO_PAD + +2002-10-08 09:09 aleidinger + + * configure: + + regen + +2002-10-08 08:59 aleidinger + + * ChangeLog: + + update with uptodate data + +2002-10-08 08:57 aleidinger + + * ChangeLog.header: + + add info how to show the branches in the ChangeLog + +2002-10-08 08:53 aleidinger + + * libmp3lame/version.h: + + bump alpha version + +2002-10-08 08:51 aleidinger + + * configure.in: + + replace the -pipe hack for mips-sgi-irix with a test for GNU ld + (sorry, I forgot who submitted it) + +2002-10-08 08:50 aleidinger + + * acinclude.m4: + + actually commit the generated file with the alignment fix for 64 bit architectures + +2002-10-08 08:50 aleidinger + + * ltconfig: + + improved "deplibs_check_method" for freebsd-elf + +2002-10-08 08:44 aleidinger + + * frontend/: main.c, main.h, mp3rtp.c, mp3x.c, parse.c: + + - spell MAX_NAME_LEN the POSIX way (MAXPATHLEN) and make sure we have + a fallback if it doesn't get defined (please test this on Windows) + - fix for sizeof(short int) != sizeof(int) in mp3rtp.c + + Patches based upon bugreport from Greg Lehey <grog@freebsd.org> and fixes + in the FreeBSD ports collection from Mikhail Teterin <mi@freebsd.org>. + +2002-10-07 16:47 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c + (takehiro-2002_05_07-experimental): + + fix warnings + +2002-10-07 16:46 takehiro + + * frontend/main.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-10-07 14:24 takehiro + + * libmp3lame/: lame.c, psymodel.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + more nspsytune optimization. + + - use FAST_LOG10 instead of log. this may change the result little bit, + but I think that is rare case and no problem about the quality. + + - presetTune.athadjust_msfix is moved to nsPsy.athadjust_msfix + + - nsPsy.safejoint is removed. + +2002-10-07 13:41 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + more cleanup of perceptual entropy calculation. + - it calculates only one of the long/short block pe, + after the block type is detemined. + +2002-10-07 13:38 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-10-07 12:49 takehiro + + * libmp3lame/: psymodel.c, quantize_pvt.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + trivial code optimizations, no result changes. + - gfp->ATHlower is now stored the number multiplied by -0.1. + + - nspsytune optimization + * precalculate the 1.0/numlines_l[] + * cleanup perceptual entropy storing method and loop hoisting. + * unrolling tonality calculation loop. + +2002-10-07 09:13 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + oops, fix build when BRHIST is enabled. + +2002-10-07 09:11 takehiro + + * frontend/brhist.c, libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/util.h (takehiro-2002_05_07-experimental): + + clean up bitrate histgram. + And do not compile the brhist-related code when "./configure --without-brhist" + +2002-10-07 09:09 takehiro + + * frontend/get_audio.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-10-07 08:57 takehiro + + * libmp3lame/: encoder.c, fft.c, presets.c, psymodel.c, set_get.c, + util.c, util.h, vbrquantize.c (takehiro-2002_05_07-experimental): + + small code cleanups. all of them does not change the result. + - better conjunctions. + * updateStats() is moved from util.c to encoder.c + * select_kth_int() is moved from util.c to vbrquantize.c + - fft window function table is moved from gfc to static variable in fft.c. + once apon a time, the window function is differed from nspsy/gpsy, so the + table should be stored separetedly for each encoding entity. but now, it + is unified and we can unify the table function. + - presetTune.attackthre and presetTune.attackthre_s are moved to nsPsy. + +2002-10-06 18:14 takehiro + + * libmp3lame/: psymodel.c, quantize.c, util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + preset clean up. + - use the current block_type itself to determine the quantization result + comparing method. + - remove presetTune.quantcomp_current. + - changed presetTune.attackthresh and presetTune.attackthresh_s type (int -> FLOAT). + + I think the 1st one is BUG of preset, affected all preset modes. + It determines how to compare the quantized spectrums by the blocktype of 1st + granule of the next frames, last channel (R or S), for all the channel and + all the granule. + +2002-10-06 18:06 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + due to the nspsy long/short switching mode fix, attack threshold should be + tuned again.I used awe32, fatboy, DEATH2, and other "normal" samples to + determine the threshold. + + now awe32 is not killer sample of --preset standard, I think. + # but the bitrate is increased, of course. + + and it seems vangelis1.wav needs some more tuning, but I am so sleeeeeeepy. + +2002-10-06 16:46 takehiro + + * libmp3lame/: encoder.c, psymodel.c + (takehiro-2002_05_07-experimental): + + - make adjust_ATH() static and cleanup + (include Gabriel's clean up in the head branch) + - padding code clean up + - block type code cleanup + - ATH related initialization code is moved to psymodel.c + +2002-10-06 16:43 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + sync with the head branch (Gabriel's code cleanup... remove "historical" code) + +2002-10-06 16:40 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + sync with head.(code cleanup by Gabriel) + +2002-09-30 16:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + moved substep shaping position. bit slower but better quality for higher bitrate (especially for the case 320kbps is not enough). + +2002-09-30 16:57 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + fix substep 2, 3, 6, and 7. (working area allocation) + +2002-09-30 16:49 bouvigne + + * libmp3lame/: encoder.c, quantize.c, util.c: + + some code cleanups + +2002-09-30 16:28 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix mdct filter coefs, for -k option(thanx reporting, Robert). + +2002-09-29 15:38 takehiro + + * frontend/brhist.c (takehiro-2002_05_07-experimental): + + fix cygwin build + +2002-09-29 06:02 takehiro + + * libmp3lame/reservoir.c (takehiro-2002_05_07-experimental): + + sync with the head branch. + - bit reservoir handling of freeformat. + +2002-09-28 16:12 takehiro + + * libmp3lame/: util.h, vbrquantize.c + (takehiro-2002_05_07-experimental): + + small optimizations for --vbr-new + - gfc->VBR->scratch is moved to the local variable. + - remove quality mapping(directly switch statement) + - code clean up. + +2002-09-28 13:27 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + - sync --vbr-new with the head branch. + - better substep shaping for --vbr-new. + - the meaning of best huffman coding with --vbr-new is bit different from + that of head tree. + +2002-09-28 10:36 takehiro + + * frontend/get_audio.c, frontend/parse.c, include/lame.h + (takehiro-2002_05_07-experimental): + + fix warnings. + +2002-09-28 10:36 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + make select_kth() static function. + +2002-09-28 10:26 takehiro + + * Makefile.DJGPP, Makefile.MSVC, Makefile.am, Makefile.in, + README.DJGPP, configure, configure.in, testcase.mp3, + ACM/ACMStream.cpp, ACM/Makefile.in, ACM/ADbg/Makefile.in, + ACM/tinyxml/Makefile.in, Dll/BladeMP3EncDLL.c, + Dll/BladeMP3EncDLL.def, Dll/BladeMP3EncDLL.h, Dll/Example.cpp, + Dll/Example_vc6.dsp, Dll/Example_vc6.dsw, + Dll/LameDLLInterface.htm, Dll/LameDll_vc6.dsp, Dll/Makefile.in, + debian/Makefile.in, debian/changelog, debian/rules, + doc/Makefile.in, doc/html/Makefile.in, + doc/html/contributors.html, doc/html/history.html, + doc/html/index.html, doc/html/switchs.html, doc/man/Makefile.in, + doc/man/lame.1, dshow/Encoder.cpp, dshow/Makefile.in, + frontend/get_audio.c, frontend/parse.c, include/Makefile.in, + include/lame.h, libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/encoder.c, libmp3lame/lame.c, libmp3lame/presets.c, + libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/i386/Makefile.in, misc/Makefile.in, mpglib/Makefile.in + (takehiro-2002_05_07-experimental): + + large sync with the head branch. almost all the code is now synced with the head. + +2002-09-28 09:30 takehiro + + * libmp3lame/VbrTag.c: + + remove some #include (these header files are included from VbrTag.h.) + +2002-09-28 09:23 takehiro + + * libmp3lame/: encoder.c, lame.c, psymodel.c + (takehiro-2002_05_07-experimental): + + fix all known problems on my tree (I hope). + - fix mishandling of long/short block type when storing pe[]. + - fix psymodel initialization (array index initialization), which fixes + floating exception in psymodel.c. + - one more preecho prevention code fix. + - sync with my psymodel patch in the head branch + + and small improvement. + - implement better block type restriction + (when MS, both channels should be same block type, but when LR, it is not needed). + - faster FIR filter for pe[] adjustment in encoder.c. + +2002-09-28 09:16 takehiro + + * libmp3lame/bitstream.c (takehiro-2002_05_07-experimental): + + zeroed all ancillary area, when the debug mode. + +2002-09-23 07:00 bouvigne + + * include/lame.h: + + presets (sorry, this part was missing) + +2002-09-22 16:53 bouvigne + + * frontend/parse.c, libmp3lame/presets.c: + + presets + +2002-09-21 00:31 markt + + * libmp3lame/quantize_pvt.c: + + fixed bug which was causing the calc_noise assert failure. + +2002-09-19 20:39 robert + + * libmp3lame/: encoder.c, lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + merger from mainline: + undo of broken VBR min fill patch + padding code clean up + +2002-09-16 16:28 takehiro + + * configure, configure.in: + + we don't want to run the X :) + +2002-09-16 07:43 takehiro + + * frontend/: brhist.c, console.c + (takehiro-2002_05_07-experimental): + + sync with head branch. + - Mark's compilation fix. + - Alex's warning fix on 64bit environment. + +2002-09-16 07:25 takehiro + + * aclocal.m4 (takehiro-2002_05_07-experimental): + + sync with the head branch. + - prevent unaligned access on some 64 bit arches, by Alexander (and Ti.) + +2002-09-15 17:47 bouvigne + + * libmp3lame/: reservoir.c, set_get.c: + + Relax of freeformat reservoir after discussion with Robert + +2002-09-13 20:04 markt + + * frontend/brhist.c: + + This code: + + #if defined(HAVE_TERMCAP_H) + # include <termcap.h> + #elif defined(HAVE_NCURSES_TERMCAP_H) + # include <ncurses/termcap.h> + #endif + + changed to: + + #if defined(HAVE_NCURSES_TERMCAP_H) + # include <ncurses/termcap.h> + #elif defined(HAVE_TERMCAP_H) + # include <termcap.h> + #endif + + because on my system, both TERMCAP and NCURSES_TERMCAP were + defined by configure, but term.h and termcap.h have conflicts, + whileterm.h and ncurses/termcap.h works fine. + +2002-09-09 21:43 robert + + * frontend/parse.c, libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/psymodel.c: + + lame.c, encoder.c: fix padding oddities + psymodel.c: fix nspsy code for all/no short blocks + parse.c: -d now obsolete + +2002-09-08 06:36 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one more sync with head branch (ms energy ratio). + +2002-09-07 12:39 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + sync with the head branch psymodel fix. + +2002-09-06 11:11 aleidinger + + * configure: + + regen + +2002-09-06 10:53 aleidinger + + * configure.in: + + - no opts if non empty cflags and no expopt + - accumulate-outgoing-args is x86 only + Noticed by: Atro Tossavainen <atossava@cc.helsinki.fi> + - IRIX-gcc doesn't like '-pipe' + Noticed by: Atro Tossavainen <atossava@cc.helsinki.fi> + +2002-09-06 09:24 aleidinger + + * frontend/: brhist.c, console.c: + + try to include the right headers for the tgetstr prototype; + should fix problems on 64bit arches + Noticed by: Atro Tossavainen <atossava@cc.helsinki.fi> + Ti Kan <ti@amb.org> + Tested by: Ti Kan <ti@amb.org> + +2002-09-06 09:22 aleidinger + + * aclocal.m4: + + prevent unaligned access on some 64 bit arches + Noticed by: Ti Kan <ti@amb.org> + Tested by: Ti Kan <ti@amb.org> + +2002-09-05 16:53 bouvigne + + * libmp3lame/: reservoir.c, set_get.c: + + free format fix + +2002-09-03 11:34 aleidinger + + * frontend/parse.c: + + 1 argument too much for fprintf + +2002-09-03 11:18 aleidinger + + * doc/man/lame.1: + + add --noasm + +2002-09-02 12:02 takehiro + + * doc/html/history.html: + + added my psymodel change, and so on. + +2002-09-02 11:56 takehiro + + * testcase.mp3: + + regen with the latest LAME after psymodel was fixed. + This is produced by the LAME with ./configure --enable-nasm --enable-debug --enable-mp3x, compiled gcc 3.1.1, on linux2.4.19, glibc2.2.2, Duron 1GHz(3DNow! is enabled). + +2002-09-02 11:51 takehiro + + * libmp3lame/lame.c: + + fix for Tru64 UNIX build, reported by Ti Kan. + +2002-09-01 16:08 bouvigne + + * doc/html/contributors.html, doc/html/history.html, + doc/html/index.html, doc/html/switchs.html, frontend/parse.c: + + docs + +2002-09-01 16:03 takehiro + + * libmp3lame/psymodel.c: + + fix small psymodel bugs since long time ago(some of them are since 3.70 era...) + - highpass filter of MS energy calculation to neglect the DC. + - always do the Robert's short block pre-echo prevention and + fix its initialization (the fix is only for nspsy). + - fix energy and threshold of DC and the highest freq. element are halven. + - fix nspsytune FIR filter length + +2002-08-30 20:52 robert + + * Makefile.MSVC: + + MSVC: fix "-GX" typo + ICL: allow special compiles for PII and PIII + +2002-08-27 22:43 rbrito + + * debian/: changelog, rules: + + Update Debian packaging. More changes to come. + +2002-08-26 20:38 robert + + * libmp3lame/: lame.c, quantize.c, util.h: + + undo of VBR bitres min fill patch + +2002-08-25 20:17 bouvigne + + * frontend/parse.c: + + merge of alt presets + +2002-08-25 15:09 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + do substep noise shaping in ABR mode, including bitrate compensation. + +2002-08-25 15:08 takehiro + + * libmp3lame/util.c (takehiro-2002_05_07-experimental): + + trivial coding optimization of fast_log2 + +2002-08-25 15:08 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + revert some FAST_LOG usage. It sometime happens SIGFPE(overflow). + +2002-08-25 10:54 takehiro + + * libmp3lame/: quantize.c, reservoir.c + (takehiro-2002_05_07-experimental): + + Tuning the bit reservoir filling rate when substep noise shaping method 1, + and do not substep noise shaping if the bit reservoir is almost full. + +2002-08-24 19:20 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + minor fix for global_gain limitation. + +2002-08-24 17:28 takehiro + + * libmp3lame/: VbrTag.c, lame.c (takehiro-2002_05_07-experimental): + + sync main tree. + - portability fix for sunos 4.x by Alexander Leidinger. + +2002-08-24 17:25 takehiro + + * libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + quick fix of warning. + +2002-08-24 17:23 takehiro + + * libmp3lame/: quantize.c, set_get.c + (takehiro-2002_05_07-experimental): + + do not do the substep noise shaping when the block type is SHORT, + because it seems short block threshold calculation is very buggy + (both of ns/gpsycho). + + new option: --substep 4,5,6,7 + force substep shaping even on the SHORT block. + +2002-08-24 17:12 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + use FAST_LOG() more. + minimize the ns_hpfsmpl[] array. + better ns_hpfsmpl[] calculation. + +2002-08-24 17:10 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + use of FAST_LOG() more for faster encoding + +2002-08-24 17:09 takehiro + + * libmp3lame/presets.c (takehiro-2002_05_07-experimental): + + I forgot to change the default quality setting of abr mode, + when I remap the quality <-> actual setting. + +2002-08-24 16:08 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + revert some GTK change to fix the mp3x spectrum display of short block. + +2002-08-20 16:59 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + fix mp3x spectrum display + +2002-08-20 16:51 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + fix mp3x pe[] display. + +2002-08-20 16:28 takehiro + + * libmp3lame/encoder.c: + + fix mp3x spectrum display + +2002-08-20 16:09 takehiro + + * libmp3lame/lame.c (takehiro-2002_05_07-experimental): + + fix SIGFPE (divided by 0) of filter init. + +2002-08-20 13:03 takehiro + + * libmp3lame/: lame.c, newmdct.c, util.h + (takehiro-2002_05_07-experimental): + + cleanup polyphase filtering. + - highpass/lowpass coefs. are integrated into one array. + - reordered gfc members to get better cache performance. + - remove gfc->is_mpeg1 + +2002-08-20 12:59 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + remove gfc->is_mpeg1 + +2002-08-20 12:58 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + cleanup arround cw_lower_index + +2002-08-20 12:58 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove some debug code. + remove gfc->is_mpeg1 + +2002-08-20 12:45 takehiro + + * libmp3lame/: bitstream.c, tables.c, tables.h + (takehiro-2002_05_07-experimental): + + moved scfsi_band[] into tables.c + +2002-08-19 15:09 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + better preflag use by using "all zero" band. + this breaks testcase little bit(make test). + +2002-08-19 04:57 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + psymodel.c cleanup (2) + - remove some constants (bu_?, npart_?_orig, SNR_s, w1_?, w2_?) from gfc. + - do always short block preecho prevention. this makes some breaks for + testcase(make test). + - do always normalize the s3_ss by SNR_s[] for faster calculation for gpsycho. + - optimize tonality computation for gpsycho. + - FFT/energy computation code of [g|ns]psy are integrated. + - GTK code cleanup + - make a new constants bm_?, band middle position table in gfc. + - cleranup table initialization code. + +2002-08-19 04:47 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + trivial cleanup arround joint stereo/GTK code + +2002-08-17 16:41 takehiro + + * libmp3lame/: psymodel.c, util.h + (takehiro-2002_05_07-experimental): + + more psymodel cleanup. + - GTK compilation fix + - fix mistake of wsamp_l and wsamp_L + - little block_type_set() cleanup + - gfc->energy[] and energy_s[] are removed. + +2002-08-17 16:37 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + trivial + +2002-08-17 07:09 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + divide psymodel.c into manageable pieces (1) + and some optimization/simplification. + +2002-08-14 04:02 takehiro + + * libmp3lame/encoder.c (takehiro-2002_05_07-experimental): + + small fixes. + - variable type change of PE calculation. + - make it allow the mixed block limitation of MP3 + - cleanup the block type code. + +2002-08-14 03:59 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + ci to avoid losing works. + - short block detection cleanup and bug fix, for nspsytune (1st attempt) + - preliminal mixed block detection code. + +2002-08-14 03:57 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + optimize calc_xmin() and changed ATH normalization for it. + +2002-08-08 09:03 aleidinger + + * Makefile.in: + + regen + +2002-08-08 09:00 aleidinger + + * Makefile.am: + + Add lame.spec to the distribution tarball, as suggested in bug #580586 + +2002-08-08 08:48 aleidinger + + * README.DJGPP, Makefile.DJGPP: + + Fix from Peder Hedlund, see bug #590981. + +2002-08-05 18:04 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed crashing problem when the INFO TAG was written while it should not + +2002-08-02 20:53 afaber + + * Dll/BladeMP3EncDLL.c: + + Some code clarifications (remarks from Martin Ruckert) + +2002-08-02 20:52 afaber + + * Dll/LameDLLInterface.htm: + + Small textual changes (remarks from Martin Ruckert) + +2002-07-30 20:24 aleidinger + + * frontend/get_audio.c, libmp3lame/VbrTag.c, libmp3lame/lame.c: + + Portability fixes for SunOS 4.x. + +2002-07-30 08:28 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + merge short/long block code (preparing mixed block support) + +2002-07-28 09:56 takehiro + + * Makefile.am, Makefile.in, aclocal.m4, config.h.in, configure, + configure.in, libmp3lame/VbrTag.h + (takehiro-2002_05_07-experimental): + + more sync. arround configure stuff. + +2002-07-28 09:52 takehiro + + * mac/.cvsignore (takehiro-2002_05_07-experimental): + + ignore Makefile et al. + +2002-07-28 09:24 takehiro + + * frontend/get_audio.c, include/lame.h, + libmp3lame/mpglib_interface.c (takehiro-2002_05_07-experimental): + + syncing. + - fix mpeg decoding memory leak. + - lame.h comment fix. + +2002-07-28 09:18 takehiro + + * include/lame.h: + + fix unclosed comment + fix typo + +2002-07-28 09:08 takehiro + + * libmp3lame/: presets.c, set_get.c + (takehiro-2002_05_07-experimental): + + more sync with main tree about preset API. + +2002-07-28 09:07 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + fix warning + +2002-07-28 09:06 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + simplify the code. + disabled substep method 2 and 3 for vbr-new (forced to change method 1) + +2002-07-28 06:59 rbrito + + * debian/changelog: + + Updating debian/changelog's reported version. + +2002-07-27 10:35 afaber + + * Dll/: Example.cpp, Example_vc6.dsp, Example_vc6.dsw: + + Added example VC6 project files, updated Example.cpp file + +2002-07-27 07:41 takehiro + + * API, DEFINES, INSTALL, Makefile.am, Makefile.unix, lame.spec.in, + ltmain.sh (takehiro-2002_05_07-experimental): + + sync with main tree. no effects the quality. + +2002-07-27 07:39 takehiro + + * frontend/: Makefile.in, timestatus.c + (takehiro-2002_05_07-experimental): + + sync with main tree. time status rollback and newly regened Makefile.in + +2002-07-27 07:03 takehiro + + * include/lame.h (takehiro-2002_05_07-experimental): + + sync with main tree. changed comment style, // to /* */ + +2002-07-27 06:59 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + fix cygwin/vc compilation problem. + some speed improvement for --substep. + +2002-07-27 06:54 takehiro + + * libmp3lame/presets.c (takehiro-2002_05_07-experimental): + + sync with main tree. + +2002-07-26 22:27 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: + + changes to support encoding of multiple streams + +2002-07-26 18:56 markt + + * frontend/get_audio.c, include/lame.h, + libmp3lame/mpglib_interface.c: + + memory leak in multiple decodes fixed. + +2002-07-26 08:18 takehiro + + * mac/: LAME Carbon Debug.pch, LAME Carbon Final.pch, LAME Classic + Debug.pch, LAME Classic Final.pch, LAME_Carbon_Debug.pch, + LAME_Carbon_Final.pch, LAME_Classic_Debug.pch, + LAME_Classic_Final.pch, Makefile.am + (takehiro-2002_05_07-experimental): + + sync with main tree. (changed file name) + +2002-07-21 22:11 takehiro + + * libmp3lame/: Makefile.am, quantize.c + (takehiro-2002_05_07-experimental): + + fix and cleanup of "pseudo substep" method 1 and 3. + revert Robert's change of VBR bitresevoir handling code. + +2002-07-21 15:15 aleidinger + + * include/lame.h: + + ANSIfy comments. Requested by Ti Kan <ti@amb.org> for xmcd + +2002-07-21 12:17 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, set_get.c, takehiro.c + (takehiro-2002_05_07-experimental): + + implement pseudo substep noise shaping method 1 and 3. + - it reduces about 3% of bitrate without losing any quality (theoretically), + for vbr mode. + - fix "off by one" bug of IPOW[] + - fix comment and substep method range check in set_get.c + + WARNING:there's some bug in the combination of --vbr-new and --substep. + +2002-07-21 12:11 takehiro + + * libmp3lame/: lame.c, util.c (takehiro-2002_05_07-experimental): + + sync with main tree: scaling bug fix. + +2002-07-21 12:10 takehiro + + * mac/: Makefile.am, Makefile.in + (takehiro-2002_05_07-experimental): + + sync with main tree: added Makefile.* + +2002-07-21 12:09 takehiro + + * libmp3lame/util.h (takehiro-2002_05_07-experimental): + + sync with main tree: use FASTLOG as defaulted. + +2002-07-19 17:20 afaber + + * Dll/LameDll_vc6.dsp: + + added ,HAVE_NASM,MMX_choose_table defines to project file, + since beGetBersion did not report that the DLL was compiled with + MMX enabled + +2002-07-15 21:22 markt + + * libmp3lame/: util.c, util.h: + + enabled domd's fast_log code + +2002-07-15 00:52 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + one more fix for pe[] calculation of nspsytune. + +2002-07-14 10:41 takehiro + + * frontend/gtkanal.c (takehiro-2002_05_07-experimental): + + fix mp3x "bit assumption(of frame)" display imcompatibility of main tree. + +2002-07-14 10:36 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix mp3x "bit assumption" display imcompatibility of main tree. + +2002-07-14 10:19 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + fix enbug of pe[] calculation for nspsytune. + prepare for nspsytune cleanup. + +2002-07-13 08:10 aleidinger + + * configure, libmp3lame/Makefile.in: + + regen + +2002-07-13 08:09 aleidinger + + * configure.in: + + Some fixes in the compiler options, removed superfluous BeOS section. + +2002-07-13 08:08 aleidinger + + * libmp3lame/Makefile.am: + + Fixes for BeOS (and perhaps other arches) to allow the build of a + shared lib. + + Submitted by: Andrew Bachmann <shatty@myrealbox.com> + +2002-07-05 15:17 afaber + + * Dll/LameDLLInterface.htm: + + fixe a couple of typos' + +2002-07-03 22:28 afaber + + * Dll/BladeMP3EncDLL.c: + + fixed minor problems with the ALT-PRESET CBR/ABR modes + +2002-07-03 21:14 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + avoid crash in beWriteVbrTag when gfp is not allocated, fixed return value of beWriteVbrTag in *.h file + +2002-06-29 12:29 aleidinger + + * libmp3lame/: lame.c, util.c: + + Patch from Simon Blandford <ome@simonb.org.uk>: + ---snip--- + The problem: + When in MONO mode, LAME merges the two channels before the left/right + scaling. The left scale acts on the remaining signal and the right scale + is ignored. + + The solution: + The scaling operation is simply moved before the channel merge + operation. Also, all these operations are moved before the re-sample + operation otherwise the signal would have be re-sampled on two channels + even in MONO mode which would be a waste of CPU time. + ---snip--- + +2002-06-23 16:07 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix mp3x display of threshold level (blue/green bar in FFT window). + use FAST_LOG10 in klemm's penalties() function. + trivial fix of max_noise initialization (do not effect anything but for the consistency of comment). + +2002-06-23 16:04 takehiro + + * libmp3lame/Makefile.in (takehiro-2002_05_07-experimental): + + regen + +2002-06-23 14:40 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix max_noise initilization + and trivial coding style change + +2002-06-23 12:56 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + fix mp3x display of max_noise, tot_noise, over_noise + +2002-06-23 12:56 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + trivial + +2002-06-23 08:30 takehiro + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, util.c, util.h + (takehiro-2002_05_07-experimental): + + more faster pe[] calculation on nspsy. + + sync with main tree: + - domd's faster LOG and psymodel_ns optimization + +2002-06-23 06:19 takehiro + + * include/lame.h, libmp3lame/set_get.c + (takehiro-2002_05_07-experimental): + + sync with main tree. + - fixed return type of lame_get_interChRation() + +2002-06-23 05:53 takehiro + + * libmp3lame/: Makefile.am, Makefile.in, libmp3lame_vc6.dsp, pcm.c, + pcm.h (takehiro-2002_05_07-experimental): + + sync with main tree. + - remove pcm.[ch] + +2002-06-17 17:19 domd + + * DEFINES: + + added USE_FAST_LOG define + +2002-06-16 20:16 domd + + * libmp3lame/psymodel.c: + + optimizations on mask_add and L3psycho_anal_ns + +2002-06-16 20:14 domd + + * libmp3lame/quantize_pvt.c: + + optimization : use of FAST_LOG10 macro in calc_noise + +2002-06-16 20:13 domd + + * libmp3lame/: lame.c, util.c, util.h: + + added the FAST_LOG10 and FAST_LOG macros + +2002-06-15 17:56 markt + + * Dll/BladeMP3EncDLL.c: + + added missing ")" + +2002-06-12 18:41 markt + + * dshow/Encoder.cpp: + + directshow, like ACM, cannot support INFO tag. + INFO tag disabled in dshow code. + +2002-06-12 18:36 markt + + * ACM/ACMStream.cpp: + + added note about INFO tag not possible when using ACM codec, + since ACM has no mechanism to rewind output stream when + encoding is finished. + +2002-06-12 18:27 markt + + * API, Dll/BladeMP3EncDLL.c, Dll/Example.cpp, + Dll/LameDLLInterface.htm: + + updated documentation (API and DLL) + to clarify that INFO tag must be written + unless explicitly disabled. + +2002-06-11 09:21 aleidinger + + * configure: + + gtk-config fix (oops... sorry) + +2002-06-09 16:01 takehiro + + * include/lame.h, libmp3lame/set_get.c: + + fix return type of lame_get_interChRatio() + +2002-06-04 19:16 bouvigne + + * libmp3lame/psymodel.c: + + merged little part of Dom's speed optimization + +2002-06-04 15:04 aleidinger + + * configure: + + regen + +2002-06-04 15:03 aleidinger + + * configure.in: + + -maccumulate-outgoing-args is x86 only + + Reported by: "Spud McDuck" <dontspamonme@excite.com> + +2002-06-02 19:09 aleidinger + + * configure: + + regen + +2002-06-02 19:08 aleidinger + + * config.h.in, configure.in: + + damn autoconf, hopefully this version works as intended + +2002-06-02 17:02 aleidinger + + * configure: + + regen + +2002-06-02 17:00 aleidinger + + * configure.in: + + use "else if ... fi" instead of "elif ..." + +2002-06-02 17:00 aleidinger + + * libmp3lame/Makefile.in: + + regen (removal of pcm.[ch]) + +2002-06-02 14:50 robert + + * libmp3lame/: Makefile.in, libmp3lame_vc6.dsp: + + moved unused code pcm.[ch] into the Attic + interested parties will find it there + +2002-06-02 14:45 robert + + * libmp3lame/: Makefile.am, pcm.c, pcm.h: + + moved unused code pcm.[ch] into the Attic + interested parties will find it there + +2002-06-02 14:20 aleidinger + + * configure: + + regen + perl -pi -e 's:--no-verify::' configure + + Does anyone know how to do this with autoconf directly? + +2002-06-02 14:17 aleidinger + + * aclocal.m4: + + undo last commit, wrong file and wrong commit message + +2002-06-02 14:16 aleidinger + + * acconfig.h: + + not needed anymore + +2002-06-02 14:15 aleidinger + + * Makefile.in: + + regen after removal of aclocal.m4 + +2002-06-02 14:13 aleidinger + + * config.h.in: + + regen + +2002-06-02 14:13 aleidinger + + * configure.in: + + - redo {,u}int{8,16,32,64}_t stuff with new autoconf 2.53 macros + - fix code which sets experimental options + Thanks to: Akos Maroy <darkeye@tyrell.hu> + - fix GCC_version for 3.1 + Thanks to: Akos Maroy <darkeye@tyrell.hu> + - further autoconf 2.53 updates + - minor fixes + +2002-06-02 14:10 aleidinger + + * aclocal.m4: + + is not needed anymore + +2002-06-02 12:21 aleidinger + + * aclocal.m4: + + update to autoconf 2.53 + +2002-06-02 12:17 aleidinger + + * libmp3lame/: VbrTag.c, VbrTag.h, pcm.c, pcm.h, util.h: + + add some includes + +2002-05-28 08:28 aleidinger + + * configure: + + regen + +2002-05-28 08:24 aleidinger + + * ACM/Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, dshow/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in, ACM/ADbg/Makefile.in, + ACM/tinyxml/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, libmp3lame/i386/Makefile.in: + + regen + +2002-05-28 08:07 aleidinger + + * configure.in: + + - update to autoconf 2.53 + - add ultrasparc detection and compiler switches in case of gcc 3.1 + +2002-05-28 08:04 aleidinger + + * Makefile.in: + + regen + +2002-05-28 08:04 aleidinger + + * Makefile.am: + + add mac subdir + +2002-05-28 08:03 aleidinger + + * mac/Makefile.in: + + generated Makefile.in + +2002-05-28 07:52 aleidinger + + * mac/Makefile.am: + + add automake clue + +2002-05-28 07:48 aleidinger + + * mac/: LAME Carbon Debug.pch, LAME Carbon Final.pch, LAME Classic + Debug.pch, LAME Classic Final.pch, LAME_Carbon_Debug.pch, + LAME_Carbon_Final.pch, LAME_Classic_Debug.pch, + LAME_Classic_Final.pch: + + rename files because of automake (space to underscore conversation) + +2002-05-26 15:52 takehiro + + * libmp3lame/: lame.c, quantize.c, takehiro.c, util.h + (takehiro-2002_05_07-experimental): + + sync with main tree, except arround vbrquantize.c. + - it calls best_huffman_divide() twice. + - *_block_sf() are out of sync. + +2002-05-25 23:30 markt + + * libmp3lame/lame.c: + + fixed a mono encoding bug found by Justin Schoeman + + For single channel input, the 2nd channel was still required + to exit and have as much data as the 1st channel becaus of + memcpy's (even though this data was never used) + +2002-05-24 17:28 markt + + * Dll/BladeMP3EncDLL.c, libmp3lame/lame.c: + + removed all references to "sample_t" from the DLL. + + someone put in a call to lame_encode_buffer_sample_t + (not a public interface to libmp3lame) + when they should have used lame_encode_buffer_float(), + since they were assuming 'sample_t' was a float. + +2002-05-20 22:21 robert + + * libmp3lame/: lame.c, quantize.c, util.h: + + VBR bitreservoir minimum filling depending on back pointer from largest frame allowed + +2002-05-20 18:22 robert + + * Makefile.unix, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/vbrquantize.c: + + Makefile.unix: + -malign-double enabled, helps memcpy + + lame.c: + new experimental -X{5,9} settings for --vbr-new + + quantize.c: + build up bit reservoir for VBR, allows to limit max frame size with -Bxxx + without a too large quality impact + + vbrquantize.c: + fixing sfb21 issues: -Y did not show the wanted effect + xxx_block_xr34: replaced copy loop by memcpy, not faster but makes things + more obvious + some very minor speed ups + +2002-05-19 22:11 markt + + * frontend/timestatus.c: + + initialize ellapsed time counter to 0. + +2002-05-19 22:03 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + avoid calling best_huffman_divide twice for vbr-new + +2002-05-19 16:43 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/presets.c, + libmp3lame/set_get.c (takehiro-2002_05_07-experimental): + + experimental mixed block support. + "--mixedblock" option to use it. + + currently, it uses mixed blocks on all short/start/end blocks. + + this is very bad idea. we need a proper psymodel. + till we make it, this option is used only for the testing purpose. + +2002-05-19 16:38 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + trivial optimization arround nspsytune + +2002-05-19 15:13 takehiro + + * libmp3lame/psymodel.c (takehiro-2002_05_07-experimental): + + merged little part of Dom's speed optimization. + +2002-05-18 17:39 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + preparing for mixed block of bitpressure_strategy() + +2002-05-18 17:33 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + remove magic numbers and prepare for mixed block. + +2002-05-18 16:54 takehiro + + * libmp3lame/: machine.h, newmdct.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + fully cosmetic... changed INLINE -> inline + +2002-05-18 16:53 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + prepare for the substep noise shaping method 1 and 3. + +2002-05-18 16:15 takehiro + + * libmp3lame/: quantize.c, takehiro.c + (takehiro-2002_05_07-experimental): + + trivial optimizations + +2002-05-18 16:08 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + clean up table initialization and bit size optimization. + - remove magic number "128". (and changed 116) + - we don't need to prepare the both of adj43[] and adj43asm[]. + prepare only one of them, if we use asm code or not. + +2002-05-18 16:00 takehiro + + * libmp3lame/: bitstream.c, takehiro.c + (takehiro-2002_05_07-experimental): + + use scfsi more. + if all quantized value is 0, we can use scalefactor with not only 0 but + also any number and in such a situation, we can use the scfsi. + +2002-05-18 15:09 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + don't compile some code if analyzer is not needed. + +2002-05-18 15:07 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c (takehiro-2002_05_07-experimental): + + optimization arround vbr_new with the new data structure. + - merged short_block_xr34() and long_block_xr34() into block_xr34() and clean up + - changed IIPOW20[] and remove some condition code. + +2002-05-18 13:59 takehiro + + * libmp3lame/: quantize.c, set_get.c, util.h + (takehiro-2002_05_07-experimental): + + arroud substep noise shaping. + - prepare for "method 3". + - start with "pseudo half shaped" state, if we use the method 2 or 3. + +2002-05-18 13:50 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, set_get.c + (takehiro-2002_05_07-experimental): + + simple calc_noise() optimization (remove one log()) + fix quatn_compare() when alt-preset. + +2002-05-18 12:11 takehiro + + * libmp3lame/quantize_pvt.c (takehiro-2002_05_07-experimental): + + oops, fix calc_noise() bugfix :) + +2002-05-18 12:10 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + trivial optimization by loop unrolling + +2002-05-18 11:38 takehiro + + * libmp3lame/: machine.h, quantize.c, quantize_pvt.c, + quantize_pvt.h (takehiro-2002_05_07-experimental): + + quick fix for "calc_noise_bug" reported by Mark. + +2002-05-18 11:09 takehiro + + * libmp3lame/: lame.c, presets.c, set_get.c + (takehiro-2002_05_07-experimental): + + changed alt-preset-* and comments to follow the change of quality setting. + +2002-05-18 11:07 takehiro + + * libmp3lame/: machine.h, quantize.c + (takehiro-2002_05_07-experimental): + + fix floating exception when global_gain > 255u. + it frequently happens when best_huffman == 2 + +2002-05-18 10:25 takehiro + + * libmp3lame/: lame-analysis.h, lame.c, quantize.c, util.h + (takehiro-2002_05_07-experimental): + + sync with main tree. + - uped READ_AHEAD from 10 to 40 for the frame analyzer (By Mark) + - removed warning when using -Y (By Robert) + - removed unused bitpressure strategie 2 (VBR) (By Robert) + +2002-05-14 21:32 robert + + * libmp3lame/: lame.c, quantize.c, util.h, vbrquantize.c, + vbrquantize.h: + + removed warning when using -Y + removed unused bitpressure strategie 2 (VBR) + +2002-05-14 21:02 robert + + * libmp3lame/.indent.pro: + + changing max line length from 80 to 100 chars + +2002-05-14 16:23 markt + + * frontend/timestatus.c: + + added comment about clock rollover check + +2002-05-14 16:19 markt + + * frontend/: lametime.c, timestatus.c: + + put in rollover check in frontend cpu/wall clock timing routines. + + didn't we used to have this? + + user reported (on a 35min encode) that the output of clock() + (of type clock_t) was rolling over and becoming negative. + On his system, clock_t is a signed 32 bit int. + +2002-05-12 18:47 markt + + * INSTALL: + + removed info about vorbis encoding from INSTALL + +2002-05-12 18:01 markt + + * ltmain.sh: + + applied patch to ltmain.sh + from sourceforge.net bug report. it passes LDFLAGS on to the + linker? + + *** ltmain.sh.org Sun Oct 22 14:06:32 2000 + --- ltmain.sh Sun Apr 28 11:56:54 2002 + *************** + *** 818,824 **** + convenience= + old_convenience= + deplibs= + ! linkopts= + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + --- 818,824 ---- + convenience= + old_convenience= + deplibs= + ! linkopts="$LDFLAGS" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + +2002-05-12 17:20 markt + + * include/lame.h, libmp3lame/lame-analysis.h: + + added documentation to lame.h for lame_decode* functions + + uped READ_AHEAD from 10 to 40 for the frame analyzer + +2002-05-12 13:52 takehiro + + * libmp3lame/: bitstream.c, l3side.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c, util.h, vbrquantize.c, vbrquantize.h + (takehiro-2002_05_07-experimental): + + big data structure update (2) + - this is very alpha. check is not done yet, but I should have sleep tonight :p + - "make test" runs fine. but mp3x, vbr-new needs more test. abr mode aborts floating exception. + - almost all the structured data, like l3_xmin, scalefac, distort, ... are now simple FLOAT8/integer array. + - calc_noise() and so on is very simple code and very fast, because we can handle the long/short block by same code, + - new member "window" and "width" are added to gr_info. + +2002-05-12 09:30 takehiro + + * libmp3lame/quantize.c: + + fix inc_scalefac_scale() ignoring preflag. + +2002-05-12 08:29 takehiro + + * Makefile.in (takehiro-2002_05_07-experimental): + + regen(forgot to check in) + +2002-05-12 08:02 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + trivial cleanup + +2002-05-12 08:02 takehiro + + * libmp3lame/reservoir.c (takehiro-2002_05_07-experimental): + + because #define NORES is not working as it was, I remove it. + +2002-05-12 07:48 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + fix mp3x scalefactor display when scfsi used and cleanup on set_pinfo(). + fix warning arround calc_klemm_noise(). + +2002-05-12 07:30 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h + (takehiro-2002_05_07-experimental): + + noise calculation cleanup. + - delayed calculation of klemm_noise and it is shared to store in max_noise. + - max_noise, tot_noise and over_noise are now "B" order, not "dB". + +2002-05-11 18:49 markt + + * lame.spec.in: + + new lame.spec.in file from Yosi. + +2002-05-11 18:29 markt + + * libmp3lame/: quantize.c, quantize_pvt.c: + + applied Takehiro's bug fix for single channel bit reservoir usage + for pre-echo control. + +2002-05-11 18:28 takehiro + + * Makefile.am, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c, + libmp3lame/takehiro.c, libmp3lame/vbrquantize.c + (takehiro-2002_05_07-experimental): + + not testing much, but I think now best_huffman_divide==2 works. + - default quality setting is changed to 3, and "make test" is done with that. + - quality setting 0,1, and 2 with CBR/ABR/VBR-old mode uses best_huffman_divide==2. + - best_scalefac_store() is not called in inner loop. + - "lame -q 2 foo.wav foo.mp3" runs about half or more slower speed than that of "lame -q 3 ..." + +2002-05-11 17:26 takehiro + + * libmp3lame/: quantize_pvt.c, quantize_pvt.h, takehiro.c + (takehiro-2002_05_07-experimental): + + combination of small patches mainly to get more tight coupling/inlining + optimization. + - in quantize_pvt.c, some functions are now static. + - some "char" type table is now "int" + - quantize_xrpow*() are moved from quantize_pvt.c to takehiro.c, and they are static function. + - slen1_tab[] and slen2_tab[] are moved to takehiro.c + +2002-05-11 16:42 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + oops, checked in the older one. fix CBR bit allocation. + +2002-05-11 16:28 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, + reservoir.c, reservoir.h (takehiro-2002_05_07-experimental): + + fix --vbr-old for newer resovoir handling code. + now it produces bit-by-bit identical from the main branch with my "limited test". + +2002-05-11 14:39 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + sync with main tree + - Robert's modification, 'more time consuming strategy to handle the case when more bits used than available' + +2002-05-11 14:12 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + fix vbr-new arround bin_search_stepsize(). + it ignores part2_length to calculate cod_info->part2_3_length. + + consider part2_length inside of bin_search_stepsize(), not caller side. + +2002-05-11 13:49 takehiro + + * libmp3lame/vbrquantize.c (takehiro-2002_05_07-experimental): + + fix for vbr-new to work with new bin_search_stepsize() + +2002-05-09 23:25 robert + + * libmp3lame/vbrquantize.c: + + vbr-new: + more time consuming strategy to handle the case when more bits used than available + +2002-05-08 22:28 takehiro + + * libmp3lame/quantize_pvt.h (takehiro-2002_05_07-experimental): + + oops I missed the merging. + +2002-05-08 22:27 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.h, util.h + (takehiro-2002_05_07-experimental): + + bin_stepsearch() hack. + separete stepsize for each channel that we will use next frame + little bit faster. + +2002-05-08 21:30 takehiro + + * libmp3lame/takehiro.c (takehiro-2002_05_07-experimental): + + fix warning + +2002-05-08 21:07 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, vbrquantize.c + (takehiro-2002_05_07-experimental): + + sync with robert's latest patch on mainline. + - allow best huffman divide to be used in vbr-new + - moved ms_convert() + +2002-05-08 21:00 takehiro + + * libmp3lame/quantize.c (takehiro-2002_05_07-experimental): + + monoraul bitallocation patch. + + thanx Robert to revert. and sorry for the trouble. + I made my own branch and check the code on this. + if I get the "bit-by-bit identical" output, I will merge the branch. + I will follow the main line changes as possible. + + till then, bye for now. see you later, at the merging time. + +2002-05-07 23:08 robert + + * libmp3lame/: quantize_pvt.h, vbrquantize.c: + + allow best huffman divide to be used in vbr-new + +2002-05-07 21:24 robert + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + moved the tiny function ms_convert from quantize_pvt.c to quantize.c--the + only client for it--giving a little speed increase + +2002-05-07 21:11 robert + + * libmp3lame/: quantize.c, quantize_pvt.h, vbrquantize.c: + + better decoupling of vbrquantize.c and quantice.c + +2002-05-07 20:21 robert + + * libmp3lame/: bitstream.h, quantize_pvt.h, reservoir.h, util.h: + + sorry Takehiro, we are back to the last known working version from Sunday + 13:35 UTC now + +2002-05-07 20:15 robert + + * libmp3lame/: bitstream.c, encoder.c, quantize.c, quantize_pvt.c, + reservoir.c, takehiro.c, util.c, vbrquantize.c: + + sorry Takehiro, we are back to the last known working version from Sunday + 13:35 UTC now + +2002-05-06 16:03 takehiro + + * libmp3lame/quantize.c: + + fix for new reservoir handling code with my ABR patch. + we don't need the totbits, because the reservoir size is reduced in + ResvAdjust() in gr/ch loop and reservoir handler uses it. + +2002-05-06 15:49 takehiro + + * ACM/: .cvsignore, ADbg/.cvsignore, tinyxml/.cvsignore: + + added cvsignore to ignore Makefile, etc. + +2002-05-06 15:30 takehiro + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/quantize.c, libmp3lame/reservoir.c: + + cleanup. remove a compiling problem and some warnings. + +2002-05-05 18:34 takehiro + + * libmp3lame/quantize.c: + + one more outer_loop() fix for VBR. + +2002-05-05 18:18 takehiro + + * libmp3lame/quantize.c: + + outer_loop() fix for vbr_rh and vbr_mtrh + +2002-05-05 17:37 takehiro + + * libmp3lame/quantize_pvt.c: + + update comment + +2002-05-05 17:17 takehiro + + * libmp3lame/: bitstream.c, bitstream.h, encoder.c, quantize.c, + reservoir.c, util.c, util.h: + + cleanup arround getframebits(). + +2002-05-05 16:50 takehiro + + * libmp3lame/: quantize.c, reservoir.c: + + fix NORES_TEST. and works not only for CBR (don't tell me that's useful :p) + +2002-05-05 16:40 takehiro + + * libmp3lame/: quantize.c, reservoir.c, reservoir.h: + + oops, I mis-checked in the old files. this is real one. + +2002-05-05 16:29 takehiro + + * libmp3lame/: quantize_pvt.c, reservoir.c, reservoir.h: + + clean up arround reservoir. + +2002-05-05 15:47 takehiro + + * libmp3lame/: quantize.c, reservoir.c, reservoir.h: + + trivial cleanup of arround resvoir. + +2002-05-05 15:34 takehiro + + * libmp3lame/quantize.c: + + cleanup arround inc_scalefac_scale() with new cod_info strcture. + +2002-05-05 14:35 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + cleanup arround calc_noise() with new cod_info strcture. + +2002-05-05 13:59 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + more cleanup of new cod_info structure, arround count_bits() + +2002-05-05 13:48 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.h: + + inner_loop() is now static function. + +2002-05-05 13:43 takehiro + + * libmp3lame/: quantize.c, vbrquantize.c: + + changed outer_loop() algorithm. it needs lesser copy and runs faster. + - try with new scalefactor combination on work area, and if we get the better result, copy it to the returning area. + - make bin_search_StepSize() return the global_gain which assures targ_bits > found_bits. + +2002-05-05 13:33 robert + + * libmp3lame/: quantize.c, vbrquantize.c, vbrquantize.h: + + some clean-up in parameter passings due to recent change in cod_info structure + +2002-05-05 13:01 robert + + * libmp3lame/: encoder.c, quantize.c, quantize.h, vbrquantize.c, + vbrquantize.h: + + removed again some unused code I thought that was removed some long time ago + +2002-05-05 11:58 takehiro + + * libmp3lame/: bitstream.c, encoder.c, l3side.h, quantize.c: + + bit cleanup. removed window_switching_flag in l3side. + +2002-05-05 11:53 takehiro + + * libmp3lame/: quantize.c, quantize.h, vbrquantize.c: + + To fix it does not call the "freorder" and to support for mixed block, + the vbrquantize.c uses init_outer_loop()/init_xrpow() in quantize.c to + initializatoin. this may fix the MPEG2 problem (but not tested). + +2002-05-04 22:49 markt + + * configure, testcase.mp3: + + updated testcase.mp3 + +2002-05-04 15:48 takehiro + + * libmp3lame/: encoder.c, quantize.c, util.c, util.h: + + clean up and speed up (optimize for new data structure). + - devided init_outer_loop() into init_outer_loop() and init_xrpow(). This makes it easy to use GOGO-no-coda's xrpow calculation routine. + # thanx Robert, your fix makes me aware my mistake in VBR mode. + + - restoring duplicated data of VBR loop are removed. + + more mixed_block prepare. freorder() in util.c and its caller in encoder.c are moved into init_outer_loop() in quantize_pvt.c + +2002-05-04 15:36 takehiro + + * libmp3lame/quantize.c: + + trivial optimization + +2002-05-04 14:54 takehiro + + * libmp3lame/: bitstream.c, quantize.c, quantize_pvt.c, + vbrquantize.c: + + the signess process of l3_enc[] are moved from quantize*.c to bistream.c. bit faster, much simpler. + +2002-05-04 13:58 takehiro + + * libmp3lame/quantize_pvt.c: + + removed unused variables. + +2002-05-04 13:55 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c: + + removed log calculation of klemm_noise in main loop + +2002-05-04 09:30 afaber + + * ChangeLog, Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h: + + Added quality setting to lame_enc.dll interface + +2002-04-30 22:20 robert + + * libmp3lame/version.h: + + 3.93 alpha 1 -> 3.93 alpha 2 + +2002-04-30 22:00 robert + + * libmp3lame/: quantize.c, quantize_pvt.c: + + fixing latest floating point exceptions I got for some days + within the calc noise routine + +2002-04-28 08:15 takehiro + + * libmp3lame/quantize_pvt.c: + + Mark, because max_noise is initialized with 1E-20 and refreshes Max(max_noise, sfb_noise), so it will never lesser than 1e-20. + +2002-04-27 21:15 takehiro + + * libmp3lame/takehiro.c: + + bit faster best_huffman_divide(). + - use the pointer to the structure, not structure itself. + +2002-04-27 20:58 takehiro + + * configure, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/l3side.h, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/quantize.c, + libmp3lame/quantize.h, libmp3lame/quantize_pvt.c, + libmp3lame/quantize_pvt.h, libmp3lame/takehiro.c, + libmp3lame/vbrquantize.c, libmp3lame/vbrquantize.h: + + large data structure update (1) + - mdct values (xr), encoded values (l3_enc), and scalefactors (scalefac) are in the gr_info structure. + - it runs faster. + - reduce stack size but require large III_side_info_t and lame_global_flags. + +2002-04-27 20:41 takehiro + + * libmp3lame/machine.h: + + fix --enable-all-float. when it enabled, FLOAT8_MAX should be FLT_MAX about 1e37, not 1e99. + +2002-04-27 18:24 takehiro + + * libmp3lame/bitstream.c: + + trivial + +2002-04-24 11:10 aleidinger + + * Makefile.unix: + + add a mingw comment from Hubert Hanghofer + +2002-04-22 17:51 markt + + * libmp3lame/quantize_pvt.c: + + Takehiro, when you changed this code: + + res->max_noise = 10.*log10(Max(1e-20,max_noise )); + res->klemm_noise = 10.*log10(Max(1e-20,klemm_noise)); + + to: + + res->max_noise = 10.*log10(max_noise); + res->klemm_noise = 10.*log10(klemm_noise); + + I started getting FPE (I always compile with --enable-debug + which aborts on FPE). I went ahead and changed it back- it should + have little effect. + +2002-04-21 20:31 afaber + + * Dll/BladeMP3EncDLL.c: + + Added additional debug flags + +2002-04-21 18:10 takehiro + + * libmp3lame/l3side.h: + + remove unused definition + +2002-04-21 18:05 takehiro + + * libmp3lame/lame.c: + + fix typo + +2002-04-21 17:33 takehiro + + * libmp3lame/lame.c: + + trivial(reduce magic number) + +2002-04-21 17:03 afaber + + * Dll/BladeMP3EncDLL.c: + + Avoid the VBR Tag space was written when VBR method was disabled + (caused empty frame in fornt of MPEG stream for certain CBR settings) + +2002-04-21 16:56 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, + libmp3lame/takehiro.c, libmp3lame/util.h: + + new option, --substep, pseudo substep noise shaping now works. + - new set_get function, lame_set_substep(), lame_get_substep() + - final fix of "do substep" region of selected scalefactor. + - noise_shaping_amp == 3 is removed and the method of how to use substep is selecte by the new member "substep" in structure "lame_internal_flags". + +2002-04-21 13:57 takehiro + + * libmp3lame/bitstream.c: + + trivial optimization: gfp/gfc cleanup + +2002-04-20 22:31 robert + + * Makefile.unix: + + [no log message] + +2002-04-20 20:40 takehiro + + * libmp3lame/: bitstream.c, encoder.c, l3side.h, newmdct.c, + quantize.c, quantize_pvt.c, takehiro.c, vbrquantize.c: + + simplify the structure. + l3_side->gr[gr].ch[ch].tt is now known as l3_side->tt[gr][ch]. + +2002-04-20 20:31 takehiro + + * libmp3lame/l3side.h: + + fix misleading indent + +2002-04-20 20:28 takehiro + + * libmp3lame/takehiro.c: + + prepare for mixed block support: count_bits() and best_scalefac_store(). + fix bug of noise_shaping_amp==3 on a long block. + +2002-04-20 20:17 takehiro + + * libmp3lame/quantize.c: + + more mixed_block preparation: inc_scalefac_scale(), amp_scalefac_bands() + +2002-04-20 20:16 takehiro + + * libmp3lame/quantize_pvt.c: + + for better mixed_blcok support, make calc_xmin() use cod_info->sfb_lmax, etc. + +2002-04-20 19:54 takehiro + + * libmp3lame/quantize.c: + + fix mixed mode (long block max sfb) + +2002-04-20 19:50 takehiro + + * libmp3lame/: l3side.h, quantize.c, quantize_pvt.c: + + more generalized mixed_block support and considering in MPEG2/2.5 + - added new members to cod_info. psy_lmax and psy_smax. + +2002-04-20 19:39 takehiro + + * libmp3lame/quantize.c: + + we don't need two elements of l3_xmin. + +2002-04-20 19:34 takehiro + + * libmp3lame/quantize_pvt.c: + + - calc_xmin() supports mixed_block noise calculation. + - mixed_block parameter(long block end point and short block start point) fix for calc_noise() + +2002-04-20 18:51 takehiro + + * libmp3lame/quantize_pvt.c: + + calc_noise() supports mixed_block noise calculation. + +2002-04-20 18:40 takehiro + + * libmp3lame/quantize_pvt.c: + + remove out-of-date comments + +2002-04-20 18:37 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c: + + first step of clean up calc_noise() for preparing mixed block support. + - removed unused variables + - make the two loops (long and short) same structure. + +2002-04-20 11:49 robux4 + + * ACM/lameACM.dsp: + + Added the preset to compile the project (not used... yet) + +2002-04-19 14:51 bouvigne + + * Dll/BladeMP3EncDLL.c: + + Now the dll should properly applying mono and resampling settings even if presets are used + +2002-04-19 11:23 bouvigne + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + alt-presets now used from inside libmp3lame + +2002-04-17 22:13 robert + + * Makefile.unix: + + missing presets.c added + +2002-04-17 08:11 aleidinger + + * configure: + + regen + +2002-04-17 08:08 aleidinger + + * configure.in: + + bump version + +2002-04-16 19:47 markt + + * testcase.mp3: + + updated testcases (just because CVS version bumped up to 3.93alpha) + +2002-04-15 18:36 markt + + * libmp3lame/version.h: + + updated version to 3.93 alpha 1 + +2002-04-15 16:42 bouvigne + + * frontend/parse.c, libmp3lame/presets.c: + + abr presets now into libmp3lame + +2002-04-15 11:51 bouvigne + + * frontend/parse.c: + + --cbr + +2002-04-15 11:42 bouvigne + + * libmp3lame/lame.c: + + 3dnow identification + +2002-04-15 08:16 aleidinger + + * Makefile.in, configure: + + regen + +2002-04-15 06:58 markt + + * Makefile.in, configure, debian/Makefile.in: + + got automake 1.5 and ran it: + +2002-04-15 06:57 markt + + * debian/Makefile.am: + + updated debian/Makefile.am but my version of automake + is too old: + + debian/Makefile.am:5: require version 1.5, but have 1.4-p5 + +2002-04-15 06:47 markt + + * testcase.mp3, doc/html/history.html, libmp3lame/version.h: + + bumped up version number to 3.92 for release + +2002-04-15 06:46 markt + + * ChangeLog: + + ran cvs2cl.pl + +2002-04-14 12:21 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: + + Added strict-iso option to the interface, added output samplerate parameter to the debug log file + +2002-04-12 19:44 markt + + * libmp3lame/bitstream.c: + + added message regarding "internal buffer inconsistency error" to printout: + + ERRORF(gfc,"This is a fatal error. It has several possible causes:"); + ERRORF(gfc,"90% LAME compiled with buggy version of gcc using advanced optimizations"); + ERRORF(gfc," 9% Your system is overclocked"); + ERRORF(gfc," 1% bug in LAME encoding library"); + +2002-04-10 12:55 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + --noasm option + +2002-04-10 06:37 bouvigne + + * Makefile.MSVC: + + presets.c + +2002-04-09 15:43 bouvigne + + * Dll/BladeMP3EncDLL.c: + + dm presets in the dll are now used from initialized from inside libmp3lame + +2002-04-09 15:28 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2002-04-09 14:46 bouvigne + + * frontend/parse.c, include/lame.h, libmp3lame/Makefile.am, + libmp3lame/libmp3lame_vc6.dsp, libmp3lame/presets.c, + libmp3lame/set_get.c: + + vbr presets are now part of libmp3lame + +2002-04-09 11:56 bouvigne + + * frontend/parse.c: + + --cbr switch + +2002-04-08 20:30 robux4 + + * ACM/acm.rc: + + minor change on the DLL versioning + +2002-04-08 18:43 robux4 + + * ACM/: ACM.cpp, AEncodeProperties.cpp: + + Added some new defines that might not be in all platform DDKs + (just in case) + +2002-04-08 18:41 aleidinger + + * Makefile.in, ACM/Makefile.in: + + regen + +2002-04-08 18:41 aleidinger + + * Makefile.am, ACM/Makefile.am: + + add new vc6 file + +2002-04-08 12:43 bouvigne + + * lame_vc6.dsw, ACM/lameACM_vc6.dsp: + + added ACM codec to vc6 workspace + +2002-04-08 09:56 bouvigne + + * lame_projects_vc6.dsp, lame_vc6.dsw: + + dummy project to generate all lame projects (select lame_projects in the workspace) + +2002-04-07 14:09 robux4 + + * ACM/TODO: + + Removed the things already done + +2002-04-07 14:07 robux4 + + * ACM/: ACM.cpp, AEncodeProperties.cpp, lameACM.dsp: + + Clicking on the LAME URL will open the default browser + +2002-04-07 13:31 robux4 + + * ACM/: AEncodeProperties.cpp, AEncodeProperties.h: + + Added tool-tips to the configuration dialog + +2002-04-07 12:28 robux4 + + * ACM/: ACM.cpp, acm.rc: + + Improved LAME version display + +2002-04-07 10:17 robux4 + + * ACM/: AEncodeProperties.cpp, AEncodeProperties.h, acm.rc, + lame_acm.xml, resource.h: + + ABR support now complete + +2002-04-06 14:12 aleidinger + + * lame.bat: + + bugfix, sorry, lost the mail for it + +2002-04-06 14:10 aleidinger + + * Makefile.in, ACM/Makefile.in, ACM/tinyxml/Makefile.in, + Dll/Makefile.in, frontend/Makefile.in, libmp3lame/Makefile.in, + mpglib/Makefile.in, configure: + + regen + +2002-04-06 14:09 aleidinger + + * configure.in: + + add tinyxml directory + +2002-04-06 14:08 aleidinger + + * Makefile.am, ACM/Makefile.am, ACM/tinyxml/Makefile.am, + Dll/Makefile.am, frontend/Makefile.am, libmp3lame/Makefile.am, + mpglib/Makefile.am: + + add new files + +2002-04-06 14:01 robux4 + + * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, ACMStream.h: + + Encoding in ABR is starting to work + the different format strings are sorted correctly + +2002-04-06 11:34 robux4 + + * ACM/: ACM.cpp, ACM.h, AEncodeProperties.cpp, AEncodeProperties.h, + acm.rc, resource.h: + + First part of the ABR support + (missing use ABR settings on encoding when applied, configuration of ABR params) + +2002-04-06 11:32 robux4 + + * ACM/tinyxml/: readme.txt, tinyxml.cpp, tinyxml.dsp, tinyxml.h, + tinyxmlparser.cpp, xmltest.cpp: + + Updated with version 2.0 beta + +2002-04-04 13:35 bouvigne + + * lame_vc6.dsw, Dll/LameDll_vc6.dsp, frontend/lame_vc6.dsp, + libmp3lame/libmp3lame_vc6.dsp, mpglib/mpglib_vc6.dsp: + + I was annoyed to not be able to open the VC projects in vc6, so I added vc6 ones + +2002-03-22 18:29 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Added lame presets to DLL interface + +2002-03-16 00:26 robert + + * Makefile.MSVC: + + no fast float to int conversion (Intel compiler) + +2002-03-16 00:21 robert + + * Makefile.MSVC, frontend/parse.c: + + fix for Win2k path seperator issue + found by Peter Hartley + +2002-03-15 23:16 robert + + * libmp3lame/quantize.c: + + bugfix, confusion about sideinfo length + found by "Kei Ishida" + +2002-03-06 00:02 robert + + * lame.dsw: + + VC Workspace for all(?) targets + +2002-03-03 18:57 aleidinger + + * libmp3lame/psymodel.c: + + remove /* withhin comment + +2002-03-03 18:38 markt + + * TODO: + + msvc6 notes + +2002-02-22 11:53 shibatch + + * libmp3lame/quantize_pvt.c: + + mp3x now displays quantization noise correctly when using nspsytune. + +2002-02-21 00:54 rbrito + + * debian/: changelog, control, copyright, lame-dev.docs, + lame-dev.files, lame-extras.files, lame.docs, liblame0-dev.docs, + liblame0-dev.files, liblame0.files, rules: + + Reorganization of the lame/debian directory for generating packages closer + to what the Debian Policy specifies. Still not there (the liblame0 package + still has a dreaded -rpath and thus, is not lintian clean). + +2002-02-17 15:24 takehiro + + * doc/html/: history.html, switchs.html: + + fix option description, and changed & to & + +2002-02-17 14:22 takehiro + + * libmp3lame/psymodel.c: + + now inter-channel masking works even when without --nspsytune or with -m s + +2002-02-17 13:59 takehiro + + * libmp3lame/psymodel.c: + + fix for --enable-all-float. + +2002-02-17 13:55 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/set_get.c, libmp3lame/util.h: + + added inter channel masking effect. + gfp->interChRatio is the ratio of inter-channel masking effect, which could + be indicated by --interch X option. + The default value is 0.0, which means there's no inter-channel masking effect. + + I think ratio = 0.01 is OK for lower bitrates (like under 128kbps), + for like old days songs by the Beatles. + +2002-02-17 13:30 bouvigne + + * frontend/parse.c: + + presets down to 8kbps + +2002-02-17 08:12 takehiro + + * libmp3lame/util.h: + + prepare for the interchannel masking and substep noise shaping. + +2002-02-16 17:19 robux4 + + * ACM/tinyxml/: Makefile.tinyxml, changes.txt, dox, makedistlinux, + makedistwin.bat, readme.txt, tinyxml.cpp, tinyxml.dsp, tinyxml.h, + tinyxmlerror.cpp, tinyxmlparser.cpp, xmltest.cpp: + + Update with newer version of TinyXML + +2002-02-15 11:42 shibatch + + * frontend/parse.c, libmp3lame/psymodel.c: + + Now, nspsytune2 should work, maybe... + +2002-02-14 15:38 shibatch + + * libmp3lame/: lame.c, psymodel.c, util.h: + + Preparation work for nspsytune2. + +2002-02-13 16:30 aleidinger + + * frontend/rtp.h: + + compile fix for gcc 3.x from Len Walter <len@unsw.edu.au> + +2002-02-09 18:51 markt + + * frontend/gtkanal.c: + + added preflag count to statics window in mp3x + +2002-02-07 11:58 shibatch + + * libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + frontend/parse.c, include/lame.h, libmp3lame/set_get.c: + + preparation work for nspsytune2 + +2002-02-04 17:10 markt + + * TODO, libmp3lame/util.c: + + temporary fix for resampling code. downsampling from 44101 to 44100 causes + a seg fault. Workaround in place for now: resampling disabled + if input/output samplerates agree to 4 digits. + +2002-02-01 18:58 markt + + * INSTALL, TODO: + + minor edits + +2002-02-01 17:41 markt + + * TODO: + + added notes about building a working, all encompasing MSVC6 + workspace to TODO list + +2002-02-01 17:37 markt + + * INSTALL: + + added nots about the ACM codec and directshow filter + to INSTALL + +2002-02-01 17:08 robux4 + + * ACM/ACM.cpp: + + Correct a problem when more than 2 channels are involved + +2002-01-31 21:17 robux4 + + * libmp3lame/lame.c: + + Less memory copying on interleaved buffer + +2002-01-31 21:03 uid32249 + + * ACM/tinyxml/: Makefile, Makefile.tinyxml: + + replace Makefile with Makefile.tinyxml + +2002-01-30 23:25 robux4 + + * ACM/: ACM.cpp, acm.rc: + + resolved FhG incompatibility, first beta version (can go public), no decoding yet + +2002-01-29 21:20 robux4 + + * ACM/: ACM.cpp, TODO, acm.rc: + + update version and removed unused buffers + +2002-01-29 20:51 robux4 + + * ACM/lameACM.dsp: + + build with special dynamic memory handling for ACM + +2002-01-29 20:37 robux4 + + * configMS.h, ACM/ACM.cpp, ACM/ACMStream.cpp, ACM/main.cpp: + + More debugging, special dynamic memory handling for ACM + +2002-01-28 22:33 ivanski + + * mac/LAME.mcp: + + CW6 Project File + +2002-01-28 22:13 ivanski + + * mac/: .DS_Store, LAME Carbon Debug.pch, LAME Carbon Final.pch, + LAME Classic Debug.pch, LAME Classic Final.pch, MacDLLMain.c, + Precompile_Common.h: + + Initial revision + +2002-01-28 22:13 ivanski + + * mac/: .DS_Store, LAME Carbon Debug.pch, LAME Carbon Final.pch, + LAME Classic Debug.pch, LAME Classic Final.pch, MacDLLMain.c, + Precompile_Common.h: + + Mac support + +2002-01-28 20:12 robux4 + + * ACM/: TODO, acm.rc: + + more TODO, added icon credit + +2002-01-28 18:18 markt + + * libmp3lame/lame.c, test/CBRABR.op: + + set devault qval to 2 for CBR and ABR. + +2002-01-25 18:18 robux4 + + * ACM/: TODO, lame.ico: + + new icon, more to do + +2002-01-25 17:51 robux4 + + * ACM/: ACM.cpp, ACM.h, AEncodeProperties.cpp, DecodeStream.cpp, + acm.rc: + + version 0.7.6, improved the smart output mode, corrected a config saving bug + +2002-01-25 17:47 robux4 + + * ACM/ADbg/: ADbg.cpp, ADbg.h: + + more explicit cast + +2002-01-25 11:27 aleidinger + + * misc/Makefile.in: + + regen + +2002-01-25 11:23 aleidinger + + * misc/Makefile.am: + + add lameid3.pl + +2002-01-25 11:22 aleidinger + + * doc/man/lame.1: + + some fixes + +2002-01-24 19:38 robux4 + + * ACM/: ACM.cpp, ACM.h, ACMStream.cpp, AEncodeProperties.cpp, + AEncodeProperties.h, TODO, acm.rc, lameACM.dsp, lame_acm.xml, + main.cpp, resource.h: + + introducing smart output mode, clean dialog boxes, config saving/loading now works + +2002-01-23 20:51 robux4 + + * ACM/DecodeStream.cpp: + + correct a build problem when ENABLE_DECODING is not defined + +2002-01-23 20:45 robux4 + + * ACM/readme.txt: + + More doc on the release files + +2002-01-23 20:40 robux4 + + * ACM/ADbg/ADbg.dsp: + + removed a minor build problem + +2002-01-23 20:39 robux4 + + * ACM/: ACM.cpp, ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, + AEncodeProperties.cpp, AEncodeProperties.h, DecodeStream.cpp, + DecodeStream.h, LameACM.inf, TODO, acm.rc, lameACM.dsp, + lame_acm.xml, readme.txt, resource.h, tinyxml/Makefile, + tinyxml/changes.txt, tinyxml/readme.txt, tinyxml/test.dsp, + tinyxml/test.dsw, tinyxml/tinyxml.cpp, tinyxml/tinyxml.dsp, + tinyxml/tinyxml.h, tinyxml/tinyxmlerror.cpp, + tinyxml/tinyxmlparser.cpp, tinyxml/xmltest.cpp: + + Initial configuration dialog and XML config saving, initial decoding support (not working yet) + +2002-01-23 20:32 robux4 + + * mpglib/interface.h: + + better handling of C++ include + +2002-01-23 01:23 markt + + * lame.spec.in: + + commiting Yosi's new lame.spec.in file + +2002-01-22 19:45 robux4 + + * ACM/: ACM.cpp, ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, + LameACM.inf, TODO, acm.rc, adebug.h, lameACM.def, lameACM.dsp, + main.cpp, readme.txt: + + clean the code, put LGPL license, add mpglib to the build + +2002-01-21 21:33 markt + + * TODO, configure, configure.in: + + added MAX OSX patch from sf bugtrack page + +2002-01-21 20:24 markt + + * USAGE, misc/lameid3.pl: + + added lameid3.pl script to misc directory. + (use to reencode mp3's and preserve id3 tags) + +2002-01-20 19:29 robux4 + + * libmp3lame/util.h: + + Better C++ handling + +2002-01-20 19:25 robux4 + + * Dll/BladeMP3EncDLL.h: + + Better C++ handling + +2002-01-20 15:05 aleidinger + + * configure: + + regen (ACM) + +2002-01-20 15:05 aleidinger + + * configure.in: + + Add ACM directory + +2002-01-20 15:04 aleidinger + + * ACM/Makefile.in: + + Add generated autoconf glue + +2002-01-20 14:59 aleidinger + + * ACM/ADbg/Makefile.in: + + Add generated autoconf glueACM/Makefile.in + +2002-01-20 14:58 aleidinger + + * ACM/: Makefile.am, ADbg/Makefile.am: + + Add automake clue (for make dist) + +2002-01-20 14:56 robux4 + + * ACM/lameACM.dsp: + + Eanble correct nasm support + +2002-01-20 14:03 robux4 + + * ACM/: ADbg/ADbg.cpp, ADbg/ADbg.dsp, ADbg/ADbg.h, ACM.cpp, + ACM.dsw, ACM.h, ACMStream.cpp, ACMStream.h, LameACM.inf, acm.rc, + adebug.h, lame.ico, lameACM.def, lameACM.dsp, main.cpp, + readme.txt, resource.h: + + Initial ACM support + +2002-01-19 11:52 bouvigne + + * README, TODO: + + updated TODO + +2002-01-17 16:43 aleidinger + + * Makefile.unix: + + NASM for Windows fixes (Hubert Hanghofer) + +2002-01-17 13:42 aleidinger + + * configure: + + regen + +2002-01-17 13:42 aleidinger + + * configure.in: + + - Update gcc 3.x and --enable-expopt=full flags based upon suggestions + and benchmarks from Hubert Hanghofer <hhanghof@netbeer.co.at> and + Craig Okruhlica <craig@velio.com>. + - Remove gcc flags which are marked 'experimental' in the gcc 3.0.3 + documentation (noticed by Hubert Hanghofer). + - Add comment what "expopt" means, and what it doesn't mean. + +2002-01-17 13:42 aleidinger + + * Makefile.unix: + + - Update MINGW part pased upon patches and comments from + Hubert Hanghofer <Hubert.Hanghofer@m-real.com>. + - Some minor changes for consistency. + + Note: this file is superseded by configure, except for systems where + configure didn't work, so if something is broken you have to send + patches. + +2002-01-17 05:08 takehiro + + * libmp3lame/i386/.cvsignore: + + added *.lo + +2002-01-09 12:09 takehiro + + * debian/.cvsignore, dshow/.cvsignore: + + added autogen Makefile to ignore + +2002-01-09 12:09 takehiro + + * frontend/.cvsignore, libmp3lame/.cvsignore, mpglib/.cvsignore: + + added *.il, for the intel compiler with ipo option + +2002-01-07 15:51 aleidinger + + * configure: + + oops, forgot to s/gtk12-config/gtk-config/ + +2002-01-07 15:48 aleidinger + + * configure: + + regen + +2002-01-07 15:48 aleidinger + + * configure.in: + + add gcc 3 specific optimizations, based upon suggestions by S�bastien FORESTIER <forestie@caramail.com> + +2002-01-07 10:35 aleidinger + + * configure, frontend/Makefile.in: + + regen: Fix Cygwin and HPUX problems. + +2002-01-07 10:34 aleidinger + + * configure.in, frontend/Makefile.am: + + Fix Cygwin and HPUX problems. + +2002-01-01 16:55 robert + + * misc/lame4dos.bat: + + modified some remark + +2001-12-30 23:54 markt + + * doc/html/history.html: + + updated hostory.html from master copy in webpages project + +2001-12-29 17:36 takehiro + + * doc/html/history.html: + + fix option for pseudo-half step quantization + +2001-12-29 16:23 aleidinger + + * configure: + + regen: Welcome to 3.92 + +2001-12-29 16:21 aleidinger + + * configMS.h, configure.in, libmp3lame/version.h: + + Welcome to 3.92 + +2001-12-29 15:45 aleidinger + + * doc/html/history.html: + + sync with webpages/history.html + +2001-12-28 18:55 takehiro + + * .cvsignore: + + added stamp-h1 + +2001-12-28 12:47 aleidinger + + * Dll/Example.dsp, Dll/MP3EncDll.dsp, dshow/dshow.dsp, + frontend/lame.dsp, libmp3lame/libmp3lame.dsp, dshow/dshow.dsw, + mpglib/mpglib.dsp: + + unix->dos + +2001-12-27 16:12 aleidinger + + * doc/man/lame.1: + + add --alt-preset + +2001-12-27 12:50 aleidinger + + * misc/Makefile.in: + + regen: add missing files to the distribution + +2001-12-27 12:49 aleidinger + + * misc/Makefile.am: + + add missing files to the distribution + +2001-12-23 20:19 dibrom + + * libmp3lame/set_get.c: + + disable noise shaping 2 for "fast" extreme mode also + +2001-12-23 20:11 dibrom + + * libmp3lame/: set_get.c, vbrquantize.c: + + fix small bug and completely disable noise_shaping 2 with "fast" mode until a better solution can be found. + +2001-12-23 12:25 aleidinger + + * misc/Makefile.in: + + regen: add some files to the distribution + +2001-12-23 12:22 aleidinger + + * misc/Makefile.am: + + add auenc, mugeco,sh and mlame to distrib + +2001-12-22 13:32 aleidinger + + * DEFINES: + + document NON_LINEAR_PSYMODEL, remove KLEMM_43 + +2001-12-22 13:29 aleidinger + + * libmp3lame/psymodel.c: + + non linear psymodel (disabled by default) for GPSYCHO (nspsytune is untouched) + +2001-12-22 13:27 aleidinger + + * configure: + + regen: Welcome to v3.91 + +2001-12-22 13:26 aleidinger + + * configMS.h, configure.in, libmp3lame/version.h: + + Welcome to v3.91 + +2001-12-21 15:09 aleidinger + + * libmp3lame/machine.h: + + add icc check + +2001-12-21 15:05 aleidinger + + * libmp3lame/Makefile.in: + + regen: (add vbrquantize.h) + +2001-12-21 15:05 aleidinger + + * libmp3lame/Makefile.am: + + add vbrquantize.h + +2001-12-21 11:58 jd- + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h: + + Added DLL interface function beEncodeChunkFloatS16NI for floating point audio + Samples are input within the range +/- 32768, in non-interleaved channels + +2001-12-21 03:29 markt + + * testcase.mp3: + + updated testcase + +2001-12-21 03:29 markt + + * libmp3lame/: version.c, version.h: + + updated version to lame 3.90 + +2001-12-20 23:11 markt + + * ChangeLog: + + update changelog + +2001-12-20 08:44 dibrom + + * libmp3lame/encoder.c: + + no message + +2001-12-20 08:33 dibrom + + * libmp3lame/: encoder.c, set_get.c, util.h, vbrquantize.c: + + improved quality of "fast" modes in certain situations + +2001-12-18 17:44 dibrom + + * frontend/parse.c: + + removed bitrate compensation stuff for the abr bitrates since it appears no longer necessary + +2001-12-18 17:28 dibrom + + * doc/html/switchs.html: + + added --alt-preset to the list of switches + +2001-12-18 17:13 dibrom + + * doc/html/history.html: + + documented many changes which have been made over 3.90 + +2001-12-18 16:27 dibrom + + * frontend/parse.c: + + small tweak to "standard" preset + +2001-12-18 16:14 dibrom + + * libmp3lame/: psymodel.c, quantize.c, set_get.c, util.h, + vbrquantize.c: + + small quality improvement for "extreme" and "insane", more bitrate tunings for "extreme" -- should average to 256kbps more often + +2001-12-18 11:16 aleidinger + + * configure: + + regen: vorbis changes + +2001-12-18 11:14 aleidinger + + * configure.in: + + - Change vorbis default to disabled + - Added -logg in the vorbis case (seems to be needed, I haven't tested it) + +2001-12-18 11:13 aleidinger + + * libmp3lame/vorbis_interface.c: + + Try to unbreak vorbis support (it can't get worser). + You may need the vorbis source and add -I/path/to/vorbis_src/includes/ to + CFLAGS prior to running configure + + Tested by: Jonathan Ryshpan <jonrysh@pacbell.net> on RedHat 7.2 + Submitted by: Cyrille Lefevre <clefevre@citeweb.net> via FreeBSD problem report + +2001-12-17 04:40 markt + + * libmp3lame/quantize.c: + + Minor changes to Gabriel's adjustment for ABR bitrate. + Updated testcases. + + Added the following comments: + + /* + res_factor is the percentage of the target bitrate that should + be used on average. the remaining bits are added to the + bitreservoir and used for difficult to encode frames. + + Since we are tracking the average bitrate, we should adjust + res_factor "on the fly", increasing it if the average bitrate + is greater than the requested bitrate, and decreasing it + otherwise. Reasonable ranges are from .9 to 1.0 + + Until we get the above suggestion working, we use the following + tuning: + compression ratio res_factor + 5.5 (256kbps) 1.0 no need for bitreservoir + 11 (128kbps) .93 7% held for reservoir + + with linear interpolation for other values. + + */ + res_factor = .93 + .07 * (11.0 - gfp->compression_ratio) / (11.0 - 5.5); + +2001-12-16 16:00 bouvigne + + * libmp3lame/quantize.c: + + better abr bitrate approximation (will break abr testcases) + +2001-12-15 07:31 dibrom + + * libmp3lame/: psymodel.c, set_get.c, util.h, vbrquantize.c: + + More tunings for "fast" options for "standard" and "extreme" modes. + +2001-12-14 16:27 dibrom + + * libmp3lame/set_get.c: + + small tweak to "extreme" mode + +2001-12-14 07:00 dibrom + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + - changed --dm-presets to --alt-presets + - modified preset system + - applied tunings to vbr and psymodel, especially with --alt-preset standard, improves many difficult clips over the default vbr modes/presets (even those such as --r3mix) such as impulse cases (fatboy, spahm, them, gbtinc, ravebase, etc), pre-echo cases (castanets, death2, florida_seq, etc), tonality/js cases (2nd_vent, serioustrouble, bloodline, etc), low volume clips (piano, rach_original), many clips with problems with noise shaping 2, and much much more. Practically all cases should be equal or improved in quality. + - added --no-preset-tune to disable tunings for --alt-preset "modes" + +2001-12-03 18:15 markt + + * USAGE, frontend/parse.c: + + updated descriptions of some command line options, as per Dmitry + +2001-11-30 18:35 markt + + * lame.spec.in: + + patch from lassauge@mail.dotcom.fr for lame.spec.in file. + +2001-11-30 18:05 markt + + * include/lame.h, libmp3lame/lame.c: + + added lame_encode_buffer_long2(), since lame_encode_buffer_long() had + a scaling which restricted the precision of the input to the same + as if the input was 'short int' + + decided to leave the original routine, on the off chance there + is some program out there which uses it. + +2001-11-28 12:30 aleidinger + + * Makefile.in: + + regen + +2001-11-28 12:29 aleidinger + + * Makefile.am: + + change description of make test + +2001-11-26 15:21 takehiro + + * libmp3lame/takehiro.c: + + tuning of "pseudo half step noise shaping" with listening test. + and it works now even when scalefac_scale == 1 + +2001-11-26 15:19 takehiro + + * libmp3lame/: psymodel.c, VbrTag.c: + + fix warning + +2001-11-26 11:00 aleidinger + + * libmp3lame/version.h: + + Bump alpha version. + +2001-11-25 15:24 takehiro + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, takehiro.c, + util.h: + + new noise shaping algorithm(pseudo half step noise shaping) + it brings slow but more accurate noise shaping. + enables with -q0 when CBR + +2001-11-19 21:26 markt + + * frontend/parse.c, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + Reverted CVS back to before "gglower" option was added. + + --scale is a better way to do this, and contrary to Hans' claims, + --scale is also lossless. + +2001-11-18 22:44 robert + + * frontend/parse.c, libmp3lame/encoder.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + patch by Hans van der Heijden, original email: + + Datum: Sun, 18 Nov 2001 20:13:11 +0100 + Von: "Hans van der Heijden" <H.Heijden@inter.NL.net> + An: <Robert.Hegemann@gmx.de> + + Hi Robert, + + For the first time, I compiled Lame, being a non-programmer (well, my work + involves programming, but that's a world apart with logic symbols, not C + language). + Because sometimes I have the urge to try something with the sourcecode. + + I'd like to add a switch to avoid the use of --scale for preventing + clipping. It manipulates global_gain, similar as the mp3gain tool does, but + this would be much more convenient of course (and better quality-wise, being + 'lossless'). + + Since I have no programming experience, can you take a look if I implemented + it correctly? The switch is called --gglower x, where each x-step stands for + 1,5 dB. gg is short for global gain. So for example, --gglower 1 will + decrease the output volume with 1,5 dB (0,841). I would probably use this by + default, it will be enough to prevent clipping for all but the oddest + samples/settings. + + I did a lot of copy/pasting from the --athlower switch, otherwise I probably + couldn't figure it all out! + Files involved are parse.c, lame_global_flags.h, set_get.c, lame.h and + bitstream.c. + I attached these files, if you search in each for 'gglower' you'll find the + added code. + Files came from the 11 Nov CVS. + + Also attached is a cygwin lame.exe if you like to play with it. + + Let's add it to CVS if it's OK (don't know how to do that myself, have to + tell Mark?). + + Bye, + Hans + +2001-11-17 11:17 aleidinger + + * Dll/Example.cpp, Makefile.unix, Dll/Makefile.mingw32: + + some mingw fixes from Vladislav Naumov <vnaum@echo.ru> + +2001-11-14 16:25 aleidinger + + * include/lame.h: + + fixes in comments + +2001-11-12 21:58 robert + + * libmp3lame/lame.c: + + [no log message] + +2001-11-12 17:36 aleidinger + + * include/lame.h: + + spelling fixes in comments + +2001-11-11 22:13 afaber + + * Dll/BladeMP3EncDLL.c: + + fixed bugs: 451879 and 438835 + +2001-11-11 15:08 aleidinger + + * doc/man/Makefile.in, configure: + + regen + +2001-11-11 15:06 aleidinger + + * libmp3lame/bitstream.c: + + add CVS Id + +2001-11-11 14:57 aleidinger + + * Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + regen + +2001-11-11 14:53 aleidinger + + * configure.in, frontend/Makefile.am: + + bugfix: --disable-{mp3x,mp3rtp} had build them + add: --disable-fontend + +2001-11-11 14:48 aleidinger + + * include/lame.h, libmp3lame/version.c, libmp3lame/version.h: + + remove mp3x version, it doesn't belong into the lib + (this breaks every app which uses the function, but mp3x should + be the only app which uses it, so this is ok because I moved it + into gtkanal.c) + +2001-11-11 14:47 aleidinger + + * frontend/gtkanal.c: + + move mp3x version here (from libmp3lame/version.[ch]) + +2001-11-11 11:31 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2001-11-11 11:30 aleidinger + + * libmp3lame/Makefile.am: + + add missing headers + +2001-11-10 14:25 aleidinger + + * libmp3lame/VbrTag.c: + + at least fix the bus error on SPARC until Roel or someone else decides if we should fix it in another way + +2001-11-06 14:43 aleidinger + + * doc/html/switchs.html: + + resample only for encoding + +2001-11-06 12:41 aleidinger + + * doc/man/lame.1: + + athaa fixes, resample only for encoding + +2001-11-06 01:31 jd- + + * frontend/parse.c: + + Cleaned up preset help; send explicitly requested help to stdout, not stderr. + Modularized original presets, with aliases to preserve the original behavior. + +2001-11-05 15:26 dibrom + + * frontend/parse.c: + + modify lowpass values for dm-preset abr mode + +2001-11-05 05:46 dibrom + + * frontend/parse.c: + + Updated dm-presets + +2001-11-05 05:20 markt + + * testcase.mp3, libmp3lame/encoder.h: + + updated padding at end of MP3 to be 1152 samples. + So the last frame containing real data will always be followed + by a frame containing silence. (since most decoders will only + decode the second to last frame) + +2001-11-04 23:42 robert + + * Makefile.MSVC: + + lost i added + +2001-11-04 23:39 robert + + * Makefile.MSVC: + + optimizing some intel compile flags + +2001-11-04 18:51 robert + + * configMS.h: + + moved MSVC specific #pragma into MSVC section + +2001-11-04 18:50 robert + + * libmp3lame/quantize.h, DEFINES: + + removed MAXQUANTERROR precompiler define + +2001-11-04 18:48 robert + + * frontend/parse.c, include/lame.h: + + we don't want to make Naoki's msfix part of the API at this time, removed + from lame.h again. + parse.c compilation was broken by JD's presets_alias function. + +2001-11-04 18:31 robert + + * libmp3lame/: encoder.c, quantize.c, vbrquantize.c, vbrquantize.h: + + removed MAXQUANTERROR precompiler define + +2001-11-04 18:20 dibrom + + * frontend/parse.c: + + update dm-presets.. more to come shortly + +2001-11-04 18:19 dibrom + + * include/lame.h: + + added msfix + +2001-11-04 17:28 robert + + * include/lame.h, libmp3lame/lame.c: + + --vbr-mtrh is now known as --vbr-new + +2001-11-04 17:22 robert + + * Dll/BladeMP3EncDLL.c: + + --vbr-mtrh is now known as --vbr-new + +2001-11-04 13:39 aleidinger + + * libmp3lame/set_get.c: + + some fixes in the comments + +2001-11-04 13:39 aleidinger + + * frontend/parse.c: + + mark --{voice,radio,cd,studio,phone} as deprecated + +2001-11-04 13:33 aleidinger + + * doc/man/lame.1: + + remove --voice (deprecated) + +2001-11-04 13:01 jd- + + * frontend/parse.c: + + Moved "--dm-preset *" preset profiles to "--preset dm-*". + Added code for aliasing presets to multiple broad or narrow purpose labels. + +2001-11-04 08:37 jd- + + * frontend/parse.c: + + Allow specifying the r3mix preset with "--preset r3mix" for consistency + +2001-11-03 10:51 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c: + + Renamed experimental switch "--ath-adjust" to "--athaa-type" for consistency. + All switches directly affecting ATH auto-adjustment begin with "--athaa-*". + +2001-11-03 09:31 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/util.h: + + Added a bit of documentation to the long help. + To better reflect purpose, renamed adapt-thres-type and adapt-thres-level + to athaa-loudapprox and athaa-sensitivity, respectively. + +2001-10-30 20:31 markt + + * libmp3lame/VbrTag.c: + + When determining enc_delay and enc_padding from VBR header, check + for reasonable values. + +2001-10-29 22:00 markt + + * frontend/get_audio.c, frontend/main.c, frontend/main.h, + frontend/parse.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, mpglib/interface.c, + mpglib/mpglib.h: + + VbrTag.c: GetVBRTag() updated to parse enc_delay, enc_padding fields + enc_delay is used by 'lame --decode' to determine how many samples + to skip at the beginning during decoding. + +2001-10-29 20:01 markt + + * frontend/main.c: + + for --nogap option, do not allow Xing VBR tag. + + We should also not allow id3 tags and --nogap, but the are not turned on by + default, and it is more than a 3 line fix :-) + +2001-10-29 08:41 bouvigne + + * libmp3lame/: gain_analysis.c, gain_analysis.h: + + adding gain analysis files + +2001-10-29 06:08 markt + + * frontend/main.c, libmp3lame/VbrTag.c, + libmp3lame/lame_global_flags.h, mpglib/interface.c: + + --nogap and --nogapout fixed in frontend. didn't check + if output is really gapless - hopefully no bugs have crept into + that while --nogap was broken. + +2001-10-28 22:24 markt + + * libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/lame_global_flags.h, libmp3lame/tables.c, + libmp3lame/util.c, mpglib/interface.c: + + Fixed bug in VbrTag.c which is why Xing tag was broken for MPEG2 + files. + + This code: + + if( h_id == 0 ) + pTagData->samprate >>= 1; + + was, for unknown reasons, cutting the samplrate down by + a factor of two for MPEG2, causing the framesize of the Xing + header to be too large, causing it to overwrite the first + valid MP3 frame. + +2001-10-25 11:54 roelvdb + + * libmp3lame/VbrTag.c: + + undo previous edit, misunderstanding + +2001-10-24 23:59 roelvdb + + * libmp3lame/VbrTag.c: + + if ABR, {store bitrate <=255} else { use 4 low bits to store bitrateindex so "-b" for VBR(/CBR) is known. 0F for freeformat} + +2001-10-24 20:45 markt + + * testcase.mp3: + + updated testcases + +2001-10-24 16:33 aleidinger + + * doc/man/lame.1: + + sync with HTML + +2001-10-24 12:44 bouvigne + + * doc/html/: basic.html, examples.html, history.html, node6.html, + switchs.html: + + doc fixes + +2001-10-24 12:32 bouvigne + + * doc/html/switchs.html: + + a small athtype doc modif + +2001-10-23 16:35 bouvigne + + * doc/html/switchs.html: + + fixes from Dmitry + +2001-10-23 16:17 bouvigne + + * doc/html/switchs.html: + + fixes from Alexander + +2001-10-23 14:06 aleidinger + + * doc/man/lame.1: + + add line breaks, expand examples section, add ID3 section, fixes + +2001-10-23 14:06 aleidinger + + * frontend/main.c: + + fix for cygwin/mingw from egor duda <deo@logos-m.ru> + +2001-10-22 21:31 roelvdb + + * libmp3lame/VbrTag.c: + + no message + +2001-10-22 13:25 aleidinger + + * doc/man/lame.1: + + update based on HTML version + +2001-10-21 17:00 bouvigne + + * doc/html/: basic.html, switchs.html: + + doc + +2001-10-20 16:32 aleidinger + + * Makefile.unix: + + Submitted by: "Vladislav Naumov" <vnaum@inbox.ru> + + I canged number 2 of his fixes to be equal to configure.in + (-O3 is the highest official supportes optimization option, some of + the options are superfluous (because they are included in -O3), some may + perhaps change the ABI (ABI, not API!), e.g. -malign-*). + + Quote: + 1. NOUNIXCMD = YES (don't use shell & sed) + 2. CC_OPTS are set to produce optimized code. Somewhat faster. + 3. frontend_sources & lib_sources are now fixed. + GNU Make version 3.79.1 croaked about recursive variable. + 4. ASFLAGS are correctly set, 'make -fMakefile.unix UNAME=MSDOS HAVE_NASM=YES' + works smoothly (if you have nasm.exe, of course :)) + +2001-10-20 16:28 aleidinger + + * Dll/Makefile.mingw32: + + Submitted by: "Vladislav Naumov" <vnaum@inbox.ru> + + Quote: + This makefile compiles lame_enc.dll with mingw32 (and possibly cygwin) + Of course, you must first build ../libmp3lame/libmp3lame.a. + liblame_enc.a can be used to link the lame_enc.dll to your programs. + Tested with EAC 0.9pb9 (my own favorite, http://www.exactaudiocopy.de/). + +2001-10-19 17:39 bouvigne + + * libmp3lame/VbrTag.c: + + headering... + +2001-10-18 19:55 bouvigne + + * doc/html/switchs.html, frontend/parse.c: + + documenting...hopefully nearly finished + +2001-10-17 19:29 robert + + * frontend/main.c: + + patch by Gian-Carlo Pascutto + + I saw someone reported a problem with my --nogapout + switch on the mailinglist. I have done a quick attempt + to fix the problems (and address another potential one). + + I haven't actually tested the fixes, but I'm reasonably + sure they are correct, or at least they show how to + address the problem. + +2001-10-17 13:23 roelvdb + + * libmp3lame/VbrTag.c: + + after discussing with Gabriel added some more AQ flag refinements (--athonly,--noath,--scale-*, free format) + + and + + made #define MAXFRAMESIZE 2880, because LAME used to fill the freeformat 640 LAME Tag with junk at the end. + +2001-10-17 11:31 aleidinger + + * configMS.h: + + fix VERSION after last commit + +2001-10-17 01:41 roelvdb + + * libmp3lame/VbrTag.c: + + added overflow protection to that lowpass field in the LAME Tag, just in case someone enters a very high lowpass value. + +2001-10-17 01:18 roelvdb + + * libmp3lame/lame.c: + + 44.1kHz: + instead of "transition band: 22228 Hz - 22761 Hz" lowpass filter, + "-b320 -a" (mono) will now give "transition band: 21517 Hz - 22050 Hz" + (as in the stereo case) + + likewise on other samplerates. I can imagine this can be done in a much more intelligent fashion. + + also commented out a bit of similar code that seems obsolete now? + +2001-10-16 18:49 bouvigne + + * doc/html/switchs.html: + + documenting - not finished + +2001-10-16 18:07 afaber + + * configMS.h, include/lame.h, libmp3lame/VbrTag.h, + libmp3lame/bitstream.c, libmp3lame/fft.c, libmp3lame/fft.h, + libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/util.h: + + Fixed some compiler warnings (mainly differences between function declaration and definition) + +2001-10-16 15:00 roelvdb + + * libmp3lame/VbrTag.c: + + added the needed "else", fixed lowpass, added -V0/V1, --nores, -k, ... + +2001-10-16 10:35 bouvigne + + * doc/html/history.html: + + history + +2001-10-15 13:44 roelvdb + + * libmp3lame/VbrTag.c: + + fixed a wrong bracket causing >=256 CBR not to be AQ + added ABR>=256 S as AQ, consistent with CBR >=256S + +2001-10-13 19:00 markt + + * testcase.mp3: + + updated testcases + +2001-10-13 14:02 aleidinger + + * include/lame.h, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/set_get.c, + libmp3lame/util.c: + + add --scale-l and --scale-r options + + Requested by: fasttimes@mochamail.com + Written by: mp3gain@hotmail.com + +2001-10-13 14:00 aleidinger + + * doc/man/lame.1: + + update from "lame --longhelp" + +2001-10-13 14:00 aleidinger + + * USAGE, doc/html/switchs.html: + + add --scale-l, --scale-r + +2001-10-12 18:39 bouvigne + + * doc/html/: index.html, switchs.html: + + a few doc updates - not yet finished + +2001-10-11 20:06 bouvigne + + * USAGE, doc/html/basic.html, doc/html/examples.html, + doc/html/history.html, doc/html/id3.html, doc/html/modes.html, + doc/html/node6.html, doc/html/switchs.html: + + [no log message] + +2001-10-11 12:21 aleidinger + + * libmp3lame/: encoder.c, util.h: + + fix misunderstanding of gfc->padding + +2001-10-10 02:17 roelvdb + + * libmp3lame/: VbrTag.c, lame.c: + + consequence, it's "LAME Tag", longhelp said Xing header + +2001-10-10 02:15 roelvdb + + * frontend/parse.c: + + consequence, it's "LAME Tag" + +2001-10-10 02:00 roelvdb + + * frontend/main.c: + + added 13 " if (silent < 10) "s to make "lame --decode --quiet" really silent. there's still a LF I can't locate though... + +2001-10-10 01:42 roelvdb + + * Dll/BladeMP3EncDLL.c: + + removed experimental X from --r3mix + +2001-10-09 23:09 roelvdb + + * libmp3lame/VbrTag.c: + + adds delays/padding to tag, no range check and tested exclusively on windows + +2001-10-09 22:34 roelvdb + + * frontend/parse.c: + + test commit CVS to fix --r3mix size increase (robert identified is as -X being used) + +2001-10-09 14:30 aleidinger + + * libmp3lame/version.h: + + bump alpha version + +2001-10-09 14:26 aleidinger + + * Dll/BladeMP3EncDLL.c, frontend/parse.c, libmp3lame/VbrTag.c, + libmp3lame/encoder.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/util.h: + + Use the official enum names from lame.h instead of numbers or defines. + +2001-10-08 12:54 bouvigne + + * libmp3lame/util.c: + + athtype fix + +2001-10-06 19:25 markt + + * include/lame.h: + + added notes about scaling. there are some inconsistencies in + the API: + + lame_encode_buffer() takes short int as input, range +/- 32768 + lame_encode_float() takes float, but data must be in the range + +/- 32768 + lame_encode_double() takes double, but data must be in the range + +/- 32768 + + lame_encode_int() takes int, but data must be in the range of 'int' + for 32bit ints, this is +/- 2147483684 + +2001-10-06 19:17 markt + + * frontend/get_audio.c: + + updated error messages we now support 8,16,24 and 32 bit input + +2001-10-06 19:05 markt + + * frontend/get_audio.c, frontend/gtkanal.c, frontend/parse.c, + include/lame.h, libmp3lame/lame.c: + + added support for 24 and 32 bit when not using libsndfile. + jd had already added the code to do this, just had to make + the libsndfile --bitwidth option available when not using + libsndfile. Also updated unpack_read_samples to support 32bit. + + Could not test this since I dont have any 24 bit files, and + sox cant seem to create them. + +2001-10-05 22:43 robert + + * libmp3lame/: lame.c, machine.h, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + using -Xn similar to the old code to select different noise measurings with + the newer VBR code. the actual mapping is not final yet. + +2001-10-05 13:00 bouvigne + + * libmp3lame/util.c: + + ath 4 switches to ath 2 in cbr mode + +2001-10-05 12:59 bouvigne + + * libmp3lame/lame.c: + + made NsPsytune stopping using ath0 as default, as everyone is overriding the athwhen using nspsytune + +2001-10-05 12:20 bouvigne + + * Makefile.MSVC, libmp3lame/libmp3lame.dsp: + + makefile.msvc and projects on par? + +2001-10-04 10:01 aleidinger + + * libmp3lame/: VbrTag.c, VbrTag.h: + + fixes for Solaris 8 / add missing include + +2001-10-02 16:02 markt + + * frontend/: main.c, parse.c: + + added nogap patch from Gian-Carlo Pascutto. + + lame --nogapout <outputdir> --nogap file1.wav file2.wav file3.wav ... + + untested. + +2001-10-02 03:54 markt + + * configure: + + ran autoconf to make a new configure script + +2001-10-02 03:53 markt + + * INSTALL, configure.in, frontend/main.c, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/vorbis_interface.c: + + split Vorbis support into two pieces: + + 1. + HAVE_VORBIS (decoding support). This code still works! + (at least it compiles - I have't actually run it). + Can be enabled with ./configure --with-vorbis. Changed the + default in configure.in to define HAVE_VORBIS + + 2. + HAVE_VORBIS_ENCODER + This is the code which hasn't compiled since Vorbis beta1. + Mainly because how you specify varous encoding "modes" has been + changed. It's probably not to much work to get this working, + but there is no reason for this to be in LAME. + +2001-10-02 00:00 markt + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + lame.c: + + Music CRC computed on the fly. Code stubs in place for + decoding on the fly. + +2001-10-01 23:02 markt + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + lame.c, util.h: + + started work to put in the ability to compute MusicCRC on + the fly, as well as decoding on the fly. + +2001-09-30 20:36 robert + + * frontend/parse.c, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/set_get.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + removed some unused variable + +2001-09-28 21:29 markt + + * frontend/main.c: + + cpu affinity back to #define _WIN32 + +2001-09-28 21:13 markt + + * frontend/main.c: + + process affinity patch is back + +2001-09-28 20:46 markt + + * USAGE: + + more small updated to USAGE + +2001-09-28 20:38 markt + + * USAGE: + + updated USAGE to reflect Dmitry's -B comments + +2001-09-28 12:04 bouvigne + + * Makefile.MSVC: + + harmonization between makefile and project + +2001-09-27 13:33 bouvigne + + * libmp3lame/libmp3lame.dsp: + + 3dnow fft assembly + +2001-09-21 04:50 markt + + * testcase.mp3, frontend/main.c: + + updated testcases (lowpass added to Info tag?) + +2001-09-21 04:03 markt + + * frontend/main.c: + + disabled CPU affinity code. + should only be in a #ifdef NT-system, but I dont know what + the ifdef should be. + +2001-09-20 08:38 bouvigne + + * libmp3lame/libmp3lame.dsp, mpglib/mpglib.dsp: + + corrected dsp files for VC++. Should work also under VC5, but not tested. Please report success/error + +2001-09-20 07:15 bouvigne + + * libmp3lame/: VbrTag.c, lame.c: + + default lowpass stored in info tag + +2001-09-19 14:32 markt + + * testcase.mp3: + + updated testcase.mp3 + +2001-09-18 13:37 aleidinger + + * libmp3lame/util.c: + + Fix memory hole (allocation from psymodel_init()). + Found by: Michael Fink <finkm@asamnet.de> + +2001-09-17 23:54 markt + + * libmp3lame/: VbrTag.c, util.c: + + moved a 1M array from stack to heap in VbrTag.c + + Some OS, when launching LAME on a seperate thread, + allocate a tine (128K?) stack. moving this to the heap + is an ugly solution (requires a malloc() and free()) + but lets see if it fixes the reported segfaults. + +2001-09-17 21:17 markt + + * frontend/main.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/lame.c, libmp3lame/util.c: + + more code related to putting encoder padding into VBR tag + +2001-09-17 20:05 markt + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/encoder.h, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/set_get.c: + + added new call to API, + lame_get_encoder_padding() + which returns the amount of padding appended to the input + during encoding. + +2001-09-17 19:15 markt + + * libmp3lame/util.c: + + moved MSVC cpu affinity code to the top of disable_FPE() + +2001-09-15 09:57 aleidinger + + * configure: + + regen + +2001-09-15 09:49 aleidinger + + * configure.in: + + Bugfix for libffm (Alpha architecture). + Submitted by: Simon Burge <simonb@wasabisystems.com> + +2001-09-14 17:37 markt + + * HACKING, README: + + added a note about LAME being threadsave to the HACKING file. + +2001-09-14 17:18 markt + + * libmp3lame/util.c: + + put Todd Richmond's EAC/lame SMP fix in util.c, + with all the messy code for setting floating point exceptions. + I put this in the + #if defined(_MSC_VER) + block, so it should only affect people using MSVC. + +2001-09-11 07:47 potsticker + + * libmp3lame/VbrTag.c: + + Changed id string from 'Xing' to 'Info' for CBR files only + +2001-09-08 18:39 potsticker + + * libmp3lame/VbrTag.h, frontend/main.c: + + Don't write Lame Tag status message if --quiet + +2001-09-08 18:35 potsticker + + * libmp3lame/VbrTag.c: + + Don't write Lame Tag status message if --quiet + +2001-09-08 18:27 potsticker + + * libmp3lame/: VbrTag.c, VbrTag.h: + + Don't write Lame Tag status message if --quiet + +2001-09-07 23:42 potsticker + + * libmp3lame/VbrTag.c, libmp3lame/lame.c, frontend/parse.c: + + Write Lame Tag for all files (unless -t switch used) + +2001-09-04 00:06 potsticker + + * libmp3lame/VbrTag.c: + + Implemented most of Lame Tag rev 0 (but no 'replay gain' yet) + +2001-09-03 23:45 potsticker + + * libmp3lame/: VbrTag.c, VbrTag.h: + + Implemented most of Lame Tag rev 0 (but no 'replay gain' yet) + +2001-09-03 23:43 potsticker + + * libmp3lame/id3tag.h: + + Moved some macro definitions into id3tag.h (referenced in VbrTag.c) + +2001-09-03 20:56 robert + + * libmp3lame/id3tag.c: + + cr/lf patch + +2001-09-02 20:07 potsticker + + * libmp3lame/: id3tag.h, id3tag.c: + + Moved some macro definitions into id3tag.h (referenced in VbrTag.c) + +2001-08-31 18:41 markt + + * libmp3lame/util.c: + + lowered tolerence in an assert() in the lowpass filtering + routine. + +2001-08-31 08:17 bouvigne + + * libmp3lame/: VbrTag.c, util.h: + + I hope it's fixed now + +2001-08-29 20:08 bouvigne + + * Dll/BladeMP3EncDLL.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/VbrTag.h, libmp3lame/version.c: + + first implementation of lame Xvbr tag from J Dee + +2001-08-28 18:51 markt + + * API, HACKING, frontend/parse.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c: + + msfix changes. forgot to commit them yesterday + +2001-08-28 17:06 aleidinger + + * Makefile.unix: + + OS/2 mods from slaughter@malaconet.org (in principle, I had to apply them by hand and modified it a little bit) + +2001-08-28 15:41 aleidinger + + * configure: + + oops... wrong gtk-config + +2001-08-27 21:06 aleidinger + + * configure: + + regen (+update to automake 1.5) + +2001-08-27 21:04 aleidinger + + * aclocal.m4, Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.am, mpglib/Makefile.in: + + update to automake 1.5 + +2001-08-27 21:04 aleidinger + + * Makefile.unix: + + USE_FFT3DN died some time ago + +2001-08-27 21:03 aleidinger + + * Makefile.am: + + fixes for the update and diff target if you build in a seperate directory + +2001-08-27 21:01 aleidinger + + * frontend/main.c: + + Bump MAX_NOGAP from 20 to 40, I wanted to make 34 gapless mp3s. + +2001-08-27 20:59 aleidinger + + * Makefile.am.global, config.guess, config.sub, depcomp, missing, + mkinstalldirs, misc/depcomp, mpglib/depcomp: + + update to automake 1.5 + +2001-08-27 20:56 aleidinger + + * DEFINES, Makefile.B32, Makefile.MSVC, Dll/MP3EncDll.dsp, + libmp3lame/libmp3lame.dsp, libmp3lame/vorbis_interface.c: + + remove USE_FFT3DN, this define died some time ago + +2001-08-27 20:55 aleidinger + + * configure.in: + + remove --malign-double completely + +2001-08-27 20:52 aleidinger + + * libmp3lame/fft.c: + + USE_FFT3DN -> HAVE_NASM + +2001-08-27 20:50 aleidinger + + * lame.spec.in: + + - Build and include docs and libs correctly + - Build extra programs + + Submitted by: Markus Linnala <maage@cs.tut.fi> + + Note: + I didn't have a rpm based system, if this breaks feel free + to revert my commit, I'm at a "commit what isn't obviously + broken and seems to be a good idea" run at the moment. + +2001-08-27 20:49 aleidinger + + * doc/html/switchs.html, frontend/parse.c, USAGE: + + - OS/2 priority control + Submitted by: "DoC" <slaughter@malaconet.org> (with minor changes by me) + +2001-08-27 16:40 markt + + * doc/man/lame.1, misc/Lame.vbs: + + typo in man page fixed, new Lame.vbs from + "Ralf Kempkens" <Ralf.Kempkens@epost.de> + +2001-08-26 19:01 markt + + * configure.in: + + removed -malign-double, based on Klemm's email. + +2001-08-26 18:59 markt + + * configure.in: + + some missing quotes for AmigaOS section of configure.in, + submitted by Fredrik Mellstrom <traal@altavista.net> + + (I cant beieve there are still people out there using + an amiga :-) + +2001-08-26 18:38 markt + + * mpglib/: interface.c, mpglib.h: + + replaced "look_for_xing" variable with more descriptive name + "sync_bitstream". + +2001-08-21 19:48 bouvigne + + * frontend/parse.c: + + switching --vbr-new to mtrh + +2001-08-21 08:57 viral + + * debian/: changelog, control, lame-dev.docs, lame.docs, rules: + + Debian packaging modifications. + +2001-08-20 22:26 afaber + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Updated new R3Mix settings, use lame get/set function and version info + so I got rid of the version.h and lame_global_flag.h include files + +2001-08-20 20:54 robert + + * doc/html/contributors.html: + + adding Darin Morrison (author of dm presets) + +2001-08-16 08:21 robert + + * misc/abx.c: + + update of abx.c by Frank Klemm + +2001-08-15 21:58 robert + + * frontend/parse.c, libmp3lame/lame.c: + + making -Z a truely toggling switch + reordering the longhelp options list + dropping --extrahelp + +2001-08-15 00:37 robert + + * libmp3lame/lame.c: + + dropped a nagging message for --vbr-mtrh (nspsytune tuned for ...) + +2001-08-15 00:12 robert + + * frontend/parse.c, libmp3lame/util.c: + + update for --r3mix by Roel + +2001-08-14 21:46 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize_pvt.c, + libmp3lame/util.h, libmp3lame/version.h: + + some good presets tuned by Dibrom after die hard listening tests + --dm-preset {standard,xtreme,insane,metal} + and a switch to modify the --ns-treble setting for sfb21 by + --ns-sfb21 x + +2001-08-08 10:52 aleidinger + + * configure: + + regen + +2001-08-08 10:51 aleidinger + + * configure.in: + + - remove optimizations which get already switched on by -O2 or better + - new experimental optimizations + - bump version to 3.90 + +2001-08-08 10:50 aleidinger + + * configMS.h: + + bump version to 3.90 + +2001-08-07 20:41 afaber + + * libmp3lame/libmp3lame.dsp: + + Added NASM release build option + +2001-08-02 18:42 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, + MP3EncDll.dsp: + + Added NASM build option, added Very High Quality option + +2001-08-01 21:45 robert + + * frontend/parse.c, libmp3lame/lame.c, + libmp3lame/lame_global_flags.h, libmp3lame/quantize_pvt.c, + libmp3lame/set_get.c, libmp3lame/version.h: + + BUG fix in "on_pe", was allocating often more than the absolute limit of 4095 bits per granule + attention: testcases are most likely broken now! + +2001-07-26 23:05 robert + + * libmp3lame/: lame.c, psymodel.c, vbrquantize.c, version.h: + + VBR mtrh related, bring --remix near to --r3mix bitrate wise + +2001-07-25 20:19 robert + + * frontend/main.c: + + Michel SUCH, wildcard expansion for nogap using the OS/2 shell + +2001-07-24 12:13 aleidinger + + * configure: + + regen + +2001-07-24 12:12 aleidinger + + * configure.in: + + gcc 3.0 fix from Daniel T. Chen + +2001-07-23 08:11 aleidinger + + * aclocal.m4, configure: + + update to automake 1.4-p5 + +2001-07-23 08:08 aleidinger + + * Makefile.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in, config.guess, config.sub: + + update to automake 1.4-p5 + +2001-07-23 08:05 aleidinger + + * Makefile.am.global: + + update to automake 1.4-p5 + +2001-07-22 19:24 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + small fixes + +2001-07-22 06:37 jd- + + * libmp3lame/encoder.c: + + Pushed the maximum auto-level adjustment of the ATH from 20 dB to 32 dB + +2001-07-20 23:56 robert + + * libmp3lame/quantize.c: + + small speed up for --vbr-old + +2001-07-20 01:01 robert + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, vbrquantize.c, + version.h: + + 1) defaulted the old -Y code for --vbr-old + 2) new behaviour of -Y: turns off sfb21 noise shaping (VBR) + 3) some more tunings for --vbr-old + +2001-07-19 11:36 aleidinger + + * configure: + + regen + +2001-07-19 11:35 aleidinger + + * configure.in: + + - removed useless (because already handled by Cygwin) MS-DOS case + - bug fixes for alpha*-dec-osf*, *sgi-irix* and sparc*-sunos4* + - print a "please contact us" message for sparc*-sunos4* and *beos + (theses parts of configure.in are perhaps not neccessary) + +2001-07-18 20:16 robert + + * frontend/parse.c, libmp3lame/vbrquantize.c: + + vbr-mtrh related: encode sfb21, may bloat on heavy metal music + +2001-07-18 20:14 robert + + * misc/abx.c: + + update by Frank + +2001-07-16 19:35 robert + + * Dll/BladeMP3EncDLL.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/lame_global_flags.h, + libmp3lame/psymodel.c, libmp3lame/set_get.c, libmp3lame/util.h, + libmp3lame/version.h: + + adding a new switch --allshort + this one forces LAME to use short blocks on every granule + useful for testing the short block masking abilities + +2001-07-13 22:37 robert + + * libmp3lame/: psymodel.c, quantize.c, util.h, version.h: + + first try to fix the short block threshold calculation BUG + this patch tries to resolve the shortcommings for the short block + threshold calculation using VBR. Applying this patch for CBR/ABR + would break the testcases. It should not affect the vanilla --nspsy... + too, maybe later. + +2001-07-07 19:54 bouvigne + + * libmp3lame/reservoir.c: + + maxmp3buf was beeing ignored + +2001-07-05 21:25 robert + + * libmp3lame/quantize.c: + + fixing the assertion failures mentioned by Albert Faber + +2001-07-05 15:56 markt + + * configure: + + regenerated configure + +2001-07-05 15:55 markt + + * configure.in: + + updated gcc 2.96 check to use -O instead of -O1 + +2001-07-05 15:55 markt + + * configure: + + [no log message] + +2001-07-05 15:54 markt + + * configure.in: + + gcc 2.96 check + +2001-07-05 15:53 markt + + * libmp3lame/version.h: + + updated repository to 3.90alpha + +2001-07-05 15:35 markt + + * doc/html/history.html: + + updateded history file from web page cvs repository + +2001-07-05 15:32 markt + + * ChangeLog: + + update + +2001-07-05 15:27 markt + + * libmp3lame/version.h: + + updated to 3.89beta + +2001-07-02 21:45 robert + + * libmp3lame/quantize.c: + + bug fix for --nspsytune + minimum bits allocated was too low, resulting in assertion failures + +2001-07-02 21:08 robert + + * libmp3lame/lame.c: + + changing --vbr-new noise measuring back to its usual one + +2001-07-01 20:36 markt + + * libmp3lame/psymodel.c: + + unbreak CBR testcases. + +2001-07-01 20:04 markt + + * frontend/: get_audio.c, main.h, parse.c: + + patch from Nick Duffek <nsd@bosbc.com> + for signed/unsigned and bitwidth options. + +2001-07-01 16:48 robert + + * libmp3lame/lame.c: + + defaulting --vbr-mtrh to -q2 = -h + +2001-07-01 13:11 robert + + * libmp3lame/lame.c: + + allow --vbr-{old,new} to select between different ATH autoadjust types too + +2001-07-01 11:50 robert + + * libmp3lame/: lame.c, set_get.c: + + nspsytune related: + now it is possible to turn the scalefac_feature off again giving + --nspsytune -Z + the change was necessary, because of the hard coded -Z + +2001-07-01 05:24 jd- + + * libmp3lame/: encoder.c, lame.c, psymodel.c, util.h: + + Restructured ATH auto-leveling code to fix bug for "--adapt-thres-type 1"; + relaxed tuning for "--adapt-thres-type 2" for compromise with "--athtype 3" + (the previous bit rate is still available with "--adapt-thres-level -1.25") + +2001-06-30 16:45 robert + + * Makefile.MSVC: + + fix for compiling mp3x on windows using Makefile.MSVC + +2001-06-30 16:40 robert + + * frontend/parse.c: + + fix for compiling mp3x on windows using Makefile.MSVC + +2001-06-30 00:26 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/util.h, libmp3lame/vbrquantize.c: + + 2 new modes for --vbr-mtrh available by different -q n selections: + -q0 truely max noise + -q1 almost max noise + +2001-06-29 20:58 robert + + * libmp3lame/set_get.c: + + revive --nssafejoint --ns-{alto,treble,bass} + lame_set_exp_nspsytune is *not an on/off switch* + +2001-06-29 15:23 markt + + * configure, configure.in, libmp3lame/lame.c: + + patch for configure.in, replaced a bash specific loop, + from Oswald Buddenhagen <ob6@inf.tu-dresden.de> + +2001-06-27 15:47 aleidinger + + * configure: + + regen + +2001-06-27 15:46 aleidinger + + * configure.in: + + some hardware specific optimization options for gcc + +2001-06-27 14:53 aleidinger + + * libmp3lame/i386/Makefile.in: + + regen + +2001-06-27 14:53 aleidinger + + * libmp3lame/i386/Makefile.am: + + this is nasty, I want native nasm support in libtool, at least it works for me (sort of) + +2001-06-27 14:11 aleidinger + + * libmp3lame/: Makefile.in, i386/Makefile.in: + + regen + +2001-06-27 14:11 aleidinger + + * libmp3lame/: Makefile.am, i386/Makefile.am: + + go back to let libtool compile liblameasmroutines, the static case was broken, now the libtool v1.4 case may be broken + +2001-06-26 11:38 aleidinger + + * configure: + + regen + +2001-06-26 11:36 aleidinger + + * configure.in: + + make the use of nasm a configure option + +2001-06-25 02:14 cisc + + * frontend/main.c: + + Include portableio.h for the WriteBytes() and WriteBytesSwapped() functions. + +2001-06-24 21:01 robert + + * lame.bat: + + some comments updated + +2001-06-24 16:47 robert + + * doc/html/contributors.html, libmp3lame/version.h: + + adding two more contributors + +2001-06-24 15:58 robert + + * Makefile.MSVC: + + FLOAT8=float for IC + +2001-06-24 15:57 robert + + * Makefile.B32: + + let it work again + +2001-06-24 02:04 robert + + * libmp3lame/: quantize.c, quantize.h, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + BUG fix in inc_subblock gain, was amplifying at the wrong place + this fix may break the testcases + some unused parameters removed + +2001-06-23 18:26 robert + + * Dll/MP3EncDll.dsp: + + patch for DLL Project file by Dmitry + +2001-06-23 17:56 robert + + * frontend/lametime.c, frontend/parse.c, mpglib/common.c, + Makefile.MSVC: + + some fixes needed by the Borland Compiler BCC, first attempt to support BCC with Makefile.MSVC, DLL not supported yet, MP1 MP2 reencoding does not work with BCCcd lame (why?) + +2001-06-23 12:19 robert + + * libmp3lame/quantize_pvt.c: + + fix letting Borland C++ compiler getting thru' again, Makefile.B32 is *not uptodate* + +2001-06-23 12:15 robert + + * frontend/get_audio.c: + + BUG fix for mp1 and mp2 input, fixes problem introduced in Revision 1.63 + +2001-06-22 08:55 aleidinger + + * ChangeLog: + + update changelog + +2001-06-22 08:49 aleidinger + + * Makefile.am: + + regen + +2001-06-22 08:48 aleidinger + + * Makefile.in: + + we have a test subdir in cvs, force the test target to be out of date at every invocation of make + +2001-06-21 20:40 bouvigne + + * libmp3lame/reservoir.c: + + change of the max frame size + +2001-06-19 04:46 markt + + * misc/: Lame.vbs, lameGUI.html: + + updates from "Ralf Kempkens" <Ralf.Kempkens@epost.de> + +2001-06-18 18:51 markt + + * TODO, frontend/get_audio.c, frontend/get_audio.h, + frontend/main.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/set_get.c, mpglib/interface.c, mpglib/mpglib.h: + + added two new functions to return number of PCM samples buffererd + but not encoded, and the number of bytes of mp3 data buffered but + not output. also added some comments to mpglib/interface.c to + make it easier to tell it to look for Xing headers in the middle + of a bitstream. + +2001-06-16 00:40 robert + + * Makefile.MSVC, Makefile.unix: + + CPU feature detection for fft routines + +2001-06-16 00:39 robert + + * libmp3lame/: fft.c, util.h: + + CPU feature autodetection for fft routines + +2001-06-15 22:23 markt + + * TODO, frontend/main.c, include/lame.h, libmp3lame/lame.c: + + Robert's fix to init histgram data with --nogap. + + lame_reinit_bitstream() renamed lame_init_bitstream(), and + it is called by lame_init_params(). It can also be called + after a call to lame_encode_flush_nogap(). + +2001-06-15 21:25 markt + + * TODO, frontend/main.c, include/lame.h, libmp3lame/lame.c: + + some fixes for VBR tags with --nogap option. + +2001-06-14 23:09 robert + + * frontend/parse.c: + + fixed stdin + +2001-06-14 00:58 robert + + * libmp3lame/version.h: + + bumped version to alpha 7 + +2001-06-14 00:43 robert + + * libmp3lame/: lame.c, psymodel.c: + + added JD's loudness approximation to Naoki's duplicated psy routine + as I defaulted JD's adapt stuff I was under the impression that he + added his code to both ones, so... + +2001-06-14 00:19 markt + + * frontend/main.c: + + fix for nogap truncation call. When processing the last + of the .wav files, we need to call lame_encode_flush() + instead of lame_encode_flush_nogap(). + +2001-06-13 22:46 robert + + * frontend/parse.c: + + LFN support for Win32: realized that it would be a good idea to release the search file handle after searching the filename + +2001-06-13 08:44 aleidinger + + * Makefile.DJGPP: + + nasm fix + +2001-06-12 21:58 robert + + * frontend/parse.c: + + long file name support for Win32 systems + works under Win95 using Intel compiler 4.5 / MSVC 4.2 + not tested under NT, and not much tested anyway ;-) + +2001-06-12 21:03 robert + + * Makefile.unix: + + seems to be forgotten by the last committ + +2001-06-12 20:32 markt + + * libmp3lame/bitstream.c: + + old crc code removed from bitstream.c. + I had added this in when looking for the xing/crc bug + +2001-06-12 12:47 aleidinger + + * frontend/lametime.c: + + fix cygwin build, sort some includes + +2001-06-12 12:45 aleidinger + + * libmp3lame/: Makefile.in, i386/Makefile.in: + + regen + +2001-06-12 12:45 aleidinger + + * libmp3lame/: Makefile.am, i386/Makefile.am: + + do not use libtool for the asm lib, libtool did not know about nasm + +2001-06-12 12:42 aleidinger + + * configure, frontend/Makefile.in: + + regen + +2001-06-12 12:42 aleidinger + + * configure.in: + + - enable shared lib + - disable asm routines + - fix build of asm routines in the win32 case + +2001-06-12 12:41 aleidinger + + * frontend/Makefile.am: + + statically link libmp3lame to the frondends + +2001-06-12 05:27 markt + + * libmp3lame/lame.c: + + removed CRC error message + +2001-06-12 05:27 markt + + * libmp3lame/VbrTag.c: + + fix for Xing/CRC problem. + + Xing toc data must start directly after sideinfo data, assuming + no CRC. If CRC is set, then the Xing toc data must *still* start + in the same location (since original Xing demo code does not + check for CRC and modify the toc offset). + +2001-06-12 04:51 markt + + * libmp3lame/: bitstream.c, lame.c: + + put old CRC routine back in (but disabled) + +2001-06-12 03:35 markt + + * Dll/BladeMP3EncDLL.c: + + added some comments about the DLL's non-standard use of libmp3lame.a + +2001-06-12 03:31 markt + + * libmp3lame/Makefile.am: + + Robert created lame_global_flags.h, + so I'm adding it to Makefile.am, in the "noinst" section. + +2001-06-12 00:48 robert + + * Dll/BladeMP3EncDLL.c, libmp3lame/lame_global_flags.h, + libmp3lame/quantize.c, libmp3lame/util.h: + + - fixed Makefile.unix to let mp3rtp compile again (does it still work?) + - had to move lame_global_flags structure into a file of its own, + because the Dll compiled but did not link anymore. + Now it works again, tested on Win95 using Makefile.MSVC + +2001-06-11 23:42 markt + + * Dll/BladeMP3EncDLL.c, include/lame.h, libmp3lame/set_get.c, + libmp3lame/util.h: + + committed Robert's patch. lame_global_flags is gone :-) + +2001-06-11 22:07 robert + + * frontend/main.c: + + some more new API things + +2001-06-11 18:49 markt + + * frontend/: gtkanal.c, parse.c: + + converted rest of frontend code over to "new api" + +2001-06-11 16:35 markt + + * frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, + libmp3lame/mpglib_interface.c, mpglib/interface.c: + + Tracked down a bug in lame_decoder. It was not correctly + flushing the internal mpglib buffers when it hit EOF. + + Problem was most severe with low bitrate example. It the frame size + was 32 bytes, only the first 1/3 of the file would be decoded + and the reamining 2/3 of the entire file would be buffered + inside mpglib. + +2001-06-10 20:35 robert + + * Dll/BladeMP3EncDLL.c, include/lame.h: + + making the old VBR default in preparation for the next release + +2001-06-10 19:19 markt + + * API, USAGE, misc/Lame.vbs, misc/lameGUI.html: + + added new version of Lame.vbs from "Ralf Kempkens" <Ralf.Kempkens@epost.de> + including a GUI/HTML interface. + +2001-06-08 21:40 markt + + * frontend/: get_audio.c, gtkanal.c, main.c, main.h: + + updated some comments related to restructering main.c + for the --nogap option + +2001-06-08 21:29 markt + + * API, TODO, frontend/get_audio.c, frontend/gtkanal.c, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/parse.h, frontend/timestatus.c, + include/lame.h, libmp3lame/lame.c, libmp3lame/set_get.c: + + preliminary --nogap option added. + + --nogap file1 file2 file3 + + and it produces file1.mp3 file2.mp3 file3.mp3 + + problems: no id3tags, no vbr tags. + +2001-06-08 18:59 markt + + * test/lametest.py: + + fix so lametest.py doesn't crash if lame does not create an + output file. + +2001-06-08 00:00 markt + + * frontend/main.c, libmp3lame/bitstream.c: + + fixed bug with lame_encode_flush_nogap routine + +2001-06-07 22:12 robert + + * DEFINES, TODO: + + [no log message] + +2001-06-07 22:06 robert + + * frontend/parse.c, libmp3lame/encoder.c: + + --ath-adjust 1 (Gaby's original code) was disabled, any reasons for that JD? + +2001-06-07 19:14 markt + + * HACKING, frontend/get_audio.c, frontend/gtkanal.c, + frontend/parse.c, frontend/timestatus.c, libmp3lame/lame.c: + + started updating frontend code to use the new API. + +2001-06-07 14:02 aleidinger + + * libmp3lame/fft.c: + + unbreak (at least it compiles), more work needed + +2001-06-07 10:11 jd- + + * libmp3lame/encoder.c: + + Allow ATH auto-adjust code to begin at the minimum value on the leading frame + +2001-06-07 08:40 jd- + + * libmp3lame/encoder.c: + + Restored some ATH auto-adjust indentation and comments (altered since 3.88 + in a code clean up) + +2001-06-07 06:06 pgubanov + + * libmp3lame/fft.c: + + Choose asm-optimized FHT version if ARCH_X86 defined in fft.c + +2001-06-05 22:13 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Added R3Mix quality setting + +2001-06-05 19:19 aleidinger + + * doc/html/history.html: + + sync my entry with the one at the webpages + +2001-06-05 00:39 markt + + * INSTALL, TODO: + + added note about mpglib i-stereo bug in TODO list. + fixed typo in INSTALL file + +2001-06-04 23:57 markt + + * TODO, libmp3lame/reservoir.c: + + documented some variables in reservoir.c. + + Current status is: + + maxframesize = no restrictions + + if strict_ISO is defined, we use Gaby's less restrictive + interpretation of the standard. + + see TODO version 1.30 for a user who has a hardware player which + cannot handle 320kbps frames if the bit reservoir is used. + + I guess the final verdict is tough luck :-) + +2001-06-04 23:29 markt + + * API, HACKING, frontend/parse.c, libmp3lame/lame.c: + + + print error message and fail if user selects error_protection + (since this is currently broken) + + added some comments to HACKING on how to add a new option. + + updated API to reflect that all lame_set/get functions are now + working. + +2001-06-04 23:10 markt + + * include/lame.h, libmp3lame/lame.c: + + updated comments about lame_encode_flush_nogap() + +2001-06-04 23:08 markt + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c: + + added lame_encode_flush_nogap(). + + This routine will flush all internal mp3 buffers, and pad the + last frame with ancillary data so it is a complete mp3 frame. + + It will then set ResvSize to 0, so we can continue encoding. + + after a call to lame_encode_flush_nogap(), if we close + the mp3 file and open a new one for the future data, + then the two mp3 files should play back 'gapless' + if they are first concatenated together. + +2001-06-04 19:59 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/version.h: + + tweaks to VBR + +2001-06-04 10:02 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Extended interface with VBR method selection + +2001-06-04 10:01 afaber + + * mpglib/layer3.c: + + Removed exit call(s) in error conditions, since these errors seems to be good recoverable + +2001-06-04 01:54 robert + + * libmp3lame/: lame.c, psymodel.c, quantize.c, util.h: + + small tweaks to the VBR codes + +2001-06-02 20:22 robert + + * libmp3lame/: lame.c, quantize.c, util.h, version.h: + + started different bit-pressure strategies (VBR) + +2001-06-02 15:26 aleidinger + + * configure: + + regen + +2001-06-02 15:25 aleidinger + + * configure.in: + + force cygwin users to use "CC=gcc ./configure" + +2001-06-01 19:40 glessard + + * frontend/get_audio.c: + + Added support for non-compressed AIFF-C files in parse_aiff_header(). + +2001-05-30 01:38 markt + + * configure, configure.in: + + removed -pedantic gcc option. + From the gcc man page: "There is no reason to use this + option; it exists only to satisfy pedants". + + And there is a reason not to use it: It causes people to + send me email asking if all the warning messages about c++ comments are ok. + +2001-05-29 22:14 robert + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/set_get.c: + + quick fix for a typo that turned off auto adjust code by accident, sorry + +2001-05-27 18:58 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/version.h: + + made JD's ATH adapt stuff default for --vbr-mtrh + some typings + changed bitpressure strategy for VBR a bit + +2001-05-26 21:31 jd- + + * libmp3lame/util.c: + + use more digestible code in ATHformula_jd for a pre-release compiler bundled + with a popular Linux distribution + +2001-05-26 16:17 robert + + * libmp3lame/lame.c: + + let the user select -qx for --vbr-mtrh, just to avoid useless e-mails + +2001-05-24 22:25 robert + + * libmp3lame/: lame.c, quantize_pvt.c: + + just 5 minutes to add some more on the --verbose printing side + +2001-05-21 18:55 bouvigne + + * doc/html/history.html: + + history + +2001-05-21 18:19 bouvigne + + * libmp3lame/lame.c: + + update of the default lowpass value. Will probably break some testcases + +2001-05-20 20:45 robert + + * libmp3lame/: encoder.c, lame.c, util.h: + + some more --verbose output + +2001-05-19 16:16 robert + + * libmp3lame/psymodel.c: + + typo fixed + +2001-05-19 16:13 robert + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + frontend/timestatus.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/psymodel.c, libmp3lame/util.h: + + starting a very verbose print function about all internal + settings, aiming more transparency for the experienced users + +2001-05-15 01:24 robert + + * libmp3lame/: psymodel.c, quantize_pvt.c, vbrquantize.c: + + some tunings + still problems with fatboy.wav and ns.wav + +2001-05-13 20:59 bouvigne + + * libmp3lame/util.c: + + comments in the ath functions + +2001-05-13 11:33 robert + + * libmp3lame/: lame.c, psymodel.c, util.c, util.h: + + fixing tonality problem for --vbr-mtrh + +2001-05-11 23:33 robert + + * libmp3lame/quantize_pvt.c: + + trying to point out the real difference in l3xmin calculation with nspsytune and without it + +2001-05-11 22:14 robert + + * libmp3lame/lame.c: + + nspsytune & newer vbr + +2001-05-11 01:30 robert + + * frontend/get_audio.c, frontend/main.h, include/lame.h, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/version.h, test/VBR.op: + + compile fixes for Intel Compiler, dropped sfb21 early stopping for vbr-old (found differences) + +2001-05-10 19:01 aleidinger + + * include/lame.h, libmp3lame/set_get.c: + + - Make the last few set/get functions functional. + (TODO: use them in the frontend). + - Converted padding_type to an enum. + - Correct some typos. + - Adjust some lines to conform to the style of the majority of the file. + + TODO: + - Search for XXX and do appropriate actions. + - Search for typos (because of alot of cut&paste programming). + +2001-05-08 15:00 bouvigne + + * frontend/parse.c, libmp3lame/util.c: + + update of --r3mix + +2001-05-06 15:11 robert + + * libmp3lame/: lame.c, quantize.c, vbrquantize.c: + + some desperate values for the fast mtrh VBR mode + +2001-05-04 01:07 jd- + + * libmp3lame/: tools.h, util.c: + + Added "--athtype 5" to better represent higher frequencies (14 - 19 kHz). + Included supporting functions for quadratic interpolation. + +2001-05-03 20:13 robert + + * libmp3lame/: lame.c, quantize.c, util.c, util.h, vbrquantize.c: + + some VBR-codeclean-up + +2001-05-02 21:02 robert + + * misc/lame4dos.bat: + + patch by Alexander Stumpf: + - now works both with drag & drop (SFN) and from the 4DOS-Commandline (LFN) + - Using wildcards when prozessing from mp3 to mp3 caused a loop - fixed + - removed the mp3-extention test since LAME recognizes the input file fomat + correctly for several versions now (i.e. no --mp3input neccessary anymore) + +2001-05-01 22:55 robert + + * libmp3lame/version.h: + + bumped version number + +2001-05-01 22:18 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + new -q2 mode for --vbr-mtrh + +2001-05-01 20:37 bouvigne + + * libmp3lame/reservoir.c: + + change of max frame size + +2001-04-28 15:37 robert + + * libmp3lame/: encoder.c, quantize_pvt.c, util.c, vbrquantize.c: + + --vbr-mtrh uses now -Y by default, some tweaks + +2001-04-27 23:19 robert + + * libmp3lame/: psymodel.c, quantize_pvt.c, util.c, util.h: + + --experimentalY selects a different ATH adjustment + - keeps original noise floor + - affects high freqs more than low ones + +2001-04-26 23:06 cisc + + * config.guess, config.sub: + + Added MorphOS recognition to configure script. + +2001-04-26 04:38 markt + + * README.B32, TODO: + + removed mmx notes from README.B32 + +2001-04-25 16:21 aleidinger + + * configure, libmp3lame/i386/Makefile.in: + + regen + +2001-04-25 16:20 aleidinger + + * configure.in: + + bugfix for gcc version detection + +2001-04-25 16:19 aleidinger + + * libmp3lame/i386/Makefile.am: + + bugfix for non x86 architectures with installed nasm, tested by Karl Pauls <kpauls@eecs.wsu.edu> on Darwin + +2001-04-25 06:59 markt + + * TODO, frontend/get_audio.c, frontend/main.h, frontend/parse.c, + include/lame.h, libmp3lame/set_get.c: + + removed 'disable_wave_header' variable from encoding library. + It is in the frontend code only. + +2001-04-24 01:38 markt + + * TODO, frontend/get_audio.c: + + added something to the TODO list. + + changed: + + "buffer[1]+i" code to "&buffer[1][i]" + + in get_audio.c. buffer[1]+i is clever, but it confused the + maintainer of EAC enough to cause him to submit it as a bug + report. + +2001-04-23 19:47 bouvigne + + * libmp3lame/: lame.c, util.c: + + [no log message] + +2001-04-22 22:57 bouvigne + + * libmp3lame/util.c: + + update of the ath functions + +2001-04-22 01:34 jd- + + * frontend/get_audio.c: + + Fixed trailing data bug introduced with the 24 bit input code + +2001-04-21 22:23 jd- + + * frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, + frontend/main.c, frontend/mp3rtp.c, include/lame.h, + libmp3lame/lame.c: + + Add 24-bit PCM waveform input capability (with or without libsndfile), + and glue code to preserve the functionality of routines that only handle + up to 16-bit data. The changes support both little and big endian + architectures. + +2001-04-17 20:04 afaber + + * libmp3lame/libmp3lame.dsp, Dll/BladeMP3EncDLL.c, + mpglib/mpglib.dsp, frontend/lame.dsp: + + Added MMX compile option + +2001-04-17 19:22 bouvigne + + * libmp3lame/util.c: + + auto adjusting ath shape for vbr on ath type 4 + +2001-04-16 21:26 bouvigne + + * libmp3lame/: encoder.c, lame.c, psymodel.c: + + wrapped a few things inside of ifdef HAVE_GTK + +2001-04-16 11:50 takehiro + + * libmp3lame/: psymodel.c, util.h: + + spread function is now packed into linear array. + it reduces memory assumption and improves cache efficienty. + +2001-04-16 08:27 takehiro + + * include/lame.h, libmp3lame/VbrTag.c: + + now try to calculate the CRC of VBR header. + +2001-04-16 07:58 takehiro + + * libmp3lame/: bitstream.c, bitstream.h: + + cleaned and improved CRC calculation method + +2001-04-13 15:13 aleidinger + + * libmp3lame/set_get.c: + + add some comments about converting int->enum + +2001-04-13 15:12 aleidinger + + * frontend/parse.c: + + use some of Marks set-functions, also without error checking (yet) + +2001-04-12 17:40 bouvigne + + * libmp3lame/: encoder.c, lame.c: + + [no log message] + +2001-04-08 07:52 takehiro + + * libmp3lame/: machine.h, quantize_pvt.c: + + portability enchancement(from sourceforge's LAME open discussion forum). + + quantize_pvt.c: changed 1e99 into FLOAT8_MAX + machine.h: defined FLOAT8_MAX + +2001-04-04 21:58 bouvigne + + * libmp3lame/lame.c: + + update of the lowpass values for vbr rh + +2001-04-04 18:11 bouvigne + + * libmp3lame/psymodel.c: + + update of -d for joint stereo + +2001-04-01 03:22 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/set_get.c, libmp3lame/util.h: + + added an --adapt-thres-level option to allow adding an offset (in dB) + to the point below which adaptive ATH level adjustment occurs + +2001-04-01 02:11 jd- + + * include/lame.h: + + added set/get functions to include/lame.h for option --adapt-thres-type + +2001-03-31 23:44 jd- + + * frontend/parse.c, libmp3lame/set_get.c: + + added set/get functions to libmp3lame/set_get.c for option + --adapt-thres-type, and used the set function in frontend + +2001-03-30 18:43 markt + + * testcase.mp3, frontend/get_audio.c, test/lametest.py: + + updated testcase.mp3 + removed some unused code from get_audio.c + +2001-03-30 17:16 markt + + * test/lametest.py: + + delete output mp3 file before running lame. + (before, if lame crashes and does not write any output, the + script would use the old output mp3 file, and if it hadn't changed, + all tests would pass.) + +2001-03-29 18:31 cisc + + * libmp3lame/: version.c, version.h: + + Moved inclusion of lame.h to version.h for lame_version_t in prototype. + +2001-03-27 12:26 jd- + + * libmp3lame/psymodel.c: + + added --adapt-thres-type 2 (auto-level adjustment of the ATH, + with a frequency-based loudness approximation). + +2001-03-27 12:04 jd- + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/util.h: + + added option, --adapt-thres-type 2 (auto-level adjustment of the ATH + with a frequency-based loudness approximation). + +2001-03-27 10:56 aleidinger + + * configure: + + regen (do not enable vorbis by default) + +2001-03-27 10:56 aleidinger + + * configure.in: + + do not enable vorbis by default + +2001-03-26 23:02 markt + + * libmp3lame/set_get.c: + + added code to more of the lame_set/lame_get functions- + but without any error checking :-( + + Only 47 more to go! + +2001-03-26 20:46 markt + + * TODO, libmp3lame/util.c: + + dont scale the input if scale=1.0. + +2001-03-26 18:38 markt + + * TODO: + + updated TODO list with some filtering stuff + +2001-03-26 17:42 markt + + * libmp3lame/encoder.c: + + another MPEG2 bug found by: "Jiri Hajek" <jirik@ucw.cz> + + This code: + + > int sum_pe_MS = pe_MS[0][0] + pe_MS[0][1] + pe_MS[1][0] + pe_MS[1][1]; + > int sum_pe_LR = pe [0][0] + pe [0][1] + pe [1][0] + pe [1][1]; + + does not work for MPEG2. now fixed. + +2001-03-26 16:05 aleidinger + + * configure: + + regen (version bump) + +2001-03-26 16:04 aleidinger + + * configure.in: + + Welcome to 3.89 + +2001-03-26 00:38 markt + + * frontend/brhist.c: + + bug in brhist_disp_total() + + for --freeformat bmode, br_frames = 0 (why?) + so sum / br_frames would segfault. + + if br_frames == 0 , routine now just returns without printing + anything. + +2001-03-26 00:12 markt + + * TODO: + + minor editing of TODO file + +2001-03-25 23:18 markt + + * libmp3lame/version.h: + + updated version to 3.89 alpha 1 + +2001-03-25 23:16 markt + + * libmp3lame/version.h: + + updated version to 3.88beta + +2001-03-25 23:14 markt + + * API, README, TODO, libmp3lame/lame.c, libmp3lame/libmp3lame.dsp: + + made ath type 2 the default. + updated test cases + added set_get.c to libmp3lame.dsp + +2001-03-25 21:37 shibatch + + * libmp3lame/psymodel.c: + + Fixed nspsytune. + +2001-03-25 18:43 afaber + + * Dll/BladeMP3EncDLL.def, Dll/MP3EncDll.dsp, + libmp3lame/bitstream.h, libmp3lame/encoder.h, + libmp3lame/psymodel.c, libmp3lame/tables.h: + + Removed the last remainings of KLEMM_43 in order to complet the Windows DLL compilation + +2001-03-20 00:42 markt + + * libmp3lame/util.c: + + added a few more minor comments to resampling code + +2001-03-20 00:28 markt + + * libmp3lame/util.c: + + removed some cruft from blackman() filtering routine + +2001-03-19 21:26 markt + + * frontend/get_audio.c, libmp3lame/util.c, test/lametest.py: + + + Tested fixed resampling code. It seemed to work. + Added a few comments. + + Also added documentation for "-w" for the usage function in lametest.py + +2001-03-18 14:31 aleidinger + + * libmp3lame/vorbis_interface.c: + + use the new MSGF API in Vorbis + +2001-03-18 14:25 aleidinger + + * libmp3lame/vorbis_interface.c, frontend/get_audio.c: + + use the new ERRORF API in Vorbis encoding (+fixes for needed API change to lame_decode_ogg_{initfile,fromfile}()) + +2001-03-15 19:40 markt + + * libmp3lame/util.c: + + Put in fix for resampling bug in fill_buffer_resample. + + Code assumed it would be fed at least BLACKSIZE samples. + For each input buffer, the code would save the last BLACKSIZE + samples for use for the next call to fill_buffer_resample. + + If the code recieves less than blacksize samples, it will + now shift in just as many new samples as are available into + the save buffer. + + Not tested :-( + +2001-03-14 14:38 aleidinger + + * Dll/BladeMP3EncDLL.c, dshow/Encoder.cpp, dshow/Mpegac.cpp, + dshow/PropPage_adv.cpp: + + regexp: MPG_MD_(.*) -> $1 + +2001-03-14 14:38 aleidinger + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.unix: + + add set_get.c to the build + +2001-03-14 10:57 aleidinger + + * Makefile.in: + + regen + +2001-03-14 10:56 aleidinger + + * Makefile.am: + + do not forget Makfile.am.global at "make dist" + +2001-03-14 10:49 aleidinger + + * ChangeLog: + + update + +2001-03-14 10:40 aleidinger + + * doc/html/Makefile.in, doc/man/Makefile.in, + libmp3lame/i386/Makefile.in: + + regen with automake 1.4d instead of 1.4 + +2001-03-13 06:15 markt + + * libmp3lame/util.c: + + added assert() to resampling code + +2001-03-12 20:58 markt + + * libmp3lame/psymodel.c: + + a few more comments added to psymodel.c + +2001-03-12 20:40 markt + + * libmp3lame/: psymodel.c, tables.c: + + removed ISO TABLE reading code from psymodel.c, + and ISO psy data from tables.c + +2001-03-12 20:31 markt + + * libmp3lame/psymodel.c: + + removed shortlived MINTHMM experiment + +2001-03-12 18:52 markt + + * USAGE, configure: + + updated USAGE. + ran configuer with --enable-maintainer-mode which seems to + have touched all this .in files, sorry about that... + +2001-03-12 07:26 markt + + * API, libmp3lame/vbrquantize.c: + + a few updates to API + +2001-03-12 04:38 markt + + * frontend/get_audio.c, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/encoder.c, + libmp3lame/encoder.h, libmp3lame/lame.c, libmp3lame/set_get.c: + + fixed a few compiler warnings and the assert in lame_get_mode(). + added NOT_SET value to MPEG_mode_e + +2001-03-11 11:25 aleidinger + + * DEFINES: + + - remove outdated entries + - add OLD_ATH_AUTO_ADJUST + +2001-03-11 11:24 aleidinger + + * Makefile.in: + + - regen from Makefile.am (testupdate target) + +2001-03-11 11:24 aleidinger + + * frontend/: depcomp, get_audio.c, gtkanal.c, main.c, mp3x.c, + parse.c, timestatus.c: + + *.c: + - use set/get functions + *** lame_set_quality(): should it check for <0 and >9 itself? (parse.c) + + depcomp: + - update (autotools) + +2001-03-11 11:23 aleidinger + + * libmp3lame/: depcomp, encoder.c, lame.c, psymodel.c, util.c, + util.h: + + libmp3lame/encoder.c: + - MPEG_mode (JOINT_STEREO) change (related to set/get functions change) + - J.D.s improvements to Gabriels ath auto adjust code (VBR) + - move ath auto adjust code into seperate function + + libmp3lame/lame.c: + - errorf/msgf/debugf changes + - MPEG_mode (JOINT_STEREO/...) change (related to set/get functions change) + - remove prototypes of set/get functions + + libmp3lame/psymodel.c: + - MPEG_mode (JOINT_STEREO/...) change (related to set/get functions change) + + libmp3lame/util.[ch]: + - new errorf/msgf/debugf implementation + + libmp3lame/depcomp: + - update (autotools) + +2001-03-11 11:22 aleidinger + + * include/lame.h: + + - set/get functions related cleanup + - errorf/msgf/debugf + +2001-03-11 11:21 aleidinger + + * libmp3lame/Makefile.in: + + regen + +2001-03-11 11:21 aleidinger + + * libmp3lame/Makefile.am: + + - add set_get.c + +2001-03-11 11:20 aleidinger + + * libmp3lame/set_get.c: + + - set and get functions for the gfp + +2001-03-10 19:15 markt + + * libmp3lame/encoder.c: + + a little more tuning of tot_energy for ATH adjust + +2001-03-10 19:06 markt + + * libmp3lame/encoder.c: + + modified ATH adjustment code to use tot_ener returned by psy model + and not the maximum of the PCM sample values. + + We need to replace this with JD's formula. We need to decide + if this is really worth while. My preference is to take the + most conservative ATH possible, but this seems to produce too + high bitrates for VBR modes. (this may no longer be true + not that masings are computed in all scalefactor bands) + +2001-03-10 18:33 markt + + * frontend/get_audio.c: + + added 127 also, on recommendation of JD, to 8bit -> 16bit + conversion routine + +2001-03-10 18:29 markt + + * frontend/get_audio.c: + + fix from "J.D." <jodaman@cegt201.bradley.edu> for + 8 bit input support. + +2001-03-09 17:56 markt + + * test/lametest.py: + + 'os.pathsep' changed to 'os.sep' + + For example, on unix: + + os.pathsep = ":" - the character that seperaters search paths in + the PATH environment variable + + os.sep = "/" - the charcter that seperates directories + +2001-03-07 12:32 aleidinger + + * test/lametest.py: + + - use OS independent path seperator + +2001-03-07 12:31 aleidinger + + * DEFINES: + + - NOTABELS is now the default + +2001-03-05 20:29 markt + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c: + + code (disabled) to use minimum value when going from partition + bands to scalefactor bands (instead of average value) + +2001-03-05 18:21 markt + + * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/quantize_pvt.c: + + Noise calculation: had to switch calculation of tot_noise and + over_noise back to being done in db units. Multiply (to save + the 22 log10() function calls) was overflowing. + + updated testcases to reflect changes + +2001-03-05 01:44 markt + + * testcase.mp3: + + updated testcase.mp3 for NOTABLES code + +2001-03-05 01:26 markt + + * libmp3lame/psymodel.c: + + NOTABLES enabled by default. + + Psycho acoustics computed in *all* scalefactor bands. + + cvs tag before this change: before_notables + cvs tag after this change: notables + +2001-03-05 01:25 markt + + * libmp3lame/psymodel.c: + + The last commit before NOTABLES becomes the default. + tagged with "before.notables" + +2001-03-04 20:03 markt + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h, util.h: + + More prep work for enabling NOTABLES. + Will now compute masking for all scalefactor bands + +2001-03-04 15:30 markt + + * testcase.mp3, libmp3lame/psymodel.c, libmp3lame/util.c: + + Finished proper normalization of spreading function. + + updated testcases + +2001-03-04 06:56 markt + + * libmp3lame/psymodel.c: + + more tweaking of s3 normalization + +2001-03-04 06:48 markt + + * libmp3lame/psymodel.c: + + spreading function moved into seperate routine, s3_func(). + s3 normalized so that: + + +inf + / + | s3 [ bark ] d(bark) = 1 + / + -inf + + which resulted in dividing the result by 0.66. + + This is the first step in fixing the long outstanding bug + mentioned by Takehiro: s3[i][j] is normalized improperly for + values of i near the partition band boundaries. For these values, + the computed 'norm' is much too small since a lot of the data is + missing, resulting in artificially increasing the spreading function + (and thus the masking) + + --nspsytune: s3_l function is used with a normalization of .5 + (instead of computing the norm). So I changed this to a .5*.66 + to compensate for the above change. + + Next step: + + 1. + s3[i][j] will be multiplied by the width (in barks) of the + j'th partition band (about .35). Once this is done, we will not need to + compute and divide by 'norm' later. + + 2. + Make NOTABLES the default + + 3. + compute psymodel all the way up to 22khz. + +2001-03-04 05:51 markt + + * API, libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + added prototypes to lame.c (but functions not yet written) + +2001-03-04 05:13 markt + + * include/lame.h: + + finished last of the prototypes + +2001-03-04 05:02 markt + + * frontend/get_audio.c: + + changed to: + + gfp->num_samples = data_length / (channels * ((bits_per_sample+7) / 8)); + + thanks J.D.! + +2001-03-04 00:20 markt + + * include/lame.h, libmp3lame/lame.c: + + added: + lame_encode_buffer_sample_t, which is called by the following functions + in the API: + + lame_encode_buffer (original, short int interface) + lame_encode_buffer_float + lame_encode_buffer_long + +2001-03-02 22:39 markt + + * frontend/get_audio.c, test/lametest.py: + + get_audio.c: fixed num_samples computation for case when + bits_per_sample < 8. (althouth this case is already trapped for + earlier) + + lametest.py: slight change to reference mp3 filename generation + so lametest.py can be run from another directory. + +2001-03-02 18:28 markt + + * Makefile.am, testcase.mp3, doc/html/Makefile.in, + doc/man/Makefile.in, frontend/get_audio.c, + libmp3lame/i386/Makefile.in: + + error message about non-PCM wave files from + "J.D." <jodaman@cegt201.bradley.edu> + + Added "make testupdate" to Makefile.am, which updates + the test file in the CVS repository + +2001-02-27 11:54 robert + + * include/lame.h, libmp3lame/lame.c: + + lame.h typo + lame.c fix for possibility of calling lame_init_parms twice + +2001-02-27 11:39 aleidinger + + * DEFINES: + + remove KLEMM_42 + +2001-02-27 11:38 aleidinger + + * configure, Makefile.in, frontend/Makefile.in, misc/Makefile.in: + + regen + +2001-02-27 11:37 aleidinger + + * frontend/Makefile.am, misc/Makefile.am: + + remove EXTRA_PROGRAMS on make clean + +2001-02-27 11:36 aleidinger + + * Makefile.am: + + remove testcase.new.mp3 on error + +2001-02-27 11:36 aleidinger + + * configure.in: + + display version of gcc + +2001-02-27 11:35 aleidinger + + * include/lame.h: + + fix typo in comment + +2001-02-27 11:33 aleidinger + + * libmp3lame/util.c: + + include machine/floatingpoint.h on FreeBSD + +2001-02-27 09:59 robert + + * libmp3lame/: VbrTag.c, bitstream.c, lame.c, quantize_pvt.h, + takehiro.c, util.c, util.h: + + VbrTag.c fixed gfp/gfc typo + lame.c made data flow analysis happier: there was a possible path to use channels before definition. Even though it would be an error following this path, but the compiler doesn't know it + util.hc message functions are not intended to change gfc?!? + takehiro.c fixed a warning + bitstream.c fixed a warning + +2001-02-27 06:14 markt + + * frontend/gtkanal.c, include/lame.h, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.h, + libmp3lame/takehiro.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + + Implmented Frank's excellent idea about error messages: + + gfc->errorf, gfc->msgf and gfc->debugf are all FILE *. + default is stderr. If you want to disable all internal library + messages, set these to NULL with lame_set_errorf(), lame_set_msgf() etc... + + For a GUI, you can set these to regular files, and then read + the files and display the messages in an pop up window. + + Maybe the default should be NULL? + +2001-02-27 05:17 markt + + * include/lame.h: + + plugging away at a few more prototypes + +2001-02-26 22:45 robert + + * frontend/parse.c, libmp3lame/util.c: + + little change to Roel's --r3mix setting, on request by Roel + +2001-02-26 19:08 markt + + * libmp3lame/VbrTag.c: + + non RH_SEEKTABLE code removed from VbrTag.c + +2001-02-26 18:57 markt + + * frontend/lametime.c: + + removed to //include lines + +2001-02-26 18:52 markt + + * frontend/: get_audio.c, lametime.c: + + + incomprehensible gobbledygook replaced by call to standard + 'stat' function for file size. + +2001-02-26 08:06 markt + + * include/lame.h: + + more prototypes added to lame.h + +2001-02-26 07:38 markt + + * USAGE, frontend/parse.c, libmp3lame/lame.c: + + useTemporal turned on by default + --notemp option added. + +2001-02-26 07:26 markt + + * include/lame.h: + + added more of the lame_get/lame_set prototypes to lame.h + + also added this: + + // I give up. Klemm has worn me down on this one... + typedef lame_global_flags lame_t; + +2001-02-26 06:34 markt + + * misc/Lame.vbs: + + lame.vbs changes submitted by "Paul Reedy" <ka5pmv@webzone.net> + +2001-02-25 22:47 markt + + * libmp3lame/vorbis_interface.c: + + removed a klemm_42 from vorbis_interface.c + +2001-02-25 22:47 markt + + * INSTALL, libmp3lame/lame.c, libmp3lame/vorbis_interface.c: + + klemm_42 enabled by default. + + This code uses a different formula to choose the lowpass + filter. It takes into account stereo vs. jstereo + (jstereo gets 25% more bandwidth). This has the effect + of stereo 128kbps using a 14khz lowpass filter, which some + people may not like. + +2001-02-25 22:02 markt + + * libmp3lame/lame.c, test/CBRABR.op: + + made allow_diff_short the default if mode=stereo and + allow_diff_short has not been set to 0 or 1 by the calling + program. + + addes these notes to lame_init_params() : + * + * We first have some complex code to determine bitrate, + * output samplerate and mode. It is complicated by the fact + * that we allow the user to set some or all of these parameters, + * and need to determine best possible values for the rest of them: + * + * set some CPU related flags + * check if we are mono->mono, stereo->mono or stereo->stereo + * compute bitrate and output samplerate: + * user may have set compression ratio + * user may have set a bitrate + * user may have set a output samplerate + * set some options which depend on output samplerate + * compute the actual compression ratio + * set mode based on compression ratio + * + * The remaining code is much simpler - it just sets options + * based on the mode & compression ratio: + * + * set allow_diff_short based on mode + * select lowpass filter based on compression ratio & mode + * set the bitrate index, and min/max bitrates for VBR modes + * disable VBR tag if it is not appropriate + * initialize the bitstream + * initialize scalefac_band data + * set sideinfo_len (based on channels, CRC, out_samplerate) + * write an id3v2 tag into the bitstream + * write VBR tag into the bitstream + * set mpeg1/2 flag + * estimate the number of frames (based on a lot of data) + * + * now we set more flags: + * nspsytune: + * see code + * VBR modes + * see code + * CBR/ABR + * see code + +2001-02-25 21:28 markt + + * frontend/parse.c: + + removed VBR warning + +2001-02-25 20:24 markt + + * libmp3lame/psymodel.c: + + edited a few comments in psymodel.c + +2001-02-25 20:17 markt + + * libmp3lame/encoder.c, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/util.h, test/nores.op: + + Started some re-originization of psymodel.c + created: + + psymodel_init() function, called by both psymodel and psymodel_ns. + + I was carefull to make sure no binary changes were introduced + with --nspsytune. + + Modified both psymodel and psymodel_ns to return the + energy in each channel. I'm going to request that the + ATH level adjust be based on the energy comptuted by the + psymodel, rather than computing a magnitude in encoder.c + +2001-02-25 17:37 markt + + * Dll/BladeMP3EncDLL.c, frontend/parse.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + removed mode_fixed variable. If calling program selects a mode + (mono, stereo, jstereo) then that mode is used, otherwise + lame picks best mode to use. + +2001-02-25 01:58 markt + + * include/lame.h: + + started adding more prototypes into lame.h: + + int lame_set_variable_name(lame_global_flags *, int) + int lame_get_variable_name(lame_global_flags *) + + _get will return the value (instead of an error code) + as suggested. + + _set will return an error code. But right now, the way lame + works there is no error checking until lame_init_params() is + called. This is because, for example, bitrate=135 + is not an error if free_format=1, but it is an error + for CBR. So many errors cannot be detected until all options + are set. + +2001-02-24 19:35 markt + + * include/lame.h, libmp3lame/util.h: + + commented out a uint_64_t field in util.h to get lame to + compile. Do we really need these types of variables? + + removed some stuff from lame.h. Note that many decisions have + already been made about the library interface, so if you are + planning on changing this, you need to check with me + (mark taylor) first. In particular, + there is going to be no file I/O, and all data is in + machine order. (no endian stuff in the library). + +2001-02-24 13:55 robert + + * Makefile.unix, configMS.h: + + get Makefile.unix working again (tested for Linux, not for OS/2 etc.) + +2001-02-21 21:17 robert + + * libmp3lame/lame.c: + + --vbr-mtrh related + +2001-02-21 17:07 robert + + * libmp3lame/vbrquantize.c: + + take sfb21 into consideration for median search + +2001-02-21 17:06 robert + + * libmp3lame/util.c: + + index transformation in select_kth_int() + +2001-02-21 14:59 aleidinger + + * test/lametest.py: + + do not print the passed/failed statistic in the makeref case + +2001-02-21 13:49 robert + + * frontend/parse.c, libmp3lame/lame.c: + + default quality handling fix + +2001-02-21 12:39 aleidinger + + * Dll/BladeMP3EncDLL.c: + + lame.h has to be included before version.h + +2001-02-20 18:34 aleidinger + + * Makefile.in, config.h.in, configure, configure.in, + frontend/brhist.c: + + - Patch (#103821) from guy_hutchison: + Fixes compilation problem on systems with ncurses dir + - add ChangeLog to Makefile.in + +2001-02-20 18:23 aleidinger + + * libmp3lame/: encoder.h, version.h: + + [no log message] + +2001-02-20 18:20 aleidinger + + * doc/html/: Makefile.am, Makefile.in: + + - add basic.html + +2001-02-20 18:20 aleidinger + + * configMS.h: + + - add LAME_LIBRARY_BUILD + +2001-02-20 18:20 aleidinger + + * libmp3lame/util.h: + + - more documentation, seems to be partially truncated (Frank) + - CPU_features is now a struct + +2001-02-20 18:19 aleidinger + + * libmp3lame/takehiro.c: + + - CPU_features is now a struct + +2001-02-20 18:19 aleidinger + + * libmp3lame/lame.c: + + - CPU_features is now a struct, no need to waste space for those + bolean values (Frank) + - introduce some KLEMM_44 protected code + +2001-02-20 18:18 aleidinger + + * libmp3lame/util.c: + + - fixes + docu for ATHformula_Frank() (Frank) + - don't compile old resampling in KLEMM_44 case + +2001-02-20 18:17 aleidinger + + * libmp3lame/version.c: + + - doxygen parseable documentation + - better lclint flags + - enable get_lame_version_numerical() + +2001-02-20 18:17 aleidinger + + * include/lame.h: + + - delete prototype of already removed get_lame_about() + - add get_lame_version_numerical() and lame_version_t + (now dshow didn't needs to include version.h to get the numerical + version of lame (dshow not changed, I let pgubanov do this)) + - introduce some KLEMM_44 protected code (Frank) + - rework formatting and documentation to be more (IMO much more) readable + (no lines longer than 80 chars, consistent formatting, looks alot cleaner) + +2001-02-20 10:41 aleidinger + + * DEFINES: + + Remove KLEMM_04, there was a previous commit which handled it, see + ChangeLog. + +2001-02-20 01:56 markt + + * DEFINES, frontend/brhist.c, frontend/get_audio.c, + frontend/timestatus.c: + + KLEMM 5,6,7 made the default & removed + +2001-02-20 00:40 markt + + * libmp3lame/lame.c: + + simplified lame_encoder_buffer_interleaved: it now always calls + lame_encoder_buffer() + +2001-02-20 00:30 markt + + * libmp3lame/: encoder.c, lame.c, util.c, util.h: + + fix for --scale problem? + + made a new routine: fill_buffer() + + This is the generic routine used to copy data from the input buffer + into lame's internal buffer, 'mfbuf[]'. + + It also calls the resample code if necessary, and the user selected + rescaling code if necessary. + +2001-02-20 00:26 markt + + * frontend/parse.c: + + added comment to vbr warning message + +2001-02-20 00:24 markt + + * frontend/parse.c: + + re-added the warning about VBR modes. It seems to have been deleted + at some point. + + This is because this website: + + http://www.kuro5hin.org/?op=displaystory;sid=2001/1/25/164540/759 + + is comparing Vorbis with lame -V4. + + While many people like the high bitrate VBR modes, + lame -V4 is *often* of lower quality than CBR. + +2001-02-19 18:29 aleidinger + + * test/VBR.op: + + - remove "--silent", lametest.py now handles this + + Aproved by: robert + +2001-02-19 18:28 aleidinger + + * test/lametest.py: + + - allow relative paths in a more portable manner + - should be more OS independand now + - more file checks (readable/executable) + - internally adds new option "--quiet" to the options + + This works on my system, it also should work on systems where the + previous version worked. It's not as portable as it could be, + search for XXX in the source. + +2001-02-18 21:18 robert + + * frontend/main.c, frontend/parse.c, libmp3lame/lame.c, + libmp3lame/version.h, test/VBR.op: + + new options --silent and --quiet to be really quiet + new option --verbose (default) to turn -S/--silent off again + --vbr-mtrh and --vbr-new use now ATH type 2 + for VBR modes it is allowed to use different block types in stereo mode (not yet joint stereo) + bumped version to 3.88 alpha 10 + +2001-02-18 12:11 aleidinger + + * dshow/: Makefile.am, Makefile.in: + + Add recently added files to the makefile. + +2001-02-17 15:45 pgubanov + + * dshow/Encoder.cpp: + + gfp is sometimes zero in CEncoder::Encode() - why??? + +2001-02-17 14:30 aleidinger + + * libmp3lame/: pcm.c, pcm.h: + + New code from Frank, some needed parts in different files aren't commited + yet, they produce huge differences with lametest.py even if KLEMM_44 isn't + defined. -> KLEMM_44 (new API + resampling) isn't usable yet + +2001-02-17 14:27 aleidinger + + * test/lametest.py: + + - use "/usr/bin/env python" instead of "/usr/bin/python" in shebang line + (portability) + - use "-l" instead of "--lines" for wc + (portability, has to run on every IEEE 1003.2 ("POSIX.2") compliant + system) + - bugfix, check for lame2 instead for lame1 in the lame2 part + (Note: the entire test didn't work for me if I use e.g. + ./lametest.py XXX.op ../../testcases/XXX ../../build.org/frontend/lame ...) + +2001-02-17 14:17 pgubanov + + * dshow/: aboutprp.cpp, aboutprp.h: + + Elecard copyrigth added (executives need it for some reason) + +2001-02-17 13:58 pgubanov + + * dshow/: Mpegac.cpp, Property.rc, UIDS.H, dshow.dsp, dshow.dsw, + elogo.ico, resource.h: + + Some stability improvements + Elecard copyrigth added (executives need it for some reason) + +2001-02-16 17:23 markt + + * doc/html/basic.html: + + added basic.html to cvs + +2001-02-16 10:35 pgubanov + + * dshow/dshow.dsp: + + STDC_HEADERS defined in project settings + +2001-02-16 10:33 pgubanov + + * libmp3lame/lame.c: + + mono handling in encode_buffer_interleaved caused access violation - fixed + +2001-02-14 22:22 aleidinger + + * ChangeLog: + + Now we have a ChangeLog, generated from the output of "cvs log" + +2001-02-14 22:21 aleidinger + + * ChangeLog.header: + + Header for the ChangeLog, not included at "make dist" + +2001-02-14 22:20 aleidinger + + * TODO: + + remove Makefile.MSVC, robert seems to keep it up to date + +2001-02-14 22:20 aleidinger + + * Makefile.B32: + + try to unbreak it, add configMS.h -> config.h (untested) + +2001-02-14 22:20 aleidinger + + * DEFINES: + + add USE_FFT3DN + +2001-02-14 22:19 aleidinger + + * INSTALL: + + * add some more info how to use some advanced features of our + configure script + * add some info for Cygwin users (use configure) + * add some info about faster code with nasm + +2001-02-14 20:50 robert + + * frontend/parse.c: + + added -V1 to Roel's --remix preset, I assume it was missing by accident + +2001-02-14 16:38 aleidinger + + * Makefile.am.global, Makefile.in, aclocal.m4, configure, + configure.in, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + use new automake 1.4d (bugfixes) + +2001-02-14 14:43 robert + + * libmp3lame/: encoder.c, util.h: + + tuning of the auto ath adjustment for --vbr-mtrh mode + +2001-02-14 14:24 robert + + * libmp3lame/util.c: + + patch by Roel: + tweaking his ATH modification (--athtype 3) + +2001-02-13 18:27 markt + + * frontend/parse.c: + + fixed typo in parse.c + +2001-02-13 18:24 markt + + * libmp3lame/psymodel.c: + + added a lot of documentation on the psycho acoustics + to the top of psymodel.c + +2001-02-13 18:22 markt + + * mpglib/: common.c, common.h, interface.c: + + improved head_check() function: When resyncing data stream, + only look for headers of the same layer of the previous + frames. i.e. dont allow layer 2 and layer 3 frames in the + same stream. + +2001-02-13 18:21 markt + + * frontend/: get_audio.c, parse.c: + + added the --r3mix option + fixed bug with --decoder-mp3delay option + added error message for non-8 and 16 bit input + +2001-02-13 16:58 robert + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize_pvt.c, libmp3lame/util.c, libmp3lame/util.h: + + first of all: this patch shows no difference in the CBR/ABR test + + - made athtype 3 default for VBR modes, 1 still default for CBR/ABR modes + - made athadjust default for VBR modes, CBR/ABR modes don't need it + - removed --athadjust switch, was only temporally solution + - collected all spreaded ATH settings into ATH_t struct + if someone needs a new ATH related variable, please add it here + +2001-02-12 18:24 markt + + * doc/html/: contributors.html, history.html, index.html, + node6.html, switchs.html: + + new html docs from Gabriel + +2001-02-12 17:47 markt + + * test/lametest.py: + + print total pass/fail message at end + +2001-02-09 16:47 robert + + * libmp3lame/quantize_pvt.c: + + patch by Gaby: + allow ATH adjust for the ATH only modes too + +2001-02-08 22:19 robert + + * test/VBR.op: + + update to the VBR python options file + +2001-02-07 15:51 robert + + * libmp3lame/: encoder.c, vbrquantize.c: + + all patches --vbr-mtrh related + + encoder.c: + - made a variant of Gaby's auto ATH adjust the default + + vbrquantize.c: + - some small code moves + - added some safety margin to the global gain + +2001-02-06 21:43 robert + + * libmp3lame/: psymodel.c, vbrquantize.c: + + we should not try to hard to get high freqs thru' + so I will let --vbr-mtrh as is. It seems to give + reasonable file sizes again, even with Frank's ATH. + +2001-02-05 10:18 robert + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/quantize_pvt.c: + + re-check-in of Gaby's ATH auto adjustment code. + You need to specify --athadjust to get this + SUBSTANTIALLY QUALITY IMPROVEMENT + + quote: + "Also, we already have gfc->ath_lower (specified in db). + No reason to add another variable which does the same thing, + and does not even use the same units." + + That is not true, there is actually no gfc->ath_lower in dB. + We have a gfp->ATHlower in dB. But this is of a totally + different meaning. + gfp->ATHlower will lower the ATH for the whole file by a fixed + amount of x dB. + gfc->ath_auto_adjust will lower the ATH on a frame by frame basis + depending on the peak volume. + +2001-02-05 04:58 markt + + * frontend/parse.c: + + Added warning about using VBR modes. + This is because this website: + + http://www.kuro5hin.org/?op=displaystory;sid=2001/1/25/164540/759 + + is comparing Vorbis with lame -V4. + + While many people like the high bitrate VBR modes, + lame -V4 is *often* of lower quality than CBR. + +2001-02-05 02:36 shibatch + + * libmp3lame/psymodel.c: + + Reverted part of last tweaks of nspsytune. + +2001-02-05 02:27 markt + + * HACKING: + + updated HACKING with directions on how to run the + lametest.py python script + +2001-02-05 02:24 markt + + * test/: CBRABR.op, VBR.op, lametest.py, nores.op: + + Adding a python script used for testing, along with + some sample options files. + +2001-02-05 02:23 markt + + * HACKING, libmp3lame/encoder.c, libmp3lame/quantize_pvt.c: + + reverted encoder.c and quantize_pvt.c back to 13:00 3 Feb 2001. + These modifications broke my test cases. Any such changes need + aproval first. + + Also, we already have gfc->ath_lower (specified in db). + No reason to add another variable which does the same thing, + and does not even use the same units. + +2001-02-05 00:34 cisc + + * frontend/amiga_mpega.c: + + MPG_MD_LR_LR define was moved, set mode_ext to 0 instead (since we don't get that info anyway). + +2001-02-04 23:56 robert + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/vbrquantize.c: + + parse.c: small change in default behaviour for --vbr-mtrh + lame.c: it makes no sense for a sfb21 extra at sample frequencies below 44.1 kHz + vbrquantize.c: oops, last commit was a merger from a wrong branch of mine + +2001-02-04 23:28 shibatch + + * libmp3lame/quantize_pvt.c: + + Enabled auto-adjust ATH for nspsytune. + +2001-02-04 23:14 shibatch + + * libmp3lame/psymodel.c: + + Tweaked nspsytune. + +2001-02-03 23:20 robert + + * libmp3lame/: quantize_pvt.c, version.h: + + bumped version to alpha 9 + some clean-up + +2001-02-03 20:10 robert + + * libmp3lame/: encoder.c, quantize_pvt.c, util.c, util.h, + vbrquantize.c: + + patch by Gabriel Bouvigne: + auto adjust of ATH for low volume tracks + a big improvement in quality! + therefore on by default + + patch by Robert Hegemann: + further improvement of --vbr-mtrh mode + +2001-02-02 01:04 robert + + * libmp3lame/: quantize.c, quantize_pvt.c: + + --vbr-mtrh tweaks + +2001-01-31 19:44 aleidinger + + * configure, configure.in: + + bugfix + +2001-01-31 15:34 robert + + * libmp3lame/quantize.c: + + fix a typo I introduced by my last commit + +2001-01-31 12:53 aleidinger + + * Makefile.am.global, Makefile.in, acconfig.h, acinclude.m4, + aclocal.m4, config.h.in, configMS.h, configure, configure.in, + depcomp, Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + - config*/Makefile*/ac*: + * tests for *int*_t + * test for 80 bit floats (for speed optimizations) + * add pcm.* to the makefile + * removed resample.[ch] from the makefile + * depend upon automake 1.4b + * fix in check for ccc + (submitted by nold via the sourceforge patch page at + the lame project page, patch id #103507) + * something I may have forgotten + + Note: + Please don't commit any Makefile.in if you didn't have + changed the corresponding Makefile.am. CVS didn't stores + the time stamps of the files at commit time, it stores + the time stamps of the commit time, so we have to commit + the files in the correct order, but I'm to lazy to do so + and I assume I'm not the only one. + The same applies to config*. + + - depcomp: + missing file, the dependancy tracking should work again + +2001-01-30 20:53 robert + + * libmp3lame/quantize.c: + + fixed a design flaw in VBR_iteration_loop() I'm responsible for. + affects quality! + +2001-01-30 20:52 robert + + * libmp3lame/: lame.c, quantize_pvt.c, vbrquantize.c: + + tuning of --vbr-mtrh mode + +2001-01-30 20:51 robert + + * frontend/parse.c, include/lame.h: + + patch by Gaby: + changed --athlower to accept floats + +2001-01-30 11:02 robert + + * libmp3lame/: psymodel.c, util.c: + + psymodel.c: fixing compile problem (was: M_LN10 undefined) + util.c: Roel's modification to Gaby's ATH, new: --athtype 3 + +2001-01-29 14:46 robert + + * libmp3lame/vbrquantize.c: + + --vbr-mtrh and --vbr-new use now the faster and sloppier + scalefactor-band noise calculation with quality settings + -q 3...9 + +2001-01-28 12:51 takehiro + + * libmp3lame/: quantize.h, util.h: + + oops, compile problem fix + +2001-01-28 12:39 takehiro + + * libmp3lame/: quantize.c, quantize.h, quantize_pvt.c, + vbrquantize.c: + + magic number 4095 and 4096 is removed + +2001-01-27 18:00 takehiro + + * libmp3lame/psymodel.c: + + make temporal masking effect strong. + +2001-01-27 17:52 takehiro + + * libmp3lame/quantize_pvt.c: + + debug message is removed :) + +2001-01-27 17:39 takehiro + + * frontend/parse.c, include/lame.h, libmp3lame/psymodel.c, + libmp3lame/quantize_pvt.c, libmp3lame/util.h: + + experimental temporal masking support. + "--temporal" option to use this. + +2001-01-26 22:47 robert + + * frontend/parse.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/vbrquantize.c: + + tuning of --vbr-mtrh VBR mode + +2001-01-25 20:57 robert + + * misc/abx.c: + + update by Frank: + some further endings and audio formats + +2001-01-24 23:59 robert + + * libmp3lame/quantize_pvt.c: + + found and fixed another BUG caused by the "bit optimization." patch + +2001-01-24 23:02 robert + + * libmp3lame/: pcm.c, pcm.h: + + updates by Frank + +2001-01-24 22:33 robert + + * Makefile.DJGPP, Makefile.unix: + + small config.h related tunings + +2001-01-24 21:33 robert + + * libmp3lame/vbrquantize.c: + + quick-fix for code that was broken by Takehiro's last + "bit optimization." in function calc_xmin(), quantize_pvt.c + +2001-01-23 12:50 takehiro + + * libmp3lame/quantize_pvt.c: + + bit optimization. + +2001-01-23 07:12 shibatch + + * libmp3lame/quantize.c: + + Bugfix of nspsytune. + +2001-01-22 23:00 afaber + + * Dll/BladeMP3EncDLL.c: + + VBR was always enabled, even when the client did not ask for it + +2001-01-22 19:54 aleidinger + + * libmp3lame/vorbis_interface.c: + + remove trailing garbage + +2001-01-22 09:31 shibatch + + * libmp3lame/: psymodel.c, quantize.c: + + Tweaked nspsytune. + +2001-01-22 04:35 markt + + * Makefile.in, configure, Dll/Makefile.in, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, frontend/parse.c, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/psymodel.c, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + fixed bug preventing -m a mode from working. + + ran autoconf which changed all the Makefile.in's + +2001-01-22 01:07 robert + + * libmp3lame/: pcm.c, pcm.h, vorbis_interface.c: + + patches by Frank: + + vorbis_interface: was/is broken since a long time + pcm.[ch]: fixing some transfer errors (email) + +2001-01-21 21:14 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed problems with writing the Xing MP3 header (gfc->internal_flags structure was already freed, while it was needed to write the Xing MP3 tag) + +2001-01-21 19:13 robert + + * libmp3lame/: pcm.c, pcm.h: + + patches by Frank: + + scalar.nas - new SIMD assembler routines + resample.[ch] - removed + pcm.[ch] - new, containing resampling routines and more + version.c - some clean up + +2001-01-21 19:06 robert + + * libmp3lame/: i386/scalar.nas, resample.c, resample.h, version.c: + + patches by Frank: + + scalar.nas - new SIMD assembler routines + resample.[ch] - removed + pcm.[ch] - new, containing resampling routines and more + version.c - some clean up + +2001-01-21 19:03 robert + + * frontend/lametime.c: + + it's always a good idea to include its own header file + +2001-01-20 09:51 robert + + * libmp3lame/util.c: + + patch by Gaby: + + I changed a file from the 19/01 cvs (I added an ath balanced between the + original one and Frank's one on the option --athtype 2) + +2001-01-19 09:08 shibatch + + * libmp3lame/: encoder.c, psymodel.c, quantize_pvt.c: + + Improved reservoir handling(nspsytune). + +2001-01-18 22:18 robert + + * libmp3lame/quantize_pvt.c: + + allow "--athlower n" to modify the ATH for sfb21 + +2001-01-18 13:04 aleidinger + + * Makefile.DJGPP: + + add config.h to the clean target + +2001-01-18 13:03 aleidinger + + * Makefile.DJGPP: + + bugfix (please report if it's broken, I can't test the config.h target) + +2001-01-17 21:32 robert + + * Makefile.unix: + + additional fixes + +2001-01-17 20:35 robert + + * libmp3lame/: VbrTag.c, util.c, util.h: + + RH_SEEK_TABLE enables a different method of generating TOC entries + in Xing VBR header. now enabled! + + PLEASE TEST TRY IT + + It should fix the problem poeple reported who encode radio shows or + alike which last a few hours. + Another advantage is, it will not steadily increase LAME's memory footprint + while running. + +2001-01-17 16:05 shibatch + + * libmp3lame/psymodel.c: + + Reverted the final change. + It degraded encoded quality of gspi*.wav. + +2001-01-17 13:26 shibatch + + * libmp3lame/psymodel.c: + + Tweaked nspsytune. + +2001-01-17 09:55 robert + + * Makefile.unix: + + try to fix the broken Makefile after latest configurification + +2001-01-17 09:54 robert + + * libmp3lame/newmdct.c: + + + replaced M_SQRT2 by SQRT2 which is defined in util.h + + replaced "=-" by "= -" to avoid confusion with the + old K&R "=-" operator, an equivalent to "-=". Even + though new compilers seem to handle it as an + assignement and unary minus sequence, but some + buggy compiler could be trapped here (as I). + +2001-01-16 13:08 robert + + * configMS.h: + + turned some defines for system include files on + +2001-01-16 09:04 robert + + * Makefile.MSVC: + + fixed typo, sorry + +2001-01-15 15:16 aleidinger + + * Makefile.am, Makefile.am.global, Makefile.in, config.h.in, + configMS.h, configure, configure.in, Dll/Makefile.am, + Dll/Makefile.in, debian/Makefile.am, debian/Makefile.in, + doc/Makefile.am, doc/Makefile.in, dshow/Makefile.am, + dshow/Makefile.in, frontend/Makefile.am, frontend/Makefile.in, + frontend/brhist.c, frontend/console.c, frontend/get_audio.c, + frontend/gpkplotting.c, frontend/main.c, frontend/mp3rtp.c, + frontend/parse.c, frontend/rtp.c, include/Makefile.am, + include/Makefile.in, libmp3lame/Makefile.am, + libmp3lame/Makefile.in, libmp3lame/id3tag.c, + libmp3lame/machine.h, misc/Makefile.am, misc/Makefile.in, + mpglib/Makefile.am, mpglib/Makefile.in, mpglib/common.c, + mpglib/decode_i386.c, mpglib/mpg123.h: + + automake/autoconf cleanup and enhancement + +2001-01-15 14:19 shibatch + + * libmp3lame/: encoder.c, psymodel.c, util.h: + + More cleanups and bugfixes of --nspsytune. + +2001-01-15 09:38 aleidinger + + * doc/html/Makefile.am: + + remove node[57].html + +2001-01-15 09:14 gramps + + * USAGE: + + Raised track limit from 99 to 255 per user requests. + +2001-01-15 09:10 robert + + * Makefile.B32, Makefile.MSVC, Makefile.unix: + + more RH_AMP clean up + +2001-01-15 08:58 gramps + + * frontend/parse.c, doc/html/id3.html: + + Raised track limit from 99 to 255 per user requests. + +2001-01-15 08:48 gramps + + * libmp3lame/id3tag.c: + + - Simplified prologue of all public functions, removing intermediate "spec" + variable, and assuming (like the rest of LAME) that gfp is never null. + - Fixed a stupid sizeof bug (mine) in "id3tag_init". + - Raised track limit from 99 to 255 per user requests. + - No longer write full text of genre in version 2 tag. Now write more + cannonical "(num)" format where "num" is the text version of the genre + number, more closely following the updated ID3v2.3 spec and usage in id3lib. + This also makes the tag smaller. + - Now use id3lib-compatible bogus language descriptor "XXX" in version 2 + comment frames instead of just null bytes. + - Changed order of frames written in version 2 tag to match version 1 tag. + - Restored some of Frank's optimizations. + - Fixed LAME URL. + - Reworded some comments and fixed misspellings. + - Moved "local_strcasecmp" back into its original position. + - Some small reformatting to match original file. + +2001-01-14 23:29 gramps + + * USAGE: + + - Changed "highest" to "higher" to describe recommended quality setting in + constant bit rate example. + + - Changed "CBR" to "VBR" to correct misspelling in variable bit rate + description. + +2001-01-14 22:40 gramps + + * doc/html/Makefile.in: + + Removed dependency on obsolete node5.html and node7.html. + +2001-01-14 22:35 markt + + * USAGE, frontend/parse.c: + + documentation of -q parameter in USAGE and lame --longhelp + +2001-01-14 22:13 markt + + * doc/html/: node5.html, node7.html: + + removed as per Gaby + +2001-01-14 22:12 markt + + * libmp3lame/: lame.c, quantize.c: + + created new routine lame_init_qval() which does all the + gfp->quality related settings. Cleaned up some more RH_AMP code: + The only way to enable scalefac_scale right now is with + -Z or --nspsytune. + +2001-01-14 21:01 markt + + * testcase.mp3: + + updated test case + (Takehiro fixed a bug which I introduced, which changes test cases). + +2001-01-14 17:25 aleidinger + + * DEFINES, Makefile.in, aclocal.m4, config.guess, config.sub, + configure, configure.in, missing, mkinstalldirs, Dll/Makefile.am, + Dll/Makefile.in, debian/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, frontend/depcomp, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/depcomp, + libmp3lame/i386/Makefile.in, misc/Makefile.in, misc/depcomp, + mpglib/Makefile.in, mpglib/depcomp: + + DEFINES: + remove obsolete defines + + configure*: + minor cleanup + + Makefile*: + - minor cleanup + - use automake 2.14b + + Added files: + needed for new automake + + rest: + updated automake files + +2001-01-14 15:40 aleidinger + + * misc/abx.c: + + there are encoders with different delays on different channels (Frank) + +2001-01-14 12:21 shibatch + + * libmp3lame/lame.c: + + Enabled scalefac_scale if --nspsytune is specified. + +2001-01-14 12:02 takehiro + + * testcase.mp3: + + fixed new amp_scalefac_bands + (it may use "trigger" variable without any initialization) + +2001-01-14 09:42 takehiro + + * libmp3lame/quantize.c: + + minor bug fix. + when subblock gain=1 and scalefactor is -1(means no need to calculate), + LAME will try to check the quantization with meanless scalefactor combination. + +2001-01-14 09:39 takehiro + + * libmp3lame/quantize.c: + + subblock_gain is 3-bit and its limit is 7, not 8. + +2001-01-14 09:35 takehiro + + * libmp3lame/quantize.c: + + oops, conflicts are removed + +2001-01-14 09:31 takehiro + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + to store the distortion into III_psy_xmin structure, not simple array. + this may make array pointer calculation easier and bring some speed up. + +2001-01-14 09:26 shibatch + + * libmp3lame/: encoder.c, psymodel.c, psymodel.h: + + Cleanup and small speed optimization of --nspsytune. + +2001-01-14 08:17 markt + + * API: + + one minor update to the API file + +2001-01-14 08:13 markt + + * testcase.mp3, libmp3lame/lame.c, libmp3lame/quantize.c: + + made a new, simpler unified amp_scalefac_bands(): + + * distort[] = noise/masking + * distort[] > 1 ==> noise is not masked + * distort[] < 1 ==> noise is masked + * max_dist = maximum value of distort[] + * + * Three algorithms: + * noise_shaping_amp + * 0 Amplify all bands with distort[]>1. + * + * 1 Amplify all bands with distort[] >= max_dist^(.5); + * ( 50% in the db scale) + * + * 2 Amplify first band with distort[] >= max_dist; + * + * + * For algorithms 0 and 1, if max_dist < 1, then amplify all bands + * with distort[] >= .95*max_dist. This is to make sure we always + * amplify at least one band. + * + + noise_shaping_amp=0 -q3 .. -q9 + noise_shaping_amp=1 -q2 + noise_shaping_amp=2 -q1, -q0 + + --nspsytune was using what is now noise_shaping_amp=2, but the only + way to get this now is to use --nspsytune -q1. + Naoki: is this a problem? + + I also defaulted the clever RH_AMP stoping criterion in + outer_loop. + +2001-01-14 05:36 markt + + * libmp3lame/: lame.c, psymodel.c, quantize.c, quantize_pvt.c, + util.h, vbrquantize.c: + + some tuning of VBR masking_lower because of new ATH function. + Disabled VBR_q based lowering of ATH. Is this still needed? + You can always achieve the same effect with --athlower option. + +2001-01-13 18:01 aleidinger + + * Makefile.am, Makefile.in, configure, configure.in, + Dll/Makefile.in, debian/Makefile.am, debian/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.am, dshow/Makefile.in, frontend/Makefile.am, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.am, mpglib/Makefile.in: + + "make dist" related: + - add debian subdir + - add missing files + + different builddir related: + - change argument to -l option for nasm + +2001-01-13 17:40 aleidinger + + * libmp3lame/Makefile.in.old: + + obsolete + +2001-01-13 17:36 aleidinger + + * frontend/Makefile.in.old: + + obsolete + +2001-01-13 13:45 takehiro + + * libmp3lame/newmdct.c: + + bit coding hack and cleanup + +2001-01-13 12:55 takehiro + + * Makefile.in, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + automake generated + +2001-01-13 12:54 takehiro + + * libmp3lame/: fft.c, i386/Makefile.am, i386/fft3dn.nas: + + now LAME supports 3dnow! fft + +2001-01-13 10:37 pgubanov + + * dshow/Encoder.cpp: + + Removed (char*) cast in lame_encode_buffer() call + +2001-01-12 19:20 markt + + * debian/: changelog, control, copyright, lame-dev.docs, + lame-dev.files, lame-extras.files, lame.docs, lame.files, rules: + + added debian files from Ingo Saitz + +2001-01-12 19:17 markt + + * debian/: cron.d.ex, dirs, docs, emacsen-install.ex, + emacsen-remove.ex, emacsen-startup.ex, ex.doc-base.package, + files, init.d.ex, manpage.1.ex, manpage.sgml.ex, menu.ex, + postinst.debhelper, postinst.ex, postrm.ex, preinst.ex, + prerm.debhelper, prerm.ex, substvars, watch.ex: + + New Debian package from Ingo Saitz + +2001-01-12 19:11 markt + + * README.Debian: + + removed README.Debian + +2001-01-12 11:13 aleidinger + + * misc/abx.c: + + further improvements, e.g. reduced latency (Frank) + +2001-01-11 22:37 markt + + * HACKING, frontend/mp3rtp.c, frontend/mp3x.c: + + updated mp3rtp.c and mp3x.c to use lame_global_flags *lame_init() + (lame allocates storage for lame_global_flags) + rather than lame_init_old(&gf) which required calling + program to instantiate gf. + + Now we need to start writing one routine for every parameter: + + lame_set_bitrate + lame_set_num_channels + etc... + +2001-01-10 16:03 aleidinger + + * frontend/lame.dsp, frontend/mp3x.dsp, libmp3lame/libmp3lame.dsp, + mpglib/mpglib.dsp: + + work around for a bug in VC (Todd Richmond) + +2001-01-09 15:15 aleidinger + + * misc/abx.c: + + bugfixes + +2001-01-08 18:15 aleidinger + + * DEFINES: + + removed KLEMM_12, on by default + +2001-01-08 18:07 aleidinger + + * libmp3lame/vbrquantize.c: + + Roberts VBR code: speed improvement for vbr-mtrh (ping pong patch, OKed by Mark) + +2001-01-07 23:47 markt + + * frontend/: portableio.c, timestatus.c: + + chage to KLEMM-36 from Frank + +2001-01-07 22:53 markt + + * frontend/timestatus.c, libmp3lame/psymodel.c: + + undefined variable (last = 0, line 214) in timestatis.c + commented out. + + fixed some dimensions in the funtion prototype of l3para_read + +2001-01-07 22:35 markt + + * frontend/timestatus.c: + + Applied Frank's patch (from mp3encoder) to timestatus.c + with -R. I hope I didn't undo this by mistake! + +2001-01-07 22:33 markt + + * frontend/timestatus.c: + + added a brhist_jump_back() to timestatus_klemm(). + sent to me by Magnus Holmgren. + +2001-01-07 22:28 markt + + * USAGE, frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c: + + added the "-ma" option. + Ultimate goal: + 8 kbps Mono + 16- 96 kbps Intensity Stereo (if available, otherwise Joint Stereo) + 112-128 kbps Joint Stereo -mj + 160-192 kbps something between -mj and -ms + 224-320 kbps Independent Stereo -ms + + currently enables KLEMM_12. KLEMM_12 is gone. + +2001-01-07 16:17 aleidinger + + * libmp3lame/lame.c: + + Don\'t change floatingpoint mask for FreeBSD on Alpha hardware, obtained from FreeBSD-Ports + +2001-01-07 14:48 aleidinger + + * misc/abx.c: + + cleanup, no functional change + +2001-01-07 14:47 aleidinger + + * Dll/Example.dsw, Dll/MP3EncDll.dsw, dshow/dshow.dsw, + frontend/lame.dsw, frontend/mp3x.dsw, misc/abx.c: + + fix *.dsw + new version of abc.c (Frank) + +2001-01-07 09:14 markt + + * frontend/: mp3rtp.c, mp3x.c: + + global variables used by frontend code are now instantiated + in parse.c. + + Before, the were defined external in main.h, and instantiated + in the frontend, meaning they had to appear in mp3x.c, main.c + and mp3rtp.c + + we need to get rid of these! + +2001-01-07 09:11 markt + + * frontend/main.c, frontend/main.h, frontend/parse.c, + libmp3lame/lame.c: + + more tweaks to the --decode-mp3delay option + +2001-01-07 08:28 markt + + * libmp3lame/: lame.c, quantize.c, util.h: + + added a variable, noise_shaping_amp. It does nothing right now. + +2001-01-07 08:24 markt + + * frontend/: main.c, main.h, parse.c: + + added a undocumented option --decode-mp3delay <n> + to allow someone to adjust the number of samples + lame --decode will truncate. David Robinson requirested this + since he didn't like that lame --decode would truncate 1106 samples + (assuming a encoder delay of 576) since BladeEnc has an encoder delay + of only 528.) + +2001-01-07 05:25 markt + + * frontend/main.c, libmp3lame/util.c: + + main.c: uses lame_init() instead of lame_init_old(). + util.c: added frank's changes: 32 point filter instead of 19. + prep work for frank's new resampling/filtering code. + updated test cases. + +2001-01-06 23:12 markt + + * libmp3lame/: lame.c, psymodel.c, quantize_pvt.c, util.c: + + ATHformula modifed to work in Hz instead of Khz. + + Minor change to a bunch of routines + regeneration of + test cases. + +2001-01-06 22:57 markt + + * testcase.mp3: + + updated testcase + +2001-01-06 22:55 markt + + * libmp3lame/fft.c: + + Switched to the Blackman window for the FFT energy estimator. + This is just to merge some nspsytune code into default + +2001-01-06 07:40 gramps + + * libmp3lame/id3tag.c: + + Backed out some large changes done in November which introduced at least two bugs. Also fixed other older bug in id3tag_write_v2. + +2001-01-06 01:11 markt + + * include/lame.h, libmp3lame/lame.c, libmp3lame/psymodel.c: + + more prep work to remove all psycho acoustic tables + +2001-01-06 01:00 markt + + * libmp3lame/: VbrTag.h, lame.c, mpglib_interface.c, psymodel.c: + + added formulas to replace the last of the table data. + some changes to reflect that Xing VBR header parsing code + has been moved into mpglib + +2001-01-05 22:15 markt + + * mpglib/: interface.c, mpglib.h: + + added XingVBR header parsing code + +2001-01-05 22:13 markt + + * frontend/: get_audio.c, gtkanal.c: + + fixed bug in frame analyzer when analyzing mp3 files. + frame counter incremented too soon. This was introduced + when someone (maybe me, but I dont remember!) replaced the + use of gfp->frameNum with a global variable limited in scope to + just gtkanal.c + + get_audio.c: removed VBR Xing header checking code. + this has been moved into mpglib. + +2001-01-05 15:26 aleidinger + + * Makefile.in.old, configure.in.old: + + obsolete + +2001-01-05 15:20 aleidinger + + * Makefile.B32, Makefile.unix, frontend/brhist.c, + frontend/get_audio.c, frontend/gpkplotting.c, frontend/gtkanal.c, + frontend/lame.dsp, frontend/lametime.c, frontend/main.c, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/mp3x.dsp, + frontend/parse.c, frontend/portableio.c, frontend/rtp.c, + frontend/timestatus.c, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/fft.c, libmp3lame/id3tag.c, + libmp3lame/lame.c, libmp3lame/libmp3lame.dsp, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/resample.c, + libmp3lame/reservoir.c, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c, misc/abx.c, mpglib/common.c, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/interface.c, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c, + mpglib/mpglib.dsp, mpglib/tabinit.c: + + misc/abx.c: (Frank Klemm) + - level adjustment + - clean up + - A-B repeat ("chunks") + + Makefile.*: + - nuke NOTERMCAP, it's HAVE_TERMCAP now + (defined where neccessary, please report slipped in breakage) + + (frontend|mp3x|libmp3lame|mpglib).dsp: + - copy configMS.h config.h (Todd Richmond) + - unbreak (Todd Richmond) + - nuke NOTERMCAP + - change HAVE([A-Z]*) to HAVE_$1 + + *.c: + - get rid of configMS.h, we finally have support in *.dsp + +2001-01-03 13:06 aleidinger + + * Makefile.DJGPP, Makefile.am, Makefile.in, Makefile.unix, + aclocal.m4, config.h.in, configure, configure.in, + frontend/Makefile.am, frontend/Makefile.in, frontend/brhist.c, + frontend/console.c, frontend/get_audio.c, frontend/gpkplotting.c, + frontend/gtkanal.c, frontend/lametime.c, frontend/main.c, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, + frontend/portableio.c, frontend/rtp.c, frontend/timestatus.c, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/debugscalefac.c, libmp3lame/encoder.c, + libmp3lame/fft.c, libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/resample.c, + libmp3lame/reservoir.c, libmp3lame/tables.c, + libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c, misc/Makefile.am, + misc/Makefile.in, mpglib/common.c, mpglib/dct64_i386.c, + mpglib/decode_i386.c, mpglib/interface.c, mpglib/layer1.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/tabinit.c: + + Makefile.{unix,DJGPP}: Bugfixes (Includes) + Makefile.am: follow the move of some scripts to misc + *: add dmalloc support (configure --with-dmalloc) + (it seems we have a memleak somewhere, I will have a closer look soon) + +2001-01-03 11:51 shibatch + + * libmp3lame/: psymodel.c, encoder.c: + + Tweaking and bugfix of --nspsytune. + +2001-01-02 06:02 markt + + * frontend/get_audio.c, libmp3lame/encoder.c: + + typo in read_samples_pcm fixed + +2001-01-01 17:35 markt + + * API, HACKING: + + minor edits to API and HACKING + +2001-01-01 17:26 markt + + * Lame.vbs, README.WINGTK, TODO, USAGE, lame4dos.bat, + misc/Lame.vbs, misc/lame4dos.bat: + + moved some more scripts into 'misc' directory + +2001-01-01 17:12 markt + + * INSTALL, README.WINGTK, USAGE, auenc, mlame, + frontend/README.Win32, misc/auenc, misc/mlame: + + moved scripts into misc directory + moved README.Win32 (which described compiling mp3x under windows) + back to its original name, README.WINGTK + minor updates to INSTALL and USAGE + +2000-12-27 13:13 aleidinger + + * misc/abx.c: + + - listen to the difference of both signals + - highlighting of "errors" + - DC canceling + - support for monaural signals + - cleanup + - bugfixes + - correct shell quoting + +2000-12-25 10:49 shibatch + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/quantize_pvt.c, + libmp3lame/util.h: + + Tweaked --nspsytune. + +2000-12-22 15:36 aleidinger + + * misc/abx.c: + + now with cross correlation (Frank) + +2000-12-20 22:55 aleidinger + + * misc/abx.c: + + - files to test have to have the same samplerate (Frank) + - check for correct number of arguments (Alexander) + +2000-12-20 15:14 aleidinger + + * DEFINES, libmp3lame/psymodel.c, libmp3lame/tables.c, + libmp3lame/tables.h: + + Patches for KLEMM_43 protected code + +2000-12-19 13:09 aleidinger + + * DEFINES, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/reservoir.c, libmp3lame/tables.c, + libmp3lame/vbrquantize.c: + + Ping pong #3, OKed by Mark. + +2000-12-19 08:16 markt + + * LICENSE: + + simplifed the LICENSE file describing how to use + LAME in commercial software + +2000-12-19 07:51 markt + + * INSTALL, README, README.B32: + + updated README files with new configure information. + debuging statement added to interface.c, then removed. + +2000-12-19 07:46 markt + + * frontend/: brhist.c, get_audio.c: + + more size_t's removed + +2000-12-19 07:43 markt + + * frontend/: main.c, mp3rtp.c, parse.c, rtp.c, rtp.h: + + removed some size_t's. + Added some windows code to rtp.c/mp3rtp.c: It is supposed to + be much improved: + + LAME is really great project. + + However, RTP code for multicasting isn't very good. + + I've attached some modification, and tested it on Win NT4 and Win2K with + FreeAmp on ordinary 10 and 100 Mbit Ethernet with encoding in neverending + loop. It was running one week w/o any probs. + + I would like to please you to not include my name anywhere (there are + several reason why, at the moment). + + However, code is very MSVC specific, so it is commented out + with #if 0. Most of the code was added to the end of rtp.c. + +2000-12-19 07:00 markt + + * frontend/main.c: + + deleted stupid C++ typecasts. LAME is written in C. + integer arguments to fwrite() do not need typecasts. + +2000-12-16 05:43 shibatch + + * libmp3lame/: lame.c, psymodel.c: + + 1. Old ATH formula is now default for --nspsytune. + 2. Tweaked a parameter of --nspsytune. + 3. Minor code cleanup. + +2000-12-14 13:32 aleidinger + + * Makefile.in, configure, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + regen + +2000-12-14 13:31 aleidinger + + * configure.in, libmp3lame/i386/Makefile.am: + + force nasm to generate coff output when building under cygwin (Egor Duga) + +2000-12-14 10:05 aleidinger + + * Makefile.in, config.h.in, configure, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + dshow/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + regen + +2000-12-14 10:04 aleidinger + + * Makefile.DJGPP, Makefile.am, Makefile.unix, configMS.h, + configure.in, frontend/Makefile.am, libmp3lame/Makefile.am, + libmp3lame/i386/Makefile.am, mpglib/Makefile.am: + + configure.in: + - determine the size of various types at configure time + - add --enable-debug=anoying + + configMS.h: + - add SIZEOF_... defines, see configure.in + + Makefile.unix: + - bugfix from Robert (shame on me) + + Makefile.DJGPP: + - add cpu_feat.nas and scalar.nas to the build with NASM + + Submitted by Egor Duda <deo@logos-m.ru> (thank you, works great): + * Makefile.am: add $(EXEEXT) to executables for cygwin build + * Makefile.am: take source .wav file from srcdir + * configure.in: require autoconf 2.13 + * configure.in: check for executable files extension + * frontend/Makefile.am: use builddir to get autogenerated headers + and libraries from, in case we're doing build in separate directory; + take normal headers from srcdir instead of current. + * libmp3lame/Makefile.am: ditto + * libmp3lame/i386/Makefile.am: ditto + * mpglib/Makefile.am: ditto + +2000-12-13 02:28 shibatch + + * libmp3lame/lame.c: + + Minor bugfix. + +2000-12-13 02:21 shibatch + + * libmp3lame/psymodel.c: + + Minor bugfix of --nspsytune. + (forgot to merge.) + +2000-12-12 04:50 shibatch + + * frontend/parse.c, include/lame.h, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/util.c, libmp3lame/util.h: + + Added option --athtype which selects ATH formula. + + Some major changes to --nspsytune. + 1. --nspsytune doesn't use pe. + 2. MS psymodel is modified. Added new option --nssafejoint. + 3. some more tunings of short block preecho control. + +2000-12-12 01:11 markt + + * libmp3lame/: lame.c, util.c: + + + Latest checkin from Alex include an rewritten 'Bitrate()' routine. + + This breaks the --abr code, since new routine considers a bitrate of 0 + invalid. Now fixed. + +2000-12-11 22:15 markt + + * misc/Makefile.am: + + added mlame_corr.c to the + EXTRA_DIST line of Makefile.am + +2000-12-11 16:03 aleidinger + + * DEFINES, Makefile.in, frontend/main.c, include/lame.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/quantize_pvt.h, + libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/vorbis_interface.c, mpglib/interface.c, + mpglib/interface.h: + + tries to include every change before the CVS rollback which didn't changes output + +2000-12-11 14:48 aleidinger + + * frontend/gtkanal.c, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/newmdct.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c, libmp3lame/vorbis_interface.c: + + redo gfc->stereo -> gfc->channels_out conversation + +2000-12-11 01:32 markt + + * USAGE: + + updated info regarding the MAD decoder + +2000-12-11 00:34 markt + + * Makefile.am, libmp3lame/lame.c: + + applied patch for cygwin FPE stuff + +2000-12-11 00:01 markt + + * USAGE, configure, configure.in, mlame_corr.c, + frontend/get_audio.c, frontend/get_audio.h, include/lame.h, + libmp3lame/mpglib_interface.c, misc/mlame_corr.c: + + configure: removed all the debug warning flags. it was impossible + to find real problems when compiling in debug mode. + + moved mlame_corr.c into 'misc' directory + + removed some 'size_t' and 'unsigned' from get_audio.c + + made mp3buffer 'unsigned char*' for the mpglib interface routines. + +2000-12-08 13:47 aleidinger + + * auenc, misc/mugeco.sh: + + more portability fixes from Fredrik Mellstrom + +2000-12-07 18:58 aleidinger + + * mlame: + + use sh instead of bash + +2000-12-07 18:55 aleidinger + + * auenc: + + portability patch from Fredrik Mellstrom + +2000-12-05 15:48 aleidinger + + * DEFINES: + + update + +2000-12-05 15:46 aleidinger + + * Makefile.MSVC: + + add scalar.nas + +2000-12-05 15:40 aleidinger + + * configure, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mpglib/Makefile.in: + + regen + +2000-12-05 15:37 aleidinger + + * Makefile.B32, Makefile.MSVC, Makefile.in, config.h.in, + configMS.h, configure.in, frontend/Makefile.am, + frontend/get_audio.c, frontend/get_audio.h, + frontend/portableio.c, libmp3lame/Makefile.am, + libmp3lame/i386/Makefile.in, libmp3lame/i386/cpu_feat.nas, + misc/ath.c, mpglib/Makefile.am: + + play ping-pong with some files (we're now at 2000-12-03 again), ok'ed by Mark + +2000-12-05 01:17 markt + + * DEFINES: + + restored DEFINES. + + Sorry Alexendar - I tried to only revert the *.c and *.h files + to their Nov 21 values (because of test case problems) but + I was unable to get this to work. I was lazy and reverted + entire repository back to Nov 21. + +2000-12-05 01:15 markt + + * DEFINES: + + trying to restore DEFINES + +2000-12-04 14:36 aleidinger + + * Makefile.unix: + + add scalar.nas to build + +2000-12-04 06:31 pgubanov + + * dshow/: PropPage.cpp, PropPage.h: + + Target bitrate fix + +2000-12-04 06:30 pgubanov + + * dshow/: Mpegac.cpp, Mpegac.def, Mpegac.h, PropPage_adv.cpp, + PropPage_adv.h, Property.rc, README, REG.CPP, REG.H, UIDS.H, + dshow.dsp, iaudioprops.h, resource.h: + + CR/LF fix + +2000-12-03 23:27 markt + + * testcase.mp3, libmp3lame/util.c: + + KLEMM_01 defaulted. + + This enables the new ATH formula. + +2000-12-03 23:03 markt + + * libmp3lame/: tables.c, tables.h: + + huffmantab: int changed back to short. + +2000-12-03 23:00 markt + + * DEFINES, Makefile.B32, Makefile.MSVC, Makefile.in, config.h.in, + configMS.h, configure, configure.in, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, + doc/html/contributors.html, doc/html/examples.html, + doc/html/history.html, doc/html/id3.html, doc/html/index.html, + doc/html/lame.css, doc/html/modes.html, doc/html/node6.html, + doc/html/switchs.html, doc/man/Makefile.in, frontend/Makefile.am, + frontend/Makefile.in, frontend/get_audio.c, frontend/get_audio.h, + frontend/gtkanal.c, frontend/main.c, frontend/parse.c, + frontend/portableio.c, include/Makefile.in, include/lame.h, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/pcm.c, libmp3lame/pcm.h, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/version.h, libmp3lame/vorbis_interface.c, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + libmp3lame/i386/cpu_feat.nas, mpglib/Makefile.am, + mpglib/Makefile.in, mpglib/interface.c, mpglib/interface.h: + + + Reverted back to Nov 21 version. + + Added HTML doc from GB + +2000-12-03 17:38 aleidinger + + * configure: + + regen + +2000-12-03 17:37 aleidinger + + * configure.in: + + fix in debugging options + +2000-12-03 14:16 aleidinger + + * DEFINES: + + add KLEMM_36 + +2000-12-03 14:14 aleidinger + + * frontend/portableio.c: + + Portability fix from Frank, you need to define KLEMM_36 to enable it + (no functional change if you leave it disabled): + ---snip--- + It is a hoax to call this code portable-IO: + + - It doesn't work on machines with CHAR_BIT != 8 + - it also don't test this error condition + - otherwise it tries to handle CHAR_BIT != 8 by things like + masking 'putc(i&0xff,fp)' + - It doesn't handle EOF in any way + - it only works with ints with 32 or more bits + - It is a collection of initial buggy code with patching the known errors + instead of CORRECTING them! + For that see comments on the old Read16BitsHighLow() + ---snip--- + +2000-12-03 13:14 aleidinger + + * misc/abx.c: + + Improvements from Frank: + - more input formats (detected by filename) + Improvements by me: + - sanity checks + - works on FreeBSD + +2000-12-01 17:42 aleidinger + + * libmp3lame/: psymodel.c, tables.c, tables.h: + + Patches from Frank: + ---snip--- + defined 4 new types for holding psydata information + psydata is divided into 25 normal tables (the 24 tables + 1 master table) + access via "normal" index instead of scanning through the data + tables are now sparsable, i.e. it is possible to remove unneeded parts + but this is not yet done to avoid to do to much things at once + tables are now smaller + ---snip--- + Hi also did some tests to verify this didn't changes the output. + + I also verified it with "make test" and some regular encoding. + +2000-11-30 10:23 aleidinger + + * DEFINES: + + add description of some compile time defines + +2000-11-30 10:20 aleidinger + + * Makefile.B32: + + sync with recent changes in the other Makefiles: + - HAVExxx -> HAVE_xxx + - HAVE_CONFIG_MS_H + +2000-11-30 10:17 aleidinger + + * frontend/: get_audio.c, get_audio.h: + + - remove check for CHAR_BITS, was a typo from Frank (confirmed by Frank) + - add optimization for unknown SIZEOF_UNSIGNED_LONG (submitted by Frank) + in optimized version of SwapBytesInWords() + - make the optimized version of SwapBytesInWords() the default + (OKed by Mark) + - remove DetermineByteOrder(), we have compile time support for it + +2000-11-30 10:14 aleidinger + + * configure, Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, mpglib/Makefile.in, + dshow/Makefile.in, doc/man/Makefile.in, doc/html/Makefile.in, + doc/Makefile.in, Dll/Makefile.in, frontend/Makefile.in, + include/Makefile.in: + + regen + +2000-11-30 10:11 aleidinger + + * libmp3lame/pcm.c: + + - some modifications from Frank + +2000-11-30 10:08 aleidinger + + * configure.in: + + - compile time check for sizeof(int) + - more compiler warnings for debugging + +2000-11-30 10:07 aleidinger + + * config.h.in, configMS.h: + + - compile time value for sizeof(int) + +2000-11-30 10:07 aleidinger + + * libmp3lame/Makefile.am, frontend/Makefile.am, mpglib/Makefile.am: + + - additional options for lclint + +2000-11-30 10:06 aleidinger + + * libmp3lame/i386/Makefile.am: + + - *.lst instead of specifying every file in "CLEANFILES" + +2000-11-27 16:39 aleidinger + + * libmp3lame/: pcm.c, pcm.h: + + submitted by Frank, first revision of a new lame API, not connected to the build yet + +2000-11-26 20:58 robert + + * libmp3lame/: lame.c, util.c, util.h, i386/cpu_feat.nas: + + Part2 of Frank's Patch + + His List of Changes (part 1 + 2): + + - changed the type of the MP3 byte stream from 'char' to 'unsigned char' + - added some 'const' attributes + - added to lame_internal_flags: gfp, frame_size, coding, frame_count + - one code move inside lame.c (mode_ext), one remove (channels_out) + - two new types in util.c + - some bug fixes with Ogg + - SIMD2 detection + +2000-11-26 10:49 robert + + * frontend/get_audio.c, frontend/main.c, include/lame.h, + libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/newmdct.h, libmp3lame/psymodel.c, + libmp3lame/psymodel.h, libmp3lame/util.h, + libmp3lame/vorbis_interface.c, mpglib/interface.c, + mpglib/interface.h: + + Patch by Frank: + changes from char to unsigned char + +2000-11-25 22:59 robert + + * libmp3lame/quantize.c: + + bug fix for -X6, could result in clicking noises + +2000-11-25 20:40 robert + + * libmp3lame/quantize.c: + + typo "powf()" lend to crashes under windows, fixed + +2000-11-25 18:56 robert + + * libmp3lame/: quantize.c, quantize.h, vbrquantize.c: + + small fix for vbr-mtrh mode + +2000-11-25 18:18 robert + + * libmp3lame/: lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + util.h, vbrquantize.c: + + removed superfluous memset in vbr_noise_shaping2() + some veryminor speed up for cbr + amp_scalefac cleanup + +2000-11-24 17:28 robert + + * frontend/gtkanal.c: + + Patches by Frank: + + - documentation + - introduced gfc->channels_in + - renamed gfc->stereo into gfc->channels_out + (note by me: stereo would imply a boolean type stereo ? yes/no + what's really annoying and confusing is that we didn't used it that way, + but instead stereo=1 -> mono/1-channel, stereo=2 -> stereo/2-channels) + - minor bug fixes for BitrateIndex search + +2000-11-24 17:06 robert + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/encoder.c, + libmp3lame/lame.c, libmp3lame/newmdct.c, libmp3lame/psymodel.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c, + libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/vbrquantize.c: + + Patches by Frank: + + - documentation + - introduced gfc->channels_in + - renamed gfc->stereo into gfc->channels_out + (note by me: stereo would imply a boolean type stereo ? yes/no + what's really annoying and confusing is that we didn't used it that way, + but instead stereo=1 -> mono/1-channel, stereo=2 -> stereo/2-channels) + - minor bug fixes for BitrateIndex search + +2000-11-23 23:19 robert + + * libmp3lame/vbrquantize.c: + + some loops manually unrolled into "Duff's Device" + speed improvement for --vbr-mtrh GCC compiled ca. 5 % overall + speed improvement for --vbr-mtrh Intel 4.5 compiled ca. 1-2 % + looks like the intel compiler does a better job on loops + compared to GCC. + +2000-11-23 15:14 robert + + * Makefile.MSVC: + + compromise between size/speed/multi CPU, thanks to Dmitry + +2000-11-23 13:06 aleidinger + + * misc/ath.c: + + readd support for other systems than linux (at least FreeBSD) + +2000-11-22 21:03 robert + + * Makefile.MSVC: + + added little howto into Makefile.MSVC + think MS C compiler works now again + +2000-11-22 01:09 robert + + * frontend/parse.c: + + cosmetics + +2000-11-22 00:30 robert + + * libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/quantize_pvt.c, libmp3lame/tables.c, + libmp3lame/tables.h, libmp3lame/util.c, libmp3lame/version.h, + misc/ath.c: + + some patches by Frank + + - replace ath.c (has with Lame nothing to do) + - lame.c: A line in my new code exchange (see ATHformula problems) + - util.c: ATHformula changed over from kHz to cycles per second (last util formula with kHz been) + - ATHformula below 20 cycles per second (instead of 10 cycles per second) limits (< 20 cycles per second are Infraschall, + additionally the function becomes there completely useless) + - quantize_pvt.c: Effects of ATHformula + - tables.c: + - something documents - + -number of entries over one increases + (20=>21, 11=>12, etc..) + - SNR_s converted and to the obvious values + 0.15/0.18/0.20/0.25/0.30/0.35/0.40 rounded. + - w1 and w2 with 576 multiply (error is < + 0.91*10^-3, it seems in the tables both to have been rounded off as well as with + minimum error have been rounded) - end to OF DATA marker to the integrity test + inserted - a reading in of the table revises: psymodel.c - fewer error-prone code (fewer + * p++) - meaningful error messages for problem localization - Peeeeeeps in the case of + error - removing from loop (now j, is used only farther back; and adapted by k2) - + ATHformula - util.c - some amusing " while" Konstrukte, which originate still from the + ISO code, transformed into the appropriate " for" Konstrukte (with it first some amusing + things are noticeable, so e.g. why starting from index 0 instead of 1 are looked up?) + +2000-11-21 22:15 robert + + * Makefile.MSVC, frontend/gtkanal.c: + + some reorganization in Makefile.MSVC + it's now more commandline configurable + +2000-11-20 20:45 robert + + * frontend/: mp3x.c, parse.c: + + fix for mp3x.c: showed usage twice + fix for parse.c: lame_version_print() + in some situations the text is longer than 80 characters + now the url will be wrapped into the next line, right aligned + if 80 character aren't enough + +2000-11-20 15:08 robert + + * Makefile.MSVC, Makefile.unix, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/quantize.c: + + overhauled Makefile.MSVC for easier configuration + design bug in parse.c fixed (should not include files from engine) + +2000-11-20 01:48 robert + + * Makefile.MSVC, Dll/BladeMP3EncDLL.c: + + it's now possible to compile lame_enc.dll with Makefile.MSVC + tried the DLL with CD-ex, seems to work + +2000-11-20 00:16 robert + + * Makefile.MSVC: + + updated Compile Flags due to crashes + added rule to generate config.h out of configMS.h + first try to let the dll compile, still does not work + +2000-11-19 14:12 robert + + * Makefile.MSVC, Makefile.unix, frontend/gtkanal.c, + libmp3lame/lame.c: + + Some bugs fixed introduced due to configure stuff and others + +2000-11-19 11:26 aleidinger + + * Makefile.MSVC: + + bugfix for decoder define + +2000-11-18 12:13 aleidinger + + * frontend/Makefile.in: + + regen (unbreak build) + +2000-11-18 12:12 aleidinger + + * frontend/Makefile.am: + + bugfix after removing ieeefloat.* + +2000-11-18 10:50 aleidinger + + * frontend/brhist.c, frontend/get_audio.c, frontend/gpkplotting.c, + frontend/gtkanal.c, frontend/lame.dsp, frontend/lametime.c, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/portableio.c, frontend/rtp.c, + frontend/timestatus.c, libmp3lame/VbrTag.c, + libmp3lame/bitstream.c, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/fft.c, libmp3lame/id3tag.c, + libmp3lame/lame.c, libmp3lame/libmp3lame.dsp, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/reservoir.c, + libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c, misc/abx.c, misc/ath.c, + mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/layer1.c, mpglib/layer2.c, + mpglib/layer3.c, mpglib/mpglib.dsp, mpglib/tabinit.c: + + include configMS.h on Windows + +2000-11-18 10:49 aleidinger + + * Makefile.MSVC, Makefile.DJGPP: + + define HAVE_CONFIG_MS_H for Windows + +2000-11-18 10:49 aleidinger + + * Makefile.in: + + regen (configMS.h) + +2000-11-18 10:48 aleidinger + + * Makefile.am, configMS.h: + + introduce configMS.h for Windows + +2000-11-18 05:40 markt + + * README.Debian, debian/changelog, debian/control, + debian/copyright, debian/cron.d.ex, debian/dirs, debian/docs, + debian/emacsen-install.ex, debian/emacsen-remove.ex, + debian/emacsen-startup.ex, debian/ex.doc-base.package, + debian/files, debian/init.d.ex, debian/manpage.1.ex, + debian/manpage.sgml.ex, debian/menu.ex, + debian/postinst.debhelper, debian/postinst.ex, debian/postrm.ex, + debian/preinst.ex, debian/prerm.debhelper, debian/prerm.ex, + debian/rules, debian/substvars, debian/watch.ex, + frontend/brhist.c, frontend/get_audio.c, frontend/main.c: + + added debian stuff. Make one of the KLEMM's the default + +2000-11-18 04:30 markt + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, Makefile.in, + Makefile.unix, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, dshow/Makefile.in, + frontend/get_audio.c, frontend/portableio.c, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + mpglib/Makefile.in: + + Makefiles: removed ieeefloat.* from makefiles. + get_audio.c: replaced DetermineByteOrder with original routine. + +2000-11-18 04:24 markt + + * frontend/: Makefile.am, Makefile.in, get_audio.c, get_audio.h, + ieeefloat.c, ieeefloat.h, portableio.c, portableio.h: + + Removed ieeefloat.* + +2000-11-15 18:52 aleidinger + + * frontend/get_audio.c: + + only allow fast SwapBytesInWords if SIZEOF_UNSIGNED_LONG is defined + +2000-11-14 12:25 aleidinger + + * libmp3lame/resample.h: + + remove define of INLINE + +2000-11-14 12:24 aleidinger + + * frontend/ieeefloat.c: + + let configure handle little/big endianess + +2000-11-14 12:20 aleidinger + + * libmp3lame/: bitstream.c, fft.c, newmdct.c, psymodel.c, + quantize.c, takehiro.c, util.c: + + INLINE -> inline + +2000-11-14 12:19 aleidinger + + * libmp3lame/machine.h: + + As discussed on the mailinglist: + - correct when to define INLINE/inline + - INLINE -> inline, configure already does something similar + +2000-11-14 12:18 aleidinger + + * libmp3lame/encoder.c: + + compile time resolvable assertions switched to compile time errors + +2000-11-14 12:18 aleidinger + + * libmp3lame/lame.c: + + - compile time resolvable assertions switched to compile time errors + - adjust version string + +2000-11-14 12:17 aleidinger + + * frontend/parse.c: + + - adjust version string + - sort system includes + +2000-11-14 12:16 aleidinger + + * include/lame.h: + + - quiet 4 lclint "errors" + - disable get_lame_about() + +2000-11-14 12:15 aleidinger + + * libmp3lame/version.c: + + - switched from run time generated version strings to compile time + generated ones + - implement void get_lame_version_numerical(lame_version_t *const) + (#ifdef'ed out) + - disable get_lame_about(), snprintf isn't available in Win32 + +2000-11-13 14:11 aleidinger + + * dshow/Makefile.in: + + regen (add dshow.dsw) + +2000-11-13 14:10 aleidinger + + * dshow/Makefile.am: + + add dshow.dsw + +2000-11-13 14:10 aleidinger + + * misc/mugeco.sh: + + shell math instead of awk math (no leading zeros needed) + +2000-11-13 13:42 pgubanov + + * include/lame.h: + + Explicit CDECL for API + +2000-11-13 13:31 pgubanov + + * dshow/: Encoder.h, Encoder.cpp, dshow.dsp: + + Synchronized with current LAME code + +2000-11-13 10:57 aleidinger + + * libmp3lame/i386/Makefile.am: + + support for CONFIG_DEFS + +2000-11-13 10:57 aleidinger + + * libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + frontend/Makefile.in: + + regen + +2000-11-13 10:56 aleidinger + + * libmp3lame/Makefile.am, frontend/Makefile.am: + + - support for CONFIG_DEFS + - possibility to exclude code to lint + +2000-11-13 10:53 aleidinger + + * frontend/ieeefloat.c: + + remove CVS log tag/information, we have "cvs log" for this + +2000-11-13 10:50 aleidinger + + * frontend/get_audio.c: + + - sort includes + - compile time resolvable assertions switched to compile time errors + - we didn't need to determine the size of "unsigned long" at runtime + (KLEMM_10 case), we're able to do it at compile time (with the help + of configure) + +2000-11-13 10:48 aleidinger + + * libmp3lame/vbrquantize.c: + + - move define of TAKEHIRO_IEEE754_HACK into configure.in + - commented out code -> ifdef'ed out code + (I'm on a anti-warning rampage) + +2000-11-13 10:47 aleidinger + + * libmp3lame/quantize_pvt.c: + + move define of TAKEHIRO_IEEE754_HACK into configure.in + +2000-11-13 10:45 aleidinger + + * misc/: abx.c, ath.c: + + - include config.h + - include correct soundcard.h (with support from configure) + +2000-11-13 10:42 aleidinger + + * configure, config.h.in, Makefile.in: + + regen + +2000-11-13 10:41 aleidinger + + * configure.in: + + - handle TAKEHIRO_IEEE754_HACK + - support for 'CONFIG_DEFS="-Dxxx" ./configure' + - handle endianess + - check for soundcard.h + +2000-11-13 10:39 aleidinger + + * mpglib/Makefile.in: + + regen (add possibility to exclude code for linting) + +2000-11-13 10:38 aleidinger + + * mpglib/Makefile.am: + + add possibility to exclude code for linting + +2000-11-13 10:35 aleidinger + + * misc/mugeco.sh: + + add start and stop date/time + +2000-11-13 09:30 pgubanov + + * dshow/dshow.dsw: + + Initial release + +2000-11-12 22:18 aleidinger + + * misc/mugeco.sh: + + add id + +2000-11-12 22:17 aleidinger + + * misc/mugeco.sh: + + bugfix + +2000-11-12 20:45 aleidinger + + * misc/Makefile.in: + + regen (add mugeco.sh) + +2000-11-12 20:45 aleidinger + + * misc/Makefile.am: + + add mugeco.sh + +2000-11-12 20:43 aleidinger + + * misc/mugeco.sh: + + first version of the multi generation encoder script + +2000-11-12 10:57 aleidinger + + * Makefile.in, configure: + + regen (readd dshow) + +2000-11-12 10:56 aleidinger + + * Makefile.am, configure.in: + + readd dshow + +2000-11-11 23:20 pfk + + * Makefile.DJGPP, Makefile.am, Makefile.in, Makefile.in.old, + Makefile.unix, USAGE, configure, configure.in, + frontend/get_audio.c, frontend/get_audio.h, frontend/main.c, + frontend/parse.c, libmp3lame/bitstream.c, libmp3lame/encoder.h, + libmp3lame/lame.c, libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/reservoir.c, libmp3lame/tables.c, libmp3lame/tables.h, + libmp3lame/i386/scalar.nas, misc/abx.c: + + + + A lot of very small changes. Most important is prparing of a more + sofisticated method to determine the bandwidth and the MP3 sampling + frequency. + +2000-11-11 17:26 aleidinger + + * configure, Makefile.in: + + regen (add dshow) + +2000-11-11 17:26 aleidinger + + * configure.in, Makefile.am: + + add dshow + +2000-11-11 17:25 aleidinger + + * dshow/: Makefile.am, Makefile.in: + + initial version + +2000-11-11 05:56 markt + + * testcase.mp3, libmp3lame/encoder.c, libmp3lame/machine.h, + libmp3lame/util.c: + + updated testcases after changing some default settings + +2000-11-11 05:47 markt + + * libmp3lame/encoder.c: + + make RH_VALIDATE_MS the default + +2000-11-11 04:40 markt + + * frontend/parse.c, libmp3lame/lame.c, libmp3lame/util.c: + + undid some of Frank's changes to the resample code. + +2000-11-11 01:55 markt + + * dshow/Encoder.cpp: + + [no log message] + +2000-11-11 01:53 markt + + * dshow/: Encoder.cpp, Encoder.h, Mpegac.cpp, Mpegac.def, Mpegac.h, + PropPage.cpp, PropPage.h, PropPage_adv.cpp, PropPage_adv.h, + Property.rc, README, REG.CPP, REG.H, UIDS.H, dshow.dsp, + iaudioprops.h, resource.h: + + directshow filter for LAME from Peter Gubanov + +2000-11-10 23:18 pfk + + * frontend/get_audio.c, libmp3lame/lame.c, libmp3lame/machine.h, + libmp3lame/resample.c, libmp3lame/resample.h, libmp3lame/util.c, + libmp3lame/util.h, libmp3lame/i386/scalar.nas, misc/scalartest.c: + + + + Resample continued. + + The old code now uses a 31 Tap FIR for HQ coding and a 7 Tap FIR for MQ and + LQ coding. + +2000-11-10 14:42 aleidinger + + * frontend/.cvsignore, libmp3lame/.cvsignore, mpglib/.cvsignore: + + add lclint.txt + +2000-11-10 14:41 aleidinger + + * frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: + + regen (lclint target) + +2000-11-10 14:40 aleidinger + + * config.h.in: + + regen (HAVE_EFENCE) + +2000-11-10 14:39 aleidinger + + * configure: + + regen (disalbe-shared/HAVE_EFENCE) + +2000-11-10 14:36 aleidinger + + * configure.in: + + - new default: no shared lib + - define HAVE_EFENCE if apropriate + +2000-11-10 14:33 aleidinger + + * mpglib/Makefile.am: + + add lclint target (564 code "errors" found so far) + +2000-11-10 14:33 aleidinger + + * frontend/Makefile.am: + + add lclint target (471 code "errors" found so far) + +2000-11-10 14:32 aleidinger + + * libmp3lame/Makefile.am: + + add lclint target (1505 code "errors" found so far) + +2000-11-10 14:31 aleidinger + + * libmp3lame/quantize.c: + + fix RH_AMP (gfc = gfp->internal_flags) + +2000-11-09 22:01 pfk + + * include/lame.h, libmp3lame/bitstream.c, libmp3lame/resample.c, + libmp3lame/resample.h, libmp3lame/i386/scalar.nas, misc/ath.c, + misc/scalartest.c: + + + + Start of resampling. + +2000-11-09 00:29 pfk + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/id3tag.c, + libmp3lame/machine.h, libmp3lame/version.h, misc/ath.c: + + + + Small changes. + + - removed an old function strcasecmp (replaced by fuzzy_strcmp) + - optimized region 2 bitcoder + - remark about version.h (stringification) + - INLINE = inline + static + +2000-11-08 19:59 aleidinger + + * libmp3lame/resample.c, mpglib/layer1.c: + + include assert.h, seems to be forgotten in last commit (how could this + compile?) + +2000-11-07 23:06 pfk + + * frontend/get_audio.c, frontend/parse.c, frontend/timestatus.c, + include/lame.h, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/version.c, + libmp3lame/version.h, misc/ath.c, mpglib/layer1.c: + + + + Changed back to old report interface until we've discussed all possible + versions and make a decision. + + Some bugfixes. Some remarks. + +2000-11-07 15:36 aleidinger + + * configure: + + regen after: + - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + - --disable-analyzer-hooks + - --enable-efence + +2000-11-07 15:36 aleidinger + + * config.h.in: + + HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + +2000-11-07 15:35 aleidinger + + * configure.in: + + - HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + - --disable-analyzer-hooks + - --enable-efence (use the ElectricFence malloc debugging library) + +2000-11-07 15:31 aleidinger + + * frontend/get_audio.c, frontend/main.c, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/vorbis_interface.c: + + HAVE{MPGLIB,VORBIS,GTK} -> HAVE_$1 + +2000-11-07 12:42 aleidinger + + * frontend/Makefile.in, libmp3lame/Makefile.in: + + regen after amiga_mpega.c move + +2000-11-07 12:41 aleidinger + + * frontend/Makefile.am, libmp3lame/Makefile.am: + + follow the move of amiga_mpega.c from libmp3lame to frontend + +2000-11-07 01:59 pfk + + * frontend/brhist.c, frontend/get_audio.c, frontend/get_audio.h, + frontend/main.c, libmp3lame/bitstream.c, libmp3lame/version.h: + + + + minor changes. + + some options can be passed via "export LAMEOPT=..." + +2000-11-07 00:58 cisc + + * Makefile.unix, frontend/amiga_mpega.c, libmp3lame/amiga_mpega.c: + + Moved amiga_mpega.c to frontend where it belongs, and added it to Makefile.unix + +2000-11-07 00:14 markt + + * libmp3lame/: bitstream.c, encoder.c, lame.c, psymodel.c, + psymodel.h, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, reservoir.c, reservoir.h, util.c, util.h, + vbrquantize.c: + + removed lame_global_flags pointer from lame_internal_flags. + +2000-11-06 23:19 markt + + * libmp3lame/: lame.c, quantize_pvt.c, util.c, util.h: + + fixed resample bug when resampling by integer amounts. + +2000-11-06 19:26 cisc + + * API: + + Improved get_lame_xxx() API a little bit more + +2000-11-06 19:22 cisc + + * frontend/gtkanal.c, frontend/parse.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/version.c, libmp3lame/version.h: + + Improved get_lame_xxx() API a little bit more + +2000-11-06 17:29 robert + + * libmp3lame/: quantize.c, quantize_pvt.c: + + fixed segmentation fault in Frank's noise calculation + implemented Todd Richmond's idea to speed up the outer_loop() + +2000-11-06 12:31 aleidinger + + * libmp3lame/i386/.cvsignore: + + add .lst files + +2000-11-06 08:22 markt + + * Makefile.am, configure.in, frontend/.indent.pro, + frontend/brhist.c, libmp3lame/.indent.pro: + + went back to frame counts in VBR display + +2000-11-06 04:24 markt + + * frontend/get_audio.c, mpglib/interface.c, mpglib/mpglib.h: + + cleaned up mpeg header search code in get_audio.c + modified mpglib so we can move VBR header code into mpglib + and out of the frontend code. a little more work is still needed. + +2000-11-06 01:13 pfk + + * libmp3lame/: bitstream.c, bitstream.h, id3tag.c, util.o: + + + + Small changes for fuzzy ID3 tag compare. + +2000-11-06 00:58 cisc + + * frontend/gtkanal.c, frontend/parse.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/version.c, libmp3lame/version.h: + + Modified get_lame_xxx() API so it's more re-entrance friendly (returning a const pointer from a static var that's changed every time the function is called is really dirty!). + +2000-11-05 22:27 pfk + + * testcase.mp3, frontend/parse.c, frontend/rtp.h, + frontend/timestatus.c, libmp3lame/lame.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h: + + + + Minor changes. + Added -X8. + +2000-11-05 18:29 pfk + + * frontend/get_audio.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/quantize.c, libmp3lame/util.h, libmp3lame/util.o: + + + + Changed lame_init_???_init to Class_ID. + On initialization this variable gets the value LAME_ID. + Advantages documented. + + Some little Bugs fixed. + +2000-11-05 17:13 takehiro + + * Makefile.in, configure, configure.in, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + frontend/Makefile.in, frontend/main.c, frontend/parse.c, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/newmdct.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + configure.in: typo fix + newmdct.c: precision fix(?) + +2000-11-05 14:52 aleidinger + + * libmp3lame/i386/Makefile.in: + + regen (clean of generated .lst files) + +2000-11-05 14:52 aleidinger + + * libmp3lame/i386/Makefile.am: + + add generated .lst files to files to clean + +2000-11-05 14:41 aleidinger + + * misc/Makefile.in: + + regen after adding scalartest.c + +2000-11-05 14:40 aleidinger + + * misc/Makefile.am: + + add scalartest.c + +2000-11-05 14:34 aleidinger + + * libmp3lame/: util.c~, util.d, util.o: + + remove generated/backup files, seems they are commited by accident + +2000-11-05 13:15 pfk + + * libmp3lame/: tools.c, tools.h: + + + + add file for generic tools. + +2000-11-05 13:09 pfk + + * testcase.mp3, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c, libmp3lame/lameerror.h, libmp3lame/psymodel.c, + libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/util.c, + libmp3lame/util.c~, libmp3lame/util.d, libmp3lame/util.h, + libmp3lame/util.o, libmp3lame/version.h, + libmp3lame/i386/scalar.nas, misc/scalartest.c: + + + + * Changed psy_data from double to float (this ssem not to change any bit in + MP3, but saves 20 KB). + + * Other, but small modifications + +2000-11-05 00:19 pfk + + * frontend/brhist.c: + + + + bugfix. Sorry + +2000-11-04 18:15 pfk + + * frontend/brhist.c, frontend/brhist.h, frontend/mp3rtp.c, + frontend/rtp.c, frontend/rtp.h, frontend/timestatus.c, + include/lame.h, libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/tables.c, libmp3lame/version.c, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + libmp3lame/i386/scalar.nas, misc/ath.c: + + + + small changes in brhist. + some tests and modifications for streaming MP3. + other unremarkable stuff + +2000-11-04 02:18 pfk + + * doc/html/switchs.html, frontend/get_audio.c, + frontend/timestatus.c: + + + + Unimportant changes. + +2000-11-03 14:21 aleidinger + + * libmp3lame/id3tag.c: + + more 'const'nes, also saves some bytes in the generated .o + +2000-11-03 14:13 aleidinger + + * libmp3lame/i386/Makefile.in: + + regen after change in Makefile.am + +2000-11-03 14:13 aleidinger + + * libmp3lame/i386/Makefile.am: + + remove trailing backslash in last line of EXTRA_DIST + +2000-11-03 14:08 aleidinger + + * doc/html/contributors.html: + + add myself to contributors + +2000-11-03 14:07 aleidinger + + * configure: + + NOTERMCAP/TERMCAP_AVAILABLE -> HAVE_TERMCAP + +2000-11-03 14:04 aleidinger + + * frontend/brhist.c, configure.in, config.h.in: + + NOTERMCAP/TERMCAP_AVAILABLE -> HAVE_TERMCAP + +2000-11-03 14:00 aleidinger + + * frontend/parse.c: + + add missing include + +2000-11-03 00:47 pfk + + * frontend/brhist.c, frontend/console.c, frontend/console.h, + frontend/mp3rtp.c, frontend/parse.c, frontend/timestatus.c, + include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/resample.h, + libmp3lame/util.c, libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/i386/Makefile.am, libmp3lame/i386/Makefile.in, + libmp3lame/i386/scalar.nas: + + + + Minor changes. Biggest ist in bitstream.c, but triggered by KLEMM_14. + +2000-11-02 17:16 pfk + + * TODO, frontend/brhist.c, frontend/console.c, frontend/console.h, + libmp3lame/resample.c, libmp3lame/resample.h, + libmp3lame/version.c, libmp3lame/i386/scalar.nas: + + + + These are minor changes to a version which fails on my computer. + + * MMX reporting added to get_lame_version(9 as requested by TODO. + * Added 5 files for resampling and console IO. + +2000-11-02 12:57 aleidinger + + * mpglib/: common.c, common.h: + + bugfix for --disable-decoder-layer1 case + +2000-11-01 21:56 markt + + * LICENSE, frontend/parse.c, include/lame.h: + + updated LICENSE to remove comments about libsndfile, + since libsndfile no longer included in library + +2000-11-01 21:54 markt + + * libmp3lame/: .indent.pro, bitstream.c, version.h: + + added indent.pro back to CVS + +2000-11-01 18:25 markt + + * STYLEGUIDE, libmp3lame/encoder.c: + + some more context fixes + +2000-11-01 18:22 markt + + * libmp3lame/: newmdct.c, psymodel.c, quantize.c, quantize_pvt.c, + reservoir.c, reservoir.h, takehiro.c, util.c, vbrquantize.c: + + removed more 'context'. + + lame now segfaults. + +2000-11-01 18:06 markt + + * libmp3lame/: .indent.pro, VbrTag.c, fft.c, fft.h, id3tag.c, + lame.c, newmdct.h, psymodel.h, quantize.h, quantize_pvt.h: + + removing 'context' + +2000-11-01 17:56 markt + + * libmp3lame/: bitstream.c, bitstream.h, util.h: + + restored bitstream.c to original. + drain_into_ancillary_data was written the way it is + on purpose. dont change it without checking with me first + +2000-11-01 17:46 markt + + * libmp3lame/util.h: + + [no log message] + +2000-11-01 17:40 markt + + * libmp3lame/util.h: + + removed 'context' + why was lame_internal_flags renamed context? + This is under the catagory of cosmetic. + +2000-11-01 17:32 markt + + * STYLEGUIDE, frontend/get_audio.c, frontend/parse.c, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/quantize.c, libmp3lame/quantize_pvt.c: + + removed some cosmetic changes. + +2000-11-01 16:09 robert + + * frontend/: mp3rtp.c, rtp.c: + + mp3rtp was broken, does now compile again + +2000-11-01 14:35 robert + + * libmp3lame/: quantize.c, quantize_pvt.h: + + only cosmetic changes, done by indent + +2000-11-01 14:31 robert + + * frontend/.indent.pro, libmp3lame/.indent.pro, misc/.indent.pro: + + these files are used by the indent program to pretty format sources + +2000-11-01 00:01 robert + + * frontend/: brhist.c, brhist.h, main.c, timestatus.c: + + some more brhist pretty print + +2000-10-31 13:58 aleidinger + + * frontend/Makefile.in: + + regen after bugfix in Makefile.am + +2000-10-31 13:57 aleidinger + + * frontend/Makefile.am: + + fix build of mp3x + +2000-10-31 13:18 robert + + * Makefile.MSVC, frontend/brhist.c, frontend/lametime.h: + + fixes for bitrate histogram and MS compilation + +2000-10-31 12:18 robert + + * frontend/: lametime.c, parse.c, timestatus.c: + + quick fixes for Console_IO stuff + Console_IO is declared in brhist.c, but when compiling + without bitrate histogram capabilities the code would + not compile anymore + +2000-10-30 23:58 robert + + * Makefile.MSVC, Makefile.unix: + + analyzer stuff was moved to frontend + because of automake/configure + +2000-10-30 22:34 robert + + * libmp3lame/vbrquantize.c: + + Takehiro's IEEE754 hack for VBR modes new and mtrh + +2000-10-30 11:28 aleidinger + + * Makefile.in: + + we didn't need acconfig.h, so don't depend on it + +2000-10-30 10:51 robert + + * libmp3lame/util.c: + + BUG fix for debug code for BUG fix for fill_buffer_resample() ;-( + +2000-10-30 10:48 robert + + * libmp3lame/util.c: + + BUG fix for fill_buffer_resample() + +2000-10-29 22:26 robert + + * libmp3lame/util.c: + + small fix for fill_buffer_resample() + some buffers where too small allocated, but this will + not really help, the routine has some ugly looking points + left that need to be fixed. + +2000-10-29 21:11 robert + + * libmp3lame/: VbrTag.c, bitstream.c, bitstream.h, encoder.c, + id3tag.c, lame.c, quantize.c, quantize_pvt.c, reservoir.c, + reservoir.h, util.c, util.h, vbrquantize.c: + + gfp gfc stuff FINISHED for now + +2000-10-29 20:03 robert + + * libmp3lame/: encoder.c, fft.c, fft.h, newmdct.c, newmdct.h, + psymodel.c, psymodel.h, quantize_pvt.h, takehiro.c: + + a step further with this gfp gfc stuff + +2000-10-29 19:15 robert + + * libmp3lame/: quantize_pvt.h, takehiro.c, util.h: + + some more gfc stuff + +2000-10-29 18:12 robert + + * libmp3lame/: encoder.c, quantize.c, quantize.h, quantize_pvt.c, + quantize_pvt.h, takehiro.c, vbrquantize.c: + + more on gfp gfc reorganization + +2000-10-29 16:37 robert + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h, + takehiro.c, vbrquantize.c: + + gfp gfc reorganization + +2000-10-29 13:58 robert + + * libmp3lame/: fft.c, lame.c, psymodel.c, quantize.c, + quantize_pvt.c, util.h: + + data encapsulating Naoki's psymode + +2000-10-29 12:52 aleidinger + + * .cvsignore: + + add some config.h related files + +2000-10-29 12:51 aleidinger + + * configure: + + now with support for config.h + +2000-10-29 12:50 aleidinger + + * Makefile.in, Dll/Makefile.in, doc/Makefile.in, + doc/html/Makefile.in, doc/man/Makefile.in, frontend/Makefile.in, + include/Makefile.in, libmp3lame/Makefile.in, + libmp3lame/i386/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + regenerated after adding support for config.h + +2000-10-29 12:49 aleidinger + + * frontend/Makefile.am, libmp3lame/Makefile.am, mpglib/Makefile.am: + + support for config.h + +2000-10-29 12:47 aleidinger + + * config.h.in, stamp-h.in: + + config.h support + +2000-10-29 12:45 aleidinger + + * frontend/brhist.c, frontend/get_audio.c, frontend/gpkplotting.c, + frontend/gtkanal.c, frontend/ieeefloat.c, frontend/lametime.c, + frontend/main.c, frontend/mp3rtp.c, frontend/mp3x.c, + frontend/parse.c, frontend/portableio.c, frontend/rtp.c, + frontend/timestatus.c, configure.in, aclocal.m4: + + support for config.h + +2000-10-29 12:41 aleidinger + + * mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/layer1.c, mpglib/layer2.c, + mpglib/layer3.c, mpglib/tabinit.c, libmp3lame/VbrTag.c, + libmp3lame/amiga_mpega.c, libmp3lame/bitstream.c, + libmp3lame/debugscalefac.c, libmp3lame/encoder.c, + libmp3lame/fft.c, libmp3lame/id3tag.c, libmp3lame/lame.c, + libmp3lame/mpglib_interface.c, libmp3lame/newmdct.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c, + libmp3lame/quantize_pvt.c, libmp3lame/reservoir.c, + libmp3lame/tables.c, libmp3lame/takehiro.c, libmp3lame/util.c, + libmp3lame/vbrquantize.c, libmp3lame/version.c, + libmp3lame/vorbis_interface.c: + + support for config.h + +2000-10-28 21:57 pfk + + * configure, libmp3lame/bitstream.c, libmp3lame/bitstream.h, + libmp3lame/lame.c: + + + + CRC table based code removed + + Ease CRC header calculation + +2000-10-28 14:23 pfk + + * frontend/get_audio.c, frontend/lametime.c, frontend/lametime.h, + frontend/main.c, frontend/mp3x.c, frontend/parse.c, + include/lame.h, libmp3lame/bitstream.c, libmp3lame/lame.c, + libmp3lame/util.c, libmp3lame/util.h: + + + + Moved 2 functions from util.c to lametime.c + + Fixed a memory leak caused by an early return + + bitstream: Local crc moved to gfp->crcvalue, next step can be to remove a + function parameter + + minor changes + +2000-10-28 12:31 robert + + * include/lame.h, libmp3lame/VbrTag.c, libmp3lame/bitstream.c, + libmp3lame/lame.c, libmp3lame/util.c, libmp3lame/util.h: + + hunting some BUGs, but still not found + encoding a mono VBR resampled to 11 kHz shows some strange behaviour + +2000-10-28 10:47 aleidinger + + * Dll/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/i386/Makefile.in, + misc/Makefile.in, mpglib/Makefile.in: + + don't use gtar instead of tar + +2000-10-28 10:42 aleidinger + + * lame.spec: + + lame.spec gets now generated at configure time from lame.spec.in + +2000-10-28 10:40 aleidinger + + * Makefile.am, Makefile.in: + + - add lame.spec.in to distribution + - remove lame.spec from distribution + - show how long lame needs for the testcase + +2000-10-28 10:35 aleidinger + + * configure.in, configure: + + - generate lame.spec from lame.spec.in + - CPU specific optimizations (x86, gcc 2.7.3.x or better) + +2000-10-28 10:32 aleidinger + + * lame.spec.in: + + template for configure to generate lame.spec + +2000-10-28 01:29 pfk + + * include/lame.h, libmp3lame/lame.c, libmp3lame/util.c, + libmp3lame/util.h, libmp3lame/version.h: + + + + short => sample_t in lame_encode_buffer and all the related stuff + + some essential but simple speedups in resampling code + + resulting MP3 will be different from previous + + code modification not finished, this is only half of the work + +2000-10-27 23:04 robert + + * libmp3lame/vbrquantize.c: + + max_range tables + +2000-10-27 21:50 pfk + + * frontend/main.c, libmp3lame/lame.c, libmp3lame/psymodel.c, + libmp3lame/util.c, libmp3lame/util.h: + + + + KLEMM_04(old) removed, scalar routines introduced. + +2000-10-27 21:34 robert + + * libmp3lame/vbrquantize.c: + + LSF needs some different max_range tables + I plugged some in and it seems to work + they are designed after max_sfac_tab[6][4] + you may look into scale_bitcount_lsf() + +2000-10-27 16:30 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + LSF hack for vbr-mtrh VBR mode + +2000-10-27 15:48 takehiro + + * libmp3lame/newmdct.c: + + bit optimization + +2000-10-27 11:27 robert + + * libmp3lame/quantize_pvt.c, mpglib/layer3.c: + + BUG in frame analyzer fixed, there was some wild pointer used + in layer3.c in preflag condition + +2000-10-27 11:19 takehiro + + * libmp3lame/: machine.h, tables.c, tables.h, + i386/choose_table.nas: + + 64bit int lookup table moved from C code to asm code. + +2000-10-26 19:07 pfk + + * frontend/brhist.c, frontend/get_audio.c, frontend/mp3rtp.c, + frontend/timestatus.c, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/psymodel.c, libmp3lame/util.c, misc/ath.c: + + + + Make some modifications active. + + No Termcap terms are now handled in the same way like termcap terms. + +2000-10-25 22:18 robert + + * libmp3lame/: quantize.c, quantize.h, quantize_pvt.h, + vbrquantize.c: + + improved vbr_mtrh VBR mode + +2000-10-25 14:03 aleidinger + + * frontend/Makefile.am: + + prevent the CVS Id from being integrated into Makefile.in + +2000-10-24 22:47 robert + + * Makefile.MSVC, Makefile.unix, libmp3lame/quantize.c: + + improved RH_AMP + +2000-10-24 22:17 pfk + + * frontend/get_audio.c, libmp3lame/mpglib_interface.c, + libmp3lame/psymodel.c: + + + + Better syncword recognization + +2000-10-24 18:11 takehiro + + * configure, configure.in, frontend/Makefile.in, + libmp3lame/machine.h: + + configure/configure.in + added "--enable-all-float", which make FLOAT8 as float + + machine.h + FLOAT (and FLOAT8) typedef fix for alpha processor + +2000-10-24 17:44 takehiro + + * libmp3lame/newmdct.c: + + loop integration. + "make test" may find some difference caused by some rounding problem + +2000-10-24 15:01 robert + + * libmp3lame/quantize.c: + + fix for -q7 mode + +2000-10-24 13:54 robert + + * libmp3lame/quantize.c: + + typo + +2000-10-24 13:28 robert + + * libmp3lame/: quantize.c, quantize_pvt.c, quantize_pvt.h: + + some simplifications + +2000-10-24 11:40 robert + + * Makefile.MSVC, Makefile.unix, libmp3lame/quantize.c: + + improvements, need some compile time defines, look into Makefile.unix + +2000-10-23 18:59 robert + + * libmp3lame/machine.h: + + FLOAT is float, FLOAT8 is double again ;-) + +2000-10-23 15:50 takehiro + + * Makefile.am, Makefile.in, frontend/Makefile.in: + + more make test update + +2000-10-23 15:44 takehiro + + * libmp3lame/machine.h: + + sorry, mistaken check in.... + +2000-10-23 15:40 takehiro + + * Makefile.am, Makefile.in, lame.spec, Dll/Makefile.in, + doc/Makefile.in, doc/html/Makefile.in, doc/man/Makefile.in, + frontend/Makefile.in, include/Makefile.in, + libmp3lame/Makefile.in, libmp3lame/machine.h, + libmp3lame/i386/Makefile.in, misc/Makefile.in, + mpglib/Makefile.in: + + "make test" update + +2000-10-23 15:40 takehiro + + * libmp3lame/bitstream.c: + + cosmetic change + +2000-10-23 10:16 aleidinger + + * Makefile.in: + + update after change to Makefile.am + +2000-10-23 10:16 aleidinger + + * Makefile.am: + + let test targetbuild frontend/lame if it isn't already build + - didn't work with "make -j 4 test" + - IMHO the previous version was a feature + (requested by Takehiro-san) + + splittet test target into more subtargets + + corrected testg target + + added CVS_RSH=ssh to update/diff target + +2000-10-22 22:50 robert + + * libmp3lame/psymodel.c: + + fix for short block I introduced 2000-10-19 + +2000-10-22 18:20 pfk + + * Makefile.unix, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.c, frontend/main.c, frontend/parse.c, + frontend/parse.h, include/lame.h, libmp3lame/bitstream.c, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/lame.c, + libmp3lame/reservoir.c, libmp3lame/util.c, libmp3lame/util.h, + libmp3lame/version.c, libmp3lame/version.h, misc/ath.c: + + + + A lot of small changes, most of them must be switched on via compile time + defines. + + vbr displays shows MS and LR frames different. + + vbr displays depends on the current display width. + +2000-10-22 15:36 takehiro + + * Makefile.am: + + do "make test" with one step + +2000-10-22 15:28 takehiro + + * .cvsignore, Dll/.cvsignore, doc/.cvsignore, doc/html/.cvsignore, + doc/man/.cvsignore, frontend/.cvsignore, include/.cvsignore, + libmp3lame/.cvsignore, libmp3lame/i386/.cvsignore, + misc/.cvsignore, mpglib/.cvsignore: + + igonore Makefile.am things (.libs, .deps, and so on) + +2000-10-22 15:17 takehiro + + * libmp3lame/.cvsignore, mpglib/.cvsignore: + + added *.lo + +2000-10-22 12:06 aleidinger + + * ltconfig, ltmain.sh, missing, mkinstalldirs: + + generated by automake/libtool + +2000-10-22 12:02 aleidinger + + * frontend/Makefile.in, libmp3lame/Makefile.in, mpglib/Makefile.in: + + generated by automake + +2000-10-22 12:01 aleidinger + + * configure: + + now with automake/libtool support + +2000-10-22 12:00 aleidinger + + * confdefs.h: + + seems to get generated at configure time + +2000-10-22 11:58 aleidinger + + * aclocal.m4: + + generated by aclocal + +2000-10-22 11:58 aleidinger + + * configure.in: + + - add asm support if nasm is found + (if we support this, see ASM_FOR_ARCH) + - added automake support + - added libtool support + (a Dll user should look into "AC_LIBTOOL_WIN32_DLL" of the libtool + documentation and send apropriate patches) + - --enable-{mp3x,mp3rtp} + - only build analyzer if GTK is present + - set CPUTYPE (to use asm routines where supported) + - --enable-decoder* -> --disable-decoder* + +2000-10-22 11:57 aleidinger + + * acinclude.m4: + + remove GTK entry, "aclocal" takes care of it in aclocal.m4 + +2000-10-22 11:53 aleidinger + + * misc/Makefile.am: + + Initial automake support + +2000-10-22 11:52 aleidinger + + * Dll/Makefile.in, doc/Makefile.in, doc/html/Makefile.in, + doc/man/Makefile.in, include/Makefile.in, + libmp3lame/i386/Makefile.in, misc/Makefile.in, Makefile.in: + + generated by automake + +2000-10-22 11:50 aleidinger + + * frontend/: README.Win32, gpkplotting.c, gpkplotting.h, gtkanal.c, + gtkanal.h, mp3x.c, mp3x.dsp, mp3x.dsw: + + moved from analyzer/... because automake didn't allows sources for one + program/library to be in more than one directory (at least without + hacks) + +2000-10-22 11:46 aleidinger + + * Makefile.am: + + - initial automake support + - delete testcase.new.mp3 on "clean" + - added "update" target, does a cvs update + - added "diff" target, does a cvs diff -u + +2000-10-22 11:44 aleidinger + + * frontend/Makefile.am: + + - initial automake support + - conditionally build mp3x/mp3rtp + +2000-10-22 11:43 aleidinger + + * libmp3lame/: Makefile.am, i386/Makefile.am: + + Initial automake/libtool support: + - if nasm is detected and we have asm for this @CPUTYPE@: + * include asm support + - didn't build without decoder: "undefined reference to `mpg123_pinfo'" + +2000-10-22 11:41 aleidinger + + * mpglib/Makefile.am: + + Initial automake/libtool support: + - mpglib gets linked to libmp3lame.{a,so} + - isn't installed on it's own + +2000-10-22 11:39 aleidinger + + * Dll/Makefile.am, doc/Makefile.am, doc/html/Makefile.am, + doc/man/Makefile.am, include/Makefile.am: + + Initial automake support. + +2000-10-22 10:19 takehiro + + * libmp3lame/: l3side.h, newmdct.c, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c, vbrquantize.c: + + 1. changed sfb_smax to sfb_smin. it is really minimum number, and so confusing. + 2. prepare for mixed block + 3. prepare for asm quantize code + +2000-10-22 09:41 takehiro + + * libmp3lame/: fft.c, util.h: + + no need to be in internal flag for constants + +2000-10-22 09:27 takehiro + + * libmp3lame/: Makefile.in, encoder.c, newmdct.c, newmdct.h, + util.h: + + 1 (util.h) deleted unused flag from internal flags + 2 (newmdct) in place code of mdct_short + 3 some cosmetic change + +2000-10-22 08:25 takehiro + + * libmp3lame/newmdct.c: + + code clean up + +2000-10-22 06:56 takehiro + + * libmp3lame/machine.h: + + deleted old remark about asm routine + +2000-10-22 06:56 takehiro + + * libmp3lame/newmdct.c: + + code cleanup + +2000-10-21 19:28 takehiro + + * libmp3lame/: quantize_pvt.c, i386/choose_table.nas: + + reduce memory assumption little and bit faster choose_table + +2000-10-21 19:11 takehiro + + * libmp3lame/newmdct.c: + + add coment and remove unused code + +2000-10-21 19:01 takehiro + + * libmp3lame/newmdct.c: + + bit optimization and now thread safe, I think. + +2000-10-21 17:24 takehiro + + * libmp3lame/newmdct.c: + + brute force loop unrolling and some elimination of multiple. + bit faster. + +2000-10-21 13:05 robert + + * libmp3lame/: encoder.c, quantize.c, quantize_pvt.c, + quantize_pvt.h, vbrquantize.c: + + frame analyzer info will now be set up in main encoding + routine only, for the whole frame. problem with SCFSI fixed + +2000-10-20 21:46 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Added lame alpha, beta version and if MMX is enabled to the version interface, + should be backward compatible + +2000-10-20 21:43 afaber + + * frontend/brhist.c: + + Fixed histgramming display for Win32, added fflush + +2000-10-20 20:50 afaber + + * frontend/: brhist.c, brhist.h: + + Resolved const mistach beween BRHIST function declartions + +2000-10-20 20:49 afaber + + * libmp3lame/libmp3lame.dsp: + + Added MPGLIB define + +2000-10-20 19:28 robert + + * misc/: abx.c, ath.c: + + initial checkin + +2000-10-20 13:04 robert + + * libmp3lame/: quantize.c, vbrquantize.c: + + I think I fixed a BUG in subblock gain code + +2000-10-19 21:10 robert + + * frontend/parse.c, include/lame.h, libmp3lame/lame.c, + libmp3lame/psymodel.c, libmp3lame/quantize.c: + + fixed BUG in atQ table, removed --raise-smr stuff + +2000-10-18 17:34 robert + + * libmp3lame/lame-analysis.h: + + no way to disable analysis for lame-lib + +2000-10-18 16:47 robert + + * libmp3lame/lame-analysis.h, mpglib/layer3.c, mpglib/mpglib.h: + + fixed some ambiguities + define NOANALYSIS as suggested in INSTALL if you don't want + to collect some analysis data + +2000-10-18 11:18 robert + + * frontend/brhist.c, include/lame.h, libmp3lame/lame.c: + + some tweaks + +2000-10-18 11:02 shibatch + + * libmp3lame/psymodel.c: + + Rewrote double to FLOAT8. + +2000-10-18 10:55 shibatch + + * libmp3lame/psymodel.c: + + Added short block pre-echo control to --nspsytune. + This improves castanets.wav. + +2000-10-17 22:59 pfk + + * STYLEGUIDE, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.h, frontend/main.c, frontend/parse.c, + frontend/parse.h, frontend/timestatus.c, include/lame.h, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/psymodel.c, libmp3lame/util.h: + + + + * small changes to prepare to add a lame float interface + * other stuff + +2000-10-17 00:13 pfk + + * Makefile.unix, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.c, frontend/timestatus.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/bitstream.c, libmp3lame/fft.c, + libmp3lame/lame.c, libmp3lame/mpglib_interface.c, + libmp3lame/quantize_pvt.c, libmp3lame/version.c, + libmp3lame/version.h: + + + + removed some shorts. + two version of version report + some minor changes + +2000-10-16 22:19 robert + + * frontend/: brhist.c, main.c: + + cosmetics + +2000-10-16 19:55 florian + + * Makefile.in, configure, configure.in, libmp3lame/Makefile.in, + libmp3lame/lame.c, mpglib/Makefile.in: + + integrated Alexanders patch, minor bug fixes + +2000-10-16 19:29 robert + + * libmp3lame/: tables.c, tables.h, takehiro.c: + + takehiro.c now thread safer + +2000-10-16 19:27 robert + + * frontend/brhist.h: + + missing include files + +2000-10-16 10:03 robert + + * Makefile.unix: + + some convenience + +2000-10-16 02:40 markt + + * include/lame.h, libmp3lame/VbrTag.c: + + [no log message] + +2000-10-16 02:29 markt + + * include/lame.h: + + added some prototypes. no code yet + +2000-10-16 02:29 markt + + * API: + + added some lame_set_variable prototypes in lame.h + +2000-10-16 02:17 markt + + * frontend/mp3rtp.c, include/lame.h, libmp3lame/fft.h, + libmp3lame/lame.c: + + fixed fft.h defines + +2000-10-16 02:12 markt + + * API, Makefile.in, configure, configure.in: + + broken frame analyzer fixed - -DANALYSIS was missing from default + library build + +2000-10-16 01:38 markt + + * frontend/: get_audio.c, main.c, mp3rtp.c: + + fixed broken fskip() + +2000-10-16 01:37 markt + + * STYLEGUIDE, Dll/BladeMP3EncDLL.c: + + fixed Frank's broken fskip() + +2000-10-16 00:44 markt + + * libmp3lame/: Makefile.in, mpglib_interface.c, util.c, util.h: + + made data for resampling dynamically allocated + +2000-10-16 00:28 pfk + + * STYLEGUIDE, frontend/brhist.c, frontend/brhist.h, + frontend/get_audio.c, frontend/parse.c, frontend/timestatus.c, + frontend/timestatus.h: + + + + Most changes must be switched on via KLEMM_0[0-9]. + Also some minor changes. + Start of short documenation of the source code. + + _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ + + **************** + *** #defines *** + **************** + + KLEMM_01: Use my experimental data to calculate ATH + But masking for >16 kHz seems to be buggy. + KLEMM_02: lame_set_stream_binary_mode() and lame_get_file_size() as + lib function, still searching a better place for that + KLEMM_03: not more used + KLEMM_04: faster FIR filter with less rounding errors + KLEMM_05: sparse VBR bitrate display + KLEMM_06: fskip() uses fseek() if possible + KLEMM_07: use of timestatus_klemm.c which only uses timestatus.c functions, + some code clarification and documentation + +2000-10-15 22:46 markt + + * libmp3lame/: util.c, util.h: + + lowpass filtering data structurs made dynamic + +2000-10-15 21:23 markt + + * USAGE: + + [no log message] + +2000-10-15 21:17 markt + + * frontend/get_audio.c, libmp3lame/VbrTag.c: + + Fixed bug parsing Xing VBR header: lame will now compute + correct number of frames when decoding + +2000-10-15 20:54 markt + + * Makefile.unix, frontend/get_audio.c, frontend/main.c: + + playback bugfix + +2000-10-15 20:12 markt + + * Dll/BladeMP3EncDLL.c: + + msv6 dll project files updated + +2000-10-15 20:11 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw (MSVC6): + + msvc6 update + +2000-10-15 20:05 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: + + reverted back to MSVC5 project files. + accidently changed them to my MSVC6 versions. + + Albert, when are you goint to upgrade!!!! + +2000-10-15 20:02 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: + + msv6 dll project files updated + +2000-10-15 19:51 markt + + * libmp3lame/lame.c: + + fixed typo + +2000-10-15 19:33 markt + + * USAGE, include/lame.h, libmp3lame/lame.c: + + updated USAGE + +2000-10-15 19:10 markt + + * API, USAGE, Dll/BladeMP3EncDLL.c: + + edited API, USAGE + +2000-10-14 19:18 robert + + * libmp3lame/i386/cpu_feat.nas: + + BUG in 3DNow detection fixed, was my faulty porting to NASM + +2000-10-14 11:42 robert + + * libmp3lame/: takehiro.c, util.h: + + takehiro.c now thread safe ? + +2000-10-14 10:08 pfk + + * frontend/brhist.c, libmp3lame/psymodel.c: + + + + psymodel: FIR filter changed, trigger with KLEMM_04 + brhist: display changed back to the old display, new display must be + triggered by KLEMM_05 + +2000-10-13 22:58 pfk + + * frontend/brhist.c, frontend/brhist.h, frontend/main.c, + frontend/timestatus.c, include/lame.h, libmp3lame/util.c: + + + + Changes are commented in brhist.c or must be enabled with KLEMM_xx. + +2000-10-13 16:43 robert + + * frontend/brhist.c, frontend/brhist.h, frontend/main.c, + include/lame.h, libmp3lame/lame.c: + + bitrate histogram is working again + +2000-10-13 15:24 robert + + * Makefile.unix: + + small fixes + +2000-10-13 05:37 florian + + * frontend/Makefile.in, frontend/Makefile.in.old, + libmp3lame/Makefile.in, libmp3lame/Makefile.in.old: + + prepare for automake: new vars, system dependent checks to configure.in + +2000-10-13 05:17 florian + + * Makefile.in, Makefile.in.old, configure, configure.in, + configure.in.old: + + prepare for automake: new vars, system dependent checks to configure.in + +2000-10-12 19:19 florian + + * acinclude.m4, aclocal.m4, configure.in: + + Preparing for automake + +2000-10-12 17:48 robert + + * Makefile.MSVC, Makefile.unix: + + NASM specific fixes + +2000-10-12 17:19 robert + + * libmp3lame/i386/cpu_feat.nas: + + CPU feature code using NASM + +2000-10-12 17:18 robert + + * Makefile.MSVC, libmp3lame/Makefile.in, libmp3lame/util.c: + + CPU feature detection code now using NASM + +2000-10-12 08:59 shibatch + + * libmp3lame/: psymodel.c, quantize.c, quantize_pvt.c, util.h: + + Add two new features to --nspsytune. + 1. New block type selecting algorithm. + 2. Improved noise shaping at high bitrate CBR. Turned on by -q1 --nspsytune. + +2000-10-12 00:50 robert + + * Makefile.MSVC: + + it's getting better :-) + +2000-10-12 00:49 robert + + * frontend/parse.c: + + BUG fix in case LAME compiled without GTK, then called with -g + +2000-10-11 23:08 robert + + * libmp3lame/: Makefile.in, quantize_pvt.c, util.c: + + fixes for Frank's ATH + +2000-10-11 18:45 robert + + * include/lame.h, libmp3lame/lame.c: + + added alternative to lame_encode_finish: + - lame_encode_flush, does the same as lame_encode_finish + but will not free lame internal buffers + - lame_close, will free lame internal buffers + + So the following is equivalent to lame_encode_finish + lame_encode_flush() + <do some stuff like statistics> + lame_close() + + But this adds the possibility to get some more + analyzing after all frames are encoded. + + Suggested to use with + lame_bitrate_hist() + lame_stereo_mode_hist() + +2000-10-11 17:54 robert + + * libmp3lame/: encoder.c, lame.c, util.c, util.h: + + simple statistics (histogram) added, + problem: lame_encode_finish() also frees internal buffer + solution: two new functions splitting lame_encode_finish() + into lame_encode_flush() and lame_close() + +2000-10-10 23:18 pfk + + * libmp3lame/util.c: + + + + Additional ATH calculation (enabled by KLEMM_01). + +2000-10-10 20:26 robert + + * libmp3lame/: lame.c, takehiro.c: + + use of MMX should be safe on non MMX CPUs now, + but this will not work on Microsoft platforms. + We will have to adapt the assembler routines + for the MS assembler or for NASM. + +2000-10-10 19:36 robert + + * Makefile.MSVC, libmp3lame/util.c: + + Makefile work + +2000-10-10 18:34 robert + + * libmp3lame/lame.c: + + cut'n'paste devil :( + +2000-10-10 18:28 robert + + * libmp3lame/: lame.c, util.c, util.h: + + Frank's CPU feature detection code added + +2000-10-10 17:59 afaber + + * Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h, frontend/brhist.c, + libmp3lame/VbrTag.c, libmp3lame/libmp3lame.dsp: + + MSVC Win32 updates, added Alpha Beta version numbers to DLL version structure + (should be backward compatible) + +2000-10-10 05:31 markt + + * TODO: + + notes about what needs to be done for configure + +2000-10-09 19:55 markt + + * libmp3lame/: encoder.h, lame-analysis.h: + + [no log message] + +2000-10-09 19:55 markt + + * TODO, frontend/timestatus.c, include/lame.h: + + generic cleanup + +2000-10-09 19:42 markt + + * TODO: + + frame analyzer now works with ./configure, at least for linux + +2000-10-09 19:29 markt + + * Makefile.B32, Makefile.DJGPP, Makefile.MSVC, TODO, configure, + configure.in, frontend/get_audio.c, frontend/get_audio.h: + + attept to fix Makefiles.B32, DJGPP, MSVC. + +2000-10-09 16:27 markt + + * libmp3lame/lame-analysis.h: + + [no log message] + +2000-10-09 16:23 markt + + * Makefile.in, Makefile.unix, aclocal.m4, configure, configure.in, + frontend/Makefile.in, frontend/main.h, + libmp3lame/lame-analysis.h: + + moved mp3x -> analyzer (name was clashing with executable name) + work on configure to get mp3x to compile (not yet done) + but gtk stuff in configure.in now working + +2000-10-09 14:38 markt + + * libmp3lame/lame.c: + + added a comment about downsampling + +2000-10-08 20:08 markt + + * frontend/main.c, frontend/timestatus.c, include/lame.h, + libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, libmp3lame/encoder.c, + libmp3lame/lame.c: + + cleaned up VBR tag stuff + +2000-10-08 19:43 markt + + * frontend/get_audio.c, frontend/get_audio.h, frontend/main.c, + frontend/main.h, frontend/mp3rtp.c, frontend/parse.c, + frontend/parse.h, frontend/timestatus.c, frontend/timestatus.h, + include/lame.h, libmp3lame/lame.c, libmp3lame/version.c, + libmp3lame/version.h: + + lots of changes, just trying to get things to compile. + +2000-10-08 17:48 markt + + * libmp3lame/id3tag.h: + + Trying to add id3tag.h again. + +2000-10-07 08:25 robert + + * lame4dos.bat: + + bug fixes by Alexander Stumpf + +2000-10-07 05:04 markt + + * libmp3lame/: id3tag.c, util.h: + + missing id3tag.h include files for util.h, id3tag.c + +2000-10-07 05:00 markt + + * INSTALL, Makefile.unix, Dll/LameDLLInterface.htm, + frontend/main.c, frontend/main.h, include/lame.h, + libmp3lame/id3tag.c, libmp3lame/lame.c, libmp3lame/util.c, + libmp3lame/util.h: + + id3tag_spec made it back into lame.h. deleted. + + frameNum has to be in the library - the front end has no way + of correctly counting frames unless it parses the mp3 output + headers. totalframes should also probably be in the library. + +2000-10-06 21:16 florian + + * Makefile.in, configure, configure.in, frontend/Makefile.in, + libmp3lame/Makefile.in: + + minor changes for install and uninstall + +2000-10-06 13:19 takehiro + + * libmp3lame/: id3tag.c, lame.c, util.h: + + quick fix, maybe work but not checked hard + +2000-10-06 13:19 takehiro + + * frontend/main.c, include/lame.h: + + quick fix, I don't check this + +2000-10-06 00:55 markt + + * libmp3lame/: id3tag.c, lame.c, util.h: + + id3tag cleanup + +2000-10-06 00:54 markt + + * frontend/parse.c, include/lame.h: + + id3 stuff cleaned up. id3 related strucs made internal to the + library + +2000-10-05 19:53 cisc + + * frontend/: get_audio.c, get_audio.h: + + small correction + +2000-10-05 05:18 markt + + * TODO, frontend/Makefile.in: + + [no log message] + +2000-10-05 05:13 markt + + * Makefile.in, configure, configure.in, libmp3lame/Makefile.in: + + more configure work. + +2000-10-05 04:50 markt + + * testcase.mp3: + + updated testcase + +2000-10-05 04:49 markt + + * Makefile.in, libmp3lame/psymodel.c: + + added comment about Naoki's blocktype bug fix. + also, for JSTEREO but with the '-d' option, L and R channels + can have different block types, so we cant just look at the + block type for channel 0 + +2000-10-05 04:31 markt + + * Makefile.in, frontend/Makefile.in: + + forgot to add Makefile.in + +2000-10-04 22:37 robert + + * Lame.vbs: + + needs Windows Script >= 5.1, donated by Ralf Kempkens <Ralf.Kempkens@epost.de> + +2000-10-04 17:13 afaber + + * Dll/Example.dsw, Dll/MP3EncDll.dsp, libmp3lame/libmp3lame.dsp, + mpglib/mpglib.dsp: + + MSVC project update(s) to new layout of the libmp3lame files + +2000-10-04 12:48 shibatch + + * libmp3lame/psymodel.c: + + Bugfix of long block pre-echo control. + +2000-10-04 12:13 takehiro + + * libmp3lame/i386/: choose_table.nas, fft.nas, fft3dn.nas, + fftfpu.nas, fftsse.nas, ffttbl.nas, nasm.h: + + moved i386 directory + +2000-10-04 04:26 markt + + * libmp3lame/Makefile.in: + + [no log message] + +2000-10-04 04:23 markt + + * configure, configure.in: + + make still does not work. some kind of infinite loop + +2000-10-04 04:00 markt + + * Makefile.unix: + + more configure work + +2000-10-04 03:54 markt + + * Makefile.in, Makefile.unix, VbrTag.c, VbrTag.h, amiga_mpega.c, + bitstream.c, bitstream.h, configure, configure.in, + debugscalefac.c, encoder.c, encoder.h, fft.c, fft.h, id3tag.c, + l3side.h, lame-analysis.h, lame.c, machine.h, mpglib_interface.c, + newmdct.c, newmdct.h, psymodel.c, psymodel.h, quantize.c, + quantize.h, quantize_pvt.c, quantize_pvt.h, reservoir.c, + reservoir.h, tables.c, tables.h, takehiro.c, util.c, util.h, + vbrquantize.c, version.c, version.h, vorbis_interface.c, + libmp3lame/Makefile.am, libmp3lame/Makefile.in, + libmp3lame/VbrTag.c, libmp3lame/VbrTag.h, + libmp3lame/amiga_mpega.c, libmp3lame/bitstream.c, + libmp3lame/bitstream.h, libmp3lame/debugscalefac.c, + libmp3lame/encoder.c, libmp3lame/encoder.h, libmp3lame/fft.c, + libmp3lame/fft.h, libmp3lame/id3tag.c, libmp3lame/l3side.h, + libmp3lame/lame-analysis.h, libmp3lame/lame.c, + libmp3lame/machine.h, libmp3lame/mpglib_interface.c, + libmp3lame/newmdct.c, libmp3lame/newmdct.h, + libmp3lame/psymodel.c, libmp3lame/psymodel.h, + libmp3lame/quantize.c, libmp3lame/quantize.h, + libmp3lame/quantize_pvt.c, libmp3lame/quantize_pvt.h, + libmp3lame/reservoir.c, libmp3lame/reservoir.h, + libmp3lame/tables.c, libmp3lame/tables.h, libmp3lame/takehiro.c, + libmp3lame/util.c, libmp3lame/util.h, libmp3lame/vbrquantize.c, + libmp3lame/version.c, libmp3lame/version.h, + libmp3lame/vorbis_interface.c: + + + Moved everything to libmp3lame. worked on configure, but + not quite working. + +2000-10-04 03:01 markt + + * frontend/aclocal.m4, frontend/configure, frontend/configure.in, + mpglib/configure, mpglib/configure.in: + + removed more configure files in subdirectories. + There should only be one ./configure, in the main directory + +2000-10-04 02:57 markt + + * configure, configure.in, frontend/get_audio.c, + frontend/get_audio.h, frontend/timestatus.c, + frontend/timestatus.h: + + more configure work + +2000-10-04 01:07 markt + + * configure, configure.in, frontend/Makefile.in: + + more configure patches for frontend. + +2000-10-04 01:02 markt + + * TODO, configure, configure.in, frontend/configure: + + new configure that doesn't run configure in all the subdirectories! + +2000-10-03 22:08 afaber + + * README.WINGTK, lamelib.dsp, frontend/lame.dsp, frontend/lame.dsw, + libmp3lame/libmp3lame.dsp, mpglib/mpglib.dsp: + + Re-organized some of the MSVC project files, fixes to compile mp3x again on Win32 platform + +2000-10-03 17:56 robert + + * fft.c: + + removed unused includes + +2000-10-03 10:32 robert + + * fft.c, fft.h, lame.c, psymodel.c, quantize.c, quantize_pvt.c, + util.h: + + fft.c now thread safe !? + +2000-10-03 09:44 robert + + * encoder.c, newmdct.c, newmdct.h: + + removed redundancies + +2000-10-03 09:43 robert + + * testcase.mp3: + + updated testcase for LAME 3.88 alpha 1 + +2000-10-03 04:07 markt + + * INSTALL: + + Some configure options are for the library, some are for + the front end. How do we pass front end options to + frontend/configure? + +2000-10-03 03:57 markt + + * Makefile.in: + + [no log message] + +2000-10-02 10:15 markt + + * Makefile.in: + + make -> $(MAKE) + +2000-10-02 09:00 markt + + * quantize_pvt.h: + + Fix for winamp bug. (commented out for now) + +2000-10-02 06:20 markt + + * aclocal.m4, configure, configure.in, frontend/configure, + frontend/configure.in: + + configure updates + +2000-10-01 19:05 afaber + + * lamelib.dsp, frontend/lame.dsp, mpglib/mpglib.dsp: + + Adapted project file in order to compile it again with the MSVC compiler + +2000-10-01 18:34 markt + + * Makefile.in: + + [no log message] + +2000-10-01 18:25 markt + + * INSTALL, Makefile.in, id3tag.c, lame-analysis.h, lame.c, + frontend/Makefile.in, frontend/configure, frontend/configure.in, + frontend/main.c, frontend/parse.c, include/lame-analysis.h, + include/lame-id3tag.h, include/lame.h: + + trying to move decoding back into library + +2000-10-01 17:58 afaber + + * frontend/get_audio.c: + + Make it compile again with MSVC compiler + +2000-10-01 17:17 markt + + * frontend/: gpkplotting.c, gpkplotting.h, gtkanal.c, main.c, + mp3x.c: + + moved GTK frame analyzer stuff into mp3x + +2000-10-01 15:29 takehiro + + * Makefile.in, aclocal.m4, configure, configure.in, + mpglib_interface.c, vorbis_interface.c, frontend/Makefile.in, + frontend/get_audio.c, frontend/main.c, + frontend/vorbis_interface.c, mpglib/Makefile.in, + mpglib/configure, mpglib/configure.in, mpglib/main.c: + + more modularization work. + VORBIS and mpglib interface is now in the libmp3lame library. + functions in these files are wrapper of mpglib/libvorbis. + I think it is ok to include them in libmp3lame. + +2000-10-01 15:19 takehiro + + * VbrTag.c: + + merged VbrTag.h into lame.h + +2000-10-01 15:03 takehiro + + * encoder.c, lame.c, util.h, Dll/BladeMP3EncDLL.c, + frontend/get_audio.c, include/lame.h: + + merged VbrTag.h into lame.h + +2000-10-01 11:28 afaber + + * mpglib/: common.c, common.h, dct64_i386.c, decode_i386.c, + interface.c, interface.h, layer1.c, layer1.h, layer2.c, layer2.h, + layer3.c, layer3.h, main.c, mpg123.h, mpglib.dsp, mpglib.h, + dct64_i386.h, decode_i386.h: + + More MPGLIB cleanup, got rid of the global mpstr struct gmp (in order to make lib thread safe) + +2000-10-01 10:40 afaber + + * mpglib/: common.c, common.h, decode_i386.c, interface.c, + layer3.c, mpg123.h: + + Cleanup of mpg123.h file (still need to get rid of the dirty extern gmp hack) + +2000-10-01 10:05 afaber + + * mpglib/: layer1.c, mpg123.h: + + Removed unused stuff in MPG123.h file, removed stuff that was commented out in Layer1.c + +2000-10-01 10:00 afaber + + * mpglib/: mpg123.h, tabinit.c: + + Removed some double/float warnings, removed disable warnings pragma for MSVC compiler + +2000-10-01 09:52 takehiro + + * lame.c, frontend/main.c: + + moved main_crc_init from frontend to library + +2000-10-01 09:51 afaber + + * mpglib/: common.c, common.h, dct64_i386.c, decode_i386.c, + interface.c, layer2.c, layer3.h, mpg123.h, mpglib.dsp, tabinit.c, + tabinit.h: + + Reorganized some of the function prototypes, removed non existing function prototypes from common.h + +2000-10-01 09:32 takehiro + + * libmp3lame/.cvsignore: + + initial check in for libmp3lame + +2000-10-01 09:29 takehiro + + * libmp3lame/Makefile.am: + + check in for the feauture... + +2000-10-01 09:09 afaber + + * bitstream.h, frontend/main.c: + + Added void main_CRC_init (void) function prototype in bitstream.h + +2000-10-01 06:24 takehiro + + * frontend/: Makefile.in, mp3x.c: + + making frameanalyzer problem fixed + +2000-10-01 04:56 markt + + * util.c: + + added Frank's normalization of Blackman filter coefficients. + This had no effect on any of my resample test cases. + +2000-09-30 15:32 markt + + * STYLEGUIDE: + + more notes on identation and int in STYLEGUIDE + +2000-09-30 15:09 afaber + + * id3tag.c: + + fixed signed/unsigned mismatch + +2000-09-30 14:50 markt + + * HACKING, bitstream.c, bitstream.h, util.c, util.h: + + added stuff in HACKING on how to handle global data + moved freegfc() into util.c + +2000-09-30 14:28 markt + + * util.c: + + number of pre-computed convolution windows determined dynamically. + (storage still needs to malloc'd and free'd in lame_encode_finish). + +2000-09-30 14:17 robert + + * Makefile.in: + + small fix + +2000-09-30 13:14 afaber + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Changes in order to get it compile on a Win32 platform + +2000-09-30 12:49 afaber + + * lamelib.dsp, VbrTag.h, lame.dsp, lame.dsw, frontend/brhist.c, + frontend/get_audio.c, frontend/lame.dsp, frontend/lame.dsw, + frontend/timestatus.c, mpglib/mpglib.dsp: + + Changes in order to get it compile on a Win32 platform + +2000-09-30 08:29 takehiro + + * frontend/parse.c: + + renamed some functions + +2000-09-30 08:21 takehiro + + * doc/html/: contributors.html, examples.html, history.html, + id3.html, index.html, lame.css, modes.html, node6.html, + switchs.html: + + new document for 3.87 from Gaby. + +2000-09-30 08:15 takehiro + + * frontend/: configure, configure.in: + + debug about gtk detection + +2000-09-30 07:54 takehiro + + * lame.c, frontend/get_audio.c, frontend/main.c, frontend/main.h, + frontend/mp3rtp.c, frontend/parse.c, include/lame.h: + + removed outpath from library. + +2000-09-30 06:58 takehiro + + * bitstream.c, bitstream.h, util.c, util.h: + + moved some code from util to bitstream + +2000-09-30 04:40 markt + + * VbrTag.c, lame.c, frontend/vorbis_interface.c: + + re-enabled id3v2 tag and Xing vbr header + +2000-09-29 18:16 takehiro + + * lame.c, frontend/get_audio.c, frontend/main.c, frontend/main.h, + frontend/parse.c, frontend/timestatus.c, include/lame.h: + + "silent" and "brhist" is moved to frontend + +2000-09-29 18:07 takehiro + + * lame.c, frontend/main.c, frontend/main.h, frontend/parse.c, + frontend/timestatus.c, include/lame.h: + + "update_interval" is moved to frontend + +2000-09-29 17:49 takehiro + + * encoder.c, lame.c, psymodel.c, quantize.c, vbrquantize.c, + frontend/main.c, frontend/parse.c, include/lame-analysis.h, + include/lame.h, frontend/mp3x.c: + + changed from "gtkflag" to "analysis", because it is not only for gtk. + +2000-09-29 17:48 takehiro + + * frontend/timestatus.c: + + oops, timestatus not correctly displayed + +2000-09-29 17:43 takehiro + + * id3tag.c, lame.c, quantize.c, quantize_pvt.c, util.h, + vbrquantize.c, frontend/gtkanal.c, frontend/main.c, + frontend/mp3x.c, frontend/parse.c, include/analysis.h, + include/id3tag.h, include/lame-analysis.h, include/lame-id3tag.h, + include/lame.h, mpglib/layer3.c, mpglib/mpglib.h: + + OK, Florian, I renamed include file avoid confusing. + (it's so generic and not likely to be unique) + +2000-09-29 17:31 takehiro + + * Makefile.in, encoder.c, lame.c, parse.c, psymodel.c, util.c, + util.h, vbrquantize.c, frontend/Makefile.in, frontend/brhist.c, + frontend/get_audio.c, frontend/get_audio.h, frontend/gtkanal.c, + frontend/main.c, frontend/main.h, frontend/parse.c, + frontend/parse.h, frontend/timestatus.c, + frontend/vorbis_interface.c: + + 1. timestatus things are moved to frontend(maybe complete ?) + 2. input file handling is moved to frontend(so the file input API is removed) + +2000-09-29 04:51 markt + + * frontend/brhist.c, frontend/get_audio.c, frontend/get_audio.h, + mpglib/main.c: + + removed analysis.h from get_audio.c + typo in brhist.c + +2000-09-28 23:31 robert + + * lame4dos.bat: + + improved lame.bat for 4DOS users, donated by Alexander Stumpf <alestrix@unm.edu> + +2000-09-28 16:36 takehiro + + * Makefile.in, VbrTag.c, brhist.c, brhist.h, configure, + configure.in, encoder.c, get_audio.c, get_audio.h, gpkplotting.c, + gpkplotting.h, gtkanal.c, id3tag.h, ieeefloat.c, ieeefloat.h, + lame.c, lametime.c, lametime.h, main.c, mp3rtp.c, mp3x.c, + parse.c, portableio.c, portableio.h, psymodel.c, quantize.c, + quantize_pvt.c, rtp.c, rtp.h, tables.c, timestatus.c, + timestatus.h, util.c, util.h, vbrquantize.c, version.c, + version.h, vorbis_interface.c, frontend/.cvsignore, + frontend/Makefile.in, frontend/aclocal.m4, frontend/brhist.c, + frontend/brhist.h, frontend/configure, frontend/configure.in, + frontend/get_audio.c, frontend/get_audio.h, + frontend/gpkplotting.c, frontend/gpkplotting.h, + frontend/gtkanal.c, frontend/ieeefloat.c, frontend/ieeefloat.h, + frontend/lametime.c, frontend/lametime.h, frontend/main.c, + frontend/mp3rtp.c, frontend/mp3x.c, frontend/parse.c, + frontend/portableio.c, frontend/portableio.h, frontend/rtp.c, + frontend/rtp.h, frontend/timestatus.c, frontend/timestatus.h, + frontend/vorbis_interface.c, include/id3tag.h, include/lame.h, + mpglib/Makefile.in, mpglib/layer3.c, mpglib/mpglib.h: + + moved frontend staffs into frontend/ + Need to debug vorbis/mpglib/analyzer/bitrate histgram. + still long way to go... + + HAVEGTK is changed ANALYSIS(library side) and HAVEGTK(frontend side) + + BRHIST is deleted from library. all the bitrate histogram works are + now in frontend(but not works properly, yet). + + timestatus things are also moved to frontend. + + parse.c is now out of library. + +2000-09-27 12:05 takehiro + + * include/analysis.h, gtkanal.h: + + moved gtkanal.h to include/analysis.h + +2000-09-27 04:17 florian + + * Makefile.in: + + fixed make install -> move of lame.h broke it. + +2000-09-26 17:47 takehiro + + * Makefile.in, gtkanal.h: + + more clean up and debug "make clean" + +2000-09-26 17:35 takehiro + + * Makefile.in: + + moved more staff out of libmp3lame + +2000-09-26 17:28 takehiro + + * Makefile.in: + + removed brhist.o etc from library + +2000-09-26 17:25 takehiro + + * include/lame.h: + + lame.h moved to include + +2000-09-26 17:24 takehiro + + * timestatus.c: + + little clean up + +2000-09-26 17:03 takehiro + + * Makefile.in, configure, configure.in, lame.h: + + 1 moved lame.h into include/ + 2 modularized work with mpglib + +2000-09-26 16:59 cisc + + * amiga_mpega.c: + + Mark, you broke lame_decode_initfile(), what were you thinking? ;) .. anyways, fixed, and added new mp3data struct variables... + +2000-09-26 15:48 takehiro + + * mpglib/: .cvsignore, Makefile.in, common.c, configure, + configure.in, dct64_i386.c, decode_i386.c, interface.c, layer3.c, + main.c, tabinit.c: + + configure support and more modularized work + +2000-09-26 15:47 takehiro + + * mpglib/Makefile: + + now this is generated by configure + +2000-09-26 05:22 markt + + * version.h: + + CVS is now 3.88 alpha 1 + +2000-09-26 04:49 markt + + * version.h: + + updated to 3.87 beta + +2000-09-26 04:48 markt + + * get_audio.c, get_audio.h, gtkanal.c, timestatus.c, mpglib/main.c: + + removed all references to gfc-> from get_audio.c + this was needed if we are going to move get_audio.c out of + libmp3lame and into the front end code. + +2000-09-26 01:00 markt + + * HACKING, STYLEGUIDE: + + [no log message] + +2000-09-26 00:55 markt + + * CodingStyle.c, lametype.h: + + Removed two files + +2000-09-26 00:09 markt + + * amiga_mpega.c, get_audio.c, lame.c, lame.h, timestatus.c, + timestatus.h, util.h: + + when input file was a mp3, it was trashing a bunch of + variables (mode, bitrate, etc..) + +2000-09-25 21:37 robert + + * Makefile.MSVC: + + MMX choose table support, needs NASM (can be disabled) + +2000-09-25 21:23 florian + + * configure, configure.in: + + changed default installation prefix to /usr (/usr/local/lib doesn't seem to be in default linker path) + +2000-09-25 20:58 florian + + * Makefile.in: + + fixed shared lib (runtime linker information) + +2000-09-25 15:20 markt + + * Makefile.in: + + removed ?= from makefile + +2000-09-25 14:36 shibatch + + * psymodel.c: + + A small bugfix of --nspsytune. + +2000-09-25 02:13 florian + + * configure, Makefile.in, configure.in: + + cleaner version handling of libmp3lame.so, uninstall target in Makefile + +2000-09-25 00:30 markt + + * id3tag.c: + + fixed genre bug in id3tag.c + +2000-09-24 22:59 markt + + * id3tag.c, vbrquantize.c: + + removed yet another unsigned loop counter + +2000-09-24 21:53 robert + + * Makefile.MSVC: + + enabled Takehiro's IEEE hack + +2000-09-24 14:59 robert + + * configure, configure.in: + + BUG fixed, which prevented using Layer1/2 decoding abilities + +2000-09-24 14:34 robert + + * encoder.c, lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + util.h, vbrquantize.c: + + code cleanup and very little speedup + +2000-09-24 12:38 robert + + * quantize.c: + + minor RH_AMP tweak, and once again, do not use tabulator within this file + +2000-09-24 12:29 robert + + * quantize.c: + + please do not use tabulators within this file (better in no files) + +2000-09-24 12:22 robert + + * VbrTag.c: + + minor BUG fix for MPEG-2(.5) + +2000-09-24 11:39 takehiro + + * quantize.c: + + sorry, scalefac_scale did not have a bug. that was my compiler bug... + +2000-09-24 10:38 afaber + + * mpglib/interface.c: + + Fixed MP1/2 decoding problem, for files that were encoded with a CRC + +2000-09-24 01:32 markt + + * get_audio.c: + + minor fix to mp3 header parsing + +2000-09-23 23:36 afaber + + * bitstream.c: + + removed unused variable bits + +2000-09-23 23:36 afaber + + * id3tag.c: + + fixed signed/unsigned mismatch, added bitstream.h include file + +2000-09-23 22:31 markt + + * VbrTag.c, bitstream.c, bitstream.h, id3tag.c, id3tag.h, lame.c, + lame.h, main.c, parse.c: + + id3v1 and id3v2 tags now get written directly into + the bitstream instead of into the output file. + + The only file I/O left in libmp3lame will be the VBR tag. + +2000-09-23 21:13 markt + + * get_audio.c, lame.h, mpglib/main.c: + + removed lame_decode_fromfile() calls from the API, + moved them into get_audio.c + +2000-09-23 20:08 markt + + * lame.h, mpglib/main.c: + + some mpglib restructering. + All mp3 routines which work with files now only make + calls to lame_decode_* that are in the API. + +2000-09-23 14:48 markt + + * VbrTag.c: + + bug in Xing header for MPEG2.5 fixed + +2000-09-23 09:07 takehiro + + * quantize.c, quantize_pvt.c, util.c, util.h: + + workaround for subblock_gain and scalefac_scale artifact. + I hope this will fix -q1 problems. + +2000-09-23 02:11 markt + + * version.c: + + [no log message] + +2000-09-23 01:23 markt + + * mpglib/main.c: + + [no log message] + +2000-09-23 01:23 markt + + * VbrTag.c, VbrTag.h, lame.h, parse.c, util.c, util.h: + + bug fixed in decoding: if syncword found in Xing VBR header toc, + it would confuse things. + + Also fixed overflow in vbrtag.c, and changed size of xing vbr + header to 128kbs. This will make non-vbr aware players + give a more reasonable playing time estimate. + +2000-09-23 00:51 robert + + * psymodel.c: + + minor fix + +2000-09-22 22:54 shibatch + + * quantize.c, quantize_pvt.c: + + Minor bugfixes of --nspsytune. Frame analyzer works correctly with --nspsytune. + +2000-09-21 23:55 shibatch + + * parse.c, psymodel.c, quantize.c: + + Tweaks to --nspsytune. This improves CBR quality. + +2000-09-21 16:50 afaber + + * Dll/LameDLLInterface.htm: + + Updated lame_enc.dll documentation file + +2000-09-20 22:56 takehiro + + * Makefile.in, configure, configure.in, encoder.c, lame.c, + timestatus.c: + + more configure updates. + not compiling/linking BRHIST routine when it is disabled. + +2000-09-20 20:50 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp: + + Added bNoRes option in LHV1 structure, updated example to have default settings as in testcase.wav test case + +2000-09-20 19:08 afaber + + * brhist.c, lame.h: + + Changed BRHST un-signed variables to signed variables + +2000-09-20 18:50 afaber + + * Dll/BladeMP3EncDLL.c: + + High quality was not enabled + +2000-09-20 18:49 afaber + + * Dll/MP3EncDll.dsp: + + Added TAKEHIRO_IEEE754_HACK define to project file + +2000-09-20 18:41 afaber + + * lame.dsp: + + Added TAKEHIRO_IEEE754_HACK define to project file + +2000-09-20 16:40 robert + + * quantize.c: + + VBR old quality tuning for --raise-smr + +2000-09-19 14:40 takehiro + + * Makefile.in: + + update glibc inline math error detection + +2000-09-19 14:32 takehiro + + * configure, configure.in: + + oops, needless gabage removed + +2000-09-19 14:26 takehiro + + * configure: + + newer configure script made by configure.in + +2000-09-19 14:12 takehiro + + * Makefile.in, configure.in: + + not compiling/linking mpglib code when it disabled. + not compiling/linking gtk related code when it disabled. + + control LAYER1 and LAYER2 decoding function with --enable-decode-layer1 and + --enable-decode-layer2 + + autodetect math inline bug of glibc < 2.1.3 + +2000-09-19 14:11 robert + + * quantize_pvt.c: + + modified --ATHlower to not touch sfb21 + +2000-09-19 14:06 takehiro + + * .cvsignore: + + ignore files related configure script and library itself + +2000-09-19 05:33 markt + + * mpglib/main.c: + + got rid of a size_t in main.c + +2000-09-19 05:19 markt + + * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: + + updated msvc6 project files + +2000-09-19 04:54 markt + + * mpglib/main.c: + + removed unsigned int being used as a loop counter. + +2000-09-19 04:18 markt + + * encoder.h, lame.c, util.c, util.h: + + updated filter settings + +2000-09-18 22:29 afaber + + * Dll/Example.cpp: + + Bug fixes in example file + +2000-09-18 21:57 markt + + * testcase.mp3, util.c, util.h: + + changed BPC to 160 on Frank's advice. + This means pre-compute 160 filter-sinc-windows, instead of just 16. + Should also fix the aliasing problem shown in mp3.com bulliten + board + +2000-09-18 21:30 markt + + * Makefile.B32, Makefile.DJGPP, Makefile.in, Makefile.unix: + + Makefiles updated to reflect that all the ASM code has been + removed and replaced with IEEE754_HACK. I'm glad to see + it gone - but I didn't remove it! + +2000-09-18 21:28 markt + + * STYLEGUIDE, VbrTag.c, brhist.c, get_audio.c, machine.h, + quantize.c, quantize_pvt.c, takehiro.c, vorbis_interface.c: + + minor code cleanup. + +2000-09-18 20:53 afaber + + * lame.dsp: + + Fixed library problem in ReleaseGTK mode + +2000-09-18 20:09 markt + + * config.log: + + removed config.log from repository + +2000-09-18 19:43 afaber + + * brhist.c: + + Fixes for Cygwin compiler + +2000-09-18 18:52 markt + + * INSTALL, Makefile.in, Makefile.unix, config.log: + + more configure updates + +2000-09-18 18:34 markt + + * INSTALL, INSTALL.configure, Makefile, Makefile.in, Makefile.unix, + aclocal.m4, confdefs.h, config.guess, config.log, config.sub, + configure, configure.in, install-sh: + + added configure stuff from Florian! + + original Makefile is now in Makefile.unix + +2000-09-18 01:48 cisc + + * util.c, vbrquantize.c, version.h: + + warning fixes & bumped alpha version + +2000-09-17 23:25 markt + + * Makefile, lame.h: + + added note about shared library + +2000-09-17 22:25 markt + + * USAGE, encoder.c, lame.c, lame.h, parse.c: + + --scale option added + +2000-09-17 21:47 afaber + + * bitstream.c, get_audio.c, quantize.c: + + removed unecessary (int) casts + +2000-09-17 21:21 markt + + * HACKING, STYLEGUIDE, lame.h: + + some editing + +2000-09-17 21:04 afaber + + * encoder.c, lame.dsp: + + Enabled BRHIST in MSVC project file, and changed calls to brhist functions in encoder.c + +2000-09-17 20:55 markt + + * encoder.c, takehiro.c: + + forgot to add encoder.c to cvs + +2000-09-17 20:53 markt + + * bitstream.c, machine.h, util.c, util.h: + + more 'unsigned's removed + +2000-09-17 20:52 afaber + + * brhist.c, brhist.h, lame.c, lame.h, timestatus.c: + + Moved BRHIST variables to lame_global_flags structure, so a library (like lame_enc.dll) can have access to the histogramming data + +2000-09-17 20:20 markt + + * lame.c, testcase.mp3, version.c: + + resampling nolonger needs to quantize back to integers + since internal representation of PCM samples is now floating point + +2000-09-17 19:50 markt + + * Makefile, fft.c, gtkanal.c, lame.c, machine.h, newmdct.c, + newmdct.h, psymodel.c, psymodel.h, testcase.mp3, util.c, util.h, + mpglib/main.c: + + sample_t changes updated, sample_t = FLOAT + +2000-09-17 18:52 markt + + * INSTALL, Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, + encoder.h, lame.c, lame.dsp, lametime.h, main.c, timestatus.h, + Dll/MP3EncDll.dsp: + + added encoder.c which has the core encoding function. + fixed sample_t stuff + +2000-09-17 17:55 robert + + * Makefile, l3side.h, quantize.c, quantize_pvt.c, takehiro.c: + + not everyone has access to Vorbis in Mark's home directory ;-) + +2000-09-17 17:54 afaber + + * mpglib/main.c: + + Changed return value from zero to -1 when EOF has been reached + +2000-09-17 16:19 takehiro + + * quantize.c: + + added #include <math.h> + +2000-09-17 10:07 takehiro + + * get_audio.c: + + trivial warning fix + +2000-09-17 09:32 takehiro + + * quantize_pvt.c: + + removed old assembler code + +2000-09-17 09:30 takehiro + + * main.c: + + quick hack for "sample_t is not defined" + +2000-09-17 05:00 cisc + + * get_audio.h, version.c: + + updated some libsndfile related stuff + +2000-09-17 04:19 cisc + + * VbrTag.h, bitstream.h, brhist.h, encoder.h, fft.h, get_audio.h, + gpkplotting.h, gtkanal.h, id3tag.h, ieeefloat.h, l3side.h, + lame.h, lametime.h, lametype.h, machine.h, newmdct.h, + portableio.h, psymodel.h, quantize.h, quantize_pvt.h, + reservoir.h, rtp.h, tables.h, timestatus.h, util.h, version.h: + + conformed all this-is-included-defines to match 'project_file_name' style + +2000-09-16 22:52 afaber + + * lame.dsp, reservoir.c, reservoir.h, tables.c, tables.h, + timestatus.c, timestatus.h, util.c, util.h, vbrquantize.c: + + Changed lame header/source to LGPL license where necessary, added LGPL header to files when applicable + +2000-09-16 22:39 afaber + + * encoder.h, fft.h, get_audio.c, get_audio.h, gpkplotting.c, + gpkplotting.h, gtkanal.c, gtkanal.h, l3side.h, lametime.c, + lametime.h, newmdct.h, parse.c, psymodel.h, quantize.c, + quantize.h, quantize_pvt.c, quantize_pvt.h, Dll/MP3EncDll.dsp: + + Changed lame header/source to LGPL license where necessary, added LGPL header to files when applicable + +2000-09-16 22:16 afaber + + * fft.c, machine.h, psymodel.c: + + Removed the float/double compiler warnings + +2000-09-16 22:08 afaber + + * Dll/: BladeMP3EncDLL.h, MP3EncDll.dsp: + + Small changes to the lame_enc project settings + +2000-09-16 21:52 afaber + + * brhist.c, brhist.h, get_audio.c, gtkanal.c, lametime.h, main.c, + psymodel.c, quantize.c, takehiro.c, timestatus.c, vbrquantize.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c: + + Removed a bunch of signed/unsigned compiler warnings + and removed const/no const assignements compiler warnings + welcome to const hell Frank! + +2000-09-16 21:07 markt + + * Makefile, quantize_pvt.c: + + shared lib support, IEEE stuff the default on i386 + +2000-09-16 21:07 cisc + + * amiga_mpega.c: + + added mode & mode_ext support to mp3data struct, like mpglib/main.c + +2000-09-16 21:06 afaber + + * lame.dsp: + + Added lametime.c and lametime.h files to project + +2000-09-16 19:03 markt + + * HACKING, STYLEGUIDE: + + style updates + +2000-09-16 18:54 markt + + * STYLEGUIDE: + + adding STYLEGUIDE + +2000-09-16 18:54 markt + + * CodingStyle.c, LICENSE, USAGE, bitstream.c, get_audio.c, + gtkanal.c, id3tag.c, l3side.h, lame.c, lame.h, lametime.c, + machine.h, parse.c, quantize.c, quantize_pvt.c, quantize_pvt.h, + tables.c, tables.h, takehiro.c, testcase.mp3, timestatus.c, + util.h, vbrquantize.c, version.c, mpglib/common.h, + mpglib/interface.h, mpglib/main.c: + + got rid of a bunch of unsigned variables. + +2000-09-16 13:59 afaber + + * brhist.c, psymodel.c, quantize_pvt.c, takehiro.c, vbrquantize.c: + + Removed the signed/unsigned mismatch compiler warnings + +2000-09-16 13:30 afaber + + * bitstream.c: + + Removed the signed/unsigned mismatch compiler warnings + +2000-09-16 12:53 afaber + + * mpglib/layer1.c: + + Switched include from mpg123.h to common.h to avoid compiler warnings + +2000-09-16 00:43 cisc + + * psymodel.c, timestatus.c: + + warning fixes + +2000-09-15 16:36 shibatch + + * psymodel.c: + + Tweaks to --nspsytune. + +2000-09-15 15:01 takehiro + + * quantize_pvt.c: + + oops, foolish bug ... + +2000-09-15 13:03 takehiro + + * quantize_pvt.c: + + TAKEHIRO_IEEE754_HACK now C99 aliasing rule compliant. + it runs correctly with "-fstrict-aliasing" (GCC) + +2000-09-14 03:32 markt + + * brhist.c, mpglib/mpg123.h: + + fixed VBR display + +2000-09-13 23:31 markt + + * Makefile, quantize.c, reservoir.c: + + NORES_TEST turned back of + +2000-09-13 18:46 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed bug in lame_enc.dll when using preset option, and return proper frame size when using MPEG-2 + +2000-09-13 18:24 afaber + + * mpglib/: common.c, common.h, interface.c, interface.h, layer2.c, + layer3.c, main.c, mpg123.h, mpglib.dsp, mpglib.h: + + Added common.h and interface.h, and added the functions prototypes that should be in these files, instead of mpg123.h + +2000-09-13 18:22 markt + + * util.c: + + precompute for filter turned back on + +2000-09-13 18:19 markt + + * lame.c, util.c, util.h: + + replaced upsampling filter with 19 point blackman filter + +2000-09-13 11:18 markt + + * parse.c: + + typo in documentation + +2000-09-13 11:03 markt + + * Makefile, parse.c, testcase.mp3, vorbis_interface.c: + + fixed vorbis_interface.c so it would compile + +2000-09-13 10:59 markt + + * Makefile, bitstream.c, fft.c, get_audio.c, lame.c, lame.h, + psymodel.c: + + fixed some bugs introduced by frank. + get_audio.c must count samples for .wav files. + lame.c: disabling ATH is not the way to solve the problem Frank + wants to solve + +2000-09-13 09:23 robert + + * quantize.c: + + quality adjustment for VBR old to better use --raise-smr + +2000-09-12 22:36 pfk + + * brhist.c, gtkanal.c, id3tag.c, lame.c, lametype.h, main.c, + psymodel.c, quantize.c, quantize_pvt.c, tables.c, tables.h, + takehiro.c, util.c, util.h, vbrquantize.c, vorbis_interface.c, + mpglib/common.c, mpglib/huffman.h, mpglib/l2tables.h, + mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, mpglib/mpg123.h, + mpglib/tabinit.c: + + + + added const to all constant tables, so that they are placed in write + protected RAM or in ROM (standalone DSP version). + + The SEGFAULT be with you (instead of debugging for hours). + + Also some remarks instead of changes instead of code changes. + + Remove them if they are fully useless. + +2000-09-12 20:47 robert + + * Makefile, lame.c, lame.h, parse.c, psymodel.c, quantize_pvt.c: + + added --raise-smr <0..1> a new toy to control quality + +2000-09-12 18:20 pfk + + * Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, + bitstream.c, get_audio.c, lame.c, lame.h, lametype.h, parse.c, + util.h, version.h, vorbis_interface.c, mpglib/main.c: + + + + Some bug fixes + Activated lametime.c + Two types of display update now possible (old and new, depends on Makefile) + +2000-09-12 06:26 pfk + + * brhist.c, lame.c, lametype.h, version.c: + + + + brhist.c Changed display of percentages between 0.1 and 1 % + + lame.c: ??? + version.h: include as less as possible + + lametype.h: First try to disentangle the #include jungle of lame + (this style would be the immediate death for larger + projects) + +2000-09-12 00:47 markt + + * main.c, mpglib/l2tables.h, mpglib/layer2.h: + + al_table struct renamed al_table2 + +2000-09-11 20:33 shibatch + + * psymodel.c: + + --nspsytune uses additive masking. + +2000-09-11 20:05 robert + + * psymodel.c: + + disabled "additive masking" in subband calculation + +2000-09-11 20:04 robert + + * lame.c, lame.h, parse.c, quantize.c, quantize.h, quantize_pvt.c: + + experimental mix of VBR new and old available with --vbr-mtrh + +2000-09-10 23:24 markt + + * HACKING: + + added rule #1 LAME style guide + +2000-09-10 22:13 markt + + * doc/html/modes.html: + + modes.html was not in the repository + +2000-09-10 21:45 markt + + * testcase.mp3, testcase.wav: + + made the test case a little longer + (100k .wav file) + +2000-09-10 21:27 markt + + * lame.h, parse.c, mpglib/huffman.h, mpglib/l2tables.h, + mpglib/layer2.h: + + reverted mpglib routines back to original. + please keep mpglib as close as possible to the mpg123/mpglib + code that it is based on. + + Went back to display every 100 frames, which I prefer. + +2000-09-10 20:54 markt + + * Makefile, lame.c, timestatus.c: + + went back to display every 100 frames. + +2000-09-10 19:54 cisc + + * brhist.c: + + small adjustment + +2000-09-10 19:52 cisc + + * version.c: + + correct includes for libsndfile prototypes + +2000-09-10 18:05 pfk + + * Makefile, USAGE, brhist.c, brhist.h, fft.c, fft.h, lame.c, + lame.h, version.h, mpglib/huffman.h: + + + + some minor changes. Start to introduce sample_t. + + Changed VBR display. + +2000-09-10 13:11 pfk + + * fft.c, parse.c, psymodel.c, version.h, mpglib/l2tables.h, + mpglib/layer2.h: + + + + fft.c: loop variables short => size_t/int + layer2.h + l2tables.h: formated, structure definition changed for (possible) + speedup + parse.c optimized sfb21 usage for presets + +2000-09-09 23:00 pfk + + * get_audio.c, gtkanal.c, lametime.c, lametime.h, mpglib/common.c, + mpglib/l2tables.h, mpglib/layer2.c, mpglib/layer2.h, + mpglib/mpg123.h: + + + + struct al_table {} <=> + typedef struct {} al_table conflict removed + + lame/gtkanal.c: typecast of functions ptr's + +2000-09-09 21:11 pfk + + * CodingStyle.c, Makefile, USAGE, lametime.c, lametime.h, mlame, + mlame_corr.c, quantize_pvt.c, quantize_pvt.h, vbrquantize.c, + version.c, version.h, mpglib/layer1.c, mpglib/layer2.c: + + + + Makefile: added option -pedantic + USAGE: updated some remarks, + added some remarks, + kbs => kbps, HZ/hz => Hz, space between number and unit + mlame: -mf => -mj + uses mlame_corr + mlame_corr: First try of a program which analyzes the total file + and recommend flags + quantize_pvt.*: made some arrays const + asm => __asm__ + version.* copied vom pfk1 tree + mpglib/*.c added newline at the end of the file + + CodingStyle.c start of an CodingStyle Guide, pre-alpha + lametime.* heavy system specific code should moved to this + file, should not mixed with other code + +2000-09-09 21:04 cisc + + * amiga_mpega.c: + + warning fix + +2000-09-09 14:41 robert + + * bitstream.c: + + fixed debugging code + +2000-09-09 11:40 takehiro + + * newmdct.c: + + sorry, back to old... + +2000-09-09 11:22 robert + + * quantize.c: + + BUG fix for possible endless loop in RH_AMP code + +2000-09-09 10:59 takehiro + + * newmdct.c: + + bit faster mdct. + there's some difference caused by rounding problem, but i think this is OK. + +2000-09-09 10:34 takehiro + + * bitstream.c: + + bit faster putbits + +2000-09-09 10:28 takehiro + + * bitstream.c: + + small fix of debugging code + +2000-09-08 19:28 robert + + * quantize.c: + + to combine VBR_rh with VBR_mt define RH_VBR_MTRH at compile time + +2000-09-08 16:05 robert + + * quantize.c, quantize_pvt.c, quantize_pvt.h: + + merging branches pfk1 with main + +2000-09-08 14:55 robert + + * gtkanal.h, quantize.c, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + set_pinfo calcs noise and masking of its own + +2000-09-08 12:17 robert + + * parse.c, quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + substitution of lame_global_flags with lame_internal_flags + +2000-09-08 11:22 robert + + * parse.c: + + Bug fix for automatic file type recognition back into MAIN branch + +2000-09-08 10:04 shibatch + + * psymodel.c: + + A minor bugfix of mask_add(). + +2000-09-07 23:37 pfk + + * mlame_corr.c: + + + + file to use with mlame to select different modes by pre analysing wav files. + +2000-09-07 18:06 afaber + + * mpglib/mpglib.dsp: + + Cleanup project file a bit + +2000-09-07 18:05 afaber + + * README.WINGTK: + + Small modification to the instruction, in order to compile/link with latest GTK/GDK libs + +2000-09-07 18:04 afaber + + * lame.dsp: + + Changed project file to work with latest GTK/GDK libs + +2000-09-07 17:40 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed problem in VBR WriteTag function (it did not compile, MP3 file stream was not closed properly, wrong file name was used) + +2000-09-07 12:26 shibatch + + * psymodel.c, quantize_pvt.c: + + Tweaks to --nspsytune. + +2000-09-06 23:19 robert + + * quantize.c (pfk1): + + modularization and clean-up finished + +2000-09-06 18:02 markt + + * Makefile (pfk1): + + [no log message] + +2000-09-06 07:50 shibatch + + * psymodel.c, quantize_pvt.c: + + updated --nspsytune. + +2000-09-06 07:15 markt + + * Makefile, amiga_mpega.c, bitstream.c, brhist.c, fft.c, fft.h, + get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, lame.h, + main.c, mp3rtp.c, newmdct.c, newmdct.h, parse.c, psymodel.c, + psymodel.h, quantize.c, quantize_pvt.c, quantize_pvt.h, + reservoir.c, tables.c, tables.h, takehiro.c, timestatus.c, + util.c, util.h, vbrquantize.c, version.c, version.h, + vorbis_interface.c, mpglib/common.c, mpglib/decode_i386.c, + mpglib/huffman.h, mpglib/interface.c, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, + mpglib/mpg123.h: + + LAME CVS reverted back to Aug 30 version. + + code before this can be checked out with: + cvs update -r pfk1 + +2000-09-05 23:55 pfk + + * HACKING, Makefile, TODO, get_audio.c, lame.c, lame.h, mlame, + parse.c, version.h, mpglib/README, mpglib/huffman.h, + mpglib/layer1.c, mpglib/layer2.c: + + + HACKING: add type proposals + Makefile: layer 1 enabled + mlame: flaw removed + get_audio: C-Linkage problem solved + layer1.c: bug fixed + disabled decoding enabled, works for C/C++ + huffman.c: read protect/scope protect tables using 'const'/'static' + lame.h: Starting RPC support, 3 macros IN/OUT/INOUT defined + Starting supported for szip compressed wave/aiff + parse.c: detection of raw/wav/aiff input (proposal of RH) + boolean bug fixed !=||!=||!= + layer2.c: common layer1/layer2 buffer moved from layer2.c to layer1.c + lame.c: bug fixed: -V9 switched to mono + Auto switch to mono reported wrong compression ratio + report of forced joint stereo usage + + *: Some spelling errors removed + +2000-09-05 22:20 robert + + * quantize.c: + + more modularization and clean-up, some few more to come + +2000-09-05 20:39 shibatch + + * psymodel.c: + + Tweaks to --nspsytune(table optimization). + +2000-09-05 16:36 cisc + + * parse.c, mpglib/common.c, mpglib/interface.c, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer2.c, mpglib/layer3.c: + + quick fix to make mpglib compile, prolly still broken though. fixed mono bug in layer1.c? + +2000-09-04 23:17 shibatch + + * psymodel.c: + + Tweaks to --nspsytune. + +2000-09-04 19:56 robert + + * quantize.c: + + more cleanup in VBR_rh + +2000-09-04 16:05 robert + + * quantize.c: + + more modularization work + + it is now possible to combine VBR_RH with VBR_MT + +2000-09-03 22:33 cisc + + * brhist.c: + + small change + +2000-09-03 19:10 robert + + * quantize.c: + + updated remarks + +2000-09-03 17:21 pfk + + * get_audio.c, gtkanal.c, lame.h, main.c, mp3rtp.c, parse.c, + util.c, util.h, version.h: + + + + some bugfixes, move some functionality to two simple functions. + + Added support of 24 and 32 bit BE and LE AIFF and WAV files + (simple support, only using upper 16 bit) + + marking 3 areas which seems to be buggy. + +2000-09-03 17:19 robert + + * quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + code cleanup in quantize_pvt.c + +2000-09-03 15:06 robert + + * lame.c, quantize.c, quantize_pvt.c, quantize_pvt.h, takehiro.c, + vbrquantize.c: + + takehiro.c now free of lame_global_flags + +2000-09-03 14:05 robert + + * quantize.c, quantize_pvt.c, quantize_pvt.h: + + code clean up + +2000-09-03 13:06 pfk + + * Makefile, brhist.c, get_audio.c, get_audio.h, gtkanal.c, lame.c, + lame.h, main.c, version.c, version.h: + + + + minor fixes + + get_audio: (simple) support of 24 bit PCM + Replaced the different types of tabs by 3, 4 or 8 spaces + +2000-09-03 12:42 shibatch + + * psymodel.c: + + Tweaks to --nspsytune. + +2000-09-03 11:47 shibatch + + * psymodel.c, quantize_pvt.c: + + Tweaks to --nspsytune. Noise calculation using tonality is canceled. + +2000-09-03 09:54 robert + + * tables.c: + + fix for i386/choose_table.nas, could not be linked + +2000-09-03 06:50 cisc + + * lame.c: + + removed *extremely* annoying debug. fixed related bug? should be checked if mono encoding still works! + +2000-09-03 06:48 cisc + + * get_audio.c: + + fixed conflicting prototype when LIBSNDFILE is defined + +2000-09-02 18:06 robert + + * quantize_pvt.c: + + small fix to previous check in + +2000-09-02 18:03 robert + + * gtkanal.h, quantize.c, quantize_pvt.c, quantize_pvt.h, + vbrquantize.c: + + set_pinfo does now the noise calculation for the frame analyzer + code cleanup + +2000-09-02 15:36 pfk + + * mlame: + + + + extended functionality and feature fix + +2000-09-02 13:36 pfk + + * main.c: + + + + bug fix. + +2000-09-02 13:28 pfk + + * get_audio.c, main.c: + + + + Bug fix in final fwrite(). + +2000-09-02 06:38 cisc + + * util.h: + + warning and error fixes + +2000-09-02 05:42 cisc + + * mpglib/mpg123.h: + + It's important to remember the PARENT_IS_SLASH define when including files from previous dir. + +2000-09-02 05:29 cisc + + * amiga_mpega.c, lame.c, util.c: + + warning and error fixes + +2000-09-02 03:13 pfk + + * Makefile, get_audio.c, gtkanal.c, lame.c, lame.spec, psymodel.h, + timestatus.c, util.c, util.h, vbrquantize.c, version.c, + version.h, mpglib/l2tables.h, mpglib/layer2.c, mpglib/mpg123.h: + + + + Quick and Dirty: Now compilable with g++. + + Layer 1 and 2 decoding makes problems. + + structs and typedef structs with the same name. + Must be patched. + +2000-09-02 01:03 cisc + + * psymodel.c, quantize_pvt.c, timestatus.c: + + warning fixes + +2000-09-01 23:28 pfk + + * Makefile, lame.c, lame.h, util.c, util.h, mpglib/layer1.c, + mpglib/layer2.c: + + + + Bugfix for 9 kbps error + +2000-09-01 23:28 robert + + * get_audio.c: + + small typo in remark + +2000-09-01 20:21 pfk + + * bitstream.c, get_audio.c, gtkanal.c, gtkanal.h, lame.c, lame.h, + newmdct.c, psymodel.c, quantize.c, quantize_pvt.c, reservoir.c, + tables.c, tables.h, util.c, util.h, vbrquantize.c, version.h, + mpglib/common.c, mpglib/interface.c, mpglib/layer1.c, + mpglib/layer2.c, mpglib/layer3.c, mpglib/main.c, mpglib/mpg123.h: + + + + * A lot of minor changes + + * Changed the name of structure element from 'stereo' to 'channels' + if it has the meaning of 'channels'. This is so confusing, so that + there are some bugs in lame. + + Rest read in 'Bad and worse programming styles' and 'job security' + + -- + Frank Klemm + +2000-09-01 16:19 robert + + * lame.c: + + small fix, lame -v x.wav did not work anymore + +2000-09-01 04:04 cisc + + * amiga_mpega.c: + + some warning and error fixes + +2000-09-01 04:03 cisc + + * LICENSE: + + libsndfile is now LGPL + +2000-09-01 00:05 pfk + + * brhist.c, lame.c, parse.c, quantize.c, util.c, util.h, version.c: + + + + presets modified + changed name of bitrate_table to index_to_bitrate + added table bitrate_to_index, speedup of functions using it. + +2000-08-31 21:33 pfk + + * Makefile, amiga_mpega.c, fft.c, fft.h, get_audio.c, get_audio.h, + gtkanal.c, lame.c, lame.h, main.c, mp3rtp.c, newmdct.c, + newmdct.h, psymodel.c, psymodel.h, quantize_pvt.c, util.c, + util.h, version.c, version.h, vorbis_interface.c, + mpglib/decode_i386.c, mpglib/main.c: + + + + Introduction of the type sample_t for PCM samples. + 'short' should not be used in the future. + +2000-08-31 11:06 shibatch + + * psymodel.c: + + minor bugfix of mask_add(). + +2000-08-30 23:29 pfk + + * LICENSE, PRESETS.draft, bitstream.c, lame.c, parse.c, + timestatus.c, util.h, version.c, version.h: + + [no log message] + +2000-08-30 07:18 shibatch + + * quantize_pvt.c: + + Tweaks to --nspsytune. + +2000-08-29 22:35 pfk + + * debugscalefac.c, get_audio.c, id3tag.c, lame.c, lame.h, parse.c, + util.c, util.h, version.c, version.h, doc/html/switchs.html: + + [no log message] + +2000-08-29 10:14 shibatch + + * psymodel.c, quantize_pvt.c: + + Tweakings to --nspsytune. + Tonality table is optimized a little. + Noise calculation now uses tonality. + NSATHSCALE is decreased from 103 to 100. + +2000-08-28 20:18 robert + + * lame.c: + + small tweak to RH_VALIDATE_MS + +2000-08-28 19:55 robert + + * lame.h, parse.c, psymodel.c: + + small fixes + +2000-08-28 19:27 shibatch + + * psymodel.c: + + Tweaks to the tonality table. vbrtest.wav is now encoded correctly with --nspsytune. + +2000-08-28 18:37 pfk + + * lame.h, parse.c, version.c, version.h: + + + + parse.c: presets are taken from a table + version.c: version incremented (should be done more often) + +2000-08-28 10:04 shibatch + + * parse.c, quantize_pvt.c, psymodel.c: + + + Changes to --nspsytune. + +2000-08-27 11:51 robert + + * lame.c: + + tweak to validate MS switching criterion (to be enabled with RH_VALIDATE_MS) + +2000-08-27 04:34 markt + + * parse.c: + + look for .mp3 or .MP3 when parsing input filename + +2000-08-26 04:07 markt + + * Makefile: + + openBSD tweak + +2000-08-26 04:06 markt + + * Makefile (debug): + + tweak for Open BSD + +2000-08-26 04:03 markt + + * Dll/BladeMP3EncDLL.h: + + added include sys/types to BlaceMP3EncDLL.h + Borland compiler needs definitions for BOOL and DWORD. + +2000-08-24 20:34 robert + + * quantize.c: + + little tweak to VBR-old, side channel gets now a little lower bit skeleton + +2000-08-23 23:08 robert + + * Makefile, lame.c, quantize.c, quantize_pvt.c: + + sfb21 kludge, only VBR tries to get an undistorted sfb21 + at lower sample frequencies it makes more trouble than + we can gain from that, so now sfb21 will be ignored in + VBR mode for MPEG-2 LSF. + + first tweak (not enabled) for M/S switching criterion + +2000-08-23 00:02 markt + + * lame.c, vorbis_interface.c: + + messages about filters, vorbis modes + +2000-08-22 18:29 markt + + * lame.c, util.h: + + moved last_time into lame_internal_flags struct + +2000-08-22 16:30 markt + + * get_audio.c: + + byte swapping code now only used for 16 bit input files. + +2000-08-22 03:19 markt + + * lame.c: + + minor gtkflag changes + +2000-08-22 00:08 pfk + + * get_audio.c, parse.c: + + + + get_audio.c: + Support of reporting all supported input file types. + +2000-08-21 20:16 robert + + * lame.c: + + pe_MS was not initialized in case we don't use our psychoacoustic model + +2000-08-21 16:02 robert + + * lame.c, mpglib/main.c: + + LayerI+II LSF corrections + +2000-08-21 15:47 markt + + * doc/html/: contributors.html, history.html, id3.html, index.html, + switchs.html: + + updated docs from Gabriel + +2000-08-21 05:32 markt + + * Makefile (debug), USAGE, vorbis_interface.c: + + added support for the four new vorbis modes. (higher bitrates) + use with the -b option. + +2000-08-21 04:52 markt + + * main.c, mp3rtp.c, Dll/BladeMP3EncDLL.c: + + Fixed problem with writing VBR tag if user renames mp3 output + file during the encoding. + +2000-08-21 00:40 markt + + * lame.c, lame.h, main.c, mp3rtp.c: + + more prep work for vbr tag problem + +2000-08-21 00:28 markt + + * VbrTag.c, VbrTag.h, lame.c: + + prep work to fix Vbrtag when user renames mp3 file during encodiing. + +2000-08-21 00:05 markt + + * main.c, testcase.mp3: + + fixes to main.c: it is supposed to be example code for how to + use the LAME library - it should only include lame.h, all other + .h files are supposed to be private to the encoding library. + +2000-08-21 00:00 markt + + * INSTALL, Makefile, Makefile.B32, Makefile.DJGPP, Makefile.MSVC, + README.B32, TODO, bitstream.c, gtkanal.c, lame.c, lame.dsp, + quantize-pvt.c, quantize-pvt.h, quantize.c, quantize_pvt.c, + quantize_pvt.h, takehiro.c, vbrquantize.c, Dll/MP3EncDll.dsp: + + changed quantize-pvt.c to quantize_pvt.c + Added Boland stuff_ + +2000-08-20 23:21 markt + + * Makefile, version.h: + + Amiga stuff for Makefile, updated version.h to 3.87alpha + +2000-08-20 21:22 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + enhanced lame_enc dll debugging + +2000-08-20 20:50 robert + + * lame.c: + + fixed bug for LSF, + ms_ratio will not be calculated for the second granule + because at lower sample rates there is no second granule + but the M/S switching criterion relies ms_ratio on it + +2000-08-19 10:54 robert + + * lame.c, parse.c, mpglib/main.c: + + total frames of LayerI files was not correctly estimated for decoding + +2000-08-18 18:07 robert + + * USAGE, get_audio.c, gtkanal.c, lame.c, lame.h, parse.c, + mpglib/main.c: + + LayerI+II decoding patches + +2000-08-18 01:40 pfk + + * bitstream.c, brhist.c, lame.c, main.c, parse.c, timestatus.c, + timestatus.h: + + + + bitstream.c: Table based CRC calculation code added (must be enabled to use) + brhist.c: Enlighted design of the bit rate history output + main.c: init of CRC Table in bitstream.c + parse.c: Some parameters can be name in Hz/bps and in kHz/kbps + timestatus.c: Enlighted design of the time counters + lame.c: Changed screen update frequency from 50/100 frames to 2 seconds + +2000-08-17 14:34 robert + + * Makefile, Makefile.DJGPP, Makefile.MSVC, mpglib/common.c: + + Layer1/2 related update + +2000-08-16 17:05 robert + + * Makefile.MSVC: + + added GTK support (frame analyzer) + +2000-08-16 01:22 afaber + + * parse.c, mpglib/common.c, mpglib/interface.c, mpglib/l2tables.h, + mpglib/layer1.c, mpglib/layer1.h, mpglib/layer2.c, + mpglib/layer2.h, mpglib/mpg123.h, mpglib/mpglib.dsp: + + Added support for Layer 1 and Layer 2 decoding + +2000-08-15 19:31 robert + + * Makefile, lame.c, takehiro.c, util.h: + + patch to prevent core dump in case big value = 576 in count_bits_long() + +2000-08-13 13:44 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h, Example.cpp, + LameDLLInterface.htm: + + Added Lame presets to the DLL interface + added HTM document how to use the lame_enc.dll interface + +2000-08-13 02:50 afaber + + * Dll/: Example.cpp, Example.dsp, Example.dsw, MP3EncDll.dsp: + + Added DLL Example + +2000-08-12 15:42 robert + + * quantize.c: + + major speed increase for vbr-old + +2000-08-11 20:53 robert + + * psymodel.c: + + RH_AMP tweak, improves vbrtest.wav + +2000-08-08 21:08 afaber + + * Dll/BladeMP3EncDLL.c: + + Add new RecordItem array, not completely finsihed yet, but it compiles + +2000-08-08 20:11 cisc + + * psymodel.c, takehiro.c: + + code cleanup + +2000-08-08 04:01 markt + + * Makefile: + + Dec Alpha makefile fix + +2000-08-07 18:24 robert + + * Makefile, lame.c, quantize-pvt.c, quantize.c: + + code cleanup + +2000-08-07 05:53 markt + + * takehiro.c: + + code cleanup in count_bits_long() + +2000-08-07 00:00 markt + + * Makefile (debug), doc/html/history.html, mpglib/interface.c, + mpglib/layer3.c: + + bug fixed in mpglib error recovery from corrupt frames + +2000-08-06 22:58 markt + + * get_audio.c, testcase.mp3: + + oops, one bug in 3.86beta. try and change this before + anyone downloads source from the web site :-) + +2000-08-06 22:34 markt + + * get_audio.c, version.h, doc/html/history.html: + + lame 3.86 beta release + +2000-08-06 21:34 markt + + * lame.c, lame.h, testcase.mp3: + + disabled scalefac_scale (except if -q1 is used) + and make old vbr mode the default + +2000-08-06 20:58 markt + + * quantize-pvt.c, testcase.mp3: + + Reverted back to original definition of over_noise and tot_noise: + + tot_noise = is really the average over each sfb of: + [noise(db) - allowed_noise(db)] + + and over_noise is the same average, only over only the + bands with noise > allowed_noise. + +2000-08-06 20:32 markt + + * mpglib/main.c: + + Album ID tag reading bug fixes + +2000-08-06 20:21 markt + + * INSTALL, USAGE, lame.c, lame.h, parse.c, quantize-pvt.c, + takehiro.c, timestatus.c, timestatus.h, util.h, vbrquantize.c, + Dll/MP3export.pas, Dll/README: + + added the "--athlower n" option which lowers the ATH by n db. + + Added possible fix for region0_count and region1_count getting + set to illegal negative values. + +2000-08-03 20:07 robert + + * Makefile, lame.c, lame.spec, quantize-pvt.c, quantize.c: + + don't worry Mark! my noise calculation wrapped by RH_NOISE_CALC + define RH_NOISE_CALC at compile time to get my version of noise + calculation + + special: + -Y amp_scalefac_bands will amplify only the maximum distorted band + +2000-08-01 06:36 markt + + * INSTALL, bitstream.c: + + added a few assert's + +2000-08-01 04:53 markt + + * quantize.c: + + Fixed amp_scalefac_bands (RH found this) + +2000-08-01 04:38 markt + + * get_audio.c, util.c, util.h, mpglib/main.c: + + updated lame --decode to read Roel's AID stuff + +2000-07-31 19:17 markt + + * Makefile (debug), INSTALL, Makefile.DJGPP, lame.spec: + + updated debug makefile + +2000-07-31 19:00 markt + + * Makefile, TODO, USAGE: + + open bsd updates to makefile + +2000-07-31 18:46 markt + + * quantize.c, takehiro.c, testcase.mp3: + + Takehiro's best_huffman_divide turned back on + for MPEG1 only + +2000-07-31 18:38 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c: + + many commits were made over the weekend. But: + + 1. MPEG2 encoding was broken + 2. all my test cases failed. + + #11 is bad. #2 can be caused be general improvements, but + coupled with #1 is a bad sign. + + I spent all of sunday tracking down the many changes, and trying + to find what what the cause of what. I finally ran out of time + and am going to revert some changes back to last working copy. + + Here is a summary: + + takehiro.c: newest version, except: + count_bits_long uses old code (new code commented out). + This code was breaking MPEG2 + + scfsi: uses old slen1_n, slen2_n. I will change this + with the next commit. (in about 10min) + + best_huffman_divide: short block code breaks MPEG2. + short block code is still there, but disabled. + + quantize-pvt.c: Newest version, except: + + all noice calculations reverted back to db. + tot_noise, over_noise, ave_noise, etc. are given in db + and will always be given in db. + + distort[], is left in units of energy, since this saves + many log10() function calls. + + quantize.c : Reverted back to last working version, except + have newest version of VBR_iteration_loop(). + +2000-07-31 00:36 robert + + * psymodel.c: + + revert back to previous version, + it creept in by accident + +2000-07-30 23:48 robert + + * lame.c, psymodel.c, quantize.c: + + minor tweaks + +2000-07-29 22:37 robert + + * lame.bat: + + long file names on in for, thanks to Ih�rosi Wiktor + +2000-07-27 16:42 takehiro + + * bitstream.c: + + minor change + +2000-07-27 16:41 takehiro + + * quantize.c, vbrquantize.c: + + make the short block huffman coding more efficient + +2000-07-27 16:39 takehiro + + * machine.h: + + oops MMX code couldn't compile... + +2000-07-27 16:38 takehiro + + * fft.c: + + removed unused code + +2000-07-27 16:38 takehiro + + * takehiro.c: + + restore old algorithm temporary... + +2000-07-26 13:56 takehiro + + * newmdct.c: + + minor coding hack and prepare for GOGO's subband filtering code + +2000-07-26 13:47 takehiro + + * quantize-pvt.c, quantize-pvt.h, takehiro.c, util.h: + + debug for region0/1 which kzmi reported + +2000-07-26 13:25 takehiro + + * machine.h, quantize-pvt.h, takehiro.c: + + i hope this fix make intel native asm code available on VC + +2000-07-25 22:28 robert + + * quantize.c: + + possible endless loop for different -X modes fixed, + some modes do not minimize "over" and would never + reach over == 0 in some rare cases + +2000-07-25 20:39 robert + + * quantize.c: + + small "fast encode" fix + +2000-07-25 20:09 robert + + * Makefile: + + fixed typo + +2000-07-25 19:24 robert + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + fixed somehow messed up noise calculation + +2000-07-25 15:42 robert + + * quantize.c: + + small bug fix + +2000-07-24 23:50 cisc + + * get_audio.c: + + small fix + +2000-07-24 23:32 cisc + + * USAGE, get_audio.c: + + Changed lame_decoder() to write native endian format when not writing WAV header (-x will byteswap). + +2000-07-24 20:31 markt + + * quantize.c: + + removed some print statements + +2000-07-24 20:30 markt + + * quantize-pvt.c, quantize.c, takehiro.c: + + fixed rare bug with -X0 getting stuck in a loop when over>0 and + over and over_noise didn't change from one iteration to the next. + +2000-07-24 05:51 markt + + * parse.c: + + updated docs + +2000-07-24 05:42 markt + + * USAGE, get_audio.c, gtkanal.c, lame.h, parse.c: + + -t: disables Xing header for encoding, + disables WAV header for decoding + +2000-07-21 17:39 markt + + * Makefile, vorbis_interface.c: + + vorbis interface fixes + +2000-07-21 17:09 markt + + * INSTALL, Makefile.DJGPP, README.DJGPP: + + updated some DJGPP stuff + +2000-07-21 16:50 markt + + * VbrTag.c, encoder.h, get_audio.c: + + added some comments about decoder/encoder delay, + +2000-07-20 04:29 kzmi + + * machine.h: + + add mingw32 support. using windows.h. + +2000-07-20 04:28 kzmi + + * Makefile: + + add non-UNIX environment support. (NOUNIXCMD) + specifying UNAME,ARCH,PGM on command line is available. + +2000-07-19 23:19 robert + + * vbrquantize.c: + + oops, fixed typo + +2000-07-19 22:42 robert + + * vbrquantize.c: + + fixed problem with Roel's clips.wav file, + "pseudo endless loop" problem now gone + maybe the annoying spikes too? + +2000-07-18 22:57 robert + + * vbrquantize.c: + + moved calc_xmin out of VBR_noise_shaping + moved xr34 calculation out of VBR_noise_shaping + changed analog silence detection from granule based to frame based + hacked in a first digital silence treatment per granule (can be optimized) + + round about 8 percent faster on my Pentium 200 machine + +2000-07-18 00:09 markt + + * lame.c: + + moved some stuff into lame_init() + +2000-07-17 23:36 robert + + * vbrquantize.c: + + to make someone happy ;) + +2000-07-17 23:28 markt + + * lame.c: + + Changes from Kimmo: split lame_init_params() into 3 smaller + routines. This somehow fixes some crashes on PPC (which OS?). + +2000-07-17 23:10 markt + + * USAGE, lame.c, machine.h, main.c, quantize.c, util.c, + mpglib/common.c, mpglib/mpg123.h: + + Mac patches. (in an #ifdef macintosh) + +2000-07-17 15:38 robert + + * vbrquantize.c: + + analog silence treatment like in old VBR + +2000-07-16 02:16 robert + + * quantize.c: + + minor tweaks + +2000-07-15 19:20 robert + + * quantize.c: + + OK found what was wrong, should work now + +2000-07-15 17:55 markt + + * Makefile, lame.c, quantize.c: + + Reverted back to older version of quantize.c becuase + version 1.137 broke some of my CBR test cases. + + made scalefac_scale always on for all vbr modes + +2000-07-15 16:49 robert + + * lame.c, quantize.c: + + Takehiro's scalefac_scale now default for old-VBR, no more -q1 necessary + +2000-07-15 04:55 markt + + * Makefile: + + updated makefile for Dec Alpha Linux + +2000-07-14 20:06 markt + + * USAGE, lame.h: + + c++ name mangling fix, type in USAGE + +2000-07-12 18:03 robert + + * util.c, util.h: + + critical band width formula added + +2000-07-11 02:25 markt + + * vbrquantize.c: + + tuning for vbr_mt to fix chirp from John Dalton + +2000-07-11 00:47 markt + + * quantize.c: + + better tuning for ABR mode + +2000-07-11 00:31 markt + + * gtkanal.c, quantize-pvt.c, quantize.c, vbrquantize.c, + mpglib/main.c: + + bug in frame analyzer (causes hangs near eof) fixed + better resyncing during mp3 file initialization in mpglib + +2000-07-10 23:03 markt + + * lame.c, main.c, parse.c, reservoir.c, testcase.mp3, + vbrquantize.c: + + tuned new VBR so Roel will be happy :-) + +2000-07-10 00:24 markt + + * timestatus.c: + + timestatus overflow fix + +2000-07-09 20:05 markt + + * Makefile.DJGPP, README.DJGPP, quantize-pvt.c, quantize.c: + + more updated for DJGPP + +2000-07-09 13:19 shibatch + + * fft.h: + + I forgot to commit fft.h. (by Naoki Shibata) + +2000-07-09 13:16 shibatch + + * fft.c, lame.c, lame.h, parse.c, psymodel.c, quantize-pvt.c: + + Added --nspsytune command line option. This should solve vbrtest problem. (By Naoki Shibata) + +2000-07-09 03:22 gramps + + * parse.c: + + additional help for ID3-style comments in Ogg Vorbis output from a patch by Ralph Giles + +2000-07-09 03:20 gramps + + * lame.c: + + don't add ID3 tags to Ogg Vorbis output + +2000-07-09 03:18 gramps + + * vorbis_interface.c: + + partial support for ID3-style comments from a patch by Ralph Giles + +2000-07-08 15:08 robert + + * quantize.c: + + long time BUG in old VBR fixed, preventing LAME from using more than 2500 bits per channel + +2000-07-08 00:39 markt + + * README.DJGPP, get_audio.c: + + 8bit .wav files supported. + +2000-07-07 22:44 markt + + * Makefile: + + Updateted Makefile for alpha/linux + +2000-07-07 21:42 robert + + * quantize-pvt.h, quantize.c: + + little VBR-old speed up (upto 10%) + +2000-07-07 20:09 markt + + * Makefile.DJGPP, README.DJGPP: + + updated DJGPP stuff from Chris Wise + +2000-07-07 00:34 robert + + * quantize.c: + + more "old-VBR" tuning + +2000-07-06 22:20 cisc + + * amiga_mpega.c: + + Should now work for GCC. + +2000-07-06 16:54 robert + + * Dll/BladeMP3EncDLL.c: + + DLL uses now the same VBR routine by default as the EXE + +2000-07-05 04:57 markt + + * quantize-pvt.c, timestatus.c: + + minor changes + +2000-07-04 23:52 cisc + + * brhist.c, quantize-pvt.c, takehiro.c: + + code cleanup + +2000-07-04 23:52 gramps + + * id3tag.h, lame.h: + + make id3tag.h dependent on lame.h instead of the other way around + +2000-07-04 22:16 markt + + * lame.h, testcase.mp3, util.h, version.h: + + updated version to 3.86 alpha + +2000-07-04 15:40 robert + + * lame.c, quantize.c: + + old VBR silence bug fixed + +2000-07-04 14:46 robert + + * VbrTag.c: + + oops, 1 bit forgotten + +2000-07-04 03:32 kzmi + + * quantize-pvt.c, quantize-pvt.h, quantize.c, vbrquantize.c: + + old tot_noise and over_noise are obsolete. + tot_avg_noise and over_avg_noise were renamed as tot_noise + and over_noise. + +2000-07-04 03:28 gramps + + * USAGE, VbrTag.c, id3tag.c, id3tag.h, lame.c, lame.h, main.c, + mp3rtp.c, parse.c, doc/html/id3.html: + + ID3 version 2 tag support + +2000-07-03 17:10 robert + + * VbrTag.c: + + keep CRC bit for additional Xing-VBR frame + +2000-07-03 16:21 markt + + * doc/html/history.html: + + [no log message] + +2000-07-03 16:20 markt + + * README.DJGPP, lame.h, psymodel.c, quantize-pvt.c, vbrquantize.c, + version.h: + + lame 3.85 beta release + (old VBR mode back to being the default) + +2000-07-03 00:58 markt + + * Makefile, machine.h, psymodel.c: + + added note about FLOAT8 = float breaking certain features + +2000-07-03 00:57 markt + + * Makefile: + + [no log message] + +2000-07-03 00:48 markt + + * psymodel.c, testcase.mp3: + + updated mid/side demasking thresholds with takehiro's formula + +2000-07-03 00:25 markt + + * psymodel.c, vbrquantize.c: + + more tweakes to ATH/PE calculation. psymodel.c uses additive masking + so ATH needed a *= numlines. + +2000-07-02 23:51 markt + + * psymodel.c: + + added ATH threshold to PE calculation. + +2000-07-02 23:39 markt + + * psymodel.c, quantize-pvt.c, quantize-pvt.h, util.c, util.h, + vbrquantize.c: + + code so that ATH can be used for PE formula + +2000-07-02 21:44 markt + + * Makefile: + + Makefile updated so float8 = double + +2000-07-02 18:40 markt + + * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c, + util.c, vbrquantize.c: + + short block re-ording complete! + all routines updated, but not cleaned up: it is now possible + to merge most short block and long block loops + +2000-07-01 22:12 robert + + * lame.c: + + code cleanup + +2000-07-01 21:48 robert + + * util.c: + + integer based padding routine + +2000-07-01 20:37 cisc + + * lame.c, quantize-pvt.h, util.h: + + code cleanup + +2000-07-01 18:12 markt + + * bitstream.c, lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c, testcase.mp3, util.c, util.h, vbrquantize.c: + + re-order short blocks data storage. in preperation for takehiro's + asm routines + +2000-07-01 15:23 robert + + * lame.c, quantize-pvt.c, quantize.c: + + old VBR no ATH bug fixed + +2000-07-01 13:51 robert + + * lame.c, quantize-pvt.h, quantize.c, util.c, util.h: + + code cleanup + +2000-07-01 11:26 robert + + * lame.c, lame.h, parse.c, quantize-pvt.c, quantize.c: + + made switch between default VBR modes easier, look into lame.h + +2000-07-01 02:35 markt + + * lame.c, parse.c, version.h: + + 3.85 alpha (CVS) version: new vbr mode is the default + +2000-07-01 02:32 markt + + * parse.c: + + still bugs trying to make 3.84beta release + +2000-07-01 02:16 markt + + * lame.c, parse.c, quantize-pvt.c: + + i screwed up the 3.84 beta release, lets try again. + making old vbr mode the defailt, temporarily + +2000-07-01 02:11 markt + + * Makefile, version.h: + + [no log message] + +2000-06-30 23:32 markt + + * Makefile: + + makefile: -DFLOAT8 is float + +2000-06-30 23:30 markt + + * lame.c, parse.c, version.h: + + ok, back to new vbr mode = default + +2000-06-30 23:28 markt + + * doc/html/history.html: + + [no log message] + +2000-06-30 23:27 markt + + * Makefile, lame.c, parse.c, version.h: + + old vbr mode made the default. --vbr-old and --vbr-new options + can specify which mode. This is just for the next 10min + while I put out lame 3.84. CVS will then revert back to + default = new vbr mode + +2000-06-30 23:15 markt + + * get_audio.c: + + 8 bit input support (maybe works?) + +2000-06-30 14:25 kzmi + + * VbrTag.c, bitstream.c, brhist.c, debugscalefac.c, gtkanal.c, + psymodel.c, quantize-pvt.c, vbrquantize.c, vorbis_interface.c: + + replaced fprintf/printf/exit() functions with macro + +2000-06-27 13:58 kzmi + + * get_audio.c, lame.c, main.c, timestatus.c, timestatus.h: + + replace printf/fprintf/exit() with macro. + decode_progress() and decode_progress_finish() are added + in timestatus.c. these functions are used in lame_decode(). + +2000-06-27 02:23 markt + + * INSTALL, Makefile, TODO: + + minor updates + +2000-06-27 01:18 markt + + * mpglib/layer3.c: + + Sergey's bug fix for layer3.c MPEG2 tables + +2000-06-26 20:47 afaber + + * Dll/MP3EncDll.dsp: + + Version 1.30 beta 1 + +2000-06-26 16:08 markt + + * quantize.c: + + put Roberts ABR -V n settings back in. + +2000-06-26 05:56 markt + + * TODO, lame.c, quantize.c, vbrquantize.c: + + fixed one bug in VBR handling of vbrquantize.c + changed ABR mode: it should not be adjusting masking thresholds + based on quality settings. It doesn't make sense to change the + maskings if the number of bits is fixed. + +2000-06-25 19:07 robert + + * quantize-pvt.h, quantize.c: + + little improvements for experimentalX modes + +2000-06-24 07:49 kzmi + + * parse.c, util.h: + + replace printf/fprintf and exit() in parse.c with macro + +2000-06-24 06:00 kzmi + + * util.h: + + abolished LAME_ASSERT(). + +2000-06-24 05:57 kzmi + + * util.c: + + LAME_ASSERT() macro was removed. It was replaced assert(). + +2000-06-23 14:45 kzmi + + * util.h: + + FLUSH_ERR() --> FLUSH_ERROR() + +2000-06-23 13:59 kzmi + + * util.h: + + new macros used instead of fprintf(), assert(), and exit(). + +2000-06-23 13:53 kzmi + + * util.c: + + Alternative printing function lame_errorf() was added. + It will be called instead of fprintf() by using new macro "ERRORF" + +2000-06-22 20:41 robert + + * lame.c, parse.c: + + minor bugs + +2000-06-22 18:42 robert + + * USAGE, lame.c, parse.c, quantize.c: + + Marks new VBR now the default, old still under there, use --vbr-old + +2000-06-22 17:16 robert + + * lame.c, util.h: + + padding as in "MPEG-Layer3/Bitstream Syntax and Decoding" + +2000-06-22 16:06 robert + + * mpglib/layer3.c: + + table correction, thanks to Sergey Sapelin + +2000-06-21 15:38 afaber + + * machine.h: + + Update project file (added FLOAT8_is_float define) + +2000-06-21 05:04 markt + + * lame.c, lame.h, psymodel.c, psymodel.h, quantize-pvt.c, util.h, + vorbis_interface.c: + + added some return codes, removed some exits + +2000-06-21 01:14 markt + + * brhist.c: + + added brhist display for windows, from mremondini@racine.ra.it + +2000-06-21 00:05 markt + + * machine.h: + + added default settings for FLOAT8 + +2000-06-20 23:34 markt + + * psymodel.c, quantize-pvt.c, util.h: + + added code to compute numlines and bo,bu arrays instead of using + table data + +2000-06-20 13:28 takehiro + + * Makefile, machine.h: + + prepare for architecture depending optimization + +2000-06-19 05:08 markt + + * main.c, parse.c, vorbis_interface.c: + + more vorbis bugs fixed + +2000-06-19 01:10 markt + + * lame.c: + + oops, if (gfc->filter_type=0) statement fixed + +2000-06-18 14:39 markt + + * mpglib/interface.c: + + mpglib: better resyncing code + +2000-06-18 04:34 cisc + + * version.c: + + minor change + +2000-06-18 04:15 cisc + + * takehiro.c: + + Removed redundant return. + +2000-06-18 04:13 markt + + * vorbis_interface.c: + + more ogg updates + +2000-06-18 04:09 markt + + * main.c (ogg), lame.c: + + ogg stuff + +2000-06-18 04:08 cisc + + * version.c: + + Included get_audio.h for prototypes... + +2000-06-18 03:59 cisc + + * version.c: + + Added version-check for libsndfile... + +2000-06-18 03:43 markt + + * Makefile, main.c (ogg), lame.c, version.c: + + ogg updates + +2000-06-17 14:00 robert + + * parse.c, quantize-pvt.c: + + typo in parse.c was disabling -Xn settings + +2000-06-17 04:57 takehiro + + * TODO: + + something added + +2000-06-17 00:35 markt + + * lame.c, psymodel.c, util.h: + + code to compute numlines_[] mostly debugged, but not in use. + only remaining psycho acoustic table data: minval (for long + blocks) and SNR for short blocks. + +2000-06-16 18:17 markt + + * encoder.h, psymodel.c, testcase.mp3, util.h: + + psymodel cleanup, bval[] table lookup replaced with + formulas. Next step: replace numlines with formulas + +2000-06-16 18:03 robert + + * TODO: + + point added + +2000-06-16 17:31 markt + + * psymodel.c, quantize-pvt.c, vbrquantize.c: + + code re-arrangment in psymode.c. In preperation to replace + bval[] from table lookup with formulas. + +2000-06-15 16:45 markt + + * vbrquantize.c: + + bug fix for -Y VBR mode: needed to check for return code + for count_bits for errors. + +2000-06-15 15:56 markt + + * parse.c, vbrquantize.c, vorbis_interface.c, mpglib/interface.c: + + mpglib bug fix from Naoki + +2000-06-15 00:06 markt + + * lame.c: + + scalefac_scale disabled for VBR modes. + +2000-06-14 21:13 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c, vbrquantize.c: + + A new noise moded(-X 7) and a new structure to keep track + of all the different noise measures, from Iwasa Kazmi + +2000-06-14 21:04 markt + + * lame.c, lame.h, main.c, parse.c, util.c, util.h: + + new FindNearestBitrate routine, return codes for lame_init_params. + +2000-06-14 20:03 markt + + * USAGE, gpkplotting.c: + + font in frame analyzer, updates to USAGE + +2000-06-14 03:15 markt + + * Makefile.MSVC, vorbis_interface.c: + + updated vorbis support (mono, different samplerates) + +2000-06-13 12:42 takehiro + + * bitstream.c, tables.h, takehiro.c: + + minor optimization and debug + +2000-06-13 11:27 takehiro + + * tables.c, takehiro.c: + + completely MMXed choose table routine. faster! + +2000-06-12 05:29 markt + + * psymodel.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + vbrquantize.c: + + added a different FFT->MDCT normalization, disabled. + +2000-06-10 09:38 robert + + * Makefile.MSVC, machine.h: + + vorbis support + +2000-06-10 03:39 cisc + + * quantize-pvt.c, vbrquantize.c: + + Aaargh, and now it suddenly doesn't work anymore, just gives me tons and tons of bitreservoir errors. :P + +2000-06-10 02:43 cisc + + * vbrquantize.c: + + Ooops, fixed redefinition... + +2000-06-10 01:56 cisc + + * quantize-pvt.c, vbrquantize.c: + + TAKEHIRO_IEEE754_HACK works great now, let's put it as default. + +2000-06-10 00:26 markt + + * Makefile, quantize-pvt.c: + + Mat's ROUNDFAC fix. If #define TAKEHIRO_IEEE754_HACK is + used, ROUNDFAC should be set to -0.0946 + +2000-06-10 00:10 markt + + * Makefile, README, USAGE, lame.c, parse.c, quantize.c: + + trivial changes + +2000-06-09 22:54 robert + + * USAGE: + + average bitrate coding (--abr) usage added + +2000-06-09 22:18 robert + + * get_audio.c, lame.c, lame.h, parse.c, quantize.c, quantize.h: + + Safe VBR mode available as --abr x, targetting x kbits + you can use -b and -B switches as usual with VBR + +2000-06-09 20:34 markt + + * get_audio.c, get_audio.h, quantize-pvt.c: + + minor changes + +2000-06-09 01:00 markt + + * tables.c: + + fixed bug in tables.c + +2000-06-09 00:30 markt + + * Makefile: + + [no log message] + +2000-06-09 00:28 markt + + * Makefile, lame.c: + + fix for when compiling without #define HAVEVORBIS + +2000-06-09 00:22 markt + + * INSTALL, Makefile, Dll/MP3EncDll.dsp: + + updated makefiles for VORBIS option + +2000-06-08 23:19 markt + + * USAGE, lame.c, parse.c, vorbis_interface.c: + + .ogg encoding now works. + +2000-06-08 21:15 markt + + * lame.c, vorbis_interface.c: + + more .ogg encoding stuff. still not working + +2000-06-08 20:46 markt + + * Makefile, get_audio.c, gtkanal.c, lame.c, lame.h, parse.c, + vorbis_interface.c: + + --ogg option to produce .ogg files. not yet working + +2000-06-08 06:04 markt + + * API: + + updated API to include HAVEVORBIS info + +2000-06-08 05:59 markt + + * Makefile: + + makefile for libvorbis support + +2000-06-08 05:58 markt + + * Makefile, USAGE, get_audio.c, lame.h, parse.c, + vorbis_interface.c, mpglib/main.c: + + added .ogg file decoding. + Re-encode all your Vorbis files to MP3 !!! + + (or, lame --decode input.ogg output.wav might be usefull) + +2000-06-07 23:36 markt + + * INSTALL, get_audio.c, lame.h, reservoir.c: + + started to add .ogg decoding + +2000-06-07 22:56 sbellon + + * VbrTag.c, get_audio.c, ieeefloat.c, ieeefloat.h, machine.h, + portableio.c, reservoir.c, mpglib/decode_i386.c, mpglib/mpg123.h: + + added support for FPA10 hardware (RISC OS only) + +2000-06-07 22:54 sbellon + + * main.c: + + changed RISC OS file typing code + +2000-06-07 13:26 takehiro + + * lame.spec: + + spec file for RPM. contributed by ramsy@linux.or.jp + +2000-06-05 18:44 markt + + * gpkplotting.c, gtkanal.c: + + updated X windows font selection (thanks Iwasa) + +2000-06-05 17:38 markt + + * testcase.mp3: + + updated testcase + +2000-06-03 05:39 takehiro + + * takehiro.c: + + more aggressive scfsi using and little bit memory optimization + +2000-06-03 02:46 cisc + + * get_audio.c: + + code cleanup + +2000-06-01 18:30 cisc + + * amiga_mpega.c: + + code cleanup + +2000-05-31 21:00 markt + + * quantize.c: + + SAFE_VBR mode fixes + +2000-05-31 20:40 markt + + * USAGE, lame.c, parse.c, psymodel.c, quantize.c: + + SAFE_VBR mode added. not enabled yet + +2000-05-31 19:52 cisc + + * vbrquantize.c: + + code cleanup + +2000-05-31 03:37 cisc + + * timestatus.c: + + code cleanup + +2000-05-31 00:25 robert + + * Makefile: + + [no log message] + +2000-05-31 00:24 robert + + * mpglib/: interface.c, layer3.c, main.c, mpg123.h: + + code cleanup + +2000-05-30 23:47 markt + + * lame.c: + + -f "fast mode" is now a little slower. + + It now *will* compute psycho acoustics, used for total bits + and pre-echo detection. But it will not spend any time + trying to find optimal scalefactors. + +2000-05-30 23:37 markt + + * TODO, bitstream.c, lame.c, takehiro.c, vbrquantize.c: + + fixed scfsi bug in vbrquantize.c + +2000-05-30 22:29 cisc + + * VbrTag.c, bitstream.c, get_audio.c, l3side.h, main.c, + quantize-pvt.c, quantize-pvt.h, util.c: + + code cleanup + +2000-05-30 22:01 cisc + + * takehiro.c, timestatus.c: + + code cleanup + +2000-05-30 20:01 robert + + * VbrTag.c, gtkanal.c, lame.c, newmdct.c, psymodel.c, + quantize-pvt.c, reservoir.c, takehiro.c, timestatus.c, util.c, + util.h, vbrquantize.c, Makefile: + + code cleanup + +2000-05-30 16:01 robert + + * fft.c, get_audio.c, main.c: + + code cleanup + +2000-05-30 15:16 robert + + * bitstream.c, l3side.h, quantize.c, quantize.h, util.h: + + signed/unsigned fixes + +2000-05-30 00:20 markt + + * Makefile: + + updated Makefile comment about Sun OS + +2000-05-30 00:12 markt + + * bitstream.c, psymodel.c, reservoir.c, takehiro.c, vbrquantize.c: + + psymodel.c: yet another loop check added + + vbrquantize.c: best_scalefac_store can change scalefac values. + scalefactors must be saved and restored before each call. + + bitstream.c: added part2_length assert check + +2000-05-29 22:11 cisc + + * get_audio.c: + + Included portableio.h for prototypes. + +2000-05-29 21:49 cisc + + * amiga_mpega.c: + + Skip bad frames. + +2000-05-29 19:59 robert + + * VbrTag.c, get_audio.c, quantize.c, vbrquantize.c: + + compiler warnings fixed + +2000-05-29 17:15 afaber + + * VbrTag.c: + + Private bit was not retained in VBR header, changes masking bit from 0x0c to 0x0d + +2000-05-29 17:14 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h: + + Some minor fixes to the DLL inteface, added Write VBR tag prototype + Added LGPL header to *.h file + +2000-05-29 17:12 afaber + + * lame.dsp: + + Set proper defines in the debug mode + +2000-05-29 16:50 markt + + * mpglib/: layer3.c, main.c, mpglib.h: + + parent_is_slash #define, for the Amiga + +2000-05-29 14:39 markt + + * brhist.c, machine.h, psymodel.c, mpglib/interface.c: + + fixed loop problems with large --cwlimit + +2000-05-28 23:48 markt + + * Makefile: + + makefile debug branch + +2000-05-28 23:47 markt + + * Makefile: + + makefile now -O3 (linux) by default + +2000-05-28 23:46 markt + + * Makefile, USAGE, psymodel.c, quantize.c, reservoir.c, + vbrquantize.c, mpglib/interface.c: + + code cleanup + +2000-05-28 06:56 takehiro + + * quantize-pvt.c: + + restored old GCC asm routine + +2000-05-28 05:01 takehiro + + * Makefile, takehiro.c: + + initial MMX implementation attempt.. + use MMX to huffman coding. + +2000-05-27 07:41 takehiro + + * takehiro.c: + + more pseudo SIMD code + +2000-05-27 07:23 takehiro + + * testcase.mp3: + + testcase update for new scalefac_scale + +2000-05-27 07:22 takehiro + + * quantize-pvt.c, quantize-pvt.h, takehiro.c: + + pseude SIMD countbit routine preparing for MMX + +2000-05-27 07:21 takehiro + + * quantize.c: + + oops, foolish typemiss... + +2000-05-27 03:22 takehiro + + * lame.c, quantize.c, version.h: + + scalefac_scale debug and use it as default + new subblock_gain algorithm + (initial release, -Z to enable it, but not works fine) + +2000-05-27 03:08 takehiro + + * newmdct.c: + + minor changing + +2000-05-27 03:06 takehiro + + * quantize-pvt.c, quantize.c, quantize-pvt.h: + + scalefac_scale debug and use it as default + new subblock_gain algorithm + (initial release, -Z to enable it, but not works fine) + +2000-05-26 19:03 markt + + * gtkanal.c, lame.c, vbrquantize.c: + + vbrquantize.c work + +2000-05-26 01:49 cisc + + * amiga_mpega.c, get_audio.c, lame.h: + + Fixed a bunch of errors that must have been committed whilst sleepwalking. ;) + +2000-05-26 00:49 markt + + * get_audio.c, lame.h, main.c: + + moved WAV writing routines and lame_decoder() into get_audio.c + +2000-05-26 00:31 markt + + * main.c: + + another bug in WriteWav + +2000-05-26 00:02 markt + + * main.c, quantize-pvt.c: + + tweaked .wav file output. Fixed small bug in short block bit + allocation (thanks Iwasa!) + +2000-05-25 23:02 markt + + * lame.dsp (MSVC6): + + updated project files MSVC6 tag + +2000-05-25 15:27 markt + + * amiga_mpega.c, get_audio.c, gtkanal.c, lame.h, main.c, + vbrquantize.c, mpglib/interface.c, mpglib/main.c: + + updated frame analyzer to show difference between original/decoded + updated --decode to return bitrate, samplerate, numchannels. + if samplerate or numchannels changes in mp3 stream, --decode will + quite with an error message + +2000-05-24 16:53 markt + + * gtkanal.c, gtkanal.h, quantize-pvt.c, vbrquantize.c, + mpglib/layer3.c: + + tweeks to frame analyzer: added preflag display + +2000-05-24 00:24 cisc + + * get_audio.c: + + Fixed silly bug preventing mp3input working together with libsndfile. + +2000-05-23 04:12 markt + + * bitstream.c, gtkanal.c, quantize-pvt.c, quantize.c, + vbrquantize.c: + + fixed a bug in the frame analyzer: was rescaling axis between plotting + energy, masking and noise + +2000-05-22 18:20 shibatch + + * mpglib/tabinit.c: + + Changed decwin to more precise one. + +2000-05-22 17:11 markt + + * quantize-pvt.c: + + make IEEE stuff the default on GNU i386 + +2000-05-22 13:14 cisc + + * main.c: + + fwrite() returns number of objects actually written + +2000-05-22 05:39 markt + + * main.c: + + fixed bug for mono .wav headers for lame --decode + +2000-05-22 05:27 markt + + * quantize-pvt.c: + + GNU C ASM code is temporarily disabled. + + It looks like Takehiro's changes to 1.107 have broken this code. + +2000-05-22 05:07 markt + + * mpglib/: common.c, interface.c: + + more robust frame resyncing + +2000-05-22 05:07 markt + + * quantize.c, vbrquantize.c: + + more robust mpglib decoding (frame re-syncing) + +2000-05-21 20:54 cisc + + * quantize-pvt.c: + + TAKEHIRO_IEEE754_HACK should not be default + +2000-05-21 20:31 robert + + * parse.c: + + PRESET tunings: + + after we dropped the ISO 7680 bit buffer limit + allow more often 320 kbits frames + + for MPEG2.5 allow more often short blocks + only 8 kHz streams have now problems with + short blocks, so don't use them then + - dropped all highpass filters, cos the + results did not satisfy me + (in my opinion they actually do more harm than good) + - tuned some lowpass filters cos of the sfb21 + noise calculation in VBR + +2000-05-21 19:33 markt + + * l3side.h, parse.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.c, quantize.h, reservoir.c, reservoir.h: + + comments and other code cleanup + +2000-05-21 16:42 takehiro + + * quantize.c: + + new scalefac_scale algorithm option changed -Y -> -Z + +2000-05-21 16:25 takehiro + + * quantize.c: + + new scalefac_scale algorithm + +2000-05-21 16:19 takehiro + + * quantize-pvt.h, quantize.c: + + new scalefac_scale algorithm. enables with -Y option. + +2000-05-21 13:15 takehiro + + * quantize-pvt.h: + + VBR bug related sfb22 fixed + +2000-05-21 12:52 takehiro + + * quantize-pvt.c: + + VBR bug related sfb22 fixed + +2000-05-20 23:49 robert + + * quantize-pvt.c, quantize.c: + + minor tweaks + +2000-05-20 23:33 robert + + * quantize.c: + + VBR hack + +2000-05-20 21:05 markt + + * bitstream.c, main.c, mpglib/main.c: + + totbit buffer overflow fix + +2000-05-20 20:57 cisc + + * takehiro.c: + + choose_table() argument is int *, not unsigned * + +2000-05-20 20:36 markt + + * bitstream.c, main.c, util.h, mpglib/main.c: + + mpglib will not decode Xing VBR header. + write_timing changed to unsigned long to allow encoding more + than 4 hours at 128kbs. + +2000-05-20 15:13 markt + + * main.c, takehiro.c: + + .wav output with --decode was putting wrong filesize in + .wav header. + +2000-05-19 23:01 markt + + * quantize-pvt.c, testcase.mp3, version.h: + + updated version.h lame 3.84 alpha (CVS version) + +2000-05-19 20:07 markt + + * doc/html/history.html: + + updated history for 3.83beta + +2000-05-19 20:06 markt + + * version.h: + + lame 3.83beta + +2000-05-19 18:43 markt + + * encoder.h, lame.c: + + possible serious buffering problem fixed. LAME buffers input data until + it has at least 1904 samples. It then starts processing them. + + The old MDCT routines processed 1728 samples and had a delay of 528. + (introduced in 3.54) But the new MDCT routines, because the delay is + so small (48 samples) actually need 2014 samples to be in the buffer! + + If you use the lame input routines, for MPEG1, this bug would + not be found because the buffer always has well over 2014 samples + in it. But it was possible to trigger it in MPEG2 encodings. + It would also be possible to trigger this bug in programs + that use lame_enc.dll and pass LAME data that is not in + chunks of 1152 samples. + +2000-05-19 17:23 markt + + * bitstream.c, lame.c, lame.h, parse.c, psymodel.c, testcase.mp3, + vbrquantize.c: + + tweaks to psymodel initialization + more work on vbrquantize.c + +2000-05-19 01:38 markt + + * bitstream.c, gtkanal.c, l3side.h, lame.c, main.c, psymodel.c, + quantize-pvt.c, takehiro.c, testcase.mp3, vbrquantize.c: + + more work on vbrquantize.c + +2000-05-18 18:50 markt + + * main.c: + + updated decoder to remove initial delay + +2000-05-18 05:38 markt + + * main.c, parse.c: + + lame --decode now outputs .wav files + file length in header is set to 2^32-1, since we dont + really know ahead of time how many samples are in the mp3 file. + +2000-05-17 22:25 markt + + * quantize.c: + + ath lower bug in quantize.c fixed + +2000-05-17 22:08 markt + + * quantize-pvt.c: + + calc_noise1 will compute noise (and related info) for + last scalefactor band + +2000-05-17 21:33 markt + + * quantize-pvt.c, takehiro.c: + + frame analyzer displays more data in scalefactor band 22 + +2000-05-17 19:50 markt + + * gtkanal.h, quantize-pvt.c, quantize-pvt.h, quantize.c, + vbrquantize.c: + + modified frame analyzer to show last scalefactor band, + energy and masking (from the ATH). distortion is not yet + calculated in this band. + +2000-05-17 18:08 markt + + * gtkanal.c, l3side.h, quantize-pvt.c, quantize.c, util.h: + + Possible fix for recent VBR/sweep bug: + min bitrate not strictly enforced with -F, and + analog silence was only being computed up th 16khz. + +2000-05-17 17:16 markt + + * USAGE, brhist.c, get_audio.c, lame.c, lame.h, main.c, quantize.c, + reservoir.c, util.c, util.h, vbrquantize.c: + + moved framenum, totalframes into lame.h (so programs which + use libmp3lame can compute statis info.) + +2000-05-15 14:34 takehiro + + * newmdct.c: + + more coding hack. + +2000-05-14 23:38 cisc + + * newmdct.c: + + Changed M_PI to PI + +2000-05-14 08:12 takehiro + + * newmdct.c: + + Naoki's short block mdct + and more my coding hack for mdct + +2000-05-14 05:51 takehiro + + * newmdct.c, util.h: + + mdct_long coding hack + +2000-05-12 11:59 robert + + * util.h, lame.c, newmdct.c: + + code cleanup + +2000-05-12 09:51 takehiro + + * newmdct.c, doc/html/history.html: + + more work in mdct_long and window_filtering + +2000-05-12 05:03 markt + + * testcase.mp3: + + updated testcase.mp3 + +2000-05-12 05:02 markt + + * version.h: + + updated version to 3.83 alpha + +2000-05-12 05:01 markt + + * API, README, version.h, doc/html/history.html: + + version 3.83 + +2000-05-10 13:55 takehiro + + * quantize-pvt.c: + + dirty hack for IEEE 754 FPU + +2000-05-09 16:31 afaber + + * Dll/BladeMP3EncDLL.c: + + Fixed problem with build date string, temp string was not initialized properly (was missing a terminator character) + +2000-05-09 11:30 takehiro + + * newmdct.c: + + Naoki's mdct_long with my coding hack. + +2000-05-09 02:45 cisc + + * API, brhist.c: + + Added NOTERMCAP define and changed brhist.c accordingly. + +2000-05-08 22:48 markt + + * testcase.mp3: + + [no log message] + +2000-05-08 22:41 markt + + * quantize-pvt.c, doc/html/history.html: + + updated side channel 320kbs fix + +2000-05-08 22:30 robert + + * Makefile, quantize-pvt.c: + + M/S reduce_side bug fixed, + nonISO buffer mode should work now for + 320 kbits MS streams too + +2000-05-08 19:55 afaber + + * Dll/BladeMP3EncDLL.c: + + Bumped up version number of DLL version library, fixed some of the debugging code + +2000-05-08 17:46 markt + + * doc/html/: contributors.html, examples.html, id3.html, + index.html, lame.css, node5.html, node6.html, switchs.html: + + updated docs from Gaby + +2000-05-08 17:40 markt + + * version.h: + + 3.82 alpha(CVS) version + +2000-05-08 17:38 markt + + * version.h, doc/html/history.html: + + 3.81beta release + +2000-05-08 17:31 markt + + * Makefile, USAGE, VbrTag.c, brhist.c, lame.h, parse.c, + reservoir.c, util.c: + + removed ISO buffer limitation, added --strictly-enforce-ISO option + +2000-05-08 00:06 markt + + * quantize-pvt.c, reservoir.c, vbrquantize.c: + + started work on vbrquantize.c + +2000-05-07 11:09 robert + + * Makefile, Makefile.MSVC, lame.c, parse.c: + + -F option now working, + updated Makefile for DOS + +2000-05-07 03:59 takehiro + + * newmdct.c, util.h: + + new IDCT32 routine from Naoki and optimized by me. + and more thread safe coding. + +2000-05-06 22:20 markt + + * testcase.mp3: + + updated testcases + +2000-05-06 22:20 markt + + * l3bitstream-pvt.h, lame.dsp, Dll/MP3EncDll.dsp: + + updated project files (for removal of ISO code) + +2000-05-06 22:18 markt + + * Makefile, VbrTag.c, VbrTag.h, formatBitstream.c, + formatBitstream.h, l3bitstream.c, l3bitstream.h, lame.c, + quantize.c, util.c, util.h, vbrquantize.c: + + removed all ISO code + +2000-05-06 22:09 markt + + * version.h: + + updated version to 3.81 alpha 1 (CVS version) + +2000-05-06 22:07 markt + + * Makefile: + + updated makefile for beta release + +2000-05-06 22:05 markt + + * version.h, doc/html/history.html: + + updated version for 3.80 beta release + +2000-05-06 22:04 markt + + * USAGE, lame.c, lame.h, main.c, parse.c, quantize.c, + vbrquantize.c: + + added -F option and compression ratio options + +2000-05-06 19:16 markt + + * USAGE, lame.c, lame.h, parse.c, util.c: + + --freeformat option added. Allows lame to write free format + bitstreams + +2000-05-06 18:45 markt + + * bitstream.c, gtkanal.c, lame.c, parse.c, psymodel.c, quantize.c, + util.h, mpglib/interface.c, mpglib/main.c: + + fixed buffer overflow in bitstream.c, + some improvements to mpglib mp3 playback + +2000-05-06 09:27 afaber + + * Dll/MP3EncDll.dsp: + + Update workspaces + +2000-05-05 20:48 markt + + * get_audio.c, mpglib/common.c, mpglib/interface.c, mpglib/main.c, + mpglib/mpg123.h, mpglib/mpglib.h: + + free format mp3 decoding now supported, not fully tested + +2000-05-04 00:07 takehiro + + * takehiro.c: + + new count bits routine, speed up by coding hack. + +2000-05-03 07:23 markt + + * psymodel.c: + + updated comments + +2000-05-03 07:21 markt + + * psymodel.c, testcase.mp3: + + minor change to long block pre-echo control + +2000-05-03 07:18 markt + + * psymodel.c, testcase.mp3: + + minor improvement to long block pre-echo control + +2000-05-03 03:03 markt + + * mpglib/interface.c: + + one last tweak to interface.c + +2000-05-03 02:37 markt + + * bitstream.c, mpglib/common.c, mpglib/interface.c, + mpglib/layer3.c, mpglib/mpg123.h, mpglib/mpglib.h: + + worked on mpglib/interface.c to make it handle free format + bitstreams. (not yet working) + +2000-05-02 18:31 afaber + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Update lame version, bug fixes to play list file generation + +2000-05-02 02:53 markt + + * reservoir.c: + + for CBR encoding, 320kbs, dont allow main_data_begin > 0 + +2000-05-02 01:24 markt + + * gtkanal.c, lame.c, psymodel.c, quantize-pvt.c, quantize.c, + testcase.mp3: + + tweaked a bunch of bit allocation on PE settings, + based on tunings of testsignal2.wav and castanets.wav + +2000-05-01 18:18 markt + + * bitstream.c, brhist.c, brhist.h, lame.c, lame.dsp, lame.h, + parse.c, quantize-pvt.c, reservoir.c, util.h, Dll/MP3EncDll.dsp: + + bunch of vbr histogram tweaks, and added --athshort option for + internal testing only + +2000-04-30 17:54 robert + + * lame.bat: + + DOS batch file to put on Win9x Desktop + you can drag and drop waves on it and + lame will encode them to mp3 + +2000-04-29 23:41 markt + + * bitstream.c, reservoir.c, testcase.mp3: + + moved where main_data_begin was corrected when + padding into ancillary data + +2000-04-26 18:14 markt + + * USAGE, lame.h, main.c, parse.c: + + added the '--decode' option + +2000-04-26 00:54 markt + + * machine.h, main.c, mpglib/decode_i386.c, mpglib/layer3.c: + + moved calls to open the output file until after all + arguments and other conditions are checked. + +2000-04-24 22:22 markt + + * reservoir.c, testcase.mp3: + + disabled acillary drain (pre-frame) because of bugs at 320kbs + Could be player or encoder bug - have to investigate + +2000-04-19 21:35 robert + + * psymodel.c: + + MPEG2.5 related bug fixed + +2000-04-19 19:35 markt + + * lame.c, lame.h, parse.c, quantize-pvt.c: + + fixed bug allowing more than 4096 bits in a granule + +2000-04-18 22:57 markt + + * lame.c, lame.h, psymodel.c, reservoir.c, takehiro.c, util.h: + + lame is now (*maybe*) thread safe! + +2000-04-18 08:35 markt + + * VbrTag.c, VbrTag.h, bitstream.c, brhist.c, get_audio.c, + get_audio.h, id3tag.c, id3tag.h, l3bitstream.c, lame.c, lame.h, + parse.c, psymodel.c, quantize-pvt.c, quantize.c, reservoir.c, + reservoir.h, testcase.mp3, util.c, util.h, vbrquantize.c, + Dll/BladeMP3EncDLL.c: + + more thread-safe work, and id3/vbr tag bug discovered by + Iwasa Kasmi + +2000-04-17 23:29 markt + + * lame.c, psymodel.c, quantize-pvt.c, quantize.c, util.h, + vbrquantize.c: + + tweaks to vbrquantize.c + +2000-04-17 06:12 markt + + * lame.c, testcase.mp3, vbrquantize.c: + + updated test cases + +2000-04-17 05:16 markt + + * bitstream.c, l3bitstream.c, l3side.h, lame.c, quantize-pvt.c, + reservoir.c, mpglib/main.c: + + fixed VBR stuffing bits problem. + if VBR uses a large frame, then ResvMax may become small, and + we have to make sure that main_data_begin doesn't create a buffer + which violates this condition. + + The old code wouldn't check the above, but it would pad the current + frame with 0's (wasting bits) to make sure the *next* frame didn't + violate the ResvMax condition. But this results in wasted bits + because in VBR there is a change the *next* frame will be at + a lower bitrate and thus have a larger ResvMax. + +2000-04-17 02:25 markt + + * API, Makefile, get_audio.c, gtkanal.c, lame.c, lame.h, main.c, + mp3x.c, parse.c, psymodel.c, quantize-pvt.c, quantize.c, + reservoir.c, util.h, vbrquantize.c, mpglib/layer3.c, + mpglib/main.c, mpglib/mpglib.h: + + Removed gtk specific code from libmp3lame.a: libmp3lame.a can now + be compiled to support the mp3 frame analyzer but does not require + gtk to be installed. (and thus, HAVEGTK does not occure in any + of the library routines). To compile the frame analyzer (mp3x) you + of course still need gtk installed. + +2000-04-17 00:38 markt + + * VbrTag.c, mpglib/main.c: + + another attempt at fixing mpeg2.5 xing header + +2000-04-16 20:56 markt + + * VbrTag.c: + + VBR header for MPEG2.5 fixed. + +2000-04-14 00:37 markt + + * lame.c, main.c, parse.c, quantize-pvt.c, reservoir.c, + reservoir.h, vbrquantize.c: + + tweaks to vbrquantize.c + +2000-04-13 01:57 markt + + * version.h (lame3_70): + + fixed version + +2000-04-13 01:19 markt + + * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, util.h, + vbrquantize.c: + + vrbquantize bounds checking + +2000-04-12 18:44 markt + + * lame.c, psymodel.c, quantize.c, testcase.mp3, util.h, + vbrquantize.c: + + removed gfc->masking_lower + +2000-04-12 18:29 markt + + * Makefile, quantize-pvt.c, quantize.c: + + Robert's VBR quality control mode now the default! + +2000-04-12 18:19 markt + + * lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, util.h, + vbrquantize.c: + + removed static masking_lower + +2000-04-12 18:10 markt + + * quantize-pvt.c, quantize.c: + + removed reduce_sidechannel static + +2000-04-12 18:08 markt + + * quantize-pvt.c, quantize.c, vbrquantize.c: + + removed convert_mdct static variable + +2000-04-12 18:06 markt + + * quantize-pvt.c, util.h: + + removed static variables ATH_l, ATH_s + +2000-04-12 15:47 markt + + * lame.c, psymodel.c, quantize.c, vbrquantize.c, doc/man/lame.1: + + removed qthr_l, qthr_s from psymodel.c + fixed man pages. + enabled new VBR code with -Y + disabled -Z option: it was broken since subblock gains were not + scaled into xrpow + +2000-04-12 01:37 markt + + * mpglib/layer3.c: + + gtk changes + +2000-04-12 01:36 markt + + * gtkanal.c, lame.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.h, testcase.mp3, vbrquantize.c: + + new vbr quantize code mostly done! + +2000-04-11 18:24 markt + + * Makefile, get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, + lame.h, quantize.c, util.h, vbrquantize.c: + + removed all static variables from get_audio.c + +2000-04-11 15:59 markt + + * HACKING: + + updated HACKING + +2000-04-11 15:55 markt + + * API, l3side.h, lame.c, quantize-pvt.c, quantize-pvt.h, util.h, + vbrquantize.c: + + updated API + +2000-04-11 00:33 markt + + * lame.c, vbrquantize.c: + + work on vbrquattize.c + +2000-04-10 20:24 markt + + * lame.c, main.c, quantize-pvt.c, quantize.c, util.c, util.h: + + bug fixed: mfbuf overflow, and check for overflow was + being done, but after the overflow and in this case + the overflow was causing the check to pass. + +2000-04-10 16:41 markt + + * lame.c, quantize.h, util.c, util.h, vbrquantize.c: + + precompute 16 windows for downsampling. much faster. + +2000-04-09 21:53 markt + + * bitstream.c, quantize-pvt.c, quantize.c, reservoir.c, util.c, + mpglib/layer3.c, mpglib/main.c: + + MPEG2.5 8khz sampling rate fixes + +2000-04-09 02:08 markt + + * encoder.h, lame.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + reservoir.c, testcase.mp3: + + tweaked bit reservoir growth, bits on pe allocation + +2000-04-08 23:33 markt + + * lame.c, quantize-pvt.c, takehiro.c, testcase.mp3: + + tweaks to on_pe, side channel bit allocation + +2000-04-08 20:33 markt + + * encoder.h, testcase.mp3: + + switched to encoder delay of 576 + +2000-04-08 20:31 markt + + * bitstream.c, tables.c: + + [no log message] + +2000-04-08 20:22 markt + + * bitstream.c, quantize.c, takehiro.c, testcase.mp3, util.c, + util.h: + + Takehiro's more efficient short block huffman coding. + +2000-04-08 18:08 markt + + * lame.c: + + VBR compression ratio calculation + +2000-04-08 01:26 cisc + + * bitstream.c: + + Use INLINE dammit! ;) + +2000-04-07 00:11 markt + + * util.c: + + fixed M_PI problem + +2000-04-06 21:08 robert + + * bitstream.c: + + scalefac_band compile fix + +2000-04-06 19:26 markt + + * doc/html/history.html (lame3_70): + + [no log message] + +2000-04-06 19:17 markt + + * Makefile, version.h (lame3_70): + + [no log message] + +2000-04-06 18:49 markt + + * Makefile (lame3_70): + + [no log message] + +2000-04-06 18:48 markt + + * version.h, doc/html/history.html (lame3_70): + + version 3.70 + +2000-04-06 18:30 markt + + * gtkanal.c, l3bitstream-pvt.h, l3bitstream.c, l3side.h, lame.c, + quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c, + testcase.mp3, util.h, vbrquantize.c: + + made scalefac_band non-local + +2000-04-06 18:23 markt + + * bitstream.c: + + [no log message] + +2000-04-06 18:19 markt + + * bitstream.h: + + [no log message] + +2000-04-06 18:18 markt + + * bitstream.c: + + opps, forgot to add this... + +2000-04-06 17:31 markt + + * Makefile.MSVC, lame.dsp, Dll/MP3EncDll.dsp: + + MSVC project files updated + +2000-04-06 17:29 markt + + * VbrTag.c, VbrTag.h, lame.c, util.c, util.h: + + takehiro bitstream.c now on by default! + +2000-04-06 16:32 markt + + * takehiro.c, mpglib/layer3.c: + + takehiro bitstream.c now working for CBR, disabled by default + +2000-04-05 08:54 markt + + * Makefile, l3bitstream.c, lame.c, quantize-pvt.c, quantize-pvt.h, + tables.c, tables.h, takehiro.c, util.c, util.h: + + takehiro's bitstream.c package close to being interface + into lame. + +2000-04-05 01:38 markt + + * lame.c, util.c: + + mode_fixed bug + +2000-04-05 01:38 markt + + * lame.c (lame3_70): + + mode_fixed bug fixed + +2000-04-04 22:49 markt + + * version.h, doc/html/history.html (lame3_70): + + updated version + +2000-04-04 21:36 robert + + * parse.c: + + [no log message] + +2000-04-04 20:37 cisc + + * amiga_mpega.c (lame3_70): + + Fixed nsamp overflow problem. + +2000-04-04 19:51 markt + + * lame.c, util.c, util.h: + + upsampling uses old interpolation code + downsampling uses good, FIR/blackman window code + +2000-04-04 19:27 markt + + * version.h (lame3_70): + + updated version + +2000-04-04 19:05 markt + + * Makefile.MSVC: + + loopold removed from makefile.msvc + +2000-04-04 17:45 markt + + * parse.c (lame3_70), parse.c: + + cwlimit parsing fixed + +2000-04-04 16:05 markt + + * lame.c (lame3_70), lame.c: + + default mode will use jstereo + +2000-04-04 03:20 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + [no log message] + +2000-04-04 03:20 markt + + * Dll/BladeMP3EncDLL.c: + + more fixes + +2000-04-03 19:50 markt + + * quantize-pvt.c: + + more gfc changes + +2000-04-03 19:19 markt + + * HACKING, lame.c, newmdct.c, quantize-pvt.c, quantize.c, util.c, + util.h: + + more thread-safe work. (moving all static variables into + gfc-> struct) + +2000-04-03 18:24 markt + + * brhist.c, get_audio.c, gtkanal.c, l3bitstream.c, l3bitstream.h, + lame.c, lame.h, newmdct.c, parse.c, psymodel.c, quantize-pvt.c, + quantize.c, quantize.h, reservoir.c, takehiro.c, util.c, util.h, + vbrquantize.c: + + more massive internal changes in the goal of making + lame thread safe. + + gfp-> user controlled varialbes + gfc-> all other internal parameters. eventually all global variables + which very from encode to encode need to go in here. + +2000-04-03 16:00 markt + + * Dll/BladeMP3EncDLL.c: + + dll finally fixed! + +2000-04-03 15:59 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + dll fixes + +2000-04-03 15:39 markt + + * lame.c, Dll/BladeMP3EncDLL.c (lame3_70): + + bug in lame_enc dll fixed? + +2000-04-03 15:38 markt + + * Dll/BladeMP3EncDLL.c: + + bug in lame_enc.dll finally fixed? + +2000-04-03 01:19 markt + + * lame.c: + + tweaked output display + +2000-04-03 01:07 markt + + * lame.c, Dll/BladeMP3EncDLL.c: + + new resample routine. very slow, but much higher + quality. + +2000-04-02 19:38 robert + + * parse.c: + + overhauled presets: + + redesign of help page + + phone uses now MPEG2.5 8kHz + + sw new, for short wave radio @ 11.025 kHz 24kbits + + am new, for am radio @ 16 kHz 32 kbits + + fm changed, 22.05 kHz 64 kbits + + radio new, the old fm at 112 kbits + rest minor tunings + +2000-04-02 02:57 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + [no log message] + +2000-04-02 02:44 markt + + * Dll/: BladeMP3EncDLL.c (lame3_70), BladeMP3EncDLL.c: + + [no log message] + +2000-04-02 01:56 markt + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.h (lame3_70): + + Dll updates + +2000-04-02 01:55 markt + + * Dll/BladeMP3EncDLL.c: + + more DLL updates + +2000-04-02 01:39 markt + + * parse.c, util.c: + + MPEG2.5 docs + +2000-04-02 01:35 markt + + * l3bitstream.c, lame.c, lame.h, psymodel.c, quantize-pvt.c, + quantize-pvt.h, util.c, util.h, Dll/BladeMP3EncDLL.c, + Dll/BladeMP3EncDLL.h: + + MPEG2.5 support + +2000-04-01 11:47 robert + + * lame.c, parse.c: + + + added --version and --license switch + + changed --help to give only most important options + so that it fits on a 80x24 terminal display + + added --longhelp switch to get the full options list + + changed -v and -Vx, now they switch quality to 2 + you can go down below 2 by adding -f or -q5 + + changed presets: + turned off highpass filters except for "phone" + voice sample freq now 22.05 kHz, due to mpg123 bug + +2000-04-01 01:09 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + more dll bug fixes (mono) + +2000-04-01 00:04 markt + + * version.h (lame3_70): + + updated version to 3.68 alpha 1 + +2000-03-31 23:56 markt + + * Dll/BladeMP3EncDLL.c (lame3_70): + + fixed mono bug + +2000-03-31 23:53 markt + + * lame.c, vbrquantize.c, Dll/BladeMP3EncDLL.c: + + mono encoding bug in DLL fixed + +2000-03-31 22:47 robert + + * Makefile, quantize-pvt.c, quantize-pvt.h: + + removed RH_ATH/RH_SIDE_CBR code + +2000-03-31 22:45 robert + + * quantize.c: + + minor frame analyzer fix for VBR, removed RH_ATH/RH_SIDE_CBR code + +2000-03-30 23:39 markt + + * lame.c, parse.c (lame3_70): + + undocumented -q option for internal testing + +2000-03-30 23:38 markt + + * get_audio.c, gtkanal.c, lame.c, main.c, parse.c, quantize.c: + + added -q option for internal testing. sets value of gfp->quality + +2000-03-30 19:51 markt + + * testcase.mp3: + + updated test case for new CVS version + +2000-03-30 09:37 markt + + * INSTALL: + + wingtk doc + +2000-03-30 09:36 markt + + * INSTALL: + + [no log message] + +2000-03-30 08:24 markt + + * INSTALL, README: + + updated docs + +2000-03-30 08:04 markt + + * README.WINGTK, lame.dsp, Dll/MP3EncDll.dsp: + + new directions for compiling mp3x under windows + +2000-03-30 07:54 markt + + * lame.dsp (MSVC6), README.WINGTK: + + updated project files + +2000-03-30 07:00 markt + + * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: + + updated project files + +2000-03-30 05:39 markt + + * VbrTag.c, gtkanal.c, gtkanal.h, l3bitstream.c, lame.c, machine.h, + psymodel.c, quantize.c, takehiro.c, mpglib/layer3.c: + + added big_values display to mp3x + +2000-03-30 05:38 markt + + * VbrTag.c, l3bitstream.c, lame.c, machine.h, quantize.c, + takehiro.c, vbrquantize.c: + + fixed 2 bugs: + + l3bitstream.c: + 1. The quadruples were encoded with the wrong sign: Any non-zero + coefficient in the count1 block was marked as negative! + + takehiro.c: + 2. short blocks were using a cod_info->big_values=288 + (which should be 576, because big_values was multiplied by 2 + in the new version of takehiro.c) + +2000-03-29 20:49 markt + + * doc/html/: contributors.html, examples.html, history.html, + id3.html, index.html, lame.css, node6.html, switchs.html: + + new docs from Gabriel + +2000-03-29 02:00 markt + + * l3bitstream.c, psymodel.c, quantize-pvt.c, quantize.c, + reservoir.c, takehiro.c, util.c, vbrquantize.c, brhist.c, fft.c, + get_audio.c, globalflags.h, gtkanal.c, gtkanal.h, lame.c, + newmdct.c, parse.c: + + removed globalflags.h + +2000-03-29 01:55 markt + + * globalflags.h (lame3_70), brhist.c, fft.c, get_audio.c, + gtkanal.c, gtkanal.h, lame.c, newmdct.c, parse.c, vbrquantize.c: + + removed "globalflags.h" + +2000-03-29 01:06 markt + + * lame.c: + + missing free() calls in lame_encode_buffer_interleave + +2000-03-28 16:41 takehiro + + * takehiro.c: + + oops, this may remove any seg.fault bug... + +2000-03-28 15:39 takehiro + + * takehiro.c: + + Oops, I mistake count1 for big_values + +2000-03-28 13:08 cisc + + * amiga_mpega.c: + + Fixed overflow problem with nsamp calculation. + +2000-03-27 22:09 markt + + * lame.c: + + fixes to lame_encode_buffer_interleave + +2000-03-27 22:09 markt + + * lame.c: + + fixes to lame_encode_buffer_interleave() + +2000-03-27 21:46 robert + + * takehiro.c: + + added assertion, cos here is a bug + +2000-03-27 21:34 markt + + * doc/html/history.html: + + updated history.html + +2000-03-27 21:33 markt + + * version.h: + + [no log message] + +2000-03-27 21:09 markt + + * lame.c: + + minor change with ms_ener_ratio_ave + +2000-03-27 21:06 markt + + * lame.c: + + ms_ener_ratio_ave M/S override switch turned off + +2000-03-27 20:58 markt + + * version.h: + + changed version number. 3.80 is the next beta version, + 3.70 is the stable version + +2000-03-27 19:42 markt + + * version.h (lame3_80): + + updated version in the lame3_80 branch + +2000-03-27 19:42 markt + + * version.h: + + this is new the future version 3.81beta + +2000-03-27 19:39 markt + + * l3bitstream.c, quantize.c, tables.c, takehiro.c (lame3_80): + + The next "official" stable release, lame3.80. + lame3_80 is a branch. + + This will not include Takehiro's latest lossless encoding stuff. + (l3bitstream.c, quantize.c, tables.c, takehiro.c) + +2000-03-27 19:26 markt + + * takehiro.c: + + gfp->use_scfsi replaced by mode_gr==2 + +2000-03-27 17:53 markt + + * get_audio.c, lame.c, main.c, util.c, version.h: + + Ingo -f fast-math rounding problem fix + +2000-03-27 15:59 takehiro + + * takehiro.c: + + debugged seg.fault when count1 is 576 + +2000-03-26 21:21 markt + + * quantize.c: + + opps, i screwed up quantize.c! fixed version + +2000-03-26 10:05 markt + + * Makefile, gtkanal.c, gtkanal.h, lame.c, quantize.c, + mpglib/layer3.c: + + disabled noise_shaping_stop=1, fixed jstereo default mode problem, + updated frame analyzer + +2000-03-25 18:16 cisc + + * takehiro.c: + + Use INLINE define instead of inline. + +2000-03-25 16:18 takehiro + + * lame.c: + + enable noise_shaping==1 when high quality mode even without -X + +2000-03-25 16:17 takehiro + + * takehiro.c: + + debug seg.fault when big_values==0 + +2000-03-25 15:01 takehiro + + * l3bitstream.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + tables.c, takehiro.c: + + best huffman divide now "more best" huffman coding. + +2000-03-25 03:35 takehiro + + * Makefile, l3bitstream.c, l3side.h, lame.c, psymodel.c, + quantize-pvt.c, tables.c, takehiro.c: + + new faster lossless coding routine(especially with -h) + +2000-03-25 00:06 markt + + * get_audio.c, main.c, quantize-pvt.h, quantize.c, takehiro.c, + testcase.mp3: + + added some code to best_scalefac_store: + if ix=0 in a scalefactor band, set the scalefactor to 0 also, + to save a few bits. + +2000-03-24 23:06 markt + + * lame.dsp (MSVC6), Dll/MP3EncDll.dsp: + + updated project files + +2000-03-24 23:02 markt + + * get_audio.c, machine.h: + + _setmode stuff for windows + +2000-03-24 22:37 markt + + * lame.h, quantize-pvt.c, mpglib/layer3.c: + + fixed MPEG2 tables in mpglib, + added more accurate mp3buffer size bound in lame.h + +2000-03-24 18:21 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + [no log message] + +2000-03-24 18:08 markt + + * lame.dsp, loopold.c, Dll/MP3EncDll.dsp: + + removed loopold.c + +2000-03-24 18:07 markt + + * Makefile, gtkanal.c, lame.c, lame.h, psymodel.c, psymodel.h, + quantize-pvt.c, quantize.c: + + Removed old M/S stereo mode which uses L/R masking functions. + removed loopold.c and all that other "dual channel" stuff + +2000-03-24 02:00 markt + + * VbrTag.c, lame.c: + + MPEG2 VBR tag should now work + +2000-03-24 01:38 markt + + * VbrTag.c, VbrTag.h, lame.c, Dll/BladeMP3EncDLL.c: + + Xing MPEG2 headers work + +2000-03-23 22:13 markt + + * Makefile: + + uncommented options in makefile + +2000-03-23 22:12 markt + + * API, Makefile, lame.c, lame.h, util.c, mpglib/common.c: + + strange bug with -f fast-math option under gcc: it would compute + the mp3 framesize wrong, due to incorrect integer truncation. + Replaced implicit integer truncation with floor() to fix this. + +2000-03-23 20:30 markt + + * Makefile, get_audio.c, lame.c, lame.h: + + autoconvert moved into lame_encode_buffer + +2000-03-23 20:02 markt + + * Makefile, lame.c, lame.h: + + lame_encode_buffer_interleaved added to API + +2000-03-22 17:14 markt + + * vbrquantize.c: + + minor fixes + +2000-03-22 04:15 markt + + * version.h, doc/html/history.html: + + lame 3.66 + +2000-03-22 02:03 markt + + * USAGE, gtkanal.c, lame.c, machine.h, main.c, parse.c, + quantize-pvt.c: + + float/double version of ASM quantize routines + +2000-03-21 23:02 markt + + * brhist.c, brhist.h, gtkanal.c, gtkanal.h, l3bitstream-pvt.h, + l3bitstream.c, l3bitstream.h, lame.c, loopold.c, newmdct.c, + newmdct.h, psymodel.c, psymodel.h, quantize-pvt.c, + quantize-pvt.h, quantize.c, quantize.h, reservoir.c, reservoir.h, + takehiro.c, util.c, util.h, vbrquantize.c, mpglib/layer3.c: + + replaced all "gf." by gfp-> + +2000-03-21 20:58 markt + + * lame.c: + + fixed bug in lame_encode_finish: if user informs + lame that mp3buffer has size 0, lame will not check to make + sure the mp3buffer is big enough to store the encoded data + +2000-03-19 22:29 afaber + + * lame.c, Dll/BladeMP3EncDLL.c: + + Fixes to the lame DLL encoder: + If last frame is too short, set number of output bits to 0 instead of -1 + Don't disable the bWriteVBRTag flag if input file is null + +2000-03-19 20:07 cisc + + * get_audio.c: + + Byteswapping (-x) didn't work when using LIBSNDFILE + +2000-03-18 00:33 cisc + + * parse.c: + + Fixed typo in define. + +2000-03-18 00:32 cisc + + * amiga_mpega.c: + + Erk, didn't spot the array/pointer relation, restored to previous version. + +2000-03-17 22:09 cisc + + * amiga_mpega.c: + + b[] is a pointer, so supply addresses of pcm_l&r. + +2000-03-17 19:29 markt + + * lame.c: + + VBR was displaying MPEG2 bitrates - fixed. + +2000-03-17 04:31 markt + + * machine.h: + + added note to machine.h + +2000-03-17 04:30 markt + + * version.h, doc/html/history.html: + + uncommented gcc ASM code + +2000-03-17 04:27 markt + + * quantize-pvt.c: + + uncommended the GCC ASM code for quantize_xrpow() + +2000-03-17 00:07 markt + + * doc/html/history.html: + + updated history + +2000-03-17 00:05 markt + + * amiga_mpega.c, get_audio.c, lame.h, version.h, mpglib/main.c, + mpglib/mpglib.dsp: + + some tweaks to API for lame_decode_fromfile + +2000-03-16 23:59 markt + + * lame.dsp, mpglib/mpglib.dsp (MSVC6), Dll/BladeMP3EncDLL.c: + + project file tweaks + +2000-03-16 23:36 markt + + * get_audio.c, lame.dsp, lame.h, parse.c: + + updated project files MSVC5 + +2000-03-16 23:19 markt + + * lame.dsp, mpglib/mpglib.dsp (MSVC6), main.c: + + updated MSVC6 branch project files + +2000-03-16 19:42 markt + + * Dll/BladeMP3EncDLL.c: + + update to bladedll + +2000-03-16 19:38 markt + + * gtkanal.c, lame.h, mpglib/main.c: + + one last change to lame_decode()... + +2000-03-16 19:05 markt + + * get_audio.c, get_audio.h, gtkanal.c, gtkanal.h, lame.c, lame.h, + main.c, mp3rtp.c, mp3x.c, parse.c, util.c, util.h: + + more and these really should be the last changes to the API + 'gf' is no substantiated by the calling program, and passed + to all lame_routines(). This is so lame can eventually be + made re-entrant by putting all static vars in the gf struct. + +2000-03-16 16:44 markt + + * VbrTag.c, loopold.c, machine.h, takehiro.c, timestatus.c, util.h: + + strict ansi patches from Heiko.Eissfeld + +2000-03-16 05:33 markt + + * USAGE, main.c: + + updated USAGE + +2000-03-16 05:28 markt + + * mpglib/mpglib.dsp: + + revert back to MSVC5 + +2000-03-16 05:26 markt + + * lame.dsp, lame.dsw (MSVC6), main.c, mpglib/mpglib.dsp: + + MSVC changes to compile lame.exe + +2000-03-16 00:24 markt + + * timestatus.c: + + fixed CPU/playing time display bug + +2000-03-15 20:37 markt + + * encoder.h, l3bitstream.c, lame.h, parse.c, psymodel.c, + takehiro.c: + + minor changes + +2000-03-15 01:34 markt + + * filters.c, filters.h: + + removed filters.c, filters.h + +2000-03-15 01:30 markt + + * Dll/MP3EncDll.dsp: + + updated MSVC6 project files + (in MSVC6 branch) + +2000-03-15 01:20 markt + + * Dll/: MP3EncDll.dsp, MP3EncDll.dsw: + + reverting back to MSVC5 + +2000-03-15 01:14 markt + + * parse.c, Dll/BladeMP3EncDLL.c, Dll/MP3EncDll.dsp, + Dll/MP3EncDll.dsw: + + updated bladeenc dll + +2000-03-14 21:01 markt + + * lame.c, loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + quantize.h, reservoir.c, reservoir.h, util.c, util.h, + vbrquantize.c: + + removed fr_ps struct + +2000-03-14 20:45 markt + + * brhist.c, brhist.h, l3bitstream.c, l3bitstream.h, lame.c, lame.h, + psymodel.c, psymodel.h, quantize-pvt.c, quantize-pvt.h, + quantize.c, reservoir.c, timestatus.h, util.c, util.h, + vbrquantize.c: + + removed "info" sturct. Removing fr_ps struct + +2000-03-14 07:21 markt + + * brhist.c, l3bitstream.c, lame.c, lame.h, loopold.c, psymodel.c, + quantize-pvt.c, quantize.c, reservoir.c, timestatus.c, + timestatus.h, util.c, util.h: + + removed more info-> variables + +2000-03-14 06:36 markt + + * lame.c, lame.h: + + removing some of the info-> variables + +2000-03-10 23:21 cisc + + * amiga_mpega.c: + + Had to make a dummy break-function to make atexit() work. + +2000-03-10 23:18 markt + + * loopold.c: + + segfault fixed in loopold.c when count[] was zero for one channel + and non-zero for the other + +2000-03-10 20:56 markt + + * API, Makefile, gtkanal.c, lame.c, lame.h, version.c: + + added lame_version to the API + +2000-03-10 20:13 markt + + * Dll/BladeMP3EncDLL.c: + + removed some unnecessary #includes + +2000-03-10 19:48 markt + + * Dll/MP3EncDll.dsp: + + added #define LAMEPARSE to Blade project files + +2000-03-10 19:38 markt + + * Dll/: BladeMP3EncDLL.c, MP3EncDll.dsp: + + Blade dll updated to handle new interface + Albert: Sorry if I broke anything, the old version is still in CVS :-) + +2000-03-10 18:55 markt + + * Dll/BladeMP3EncDLL.c (test): + + testing... + +2000-03-10 16:01 markt + + * Dll/BladeMP3EncDLL.c: + + BladeMP3 changes + +2000-03-10 01:41 markt + + * Dll/BladeMP3EncDLL.c: + + some changes to update BaldeMP3encdll + +2000-03-09 19:42 markt + + * quantize-pvt.c, takehiro.c: + + quantize_xrpow_ISO also uses tablelookup, so it also needed the + "xr too big" check + +2000-03-09 18:05 markt + + * HACKING, get_audio.c, gtkanal.c, lame.c, lame.h, main.c, parse.c: + + [no log message] + +2000-03-08 00:16 markt + + * Makefile, parse.c: + + Robert's presets restored. polyphase filters now except filterwidth + arguments. + +2000-03-08 00:05 markt + + * lame.c, lame.h, newmdct.c: + + polyphase filter now supports lowpasswidth and highpasswidth option + +2000-03-07 23:10 cisc + + * API: + + Added AMIGA_MPEGA #define, and fixed a few minor spelling errors... ;) + +2000-03-07 22:56 cisc + + * amiga_mpega.c: + + Made sure lame_decode_fromfile() won't return an empty frame (unless there's an error). + +2000-03-07 18:33 markt + + * API, Makefile, get_audio.c, lame.c, main.c, parse.c: + + minor tweeks to compile w/o decoding library + +2000-03-07 08:01 sbellon + + * lame.c: + + fixed RISC OS FPE support + +2000-03-06 23:28 markt + + * API: + + API description + +2000-03-06 19:55 markt + + * lame.dsp: + + [no log message] + +2000-03-06 19:53 markt + + * Makefile, Makefile.MSVC, get_audio.c, get_audio.h, id3tag.h, + lame.c, lame.dsp, lame.h, parse.c, Dll/MP3EncDll.dsp, + mpglib/common.c, mpglib/dct64_i386.c, mpglib/decode_i386.c, + mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, + mpglib/tabinit.c: + + More library work. + Sorry to all the non-unix developers out there, but this will + break all project files. (but we are very close to the end of + the modularization work). + + New code needs the following #defines set somewhere: + + #define HAVEMPGLIB to use mpglib's mp3 *decoding* capibility + (or AMEGA_MPEGA on amiga systems, and dont define HAVEMPGLIB) + #define BRHIST to allow the display of the VBR historgram + #define LIBSNDFILE to use Erik de Castro Lopo's libsndfile + #define LIBSNDLAME to use LAME's minimial internal sndfile I/O + #define LAMEPARSE to use LAME's command line parsing/option setting routines + #define HAVEGTK to compile in support for the GTK mp3 frame analyzer + +2000-03-06 15:16 markt + + * filters.c, lame.c, lame.h, newmdct.c, parse.c, testcase.mp3: + + polyphase filters are now working! + some tuning of polyphase fiters. + removed MDCT filters, sfb21 cutoff. + +2000-03-06 03:59 markt + + * gtkanal.c, lame.c, newmdct.c, psymodel.c: + + new polyphase filters + +2000-03-05 19:07 markt + + * psymodel.c: + + Gabriel: L/R block matching fix + +2000-03-05 18:37 markt + + * id3tag.c, id3tag.h, lame.c, lame.h, newmdct.c, parse.c, + doc/html/id3.html: + + id3v1.1 tags from Don Melton + +2000-03-04 17:19 markt + + * get_audio.c, lame.c: + + resampling moved to fill_buffer_resample() in lame.c, + which has linear and 3rd order resampling + +2000-03-04 15:31 markt + + * amiga_mpega.c, get_audio.c, lame.c, main.c, quantize-pvt.c, + quantize.c, vbrquantize.c: + + patch from kimmo to remove more c++ comments, + fill_buffer_linear_resample code + +2000-03-04 05:13 markt + + * lame.c: + + fill_buffer routines + +2000-03-03 19:25 markt + + * encoder.h, mp3rtp.c: + + mp3rtp uses new, simplified lame_encode_buffer interface + +2000-03-03 19:01 markt + + * encoder.h, lame.c, lame.h, main.c, testcase.mp3: + + added lame_encode_buffer, the new, prefered encoding interface + +2000-02-29 21:19 robert + + * parse.c: + + minor change, exit if wrong preset type was given + +2000-02-29 19:54 robert + + * fft.c: + + minor speed up (at least for gcc) + +2000-02-29 18:00 sbellon + + * lame.c: + + moved RISC OS floating point exception part into debugging area + +2000-02-27 19:11 robert + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + removed unused parameter + +2000-02-27 18:36 robert + + * psymodel.c: + + code clean up, giving an overall speed up of 3-4% + +2000-02-25 07:00 markt + + * lame.c: + + minor cleanup + +2000-02-24 15:30 robert + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c: + + code cleanup, removed unused parameter + +2000-02-23 02:40 cisc + + * amiga_mpega.c: + + Fixed up the cleanup function. + +2000-02-22 23:21 robert + + * quantize-pvt.c, testcase.mp3: + + switched back to original bin_search_stepsize routine + +2000-02-22 03:14 markt + + * quantize-pvt.c, testcase.mp3: + + RH bin_search_stepsize now the default + +2000-02-22 00:54 cisc + + * amiga_mpega.c: + + Oh, nevermind, wasn't very efficient here, proper place would be in sndfile.lib + +2000-02-22 00:15 cisc + + * lame.h, main.c: + + Minor fixes. + +2000-02-21 23:58 cisc + + * amiga_mpega.c: + + Make sure input-file is closed when CTRL-C is received. + +2000-02-21 23:05 markt + + * Makefile, get_audio.c, gtkanal.c, ieeefloat.c, l3bitstream.c, + main.c, util.c, doc/html/history.html, mpglib/main.c: + + some 64bit DEC Alpha patches + +2000-02-21 22:40 robert + + * quantize-pvt.c: + + speed up of bin_search_stepsize, the bin_search is about 20% faster, resulting in an average speed up of 2-3%, disabled by default as it breaks the testcase + +2000-02-21 22:39 sbellon + + * main.c: + + + further RISC OS support added + +2000-02-21 00:21 markt + + * lame.c: + + minor + +2000-02-20 23:36 markt + + * get_audio.c, lame.c, lame.h, main.c, mp3rtp.c, parse.c: + + num_samples /eof fix, ABORTFP fix, stdout mode setting fix + +2000-02-20 20:31 markt + + * mpglib/common.c: + + better error message + +2000-02-20 20:03 robert + + * get_audio.c: + + removed warning about fill up with zeros again, it is common at the end of an input file + +2000-02-20 19:26 robert + + * Makefile, quantize-pvt.c, quantize-pvt.h, quantize.c: + + code cleanup + +2000-02-20 18:45 robert + + * psymodel.c: + + code cleanup + +2000-02-20 14:09 robert + + * formatBitstream.c: + + fixed assertion failure while flushing bitstream at end of encoding + +2000-02-20 14:08 robert + + * get_audio.c: + + applied patch from Jeremy Hall to fix stdin problem + +2000-02-19 13:32 afaber + + * fft.c, formatBitstream.c, formatBitstream.h, get_audio.c, + ieeefloat.c, l3bitstream.c, machine.h, quantize-pvt.c, + quantize.c, takehiro.c, mpglib/mpg123.h: + + Fixed many warning messages when compiling with MSVC + +2000-02-19 12:15 afaber + + * VbrTag.c: + + Applied patch from Mathew Hendry to avoid divide by zero + +2000-02-18 16:21 robert + + * quantize-pvt.c: + + Mathew Hendry: line 813 should read "#define USE_MSC_ASM" and not "#define USE_MSC_AMS" + +2000-02-18 16:20 robert + + * Makefile.MSVC: + + Mathew Hendry: "stray space character following the \" patched + +2000-02-18 16:07 robert + + * lame.c: + + Mathew Hendry's CYGWIN gcc FPU control patch + +2000-02-18 06:16 markt + + * Makefile, gtkanal.c, lame.c, testcase.mp3: + + changed sizeof frame analyzer so it fits on a 800x600 screen. + make --nores also set info->padding = 0. Avoids problem with + small changes in frac_SpF causing different padding patterns and + mp3 file differences. + +2000-02-17 20:12 robert + + * loopold.c, quantize-pvt.h, quantize.c: + + code clean-up, it seems the SIGFPE exceptions are gone + +2000-02-16 22:42 cisc + + * machine.h: + + Fixed INLINE define for SAS/C. + +2000-02-16 21:18 cisc + + * main.c: + + Include machine.h so that needed prototypes get added. + +2000-02-16 07:06 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c: + + new quantize xrpow for PowerPC + +2000-02-16 03:56 markt + + * lame.c, quantize-pvt.c: + + patches for risc_os + +2000-02-15 22:16 robert + + * quantize.c: + + forgot to save plotting data for best quantization in VBR_iteration_loop + +2000-02-15 17:12 robert + + * quantize-pvt.h, quantize.c: + + VBR_iteration_loop speedup, removed extra quantizations + +2000-02-15 14:51 markt + + * Makefile: + + [no log message] + +2000-02-15 14:40 markt + + * lame.c: + + some non-initilized memory patches + +2000-02-15 02:01 robert + + * quantize-pvt.c: + + bug in ms_convert fixed when source and target are the same + +2000-02-14 21:48 robert + + * quantize-pvt.c: + + Mathew Hendry's quantize-xrpow gcc asm patch + +2000-02-14 21:47 robert + + * quantize.c: + + missing line added + +2000-02-14 21:01 afaber + + * lame.c: + + Intialize float arrays to avoid floating point errors when ABORTFP is set + Added floating point trapping code for MSVC compiler + +2000-02-14 20:53 afaber + + * psymodel.c: + + Intialize tot_ener to avoid floating point errors + +2000-02-14 05:50 markt + + * Makefile, loopold.c, parse.c, quantize-pvt.c, quantize-pvt.h, + quantize.c: + + merged takehiro2 branch back into main branch. + there is still a floating point exception which I cannot track down. + +2000-02-14 04:53 markt + + * psymodel.c, takehiro.c, doc/html/contributors.html, + doc/html/examples.html, doc/html/id3.html, doc/html/index.html, + doc/html/switchs.html: + + updated html from Gabriel + +2000-02-13 18:52 robert + + * fft.c, fft.h, psymodel.c: + + modified energy calculation, fast MS fft patch should work now + +2000-02-11 17:21 markt + + * Makefile, quantize.c, reservoir.c: + + fixed scalefac not-initialized problem. This would happen when + xr = 0 and outer_loop() was skipped. + +2000-02-11 16:34 markt + + * psymodel.c: + + m/s fft patch was not working. + +2000-02-10 19:00 robert + + * parse.c: + + added help info for --preset option and shuffled help text to bring it more in line + +2000-02-10 16:33 robert + + * fft.c, fft.h, psymodel.c: + + applied Takehiro Tominaga's fast MS fft patch + +2000-02-10 14:22 markt + + * doc/html/history.html: + + updated history file from web page + +2000-02-10 06:43 markt + + * version.h: + + updated version + +2000-02-10 06:15 markt + + * lame.c, parse.c, version.c, version.h: + + added version info to help output + +2000-02-10 05:42 markt + + * psymodel.c, testcase.mp3: + + fixed bug in s3_s spreading function calculation. + +2000-02-10 05:35 markt + + * loopold.c, quantize-pvt.h, quantize.c: + + undo some of takehiro's speedup improvements until we can track + down floating point exceptions + +2000-02-10 05:23 markt + + * Makefile, brhist.c, brhist.h, lame.c, loopold.c, psymodel.c, + quantize-pvt.c, quantize-pvt.h, quantize.c: + + some bug fixes: + + psymodel partition band calculations done *before* + the spreading function need to use npart_l_orig. After spreading function, + use npart_s_orig. + + 3 cases of scalefac->l[i][sfb] which should be scalefac->l[sbf][i] + + VBR min & max bitrate index setting problem fixed + +2000-02-08 17:20 afaber + + * lame.c: + + Guarded disp_brhist with #ifdef BRHIST, in order to compile with MSVC + +2000-02-06 10:57 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + psymodel.c: + + new spread matrix calculation is now default(faster!) + +2000-02-06 05:59 markt + + * gtkanal.c: + + Iwasa's changes to gtkanal.c + +2000-02-05 12:32 robert + + * lame.c, lame.h, parse.c, util.c, util.h: + + applied Ingo Saitz command line usage patch + +2000-02-05 05:16 markt + + * Makefile.MSVC, brhist.c, lame.c, loopold.c, machine.h, parse.c, + quantize.c: + + minor code cleanup + +2000-02-04 23:49 robert + + * parse.c: + + added "--preset type" option to offer users some usefull presettings + that should shorten the commandline for most cases + +2000-02-04 21:42 afaber + + * lame.c, lame.dsp: + + Fixed WIN32 compiler errors + +2000-02-04 21:26 robert + + * parse.c: + + added '--help' option to allow DOS users to scroll thru the usage page with "lame --help | more" + +2000-02-04 13:57 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c: + + speed up hack on the array index. + +2000-02-04 13:49 takehiro + + * psymodel.c: + + and more faster calculation + +2000-02-04 02:29 markt + + * lame.h, quantize-pvt.c: + + minor editing + +2000-02-03 15:43 takehiro + + * psymodel.c: + + some assertion bug(?) has removed + +2000-02-03 15:31 takehiro + + * psymodel.c: + + more faster calculation + +2000-02-02 22:30 afaber + + * mpglib/main.c: + + Added MPGLIB library + +2000-02-02 22:25 takehiro + + * psymodel.c: + + faster spread function calculation + +2000-02-02 17:12 markt + + * get_audio.h, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c, vbrquantize.c: + + minor code cleanup + +2000-02-02 10:31 markt + + * Makefile: + + testcase update + +2000-02-02 10:25 markt + + * Makefile, filters.c, lame.c, quantize-pvt.c, quantize.c: + + fixed some minor bugs in new scalefac data structure code + +2000-02-02 10:17 markt + + * Makefile, fft.c, filters.c, filters.h, gtkanal.c, + l3bitstream-pvt.h, l3bitstream.c, l3bitstream.h, l3side.h, + lame.c, loopold.c, psymodel.c, psymodel.h, quantize-pvt.c, + quantize-pvt.h, quantize.c, quantize.h, tables.c, tables.h, + takehiro.c, vbrquantize.c (takehiro0): + + The pre-takehiro1 scalefac datastructure code + +2000-02-02 09:19 markt + + * Makefile, filters.c, lame.c, quantize-pvt.c, quantize.c + (takehiro1): + + some bugs fixed with new scalefac struct + +2000-02-01 14:09 takehiro + + * l3side.h, lame.c, loopold.c, psymodel.c, psymodel.h, + quantize-pvt.c, quantize-pvt.h, quantize.c, quantize.h, + vbrquantize.c: + + code clean up. changed definition of structure to optimize array index calculation + +2000-02-01 11:26 takehiro + + * Makefile, fft.c, filters.c, filters.h, gtkanal.c, + l3bitstream-pvt.h, l3bitstream.c, l3bitstream.h, l3side.h, + lame.c, loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + quantize.h, tables.c, tables.h, takehiro.c, vbrquantize.c: + + scalefactor's structure changed + +2000-01-31 22:21 robert + + * quantize-pvt.c, quantize.c: + + little VBR tweaks + +2000-01-31 18:56 markt + + * get_audio.c, lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, version.h: + + updated comments, added lame_close_infile() + +2000-01-31 18:22 markt + + * lame.c, lame.h, main.c, mp3rtp.c, mp3x.c: + + more modularizaton, fixes to mp3rtp + +2000-01-31 05:49 markt + + * mlame: + + spelling error + +2000-01-30 23:00 cisc + + * fft.c: + + Use INLINE define instead of inline. + +2000-01-30 22:19 markt + + * get_audio.c, lame.c, lame.h, parse.c: + + renamed highq quality + +2000-01-30 22:01 markt + + * mp3rtp.c: + + added Felix's email to mp3rtp.c code :-) + +2000-01-30 20:44 markt + + * lame.h: + + minor editing + +2000-01-30 20:27 markt + + * lame.c, lame.h, loopold.c, parse.c, psymodel.c, quantize-pvt.c, + quantize.c, takehiro.c: + + cleaned up highq option. + highq=0 (best quality)... 9(worst quality) + values supported so far: + highq=9 (turned on with -f) + highq=5 (default) + highq=2 (turned on with -h) + +2000-01-30 19:34 markt + + * lame.c, lame.h, machine.h, parse.c, quantize-pvt.c, takehiro.c: + + fixed bug in overflow check in count_bits + +2000-01-30 16:19 robert + + * Makefile, quantize-pvt.c, quantize-pvt.h, quantize.c: + + introduced new RH_ATH compile switch and splitted + RH_masking into RH_SIDE_VBR, RH_SIDE_CBR and + RH_QUALITY_CONTROL=n (n=1,2) + + RH_SIDE_CBR turns off side channel reduction for CBR + RH_SIDE_VBR turns off side channel reduction for VBR + RH_QUALITY_CONTROL=1 plus above switches equals RH_masking + RH_QUALITY_CONTROL=2 is tuned to be used with RH_ATH + RH_ATH changes the definition of distortion a bit: + a)PSY: noise over the PSY model threshold as average + quantization noise over PSY model threshold + b)ATH: max quantization noise of a single freq line over + the ATH threshold of that freq line + the resulting distortion is the min of a) and b) + +2000-01-30 10:54 markt + + * parse.c: + + parse_args and related code moved to parse.c + +2000-01-30 10:53 markt + + * brhist.c, brhist.h: + + vbr histogram code in seperate file + +2000-01-30 10:50 markt + + * Makefile, TODO, get_audio.c, gtkanal.c, id3tag.c, id3tag.h, + lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, util.c, util.h, + Dll/BladeMP3EncDLL.c, Dll/MP3EncDll.dsp, mpglib/main.c: + + more modularization work. Calling program is now responsible for + mp3 file output + +2000-01-30 07:41 markt + + * l3side.h, loopold.c, machine.h, psymodel.c, quantize-pvt.c, + quantize-pvt.h, quantize.c, takehiro.c, vbrquantize.c: + + #ifdef NOPOW removed, replaced by table lookup. You can still + go back to pow() function or exp() by changing the POW20 and IPOW20 + macros in machine.h + +2000-01-30 06:17 takehiro + + * l3side.h, loopold.c, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.c, takehiro.c: + + use lookup table to calculate pow(2.0, xx).(when not defined NOPOW) + +2000-01-30 06:09 takehiro + + * fft.c: + + faster FFT implementation + +2000-01-28 00:57 cisc + + * lame.c: + + Fixed -m bug when bitrate>=160 (gf.mode_fixed was not set). + +2000-01-27 17:16 markt + + * lame.h: + + comments about varius quality options + +2000-01-27 08:27 markt + + * quantize-pvt.c: + + Fixed bug in scale_bitcount_lsf which was severely limiting the + possible scalefacters used by MPEG2. (Lionel Bonnet) + +2000-01-27 07:49 markt + + * Makefile, get_audio.c, get_audio.h, gtkanal.c, machine.h: + + minor changes + +2000-01-27 05:05 markt + + * fft.c, fft.h, psymodel.c, testcase.mp3: + + Takehiro's fft_short and fft_long now the defaults. + +2000-01-27 04:35 markt + + * rtp.c: + + more updates from Felix + +2000-01-27 03:52 cisc + + * loopold.c, psymodel.c, quantize-pvt.c, quantize.c, takehiro.c, + util.h, vbrquantize.c: + + Added NOPOW define, will replace certain pow()s with optimized variant. + +2000-01-27 02:06 cisc + + * get_audio.c: + + Removed faulty undef of bitwidth. + +2000-01-26 12:37 takehiro + + * fft.c: + + window[] and window_s[]'s buffer overrun is corrected + +2000-01-26 10:27 markt + + * filters.c, lame.c, lame.h: + + more bugs in specifigy a lowpass filter fixed. --voice mode + recast in terms of lowpass filter and other options + +2000-01-26 08:39 markt + + * psymodel.c: + + removed two c++ commends (by request) + +2000-01-26 08:00 markt + + * lame.c: + + moved frameNum=0 from lame_init to lame_init_params + +2000-01-26 07:44 markt + + * HACKING, get_audio.c, get_audio.h, globalflags.h, gtkanal.c, + lame.c, lame.h, main.c, mp3rtp.c, mp3x.c, Dll/BladeMP3EncDLL.c, + Dll/MP3EncDll.dsp: + + more modularizatin work. LAME can now be used as a true library, + without the need to construct simulated argument lists. + See HACKING for some details, and mp3rtp.c for an example. + +2000-01-25 17:50 markt + + * get_audio.c, get_audio.h, globalflags.h, lame.c: + + major work down towards libmp3lame.a: split out parse_args and + parameter setting routines. might have broken some things... + +2000-01-25 17:48 markt + + * rtp.h: + + bug fix from Felix + +2000-01-20 23:21 robert + + * lame.c: + + sfb21 parameter messages added + +2000-01-20 08:03 markt + + * lame.c: + + tweaked filter and other encoding parameter messages + +2000-01-20 07:21 markt + + * gtkanal.c, gtkanal.h, mpglib/layer3.c: + + fixed gtk scfsi printout - mpglib/layer3.c seems correct now. + +2000-01-20 06:09 markt + + * Makefile, TODO, mpglib/layer3.c: + + scfsi fixes to mpglib from Iwasa Kazmi + +2000-01-19 22:11 takehiro + + * mpglib/layer3.c: + + scalefactor for short block last sfb(12) was wrong. + +2000-01-18 18:51 afaber + + * l3bitstream.c: + + Made my bug fixes against version 1.9 instead of a previous version + +2000-01-17 22:31 afaber + + * l3bitstream.c: + + Guarded BF_FlushBitstream function call if PartHoldersInitialized equals zero. + This to avoid GPF when III_Flushbitstream is called when no data is encoder + +2000-01-16 06:49 markt + + * lame.c, lame.h, main.c: + + cleaned up main.c + +2000-01-15 20:33 markt + + * loopold.c, takehiro.c, testcase.mp3: + + added best_scalefac_store to non -h code also + +2000-01-15 14:35 takehiro + + * psymodel.c: + + little bit optimization + +2000-01-14 13:05 takehiro + + * takehiro.c: + + debug message is removed... + +2000-01-14 12:56 takehiro + + * l3bitstream.c, loopold.c, quantize-pvt.c, quantize.c, psymodel.h, + takehiro.c: + + to make it use scfsi + +2000-01-14 07:47 markt + + * doc/html/history.html: + + [no log message] + +2000-01-14 07:34 markt + + * version.h: + + version 3.61 + +2000-01-14 06:35 markt + + * lame.c, quantize.c: + + filters were incorrectly being used under VBR + +2000-01-14 05:54 markt + + * USAGE, lame.c: + + more on the -k option + +2000-01-14 05:46 markt + + * USAGE, lame.c, mpglib/main.c: + + -k option will disable *all* filtering and frequency cutoffs + +2000-01-13 20:41 robert + + * Makefile, quantize.c: + + more VBR (RH_masking) finetuning + now -V3 should give the same result as -V6 before + +2000-01-13 17:21 markt + + * lame.c, psymodel.h: + + fixed noshort option, fixed l3psycho_anal.h + +2000-01-13 16:26 takehiro + + * filters.c, get_audio.c, l3bitstream.c, lame.c, loopold.c, + newmdct.c, newmdct.h, psymodel.c, quantize-pvt.c, quantize-pvt.h, + quantize.c, reservoir.c, reservoir.h, takehiro.c, util.c, util.h, + vbrquantize.c: + + moved info.stereo into gf.stereo + +2000-01-13 07:43 markt + + * loopold.c, quantize.c: + + got rid of old, no longer used preemph code + +2000-01-13 02:07 markt + + * filters.c, get_audio.c, globalflags.h, gtkanal.c, lame.c, + psymodel.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c, vbrquantize.c, mpglib/main.c: + + moved the rest of the global variables into gf struct + +2000-01-13 00:37 markt + + * quantize.c (debug-mat): + + some debug code + +2000-01-12 22:38 afaber + + * .cvsignore, VbrTag.c, lame.dsp: + + fixed a few casting warnings + Updated .cvsignore to ignore output of testcase + +2000-01-12 14:30 takehiro + + * filters.c, globalflags.h, l3bitstream.c, lame.c, newmdct.c, + newmdct.h, quantize-pvt.c, quantize-pvt.h, reservoir.c, + takehiro.c, util.c, vbrquantize.c: + + more simple & fast scalefac_scale use + and mode_gr is moved into gf structure. + +2000-01-11 20:23 cisc + + * amiga_mpega.c: + + Fixed timestatus bug (forgot nsamp variable). + +2000-01-11 05:46 markt + + * quantize.c (debug-mat), gtkanal.c, lame.c: + + changed axis in gtk flag + +2000-01-10 16:37 cisc + + * VbrTag.h, get_audio.c, machine.h, util.c: + + Removed AMIGA_ASYNCIO, custom modified libsndfile worked better. + +2000-01-10 09:34 takehiro + + * mpglib/layer3.c: + + debug for scalefactor reading with scfsi. + +2000-01-10 03:44 cisc + + * get_audio.c: + + Disabled open/close of mp3 when AMIGA_MPEGA and LIBSNDFILE is enabled. + +2000-01-10 02:44 cisc + + * amiga_mpega.c: + + MPGLIB replacement using mpega.library. (AmigaOS) + +2000-01-10 02:40 cisc + + * get_audio.c, mpglib/main.c: + + Removed AMIGA_ASYNCIO stuff for mpglib now that we got AMIGA_MPEGA. + +2000-01-10 02:07 cisc + + * get_audio.c, lame.h: + + Added mpega.library support for decoding mpeg audio, enable with AMIGA_MPEGA. (AmigaOS) + +2000-01-10 00:45 markt + + * loopold.c, quantize.c: + + fixed bug in loopold: scalesave loop was using SBMAX instead of SBPSY, + and exceeding bounds. + +2000-01-09 23:11 markt + + * Dll/BladeMP3EncDLL.c, doc/html/examples.html, doc/html/id3.html, + mpglib/layer3.c: + + globalflags update + +2000-01-09 23:10 markt + + * get_audio.c, globalflags.h, gtkanal.c, gtkanal.h, lame.c, + loopold.c, main.c, mp3x.c, psymodel.c, quantize-pvt.c, + quantize.c, reservoir.c, vbrquantize.c: + + moved more globalflags into the gf. struct + +2000-01-09 22:56 cisc + + * VbrTag.h, get_audio.c, machine.h, util.c, mpglib/main.c: + + Added usage of asyncio.library for improved I/O, enable with AMIGA_ASYNCIO. (AmigaOS) + +2000-01-09 22:26 markt + + * quantize.c, testcase.mp3, doc/html/history.html: + + updated validation testcase. + +2000-01-09 20:59 markt + + * Makefile, version.h: + + release 3.60beta + +2000-01-09 20:55 markt + + * testcase.mp3, testcase.wav: + + new test case: testcase.wav and 'official' output testcase.mp3 + 'make test' will perform a comparison. see makefile for details + +2000-01-09 20:52 markt + + * Makefile: + + new validation procedure + +2000-01-09 20:21 markt + + * doc/html/: history.html, index.html, switchs.html: + + updated web pages from Gabriel + +2000-01-09 16:08 cisc + + * mpglib/main.c: + + VbrTag.h wasn't included on Amiga + +2000-01-09 16:07 cisc + + * fft.c: + + Removed INLINE from fht (will get inlined as a local function anyway) + +2000-01-09 10:54 takehiro + + * l3bitstream.c, l3side.h, loopold.c, quantize-pvt.c, + quantize-pvt.h, quantize.c, takehiro.c: + + All Huffman code search algorithm is implemented. + (-h option to enable this) + more slower, but better quality. + +2000-01-09 07:51 markt + + * Makefile, psymodel.c, quantize.c: + + AAC masking function now the default. This represents less + masking then the old masking function. + +2000-01-09 07:34 markt + + * gtkanal.c, gtkanal.h, lame.c, psymodel.c, psymodel.h, quantize.c: + + compute mid/side energy rations in addition to masking ratios. + in the future we might use this for side channel bit allocation. + it is not used at all right now. + +2000-01-09 04:11 markt + + * Makefile, psymodel.c, quantize.c: + + someone mistakenly uncommented the call to preemphasis(). + this routine should *not* be used. preemph is now taken care of + in scale_bitcount. + +2000-01-08 17:57 robert + + * psymodel.c: + + define AAC_TMN_NMT at compile time to activate AAC tone masking noise + and noise masking tone values + +2000-01-08 17:56 robert + + * quantize.c: + + tuned VBR code, inactive until you define RH_masking at compile time + +2000-01-08 17:54 robert + + * Makefile: + + added suggested compiler options for gcc 2.95.2, uncomment them to activate them + +2000-01-08 17:52 robert + + * PRESETS.draft: + + changed frequencies to Lames format + +2000-01-07 06:40 markt + + * HACKING, Makefile: + + updated HACKING notes + +2000-01-07 06:13 markt + + * get_audio.c, globalflags.h, lame.c, loopold.c, psymodel.c, + quantize-pvt.c, quantize.c, reservoir.c: + + Robert's cw_lower_limit, upper_limit code back in. Default is compute + cw[] up to 8.9Khz. set with --cwlimit <freq> + + started putting global variables into global_flags struct. + +2000-01-06 05:12 markt + + * mp3rtp.c: + + more rtp updates + +2000-01-06 04:58 markt + + * lame.c, mp3rtp.c, rtp.c: + + more rtp updates + +2000-01-05 23:52 robert + + * quantize.c: + + VBR: masking lower was not set correctly + it was only set for sloppy mode, fixed now + +2000-01-05 17:40 afaber + + * mpglib/mpglib.h: + + Fixed BOOL definition conflict for Win32 systems + +2000-01-05 16:47 markt + + * Makefile, mp3rtp.c, rtp.c, rtp.h: + + added mp3rtp code. uses lame library, but not part of normal lame + encoder + +2000-01-05 10:04 markt + + * VbrTag.c, VbrTag.h, get_audio.c, l3side.h, lame.h, mpglib/main.c: + + Check for Xing header in mp3 input files + +2000-01-05 06:29 markt + + * version.h: + + updated version + +2000-01-05 06:20 markt + + * Makefile, psymodel.c: + + norm_l, norm_s table data replaced by formulas. + +2000-01-03 05:15 markt + + * INSTALL, Makefile, encoder.h, gtkanal.c, lame.c, main.c, + doc/html/contributors.html, doc/html/index.html, + doc/html/lame.css, doc/html/node6.html, doc/html/node7.html, + doc/html/switchs.html: + + new html from Gabriel. Fixed but that was causing the first frame to + always be zero. changed encoder delay to 800 to fix some other problems + and remove the buffering of the first frame in lame_encode(). + +1999-12-29 15:34 takehiro + + * doc/html/: contributors.html, history.html, index.html, + node6.html, node7.html, switchs.html: + + updated html doc written by Gabriel Bouvigne. + +1999-12-28 22:02 afaber + + * lame.dsp, Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.h, + Dll/MP3EncDll.dsp, mpglib/mpglib.dsp: + + Some fixes to the Encoder DLL: + use -h instead of -k flag for high qualtiy + The voice option was set in HQ mode, which is obviously not correct + +1999-12-26 14:48 takehiro + + * l3bitstream.c, lame.c: + + some foolish bug is removed :) + +1999-12-26 09:51 takehiro + + * globalflags.h, lame.c, quantize-pvt.c: + + new option "--noath" to disable the ATH masking + +1999-12-26 09:50 takehiro + + * .cvsignore: + + ignore mp3x binary exe. + +1999-12-23 12:27 takehiro + + * quantize-pvt.c: + + guess wiser initial StepSize for bin_search_stepsize + +1999-12-22 17:38 markt + + * Makefile, psymodel.c: + + AAC NMT/TMN values (commented out) + +1999-12-22 08:03 markt + + * quantize-pvt.c: + + back to oringal (ave_noise < ATH) definition of analog silence for + VBR mode. + +1999-12-22 07:39 markt + + * psymodel.c: + + added AAC spreading function (disabled by default) + +1999-12-21 08:18 markt + + * Makefile, fft.c, l3side.h, lame.c, psymodel.c, psymodel.h, + quantize-pvt.c, quantize.c: + + Bug fix in Mid/Side masking thresholds + +1999-12-19 21:33 afaber + + * Dll/BladeMP3EncDLL.c: + + Set home page link to Lame home page + +1999-12-19 01:47 markt + + * Makefile, globalflags.h, lame.c, psymodel.c: + + went back to ISO layer III recommended cw formulas + +1999-12-19 01:15 robert + + * globalflags.h, lame.c, psymodel.c: + + patched GPSYCHO, enable with --psy-model 0 + +1999-12-17 04:24 markt + + * USAGE, globalflags.h, lame.c, reservoir.c: + + added the --nores option to disable the bitreservoir. only usefull + in special circumstances + +1999-12-16 05:24 markt + + * quantize-pvt.c: + + changed analog silence switch to use max_ener rather than ave_ener. + only affects VBR mode: when analog silence is detected, the min bitrate + is allowed to drop to 32kbs even if set higher with -b + +1999-12-14 23:51 cisc + + * fft.c: + + Changed M_PI to PI. (Not everyone has M_PI, but PI is always defined in util.h) + +1999-12-14 22:44 robert + + * PRESETS.draft: + + first sketch of what could become PRESETS for LAME + +1999-12-14 22:40 robert + + * lame.c, quantize.c: + + added new experimentalX quant_compare -X6 mode + +1999-12-14 04:38 markt + + * Makefile, fft.c, fft.h, psymodel.c: + + Takehiro's fft's back in. fft_short2(), fft_long2() will call original + fft's (with one minor change: 0 protection for ax[] and bx[] was not + needed and has been removed). Takehiro's routines are fft_short() and + fft_long(). They dont give bit-for-bit identical answers, and I still + want to track this down before making them the defaults. . + +1999-12-14 00:19 robert + + * lame.c: + + changed filter options + +1999-12-13 21:56 markt + + * version.h: + + updated version to 3.58 + +1999-12-12 21:14 robert + + * lame.c: + + grrr, mist some filter comandline combinations :( + +1999-12-12 19:22 robert + + * lame.c: + + fixed filter commandline parameter inconsistencies + +1999-12-12 19:02 markt + + * filters.c, newmdct.c, util.h: + + removed extra #define's related to PI + +1999-12-12 03:53 cisc + + * filters.c, loopold.c, newmdct.c, quantize.c, util.h: + + Added new PI and LOG predefined variants, and stuck them in at respective places. + +1999-12-11 23:37 robert + + * lame.c: + + added low/highpass filter switches + +1999-12-11 23:36 robert + + * filters.c, globalflags.h: + + added highpass filter similar to lowpass filter + fixed lowpass filter to avoid endless loops + +1999-12-11 20:13 robert + + * mlame: + + fix for filenames containing spaces + +1999-12-11 00:57 takehiro + + * .cvsignore: + + added lame binary executable itself + +1999-12-10 01:57 takehiro + + * lame.c, loopold.c, quantize.c, util.c, util.h: + + little bit good subblock_gain calculation. + and nint2 is removed. + +1999-12-09 15:17 takehiro + + * loopold.c: + + little bit clean up. some variable restoring is removed. + +1999-12-09 07:07 markt + + * quantize-pvt.c, quantize-pvt.h, quantize.c, takehiro.c: + + PRECALC_SIZE bug? + PRECALC_SIZE should be 8191+15+1, since max value of xr/ix is 8191+15. + +1999-12-09 06:29 markt + + * loopold.c: + + cod_info-> should be cod_info[ch]-> + +1999-12-09 02:34 takehiro + + * loopold.c, quantize.c: + + Oops, stepsize history was not recorded. + +1999-12-09 02:28 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c: + + initial value of binary search is separeted by channels. + maybe faster bin_search_stepsize + +1999-12-09 00:44 cisc + + * l3bitstream-pvt.h: + + Removed write_ancillary_data() prototype. (No longer used) + +1999-12-09 00:38 cisc + + * takehiro.c: + + Included the correct quantize header. (quantize-pvt.h instead of quantize.h) + +1999-12-08 19:39 cisc + + * util.h: + + Adjusted PI/SQRT2 precision. (SQRT2 deviated from standard math.h value) + +1999-12-08 19:37 cisc + + * mpglib/mpg123.h: + + Fixed M_PI/M_SQRT2 to work on all platforms. Removed unused INLINE. + +1999-12-08 13:45 takehiro + + * mpglib/layer3.c: + + debug about scfsi treatment + +1999-12-08 06:27 markt + + * Makefile, lame.c: + + fixed display bug for VBR histogram under ncurses. Now termcap + is replaced by the more modern ncurses. + +1999-12-08 05:46 markt + + * psymodel.c, takehiro.c: + + avoid bounds check on xr[] for non-hq mode, from Mat. + spelling error in psymodel.c fixed :-) + +1999-12-08 05:24 markt + + * TODO: + + [no log message] + +1999-12-08 03:49 takehiro + + * psymodel.c: + + debugged possible buffer overrun. + +1999-12-07 22:58 cisc + + * mpglib/layer3.c: + + No GTK on Amiga. :( + +1999-12-07 22:56 cisc + + * main.c: + + Removed redundant __buffsize (SAS/C (AmigaOS)) + +1999-12-07 05:11 markt + + * Makefile, TODO, quantize-pvt.c: + + removed -.5 from quantize_xrpow + +1999-12-07 02:04 markt + + * fft.c, fft.h, lame.c, psymodel.c, quantize-pvt.c: + + backed out takehiro's fft changes for now + added latest quantize_xrpow asm from Acy and Mat + +1999-12-06 22:45 takehiro + + * fft.c: + + lookup table integration + +1999-12-06 20:38 afaber + + * fft.c, lame.h, machine.h, psymodel.c: + + Fixed compiler errors + +1999-12-03 10:13 takehiro + + * fft.c, fft.h, psymodel.c: + + maybe faster FFT coding + +1999-12-03 10:11 takehiro + + * l3bitstream.c: + + foolish mistake has removed :) + +1999-12-03 09:45 takehiro + + * l3bitstream.c, l3bitstream.h, lame.c: + + little bit cleanup + +1999-12-02 17:01 takehiro + + * loopold.c, quantize-pvt.c, quantize-pvt.h, quantize.c, + takehiro.c: + + correct adj43 overrun(maybe) + +1999-11-30 19:30 afaber + + * Dll/.cvsignore, mpglib/.cvsignore: + + Added .cvsignore files in sub projects + +1999-11-30 19:27 afaber + + * .cvsignore, gtkanal.c, lame.dsp, util.c, mpglib/mpglib.dsp: + + Added Win32 specific output files to .cvsignore + updated project files to set proper output directory and fixed alignment + problem between mpglib project and lame project, now all modules + have 8 byte alignment in all configurations + +1999-11-29 19:54 takehiro + + * .cvsignore: + + configure ignoring *.d file + +1999-11-29 19:48 takehiro + + * quantize.c: + + And more cleanup. needless variable store/restores are removed. + +1999-11-29 19:39 takehiro + + * quantize.c: + + little bit code cleanup(deleted needless call of scale_bitcount) + sorry, it is not bugfix of "TOO LARGE quantizerStepSize" ;p + +1999-11-29 16:34 markt + + * loopold.c, quantize-pvt.h, quantize.c: + + removed unused VBRbits from non-VBR quant routines + +1999-11-29 03:13 markt + + * loopold.c, quantize-pvt.c, quantize.c: + + scalefactor preemph *correctly* turned back on + +1999-11-29 02:55 markt + + * loopold.c, quantize-pvt.c: + + scalefac pre-emph turned back on in loopold.c + +1999-11-29 02:45 markt + + * encoder.h, gtkanal.h, l3side.h, lame.c, newmdct.c, psymodel.c, + psymodel.h, quantize.c, util.c: + + MS stereo switch slightly improved: old formula was based on the average + of ms_ratio of both granules. New formula uses ms_ratio from both + granules and the previous and next granule. This will help avoid toggleing + MS stereo off for a single frame. Long runs of MS stereo or regular + stereo will not be affected. + + also fixed a bug in frame analyzer - it was accessing l3_xmin in the last + scalefactor (l3_xmin and maskings are not computed for last scalefactor) + +1999-11-28 23:00 afaber + + * lame.c, lame.dsp, Dll/MP3EncDll.dsp: + + More fixes in order to compile under Win32 + +1999-11-28 22:42 afaber + + * lame.dsp, quantize-pvt.c: + + Fixes to compile under Win32 + +1999-11-28 22:21 afaber + + * Dll/: BladeMP3EncDLL.c, BladeMP3EncDLL.def, BladeMP3EncDLL.h, + MP3EncDll.dsp, MP3EncDll.dsw: + + Update of Blade DLL interface in order to support new lame features + +1999-11-28 06:45 markt + + * quantize-pvt.c: + + updated comments + +1999-11-28 06:36 markt + + * USAGE, quantize-pvt.c, quantize-pvt.h, vbrquantize.c: + + ASM routines (gcc & MSVC) for quantize_xrpow + +1999-11-28 01:01 markt + + * Makefile, TODO, lame.c, quantize-pvt.c, quantize-pvt.h, + quantize.c: + + If analog silence is detected, allow VBR code to over ride the VBR_min_bitrate + setting and encode at 32kbs. + +1999-11-27 23:39 markt + + * Makefile, formatBitstream.c, l3bitstream.c, lame.c, + quantize-pvt.c, quantize-pvt.h, quantize.c, util.c, + vbrquantize.c: + + More accurate quantization from Segher Boessenkool + +1999-11-25 19:27 markt + + * util.c: + + fixed allowable bitrate displays + +1999-11-24 08:43 markt + + * loopold.c, main.c, mlame, mp3x.c, timestatus.c, portableio.c, + portableio.h, reservoir.c, reservoir.h, tables.h, timestatus.h, + version.c, newmdct.h, quantize.h, takehiro.c, debugscalefac.c, + encoder.h, machine.h, filters.c, quantize-pvt.h, HACKING, + filters.h, vbrquantize.c, Dll/MP3EncDll.dsp, + Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.def, + Dll/BladeMP3EncDLL.h, Dll/MP3EncDll.dsw, doc/html/index.html, + doc/html/lame.css, doc/html/node7.html, doc/html/node5.html, + doc/html/contributors.html, doc/html/node6.html, + doc/html/history.html, doc/html/switchs.html, doc/man/lame.1, + mpglib/Makefile, mpglib/README, mpglib/TODO, mpglib/common.c, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/huffman.h, + mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, + mpglib/mpglib.dsp, mpglib/mpg123.h, mpglib/mpglib.h, + mpglib/tabinit.c: + + Initial revision + +1999-11-24 08:43 markt + + * loopold.c, main.c, mlame, mp3x.c, timestatus.c, portableio.c, + portableio.h, reservoir.c, reservoir.h, tables.h, timestatus.h, + version.c, newmdct.h, quantize.h, takehiro.c, debugscalefac.c, + encoder.h, machine.h, filters.c, quantize-pvt.h, HACKING, + filters.h, vbrquantize.c, Dll/MP3EncDll.dsp, + Dll/BladeMP3EncDLL.c, Dll/BladeMP3EncDLL.def, + Dll/BladeMP3EncDLL.h, Dll/MP3EncDll.dsw, doc/html/index.html, + doc/html/lame.css, doc/html/node7.html, doc/html/node5.html, + doc/html/contributors.html, doc/html/node6.html, + doc/html/history.html, doc/html/switchs.html, doc/man/lame.1, + mpglib/Makefile, mpglib/README, mpglib/TODO, mpglib/common.c, + mpglib/dct64_i386.c, mpglib/decode_i386.c, mpglib/huffman.h, + mpglib/interface.c, mpglib/layer3.c, mpglib/main.c, + mpglib/mpglib.dsp, mpglib/mpg123.h, mpglib/mpglib.h, + mpglib/tabinit.c: + + initial checkin of LAME + Starting with LAME 3.57beta with some modifications + +1999-11-24 08:40 markt + + * COPYING, INSTALL, Makefile, Makefile.MSVC, tables.c, util.c, + README, README.WINGTK, TODO, USAGE, fft.c, VbrTag.c, VbrTag.h, + auenc, fft.h, psymodel.c, lame.dsp, util.h, formatBitstream.c, + formatBitstream.h, get_audio.c, lame.c, get_audio.h, + globalflags.h, gpkplotting.c, gpkplotting.h, gtkanal.c, + gtkanal.h, quantize.c, version.h, newmdct.c, id3tag.c, id3tag.h, + ieeefloat.c, ieeefloat.h, l3bitstream-pvt.h, l3bitstream.c, + l3bitstream.h, LICENSE, l3side.h, lame.dsw, quantize-pvt.c, + lame.h, psymodel.h: + + Initial revision + +1999-11-24 08:40 markt + + * COPYING, INSTALL, Makefile, Makefile.MSVC, tables.c, util.c, + README, README.WINGTK, TODO, USAGE, fft.c, VbrTag.c, VbrTag.h, + auenc, fft.h, psymodel.c, lame.dsp, util.h, formatBitstream.c, + formatBitstream.h, get_audio.c, lame.c, get_audio.h, + globalflags.h, gpkplotting.c, gpkplotting.h, gtkanal.c, + gtkanal.h, quantize.c, version.h, newmdct.c, id3tag.c, id3tag.h, + ieeefloat.c, ieeefloat.h, l3bitstream-pvt.h, l3bitstream.c, + l3bitstream.h, LICENSE, l3side.h, lame.dsw, quantize-pvt.c, + lame.h, psymodel.h: + + initial checkin of LAME + Starting with LAME 3.57beta with some modifications + diff --git a/lame-3.97/DEFINES b/lame-3.97/DEFINES new file mode 100644 index 0000000..b4fab79 --- /dev/null +++ b/lame-3.97/DEFINES @@ -0,0 +1,45 @@ +$Id: DEFINES,v 1.23 2003/02/07 18:17:41 bouvigne Exp $ + +USE_FAST_LOG: + - use of log/log10 approximation (uses IEEE754 float format) + (absolute precision of log10 is then around 1e-6) + +KLEMM_36: + - portability fixes in the IO code + +NON_LINEAR_PSYMODEL + - use a non linear psymodel in the GPSYCHO case + +USE_GOGO_SUBBAND: + ? + +NOTABLES (default): + ? + +NEWS3: + ? + +NORES_TEST (allways on): + - don't let the 2nd granule use bits saved by the 1st granule + - useful for testing only + +NEW_DRAIN (theres a define above: NEW_DRAINXX): + ? + comment: + mdb_bytes = x/8; m ?= n ?= o ?= 8* mdb_bytes; p ?= mdb_bytes + ( ? == [+-] ) + - optimization should handle this, but it looks ugly + - do we lose precision here? + +LAME_STD_PRINT: + - more verbose output? + +PRECOMPUTE (always on, multiple defines): + - precomputes blackman window? + +USE_GNUC_ASM: + - speed optimization + (should move into configure.in) + +... alot of #if 0 / #if 1 not evaluated ... + diff --git a/lame-3.97/Dll/.svn/all-wcprops b/lame-3.97/Dll/.svn/all-wcprops new file mode 100644 index 0000000..b1751e0 --- /dev/null +++ b/lame-3.97/Dll/.svn/all-wcprops @@ -0,0 +1,89 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/328/monitor/trunk/lame-3.97/Dll +END +BladeMP3EncDLL.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/Dll/BladeMP3EncDLL.h +END +LameDLLInterface.htm +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/321/monitor/trunk/lame-3.97/Dll/LameDLLInterface.htm +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/328/monitor/trunk/lame-3.97/Dll/Makefile.in +END +Makefile.mingw32 +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/Makefile.mingw32 +END +MP3export.pas +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/MP3export.pas +END +Example_vc6.dsw +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/Example_vc6.dsw +END +BladeMP3EncDLL.def +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/BladeMP3EncDLL.def +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/Makefile.am +END +BladeMP3EncDLL.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/BladeMP3EncDLL.c +END +LameDll_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/LameDll_vc7.vcproj +END +Example.cpp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/Example.cpp +END +LameDll_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/LameDll_vc6.dsp +END +README +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/321/monitor/trunk/lame-3.97/Dll/README +END +Example_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/Dll/Example_vc6.dsp +END diff --git a/lame-3.97/Dll/.svn/entries b/lame-3.97/Dll/.svn/entries new file mode 100644 index 0000000..1f117b5 --- /dev/null +++ b/lame-3.97/Dll/.svn/entries @@ -0,0 +1,504 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/Dll +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +BladeMP3EncDLL.h +file + + + + +2012-01-23T14:07:04.591486Z +2f9cd2c3da97b2b4772be93726c47153 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +7657 + +LameDLLInterface.htm +file + + + + +2012-01-23T14:07:04.592489Z +3105b56cc4d2a64c38903e5d1ea64f45 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +24739 + +Makefile.in +file + + + + +2012-01-23T14:07:04.593486Z +4963676f223479813d324da04c2bf45e +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +9846 + +Makefile.mingw32 +file + + + + +2012-01-23T14:07:04.593486Z +ff0a96d33dd2c055e4749c3457ec276b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1330 + +MP3export.pas +file + + + + +2012-01-23T14:07:04.593486Z +c266aaa7ac9332d1f7c71b57958f3070 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +10651 + +Example_vc6.dsw +file + + + + +2012-01-23T14:07:04.594486Z +de92a84d89acadfc0abf786947c33b56 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1422 + +BladeMP3EncDLL.def +file + + + + +2012-01-23T14:07:04.594486Z +e5be590bd522781d70f5df345eaff825 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +777 + +Makefile.am +file + + + + +2012-01-23T14:07:04.594486Z +4f0c8113509e2395fa10f63000317252 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +331 + +BladeMP3EncDLL.c +file + + + + +2012-01-23T14:07:04.594486Z +f03d7ab602c62f78027766dfa16697a4 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +24726 + +LameDll_vc7.vcproj +file + + + + +2012-01-23T14:07:04.595489Z +b705d4b38fff1be12a676d59ccbba40a +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +21229 + +Example.cpp +file + + + + +2012-01-23T14:07:04.595489Z +f9cfe64a63db8d77b5f7ca6a64d3b404 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +7923 + +LameDll_vc6.dsp +file + + + + +2012-01-23T14:07:04.595489Z +49c78c973372740b36855abe394e1c09 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +6152 + +README +file + + + + +2012-01-23T14:07:04.595489Z +7410188cf884c65c5d6abcb192ae1994 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +633 + +Example_vc6.dsp +file + + + + +2012-01-23T14:07:04.596486Z +1f6d1d5bf40276de70e4a55c52721a99 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3441 + diff --git a/lame-3.97/Dll/.svn/prop-base/BladeMP3EncDLL.h.svn-base b/lame-3.97/Dll/.svn/prop-base/BladeMP3EncDLL.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/Dll/.svn/prop-base/BladeMP3EncDLL.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/Dll/.svn/prop-base/LameDLLInterface.htm.svn-base b/lame-3.97/Dll/.svn/prop-base/LameDLLInterface.htm.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/Dll/.svn/prop-base/LameDLLInterface.htm.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/Dll/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/Dll/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/Dll/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/Dll/.svn/prop-base/README.svn-base b/lame-3.97/Dll/.svn/prop-base/README.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/Dll/.svn/prop-base/README.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.c.svn-base b/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.c.svn-base new file mode 100644 index 0000000..5b20e6c --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.c.svn-base @@ -0,0 +1,916 @@ +/* + * Blade DLL Interface for LAME. + * + * Copyright (c) 1999 - 2002 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <windows.h> +#include <Windef.h> +#include "BladeMP3EncDLL.h" +#include <assert.h> + +#include "lame.h" +#include "config.h" +// sample_t should not be needed by any libmp3lame wrapper: +//#include "machine.h" /* for sample_t type */ + + +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#define Max(A, B) ((A) > (B) ? (A) : (B)) + +#define _RELEASEDEBUG 0 + +// lame_enc DLL version number +const int MAJORVERSION = 1; +const int MINORVERSION = 32; + + +// Local variables +static DWORD dwSampleBufferSize=0; +static HANDLE gs_hModule=NULL; +static BOOL gs_bLogFile=FALSE; +static lame_global_flags* gfp_save = NULL; + +// Local function prototypes +static void dump_config( lame_global_flags* gfp ); +static void DebugPrintf( const char* pzFormat, ... ); +static void DispErr( LPSTR strErr ); +static void PresetOptions( lame_global_flags *gfp, LONG myPreset ); + + +static void DebugPrintf(const char* pzFormat, ...) +{ + char szBuffer[1024]={'\0',}; + char szFileName[MAX_PATH+1]={'\0',}; + va_list ap; + + // Get the full module (DLL) file name + GetModuleFileName( gs_hModule, + szFileName, + sizeof( szFileName ) ); + + // change file name extention + szFileName[ strlen(szFileName) - 3 ] = 't'; + szFileName[ strlen(szFileName) - 2 ] = 'x'; + szFileName[ strlen(szFileName) - 1 ] = 't'; + + // start at beginning of the list + va_start(ap, pzFormat); + + // copy it to the string buffer + _vsnprintf(szBuffer, sizeof(szBuffer), pzFormat, ap); + + // log it to the file? + if ( gs_bLogFile ) + { + FILE* fp = NULL; + + // try to open the log file + fp=fopen( szFileName, "a+" ); + + // check file open result + if (fp) + { + // write string to the file + fputs(szBuffer,fp); + + // close the file + fclose(fp); + } + } + +#if defined _DEBUG || defined _RELEASEDEBUG + OutputDebugString( szBuffer ); +#endif + + va_end(ap); +} + + +static void PresetOptions( lame_global_flags *gfp, LONG myPreset ) +{ + switch (myPreset) + { +/*-1*/ case LQP_NOPRESET: + break; + +/*0*/ case LQP_NORMAL_QUALITY: + /* lame_set_quality( gfp, 5 );*/ + break; + +/*1*/ case LQP_LOW_QUALITY: + lame_set_quality( gfp, 9 ); + break; + +/*2*/ case LQP_HIGH_QUALITY: + lame_set_quality( gfp, 2 ); + break; + +/*3*/ case LQP_VOICE_QUALITY: // --voice flag for experimental voice mode + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 56); + break; + +/*4*/ case LQP_R3MIX: // --R3MIX + lame_set_preset( gfp, R3MIX); + break; + +/*5*/ case LQP_VERYHIGH_QUALITY: + lame_set_quality( gfp, 0 ); + break; + +/*6*/ case LQP_STANDARD: // --PRESET STANDARD + lame_set_preset( gfp, STANDARD); + break; + +/*7*/ case LQP_FAST_STANDARD: // --PRESET FAST STANDARD + lame_set_preset( gfp, STANDARD_FAST); + break; + +/*8*/ case LQP_EXTREME: // --PRESET EXTREME + lame_set_preset( gfp, EXTREME); + break; + +/*9*/ case LQP_FAST_EXTREME: // --PRESET FAST EXTREME: + lame_set_preset( gfp, EXTREME_FAST); + break; + +/*10*/ case LQP_INSANE: // --PRESET INSANE + lame_set_preset( gfp, INSANE); + break; + +/*11*/ case LQP_ABR: // --PRESET ABR + // handled in beInitStream + break; + +/*12*/ case LQP_CBR: // --PRESET CBR + // handled in beInitStream + break; + +/*13*/ case LQP_MEDIUM: // --PRESET MEDIUM + lame_set_preset( gfp, MEDIUM); + break; + +/*14*/ case LQP_FAST_MEDIUM: // --PRESET FAST MEDIUM + lame_set_preset( gfp, MEDIUM_FAST); + break; + +/*1000*/ case LQP_PHONE: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 16); + break; + +/*2000*/ case LQP_SW: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 24); + break; + +/*3000*/ case LQP_AM: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 40); + break; + +/*4000*/ case LQP_FM: + lame_set_preset( gfp, 112); + break; + +/*5000*/ case LQP_VOICE: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 56); + break; + +/*6000*/ case LQP_RADIO: + lame_set_preset( gfp, 112); + break; + +/*7000*/ case LQP_TAPE: + lame_set_preset( gfp, 112); + break; + +/*8000*/ case LQP_HIFI: + lame_set_preset( gfp, 160); + break; + +/*9000*/ case LQP_CD: + lame_set_preset( gfp, 192); + break; + +/*10000*/ case LQP_STUDIO: + lame_set_preset( gfp, 256); + break; + + } +} + + +__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream) +{ + int actual_bitrate; +//2001-12-18 + int nDllArgC = 0; + BE_CONFIG lameConfig = { 0, }; + int nInitReturn = 0; + lame_global_flags* gfp = NULL; + + // Init the global flags structure + gfp = lame_init(); + *phbeStream = (HBE_STREAM)gfp; + + // clear out structure + memset(&lameConfig,0x00,CURRENT_STRUCT_SIZE); + + // Check if this is a regular BLADE_ENCODER header + if (pbeConfig->dwConfig!=BE_CONFIG_LAME) + { + int nCRC=pbeConfig->format.mp3.bCRC; + int nVBR=(nCRC>>12)&0x0F; + + // Copy parameter from old Blade structure + lameConfig.format.LHV1.dwSampleRate =pbeConfig->format.mp3.dwSampleRate; + //for low bitrates, LAME will automatically downsample for better + //sound quality. Forcing output samplerate = input samplerate is not a good idea + //unless the user specifically requests it: + //lameConfig.format.LHV1.dwReSampleRate=pbeConfig->format.mp3.dwSampleRate; + lameConfig.format.LHV1.nMode =(pbeConfig->format.mp3.byMode&0x0F); + lameConfig.format.LHV1.dwBitrate =pbeConfig->format.mp3.wBitrate; + lameConfig.format.LHV1.bPrivate =pbeConfig->format.mp3.bPrivate; + lameConfig.format.LHV1.bOriginal =pbeConfig->format.mp3.bOriginal; + lameConfig.format.LHV1.bCRC =nCRC&0x01; + lameConfig.format.LHV1.bCopyright =pbeConfig->format.mp3.bCopyright; + + // Fill out the unknowns + lameConfig.format.LHV1.dwStructSize=CURRENT_STRUCT_SIZE; + lameConfig.format.LHV1.dwStructVersion=CURRENT_STRUCT_VERSION; + + // Get VBR setting from fourth nibble + if ( nVBR>0 ) + { + lameConfig.format.LHV1.bWriteVBRHeader = TRUE; + lameConfig.format.LHV1.bEnableVBR = TRUE; + lameConfig.format.LHV1.nVBRQuality = nVBR-1; + } + + // Get Quality from third nibble + lameConfig.format.LHV1.nPreset=((nCRC>>8)&0x0F); + + } + else + { + // Copy the parameters + memcpy(&lameConfig,pbeConfig,pbeConfig->format.LHV1.dwStructSize); + } + + // --------------- Set arguments to LAME encoder ------------------------- + + // Set input sample frequency + lame_set_in_samplerate( gfp, lameConfig.format.LHV1.dwSampleRate ); + + // disable INFO/VBR tag by default. + // if this tag is used, the calling program must call beWriteVBRTag() + // after encoding. But the original DLL documentation does not + // require the + // app to call beWriteVBRTag() unless they have specifically + // set LHV1.bWriteVBRHeader=TRUE. Thus the default setting should + // be disabled. + lame_set_bWriteVbrTag( gfp, 0 ); + +//2001-12-18 Dibrom's ABR preset stuff + + if(lameConfig.format.LHV1.nPreset == LQP_ABR) // --ALT-PRESET ABR + { + actual_bitrate = lameConfig.format.LHV1.dwVbrAbr_bps / 1000; + + // limit range + if( actual_bitrate > 320) + { + actual_bitrate = 320; + } + + if( actual_bitrate < 8 ) + { + actual_bitrate = 8; + } + + lame_set_preset( gfp, actual_bitrate ); + } + +// end Dibrom's ABR preset 2001-12-18 ****** START OF CBR + + if(lameConfig.format.LHV1.nPreset == LQP_CBR) // --ALT-PRESET CBR + { + actual_bitrate = lameConfig.format.LHV1.dwBitrate; + lame_set_preset(gfp, actual_bitrate); + lame_set_VBR(gfp, vbr_off); + } + +// end Dibrom's CBR preset 2001-12-18 + + // The following settings only used when preset is not one of the LAME QUALITY Presets + if ( (int)lameConfig.format.LHV1.nPreset < (int) LQP_STANDARD ) + { + switch ( lameConfig.format.LHV1.nMode ) + { + case BE_MP3_MODE_STEREO: + lame_set_mode( gfp, STEREO ); + lame_set_num_channels( gfp, 2 ); + break; + case BE_MP3_MODE_JSTEREO: + lame_set_mode( gfp, JOINT_STEREO ); + lame_set_num_channels( gfp, 2 ); + break; + case BE_MP3_MODE_MONO: + lame_set_mode( gfp, MONO ); + lame_set_num_channels( gfp, 1 ); + break; + case BE_MP3_MODE_DUALCHANNEL: //warning: there is NO dual channel option working in Lame + lame_set_force_ms( gfp, 1 ); + lame_set_mode( gfp, STEREO ); + lame_set_num_channels( gfp, 2 ); + break; + default: + { + DebugPrintf("Invalid lameConfig.format.LHV1.nMode, value is %d\n",lameConfig.format.LHV1.nMode); + return BE_ERR_INVALID_FORMAT_PARAMETERS; + } + } + + if ( lameConfig.format.LHV1.bEnableVBR ) + { + /* set VBR quality */ + lame_set_VBR_q( gfp, lameConfig.format.LHV1.nVBRQuality ); + + /* select proper VBR method */ + switch ( lameConfig.format.LHV1.nVbrMethod) + { + case VBR_METHOD_NONE: + lame_set_VBR( gfp, vbr_off ); + break; + + case VBR_METHOD_DEFAULT: + lame_set_VBR( gfp, vbr_default ); + break; + + case VBR_METHOD_OLD: + lame_set_VBR( gfp, vbr_rh ); + break; + + case VBR_METHOD_MTRH: + case VBR_METHOD_NEW: + /* + * the --vbr-mtrh commandline switch is obsolete. + * now --vbr-mtrh is known as --vbr-new + */ + lame_set_VBR( gfp, vbr_mtrh ); + break; + + case VBR_METHOD_ABR: + lame_set_VBR( gfp, vbr_abr ); + break; + + default: + /* unsupported VBR method */ + assert( FALSE ); + } + } + else + { + /* use CBR encoding method, so turn off VBR */ + lame_set_VBR( gfp, vbr_off ); + } + + /* Set bitrate. (CDex users always specify bitrate=Min bitrate when using VBR) */ + lame_set_brate( gfp, lameConfig.format.LHV1.dwBitrate ); + + /* check if we have to use ABR, in order to backwards compatible, this + * condition should still be checked indepedent of the nVbrMethod method + */ + if (lameConfig.format.LHV1.dwVbrAbr_bps > 0 ) + { + /* set VBR method to ABR */ + lame_set_VBR( gfp, vbr_abr ); + + /* calculate to kbps, round to nearest kbps */ + lame_set_VBR_mean_bitrate_kbps( gfp, ( lameConfig.format.LHV1.dwVbrAbr_bps + 500 ) / 1000 ); + + /* limit range */ + if( lame_get_VBR_mean_bitrate_kbps( gfp ) > 320) + { + lame_set_VBR_mean_bitrate_kbps( gfp, 320 ); + } + + if( lame_get_VBR_mean_bitrate_kbps( gfp ) < 8 ) + { + lame_set_VBR_mean_bitrate_kbps( gfp, 8 ); + } + } + + } + + // First set all the preset options + if ( LQP_NOPRESET != lameConfig.format.LHV1.nPreset ) + { + PresetOptions( gfp, lameConfig.format.LHV1.nPreset ); + } + + + // Set frequency resampling rate, if specified + if ( lameConfig.format.LHV1.dwReSampleRate > 0 ) + { + lame_set_out_samplerate( gfp, lameConfig.format.LHV1.dwReSampleRate ); + } + + + switch ( lameConfig.format.LHV1.nMode ) + { + case BE_MP3_MODE_MONO: + lame_set_mode( gfp, MONO ); + lame_set_num_channels( gfp, 1 ); + break; + + default: + break; + } + + + // Use strict ISO encoding? + lame_set_strict_ISO( gfp, ( lameConfig.format.LHV1.bStrictIso ) ? 1 : 0 ); + + // Set copyright flag? + if ( lameConfig.format.LHV1.bCopyright ) + { + lame_set_copyright( gfp, 1 ); + } + + // Do we have to tag it as non original + if ( !lameConfig.format.LHV1.bOriginal ) + { + lame_set_original( gfp, 0 ); + } + else + { + lame_set_original( gfp, 1 ); + } + + // Add CRC? + if ( lameConfig.format.LHV1.bCRC ) + { + lame_set_error_protection( gfp, 1 ); + } + else + { + lame_set_error_protection( gfp, 0 ); + } + + // Set private bit? + if ( lameConfig.format.LHV1.bPrivate ) + { + lame_set_extension( gfp, 1 ); + } + else + { + lame_set_extension( gfp, 0 ); + } + + + // Set VBR min bitrate, if specified + if ( lameConfig.format.LHV1.dwBitrate > 0 ) + { + lame_set_VBR_min_bitrate_kbps( gfp, lameConfig.format.LHV1.dwBitrate ); + } + + // Set Maxbitrate, if specified + if ( lameConfig.format.LHV1.dwMaxBitrate > 0 ) + { + lame_set_VBR_max_bitrate_kbps( gfp, lameConfig.format.LHV1.dwMaxBitrate ); + } + // Set bit resovoir option + if ( lameConfig.format.LHV1.bNoRes ) + { + lame_set_disable_reservoir( gfp,1 ); + lame_set_padding_type( gfp, PAD_NO ); + } + + // check if the VBR tag is required + if ( lameConfig.format.LHV1.bWriteVBRHeader) + { + lame_set_bWriteVbrTag( gfp, 1 ); + } + else + { + lame_set_bWriteVbrTag( gfp, 0 ); + } + + // Override Quality setting, use HIGHBYTE = NOT LOWBYTE to be backwards compatible + if ( ( lameConfig.format.LHV1.nQuality & 0xFF ) == + ((~( lameConfig.format.LHV1.nQuality >> 8 )) & 0xFF) ) + { + lame_set_quality( gfp, lameConfig.format.LHV1.nQuality & 0xFF ); + } + + if ( 0 != ( nInitReturn = lame_init_params( gfp ) ) ) + { + return nInitReturn; + } + + //LAME encoding call will accept any number of samples. + if ( 0 == lame_get_version( gfp ) ) + { + // For MPEG-II, only 576 samples per frame per channel + *dwSamples= 576 * lame_get_num_channels( gfp ); + } + else + { + // For MPEG-I, 1152 samples per frame per channel + *dwSamples= 1152 * lame_get_num_channels( gfp ); + } + + // Set the input sample buffer size, so we know what we can expect + dwSampleBufferSize = *dwSamples; + + // Set MP3 buffer size, conservative estimate + *dwBufferSize=(DWORD)( 1.25 * ( *dwSamples / lame_get_num_channels( gfp ) ) + 7200 ); + + // For debugging purposes + dump_config( gfp ); + + // Everything went OK, thus return SUCCESSFUL + return BE_ERR_SUCCESSFUL; +} + + + +__declspec(dllexport) BE_ERR beFlushNoGap(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput) +{ + int nOutputSamples = 0; + + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + // Init the global flags structure + nOutputSamples = lame_encode_flush_nogap( gfp, pOutput, LAME_MAXMP3BUFFER ); + + if ( nOutputSamples < 0 ) + { + *pdwOutput = 0; + return BE_ERR_BUFFER_TOO_SMALL; + } + else + { + *pdwOutput = nOutputSamples; + } + + return BE_ERR_SUCCESSFUL; +} + +__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput) +{ + int nOutputSamples = 0; + + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + nOutputSamples = lame_encode_flush( gfp, pOutput, 0 ); + + if ( nOutputSamples < 0 ) + { + *pdwOutput = 0; + return BE_ERR_BUFFER_TOO_SMALL; + } + else + { + *pdwOutput = nOutputSamples; + } + + return BE_ERR_SUCCESSFUL; +} + + +__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream) +{ + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + // lame will be close in VbrWriteTag function + if ( !lame_get_bWriteVbrTag( gfp ) ) + { + // clean up of allocated memory + lame_close( gfp ); + + gfp_save = NULL; + } + else + { + gfp_save = (lame_global_flags*)hbeStream; + } + + // DeInit encoder + return BE_ERR_SUCCESSFUL; +} + + + +__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion) +{ + // DLL Release date + char lpszDate[20] = { '\0', }; + char lpszTemp[5] = { '\0', }; + lame_version_t lv = { 0, }; + + + // Set DLL interface version + pbeVersion->byDLLMajorVersion=MAJORVERSION; + pbeVersion->byDLLMinorVersion=MINORVERSION; + + get_lame_version_numerical ( &lv ); + + // Set Engine version number (Same as Lame version) + pbeVersion->byMajorVersion = lv.major; + pbeVersion->byMinorVersion = lv.minor; + pbeVersion->byAlphaLevel = lv.alpha; + pbeVersion->byBetaLevel = lv.beta; + +#ifdef MMX_choose_table + pbeVersion->byMMXEnabled=1; +#else + pbeVersion->byMMXEnabled=0; +#endif + + memset( pbeVersion->btReserved, 0, sizeof( pbeVersion->btReserved ) ); + + // Get compilation date + strcpy(lpszDate,__DATE__); + + // Get the first three character, which is the month + strncpy(lpszTemp,lpszDate,3); + lpszTemp[3] = '\0'; + pbeVersion->byMonth=1; + + // Set month + if (strcmp(lpszTemp,"Jan")==0) pbeVersion->byMonth = 1; + if (strcmp(lpszTemp,"Feb")==0) pbeVersion->byMonth = 2; + if (strcmp(lpszTemp,"Mar")==0) pbeVersion->byMonth = 3; + if (strcmp(lpszTemp,"Apr")==0) pbeVersion->byMonth = 4; + if (strcmp(lpszTemp,"May")==0) pbeVersion->byMonth = 5; + if (strcmp(lpszTemp,"Jun")==0) pbeVersion->byMonth = 6; + if (strcmp(lpszTemp,"Jul")==0) pbeVersion->byMonth = 7; + if (strcmp(lpszTemp,"Aug")==0) pbeVersion->byMonth = 8; + if (strcmp(lpszTemp,"Sep")==0) pbeVersion->byMonth = 9; + if (strcmp(lpszTemp,"Oct")==0) pbeVersion->byMonth = 10; + if (strcmp(lpszTemp,"Nov")==0) pbeVersion->byMonth = 11; + if (strcmp(lpszTemp,"Dec")==0) pbeVersion->byMonth = 12; + + // Get day of month string (char [4..5]) + pbeVersion->byDay=atoi( lpszDate + 4 ); + + // Get year of compilation date (char [7..10]) + pbeVersion->wYear = atoi( lpszDate + 7 ); + + memset( pbeVersion->zHomepage, 0x00, BE_MAX_HOMEPAGE ); + + strcpy( pbeVersion->zHomepage, "http://www.mp3dev.org/" ); +} + +__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, + PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput) +{ + // Encode it + int dwSamples; + int nOutputSamples = 0; + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + dwSamples = nSamples / lame_get_num_channels( gfp ); + + // old versions of lame_enc.dll required exactly 1152 samples + // and worked even if nSamples accidently set to 2304 + // simulate this behavoir: + if ( 1 == lame_get_num_channels( gfp ) && nSamples == 2304) + { + dwSamples/= 2; + } + + + if ( 1 == lame_get_num_channels( gfp ) ) + { + nOutputSamples = lame_encode_buffer(gfp,pSamples,pSamples,dwSamples,pOutput,0); + } + else + { + nOutputSamples = lame_encode_buffer_interleaved(gfp,pSamples,dwSamples,pOutput,0); + } + + + if ( nOutputSamples < 0 ) + { + *pdwOutput=0; + return BE_ERR_BUFFER_TOO_SMALL; + } + else + { + *pdwOutput = (DWORD)nOutputSamples; + } + + return BE_ERR_SUCCESSFUL; +} + + +// accept floating point audio samples, scaled to the range of a signed 16-bit +// integer (within +/- 32768), in non-interleaved channels -- DSPguru, jd +__declspec(dllexport) BE_ERR beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, DWORD nSamples, + PFLOAT buffer_l, PFLOAT buffer_r, PBYTE pOutput, PDWORD pdwOutput) +{ + int nOutputSamples; + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + nOutputSamples = lame_encode_buffer_float(gfp,buffer_l,buffer_r,nSamples,pOutput,0); + + if ( nOutputSamples >= 0 ) + { + *pdwOutput = (DWORD) nOutputSamples; + } + else + { + *pdwOutput=0; + return BE_ERR_BUFFER_TOO_SMALL; + } + + return BE_ERR_SUCCESSFUL; +} + +__declspec(dllexport) BE_ERR beWriteInfoTag( HBE_STREAM hbeStream, + LPCSTR lpszFileName ) +{ + FILE* fpStream = NULL; + BE_ERR beResult = BE_ERR_SUCCESSFUL; + + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + if ( NULL != gfp ) + { + // Do we have to write the VBR tag? + if ( lame_get_bWriteVbrTag( gfp ) ) + { + + // Try to open the file + fpStream=fopen( lpszFileName, "rb+" ); + + // Check file open result + if ( NULL == fpStream ) + { + beResult = BE_ERR_INVALID_FORMAT_PARAMETERS; + } + else + { + // Write Xing header again + lame_mp3_tags_fid( gfp, fpStream ); + + // Close the file stream + fclose( fpStream ); + } + + // clean up of allocated memory + lame_close( gfp ); + } + } + else + { + beResult = BE_ERR_INVALID_FORMAT_PARAMETERS; + } + + // return result + return beResult; +} + +// for backwards compatiblity +__declspec(dllexport) BE_ERR beWriteVBRHeader(LPCSTR lpszFileName) +{ + return beWriteInfoTag( (HBE_STREAM)gfp_save, lpszFileName ); +} + + +BOOL APIENTRY DllMain(HANDLE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved) +{ + gs_hModule=hModule; + + switch( ul_reason_for_call ) + { + case DLL_PROCESS_ATTACH: + // Enable debug/logging? + gs_bLogFile = GetPrivateProfileInt("Debug","WriteLogFile",gs_bLogFile,"lame_enc.ini"); + break; + case DLL_THREAD_ATTACH: + break; + case DLL_THREAD_DETACH: + break; + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + + +static void dump_config( lame_global_flags* gfp ) +{ + DebugPrintf("\n\nLame_enc configuration options:\n"); + DebugPrintf("==========================================================\n"); + + DebugPrintf("version =%d\n",lame_get_version( gfp ) ); + DebugPrintf("Layer =3\n"); + DebugPrintf("mode ="); + switch ( lame_get_mode( gfp ) ) + { + case STEREO: DebugPrintf( "Stereo\n" ); break; + case JOINT_STEREO: DebugPrintf( "Joint-Stereo\n" ); break; + case DUAL_CHANNEL: DebugPrintf( "Forced Stereo\n" ); break; + case MONO: DebugPrintf( "Mono\n" ); break; + case NOT_SET: /* FALLTROUGH */ + default: DebugPrintf( "Error (unknown)\n" ); break; + } + + DebugPrintf("Input sample rate =%.1f kHz\n", lame_get_in_samplerate( gfp ) /1000.0 ); + DebugPrintf("Output sample rate =%.1f kHz\n", lame_get_out_samplerate( gfp ) /1000.0 ); + + DebugPrintf("bitrate =%d kbps\n", lame_get_brate( gfp ) ); + DebugPrintf("Quality Setting =%d\n", lame_get_quality( gfp ) ); + + DebugPrintf("Low pass frequency =%d\n", lame_get_lowpassfreq( gfp ) ); + DebugPrintf("Low pass width =%d\n", lame_get_lowpasswidth( gfp ) ); + + DebugPrintf("High pass frequency =%d\n", lame_get_highpassfreq( gfp ) ); + DebugPrintf("High pass width =%d\n", lame_get_highpasswidth( gfp ) ); + + DebugPrintf("No short blocks =%d\n", lame_get_no_short_blocks( gfp ) ); + DebugPrintf("Force short blocks =%d\n", lame_get_force_short_blocks( gfp ) ); + + DebugPrintf("de-emphasis =%d\n", lame_get_emphasis( gfp ) ); + DebugPrintf("private flag =%d\n", lame_get_extension( gfp ) ); + + DebugPrintf("copyright flag =%d\n", lame_get_copyright( gfp ) ); + DebugPrintf("original flag =%d\n", lame_get_original( gfp ) ); + DebugPrintf("CRC =%s\n", lame_get_error_protection( gfp ) ? "on" : "off" ); + DebugPrintf("Fast mode =%s\n", ( lame_get_quality( gfp ) )? "enabled" : "disabled" ); + DebugPrintf("Force mid/side stereo =%s\n", ( lame_get_force_ms( gfp ) )?"enabled":"disabled" ); + DebugPrintf("Padding Type =%d\n", lame_get_padding_type( gfp ) ); + DebugPrintf("Disable Reservoir =%d\n", lame_get_disable_reservoir( gfp ) ); + DebugPrintf("Allow diff-short =%d\n", lame_get_allow_diff_short( gfp ) ); + DebugPrintf("Interchannel masking =%f\n", lame_get_interChRatio( gfp ) ); + DebugPrintf("Strict ISO Encoding =%s\n", ( lame_get_strict_ISO( gfp ) ) ?"Yes":"No"); + DebugPrintf("Scale =%5.2f\n", lame_get_scale( gfp ) ); + + DebugPrintf("VBR =%s, VBR_q =%d, VBR method =", + ( lame_get_VBR( gfp ) !=vbr_off ) ? "enabled": "disabled", + lame_get_VBR_q( gfp ) ); + + switch ( lame_get_VBR( gfp ) ) + { + case vbr_off: DebugPrintf( "vbr_off\n" ); break; + case vbr_mt : DebugPrintf( "vbr_mt \n" ); break; + case vbr_rh : DebugPrintf( "vbr_rh \n" ); break; + case vbr_mtrh: DebugPrintf( "vbr_mtrh \n" ); break; + case vbr_abr: + DebugPrintf( "vbr_abr (average bitrate %d kbps)\n", lame_get_VBR_mean_bitrate_kbps( gfp ) ); + break; + default: + DebugPrintf("error, unknown VBR setting\n"); + break; + } + + DebugPrintf("Vbr Min bitrate =%d kbps\n", lame_get_VBR_min_bitrate_kbps( gfp ) ); + DebugPrintf("Vbr Max bitrate =%d kbps\n", lame_get_VBR_max_bitrate_kbps( gfp ) ); + + DebugPrintf("Write VBR Header =%s\n", ( lame_get_bWriteVbrTag( gfp ) ) ?"Yes":"No"); + DebugPrintf("VBR Hard min =%d\n", lame_get_VBR_hard_min( gfp ) ); + + DebugPrintf("ATH Only =%d\n", lame_get_ATHonly( gfp ) ); + DebugPrintf("ATH short =%d\n", lame_get_ATHshort( gfp ) ); + DebugPrintf("ATH no =%d\n", lame_get_noATH( gfp ) ); + DebugPrintf("ATH type =%d\n", lame_get_ATHtype( gfp ) ); + DebugPrintf("ATH lower =%f\n", lame_get_ATHlower( gfp ) ); + DebugPrintf("ATH aa =%d\n", lame_get_athaa_type( gfp ) ); + DebugPrintf("ATH aa loudapprox =%d\n", lame_get_athaa_loudapprox( gfp ) ); + DebugPrintf("ATH aa sensitivity =%f\n", lame_get_athaa_sensitivity( gfp ) ); + + DebugPrintf("Experimental nspsytune =%d\n", lame_get_exp_nspsytune( gfp ) ); + DebugPrintf("Experimental X =%d\n", lame_get_experimentalX( gfp ) ); + DebugPrintf("Experimental Y =%d\n", lame_get_experimentalY( gfp ) ); + DebugPrintf("Experimental Z =%d\n", lame_get_experimentalZ( gfp ) ); +} + + +static void DispErr(LPSTR strErr) +{ + MessageBox(NULL,strErr,"",MB_OK); +} diff --git a/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.def.svn-base b/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.def.svn-base new file mode 100644 index 0000000..4a83415 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.def.svn-base @@ -0,0 +1,36 @@ +LIBRARY lame_enc.DLL +EXPORTS + +beInitStream @1 +beEncodeChunk @2 +beDeinitStream @3 +beCloseStream @4 +beVersion @5 +beWriteVBRHeader @6 +beEncodeChunkFloatS16NI @7 +beFlushNoGap @8 +beWriteInfoTag @9 + +lame_init @100 +lame_close @101 +lame_init_params @102 +lame_encode_buffer_interleaved @110 +lame_encode_flush @120 +lame_mp3_tags_fid @130 + + +lame_set_num_samples @1000 +lame_get_num_samples @1001 +lame_set_in_samplerate @1002 +lame_get_in_samplerate @1003 +lame_set_num_channels @1004 +lame_get_num_channels @1005 +lame_set_scale @1006 +lame_get_scale @1007 +lame_set_scale_left @1008 +lame_get_scale_left @1009 +lame_set_scale_right @1010 +lame_get_scale_right @1011 +lame_set_out_samplerate @1012 +lame_get_out_samplerate @1013 + diff --git a/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.h.svn-base b/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.h.svn-base new file mode 100644 index 0000000..3fe2987 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/BladeMP3EncDLL.h.svn-base @@ -0,0 +1,280 @@ +/* + * Blade Type of DLL Interface for Lame encoder + * + * Copyright (c) 1999-2002 A.L. Faber + * Based on bladedll.h version 1.0 written by Jukka Poikolainen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef ___BLADEDLL_H_INCLUDED___ +#define ___BLADEDLL_H_INCLUDED___ + +#ifdef __GNUC__ +#define ATTRIBUTE_PACKED __attribute__((packed)) +#else +#define ATTRIBUTE_PACKED +#pragma pack(push) +#pragma pack(1) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* encoding formats */ + +#define BE_CONFIG_MP3 0 +#define BE_CONFIG_LAME 256 + +/* type definitions */ + +typedef unsigned long HBE_STREAM; +typedef HBE_STREAM *PHBE_STREAM; +typedef unsigned long BE_ERR; + +/* error codes */ + +#define BE_ERR_SUCCESSFUL 0x00000000 +#define BE_ERR_INVALID_FORMAT 0x00000001 +#define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002 +#define BE_ERR_NO_MORE_HANDLES 0x00000003 +#define BE_ERR_INVALID_HANDLE 0x00000004 +#define BE_ERR_BUFFER_TOO_SMALL 0x00000005 + +/* other constants */ + +#define BE_MAX_HOMEPAGE 128 + +/* format specific variables */ + +#define BE_MP3_MODE_STEREO 0 +#define BE_MP3_MODE_JSTEREO 1 +#define BE_MP3_MODE_DUALCHANNEL 2 +#define BE_MP3_MODE_MONO 3 + + + +#define MPEG1 1 +#define MPEG2 0 + +#ifdef _BLADEDLL +#undef FLOAT + #include <Windows.h> +#endif + +#define CURRENT_STRUCT_VERSION 1 +#define CURRENT_STRUCT_SIZE sizeof(BE_CONFIG) // is currently 331 bytes + + +typedef enum +{ + VBR_METHOD_NONE = -1, + VBR_METHOD_DEFAULT = 0, + VBR_METHOD_OLD = 1, + VBR_METHOD_NEW = 2, + VBR_METHOD_MTRH = 3, + VBR_METHOD_ABR = 4 +} VBRMETHOD; + +typedef enum +{ + LQP_NOPRESET =-1, + + // QUALITY PRESETS + LQP_NORMAL_QUALITY = 0, + LQP_LOW_QUALITY = 1, + LQP_HIGH_QUALITY = 2, + LQP_VOICE_QUALITY = 3, + LQP_R3MIX = 4, + LQP_VERYHIGH_QUALITY = 5, + LQP_STANDARD = 6, + LQP_FAST_STANDARD = 7, + LQP_EXTREME = 8, + LQP_FAST_EXTREME = 9, + LQP_INSANE = 10, + LQP_ABR = 11, + LQP_CBR = 12, + LQP_MEDIUM = 13, + LQP_FAST_MEDIUM = 14, + + // NEW PRESET VALUES + LQP_PHONE =1000, + LQP_SW =2000, + LQP_AM =3000, + LQP_FM =4000, + LQP_VOICE =5000, + LQP_RADIO =6000, + LQP_TAPE =7000, + LQP_HIFI =8000, + LQP_CD =9000, + LQP_STUDIO =10000 + +} LAME_QUALITY_PRESET; + + + +typedef struct { + DWORD dwConfig; // BE_CONFIG_XXXXX + // Currently only BE_CONFIG_MP3 is supported + union { + + struct { + + DWORD dwSampleRate; // 48000, 44100 and 32000 allowed + BYTE byMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO + WORD wBitrate; // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed + BOOL bPrivate; + BOOL bCRC; + BOOL bCopyright; + BOOL bOriginal; + + } mp3; // BE_CONFIG_MP3 + + struct + { + // STRUCTURE INFORMATION + DWORD dwStructVersion; + DWORD dwStructSize; + + // BASIC ENCODER SETTINGS + DWORD dwSampleRate; // SAMPLERATE OF INPUT FILE + DWORD dwReSampleRate; // DOWNSAMPLERATE, 0=ENCODER DECIDES + LONG nMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO + DWORD dwBitrate; // CBR bitrate, VBR min bitrate + DWORD dwMaxBitrate; // CBR ignored, VBR Max bitrate + LONG nPreset; // Quality preset, use one of the settings of the LAME_QUALITY_PRESET enum + DWORD dwMpegVersion; // FUTURE USE, MPEG-1 OR MPEG-2 + DWORD dwPsyModel; // FUTURE USE, SET TO 0 + DWORD dwEmphasis; // FUTURE USE, SET TO 0 + + // BIT STREAM SETTINGS + BOOL bPrivate; // Set Private Bit (TRUE/FALSE) + BOOL bCRC; // Insert CRC (TRUE/FALSE) + BOOL bCopyright; // Set Copyright Bit (TRUE/FALSE) + BOOL bOriginal; // Set Original Bit (TRUE/FALSE) + + // VBR STUFF + BOOL bWriteVBRHeader; // WRITE XING VBR HEADER (TRUE/FALSE) + BOOL bEnableVBR; // USE VBR ENCODING (TRUE/FALSE) + INT nVBRQuality; // VBR QUALITY 0..9 + DWORD dwVbrAbr_bps; // Use ABR in stead of nVBRQuality + VBRMETHOD nVbrMethod; + BOOL bNoRes; // Disable Bit resorvoir (TRUE/FALSE) + + // MISC SETTINGS + BOOL bStrictIso; // Use strict ISO encoding rules (TRUE/FALSE) + WORD nQuality; // Quality Setting, HIGH BYTE should be NOT LOW byte, otherwhise quality=5 + + // FUTURE USE, SET TO 0, align strucutre to 331 bytes + BYTE btReserved[255-4*sizeof(DWORD) - sizeof( WORD )]; + + } LHV1; // LAME header version 1 + + struct { + + DWORD dwSampleRate; + BYTE byMode; + WORD wBitrate; + BYTE byEncodingMethod; + + } aac; + + } format; + +} BE_CONFIG, *PBE_CONFIG ATTRIBUTE_PACKED; + + +typedef struct { + + // BladeEnc DLL Version number + + BYTE byDLLMajorVersion; + BYTE byDLLMinorVersion; + + // BladeEnc Engine Version Number + + BYTE byMajorVersion; + BYTE byMinorVersion; + + // DLL Release date + + BYTE byDay; + BYTE byMonth; + WORD wYear; + + // BladeEnc Homepage URL + + CHAR zHomepage[BE_MAX_HOMEPAGE + 1]; + + BYTE byAlphaLevel; + BYTE byBetaLevel; + BYTE byMMXEnabled; + + BYTE btReserved[125]; + + +} BE_VERSION, *PBE_VERSION ATTRIBUTE_PACKED; + +#ifndef _BLADEDLL + +typedef BE_ERR (*BEINITSTREAM) (PBE_CONFIG, PDWORD, PDWORD, PHBE_STREAM); +typedef BE_ERR (*BEENCODECHUNK) (HBE_STREAM, DWORD, PSHORT, PBYTE, PDWORD); + +// added for floating point audio -- DSPguru, jd +typedef BE_ERR (*BEENCODECHUNKFLOATS16NI) (HBE_STREAM, DWORD, PFLOAT, PFLOAT, PBYTE, PDWORD); +typedef BE_ERR (*BEDEINITSTREAM) (HBE_STREAM, PBYTE, PDWORD); +typedef BE_ERR (*BECLOSESTREAM) (HBE_STREAM); +typedef VOID (*BEVERSION) (PBE_VERSION); +typedef BE_ERR (*BEWRITEVBRHEADER) (LPCSTR); +typedef BE_ERR (*BEWRITEINFOTAG) (HBE_STREAM, LPCSTR ); + +#define TEXT_BEINITSTREAM "beInitStream" +#define TEXT_BEENCODECHUNK "beEncodeChunk" +#define TEXT_BEENCODECHUNKFLOATS16NI "beEncodeChunkFloatS16NI" +#define TEXT_BEDEINITSTREAM "beDeinitStream" +#define TEXT_BECLOSESTREAM "beCloseStream" +#define TEXT_BEVERSION "beVersion" +#define TEXT_BEWRITEVBRHEADER "beWriteVBRHeader" +#define TEXT_BEFLUSHNOGAP "beFlushNoGap" +#define TEXT_BEWRITEINFOTAG "beWriteInfoTag" + + +#else + +__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream); +__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput); + +// added for floating point audio -- DSPguru, jd +__declspec(dllexport) BE_ERR beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, DWORD nSamples, PFLOAT buffer_l, PFLOAT buffer_r, PBYTE pOutput, PDWORD pdwOutput); +__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); +__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream); +__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion); +__declspec(dllexport) BE_ERR beWriteVBRHeader(LPCSTR lpszFileName); +__declspec(dllexport) BE_ERR beFlushNoGap(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); +__declspec(dllexport) BE_ERR beWriteInfoTag( HBE_STREAM hbeStream, LPCSTR lpszFileName ); + +#endif + +#ifndef __GNUC__ +#pragma pack(pop) +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lame-3.97/Dll/.svn/text-base/Example.cpp.svn-base b/lame-3.97/Dll/.svn/text-base/Example.cpp.svn-base new file mode 100644 index 0000000..fec7565 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/Example.cpp.svn-base @@ -0,0 +1,288 @@ +/* + * LAME DLL Sample Code. + * + * Copyright (c) 2000 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include <windows.h> +#include <stdio.h> +#include <io.h> +#include <fcntl.h> +#include <sys/stat.h> +#include "BladeMP3EncDLL.h" + +BEINITSTREAM beInitStream=NULL; +BEENCODECHUNK beEncodeChunk=NULL; +BEDEINITSTREAM beDeinitStream=NULL; +BECLOSESTREAM beCloseStream=NULL; +BEVERSION beVersion=NULL; +BEWRITEVBRHEADER beWriteVBRHeader=NULL; +BEWRITEINFOTAG beWriteInfoTag=NULL; + + +// Main program +int main(int argc, char *argv[]) +{ + HINSTANCE hDLL =NULL; + FILE* pFileIn =NULL; + FILE* pFileOut =NULL; + BE_VERSION Version ={0,}; + BE_CONFIG beConfig ={0,}; + + CHAR strFileIn[255] ={'0',}; + CHAR strFileOut[255] ={'0',}; + + DWORD dwSamples =0; + DWORD dwMP3Buffer =0; + HBE_STREAM hbeStream =0; + BE_ERR err =0; + + PBYTE pMP3Buffer =NULL; + PSHORT pWAVBuffer =NULL; + + // check number of arguments + if(argc != 2) + { + fprintf(stderr,"Usage: %s <filename.wav>\n", argv[0]); + fprintf(stderr,"Descr: Short demo to show how to use the lame_enc.dll library file\n"); + fprintf(stderr,"Note : WAV file is assumed to to have the following parameters\n"); + fprintf(stderr," : 44100 Hz, stereo, 16 Bits per sample\n"); + return -1; + } + + // Setup the file names + strcpy(strFileIn ,argv[1]); + strcpy(strFileOut,argv[1]); + + // Add mp3 extention + strcat(strFileOut,".mp3"); + + // Load lame_enc.dll library (Make sure though that you set the + // project/settings/debug Working Directory correctly, otherwhise the DLL can't be loaded + + hDLL = LoadLibrary("lame_enc.dll"); + + if ( NULL == hDLL ) + { + hDLL = LoadLibrary("..\\..\\output\\lame_enc.dll"); + } + + if( NULL == hDLL ) + { + fprintf(stderr,"Error loading lame_enc.DLL"); + return -1; + } + + // Get Interface functions from the DLL + beInitStream = (BEINITSTREAM) GetProcAddress(hDLL, TEXT_BEINITSTREAM); + beEncodeChunk = (BEENCODECHUNK) GetProcAddress(hDLL, TEXT_BEENCODECHUNK); + beDeinitStream = (BEDEINITSTREAM) GetProcAddress(hDLL, TEXT_BEDEINITSTREAM); + beCloseStream = (BECLOSESTREAM) GetProcAddress(hDLL, TEXT_BECLOSESTREAM); + beVersion = (BEVERSION) GetProcAddress(hDLL, TEXT_BEVERSION); + beWriteVBRHeader= (BEWRITEVBRHEADER) GetProcAddress(hDLL,TEXT_BEWRITEVBRHEADER); + beWriteInfoTag = (BEWRITEINFOTAG) GetProcAddress(hDLL,TEXT_BEWRITEINFOTAG); + + // Check if all interfaces are present + if(!beInitStream || !beEncodeChunk || !beDeinitStream || !beCloseStream || !beVersion || !beWriteVBRHeader) + { + printf("Unable to get LAME interfaces"); + return -1; + } + + // Get the version number + beVersion( &Version ); + + printf( + "lame_enc.dll version %u.%02u (%u/%u/%u)\n" + "lame_enc Engine %u.%02u\n" + "lame_enc homepage at %s\n\n", + Version.byDLLMajorVersion, Version.byDLLMinorVersion, + Version.byDay, Version.byMonth, Version.wYear, + Version.byMajorVersion, Version.byMinorVersion, + Version.zHomepage); + + // Try to open the WAV file, be sure to open it as a binary file! + pFileIn = fopen( strFileIn, "rb" ); + + // Check file open result + if(pFileIn == NULL) + { + fprintf(stderr,"Error opening %s", argv[1]); + return -1; + } + + // Open MP3 file + pFileOut= fopen(strFileOut,"wb+"); + + // Check file open result + if(pFileOut == NULL) + { + fprintf(stderr,"Error creating file %s", strFileOut); + return -1; + } + + memset(&beConfig,0,sizeof(beConfig)); // clear all fields + + // use the LAME config structure + beConfig.dwConfig = BE_CONFIG_LAME; + + // this are the default settings for testcase.wav + beConfig.format.LHV1.dwStructVersion = 1; + beConfig.format.LHV1.dwStructSize = sizeof(beConfig); + beConfig.format.LHV1.dwSampleRate = 44100; // INPUT FREQUENCY + beConfig.format.LHV1.dwReSampleRate = 0; // DON"T RESAMPLE + beConfig.format.LHV1.nMode = BE_MP3_MODE_JSTEREO; // OUTPUT IN STREO + beConfig.format.LHV1.dwBitrate = 128; // MINIMUM BIT RATE + beConfig.format.LHV1.nPreset = LQP_R3MIX; // QUALITY PRESET SETTING + beConfig.format.LHV1.dwMpegVersion = MPEG1; // MPEG VERSION (I or II) + beConfig.format.LHV1.dwPsyModel = 0; // USE DEFAULT PSYCHOACOUSTIC MODEL + beConfig.format.LHV1.dwEmphasis = 0; // NO EMPHASIS TURNED ON + beConfig.format.LHV1.bOriginal = TRUE; // SET ORIGINAL FLAG + beConfig.format.LHV1.bWriteVBRHeader = TRUE; // Write INFO tag + +// beConfig.format.LHV1.dwMaxBitrate = 320; // MAXIMUM BIT RATE +// beConfig.format.LHV1.bCRC = TRUE; // INSERT CRC +// beConfig.format.LHV1.bCopyright = TRUE; // SET COPYRIGHT FLAG +// beConfig.format.LHV1.bPrivate = TRUE; // SET PRIVATE FLAG +// beConfig.format.LHV1.bWriteVBRHeader = TRUE; // YES, WRITE THE XING VBR HEADER +// beConfig.format.LHV1.bEnableVBR = TRUE; // USE VBR +// beConfig.format.LHV1.nVBRQuality = 5; // SET VBR QUALITY + beConfig.format.LHV1.bNoRes = TRUE; // No Bit resorvoir + +// Preset Test +// beConfig.format.LHV1.nPreset = LQP_PHONE; + + // Init the MP3 Stream + err = beInitStream(&beConfig, &dwSamples, &dwMP3Buffer, &hbeStream); + + // Check result + if(err != BE_ERR_SUCCESSFUL) + { + fprintf(stderr,"Error opening encoding stream (%lu)", err); + return -1; + } + + + // Allocate MP3 buffer + pMP3Buffer = new BYTE[dwMP3Buffer]; + + // Allocate WAV buffer + pWAVBuffer = new SHORT[dwSamples]; + + // Check if Buffer are allocated properly + if(!pMP3Buffer || !pWAVBuffer) + { + printf("Out of memory"); + return -1; + } + + DWORD dwRead=0; + DWORD dwWrite=0; + DWORD dwDone=0; + DWORD dwFileSize=0; + + // Seek to end of file + fseek(pFileIn,0,SEEK_END); + + // Get the file size + dwFileSize=ftell(pFileIn); + + // Seek back to start of WAV file, + // but skip the first 44 bytes, since that's the WAV header + fseek(pFileIn,44,SEEK_SET); + + + // Convert All PCM samples + while ( (dwRead=fread(pWAVBuffer,sizeof(SHORT),dwSamples,pFileIn)) >0 ) + { + // Encode samples + err = beEncodeChunk(hbeStream, dwRead, pWAVBuffer, pMP3Buffer, &dwWrite); + + // Check result + if(err != BE_ERR_SUCCESSFUL) + { + beCloseStream(hbeStream); + fprintf(stderr,"beEncodeChunk() failed (%lu)", err); + return -1; + } + + // write dwWrite bytes that are returned in tehe pMP3Buffer to disk + if(fwrite(pMP3Buffer,1,dwWrite,pFileOut) != dwWrite) + { + fprintf(stderr,"Output file write error"); + return -1; + } + + dwDone += dwRead*sizeof(SHORT); + + printf("Done: %0.2f%% \r", 100 * (float)dwDone/(float)(dwFileSize)); + } + + // Deinit the stream + err = beDeinitStream(hbeStream, pMP3Buffer, &dwWrite); + + // Check result + if(err != BE_ERR_SUCCESSFUL) + { + + beCloseStream(hbeStream); + fprintf(stderr,"beExitStream failed (%lu)", err); + return -1; + } + + // Are there any bytes returned from the DeInit call? + // If so, write them to disk + if( dwWrite ) + { + if( fwrite( pMP3Buffer, 1, dwWrite, pFileOut ) != dwWrite ) + { + fprintf(stderr,"Output file write error"); + return -1; + } + } + + // close the MP3 Stream + beCloseStream( hbeStream ); + + // Delete WAV buffer + delete [] pWAVBuffer; + + // Delete MP3 Buffer + delete [] pMP3Buffer; + + // Close input file + fclose( pFileIn ); + + // Close output file + fclose( pFileOut ); + + if ( beWriteInfoTag ) + { + // Write the INFO Tag + beWriteInfoTag( hbeStream, strFileOut ); + } + else + { + beWriteVBRHeader( strFileOut ); + } + + // Were done, return OK result + return 0; +} + diff --git a/lame-3.97/Dll/.svn/text-base/Example_vc6.dsp.svn-base b/lame-3.97/Dll/.svn/text-base/Example_vc6.dsp.svn-base new file mode 100644 index 0000000..4c4af38 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/Example_vc6.dsp.svn-base @@ -0,0 +1,89 @@ +# Microsoft Developer Studio Project File - Name="Example" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=Example - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "Example_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Example_vc6.mak" CFG="Example - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "Example - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "Example - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "Example - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "Example - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "Example - Win32 Release" +# Name "Example - Win32 Debug" +# Begin Source File + +SOURCE=.\Example.cpp +# End Source File +# End Target +# End Project diff --git a/lame-3.97/Dll/.svn/text-base/Example_vc6.dsw.svn-base b/lame-3.97/Dll/.svn/text-base/Example_vc6.dsw.svn-base new file mode 100644 index 0000000..75d8332 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/Example_vc6.dsw.svn-base @@ -0,0 +1,74 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "Example"=.\Example_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name LameMp3EncDll + End Project Dependency +}}} + +############################################################################### + +Project: "LameMp3EncDll"=.\LameDll_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "libmp3lame"=..\libmp3lame\libmp3lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "mpglib"=..\mpglib\mpglib_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/Dll/.svn/text-base/LameDLLInterface.htm.svn-base b/lame-3.97/Dll/.svn/text-base/LameDLLInterface.htm.svn-base new file mode 100644 index 0000000..a9f2add --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/LameDLLInterface.htm.svn-base @@ -0,0 +1,742 @@ +<html> + +<head> +<meta http-equiv="Content-Type" +content="text/html; charset=iso-8859-1"> +<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0"> +<title>Lame- + + + + +

 

+ +

Lame-enc DLL
+Interface version 1.32 (and above)
+(Lame engine version: 3.93 or higher)
+Programmers Manual

+ +

The lame_enc.dll and this manual is +copyright by Albert L Faber
+Originally the the DLL interface is modeled after the BladeEnc +DLL interface
+which is copyrighted by Tord Jansson and Jukka Poikolainen
+This document and the DLL interface may be distributed freely
+
+as long as modifications are released under the LGPL license. +

+ +

 

+ +

Homepage: http://www.cdex.n3.net
+E-mail: mailto: afaber@users.sourceforge.net +

+ +


+
+
+
+

+ +

Distribution

+ +

People and companies  who wants to distribute +lame_enc.dll with their commercial products are free to do so as +far as I'm concerned (LGPL license), but should be aware that +lame_enc.dll might infringe certain MP3 related software patents +held by Fraunhofer IIS in certain countries.

+ +


+ +

Disclaimer

+ +

lame_enc.dll and this manual is distributed 'as is' with no +warranty of any kind. The Author is not to be held responsible +for the result of any use or misuse of this product.

+ +

Current Bugs and Limitations

+ +

Although the interface is designed to be able to handle +multiple parallel streams it can't be done yet due to limitations +in the engine, only one stream is allowed.

+ +

Future Compatibility

+ +

This interface should be compatible with all future versions +of lame_enc.DLL without any need to recompile your programs. You +should therefore not check the version number upon start +and prevent users from running your program with a later version +of lame_enc.DLL.

+ +
+ +

How to use the DLL

+ +

1. Fill in a BE_CONFIG structure +and send it to beInitStream(). Make +sure that BE_ERR_SUCCESSFUL is returned.

+ +

2. Reserve at least the amount of memory returned in +dwBufferSize as your output buffer.

+ +

3. Call beEncodeChunk() until +you've encoded everything you want.

+ +

4. Call beDeinitStream() to +make sure that all encoded data is flushed out before closing the +stream.

+ +

5. Close the stream using beCloseStream() +

+ +

6. Finally, call the beWriteVBRHeader() +functions, to insert the INFO tag MP3 Header. This is an +extension of the Xing VBR tag which is also used for CBR +encodings. This call can only be omitted if the INFO tag was +explicilty disabled in the BE_CONFIG Structure.

+ +

A handy feature is the available Lame_enc.dll debug option, +which will dump the important lame internal settings to a text +file.

+ +

 

+ +

Return Values

+ +

See the header-file for a complete list of function return +values. All functions should return BE_ERR_SUCCESSFUL unless +something went wrong.

+ +
+ +

Type definitions

+ +

The DLL is by default compiled with the MS Visual C/C++ +compiler, which has the following type definitions:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description
CHARsigned char (8 bits)
BYTEunsigned char (8 bits)
SHORTsigned short (16 bits)
WORDunsigned short (16 bits)
INTsigned long (32 bits)
LONGsigned long (32 bits)
BOOLsigned long (32 bits) (YES, 32 bits for a one bit + value)
+ TRUE = 0
+ FALSE=-1
DWORDunsigned long (32 bits)
FLOATfloating point (32 bits)
DOUBLEfloat point (64 bits)
LPCSTRconst char* (32 bits pointer to zero terminated + character string)
+ +

Within the lame_enc.dll All the structure elements are one +byte alligned (due to backwards compatibility with BladEnc.DLL!

+ +

 

+ +
+ +

The +BE_CONFIG Structure

+ +

Currently there the BE_CONFIG structure has to +varians, the old MP3 config structure that is truly compatible +with the old BladeEnc interface, and the new defined LHV1 +structure, which can set far more options in the lame encoder

+ +

 

+ +

The MP3 BE_CONFIG - structure (OBSOLETE)

+ +

This is the old structure as it was originally defined by the +BladeEnc.DLL interface. However, I do highly recommend to use the +new Lame specific config structure, since it gives you more +control over the Lame encoder settings.

+ +

These are the members of the BE_CONFIG structure you need to +fill in before you call beInitStream():

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dwConfigSpecifies what kind of output you want. Since only + MP3 currently is supported you must set this to BE_CONFIG_MP3
format.mp3.dwSampleRate     Samplerate in Hz for MP3 file. This can be set to + either 32000, 44100 or 48000.
format.mp3.byModeStereomode for MP3 file. This can be either BE_MP3_MODE_STEREO, + BE_MP3_MODE_DUALCHANNEL or BE_MP3_MODE_MONO.
format.mp3.bitrateBitrate (i.e. size) of MP3 file in kBit/s. Allowed + bitrates are: 32, 40, 48, 56, 64, 80, 96, 112, 128, + 160, 192, 224, 256 and 320.
format.mp3.bCopyrightIf this is set to TRUE the Copyright bit in the MP3 + stream will be set.
format.mp3.bCRCSet this to TRUE in order to enable CRC-checksum in + the bitstream.
format.mp3.bOriginalIf this is set to TRUE the Original bit in the MP3 + stream will be set.
format.mp3.bPrivateIf this is set to TRUE the Private bit in the MP3 + stream will be set.
+ +

 

+ +

The LHV1 BE_CONFIG - structure (recommended)

+ +

These are the members of the LHV1 BE_CONFIG structure, you +need to fill in before you call beInitStream():
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dwConfigSpecifies what kind of output you want. Since only + MP3 currently is supported you must set this to BE_CONFIG_LAME
  
format.LHV1.dwStructVersionIndicates the version number of the structure, + current version number is 1
format.LHV1.dwStructSizeSpecifies the size of the BE_CONFIG structure + (currently 331 bytes)
  
format.LHV1.dwSampleRate Samplerate in Hz for MP3 file. This can be set to + either:
+ 32000, 44100 or 48000 for MPEG-I
+ 16000, 22050 or 24000 for MPEG-I
+ 8000, 11025 or 12000 for MPEG-II.5
format.LHV1.dwReSampleRateSpecifies to which sample rate the input stream has + to be resampled, if set to 0, the encoder will decide + which ReSample rate to use
format.LHV1.nModeStereomode for MP3 file. This can be either BE_MP3_MODE_STEREO, + BE_MP3_MODE_JSTEREO, BE_MP3_MODE_DUALCHANNEL or BE_MP3_MODE_MONO.
format.LHV1.dwBitrateFor CBR, this specifies the actual bitrate, for VBR, + it specifies the minimum bitrate
+ Allowed bitrates are: 32, 40, 48, 56, 64, 80, 96, 112, + 128, 160, 192, 224, 256 and 320.for MPEG-I
+ Allowed bitrates are: 8, 16, 24, 32, 40, 48, 56, 64, + 80, 96, 112, 128, 144 and 160.for MPEG-II

Note: + dwBitrate is used as the minimum bitrate in the case of + using a VBR mode.

+
format.LHV1.dwMaxBitrateWhen VBR mode is enabled, it specifies the maximum + allowed bitrate (see also dwBitrate to specify the minium + bitrate), for CBR mode this setting is ignored.
format.LHV1.nPresetKeep in mind that the presets can overwrite some of + the other settings, since it is called right before the + encoder is initialized
+ + + + +
The nPreset option can be set to one of the + following presets values::
+

LQP_NOPRESET (don't use any presets)
+ LQP_NORMAL_QUALITY (quality is set to 5)
+ LQP_LOW_QUALITY (quality is set to 9)
+ LQP_HIGH_QUALITY (quality is set to 2)
+ LQP_VOICE_QUALITY (use for voice encoding)
+ LQP_R3MIX (r3mix preset option)
+ LQP_VERYHIGH_QUALITY (quality is set to 0)
+ LQP_STANDARD (lame command line alt-preset standard)
+ LQP_FAST_STANDARD (lame command line alt-preset fast + standard)
+ LQP_EXTREME (lame command line alt-preset extreme)
+ LQP_FAST_EXTREME (lame command line alt-preset fast + extreme)
+ LQP_INSANE (lame command line alt-preset insane)
+ LQP_ABR (lame command line alt-preset abr)
+ LQP_CBR(lame command line alt-preset cbr)
+
+ (old lame preset options)
+ LQP_PHONE
+ LQP_SW
+ LQP_AM
+ LQP_FM
+ LQP_VOICE
+ LQP_RADIO
+ LQP_TAPE
+ LQP_HIFI
+ LQP_CD
+ LQP_STUDIO

+
 
format.LHV1.bCopyrightIf this is set to TRUE the Copyright bit in the MP3 + stream will be set.
format.LHV1.bCRCSet this to TRUE in order to enable CRC-checksum in + the bitstream.
format.LHV1.bOriginalIf this is set to TRUE the Original bit in the MP3 + stream will be set.
format.LHV1.bPrivateIf this is set to TRUE the Private bit in the MP3 + stream will be set.
  
format.LHV1.nVbrMethodSepecifes if the VBR method to use, currently the + following settings are supported:

VBR_METHOD_NONE + (don't use VBR, use CBR encoding instead),
+ VBR_METHOD_DEFAULT (default VBR method)
+ VBR_METHOD_OLD (old VBR method, proven to be reliable)
+ VBR_METHOD_NEW (new VBR method, faster than + VBR_METHOD_OLD)
+ VBR_METHOD_MTRH (depreciated, same as VBR_METHOD_NEW)
+ VBR_METHOD_ABR (Average Bitrate Encoding, see also
format.LHV1.dwVbrAbr_bps)

+
format.LHV1.bWriteVBRHeaderSepecifes if the a XING VBR header should be written + or not. When this option is enabled, you have to call the + beWriteVBRHeader function when encoding + has been completed. Keep in mind that the VBR info tag + can also be written for CBR encoded files, the TAG info + can be useful for additional info like encoder delay and + the like.
format.LHV1.bEnableVBRSpecifies if VBR encoding option shall be used or + not, possible values are TRUE/FALSE
format.LHV1.nVBRQualityQuality option if VBR is enabled (0=highest quality, + 9 is lowest quality)
format.LHV1.dwVbrAbr_bpsIf the Average Bit Rate is specified, the lame + encoder ignores the nVBRQuality settings (However, bEnableVBR + must be set to TRUE and the format.LHV1.nVbrMethod + parameter should be set to VBR_METHOD_ABR). The allowed + range for the format.LHV1.dwVbrAbr_bps parameter + any integer value between:

MPEG-I: + 32000 .. 320000 bps
+
MPEG-II: 8000 .. 160000 bps

+
  
format.LHV1.bNoBitResDisables the bit-resorvoir and disables the insertion + of padded frames
format.LHV1.nQualityQuality Setting, HIGH BYTE should be NOT LOW byte, + otherwhise quality is set to 5. This is done to be + backward compatible. So to set quality to 3, you have to + set the nQuality parameter to 0xFC03.
format.mp3.btReservedFor future use, set all elements to zero
+ +

 

+ +

 

+ +
+ +

beInitStream() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beInitStream( + PBE_CONFIG pbeConfig, PDWORD dwSamples, + PDWORD dwBufferSize, PHBE_STREAM phbeStream + )
Parameters: + + + + + + + + + + + + + + + + +
pbeConfigPointer at the struct containing encoder + settings.
dwSamplesPointer at double word where number of + samples to send to each beEncodeChunk() is + returned.
dwBufferSizePointer at double word where minimum size in + bytes of output buffer is returned.
phbeStreamPointer at integer where Stream handle is + returned.
+
Description:This function is the first + to call before starting an encoding stream.
+ +
+ +

beEncodeChunk() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beEncodeChunk( + HBE_STREAM hbeStream, DWORD nSamples, + PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput + )
Parameters: + + + + + + + + + + + + + + + + + + + + +
hbeStreamHandle of the stream.
nSamplesNumber of samples to be encoded for this + call. This should be identical to what is + returned by beInitStream(), unless you are + encoding the last chunk, which might be smaller.
pSamplesPointer at the 16-bit signed samples to be + encoded. These should be in stereo when encoding + a stereo MP3 and mono when encoding a mono MP3.
pOutputWhere to write the encoded data. This buffer + should be at least of the minimum size returned + by beInitStream().
pdwOutputWhere to return number of bytes of encoded + data written. The amount of data written might + vary from chunk to chunk.
+
Description:Encodes a chunk of samples. Please + note that if you have set the output to generate mono MP3 + files you must feed beEncodeChunk() with mono samples!
+ +
+ +

beDeinitStream() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beDeinitStream( + HBE_STREAM hbeStream, PBYTE pOutput, PDWORD + pdwOutput )
Parameters: + + + + + + + + + + + + +
hbeStreamHandle of the stream.
pOutputWhere to write the encoded data. This buffer + should be at least of the minimum size returned + by beInitStream().
pdwOutputWhere to return number of bytes of encoded + data written.
+
Description:This function should be called after + encoding the last chunk in order to flush the encoder. It + writes any encoded data that still might be left inside + the encoder to the output buffer. This function should + NOT be called unless you have encoded all of the chunks + in your stream.
+ +
+ +

beCloseStream() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beCloseStream( HBE_STREAM hbeStream + )
Parameters: + + + + +
hbeStreamHandle of the stream.
+
Description:Last function to be called when finished + encoding a stream. Should unlike beDeinitStream() + also be called if the encoding is canceled.
+ +
+ +

beVersion()

+ + + + + + + + + + + + + + +
Synopsis:VOID beVersion( PBE_VERSION pbeVersion + )
Parameters: + + + + +
pbeVersionPointer at struct where version number, + release date and URL for homepage is returned.
+
Description:Returns information like version numbers + (both of the DLL and encoding engine), release date and + URL for lame_enc's homepage. All this information should + be made available to the user of your product through a + dialog box or something similar.
+ +

 

+ +
+ +

 

+ +

beWriteVBRHeader() +

+ + + + + + + + + + + + + + +
Synopsis:VOID beWriteVBRHeader( LPCSTR pszMP3FileName + )
Parameters: + + + + +
pszMP3FileNameConst Pointer zero terminated string, that + contains the MP3 file name.
+
Description:Writes a Xing Header in front of the MP3 + file. Make sure that the MP3 file is closed, and the the + beConfig.format.LHV1.bWriteVBRHeader has been set to + TRUE. In addition, it is always save to call + beWriteVBRHeader after the encoding has been finished, + even when the beConfig.format.LHV1.bWriteVBRHeader is not + set to TRUE
+ +

 

+ +

 

+ +
+ +

 

+ +

Lame_enc.dll debug option

+ +

The lame_enc.dll has a built-in debug option, that dumps all +the important internal settings to a text file. To enable this +feature, create a text file in the Windows directory which is +named lame_enc.ini, and should contain the following two lines

+ +

[debug]
+WriteLogFile=1

+ +

Save this text file, and each time you encode a file, the +settings are added to a file name lame_enc.txt, that is located +in the same directory as the lame_enc.dll

+ +

 

+ +


+ + diff --git a/lame-3.97/Dll/.svn/text-base/LameDll_vc6.dsp.svn-base b/lame-3.97/Dll/.svn/text-base/LameDll_vc6.dsp.svn-base new file mode 100644 index 0000000..b9600b9 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/LameDll_vc6.dsp.svn-base @@ -0,0 +1,144 @@ +# Microsoft Developer Studio Project File - Name="LameMp3EncDll" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=LameMp3EncDll - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "LameDll_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "LameDll_vc6.mak" CFG="LameMp3EncDll - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "LameMp3EncDll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "LameMp3EncDll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "LameMp3EncDll - Win32 Release NASM" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "LameMp3EncDll - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../output/lame_enc.dll" + +!ELSEIF "$(CFG)" == "LameMp3EncDll - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /ZI /Od /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../output/lame_enc.dll" /pdbtype:sept + +!ELSEIF "$(CFG)" == "LameMp3EncDll - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "LameMp3EncDll___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "LameMp3EncDll___Win32_Release_NASM" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /O2 /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /D "HAVE_NASM" /D "MMX_choose_table" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../output/lame_enc.dll" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../output/lame_enc.dll" + +!ENDIF + +# Begin Target + +# Name "LameMp3EncDll - Win32 Release" +# Name "LameMp3EncDll - Win32 Debug" +# Name "LameMp3EncDll - Win32 Release NASM" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\BladeMP3EncDLL.c +# End Source File +# Begin Source File + +SOURCE=.\BladeMP3EncDLL.def +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\BladeMP3EncDLL.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/lame-3.97/Dll/.svn/text-base/LameDll_vc7.vcproj.svn-base b/lame-3.97/Dll/.svn/text-base/LameDll_vc7.vcproj.svn-base new file mode 100644 index 0000000..641b6b0 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/LameDll_vc7.vcproj.svn-base @@ -0,0 +1,704 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/Dll/.svn/text-base/MP3export.pas.svn-base b/lame-3.97/Dll/.svn/text-base/MP3export.pas.svn-base new file mode 100644 index 0000000..ab55bba --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/MP3export.pas.svn-base @@ -0,0 +1,303 @@ +unit MP3export; + +interface + +Uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, +Forms, Dialogs, StdCtrls; + +type +//type definitions +//typedef unsigned long HBE_STREAM; +//typedef HBE_STREAM *PHBE_STREAM; +//typedef unsigned long BE_ERR; + THBE_STREAM = LongWord; + PHBE_STREAM = ^PHBE_STREAM; + BE_ERR = LongWord; + +const +// encoding formats +//#define BE_CONFIG_MP3 0 +//#define BE_CONFIG_LAME 256 + BE_CONFIG_MP3 = 0; + BE_CONFIG_LAME = 256; + + +// error codes +//#define BE_ERR_SUCCESSFUL 0x00000000 +//#define BE_ERR_INVALID_FORMAT 0x00000001 +//#define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002 +//#define BE_ERR_NO_MORE_HANDLES 0x00000003 +//#define BE_ERR_INVALID_HANDLE 0x00000004 +BE_ERR_SUCCESSFUL: LongWord = 0; +BE_ERR_INVALID_FORMAT: LongWord = 1; +BE_ERR_INVALID_FORMAT_PARAMETERS: LongWord = 2; +BE_ERR_NO_MORE_HANDLES: LongWord = 3; +BE_ERR_INVALID_HANDLE: LongWord = 4; + +// other constants + +BE_MAX_HOMEPAGE = 256; + +// format specific variables + +BE_MP3_MODE_STEREO = 0; +BE_MP3_MODE_DUALCHANNEL = 2; +BE_MP3_MODE_MONO = 3; + +type + + TMP3 = packed record + dwSampleRate : LongWord; + byMode : Byte; + wBitRate : Word; + bPrivate : LongWord; + bCRC : LongWord; + bCopyright : LongWord; + bOriginal : LongWord; + end; + + TLHV1 = packed record + // STRUCTURE INFORMATION + dwStructVersion: DWORD; + dwStructSize: DWORD; + + // BASIC ENCODER SETTINGS + dwSampleRate: DWORD; // ALLOWED SAMPLERATE VALUES DEPENDS ON dwMPEGVersion + dwReSampleRate: DWORD; // DOWNSAMPLERATE, 0=ENCODER DECIDES + nMode: Integer; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO + dwBitrate: DWORD; // CBR bitrate, VBR min bitrate + dwMaxBitrate: DWORD; // CBR ignored, VBR Max bitrate + nQuality: Integer; // Quality setting (NORMAL,HIGH,LOW,VOICE) + dwMpegVersion: DWORD; // MPEG-1 OR MPEG-2 + dwPsyModel: DWORD; // FUTURE USE, SET TO 0 + dwEmphasis: DWORD; // FUTURE USE, SET TO 0 + + // BIT STREAM SETTINGS + bPrivate: LONGBOOL; // Set Private Bit (TRUE/FALSE) + bCRC: LONGBOOL; // Insert CRC (TRUE/FALSE) + bCopyright: LONGBOOL; // Set Copyright Bit (TRUE/FALSE) + bOriginal: LONGBOOL; // Set Original Bit (TRUE/FALSE_ + + // VBR STUFF + bWriteVBRHeader: LONGBOOL; // WRITE XING VBR HEADER (TRUE/FALSE) + bEnableVBR: LONGBOOL; // USE VBR ENCODING (TRUE/FALSE) + nVBRQuality: Integer; // VBR QUALITY 0..9 + + btReserved: array[0..255] of Byte; // FUTURE USE, SET TO 0 + end; + + TAAC = packed record + dwSampleRate : LongWord; + byMode : Byte; + wBitRate : Word; + byEncodingMethod : Byte; + end; + + TFormat = packed record + case byte of + 1 : (mp3 : TMP3); + 2 : (lhv1 : TLHV1); + 3 : (aac : TAAC); + end; + + TBE_Config = packed record + dwConfig : LongWord; + format : TFormat; + end; + + + PBE_Config = ^TBE_Config; + +//typedef struct { +// // BladeEnc DLL Version number +// +// BYTE byDLLMajorVersion; +// BYTE byDLLMinorVersion; +// +// // BladeEnc Engine Version Number +// +// BYTE byMajorVersion; +// BYTE byMinorVersion; +// +// // DLL Release date +// +// BYTE byDay; +// BYTE byMonth; +// WORD wYear; +// +// // BladeEnc Homepage URL +// +// CHAR zHomepage[BE_MAX_HOMEPAGE + 1]; +// +//} BE_VERSION, *PBE_VERSION; + + TBE_Version = record + byDLLMajorVersion : Byte; + byDLLMinorVersion : Byte; + + byMajorVersion : Byte; + byMinorVersion : Byte; + + byDay : Byte; + byMonth : Byte; + wYear : Word; + + zHomePage : Array[0..BE_MAX_HOMEPAGE + 1] of Char; + end; + + PBE_Version = ^TBE_Version; + +//__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream); +//__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput); +//__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); +//__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream); +//__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion); + +{ +Function beInitStream(var pbeConfig: TBE_CONFIG; var dwSample: LongWord; var dwBufferSize: LongWord; var phbeStream: THBE_STREAM ): BE_Err; cdecl; external 'Bladeenc.dll'; +//Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; pSample: PSmallInt;pOutput: PByte; var pdwOutput: LongWord): BE_Err; cdecl; external 'Bladeenc.dll'; +Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; var pSample;var pOutput; var pdwOutput: LongWord): BE_Err; stdcall; cdecl 'Bladeenc.dll'; +Function beDeinitStream(hbeStream: THBE_STREAM; var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Bladeenc.dll'; +Function beCloseStream(hbeStream: THBE_STREAM): BE_Err; cdecl; external 'Bladeenc.dll'; +Procedure beVersion(var pbeVersion: TBE_VERSION); cdecl; external 'Bladeenc.dll'; +} + +Function beInitStream(var pbeConfig: TBE_CONFIG; var dwSample: LongWord; var dwBufferSize: LongWord; var phbeStream: THBE_STREAM ): BE_Err; cdecl; external 'Lame_enc.dll'; +//Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; pSample: PSmallInt;pOutput: PByte; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; +Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; var pSample;var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; +Function beDeinitStream(hbeStream: THBE_STREAM; var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; +Function beCloseStream(hbeStream: THBE_STREAM): BE_Err; cdecl; external 'Lame_enc.dll'; +Procedure beVersion(var pbeVersion: TBE_VERSION); cdecl; external 'Lame_enc.dll'; + +Procedure EncodeWavToMP3(fs, fd: Integer); +implementation + +Uses InternetSnd, TraiteWav; + +{----------------------------------------} +Procedure EncodeWavToMP3(fs, fd: Integer); +var + err: Integer; + beConfig: TBE_Config; + dwSamples, dwSamplesMP3 : LongWord; + hbeStream : THBE_STREAM; + error: BE_ERR; + pBuffer: PSmallInt; + pMP3Buffer: PByte; + Marque:PChar; + + done: LongWord; + dwWrite: LongWord; + ToRead: LongWord; + ToWrite: LongWord; + i:Integer; + +begin + beConfig.dwConfig := BE_CONFIG_LAME; + +{ + beConfig.Format.mp3.dwSampleRate := WavInfo.SamplesPerSec; + beConfig.Format.mp3.byMode := BE_MP3_MODE_STEREO; + beConfig.Format.mp3.wBitrate := strToInt(MainFrm.Mp3BitRate.Text); + beConfig.Format.mp3.bCopyright := 0; + beConfig.Format.mp3.bCRC := $00000000; + beConfig.Format.mp3.bOriginal := 0; + beConfig.Format.mp3.bPrivate := 0; +} +//Structure information + beConfig.Format.lhv1.dwStructVersion := 1; + beConfig.Format.lhv1.dwStructSize := SizeOf(beConfig); +//Basic encoder setting + beConfig.Format.lhv1.dwSampleRate := WavInfo.SamplesPerSec; + beConfig.Format.lhv1.dwReSampleRate := 44100; + beConfig.Format.lhv1.nMode := BE_MP3_MODE_STEREO; + beConfig.Format.lhv1.dwBitrate := strToInt(MainFrm.Mp3BitRate.Text); + beConfig.Format.lhv1.dwMaxBitrate := strToInt(MainFrm.Mp3BitRate.Text); + beConfig.Format.lhv1.nQuality := 2; + beConfig.Format.lhv1.dwMPegVersion := 1; //MPEG1 + beConfig.Format.lhv1.dwPsyModel := 0; + beConfig.Format.lhv1.dwEmphasis := 0; +//Bit Stream Settings + beConfig.Format.lhv1.bPrivate := False; + beConfig.Format.lhv1.bCRC := False; + beConfig.Format.lhv1.bCopyright := True; + beConfig.Format.lhv1.bOriginal := True; +//VBR Stuff + beConfig.Format.lhv1.bWriteVBRHeader := false; + beConfig.Format.lhv1.bEnableVBR := false; + beConfig.Format.lhv1.nVBRQuality := 0; + + i := 0; + error := beInitStream(beConfig, dwSamples, dwSamplesMP3, hbeStream); + if error = BE_ERR_SUCCESSFUL + then begin + pBuffer := AllocMem(dwSamples*2); + pMP3Buffer := AllocMem(dwSamplesMP3); + try + done := 0; + + error := FileSeek(fs, 0, 0); + While (done < TotalSize) do + begin + if (done + dwSamples*2 < TotalSize) + then ToRead := dwSamples*2 + else begin + ToRead := TotalSize-done; + //FillChar(buf[0],dwSamples*2,0); + FillChar(pbuffer^,dwSamples,0); + end; + + //if FileRead(fs, buf[0], toread) = -1 + if FileRead(fs, pbuffer^, toread) = -1 + then raise Exception.Create('Erreur de lecture'); + + //error := beEncodeChunk(hbeStream, toRead div 2, Buf[0], TmpBuf[0], toWrite); + error := beEncodeChunk(hbeStream, toRead div 2, pBuffer^, pMP3Buffer^, toWrite); + + if error <> BE_ERR_SUCCESSFUL + then begin + beCloseStream(hbeStream); + raise Exception.Create('Echec de l''encodage'); + end; + + //if FileWrite(fd, TmpBuf[0], toWrite) = -1 + if FileWrite(fd, pMP3Buffer^, toWrite) = -1 + then raise Exception.Create('Erreur d''�criture'); + + done := done + toread; + inc(i); + if i mod 64 = 0 + then begin + MainFrm.ProgressBar1.Position := round(100*done/Totalsize); + Application.ProcessMessages; + end; + end; + + error := beDeInitStream(hbeStream, pMP3Buffer^, dwWrite); + //error := beDeInitStream(hbeStream, TmpBuf[0], dwWrite); + + if error <> BE_ERR_SUCCESSFUL + then begin + beCloseStream(hbeStream); + raise Exception.Create('Echec � la sortie'); + end; + + if dwWrite <> 0 + then begin + //if FileWrite(fd, TmpBuf[0], dwWrite) = -1 + if FileWrite(fd, pMP3Buffer^, dwWrite) = -1 + then raise Exception.Create('Erreur � la derni�re �criture'); + end; + + beCloseStream(hbeStream); + finally + FreeMem(pBuffer); + FreeMem(pMP3Buffer); + end; + end + else begin + + end; +end; + +end. diff --git a/lame-3.97/Dll/.svn/text-base/Makefile.am.svn-base b/lame-3.97/Dll/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..f012883 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,15 @@ +## $Id: Makefile.am,v 1.8 2005/08/21 17:32:09 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = BladeMP3EncDLL.c \ + BladeMP3EncDLL.def \ + BladeMP3EncDLL.h \ + Example.cpp \ + Example_vc6.dsp \ + Example_vc6.dsw \ + LameDLLInterface.htm \ + LameDll_vc6.dsp \ + LameDll_vc7.vcproj \ + MP3export.pas \ + Makefile.mingw32 diff --git a/lame-3.97/Dll/.svn/text-base/Makefile.in.svn-base b/lame-3.97/Dll/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..2207e73 --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,359 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = Dll +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = BladeMP3EncDLL.c \ + BladeMP3EncDLL.def \ + BladeMP3EncDLL.h \ + Example.cpp \ + Example_vc6.dsp \ + Example_vc6.dsw \ + LameDLLInterface.htm \ + LameDll_vc6.dsp \ + LameDll_vc7.vcproj \ + MP3export.pas \ + Makefile.mingw32 + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Dll/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Dll/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/Dll/.svn/text-base/Makefile.mingw32.svn-base b/lame-3.97/Dll/.svn/text-base/Makefile.mingw32.svn-base new file mode 100644 index 0000000..3f35caf --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/Makefile.mingw32.svn-base @@ -0,0 +1,39 @@ +# This makefile compiles lame_enc.dll with mingw32 (and possibly cygwin) +# Of course, you must first build ../libmp3lame/libmp3lame.a. +# liblame_enc.a can be used to link the lame_enc.dll to your programs. +# Tested with EAC 0.9pb9 (my own favorite, http://www.exactaudiocopy.de/) +# example.exe compiles and works, too. +# Vladislav Naumov, +# +# PS: to 'make clean' you need rm. MS's del is unusable. +# PPS: quick build: +# make -fMakefile.mingw32 + +DLL_NAME = lame_enc +LAME_SRC_ROOT = .. +OFILES = BladeMP3EncDLL.o $(DLL_NAME)_exp.o +CFLAGS = -I$(LAME_SRC_ROOT)/include -I$(LAME_SRC_ROOT)/libmp3lame +CC = gcc +LD = gcc +LFLAGS = -L$(LAME_SRC_ROOT)/libmp3lame -o $(DLL_NAME).dll -mdll -s +LIBS = -lmp3lame + +all: $(DLL_NAME).dll example.exe + +BladeMP3EncDLL.o: BladeMP3EncDLL.c BladeMP3EncDLL.h ../include/lame.h \ + ../libmp3lame/lame_global_flags.h ../libmp3lame/version.h + +$(DLL_NAME).dll : $(OFILES) + $(LD) $(LFLAGS) $(OFILES) $(LIBS) + +$(DLL_NAME)_exp.o : BladeMP3EncDLL.o + dlltool --input-def BladeMP3EncDLL.def --output-lib lib$(DLL_NAME).a --output-exp $(DLL_NAME)_exp.o --dllname $(DLL_NAME) BladeMP3EncDLL.o + +%.o : %.c + $(CC) $(CFLAGS) -c $< -o $@ + +example.exe : Example.cpp BladeMP3EncDLL.h + gcc Example.cpp -o example.exe + +clean : + rm -f $(DLL_NAME).dll $(OFILES) example.exe diff --git a/lame-3.97/Dll/.svn/text-base/README.svn-base b/lame-3.97/Dll/.svn/text-base/README.svn-base new file mode 100644 index 0000000..ed8467a --- /dev/null +++ b/lame-3.97/Dll/.svn/text-base/README.svn-base @@ -0,0 +1,21 @@ + +This directory contains a Windows DLL interface to the LAME +encoding engine. + +This DLL is compatible with the BladeEnc.dll. +See BladeMP3EncDLL.c for details of the calling +sequence, and BladeMP3EncDLL.h for details of the +data that must be passed to the DLL. + +As of yet, there is no other documentation. + +To use this DLL as a replacement for BladeEnc.dll, you +need to populate the 'mp3' struct. + +To use more advanced features of LAME, you need to +populate the LHV1 struct instead. + +Delphi 4 Users: Gabriel G�lin has +contributed a .PAS file, do you can access the DLL from +Delphi. See MP3export.pas. + diff --git a/lame-3.97/Dll/BladeMP3EncDLL.c b/lame-3.97/Dll/BladeMP3EncDLL.c new file mode 100644 index 0000000..5b20e6c --- /dev/null +++ b/lame-3.97/Dll/BladeMP3EncDLL.c @@ -0,0 +1,916 @@ +/* + * Blade DLL Interface for LAME. + * + * Copyright (c) 1999 - 2002 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include "BladeMP3EncDLL.h" +#include + +#include "lame.h" +#include "config.h" +// sample_t should not be needed by any libmp3lame wrapper: +//#include "machine.h" /* for sample_t type */ + + +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#define Max(A, B) ((A) > (B) ? (A) : (B)) + +#define _RELEASEDEBUG 0 + +// lame_enc DLL version number +const int MAJORVERSION = 1; +const int MINORVERSION = 32; + + +// Local variables +static DWORD dwSampleBufferSize=0; +static HANDLE gs_hModule=NULL; +static BOOL gs_bLogFile=FALSE; +static lame_global_flags* gfp_save = NULL; + +// Local function prototypes +static void dump_config( lame_global_flags* gfp ); +static void DebugPrintf( const char* pzFormat, ... ); +static void DispErr( LPSTR strErr ); +static void PresetOptions( lame_global_flags *gfp, LONG myPreset ); + + +static void DebugPrintf(const char* pzFormat, ...) +{ + char szBuffer[1024]={'\0',}; + char szFileName[MAX_PATH+1]={'\0',}; + va_list ap; + + // Get the full module (DLL) file name + GetModuleFileName( gs_hModule, + szFileName, + sizeof( szFileName ) ); + + // change file name extention + szFileName[ strlen(szFileName) - 3 ] = 't'; + szFileName[ strlen(szFileName) - 2 ] = 'x'; + szFileName[ strlen(szFileName) - 1 ] = 't'; + + // start at beginning of the list + va_start(ap, pzFormat); + + // copy it to the string buffer + _vsnprintf(szBuffer, sizeof(szBuffer), pzFormat, ap); + + // log it to the file? + if ( gs_bLogFile ) + { + FILE* fp = NULL; + + // try to open the log file + fp=fopen( szFileName, "a+" ); + + // check file open result + if (fp) + { + // write string to the file + fputs(szBuffer,fp); + + // close the file + fclose(fp); + } + } + +#if defined _DEBUG || defined _RELEASEDEBUG + OutputDebugString( szBuffer ); +#endif + + va_end(ap); +} + + +static void PresetOptions( lame_global_flags *gfp, LONG myPreset ) +{ + switch (myPreset) + { +/*-1*/ case LQP_NOPRESET: + break; + +/*0*/ case LQP_NORMAL_QUALITY: + /* lame_set_quality( gfp, 5 );*/ + break; + +/*1*/ case LQP_LOW_QUALITY: + lame_set_quality( gfp, 9 ); + break; + +/*2*/ case LQP_HIGH_QUALITY: + lame_set_quality( gfp, 2 ); + break; + +/*3*/ case LQP_VOICE_QUALITY: // --voice flag for experimental voice mode + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 56); + break; + +/*4*/ case LQP_R3MIX: // --R3MIX + lame_set_preset( gfp, R3MIX); + break; + +/*5*/ case LQP_VERYHIGH_QUALITY: + lame_set_quality( gfp, 0 ); + break; + +/*6*/ case LQP_STANDARD: // --PRESET STANDARD + lame_set_preset( gfp, STANDARD); + break; + +/*7*/ case LQP_FAST_STANDARD: // --PRESET FAST STANDARD + lame_set_preset( gfp, STANDARD_FAST); + break; + +/*8*/ case LQP_EXTREME: // --PRESET EXTREME + lame_set_preset( gfp, EXTREME); + break; + +/*9*/ case LQP_FAST_EXTREME: // --PRESET FAST EXTREME: + lame_set_preset( gfp, EXTREME_FAST); + break; + +/*10*/ case LQP_INSANE: // --PRESET INSANE + lame_set_preset( gfp, INSANE); + break; + +/*11*/ case LQP_ABR: // --PRESET ABR + // handled in beInitStream + break; + +/*12*/ case LQP_CBR: // --PRESET CBR + // handled in beInitStream + break; + +/*13*/ case LQP_MEDIUM: // --PRESET MEDIUM + lame_set_preset( gfp, MEDIUM); + break; + +/*14*/ case LQP_FAST_MEDIUM: // --PRESET FAST MEDIUM + lame_set_preset( gfp, MEDIUM_FAST); + break; + +/*1000*/ case LQP_PHONE: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 16); + break; + +/*2000*/ case LQP_SW: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 24); + break; + +/*3000*/ case LQP_AM: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 40); + break; + +/*4000*/ case LQP_FM: + lame_set_preset( gfp, 112); + break; + +/*5000*/ case LQP_VOICE: + lame_set_mode( gfp, MONO ); + lame_set_preset( gfp, 56); + break; + +/*6000*/ case LQP_RADIO: + lame_set_preset( gfp, 112); + break; + +/*7000*/ case LQP_TAPE: + lame_set_preset( gfp, 112); + break; + +/*8000*/ case LQP_HIFI: + lame_set_preset( gfp, 160); + break; + +/*9000*/ case LQP_CD: + lame_set_preset( gfp, 192); + break; + +/*10000*/ case LQP_STUDIO: + lame_set_preset( gfp, 256); + break; + + } +} + + +__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream) +{ + int actual_bitrate; +//2001-12-18 + int nDllArgC = 0; + BE_CONFIG lameConfig = { 0, }; + int nInitReturn = 0; + lame_global_flags* gfp = NULL; + + // Init the global flags structure + gfp = lame_init(); + *phbeStream = (HBE_STREAM)gfp; + + // clear out structure + memset(&lameConfig,0x00,CURRENT_STRUCT_SIZE); + + // Check if this is a regular BLADE_ENCODER header + if (pbeConfig->dwConfig!=BE_CONFIG_LAME) + { + int nCRC=pbeConfig->format.mp3.bCRC; + int nVBR=(nCRC>>12)&0x0F; + + // Copy parameter from old Blade structure + lameConfig.format.LHV1.dwSampleRate =pbeConfig->format.mp3.dwSampleRate; + //for low bitrates, LAME will automatically downsample for better + //sound quality. Forcing output samplerate = input samplerate is not a good idea + //unless the user specifically requests it: + //lameConfig.format.LHV1.dwReSampleRate=pbeConfig->format.mp3.dwSampleRate; + lameConfig.format.LHV1.nMode =(pbeConfig->format.mp3.byMode&0x0F); + lameConfig.format.LHV1.dwBitrate =pbeConfig->format.mp3.wBitrate; + lameConfig.format.LHV1.bPrivate =pbeConfig->format.mp3.bPrivate; + lameConfig.format.LHV1.bOriginal =pbeConfig->format.mp3.bOriginal; + lameConfig.format.LHV1.bCRC =nCRC&0x01; + lameConfig.format.LHV1.bCopyright =pbeConfig->format.mp3.bCopyright; + + // Fill out the unknowns + lameConfig.format.LHV1.dwStructSize=CURRENT_STRUCT_SIZE; + lameConfig.format.LHV1.dwStructVersion=CURRENT_STRUCT_VERSION; + + // Get VBR setting from fourth nibble + if ( nVBR>0 ) + { + lameConfig.format.LHV1.bWriteVBRHeader = TRUE; + lameConfig.format.LHV1.bEnableVBR = TRUE; + lameConfig.format.LHV1.nVBRQuality = nVBR-1; + } + + // Get Quality from third nibble + lameConfig.format.LHV1.nPreset=((nCRC>>8)&0x0F); + + } + else + { + // Copy the parameters + memcpy(&lameConfig,pbeConfig,pbeConfig->format.LHV1.dwStructSize); + } + + // --------------- Set arguments to LAME encoder ------------------------- + + // Set input sample frequency + lame_set_in_samplerate( gfp, lameConfig.format.LHV1.dwSampleRate ); + + // disable INFO/VBR tag by default. + // if this tag is used, the calling program must call beWriteVBRTag() + // after encoding. But the original DLL documentation does not + // require the + // app to call beWriteVBRTag() unless they have specifically + // set LHV1.bWriteVBRHeader=TRUE. Thus the default setting should + // be disabled. + lame_set_bWriteVbrTag( gfp, 0 ); + +//2001-12-18 Dibrom's ABR preset stuff + + if(lameConfig.format.LHV1.nPreset == LQP_ABR) // --ALT-PRESET ABR + { + actual_bitrate = lameConfig.format.LHV1.dwVbrAbr_bps / 1000; + + // limit range + if( actual_bitrate > 320) + { + actual_bitrate = 320; + } + + if( actual_bitrate < 8 ) + { + actual_bitrate = 8; + } + + lame_set_preset( gfp, actual_bitrate ); + } + +// end Dibrom's ABR preset 2001-12-18 ****** START OF CBR + + if(lameConfig.format.LHV1.nPreset == LQP_CBR) // --ALT-PRESET CBR + { + actual_bitrate = lameConfig.format.LHV1.dwBitrate; + lame_set_preset(gfp, actual_bitrate); + lame_set_VBR(gfp, vbr_off); + } + +// end Dibrom's CBR preset 2001-12-18 + + // The following settings only used when preset is not one of the LAME QUALITY Presets + if ( (int)lameConfig.format.LHV1.nPreset < (int) LQP_STANDARD ) + { + switch ( lameConfig.format.LHV1.nMode ) + { + case BE_MP3_MODE_STEREO: + lame_set_mode( gfp, STEREO ); + lame_set_num_channels( gfp, 2 ); + break; + case BE_MP3_MODE_JSTEREO: + lame_set_mode( gfp, JOINT_STEREO ); + lame_set_num_channels( gfp, 2 ); + break; + case BE_MP3_MODE_MONO: + lame_set_mode( gfp, MONO ); + lame_set_num_channels( gfp, 1 ); + break; + case BE_MP3_MODE_DUALCHANNEL: //warning: there is NO dual channel option working in Lame + lame_set_force_ms( gfp, 1 ); + lame_set_mode( gfp, STEREO ); + lame_set_num_channels( gfp, 2 ); + break; + default: + { + DebugPrintf("Invalid lameConfig.format.LHV1.nMode, value is %d\n",lameConfig.format.LHV1.nMode); + return BE_ERR_INVALID_FORMAT_PARAMETERS; + } + } + + if ( lameConfig.format.LHV1.bEnableVBR ) + { + /* set VBR quality */ + lame_set_VBR_q( gfp, lameConfig.format.LHV1.nVBRQuality ); + + /* select proper VBR method */ + switch ( lameConfig.format.LHV1.nVbrMethod) + { + case VBR_METHOD_NONE: + lame_set_VBR( gfp, vbr_off ); + break; + + case VBR_METHOD_DEFAULT: + lame_set_VBR( gfp, vbr_default ); + break; + + case VBR_METHOD_OLD: + lame_set_VBR( gfp, vbr_rh ); + break; + + case VBR_METHOD_MTRH: + case VBR_METHOD_NEW: + /* + * the --vbr-mtrh commandline switch is obsolete. + * now --vbr-mtrh is known as --vbr-new + */ + lame_set_VBR( gfp, vbr_mtrh ); + break; + + case VBR_METHOD_ABR: + lame_set_VBR( gfp, vbr_abr ); + break; + + default: + /* unsupported VBR method */ + assert( FALSE ); + } + } + else + { + /* use CBR encoding method, so turn off VBR */ + lame_set_VBR( gfp, vbr_off ); + } + + /* Set bitrate. (CDex users always specify bitrate=Min bitrate when using VBR) */ + lame_set_brate( gfp, lameConfig.format.LHV1.dwBitrate ); + + /* check if we have to use ABR, in order to backwards compatible, this + * condition should still be checked indepedent of the nVbrMethod method + */ + if (lameConfig.format.LHV1.dwVbrAbr_bps > 0 ) + { + /* set VBR method to ABR */ + lame_set_VBR( gfp, vbr_abr ); + + /* calculate to kbps, round to nearest kbps */ + lame_set_VBR_mean_bitrate_kbps( gfp, ( lameConfig.format.LHV1.dwVbrAbr_bps + 500 ) / 1000 ); + + /* limit range */ + if( lame_get_VBR_mean_bitrate_kbps( gfp ) > 320) + { + lame_set_VBR_mean_bitrate_kbps( gfp, 320 ); + } + + if( lame_get_VBR_mean_bitrate_kbps( gfp ) < 8 ) + { + lame_set_VBR_mean_bitrate_kbps( gfp, 8 ); + } + } + + } + + // First set all the preset options + if ( LQP_NOPRESET != lameConfig.format.LHV1.nPreset ) + { + PresetOptions( gfp, lameConfig.format.LHV1.nPreset ); + } + + + // Set frequency resampling rate, if specified + if ( lameConfig.format.LHV1.dwReSampleRate > 0 ) + { + lame_set_out_samplerate( gfp, lameConfig.format.LHV1.dwReSampleRate ); + } + + + switch ( lameConfig.format.LHV1.nMode ) + { + case BE_MP3_MODE_MONO: + lame_set_mode( gfp, MONO ); + lame_set_num_channels( gfp, 1 ); + break; + + default: + break; + } + + + // Use strict ISO encoding? + lame_set_strict_ISO( gfp, ( lameConfig.format.LHV1.bStrictIso ) ? 1 : 0 ); + + // Set copyright flag? + if ( lameConfig.format.LHV1.bCopyright ) + { + lame_set_copyright( gfp, 1 ); + } + + // Do we have to tag it as non original + if ( !lameConfig.format.LHV1.bOriginal ) + { + lame_set_original( gfp, 0 ); + } + else + { + lame_set_original( gfp, 1 ); + } + + // Add CRC? + if ( lameConfig.format.LHV1.bCRC ) + { + lame_set_error_protection( gfp, 1 ); + } + else + { + lame_set_error_protection( gfp, 0 ); + } + + // Set private bit? + if ( lameConfig.format.LHV1.bPrivate ) + { + lame_set_extension( gfp, 1 ); + } + else + { + lame_set_extension( gfp, 0 ); + } + + + // Set VBR min bitrate, if specified + if ( lameConfig.format.LHV1.dwBitrate > 0 ) + { + lame_set_VBR_min_bitrate_kbps( gfp, lameConfig.format.LHV1.dwBitrate ); + } + + // Set Maxbitrate, if specified + if ( lameConfig.format.LHV1.dwMaxBitrate > 0 ) + { + lame_set_VBR_max_bitrate_kbps( gfp, lameConfig.format.LHV1.dwMaxBitrate ); + } + // Set bit resovoir option + if ( lameConfig.format.LHV1.bNoRes ) + { + lame_set_disable_reservoir( gfp,1 ); + lame_set_padding_type( gfp, PAD_NO ); + } + + // check if the VBR tag is required + if ( lameConfig.format.LHV1.bWriteVBRHeader) + { + lame_set_bWriteVbrTag( gfp, 1 ); + } + else + { + lame_set_bWriteVbrTag( gfp, 0 ); + } + + // Override Quality setting, use HIGHBYTE = NOT LOWBYTE to be backwards compatible + if ( ( lameConfig.format.LHV1.nQuality & 0xFF ) == + ((~( lameConfig.format.LHV1.nQuality >> 8 )) & 0xFF) ) + { + lame_set_quality( gfp, lameConfig.format.LHV1.nQuality & 0xFF ); + } + + if ( 0 != ( nInitReturn = lame_init_params( gfp ) ) ) + { + return nInitReturn; + } + + //LAME encoding call will accept any number of samples. + if ( 0 == lame_get_version( gfp ) ) + { + // For MPEG-II, only 576 samples per frame per channel + *dwSamples= 576 * lame_get_num_channels( gfp ); + } + else + { + // For MPEG-I, 1152 samples per frame per channel + *dwSamples= 1152 * lame_get_num_channels( gfp ); + } + + // Set the input sample buffer size, so we know what we can expect + dwSampleBufferSize = *dwSamples; + + // Set MP3 buffer size, conservative estimate + *dwBufferSize=(DWORD)( 1.25 * ( *dwSamples / lame_get_num_channels( gfp ) ) + 7200 ); + + // For debugging purposes + dump_config( gfp ); + + // Everything went OK, thus return SUCCESSFUL + return BE_ERR_SUCCESSFUL; +} + + + +__declspec(dllexport) BE_ERR beFlushNoGap(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput) +{ + int nOutputSamples = 0; + + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + // Init the global flags structure + nOutputSamples = lame_encode_flush_nogap( gfp, pOutput, LAME_MAXMP3BUFFER ); + + if ( nOutputSamples < 0 ) + { + *pdwOutput = 0; + return BE_ERR_BUFFER_TOO_SMALL; + } + else + { + *pdwOutput = nOutputSamples; + } + + return BE_ERR_SUCCESSFUL; +} + +__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput) +{ + int nOutputSamples = 0; + + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + nOutputSamples = lame_encode_flush( gfp, pOutput, 0 ); + + if ( nOutputSamples < 0 ) + { + *pdwOutput = 0; + return BE_ERR_BUFFER_TOO_SMALL; + } + else + { + *pdwOutput = nOutputSamples; + } + + return BE_ERR_SUCCESSFUL; +} + + +__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream) +{ + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + // lame will be close in VbrWriteTag function + if ( !lame_get_bWriteVbrTag( gfp ) ) + { + // clean up of allocated memory + lame_close( gfp ); + + gfp_save = NULL; + } + else + { + gfp_save = (lame_global_flags*)hbeStream; + } + + // DeInit encoder + return BE_ERR_SUCCESSFUL; +} + + + +__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion) +{ + // DLL Release date + char lpszDate[20] = { '\0', }; + char lpszTemp[5] = { '\0', }; + lame_version_t lv = { 0, }; + + + // Set DLL interface version + pbeVersion->byDLLMajorVersion=MAJORVERSION; + pbeVersion->byDLLMinorVersion=MINORVERSION; + + get_lame_version_numerical ( &lv ); + + // Set Engine version number (Same as Lame version) + pbeVersion->byMajorVersion = lv.major; + pbeVersion->byMinorVersion = lv.minor; + pbeVersion->byAlphaLevel = lv.alpha; + pbeVersion->byBetaLevel = lv.beta; + +#ifdef MMX_choose_table + pbeVersion->byMMXEnabled=1; +#else + pbeVersion->byMMXEnabled=0; +#endif + + memset( pbeVersion->btReserved, 0, sizeof( pbeVersion->btReserved ) ); + + // Get compilation date + strcpy(lpszDate,__DATE__); + + // Get the first three character, which is the month + strncpy(lpszTemp,lpszDate,3); + lpszTemp[3] = '\0'; + pbeVersion->byMonth=1; + + // Set month + if (strcmp(lpszTemp,"Jan")==0) pbeVersion->byMonth = 1; + if (strcmp(lpszTemp,"Feb")==0) pbeVersion->byMonth = 2; + if (strcmp(lpszTemp,"Mar")==0) pbeVersion->byMonth = 3; + if (strcmp(lpszTemp,"Apr")==0) pbeVersion->byMonth = 4; + if (strcmp(lpszTemp,"May")==0) pbeVersion->byMonth = 5; + if (strcmp(lpszTemp,"Jun")==0) pbeVersion->byMonth = 6; + if (strcmp(lpszTemp,"Jul")==0) pbeVersion->byMonth = 7; + if (strcmp(lpszTemp,"Aug")==0) pbeVersion->byMonth = 8; + if (strcmp(lpszTemp,"Sep")==0) pbeVersion->byMonth = 9; + if (strcmp(lpszTemp,"Oct")==0) pbeVersion->byMonth = 10; + if (strcmp(lpszTemp,"Nov")==0) pbeVersion->byMonth = 11; + if (strcmp(lpszTemp,"Dec")==0) pbeVersion->byMonth = 12; + + // Get day of month string (char [4..5]) + pbeVersion->byDay=atoi( lpszDate + 4 ); + + // Get year of compilation date (char [7..10]) + pbeVersion->wYear = atoi( lpszDate + 7 ); + + memset( pbeVersion->zHomepage, 0x00, BE_MAX_HOMEPAGE ); + + strcpy( pbeVersion->zHomepage, "http://www.mp3dev.org/" ); +} + +__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, + PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput) +{ + // Encode it + int dwSamples; + int nOutputSamples = 0; + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + dwSamples = nSamples / lame_get_num_channels( gfp ); + + // old versions of lame_enc.dll required exactly 1152 samples + // and worked even if nSamples accidently set to 2304 + // simulate this behavoir: + if ( 1 == lame_get_num_channels( gfp ) && nSamples == 2304) + { + dwSamples/= 2; + } + + + if ( 1 == lame_get_num_channels( gfp ) ) + { + nOutputSamples = lame_encode_buffer(gfp,pSamples,pSamples,dwSamples,pOutput,0); + } + else + { + nOutputSamples = lame_encode_buffer_interleaved(gfp,pSamples,dwSamples,pOutput,0); + } + + + if ( nOutputSamples < 0 ) + { + *pdwOutput=0; + return BE_ERR_BUFFER_TOO_SMALL; + } + else + { + *pdwOutput = (DWORD)nOutputSamples; + } + + return BE_ERR_SUCCESSFUL; +} + + +// accept floating point audio samples, scaled to the range of a signed 16-bit +// integer (within +/- 32768), in non-interleaved channels -- DSPguru, jd +__declspec(dllexport) BE_ERR beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, DWORD nSamples, + PFLOAT buffer_l, PFLOAT buffer_r, PBYTE pOutput, PDWORD pdwOutput) +{ + int nOutputSamples; + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + nOutputSamples = lame_encode_buffer_float(gfp,buffer_l,buffer_r,nSamples,pOutput,0); + + if ( nOutputSamples >= 0 ) + { + *pdwOutput = (DWORD) nOutputSamples; + } + else + { + *pdwOutput=0; + return BE_ERR_BUFFER_TOO_SMALL; + } + + return BE_ERR_SUCCESSFUL; +} + +__declspec(dllexport) BE_ERR beWriteInfoTag( HBE_STREAM hbeStream, + LPCSTR lpszFileName ) +{ + FILE* fpStream = NULL; + BE_ERR beResult = BE_ERR_SUCCESSFUL; + + lame_global_flags* gfp = (lame_global_flags*)hbeStream; + + if ( NULL != gfp ) + { + // Do we have to write the VBR tag? + if ( lame_get_bWriteVbrTag( gfp ) ) + { + + // Try to open the file + fpStream=fopen( lpszFileName, "rb+" ); + + // Check file open result + if ( NULL == fpStream ) + { + beResult = BE_ERR_INVALID_FORMAT_PARAMETERS; + } + else + { + // Write Xing header again + lame_mp3_tags_fid( gfp, fpStream ); + + // Close the file stream + fclose( fpStream ); + } + + // clean up of allocated memory + lame_close( gfp ); + } + } + else + { + beResult = BE_ERR_INVALID_FORMAT_PARAMETERS; + } + + // return result + return beResult; +} + +// for backwards compatiblity +__declspec(dllexport) BE_ERR beWriteVBRHeader(LPCSTR lpszFileName) +{ + return beWriteInfoTag( (HBE_STREAM)gfp_save, lpszFileName ); +} + + +BOOL APIENTRY DllMain(HANDLE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved) +{ + gs_hModule=hModule; + + switch( ul_reason_for_call ) + { + case DLL_PROCESS_ATTACH: + // Enable debug/logging? + gs_bLogFile = GetPrivateProfileInt("Debug","WriteLogFile",gs_bLogFile,"lame_enc.ini"); + break; + case DLL_THREAD_ATTACH: + break; + case DLL_THREAD_DETACH: + break; + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + + +static void dump_config( lame_global_flags* gfp ) +{ + DebugPrintf("\n\nLame_enc configuration options:\n"); + DebugPrintf("==========================================================\n"); + + DebugPrintf("version =%d\n",lame_get_version( gfp ) ); + DebugPrintf("Layer =3\n"); + DebugPrintf("mode ="); + switch ( lame_get_mode( gfp ) ) + { + case STEREO: DebugPrintf( "Stereo\n" ); break; + case JOINT_STEREO: DebugPrintf( "Joint-Stereo\n" ); break; + case DUAL_CHANNEL: DebugPrintf( "Forced Stereo\n" ); break; + case MONO: DebugPrintf( "Mono\n" ); break; + case NOT_SET: /* FALLTROUGH */ + default: DebugPrintf( "Error (unknown)\n" ); break; + } + + DebugPrintf("Input sample rate =%.1f kHz\n", lame_get_in_samplerate( gfp ) /1000.0 ); + DebugPrintf("Output sample rate =%.1f kHz\n", lame_get_out_samplerate( gfp ) /1000.0 ); + + DebugPrintf("bitrate =%d kbps\n", lame_get_brate( gfp ) ); + DebugPrintf("Quality Setting =%d\n", lame_get_quality( gfp ) ); + + DebugPrintf("Low pass frequency =%d\n", lame_get_lowpassfreq( gfp ) ); + DebugPrintf("Low pass width =%d\n", lame_get_lowpasswidth( gfp ) ); + + DebugPrintf("High pass frequency =%d\n", lame_get_highpassfreq( gfp ) ); + DebugPrintf("High pass width =%d\n", lame_get_highpasswidth( gfp ) ); + + DebugPrintf("No short blocks =%d\n", lame_get_no_short_blocks( gfp ) ); + DebugPrintf("Force short blocks =%d\n", lame_get_force_short_blocks( gfp ) ); + + DebugPrintf("de-emphasis =%d\n", lame_get_emphasis( gfp ) ); + DebugPrintf("private flag =%d\n", lame_get_extension( gfp ) ); + + DebugPrintf("copyright flag =%d\n", lame_get_copyright( gfp ) ); + DebugPrintf("original flag =%d\n", lame_get_original( gfp ) ); + DebugPrintf("CRC =%s\n", lame_get_error_protection( gfp ) ? "on" : "off" ); + DebugPrintf("Fast mode =%s\n", ( lame_get_quality( gfp ) )? "enabled" : "disabled" ); + DebugPrintf("Force mid/side stereo =%s\n", ( lame_get_force_ms( gfp ) )?"enabled":"disabled" ); + DebugPrintf("Padding Type =%d\n", lame_get_padding_type( gfp ) ); + DebugPrintf("Disable Reservoir =%d\n", lame_get_disable_reservoir( gfp ) ); + DebugPrintf("Allow diff-short =%d\n", lame_get_allow_diff_short( gfp ) ); + DebugPrintf("Interchannel masking =%f\n", lame_get_interChRatio( gfp ) ); + DebugPrintf("Strict ISO Encoding =%s\n", ( lame_get_strict_ISO( gfp ) ) ?"Yes":"No"); + DebugPrintf("Scale =%5.2f\n", lame_get_scale( gfp ) ); + + DebugPrintf("VBR =%s, VBR_q =%d, VBR method =", + ( lame_get_VBR( gfp ) !=vbr_off ) ? "enabled": "disabled", + lame_get_VBR_q( gfp ) ); + + switch ( lame_get_VBR( gfp ) ) + { + case vbr_off: DebugPrintf( "vbr_off\n" ); break; + case vbr_mt : DebugPrintf( "vbr_mt \n" ); break; + case vbr_rh : DebugPrintf( "vbr_rh \n" ); break; + case vbr_mtrh: DebugPrintf( "vbr_mtrh \n" ); break; + case vbr_abr: + DebugPrintf( "vbr_abr (average bitrate %d kbps)\n", lame_get_VBR_mean_bitrate_kbps( gfp ) ); + break; + default: + DebugPrintf("error, unknown VBR setting\n"); + break; + } + + DebugPrintf("Vbr Min bitrate =%d kbps\n", lame_get_VBR_min_bitrate_kbps( gfp ) ); + DebugPrintf("Vbr Max bitrate =%d kbps\n", lame_get_VBR_max_bitrate_kbps( gfp ) ); + + DebugPrintf("Write VBR Header =%s\n", ( lame_get_bWriteVbrTag( gfp ) ) ?"Yes":"No"); + DebugPrintf("VBR Hard min =%d\n", lame_get_VBR_hard_min( gfp ) ); + + DebugPrintf("ATH Only =%d\n", lame_get_ATHonly( gfp ) ); + DebugPrintf("ATH short =%d\n", lame_get_ATHshort( gfp ) ); + DebugPrintf("ATH no =%d\n", lame_get_noATH( gfp ) ); + DebugPrintf("ATH type =%d\n", lame_get_ATHtype( gfp ) ); + DebugPrintf("ATH lower =%f\n", lame_get_ATHlower( gfp ) ); + DebugPrintf("ATH aa =%d\n", lame_get_athaa_type( gfp ) ); + DebugPrintf("ATH aa loudapprox =%d\n", lame_get_athaa_loudapprox( gfp ) ); + DebugPrintf("ATH aa sensitivity =%f\n", lame_get_athaa_sensitivity( gfp ) ); + + DebugPrintf("Experimental nspsytune =%d\n", lame_get_exp_nspsytune( gfp ) ); + DebugPrintf("Experimental X =%d\n", lame_get_experimentalX( gfp ) ); + DebugPrintf("Experimental Y =%d\n", lame_get_experimentalY( gfp ) ); + DebugPrintf("Experimental Z =%d\n", lame_get_experimentalZ( gfp ) ); +} + + +static void DispErr(LPSTR strErr) +{ + MessageBox(NULL,strErr,"",MB_OK); +} diff --git a/lame-3.97/Dll/BladeMP3EncDLL.def b/lame-3.97/Dll/BladeMP3EncDLL.def new file mode 100644 index 0000000..4a83415 --- /dev/null +++ b/lame-3.97/Dll/BladeMP3EncDLL.def @@ -0,0 +1,36 @@ +LIBRARY lame_enc.DLL +EXPORTS + +beInitStream @1 +beEncodeChunk @2 +beDeinitStream @3 +beCloseStream @4 +beVersion @5 +beWriteVBRHeader @6 +beEncodeChunkFloatS16NI @7 +beFlushNoGap @8 +beWriteInfoTag @9 + +lame_init @100 +lame_close @101 +lame_init_params @102 +lame_encode_buffer_interleaved @110 +lame_encode_flush @120 +lame_mp3_tags_fid @130 + + +lame_set_num_samples @1000 +lame_get_num_samples @1001 +lame_set_in_samplerate @1002 +lame_get_in_samplerate @1003 +lame_set_num_channels @1004 +lame_get_num_channels @1005 +lame_set_scale @1006 +lame_get_scale @1007 +lame_set_scale_left @1008 +lame_get_scale_left @1009 +lame_set_scale_right @1010 +lame_get_scale_right @1011 +lame_set_out_samplerate @1012 +lame_get_out_samplerate @1013 + diff --git a/lame-3.97/Dll/BladeMP3EncDLL.h b/lame-3.97/Dll/BladeMP3EncDLL.h new file mode 100644 index 0000000..3fe2987 --- /dev/null +++ b/lame-3.97/Dll/BladeMP3EncDLL.h @@ -0,0 +1,280 @@ +/* + * Blade Type of DLL Interface for Lame encoder + * + * Copyright (c) 1999-2002 A.L. Faber + * Based on bladedll.h version 1.0 written by Jukka Poikolainen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef ___BLADEDLL_H_INCLUDED___ +#define ___BLADEDLL_H_INCLUDED___ + +#ifdef __GNUC__ +#define ATTRIBUTE_PACKED __attribute__((packed)) +#else +#define ATTRIBUTE_PACKED +#pragma pack(push) +#pragma pack(1) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* encoding formats */ + +#define BE_CONFIG_MP3 0 +#define BE_CONFIG_LAME 256 + +/* type definitions */ + +typedef unsigned long HBE_STREAM; +typedef HBE_STREAM *PHBE_STREAM; +typedef unsigned long BE_ERR; + +/* error codes */ + +#define BE_ERR_SUCCESSFUL 0x00000000 +#define BE_ERR_INVALID_FORMAT 0x00000001 +#define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002 +#define BE_ERR_NO_MORE_HANDLES 0x00000003 +#define BE_ERR_INVALID_HANDLE 0x00000004 +#define BE_ERR_BUFFER_TOO_SMALL 0x00000005 + +/* other constants */ + +#define BE_MAX_HOMEPAGE 128 + +/* format specific variables */ + +#define BE_MP3_MODE_STEREO 0 +#define BE_MP3_MODE_JSTEREO 1 +#define BE_MP3_MODE_DUALCHANNEL 2 +#define BE_MP3_MODE_MONO 3 + + + +#define MPEG1 1 +#define MPEG2 0 + +#ifdef _BLADEDLL +#undef FLOAT + #include +#endif + +#define CURRENT_STRUCT_VERSION 1 +#define CURRENT_STRUCT_SIZE sizeof(BE_CONFIG) // is currently 331 bytes + + +typedef enum +{ + VBR_METHOD_NONE = -1, + VBR_METHOD_DEFAULT = 0, + VBR_METHOD_OLD = 1, + VBR_METHOD_NEW = 2, + VBR_METHOD_MTRH = 3, + VBR_METHOD_ABR = 4 +} VBRMETHOD; + +typedef enum +{ + LQP_NOPRESET =-1, + + // QUALITY PRESETS + LQP_NORMAL_QUALITY = 0, + LQP_LOW_QUALITY = 1, + LQP_HIGH_QUALITY = 2, + LQP_VOICE_QUALITY = 3, + LQP_R3MIX = 4, + LQP_VERYHIGH_QUALITY = 5, + LQP_STANDARD = 6, + LQP_FAST_STANDARD = 7, + LQP_EXTREME = 8, + LQP_FAST_EXTREME = 9, + LQP_INSANE = 10, + LQP_ABR = 11, + LQP_CBR = 12, + LQP_MEDIUM = 13, + LQP_FAST_MEDIUM = 14, + + // NEW PRESET VALUES + LQP_PHONE =1000, + LQP_SW =2000, + LQP_AM =3000, + LQP_FM =4000, + LQP_VOICE =5000, + LQP_RADIO =6000, + LQP_TAPE =7000, + LQP_HIFI =8000, + LQP_CD =9000, + LQP_STUDIO =10000 + +} LAME_QUALITY_PRESET; + + + +typedef struct { + DWORD dwConfig; // BE_CONFIG_XXXXX + // Currently only BE_CONFIG_MP3 is supported + union { + + struct { + + DWORD dwSampleRate; // 48000, 44100 and 32000 allowed + BYTE byMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO + WORD wBitrate; // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed + BOOL bPrivate; + BOOL bCRC; + BOOL bCopyright; + BOOL bOriginal; + + } mp3; // BE_CONFIG_MP3 + + struct + { + // STRUCTURE INFORMATION + DWORD dwStructVersion; + DWORD dwStructSize; + + // BASIC ENCODER SETTINGS + DWORD dwSampleRate; // SAMPLERATE OF INPUT FILE + DWORD dwReSampleRate; // DOWNSAMPLERATE, 0=ENCODER DECIDES + LONG nMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO + DWORD dwBitrate; // CBR bitrate, VBR min bitrate + DWORD dwMaxBitrate; // CBR ignored, VBR Max bitrate + LONG nPreset; // Quality preset, use one of the settings of the LAME_QUALITY_PRESET enum + DWORD dwMpegVersion; // FUTURE USE, MPEG-1 OR MPEG-2 + DWORD dwPsyModel; // FUTURE USE, SET TO 0 + DWORD dwEmphasis; // FUTURE USE, SET TO 0 + + // BIT STREAM SETTINGS + BOOL bPrivate; // Set Private Bit (TRUE/FALSE) + BOOL bCRC; // Insert CRC (TRUE/FALSE) + BOOL bCopyright; // Set Copyright Bit (TRUE/FALSE) + BOOL bOriginal; // Set Original Bit (TRUE/FALSE) + + // VBR STUFF + BOOL bWriteVBRHeader; // WRITE XING VBR HEADER (TRUE/FALSE) + BOOL bEnableVBR; // USE VBR ENCODING (TRUE/FALSE) + INT nVBRQuality; // VBR QUALITY 0..9 + DWORD dwVbrAbr_bps; // Use ABR in stead of nVBRQuality + VBRMETHOD nVbrMethod; + BOOL bNoRes; // Disable Bit resorvoir (TRUE/FALSE) + + // MISC SETTINGS + BOOL bStrictIso; // Use strict ISO encoding rules (TRUE/FALSE) + WORD nQuality; // Quality Setting, HIGH BYTE should be NOT LOW byte, otherwhise quality=5 + + // FUTURE USE, SET TO 0, align strucutre to 331 bytes + BYTE btReserved[255-4*sizeof(DWORD) - sizeof( WORD )]; + + } LHV1; // LAME header version 1 + + struct { + + DWORD dwSampleRate; + BYTE byMode; + WORD wBitrate; + BYTE byEncodingMethod; + + } aac; + + } format; + +} BE_CONFIG, *PBE_CONFIG ATTRIBUTE_PACKED; + + +typedef struct { + + // BladeEnc DLL Version number + + BYTE byDLLMajorVersion; + BYTE byDLLMinorVersion; + + // BladeEnc Engine Version Number + + BYTE byMajorVersion; + BYTE byMinorVersion; + + // DLL Release date + + BYTE byDay; + BYTE byMonth; + WORD wYear; + + // BladeEnc Homepage URL + + CHAR zHomepage[BE_MAX_HOMEPAGE + 1]; + + BYTE byAlphaLevel; + BYTE byBetaLevel; + BYTE byMMXEnabled; + + BYTE btReserved[125]; + + +} BE_VERSION, *PBE_VERSION ATTRIBUTE_PACKED; + +#ifndef _BLADEDLL + +typedef BE_ERR (*BEINITSTREAM) (PBE_CONFIG, PDWORD, PDWORD, PHBE_STREAM); +typedef BE_ERR (*BEENCODECHUNK) (HBE_STREAM, DWORD, PSHORT, PBYTE, PDWORD); + +// added for floating point audio -- DSPguru, jd +typedef BE_ERR (*BEENCODECHUNKFLOATS16NI) (HBE_STREAM, DWORD, PFLOAT, PFLOAT, PBYTE, PDWORD); +typedef BE_ERR (*BEDEINITSTREAM) (HBE_STREAM, PBYTE, PDWORD); +typedef BE_ERR (*BECLOSESTREAM) (HBE_STREAM); +typedef VOID (*BEVERSION) (PBE_VERSION); +typedef BE_ERR (*BEWRITEVBRHEADER) (LPCSTR); +typedef BE_ERR (*BEWRITEINFOTAG) (HBE_STREAM, LPCSTR ); + +#define TEXT_BEINITSTREAM "beInitStream" +#define TEXT_BEENCODECHUNK "beEncodeChunk" +#define TEXT_BEENCODECHUNKFLOATS16NI "beEncodeChunkFloatS16NI" +#define TEXT_BEDEINITSTREAM "beDeinitStream" +#define TEXT_BECLOSESTREAM "beCloseStream" +#define TEXT_BEVERSION "beVersion" +#define TEXT_BEWRITEVBRHEADER "beWriteVBRHeader" +#define TEXT_BEFLUSHNOGAP "beFlushNoGap" +#define TEXT_BEWRITEINFOTAG "beWriteInfoTag" + + +#else + +__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream); +__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput); + +// added for floating point audio -- DSPguru, jd +__declspec(dllexport) BE_ERR beEncodeChunkFloatS16NI(HBE_STREAM hbeStream, DWORD nSamples, PFLOAT buffer_l, PFLOAT buffer_r, PBYTE pOutput, PDWORD pdwOutput); +__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); +__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream); +__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion); +__declspec(dllexport) BE_ERR beWriteVBRHeader(LPCSTR lpszFileName); +__declspec(dllexport) BE_ERR beFlushNoGap(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); +__declspec(dllexport) BE_ERR beWriteInfoTag( HBE_STREAM hbeStream, LPCSTR lpszFileName ); + +#endif + +#ifndef __GNUC__ +#pragma pack(pop) +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lame-3.97/Dll/Example.cpp b/lame-3.97/Dll/Example.cpp new file mode 100644 index 0000000..fec7565 --- /dev/null +++ b/lame-3.97/Dll/Example.cpp @@ -0,0 +1,288 @@ +/* + * LAME DLL Sample Code. + * + * Copyright (c) 2000 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#include +#include +#include +#include +#include +#include "BladeMP3EncDLL.h" + +BEINITSTREAM beInitStream=NULL; +BEENCODECHUNK beEncodeChunk=NULL; +BEDEINITSTREAM beDeinitStream=NULL; +BECLOSESTREAM beCloseStream=NULL; +BEVERSION beVersion=NULL; +BEWRITEVBRHEADER beWriteVBRHeader=NULL; +BEWRITEINFOTAG beWriteInfoTag=NULL; + + +// Main program +int main(int argc, char *argv[]) +{ + HINSTANCE hDLL =NULL; + FILE* pFileIn =NULL; + FILE* pFileOut =NULL; + BE_VERSION Version ={0,}; + BE_CONFIG beConfig ={0,}; + + CHAR strFileIn[255] ={'0',}; + CHAR strFileOut[255] ={'0',}; + + DWORD dwSamples =0; + DWORD dwMP3Buffer =0; + HBE_STREAM hbeStream =0; + BE_ERR err =0; + + PBYTE pMP3Buffer =NULL; + PSHORT pWAVBuffer =NULL; + + // check number of arguments + if(argc != 2) + { + fprintf(stderr,"Usage: %s \n", argv[0]); + fprintf(stderr,"Descr: Short demo to show how to use the lame_enc.dll library file\n"); + fprintf(stderr,"Note : WAV file is assumed to to have the following parameters\n"); + fprintf(stderr," : 44100 Hz, stereo, 16 Bits per sample\n"); + return -1; + } + + // Setup the file names + strcpy(strFileIn ,argv[1]); + strcpy(strFileOut,argv[1]); + + // Add mp3 extention + strcat(strFileOut,".mp3"); + + // Load lame_enc.dll library (Make sure though that you set the + // project/settings/debug Working Directory correctly, otherwhise the DLL can't be loaded + + hDLL = LoadLibrary("lame_enc.dll"); + + if ( NULL == hDLL ) + { + hDLL = LoadLibrary("..\\..\\output\\lame_enc.dll"); + } + + if( NULL == hDLL ) + { + fprintf(stderr,"Error loading lame_enc.DLL"); + return -1; + } + + // Get Interface functions from the DLL + beInitStream = (BEINITSTREAM) GetProcAddress(hDLL, TEXT_BEINITSTREAM); + beEncodeChunk = (BEENCODECHUNK) GetProcAddress(hDLL, TEXT_BEENCODECHUNK); + beDeinitStream = (BEDEINITSTREAM) GetProcAddress(hDLL, TEXT_BEDEINITSTREAM); + beCloseStream = (BECLOSESTREAM) GetProcAddress(hDLL, TEXT_BECLOSESTREAM); + beVersion = (BEVERSION) GetProcAddress(hDLL, TEXT_BEVERSION); + beWriteVBRHeader= (BEWRITEVBRHEADER) GetProcAddress(hDLL,TEXT_BEWRITEVBRHEADER); + beWriteInfoTag = (BEWRITEINFOTAG) GetProcAddress(hDLL,TEXT_BEWRITEINFOTAG); + + // Check if all interfaces are present + if(!beInitStream || !beEncodeChunk || !beDeinitStream || !beCloseStream || !beVersion || !beWriteVBRHeader) + { + printf("Unable to get LAME interfaces"); + return -1; + } + + // Get the version number + beVersion( &Version ); + + printf( + "lame_enc.dll version %u.%02u (%u/%u/%u)\n" + "lame_enc Engine %u.%02u\n" + "lame_enc homepage at %s\n\n", + Version.byDLLMajorVersion, Version.byDLLMinorVersion, + Version.byDay, Version.byMonth, Version.wYear, + Version.byMajorVersion, Version.byMinorVersion, + Version.zHomepage); + + // Try to open the WAV file, be sure to open it as a binary file! + pFileIn = fopen( strFileIn, "rb" ); + + // Check file open result + if(pFileIn == NULL) + { + fprintf(stderr,"Error opening %s", argv[1]); + return -1; + } + + // Open MP3 file + pFileOut= fopen(strFileOut,"wb+"); + + // Check file open result + if(pFileOut == NULL) + { + fprintf(stderr,"Error creating file %s", strFileOut); + return -1; + } + + memset(&beConfig,0,sizeof(beConfig)); // clear all fields + + // use the LAME config structure + beConfig.dwConfig = BE_CONFIG_LAME; + + // this are the default settings for testcase.wav + beConfig.format.LHV1.dwStructVersion = 1; + beConfig.format.LHV1.dwStructSize = sizeof(beConfig); + beConfig.format.LHV1.dwSampleRate = 44100; // INPUT FREQUENCY + beConfig.format.LHV1.dwReSampleRate = 0; // DON"T RESAMPLE + beConfig.format.LHV1.nMode = BE_MP3_MODE_JSTEREO; // OUTPUT IN STREO + beConfig.format.LHV1.dwBitrate = 128; // MINIMUM BIT RATE + beConfig.format.LHV1.nPreset = LQP_R3MIX; // QUALITY PRESET SETTING + beConfig.format.LHV1.dwMpegVersion = MPEG1; // MPEG VERSION (I or II) + beConfig.format.LHV1.dwPsyModel = 0; // USE DEFAULT PSYCHOACOUSTIC MODEL + beConfig.format.LHV1.dwEmphasis = 0; // NO EMPHASIS TURNED ON + beConfig.format.LHV1.bOriginal = TRUE; // SET ORIGINAL FLAG + beConfig.format.LHV1.bWriteVBRHeader = TRUE; // Write INFO tag + +// beConfig.format.LHV1.dwMaxBitrate = 320; // MAXIMUM BIT RATE +// beConfig.format.LHV1.bCRC = TRUE; // INSERT CRC +// beConfig.format.LHV1.bCopyright = TRUE; // SET COPYRIGHT FLAG +// beConfig.format.LHV1.bPrivate = TRUE; // SET PRIVATE FLAG +// beConfig.format.LHV1.bWriteVBRHeader = TRUE; // YES, WRITE THE XING VBR HEADER +// beConfig.format.LHV1.bEnableVBR = TRUE; // USE VBR +// beConfig.format.LHV1.nVBRQuality = 5; // SET VBR QUALITY + beConfig.format.LHV1.bNoRes = TRUE; // No Bit resorvoir + +// Preset Test +// beConfig.format.LHV1.nPreset = LQP_PHONE; + + // Init the MP3 Stream + err = beInitStream(&beConfig, &dwSamples, &dwMP3Buffer, &hbeStream); + + // Check result + if(err != BE_ERR_SUCCESSFUL) + { + fprintf(stderr,"Error opening encoding stream (%lu)", err); + return -1; + } + + + // Allocate MP3 buffer + pMP3Buffer = new BYTE[dwMP3Buffer]; + + // Allocate WAV buffer + pWAVBuffer = new SHORT[dwSamples]; + + // Check if Buffer are allocated properly + if(!pMP3Buffer || !pWAVBuffer) + { + printf("Out of memory"); + return -1; + } + + DWORD dwRead=0; + DWORD dwWrite=0; + DWORD dwDone=0; + DWORD dwFileSize=0; + + // Seek to end of file + fseek(pFileIn,0,SEEK_END); + + // Get the file size + dwFileSize=ftell(pFileIn); + + // Seek back to start of WAV file, + // but skip the first 44 bytes, since that's the WAV header + fseek(pFileIn,44,SEEK_SET); + + + // Convert All PCM samples + while ( (dwRead=fread(pWAVBuffer,sizeof(SHORT),dwSamples,pFileIn)) >0 ) + { + // Encode samples + err = beEncodeChunk(hbeStream, dwRead, pWAVBuffer, pMP3Buffer, &dwWrite); + + // Check result + if(err != BE_ERR_SUCCESSFUL) + { + beCloseStream(hbeStream); + fprintf(stderr,"beEncodeChunk() failed (%lu)", err); + return -1; + } + + // write dwWrite bytes that are returned in tehe pMP3Buffer to disk + if(fwrite(pMP3Buffer,1,dwWrite,pFileOut) != dwWrite) + { + fprintf(stderr,"Output file write error"); + return -1; + } + + dwDone += dwRead*sizeof(SHORT); + + printf("Done: %0.2f%% \r", 100 * (float)dwDone/(float)(dwFileSize)); + } + + // Deinit the stream + err = beDeinitStream(hbeStream, pMP3Buffer, &dwWrite); + + // Check result + if(err != BE_ERR_SUCCESSFUL) + { + + beCloseStream(hbeStream); + fprintf(stderr,"beExitStream failed (%lu)", err); + return -1; + } + + // Are there any bytes returned from the DeInit call? + // If so, write them to disk + if( dwWrite ) + { + if( fwrite( pMP3Buffer, 1, dwWrite, pFileOut ) != dwWrite ) + { + fprintf(stderr,"Output file write error"); + return -1; + } + } + + // close the MP3 Stream + beCloseStream( hbeStream ); + + // Delete WAV buffer + delete [] pWAVBuffer; + + // Delete MP3 Buffer + delete [] pMP3Buffer; + + // Close input file + fclose( pFileIn ); + + // Close output file + fclose( pFileOut ); + + if ( beWriteInfoTag ) + { + // Write the INFO Tag + beWriteInfoTag( hbeStream, strFileOut ); + } + else + { + beWriteVBRHeader( strFileOut ); + } + + // Were done, return OK result + return 0; +} + diff --git a/lame-3.97/Dll/Example_vc6.dsp b/lame-3.97/Dll/Example_vc6.dsp new file mode 100644 index 0000000..4c4af38 --- /dev/null +++ b/lame-3.97/Dll/Example_vc6.dsp @@ -0,0 +1,89 @@ +# Microsoft Developer Studio Project File - Name="Example" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=Example - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "Example_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "Example_vc6.mak" CFG="Example - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "Example - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "Example - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "Example - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "Example - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "Example - Win32 Release" +# Name "Example - Win32 Debug" +# Begin Source File + +SOURCE=.\Example.cpp +# End Source File +# End Target +# End Project diff --git a/lame-3.97/Dll/Example_vc6.dsw b/lame-3.97/Dll/Example_vc6.dsw new file mode 100644 index 0000000..75d8332 --- /dev/null +++ b/lame-3.97/Dll/Example_vc6.dsw @@ -0,0 +1,74 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "Example"=.\Example_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name LameMp3EncDll + End Project Dependency +}}} + +############################################################################### + +Project: "LameMp3EncDll"=.\LameDll_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "libmp3lame"=..\libmp3lame\libmp3lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "mpglib"=..\mpglib\mpglib_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/Dll/LameDLLInterface.htm b/lame-3.97/Dll/LameDLLInterface.htm new file mode 100644 index 0000000..a9f2add --- /dev/null +++ b/lame-3.97/Dll/LameDLLInterface.htm @@ -0,0 +1,742 @@ + + + + + +Lame- + + + + +

 

+ +

Lame-enc DLL
+Interface version 1.32 (and above)
+(Lame engine version: 3.93 or higher)
+Programmers Manual

+ +

The lame_enc.dll and this manual is +copyright by Albert L Faber
+Originally the the DLL interface is modeled after the BladeEnc +DLL interface
+which is copyrighted by Tord Jansson and Jukka Poikolainen
+This document and the DLL interface may be distributed freely
+
+as long as modifications are released under the LGPL license. +

+ +

 

+ +

Homepage: http://www.cdex.n3.net
+E-mail: mailto: afaber@users.sourceforge.net +

+ +


+
+
+
+

+ +

Distribution

+ +

People and companies  who wants to distribute +lame_enc.dll with their commercial products are free to do so as +far as I'm concerned (LGPL license), but should be aware that +lame_enc.dll might infringe certain MP3 related software patents +held by Fraunhofer IIS in certain countries.

+ +


+ +

Disclaimer

+ +

lame_enc.dll and this manual is distributed 'as is' with no +warranty of any kind. The Author is not to be held responsible +for the result of any use or misuse of this product.

+ +

Current Bugs and Limitations

+ +

Although the interface is designed to be able to handle +multiple parallel streams it can't be done yet due to limitations +in the engine, only one stream is allowed.

+ +

Future Compatibility

+ +

This interface should be compatible with all future versions +of lame_enc.DLL without any need to recompile your programs. You +should therefore not check the version number upon start +and prevent users from running your program with a later version +of lame_enc.DLL.

+ +
+ +

How to use the DLL

+ +

1. Fill in a BE_CONFIG structure +and send it to beInitStream(). Make +sure that BE_ERR_SUCCESSFUL is returned.

+ +

2. Reserve at least the amount of memory returned in +dwBufferSize as your output buffer.

+ +

3. Call beEncodeChunk() until +you've encoded everything you want.

+ +

4. Call beDeinitStream() to +make sure that all encoded data is flushed out before closing the +stream.

+ +

5. Close the stream using beCloseStream() +

+ +

6. Finally, call the beWriteVBRHeader() +functions, to insert the INFO tag MP3 Header. This is an +extension of the Xing VBR tag which is also used for CBR +encodings. This call can only be omitted if the INFO tag was +explicilty disabled in the BE_CONFIG Structure.

+ +

A handy feature is the available Lame_enc.dll debug option, +which will dump the important lame internal settings to a text +file.

+ +

 

+ +

Return Values

+ +

See the header-file for a complete list of function return +values. All functions should return BE_ERR_SUCCESSFUL unless +something went wrong.

+ +
+ +

Type definitions

+ +

The DLL is by default compiled with the MS Visual C/C++ +compiler, which has the following type definitions:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type Description
CHARsigned char (8 bits)
BYTEunsigned char (8 bits)
SHORTsigned short (16 bits)
WORDunsigned short (16 bits)
INTsigned long (32 bits)
LONGsigned long (32 bits)
BOOLsigned long (32 bits) (YES, 32 bits for a one bit + value)
+ TRUE = 0
+ FALSE=-1
DWORDunsigned long (32 bits)
FLOATfloating point (32 bits)
DOUBLEfloat point (64 bits)
LPCSTRconst char* (32 bits pointer to zero terminated + character string)
+ +

Within the lame_enc.dll All the structure elements are one +byte alligned (due to backwards compatibility with BladEnc.DLL!

+ +

 

+ +
+ +

The +BE_CONFIG Structure

+ +

Currently there the BE_CONFIG structure has to +varians, the old MP3 config structure that is truly compatible +with the old BladeEnc interface, and the new defined LHV1 +structure, which can set far more options in the lame encoder

+ +

 

+ +

The MP3 BE_CONFIG - structure (OBSOLETE)

+ +

This is the old structure as it was originally defined by the +BladeEnc.DLL interface. However, I do highly recommend to use the +new Lame specific config structure, since it gives you more +control over the Lame encoder settings.

+ +

These are the members of the BE_CONFIG structure you need to +fill in before you call beInitStream():

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dwConfigSpecifies what kind of output you want. Since only + MP3 currently is supported you must set this to BE_CONFIG_MP3
format.mp3.dwSampleRate     Samplerate in Hz for MP3 file. This can be set to + either 32000, 44100 or 48000.
format.mp3.byModeStereomode for MP3 file. This can be either BE_MP3_MODE_STEREO, + BE_MP3_MODE_DUALCHANNEL or BE_MP3_MODE_MONO.
format.mp3.bitrateBitrate (i.e. size) of MP3 file in kBit/s. Allowed + bitrates are: 32, 40, 48, 56, 64, 80, 96, 112, 128, + 160, 192, 224, 256 and 320.
format.mp3.bCopyrightIf this is set to TRUE the Copyright bit in the MP3 + stream will be set.
format.mp3.bCRCSet this to TRUE in order to enable CRC-checksum in + the bitstream.
format.mp3.bOriginalIf this is set to TRUE the Original bit in the MP3 + stream will be set.
format.mp3.bPrivateIf this is set to TRUE the Private bit in the MP3 + stream will be set.
+ +

 

+ +

The LHV1 BE_CONFIG - structure (recommended)

+ +

These are the members of the LHV1 BE_CONFIG structure, you +need to fill in before you call beInitStream():
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dwConfigSpecifies what kind of output you want. Since only + MP3 currently is supported you must set this to BE_CONFIG_LAME
  
format.LHV1.dwStructVersionIndicates the version number of the structure, + current version number is 1
format.LHV1.dwStructSizeSpecifies the size of the BE_CONFIG structure + (currently 331 bytes)
  
format.LHV1.dwSampleRate Samplerate in Hz for MP3 file. This can be set to + either:
+ 32000, 44100 or 48000 for MPEG-I
+ 16000, 22050 or 24000 for MPEG-I
+ 8000, 11025 or 12000 for MPEG-II.5
format.LHV1.dwReSampleRateSpecifies to which sample rate the input stream has + to be resampled, if set to 0, the encoder will decide + which ReSample rate to use
format.LHV1.nModeStereomode for MP3 file. This can be either BE_MP3_MODE_STEREO, + BE_MP3_MODE_JSTEREO, BE_MP3_MODE_DUALCHANNEL or BE_MP3_MODE_MONO.
format.LHV1.dwBitrateFor CBR, this specifies the actual bitrate, for VBR, + it specifies the minimum bitrate
+ Allowed bitrates are: 32, 40, 48, 56, 64, 80, 96, 112, + 128, 160, 192, 224, 256 and 320.for MPEG-I
+ Allowed bitrates are: 8, 16, 24, 32, 40, 48, 56, 64, + 80, 96, 112, 128, 144 and 160.for MPEG-II

Note: + dwBitrate is used as the minimum bitrate in the case of + using a VBR mode.

+
format.LHV1.dwMaxBitrateWhen VBR mode is enabled, it specifies the maximum + allowed bitrate (see also dwBitrate to specify the minium + bitrate), for CBR mode this setting is ignored.
format.LHV1.nPresetKeep in mind that the presets can overwrite some of + the other settings, since it is called right before the + encoder is initialized
+ + + + +
The nPreset option can be set to one of the + following presets values::
+

LQP_NOPRESET (don't use any presets)
+ LQP_NORMAL_QUALITY (quality is set to 5)
+ LQP_LOW_QUALITY (quality is set to 9)
+ LQP_HIGH_QUALITY (quality is set to 2)
+ LQP_VOICE_QUALITY (use for voice encoding)
+ LQP_R3MIX (r3mix preset option)
+ LQP_VERYHIGH_QUALITY (quality is set to 0)
+ LQP_STANDARD (lame command line alt-preset standard)
+ LQP_FAST_STANDARD (lame command line alt-preset fast + standard)
+ LQP_EXTREME (lame command line alt-preset extreme)
+ LQP_FAST_EXTREME (lame command line alt-preset fast + extreme)
+ LQP_INSANE (lame command line alt-preset insane)
+ LQP_ABR (lame command line alt-preset abr)
+ LQP_CBR(lame command line alt-preset cbr)
+
+ (old lame preset options)
+ LQP_PHONE
+ LQP_SW
+ LQP_AM
+ LQP_FM
+ LQP_VOICE
+ LQP_RADIO
+ LQP_TAPE
+ LQP_HIFI
+ LQP_CD
+ LQP_STUDIO

+
 
format.LHV1.bCopyrightIf this is set to TRUE the Copyright bit in the MP3 + stream will be set.
format.LHV1.bCRCSet this to TRUE in order to enable CRC-checksum in + the bitstream.
format.LHV1.bOriginalIf this is set to TRUE the Original bit in the MP3 + stream will be set.
format.LHV1.bPrivateIf this is set to TRUE the Private bit in the MP3 + stream will be set.
  
format.LHV1.nVbrMethodSepecifes if the VBR method to use, currently the + following settings are supported:

VBR_METHOD_NONE + (don't use VBR, use CBR encoding instead),
+ VBR_METHOD_DEFAULT (default VBR method)
+ VBR_METHOD_OLD (old VBR method, proven to be reliable)
+ VBR_METHOD_NEW (new VBR method, faster than + VBR_METHOD_OLD)
+ VBR_METHOD_MTRH (depreciated, same as VBR_METHOD_NEW)
+ VBR_METHOD_ABR (Average Bitrate Encoding, see also
format.LHV1.dwVbrAbr_bps)

+
format.LHV1.bWriteVBRHeaderSepecifes if the a XING VBR header should be written + or not. When this option is enabled, you have to call the + beWriteVBRHeader function when encoding + has been completed. Keep in mind that the VBR info tag + can also be written for CBR encoded files, the TAG info + can be useful for additional info like encoder delay and + the like.
format.LHV1.bEnableVBRSpecifies if VBR encoding option shall be used or + not, possible values are TRUE/FALSE
format.LHV1.nVBRQualityQuality option if VBR is enabled (0=highest quality, + 9 is lowest quality)
format.LHV1.dwVbrAbr_bpsIf the Average Bit Rate is specified, the lame + encoder ignores the nVBRQuality settings (However, bEnableVBR + must be set to TRUE and the format.LHV1.nVbrMethod + parameter should be set to VBR_METHOD_ABR). The allowed + range for the format.LHV1.dwVbrAbr_bps parameter + any integer value between:

MPEG-I: + 32000 .. 320000 bps
+
MPEG-II: 8000 .. 160000 bps

+
  
format.LHV1.bNoBitResDisables the bit-resorvoir and disables the insertion + of padded frames
format.LHV1.nQualityQuality Setting, HIGH BYTE should be NOT LOW byte, + otherwhise quality is set to 5. This is done to be + backward compatible. So to set quality to 3, you have to + set the nQuality parameter to 0xFC03.
format.mp3.btReservedFor future use, set all elements to zero
+ +

 

+ +

 

+ +
+ +

beInitStream() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beInitStream( + PBE_CONFIG pbeConfig, PDWORD dwSamples, + PDWORD dwBufferSize, PHBE_STREAM phbeStream + )
Parameters: + + + + + + + + + + + + + + + + +
pbeConfigPointer at the struct containing encoder + settings.
dwSamplesPointer at double word where number of + samples to send to each beEncodeChunk() is + returned.
dwBufferSizePointer at double word where minimum size in + bytes of output buffer is returned.
phbeStreamPointer at integer where Stream handle is + returned.
+
Description:This function is the first + to call before starting an encoding stream.
+ +
+ +

beEncodeChunk() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beEncodeChunk( + HBE_STREAM hbeStream, DWORD nSamples, + PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput + )
Parameters: + + + + + + + + + + + + + + + + + + + + +
hbeStreamHandle of the stream.
nSamplesNumber of samples to be encoded for this + call. This should be identical to what is + returned by beInitStream(), unless you are + encoding the last chunk, which might be smaller.
pSamplesPointer at the 16-bit signed samples to be + encoded. These should be in stereo when encoding + a stereo MP3 and mono when encoding a mono MP3.
pOutputWhere to write the encoded data. This buffer + should be at least of the minimum size returned + by beInitStream().
pdwOutputWhere to return number of bytes of encoded + data written. The amount of data written might + vary from chunk to chunk.
+
Description:Encodes a chunk of samples. Please + note that if you have set the output to generate mono MP3 + files you must feed beEncodeChunk() with mono samples!
+ +
+ +

beDeinitStream() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beDeinitStream( + HBE_STREAM hbeStream, PBYTE pOutput, PDWORD + pdwOutput )
Parameters: + + + + + + + + + + + + +
hbeStreamHandle of the stream.
pOutputWhere to write the encoded data. This buffer + should be at least of the minimum size returned + by beInitStream().
pdwOutputWhere to return number of bytes of encoded + data written.
+
Description:This function should be called after + encoding the last chunk in order to flush the encoder. It + writes any encoded data that still might be left inside + the encoder to the output buffer. This function should + NOT be called unless you have encoded all of the chunks + in your stream.
+ +
+ +

beCloseStream() +

+ + + + + + + + + + + + + + +
Synopsis:BE_ERR beCloseStream( HBE_STREAM hbeStream + )
Parameters: + + + + +
hbeStreamHandle of the stream.
+
Description:Last function to be called when finished + encoding a stream. Should unlike beDeinitStream() + also be called if the encoding is canceled.
+ +
+ +

beVersion()

+ + + + + + + + + + + + + + +
Synopsis:VOID beVersion( PBE_VERSION pbeVersion + )
Parameters: + + + + +
pbeVersionPointer at struct where version number, + release date and URL for homepage is returned.
+
Description:Returns information like version numbers + (both of the DLL and encoding engine), release date and + URL for lame_enc's homepage. All this information should + be made available to the user of your product through a + dialog box or something similar.
+ +

 

+ +
+ +

 

+ +

beWriteVBRHeader() +

+ + + + + + + + + + + + + + +
Synopsis:VOID beWriteVBRHeader( LPCSTR pszMP3FileName + )
Parameters: + + + + +
pszMP3FileNameConst Pointer zero terminated string, that + contains the MP3 file name.
+
Description:Writes a Xing Header in front of the MP3 + file. Make sure that the MP3 file is closed, and the the + beConfig.format.LHV1.bWriteVBRHeader has been set to + TRUE. In addition, it is always save to call + beWriteVBRHeader after the encoding has been finished, + even when the beConfig.format.LHV1.bWriteVBRHeader is not + set to TRUE
+ +

 

+ +

 

+ +
+ +

 

+ +

Lame_enc.dll debug option

+ +

The lame_enc.dll has a built-in debug option, that dumps all +the important internal settings to a text file. To enable this +feature, create a text file in the Windows directory which is +named lame_enc.ini, and should contain the following two lines

+ +

[debug]
+WriteLogFile=1

+ +

Save this text file, and each time you encode a file, the +settings are added to a file name lame_enc.txt, that is located +in the same directory as the lame_enc.dll

+ +

 

+ +


+ + diff --git a/lame-3.97/Dll/LameDll_vc6.dsp b/lame-3.97/Dll/LameDll_vc6.dsp new file mode 100644 index 0000000..b9600b9 --- /dev/null +++ b/lame-3.97/Dll/LameDll_vc6.dsp @@ -0,0 +1,144 @@ +# Microsoft Developer Studio Project File - Name="LameMp3EncDll" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=LameMp3EncDll - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "LameDll_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "LameDll_vc6.mak" CFG="LameMp3EncDll - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "LameMp3EncDll - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "LameMp3EncDll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "LameMp3EncDll - Win32 Release NASM" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "LameMp3EncDll - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../output/lame_enc.dll" + +!ELSEIF "$(CFG)" == "LameMp3EncDll - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /ZI /Od /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"../output/lame_enc.dll" /pdbtype:sept + +!ELSEIF "$(CFG)" == "LameMp3EncDll - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "LameMp3EncDll___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "LameMp3EncDll___Win32_Release_NASM" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /O2 /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /I "../include" /I "../" /I "../libmp3lame" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LAMEMP3ENCDLL_EXPORTS" /D "HAVE_NASM" /D "MMX_choose_table" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../output/lame_enc.dll" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"../output/lame_enc.dll" + +!ENDIF + +# Begin Target + +# Name "LameMp3EncDll - Win32 Release" +# Name "LameMp3EncDll - Win32 Debug" +# Name "LameMp3EncDll - Win32 Release NASM" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\BladeMP3EncDLL.c +# End Source File +# Begin Source File + +SOURCE=.\BladeMP3EncDLL.def +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\BladeMP3EncDLL.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/lame-3.97/Dll/LameDll_vc7.vcproj b/lame-3.97/Dll/LameDll_vc7.vcproj new file mode 100644 index 0000000..641b6b0 --- /dev/null +++ b/lame-3.97/Dll/LameDll_vc7.vcproj @@ -0,0 +1,704 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/Dll/MP3export.pas b/lame-3.97/Dll/MP3export.pas new file mode 100644 index 0000000..ab55bba --- /dev/null +++ b/lame-3.97/Dll/MP3export.pas @@ -0,0 +1,303 @@ +unit MP3export; + +interface + +Uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, +Forms, Dialogs, StdCtrls; + +type +//type definitions +//typedef unsigned long HBE_STREAM; +//typedef HBE_STREAM *PHBE_STREAM; +//typedef unsigned long BE_ERR; + THBE_STREAM = LongWord; + PHBE_STREAM = ^PHBE_STREAM; + BE_ERR = LongWord; + +const +// encoding formats +//#define BE_CONFIG_MP3 0 +//#define BE_CONFIG_LAME 256 + BE_CONFIG_MP3 = 0; + BE_CONFIG_LAME = 256; + + +// error codes +//#define BE_ERR_SUCCESSFUL 0x00000000 +//#define BE_ERR_INVALID_FORMAT 0x00000001 +//#define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002 +//#define BE_ERR_NO_MORE_HANDLES 0x00000003 +//#define BE_ERR_INVALID_HANDLE 0x00000004 +BE_ERR_SUCCESSFUL: LongWord = 0; +BE_ERR_INVALID_FORMAT: LongWord = 1; +BE_ERR_INVALID_FORMAT_PARAMETERS: LongWord = 2; +BE_ERR_NO_MORE_HANDLES: LongWord = 3; +BE_ERR_INVALID_HANDLE: LongWord = 4; + +// other constants + +BE_MAX_HOMEPAGE = 256; + +// format specific variables + +BE_MP3_MODE_STEREO = 0; +BE_MP3_MODE_DUALCHANNEL = 2; +BE_MP3_MODE_MONO = 3; + +type + + TMP3 = packed record + dwSampleRate : LongWord; + byMode : Byte; + wBitRate : Word; + bPrivate : LongWord; + bCRC : LongWord; + bCopyright : LongWord; + bOriginal : LongWord; + end; + + TLHV1 = packed record + // STRUCTURE INFORMATION + dwStructVersion: DWORD; + dwStructSize: DWORD; + + // BASIC ENCODER SETTINGS + dwSampleRate: DWORD; // ALLOWED SAMPLERATE VALUES DEPENDS ON dwMPEGVersion + dwReSampleRate: DWORD; // DOWNSAMPLERATE, 0=ENCODER DECIDES + nMode: Integer; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO + dwBitrate: DWORD; // CBR bitrate, VBR min bitrate + dwMaxBitrate: DWORD; // CBR ignored, VBR Max bitrate + nQuality: Integer; // Quality setting (NORMAL,HIGH,LOW,VOICE) + dwMpegVersion: DWORD; // MPEG-1 OR MPEG-2 + dwPsyModel: DWORD; // FUTURE USE, SET TO 0 + dwEmphasis: DWORD; // FUTURE USE, SET TO 0 + + // BIT STREAM SETTINGS + bPrivate: LONGBOOL; // Set Private Bit (TRUE/FALSE) + bCRC: LONGBOOL; // Insert CRC (TRUE/FALSE) + bCopyright: LONGBOOL; // Set Copyright Bit (TRUE/FALSE) + bOriginal: LONGBOOL; // Set Original Bit (TRUE/FALSE_ + + // VBR STUFF + bWriteVBRHeader: LONGBOOL; // WRITE XING VBR HEADER (TRUE/FALSE) + bEnableVBR: LONGBOOL; // USE VBR ENCODING (TRUE/FALSE) + nVBRQuality: Integer; // VBR QUALITY 0..9 + + btReserved: array[0..255] of Byte; // FUTURE USE, SET TO 0 + end; + + TAAC = packed record + dwSampleRate : LongWord; + byMode : Byte; + wBitRate : Word; + byEncodingMethod : Byte; + end; + + TFormat = packed record + case byte of + 1 : (mp3 : TMP3); + 2 : (lhv1 : TLHV1); + 3 : (aac : TAAC); + end; + + TBE_Config = packed record + dwConfig : LongWord; + format : TFormat; + end; + + + PBE_Config = ^TBE_Config; + +//typedef struct { +// // BladeEnc DLL Version number +// +// BYTE byDLLMajorVersion; +// BYTE byDLLMinorVersion; +// +// // BladeEnc Engine Version Number +// +// BYTE byMajorVersion; +// BYTE byMinorVersion; +// +// // DLL Release date +// +// BYTE byDay; +// BYTE byMonth; +// WORD wYear; +// +// // BladeEnc Homepage URL +// +// CHAR zHomepage[BE_MAX_HOMEPAGE + 1]; +// +//} BE_VERSION, *PBE_VERSION; + + TBE_Version = record + byDLLMajorVersion : Byte; + byDLLMinorVersion : Byte; + + byMajorVersion : Byte; + byMinorVersion : Byte; + + byDay : Byte; + byMonth : Byte; + wYear : Word; + + zHomePage : Array[0..BE_MAX_HOMEPAGE + 1] of Char; + end; + + PBE_Version = ^TBE_Version; + +//__declspec(dllexport) BE_ERR beInitStream(PBE_CONFIG pbeConfig, PDWORD dwSamples, PDWORD dwBufferSize, PHBE_STREAM phbeStream); +//__declspec(dllexport) BE_ERR beEncodeChunk(HBE_STREAM hbeStream, DWORD nSamples, PSHORT pSamples, PBYTE pOutput, PDWORD pdwOutput); +//__declspec(dllexport) BE_ERR beDeinitStream(HBE_STREAM hbeStream, PBYTE pOutput, PDWORD pdwOutput); +//__declspec(dllexport) BE_ERR beCloseStream(HBE_STREAM hbeStream); +//__declspec(dllexport) VOID beVersion(PBE_VERSION pbeVersion); + +{ +Function beInitStream(var pbeConfig: TBE_CONFIG; var dwSample: LongWord; var dwBufferSize: LongWord; var phbeStream: THBE_STREAM ): BE_Err; cdecl; external 'Bladeenc.dll'; +//Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; pSample: PSmallInt;pOutput: PByte; var pdwOutput: LongWord): BE_Err; cdecl; external 'Bladeenc.dll'; +Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; var pSample;var pOutput; var pdwOutput: LongWord): BE_Err; stdcall; cdecl 'Bladeenc.dll'; +Function beDeinitStream(hbeStream: THBE_STREAM; var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Bladeenc.dll'; +Function beCloseStream(hbeStream: THBE_STREAM): BE_Err; cdecl; external 'Bladeenc.dll'; +Procedure beVersion(var pbeVersion: TBE_VERSION); cdecl; external 'Bladeenc.dll'; +} + +Function beInitStream(var pbeConfig: TBE_CONFIG; var dwSample: LongWord; var dwBufferSize: LongWord; var phbeStream: THBE_STREAM ): BE_Err; cdecl; external 'Lame_enc.dll'; +//Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; pSample: PSmallInt;pOutput: PByte; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; +Function beEncodeChunk(hbeStream: THBE_STREAM; nSamples: LongWord; var pSample;var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; +Function beDeinitStream(hbeStream: THBE_STREAM; var pOutput; var pdwOutput: LongWord): BE_Err; cdecl; external 'Lame_enc.dll'; +Function beCloseStream(hbeStream: THBE_STREAM): BE_Err; cdecl; external 'Lame_enc.dll'; +Procedure beVersion(var pbeVersion: TBE_VERSION); cdecl; external 'Lame_enc.dll'; + +Procedure EncodeWavToMP3(fs, fd: Integer); +implementation + +Uses InternetSnd, TraiteWav; + +{----------------------------------------} +Procedure EncodeWavToMP3(fs, fd: Integer); +var + err: Integer; + beConfig: TBE_Config; + dwSamples, dwSamplesMP3 : LongWord; + hbeStream : THBE_STREAM; + error: BE_ERR; + pBuffer: PSmallInt; + pMP3Buffer: PByte; + Marque:PChar; + + done: LongWord; + dwWrite: LongWord; + ToRead: LongWord; + ToWrite: LongWord; + i:Integer; + +begin + beConfig.dwConfig := BE_CONFIG_LAME; + +{ + beConfig.Format.mp3.dwSampleRate := WavInfo.SamplesPerSec; + beConfig.Format.mp3.byMode := BE_MP3_MODE_STEREO; + beConfig.Format.mp3.wBitrate := strToInt(MainFrm.Mp3BitRate.Text); + beConfig.Format.mp3.bCopyright := 0; + beConfig.Format.mp3.bCRC := $00000000; + beConfig.Format.mp3.bOriginal := 0; + beConfig.Format.mp3.bPrivate := 0; +} +//Structure information + beConfig.Format.lhv1.dwStructVersion := 1; + beConfig.Format.lhv1.dwStructSize := SizeOf(beConfig); +//Basic encoder setting + beConfig.Format.lhv1.dwSampleRate := WavInfo.SamplesPerSec; + beConfig.Format.lhv1.dwReSampleRate := 44100; + beConfig.Format.lhv1.nMode := BE_MP3_MODE_STEREO; + beConfig.Format.lhv1.dwBitrate := strToInt(MainFrm.Mp3BitRate.Text); + beConfig.Format.lhv1.dwMaxBitrate := strToInt(MainFrm.Mp3BitRate.Text); + beConfig.Format.lhv1.nQuality := 2; + beConfig.Format.lhv1.dwMPegVersion := 1; //MPEG1 + beConfig.Format.lhv1.dwPsyModel := 0; + beConfig.Format.lhv1.dwEmphasis := 0; +//Bit Stream Settings + beConfig.Format.lhv1.bPrivate := False; + beConfig.Format.lhv1.bCRC := False; + beConfig.Format.lhv1.bCopyright := True; + beConfig.Format.lhv1.bOriginal := True; +//VBR Stuff + beConfig.Format.lhv1.bWriteVBRHeader := false; + beConfig.Format.lhv1.bEnableVBR := false; + beConfig.Format.lhv1.nVBRQuality := 0; + + i := 0; + error := beInitStream(beConfig, dwSamples, dwSamplesMP3, hbeStream); + if error = BE_ERR_SUCCESSFUL + then begin + pBuffer := AllocMem(dwSamples*2); + pMP3Buffer := AllocMem(dwSamplesMP3); + try + done := 0; + + error := FileSeek(fs, 0, 0); + While (done < TotalSize) do + begin + if (done + dwSamples*2 < TotalSize) + then ToRead := dwSamples*2 + else begin + ToRead := TotalSize-done; + //FillChar(buf[0],dwSamples*2,0); + FillChar(pbuffer^,dwSamples,0); + end; + + //if FileRead(fs, buf[0], toread) = -1 + if FileRead(fs, pbuffer^, toread) = -1 + then raise Exception.Create('Erreur de lecture'); + + //error := beEncodeChunk(hbeStream, toRead div 2, Buf[0], TmpBuf[0], toWrite); + error := beEncodeChunk(hbeStream, toRead div 2, pBuffer^, pMP3Buffer^, toWrite); + + if error <> BE_ERR_SUCCESSFUL + then begin + beCloseStream(hbeStream); + raise Exception.Create('Echec de l''encodage'); + end; + + //if FileWrite(fd, TmpBuf[0], toWrite) = -1 + if FileWrite(fd, pMP3Buffer^, toWrite) = -1 + then raise Exception.Create('Erreur d''�criture'); + + done := done + toread; + inc(i); + if i mod 64 = 0 + then begin + MainFrm.ProgressBar1.Position := round(100*done/Totalsize); + Application.ProcessMessages; + end; + end; + + error := beDeInitStream(hbeStream, pMP3Buffer^, dwWrite); + //error := beDeInitStream(hbeStream, TmpBuf[0], dwWrite); + + if error <> BE_ERR_SUCCESSFUL + then begin + beCloseStream(hbeStream); + raise Exception.Create('Echec � la sortie'); + end; + + if dwWrite <> 0 + then begin + //if FileWrite(fd, TmpBuf[0], dwWrite) = -1 + if FileWrite(fd, pMP3Buffer^, dwWrite) = -1 + then raise Exception.Create('Erreur � la derni�re �criture'); + end; + + beCloseStream(hbeStream); + finally + FreeMem(pBuffer); + FreeMem(pMP3Buffer); + end; + end + else begin + + end; +end; + +end. diff --git a/lame-3.97/Dll/Makefile.am b/lame-3.97/Dll/Makefile.am new file mode 100644 index 0000000..f012883 --- /dev/null +++ b/lame-3.97/Dll/Makefile.am @@ -0,0 +1,15 @@ +## $Id: Makefile.am,v 1.8 2005/08/21 17:32:09 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = BladeMP3EncDLL.c \ + BladeMP3EncDLL.def \ + BladeMP3EncDLL.h \ + Example.cpp \ + Example_vc6.dsp \ + Example_vc6.dsw \ + LameDLLInterface.htm \ + LameDll_vc6.dsp \ + LameDll_vc7.vcproj \ + MP3export.pas \ + Makefile.mingw32 diff --git a/lame-3.97/Dll/Makefile.in b/lame-3.97/Dll/Makefile.in new file mode 100644 index 0000000..2207e73 --- /dev/null +++ b/lame-3.97/Dll/Makefile.in @@ -0,0 +1,359 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = Dll +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = BladeMP3EncDLL.c \ + BladeMP3EncDLL.def \ + BladeMP3EncDLL.h \ + Example.cpp \ + Example_vc6.dsp \ + Example_vc6.dsw \ + LameDLLInterface.htm \ + LameDll_vc6.dsp \ + LameDll_vc7.vcproj \ + MP3export.pas \ + Makefile.mingw32 + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Dll/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Dll/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/Dll/Makefile.mingw32 b/lame-3.97/Dll/Makefile.mingw32 new file mode 100644 index 0000000..3f35caf --- /dev/null +++ b/lame-3.97/Dll/Makefile.mingw32 @@ -0,0 +1,39 @@ +# This makefile compiles lame_enc.dll with mingw32 (and possibly cygwin) +# Of course, you must first build ../libmp3lame/libmp3lame.a. +# liblame_enc.a can be used to link the lame_enc.dll to your programs. +# Tested with EAC 0.9pb9 (my own favorite, http://www.exactaudiocopy.de/) +# example.exe compiles and works, too. +# Vladislav Naumov, +# +# PS: to 'make clean' you need rm. MS's del is unusable. +# PPS: quick build: +# make -fMakefile.mingw32 + +DLL_NAME = lame_enc +LAME_SRC_ROOT = .. +OFILES = BladeMP3EncDLL.o $(DLL_NAME)_exp.o +CFLAGS = -I$(LAME_SRC_ROOT)/include -I$(LAME_SRC_ROOT)/libmp3lame +CC = gcc +LD = gcc +LFLAGS = -L$(LAME_SRC_ROOT)/libmp3lame -o $(DLL_NAME).dll -mdll -s +LIBS = -lmp3lame + +all: $(DLL_NAME).dll example.exe + +BladeMP3EncDLL.o: BladeMP3EncDLL.c BladeMP3EncDLL.h ../include/lame.h \ + ../libmp3lame/lame_global_flags.h ../libmp3lame/version.h + +$(DLL_NAME).dll : $(OFILES) + $(LD) $(LFLAGS) $(OFILES) $(LIBS) + +$(DLL_NAME)_exp.o : BladeMP3EncDLL.o + dlltool --input-def BladeMP3EncDLL.def --output-lib lib$(DLL_NAME).a --output-exp $(DLL_NAME)_exp.o --dllname $(DLL_NAME) BladeMP3EncDLL.o + +%.o : %.c + $(CC) $(CFLAGS) -c $< -o $@ + +example.exe : Example.cpp BladeMP3EncDLL.h + gcc Example.cpp -o example.exe + +clean : + rm -f $(DLL_NAME).dll $(OFILES) example.exe diff --git a/lame-3.97/Dll/README b/lame-3.97/Dll/README new file mode 100644 index 0000000..ed8467a --- /dev/null +++ b/lame-3.97/Dll/README @@ -0,0 +1,21 @@ + +This directory contains a Windows DLL interface to the LAME +encoding engine. + +This DLL is compatible with the BladeEnc.dll. +See BladeMP3EncDLL.c for details of the calling +sequence, and BladeMP3EncDLL.h for details of the +data that must be passed to the DLL. + +As of yet, there is no other documentation. + +To use this DLL as a replacement for BladeEnc.dll, you +need to populate the 'mp3' struct. + +To use more advanced features of LAME, you need to +populate the LHV1 struct instead. + +Delphi 4 Users: Gabriel G�lin has +contributed a .PAS file, do you can access the DLL from +Delphi. See MP3export.pas. + diff --git a/lame-3.97/HACKING b/lame-3.97/HACKING new file mode 100644 index 0000000..6262cf1 --- /dev/null +++ b/lame-3.97/HACKING @@ -0,0 +1,148 @@ +First, see the file STYLEGUIDE + +************************************************************************ +TESTING +======= +If you make changes, please test. There is a python +script in the test/ directory which will compare two versions +of lame using a bunch of CBR and ABR options. To run this +script, copy your favorite (and short!) wav file to the +lame/test directory, and run: + +% cd lame/test +% ./lametest.py [-w] CBRABR.op castanets.wav lame_orig lame_new + + + + + + +************************************************************************ +LAME API + +For a general outline of the code, see the file API. +Also, frontend/main.c is a simple front end to libmp3lame.a + +The guts of the code are called from lame_encode_buffer(). + +lame_encode_buffer() handles buffering and resampling, and +then calls lame_encode_frame() for each frame. lame_encode_frame() +looks like this: + +lame_encode_frame_mp3(): + l3psycho_anal() compute masking thresholds + mdct_sub() compute MDCT coefficients + iteration_loop() choose scalefactors (via iteration) + which determine noise shapping, and + choose best huffman tables for lossless compression + + format_bitstream format the bitstream. when data+headers are complete, + output to internal bit buffer. + copy_buffer() copy internal bit buffer into user's mp3 buffer + +************************************************************************ +ADDING NEW OPTIONS + +control variable goes in lame_global_flags sturct. +Assume the variable is called 'new_variable'. + +You also need to write (in get_set.c): + +lame_set_new_variable() +lame_get_new_variable() + +And then document the variable in the file USAGE as well as the +output of "lame --longhelp" + +And add a "--option" style command line option to enable this variable +in parse.m + +Note: for experimental features that you need to call from the frontend +but that should not be part of the official API, see the section at +the end of get_set.c. These functions should *NOT* be prototyped in +lame.h (since that would indicate to the world that they are part +of the API). + + +************************************************************************ + +THREADSAFE: + +Lame should now be thread safe and re-entrant. +The only problem seems to be some OS's allocate small +stacks (< 128K) to threads launched by applictions, and this +is not enough for LAME. Fix is to increase the stack space, +or move some of our automatic variables onto the heap with +by using bug-prove malloc()'s and free(). + + + +************************************************************************ +Global Variables: + +There are two types of global variables. All data in +both strucs is initialized to zero. + +1. lame_global_flags *gfp + +These are input paramters which are set by the calling program, +and some information which the calling program may be interested in. + +This struct instantiated by the call to lame_init(). + + +2. lame_internal_flags *gfc + +Most global variables go here. + +All internal data not set by the user. All 'static' data from +old non-reentrant code should be moved here. + +Defined in util.h. Data for which the size is known +in advace should be explicitly declaired (for example, +float xr[576]); Data which needs to be malloc'd is +handled by: + +1. in lame_init_params(), malloc the data +2. be sure to free the data in freegfc() + + +If the data to be malloc'd is large and only used in +certain conditions (like resampling), use the following: +this has the disadvantage that it is hard to catch and return error +flags all the way back up the call stack. + +1. Add an initialization variable to the gfc struct: lame_init_resample +2. In the resample routine, there should be some code like this: + + if (0==gfc->lame_init_resample) { + gfc->lame_init_resample=1; + /* initialization code: malloc() data, etc */ + } + +3. The data should be free'd in the routine freegfc(). + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/INSTALL b/lame-3.97/INSTALL new file mode 100644 index 0000000..1de17ce --- /dev/null +++ b/lame-3.97/INSTALL @@ -0,0 +1,210 @@ +LAME 3.xx January 2001 Mark Taylor (http://www.mp3dev.org) + + +======================================================================= +Compile time options +======================================================================= +There are serveral targets which can be built from this +source code: + +lame, lame.exe The command line encoder + +mp3x A GTK based graphical MP3 frame analyzer. For debugging, + development, and studing MP3 frames produced by any + encoder. + +lame_enc.dll a Windows DLL used by many GUIs which support lame. + (Can only be compiled by MSVC???) + + +lame.acm a Windows ACM codec which can be used by + many windows programs, and any directshow program. + See MSVC project files in ACM directory. + Right click on lame.inf to install. + +lame_enc.dshow a Windows direct show filter for lame. Potentially has + more flexability than the ACM codec, but code needs some + work. See MSVC project files in dshow directory + + +libmp3lame.a the static encoding library used by all platforms, required + by all the above targets. + +libmp3lame.so shared version of libmp3lame.a for *NIX platforms + + + +The following compile time options can be used. For libmp3lame.a +and lame_enc.dll, none are required. On non-unix systems, +these options must be set in config.h or in the IDE. +On unix systems, they are set via ./configure. + + +#define HAVE_MPGLIB compile in mpglib's mp3 *decoding* capibility +#define HAVE_VORBIS compile in Vorbis decoding capibility + (you need libvorbis already built) +#define NOANALYSIS do not compile in hooks used by the + MP3 frame analyzer. + + +Options for the command line encoder: +#define LIBSNDFILE to use Erik de Castro Lopo's libsndfile + for input. +#define BRHIST to allow the optional display of the VBR histogram + + + +======================================================================= +Building the software on *NIX platforms using configure: +======================================================================= +Run the following commands: + +% ./configure +% make +% make install + +For a complete list of options, try "./configure --help" +Some of the more usefull options: + +For the encoding library: + + --enable-mp3x Build the mp3 frame analyzer, 'mp3x' + + --enable-mp3rtp Build the encode-to-RTP program, 'mp3rtp' + (broken as of August 2001) + + +For the LAME front end encoder: + + --with-fileio=lame Use lame's internal file io routines [default] + =sndfile Use Erik de Castro Lopo's libsndfile + (Supports many more input formats, but no stdin possible currently) + + --with-sndfile-prefix=DIR Alternate location for libsndfile + (if --with-fileio=sndfile) + + --enable-brhist Include the VBR bitrate histogram feature + (default:yes if any ncurses/termcap available)" + + +Other usefull configure options: + + --enable-debug Build a debug version + + --enable-expopt Enable some more optimizations flags for + the compiler, may or may not produce + faster code + + --prefix = PATH default is /usr/local + (LAME currently installs: + /usr/local/bin/lame + /usr/local/lib/libmp3lame.a + /usr/local/lib/libmp3lame.so + /usr/local/include/lame.h + + + --with-vorbis Enable Ogg Vorbis decoding support + --with-vorbis-prefix = PATH specify where to find Vorbis libs + + +Some more advanced ways to influence the build procedure +(experienced users only, use it at your own risk): + + - If you want to use some custom defines for building (e.g. some out + of the file "DEFINES") use: + + * bourne shell or compatible (ash, bash, zsh, ...): + CONFIG_DEFS="-Dmy_define" ./configure + + * C shell or compatible (csh, tcsh, ...): + setenv CONFIG_DEFS "-Dmy_define" + ./configure + + - If you want to use some additional options for the compiler: + + * bourne shell or compatible (ash, bash, zsh, ...): + CFLAGS="--my_flag" ./configure + + * C shell or compatible (csh, tcsh, ...): + setenv CFLAGS "--my_flag" + ./configure + + Or some combination of the above. + + Note: + If configure detects the presents of "nasm" some additional speed + improvements get compiled in (additional assembler code to detect + and use multimedia extensions of the used processor). + + +======================================================================= +Building the software on *NIX platforms without configure: +======================================================================= +% make -f Makefile.unix + + + +======================================================================= +Building the software on Windows with MSVC: +(or MSVC + 3rd party C compiler) +======================================================================= +There are MSVC project files, and a Makefile.MSVC included +with the project. For production use, be sure to compile +a "Release" target, with the "maximum speed" compile +option, and #define NDEBUG. + +It is possible to compile the GTK frame analyzer under windows, see +README.WINGTK + +Various build options can be set in configMS.h + +Note: project files for building lame.exe seem to be broken or not +quite compatable with MSVC6. The most reliable way to build lame and +lame_enc.dll is to run the .bat script (comes with MSVC6) which sets +up your VC environment to work from the command line, and then: + +copy configMS.h config.h +nmake -f Makefile.MSVC comp=msvc asm=no + +Project files for the dll, ACM codec and directshow filter +seem to be in better sahpe. + + + + + + +======================================================================= +Building the software on Windows with free compilers: +======================================================================= +LAME can be compiled with various Windows MSDOS ports (all free) +of GCC (DJGPP, Mingw32). See README.DJGPP. + +For Mingw32, you should now be able to use the Unix Makefile that +comes with LAME. Try: "make -f Makefile.unix UNAME=MSDOS" +You may need to remove these lines from brhist.c: + +#ifdef _WIN32 +COORD Pos; +HANDLE CH; +CONSOLE_SCREEN_BUFFER_INFO CSBI; +#endif + +Mingw32 users may also try to use the unix configure script (explained +above), it has _untested_ support for Mingw32. + +Cygwin users should use the unix configure script (explained above). If +you have problems with the configure script try: + CC=gcc ./configure +Patches to enable the build of the lame_enc.dll with Cygwin and autoconf / +automake / libtool are welcome! + +To use the Borland C compiler (now free!) see README.B32 and Makefile.B32. +Borland can also compile the lame_enc.dll, but this is untested. + +Can DJGPP or Mingw32 produce lame_enc.dll? + +Various build options can be set in configMS.h + + + diff --git a/lame-3.97/INSTALL.configure b/lame-3.97/INSTALL.configure new file mode 100644 index 0000000..50dbe43 --- /dev/null +++ b/lame-3.97/INSTALL.configure @@ -0,0 +1,183 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/lame-3.97/LICENSE b/lame-3.97/LICENSE new file mode 100644 index 0000000..0c9ea67 --- /dev/null +++ b/lame-3.97/LICENSE @@ -0,0 +1,20 @@ +Can I use LAME in my commercial program? + +Yes, you can, under the restrictions of the LGPL. The easiest +way to do this is to: + +1. Link to LAME as separate library (libmp3lame.a on unix or + lame_enc.dll on windows) + +2. Fully acknowledge that you are using LAME, and give a link + to our web site, www.mp3dev.org + +3. If you make modifications to LAME, you *must* release these + these modifications back to the LAME project, under the LGPL. + + +*** IMPORTANT NOTE *** + +The decoding functions provided in LAME use the mpglib decoding engine which +is under the GPL. They may not be used by any program not released under the +GPL unless you obtain such permission from the MPG123 project (www.mpg123.de). diff --git a/lame-3.97/Makefile.MSVC b/lame-3.97/Makefile.MSVC new file mode 100644 index 0000000..50a953e --- /dev/null +++ b/lame-3.97/Makefile.MSVC @@ -0,0 +1,651 @@ +# Makefile.MSVC: MSVC Makefile for LAME +# +# 2000-11-21 Robert Hegemann +# dedicated to the LAME project http://www.mp3dev.org +############################################################################### + + + +#__ readme ____________________________________________________________________ +# nmake -f Makefile.MSVC +# -> build lame and dll, but not mp3x +# -> use Robert's code modifications +# -> assume INTEL compiler available +# -> assume NASM available +# -> assemble MMX code with NASM +# -> optimize for PIII +# -> single file optimizations +# -> no compiler warnings +# +# passing arguments, one can modify the default behaviour: +# COMP= -> use MS compiler +# WARN= -> give verbose compiler warnings +# ASM= -> no NASM nor MMX +# MMX= -> do not assemble MMX code +# CFG= -> disable Robert's modifications +# CPU=P1 -> optimize for Pentium instead of P II/III +# CPU=P2 -> optimize for Pentium II/III, you need a PII or better +# CPU=P3 -> optimize for Pentium III, you need a PIII or better +# GTK=YES -> have GTK, adds mp3x to default targets +# PREC=SLOPPY -> use single float instead of double +# +# Example: +# nmake -f Makefile.MSVC CPU=P1 GTK=YES +#____________________________________________________________________ readme __ + + + +# targets <-> DOS filenames + +T_LAME = lame.exe +T_LDLL = lame_enc.dll +T_MP3X = mp3x.exe + +# default targets + +PGM = $(T_LDLL) $(T_LAME) + +# some default settings + +! IF "$(MSVCVER)" != "" +COMP = MS +! IF "$(MSVCVER)" == "Win64" +! IF "$(ASM)" == "" +ASM = NO # or it could be ML64 if we want to use it... +GTK = NO +! ENDIF +! ENDIF +! ELSE +! IF "$(COMP)" == "" +COMP = INTEL +! ENDIF +! ENDIF + +! IF "$(ASM)" == "" +ASM = YES +! ENDIF + +! IF "$(MMX)" == "" +MMX = YES +! ENDIF + +! IF "$(CFG)" == "NO-ALTERNATE-CODE-AVAILABLE" +CFG = RH +! ENDIF + +! IF "$(CPU)" == "" +CPU = P2auto +! ENDIF + +! IF "$(WARN)" == "" +WARN = OFF +! ENDIF + +! IF "$(PREC)" == "" +PREC = DOUBLE +! ENDIF + + +OFF = win32 + +! MESSAGE ---------------------------------------------------------------------- +! IF "$(CFG)" == "" +! MESSAGE building LAME +! ELSE +! MESSAGE building LAME featuring $(CFG) +! ENDIF +! IF "$(ASM)" == "YES" +! MESSAGE + ASM +! IF "$(MMX)" == "YES" +! MESSAGE + MMX +! ENDIF +! ENDIF +! IF "$(GTK)" == "YES" +! MESSAGE + GTK +! ENDIF +! IF "$(COMP)" == "INTEL" +! MESSAGE using INTEL COMPILER +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) +! ELSE +! IF "$(CPU)" == "P2" +! MESSAGE + you need a Pentium II or better +! ELSE +! IF "$(CPU)" == "P3" +! MESSAGE + you need a Pentium III or better +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ENDIF +! ENDIF +! ELSE +! IF "$(MSVCVER)" == "6.0" +! MESSAGE + using MSVC 6.0 32-Bit Compiler +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ELSEIF "$(MSVCVER)" == "8.0" +! MESSAGE + using MSVC 8.0 32-Bit Compiler +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ELSE +! IF "$(MSVCVER)" == "Win64" +! MESSAGE + using MS 64-Bit Compiler +! ELSE +! MESSAGE using MS COMPILER +! IF "$(CPU)" == "P1" +! MESSAGE + optimizing for Pentium (MMX) (may slow down PIII a few percent) +! ELSE +! MESSAGE + optimizing for Pentium II/III +! ENDIF +! ENDIF +! ENDIF +! ENDIF +! IF "$(PREC)" == "SINGLE" +! MESSAGE + using Single precision +! ENDIF +! MESSAGE ---------------------------------------------------------------------- + +! IF "$(COMP)" != "INTEL" +! IF "$(COMP)" != "BCC" + +#__ Microsoft C options _______________________________________________________ +# +# /O2 maximize speed +# /Ob inline expansion +# /Og enable global optimizations +# /Oi enable intrinsic functions +# /Ot favor code speed +# /Oy enable frame pointer omission +# /G5 Pentium optimization +# /G6 Pentium II/III optimization +# /GA optimize for Windows Application +# /GF enable read-only string pooling +# /Gf enable string spooling +# /Gs disable stack checking calls +# /Gy separate functions for linker +# /QIfdiv generate code for Pentium FDIV fix +# /QI0f generate code for Pentium 0x0f erratum fix +# +# remarks: +# - aliasing options seem to break code +# - try to get the Intel compiler demonstration code! +# ICL produces faster code. + +# debugging options +# CC_OPTS = /nologo /Zi /Ge /GZ +# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no + +# profiling options +# CC_OPTS = /nologo /Zi /O2b2gity /G6As /DNDEBUG +# LN_OPTS = /nologo /debug:full /debugtype:cv /fixed:no /profile + +# release options +! IF "$(MSVCVER)" == "Win64" +CC_OPTS = /nologo /DWin64 /O2b2ity /GAy /Gs1024 /Zp8 /GL /GS- /Zi +! ELSEIF "$(MSVCVER)" == "8.0" +CC_OPTS = /nologo /DNDEBUG /O2 /Ob2 /GAy /Gs1024 /Zp8 /GL /Zi +! ELSE +CC_OPTS = /nologo /DNDEBUG /O2 /Ob2 /GAy /Gs1024 /QIfdiv /QI0f /YX +! ENDIF + +! IF "$(NODEBUG)" == "1" +CC_OPTS = $(CC_OPTS) /DNDEBUG +! ENDIF + +! IF "$(MSVCVER)" == "6.0" +! IF "$(CPU)" == "P1" +CC_OPTS = $(CC_OPTS) /G5 +! ELSE +CC_OPTS = $(CC_OPTS) /G6 +! ENDIF +! ENDIF + +! IF "$(WARN)" == "OFF" +CC_OPTS = $(CC_OPTS) /w +! ELSE +CC_OPTS = $(CC_OPTS) /W$(WARN) +! ENDIF + +! IF "$(PREC)" == "SINGLE" +CC_OPTS = $(CC_OPTS) /DFLOAT8=float /DREAL_IS_FLOAT=1 +! ENDIF + +CC_OUT = /Fo + +! IF "$(MSVCVER)" == "Win64" +! IF "$(NODEBUG)" == "1" +LN_OPTS = /nologo /map:lame.map +LN_DLL = /DLL +LN_OUT = /OUT: +! ELSE +LN_OPTS = /nologo /DEBUG /pdb:lame.pdb /map:lame.map +LN_DLL = /DLL /DEBUG +LN_OUT = /OUT: +! ENDIF +! ELSEIF "$(MSVCVER)" == "8.0" +! IF "$(NODEBUG)" == "1" +LN_OPTS = /nologo /map:lame.map +LN_DLL = /DLL +LN_OUT = /OUT: +! ELSE +LN_OPTS = /nologo /DEBUG /pdb:lame.pdb /map:lame.map +LN_DLL = /DLL /DEBUG +LN_OUT = /OUT: +! ENDIF +! ELSE +! IF "$(NODEBUG)" == "1" +LN_OPTS = /nologo /map:lame.map +LN_DLL = /DLL +LN_OUT = /OUT: +! ELSE +LN_OPTS = /nologo +LN_DLL = /DLL /DEBUG /pdb:lame.pdb /map:lame.map +LN_OUT = /OUT: +! ENDIF +! ENDIF + +! IF "$(MSVCVER)" == "Win64" +CC = cl +LN = link +! ELSE +CC = cl +LN = link +! ENDIF +#_______________________________________________________ Microsoft C options __ + + +! ELSE + +#__ Borland BCC options _______________________________________________________ +# +# first draft, DLL not working, generates very slow code! +BCCINST = C:/Borland/BCC55 + +CC_OPTS = -pc -q -ff -fp -jb -j1 -tWC -tWM -O2 -OS -I$(BCCINST)/include -DNDEBUG -DWIN32 +# dll >> -tWD +LN_OPTS = -lGn -lGi -lap -lx -L$(BCCINST)/lib +# dll >> -Tpd +! IF "$(CPU)" == "P1" +CC_OPTS = $(CC_OPTS) -5 +! ELSE +CC_OPTS = $(CC_OPTS) -6 +! ENDIF + +! IF "$(WARN)" == "OFF" +CC_OPTS = $(CC_OPTS) -w- +! ELSE +CC_OPTS = $(CC_OPTS) +! ENDIF + +LN_DLL = +#$(CCINST)/lib/cw32R.lib +LN_OUT = -e +CC_OUT = -o + +CC = bcc32 +LN = bcc32 + +OFF = obj +PGM = $(T_LAME) + +! ENDIF +#_______________________________________________________ Borland BCC options __ + + +! ELSE + +#__ Intel 4.5 options _________________________________________________________ +# +# /YX enable automatic precompiled header file creation/usage +# /Ox maximum optimization same as /O2 without /Gfy +# /O2 same as /Gfsy /Ob1gyti +# /Gd 1) make cdecl the default calling convention +# /G5 2) optimized for Pentium +# /G6 3) optimized for Pentium II/III +# /GA assume single threaded +# /Gs[n] disable stack checks for functions with /dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-libtool clean-recursive \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-info-am + + +# end global section + +.PHONY: test + +# +# The differences depend on the used processor architecture, the used +# compiler and the used options for the compiler, so make test may +# show some differences. You should only be concerned if you are a +# LAME developer and the number of differences change after you +# modified the source. +# +testcase.new.mp3: testcase.wav frontend/lame$(EXEEXT) + time frontend/lame$(EXEEXT) --nores $(top_srcdir)/testcase.wav testcase.new.mp3 || $(RM_F) testcase.new.mp3 + +test: testcase.mp3 testcase.new.mp3 + @echo + @echo "The following output has value only for a LAME-developer, do not make _any_" + @echo "assumptions about what this number means. You do not need to care about it." + @cmp -l testcase.new.mp3 $(top_srcdir)/testcase.mp3 | wc -l + +testupdate: testcase.mp3 testcase.new.mp3 + cp testcase.new.mp3 $(top_srcdir)/testcase.mp3 + +testg: frontend/mp3x$(EXEEXT) $(top_srcdir)/../test/castanets.wav + frontend/mp3x$(EXEEXT) -h $(top_srcdir)/../test/castanets.wav + +update: + cd $(top_srcdir) && CVS_RSH=ssh cvs -z3 -q update -dAP || true + +diff: + cd $(top_srcdir) && CVS_RSH=ssh cvs -z3 diff -u || true + +frontend/lame$(EXEEXT): + $(MAKE) $(MAKEFLAGS) + +frontend/mp3x$(EXEEXT): frontend/lame$(EXEEXT) +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/Makefile.unix b/lame-3.97/Makefile.unix new file mode 100644 index 0000000..f19aad1 --- /dev/null +++ b/lame-3.97/Makefile.unix @@ -0,0 +1,614 @@ +# Makefile for LAME 3.xx +# +# LAME is reported to work under: +# Linux (i86), NetBSD 1.3.2 (StrongARM), FreeBSD (i86) +# Compaq Alpha(OSF, Linux, Tru64 Unix), Sun Solaris, SGI IRIX, +# OS2 Warp, Macintosh PPC, BeOS, Amiga and even VC++ +# + +# these variables are available on command line: +# +# make UNAME=xxxxx ARCH=xxxxx - specify a type of host +# make PGM=lame_exp - specify a name of an executable file +# +# if you have mingw32-gcc, try: +# make -fMakefile.unix UNAME=MSDOS +# or if you get the error +# "process_begin: CreateProcess((null), copy configMS.h config.h, ...)": +# make -fMakefile.unix UNAME=MSDOS NOUNIXCMD=NO +# or if you have NASM: +# make -fMakefile.unix UNAME=MSDOS HAVE_NASM=YES +# + +ifeq ($(UNAME),MSDOS) + UNAME ?= UNKNOWN + ARCH = x86 + NOUNIXCMD = YES +else + UNAME = $(shell uname) + ARCH = $(shell uname -m) + iARCH = $(patsubst i%86,x86,$(ARCH)) +endif + +HAVE_NASM = NO +HAVE_NEWER_GLIBC = NO + +# generic defaults. OS specific options go in versious sections below +PGM = lame +CC = gcc +CC_OPTS = -O +CPP_OPTS = -Iinclude -Impglib -Ifrontend -Ilibmp3lame +AR = ar +RANLIB = ranlib +GTK = +GTKLIBS = +LIBSNDFILE = +LIBS = -lm +MP3LIB = libmp3lame/libmp3lame.a +MP3LIB_SHARED = libmp3lame/libmp3lame.so +MAKEDEP = -M +BRHIST_SWITCH = +LIBTERMCAP = +RM = rm -f + +CPP_OPTS += -DHAVE_CONFIG_H -I. + +########################################################################## +# -DHAVEMPGLIB compiles the mpglib *decoding* library into libmp3lame +########################################################################## +CPP_OPTS += -DHAVE_MPGLIB + +########################################################################## +# -DUSE_LAYER_1/2 enables Layer1 or Layer2 *decoding* abilities +########################################################################## +CPP_OPTS += -DUSE_LAYER_1 -DUSE_LAYER_2 + +########################################################################## +# -DTAKEHIRO_IEEE754_HACK enables Takehiro's IEEE hack +########################################################################## +ifeq ($(iARCH),x86) + CPP_OPTS += -DTAKEHIRO_IEEE754_HACK +endif + +########################################################################## +# Define these in the OS specific sections below to compile in code +# for the optional VBR bitrate histogram. +# Requires ncurses, but libtermcap also works. +# If you have any trouble, just dont define these +# +# BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_{NCURSES_}TERMCAP_H +# LIBTERMCAP = -lncurses +# LIBTERMCAP = -ltermcap +# +# or, to try and simulate TERMCAP (ANSI), use: +# BRHIST_SWITCH = -DBRHIST +# +########################################################################## + + +########################################################################## +# Define these in the OS specific sections below to compile in code for: +# +# SNDLIB = -DLIBSNDFILE to use Erik de Castro Lopo's libsndfile +# http://www.zip.com.au/~erikd/libsndfile/ instead of LAME's internal +# routines. Also set: +# +# LIBSNDFILE = -lsndfile +# or +# LIBSNDFILE = -L/location_of_libsndfile -lsndfile +# +########################################################################## + + +########################################################################## +# Define these in the OS specific sections below to compile in code for +# the GTK mp3 frame analyzer +# +# Requires -DHAVE_MPGLIB +# +# GTK = -DHAVE_GTK `gtk-config --cflags` +# GTKLIBS = `gtk-config --libs` +# +########################################################################## + + + + +########################################################################## +# LINUX +########################################################################## +ifeq ($(UNAME),Linux) +# remove these lines if you dont have GTK, or dont want the GTK frame analyzer + GTK = -DHAVE_GTK `gtk-config --cflags` + GTKLIBS = `gtk-config --libs` +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H + LIBTERMCAP = -lncurses +# uncomment to use LIBSNDFILE +# SNDLIB = -DLIBSNDFILE +# LIBSNDFILE=-lsndfile + +# suggested for gcc-2.7.x +# CC_OPTS = -O3 -fomit-frame-pointer -funroll-loops -ffast-math -finline-functions -Wall -pedantic +# CC_OPTS = -O9 -fomit-frame-pointer -fno-strength-reduce -mpentiumpro -ffast-math -finline-functions -funroll-loops -Wall -malign-double -g -march=pentiumpro -mfancy-math-387 -pipe -pedantic + +# for debugging: + CC_OPTS = -UNDEBUG -O -Wall -pedantic -ggdb -DABORTFP + +# for lots of debugging: +# CC_OPTS = -DDEBUG -UNDEBUG -O -Wall -pedantic -g -DABORTFP + + +ifeq ($(CFG),RH) + CPP_OPTS += -DFLOAT8=float -DREAL_IS_FLOAT=1 +# these options for gcc-3.2 & AthlonXP + CC_OPTS = \ + -pipe -O3 \ + -Wall -W -Wmissing-declarations -Wfloat-equal \ + -Wcast-qual -Wcast-align -Wdisabled-optimization -Wshadow \ + -march=athlon-xp \ + -malign-double \ + -maccumulate-outgoing-args +# -Wconversion -Wunreachable-code \ + + HAVE_NEWER_GLIBC = YES + HAVE_NASM = YES +endif + +ifeq ($(CFG),PFK) + CPP_OPTS += -DKLEMM -DKLEMM_00 -DKLEMM_01 -DKLEMM_02 -DKLEMM_03 -DKLEMM_04 -DKLEMM_05 -DKLEMM_06 -DKLEMM_07 -DKLEMM_08 -DKLEMM_09 -DKLEMM_10 -DKLEMM_11 -DKLEMM_12 -DKLEMM_13 -DKLEMM_14 -DKLEMM_15 -DKLEMM_16 -DKLEMM_17 -DKLEMM_18 -DKLEMM_19 -DKLEMM_20 -DKLEMM_21 -DKLEMM_22 -DKLEMM_23 -DKLEMM_24 -DKLEMM_25 -DKLEMM_26 -DKLEMM_27 -DKLEMM_28 -DKLEMM_29 -DKLEMM_30 -DKLEMM_31 -DKLEMM_32 -DKLEMM_33 -DKLEMM_34 -DKLEMM_35 -DKLEMM_36 -DKLEMM_37 -DKLEMM_38 -DKLEMM_39 -DKLEMM_40 -DKLEMM_41 -DKLEMM_42 -DKLEMM_43 -DKLEMM_44 -DKLEMM_45 -DKLEMM_46 -DKLEMM_47 -DKLEMM_48 -DKLEMM_49 -DKLEMM_50 + CC_OPTS = \ + -Wall -O9 -fomit-frame-pointer -march=pentium \ + -finline-functions -fexpensive-optimizations \ + -funroll-loops -funroll-all-loops -pipe -fschedule-insns2 \ + -fstrength-reduce \ + -malign-double -mfancy-math-387 -ffast-math + + HAVE_NEWER_GLIBC = YES + HAVE_NASM = YES +endif + +########################################################################## +# LINUX on Digital/Compaq Alpha CPUs +########################################################################## +ifeq ($(ARCH),alpha) + +################################################################ +#### Check if 'ccc' is in our path +#### if not, use 'gcc' +################################################################ +ifeq ($(shell which ccc 2>/dev/null | grep -c ccc),0) + +# double is faster than float on Alpha +CC_OPTS = -O4 -pedantic -Wall -fomit-frame-pointer -ffast-math -funroll-loops \ + -mfp-regs -fschedule-insns -fschedule-insns2 \ + -finline-functions \ +# -DFLOAT=double +# add "-mcpu=21164a -Wa,-m21164a" to optimize for 21164a (ev56) CPU + +################################################################ +#### else, use 'ccc' +################################################################ +else + +# Compaq's C Compiler +CC = ccc + +################################################################ +#### set 'CC_OPTS = -arch host -tune host' to generate/tune instructions for this machine +#### 'CC_OPTS += -migrate -fast -inline speed -unroll 0' tweak to run as fast as possible :) +#### 'CC_OPTS += -w0 -pedantic -Wall' set warning and linking flags +################################################################ +CC_OPTS = -arch host -tune host +CC_OPTS += -migrate -fast -inline speed -unroll 0 +CC_OPTS += -w0 -pedantic -Wall + + +################################################################ +#### to debug, uncomment +################################################################ +# For Debugging +#CC_OPTS += -g3 + +################################################################ +#### define __DECALPHA__ (i was getting re-declaration warnings +#### in machine.h +################################################################ +# Define DEC Alpha +CPP_OPTS += -D__DECALPHA__ + +# standard Linux libm +#LIBS = -lm +# optimized libffm (free fast math library) +#LIBS = -lffm +# Compaq's fast math library +LIBS = -lcpml +endif # gcc or ccc? +endif # alpha +endif # linux + + + +########################################################################## +# FreeBSD +########################################################################## +ifeq ($(UNAME),FreeBSD) +# remove if you do not have GTK or do not want the GTK frame analyzer + GTK = -DHAVE_GTK `gtk12-config --cflags` + GTKLIBS = `gtk12-config --libs` +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H + LIBTERMCAP = -lncurses + +endif + + +########################################################################## +# OpenBSD +########################################################################## +ifeq ($(UNAME),OpenBSD) +# remove if you do not have GTK or do not want the GTK frame analyzer + GTK = -DHAVE_GTK `gtk-config --cflags` + GTKLIBS = `gtk-config --libs` +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H + LIBTERMCAP = -lcurses +endif + + + + +########################################################################## +# SunOS +########################################################################## +ifeq ($(UNAME),SunOS) + CC = cc + CC_OPTS = -O -xCC + MAKEDEP = -xM +# for gcc, use instead: +# CC = gcc +# CC_OPTS = -O +# MAKEDEP = -M +endif + + +########################################################################## +# SGI +########################################################################## +ifeq ($(UNAME),IRIX64) + CC = cc + CC_OPTS = -O3 -woff all + +#optonal: +# GTK = -DHAVE_GTK `gtk-config --cflags` +# GTKLIBS = `gtk-config --libs` +# BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_TERMCAP_H +# LIBTERMCAP = -lncurses + +endif +ifeq ($(UNAME),IRIX) + CC = cc + CC_OPTS = -O3 -woff all +endif + + + +########################################################################## +# Compaq Alpha running Dec Unix (OSF) +########################################################################## +ifeq ($(UNAME),OSF1) + CC = cc + CC_OPTS = -fast -O3 -std -g3 -non_shared +endif + +########################################################################## +# BeOS +########################################################################## +ifeq ($(UNAME),BeOS) + CC = $(BE_C_COMPILER) + LIBS = +ifeq ($(ARCH),BePC) + CC_OPTS = -O9 -fomit-frame-pointer -march=pentium \ + -mcpu=pentium -ffast-math -funroll-loops \ + -fprofile-arcs -fbranch-probabilities +else + CC_OPTS = -opt all + MAKEDEP = -make +endif +endif + +########################################################################### +# MOSXS (Rhapsody PPC) +########################################################################### +ifeq ($(UNAME),Rhapsody) + CC = cc + LIBS = + CC_OPTS = -O9 -ffast-math -funroll-loops -fomit-frame-pointer + MAKEDEP = -make + +endif +########################################################################## +# OS/2 +########################################################################## +# Properly installed EMX runtime & development package is a prerequisite. +# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 +# +########################################################################## +ifeq ($(UNAME),OS/2) + SHELL=sh + CC = gcc + CC_OPTS = -O3 -D__OS2__ + PGM = lame.exe + LIBS = + RANLIB = touch + +# I use the following for slightly better performance on my Pentium-II +# using pgcc-2.91.66: +# CC_OPTS = -O6 -ffast-math -funroll-loops -mpentiumpro -march=pentiumpro -D__OS2__ +# for the unfortunates with a regular pentium (using pgcc): +# CC_OPTS = -O6 -ffast-math -funroll-loops -mpentium -march=pentium -D__OS2__ + +# Comment out next 2 lines if you want to remove VBR histogram capability + BRHIST_SWITCH = -DBRHIST -DHAVE_TERMCAP -DHAVE_{NCURSES_}TERMCAP_H + LIBTERMCAP = -lncurses + +# Uncomment & inspect the 2 GTK lines to use MP3x GTK frame analyzer. +# Properly installed XFree86/devlibs & GTK+ is a prerequisite. +# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: +# GTK = -DHAVE_GTK -IC:/XFree86/include/gtk12 -Zmt -D__ST_MT_ERRNO__ -IC:/XFree86/include/glib12 -IC:/XFree86/include +# GTKLIBS = -LC:/XFree86/lib -Zmtd -Zsysv-signals -Zbin-files -lgtk12 -lgdk12 -lgmodule -lglib12 -lXext -lX11 -lshm -lbsd -lsocket -lm +endif + +########################################################################### +# MSDOS/Windows +########################################################################### +ifeq ($(UNAME),MSDOS) + RM = + CC_OPTS = \ + -Wall -pipe -O3 -fomit-frame-pointer -ffast-math -funroll-loops \ + -fschedule-insns2 -fmove-all-movables -freduce-all-givs \ + -mcpu=pentium -march=pentium -mfancy-math-387 + CC_OPTS += -D_cdecl=__cdecl + PGM = lame.exe +endif + +########################################################################### +# AmigaOS +########################################################################### +# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS +# +########################################################################### +ifeq ($(UNAME),AmigaOS) + CC = gcc -noixemul + CC_OPTS = -O3 -ffast-math -funroll-loops -m68020-60 -m68881 + BRHIST_SWITCH = -DBRHIST + MAKEDEP = -MM + ifeq ($(ARCH),WOS) + CC = ppc-amigaos-gcc -warpup + CC_OPTS = -O3 -ffast-math -fomit-frame-pointer -funroll-loops \ + -mmultiple -mcpu=603e + AR = ppc-amigaos-ar + RANLIB = ppc-amigaos-ranlib + LIBS = + endif + ifeq ($(ARCH),PPC) + CC = ppc-amigaos-gcc + CC_OPTS = -O3 -ffast-math -fomit-frame-pointer -funroll-loops \ + -mmultiple -mcpu=603e + AR = ppc-amigaos-ar + RANLIB = ppc-amigaos-ranlib + LIBS = + endif +endif + + + + + + + + + + + + + + + + +# 10/99 added -D__NO_MATH_INLINES to fix a bug in *all* versions of +# gcc 2.8+ as of 10/99. + +ifeq ($(HAVE_NEWER_GLIBC),YES) +CC_SWITCHES = +else +CC_SWITCHES = -D__NO_MATH_INLINES # only needed by some older glibc +endif + +CC_SWITCHES += -DNDEBUG $(CC_OPTS) $(SNDLIB) $(GTK) $(BRHIST_SWITCH) +frontend_sources = \ + frontend/amiga_mpega.c \ + frontend/brhist.c \ + frontend/get_audio.c \ + frontend/lametime.c \ + frontend/parse.c \ + frontend/portableio.c \ + frontend/timestatus.c + +lib_sources = \ + libmp3lame/bitstream.c \ + libmp3lame/encoder.c \ + libmp3lame/fft.c \ + libmp3lame/gain_analysis.c \ + libmp3lame/id3tag.c \ + libmp3lame/lame.c \ + libmp3lame/newmdct.c \ + libmp3lame/psymodel.c \ + libmp3lame/quantize.c \ + libmp3lame/quantize_pvt.c \ + libmp3lame/set_get.c \ + libmp3lame/vbrquantize.c \ + libmp3lame/reservoir.c \ + libmp3lame/tables.c \ + libmp3lame/takehiro.c \ + libmp3lame/util.c \ + libmp3lame/mpglib_interface.c \ + libmp3lame/VbrTag.c \ + libmp3lame/version.c \ + libmp3lame/presets.c \ + mpglib/common.c \ + mpglib/dct64_i386.c \ + mpglib/decode_i386.c \ + mpglib/layer1.c \ + mpglib/layer2.c \ + mpglib/layer3.c \ + mpglib/tabinit.c \ + mpglib/interface.c + + +#ifeq ($(UNAME),MSDOS) +# frontend_sources := $(subst /,\,$(frontend_sources)) +# lib_sources := $(subst /,\,$(lib_sources)) +#endif + +frontend_obj = $(frontend_sources:.c=.o) +lib_obj = $(lib_sources:.c=.o) + +DEP = $(frontend_sources:.c=.d) $(lib_sources:.c=.d ) + +gtk_sources = frontend/gtkanal.c frontend/gpkplotting.c +gtk_obj = $(gtk_sources:.c=.o) +gtk_dep = $(gtk_sources:.c=.d) + + + +NASM = nasm +ASFLAGS=-f elf -i libmp3lame/i386/ + +# for people with nasmw +ifeq ($(UNAME),MSDOS) + NASM = nasmw + ASFLAGS=-f win32 -DWIN32 -i libmp3lame/i386/ +endif + +%.o: %.nas + $(NASM) $(ASFLAGS) $< -o $@ +%.o: %.s + gcc -c $< -o $@ + + +#HAVE_NASM = YES + +ifeq ($(HAVE_NASM),YES) +## have NASM +CC_SWITCHES += -DHAVE_NASM +lib_obj += libmp3lame/i386/cpu_feat.o + +## use MMX extension. you need nasm and MMX supported CPU. +CC_SWITCHES += -DMMX_choose_table +lib_obj += libmp3lame/i386/choose_table.o + +## use 3DNow! extension. you need nasm and 3DNow! supported CPU. +lib_obj += libmp3lame/i386/fft3dn.o + +## not yet coded +#CC_SWITCHES += -DUSE_FFTSSE +#lib_obj += libmp3lame/i386/fftsse.o + +## not yet coded +#CC_SWITCHES += -DUSE_FFTFPU +#lib_obj += libmp3lame/i386/fftfpu.o +endif + + +%.o: %.c + $(CC) $(CPP_OPTS) $(CC_SWITCHES) -c $< -o $@ + +%.d: %.c + ifeq ($(NOUNIXCMD),YES) + $(CC) $(MAKEDEP) $(CPP_OPTS) $(CC_SWITCHES) $< > $@ + else + $(SHELL) -ec '$(CC) $(MAKEDEP) $(CPP_OPTS) $(CC_SWITCHES) $< | sed '\''s;$*.o;& $@;g'\'' > $@' + endif + +all: frontend/$(PGM) + +$(lib_sources) $(frontend_sources) $(gtk_sources) : config.h + +config.h: configMS.h + ifeq ($(NOUNIXCMD),YES) + copy configMS.h config.h + else + cp configMS.h config.h + endif + +frontend/$(PGM): frontend/main.o $(frontend_obj) $(MP3LIB) + $(CC) $(CC_OPTS) -o frontend/$(PGM) frontend/main.o $(frontend_obj) \ + $(MP3LIB) $(LIBS) $(LIBSNDFILE) $(LIBTERMCAP) + +mp3x: frontend/mp3x.o $(frontend_obj) $(gtk_obj) $(MP3LIB) + $(CC) $(CC_OPTS) -o frontend/mp3x frontend/mp3x.o $(frontend_obj) $(gtk_obj) $(MP3LIB) \ + $(LIBS) $(LIBSNDFILE) $(GTKLIBS) $(LIBTERMCAP) + +mp3rtp: frontend/rtp.o frontend/mp3rtp.o $(frontend_obj) $(MP3LIB) + $(CC) $(CC_OPTS) -o frontend/mp3rtp frontend/mp3rtp.o frontend/rtp.o $(frontend_obj) $(MP3LIB) \ + $(LIBS) $(LIBSNDFILE) $(LIBTERMCAP) + +libmp3lame/libmp3lame.a: $(lib_obj) + $(AR) cr libmp3lame/libmp3lame.a $(lib_obj) + $(RANLIB) libmp3lame/libmp3lame.a + +#shared library. GNU specific? +libmp3lame/libmp3lame.so: $(lib_obj) + gcc -shared -Wl,-soname,libmp3lame/libmp3lame.so -o libmp3lame/libmp3lame.so $(lib_obj) + +install: frontend/$(PGM) #libmp3lame.a + cp frontend/$(PGM) /usr/bin + #cp libmp3lame.a /usr/lib + #cp lame.h /usr/lib + + + +clean: + ifeq ($(UNAME),MSDOS) + -del $(subst /,\,$(frontend_obj)) + -del $(subst /,\,$(lib_obj)) + -del $(subst /,\,$(gtk_obj)) + -del $(subst /,\,$(DEP)) + -del frontend\$(PGM) + -del frontend\main.o + -del libmp3lame\libmp3lame.a + else + -$(RM) $(gtk_obj) $(frontend_obj) $(lib_obj) $(DEP) frontend/$(PGM) \ + frontend/main.o frontend/lame libmp3lame/libmp3lame.a \ + frontend/mp3x.o frontend/mp3x + endif + + +tags: TAGS + +TAGS: ${c_sources} + etags -T ${c_sources} + +ifneq ($(MAKECMDGOALS),clean) + -include $(DEP) +endif + + +# +# testcase.mp3 is a 2926 byte file. The first number output by +# wc is the number of bytes which differ between new output +# and 'official' results. +# +# Because of compilier options and effects of roundoff, the +# number of bytes which are different may not be zero, but +# should be at most 30. +# +test: frontend/$(PGM) + frontend/$(PGM) --nores -h testcase.wav testcase.new.mp3 + cmp -l testcase.new.mp3 testcase.mp3 | wc -l + +testg: frontend/$(PGM) + frontend/$(PGM) -g -h ../test/castanets.wav + + diff --git a/lame-3.97/README b/lame-3.97/README new file mode 100644 index 0000000..da15dbb --- /dev/null +++ b/lame-3.97/README @@ -0,0 +1,43 @@ + LAME 3.xx + LAME Ain't an MP3 Encoder + http://www.mp3dev.org + March 2001 + +Originally developed by Mike Cheng (www.uq.net.au/~zzmcheng). Now +maintained by Mark Taylor (www.mp3dev.org). + +This code is distributed under the GNU LESSER PUBLIC LICENSE +(LGPL, see www.gnu.org) with the following modification: + +1. If you determine that distribution of LAME requires a patent license, + and you obtain a patent license, you may distribute LAME even though + redistribution of LAME may also require a patent license. + +2. You agree not to enforce any patent claims for any aspect of + MPEG audio compression, or any other techniques contained in + the LAME source code. + + +============================================================================ + +see the file "INSTALL" for installation (compiling) instructions. +see the file "USAGE" for the most up-to-date guide to the command line options. +see the file "LICENSE" for details on how to use LAME in non-GPL programs. +see the file "HACKING" if you are interested in working on LAME +see the file "API" for details of the LAME encoding library API + +There is HTML documentation and a man page in the doc directory. +The HTML docs were contributed by Gabriel Bouvigne (www.mp3-tech.org). +See www.mp3-tech.org for more audio compression information and links. + +============================================================================ + +LAME uses the MPGLIB decoding engine, from the MPG123 package, written +by: Michael Hipp (www.mpg123.de) MPGLIB is released under the GPL. + +Copyrights (c) 1999,2000,2001 by Mark Taylor +Copyrights (c) 1998 by Michael Cheng +Copyrights (c) 1995,1996,1997 by Michael Hipp: mpglib + +As well as additional copyrights as documented in the source code. + diff --git a/lame-3.97/README.WINGTK b/lame-3.97/README.WINGTK new file mode 100644 index 0000000..cf9f62c --- /dev/null +++ b/lame-3.97/README.WINGTK @@ -0,0 +1,64 @@ + Installation notes on MP3X (the LAME frame analyzer) for WIN32 + +=========================================================================== +Document History: +=========================================================================== + +Initial version by Albert Faber, March 30, 2000 + +Update by Albert Faber (Sept 07 2000), changed instrcutions +to compile with latest glib/gtk libraries. + +Update by Albert Faber (Sept 07 2000), changed instrcutions +to compile with latest glib/gtk libraries. + +Update by Albert Faber (Oct 20 2000), small adaptions to be conform +the new lame directory structure. + +Update by Gabriel Bouvigne (Jan 07 2004), changes to be conform to the +VC6 worspace structure. + + +=========================================================================== +How to compile the MP3 frame analyzer (MP3x): +=========================================================================== + +You first need to get hold of the latest GTK and GLIB include files and lib +files. You can download them freely from the WINGTK project WEB site. +(see http://www.gtk.org, and click on the WINGTK link.) + +Download: glib-dev-VERSION.zip, gtk+-dev-VERSION.zip and extralibs-dev-VERSION.zip +where VERSION indicates the release data, so it will look something like 20000805 + +unzip all three zip files in a WinGTK subdirectory, which is created from the lame +analyzer directory (for example, D:\CVS\lame\WinGtk) + +You will end up with the following directory tree + D:\CVS\lame\analyzer\WinGtk\src\glib + D:\CVS\lame\analyzer\WinGtk\src\gtk+\glib + D:\CVS\lame\analyzer\WinGtk\src\gtk+ + +Set Mp3x as your current active project, recompile everything, and you're done. + + +=========================================================================== +How to run and use the MP3 Frame analyzer +=========================================================================== + +To run MP3x.exe, you need +the GTK DLL files: Either instal them on your system, +or put them in the same directory as mp3x.exe resides. + + + +Example: +mp3x.exe myfile + +myfile can be a mp3 file, or a wav file. + + + + === End of Document === + + + diff --git a/lame-3.97/STYLEGUIDE b/lame-3.97/STYLEGUIDE new file mode 100644 index 0000000..e955dc5 --- /dev/null +++ b/lame-3.97/STYLEGUIDE @@ -0,0 +1,187 @@ +* The LAME API is frozen. Poorly designed as it is, don't change it, + and add to it sparingly. + +* Don't take it upon yourself to go through LAME with the sole purpose + of updating everything to match this guide. Especially important: + don't change the spacing, indentation, curly braces, etc, + in routines you did not write. + +* If you want to make a change which effects many many functions, + please check with the maintainer first. + +* Respect the indentation of the author of the original function. + If the indentation is not consistent, use 4. + +* Don't use tabulators (the character with the value '\t') in source code, + especially these with a width of unequal 8. Lame sources are using + different sizes for tabulators. + +* Don't set the macro NDEBUG in alpha versons. + NDEBUG should be set for beta versions. + +* check important assumptions with an assert() + +* use int for all integer quantities. + LAME requires 32 bit ints, so you can assume int is at least 32 bits. + Don't use 'long'. Don't use 'unsigned' unless ABSOLUTELY necessary. + Don't use 'char' just to save bytes. If 64 bits is required, use int64. + + Annnotation: + ISO C calls the 64 bit int type not int64 but int64_t. + +* Avoid using float or double, and instead use: (defined in machine.h). + + FLOAT for variables which require at least 32bits + FLOAT8 for variables which require at least 64bits + + On some machines, 64bit will be faster than 32bit. Also, some math + routines require 64bit float, so setting FLOAT=float will result in a + lot of conversions. + + Annotation (pfk): + The new ISO C standard passed in autumn 1999 has defined new types for + exactly this reason. There are called float_least32_t and float_least64_t + and have at least the advantage that you not need to explain their + meaning. + + Annotation (mt): + we will adopt this convention in Jan 1, 2003. + + +* The internal representation of PCM samples in type 'sample_t', + currently this is a FLOAT. + +* Use SI base units. Lame mixes Hz, kHz, kbps, bps. This is mess. + + Example: + float wavelength_green = 555.e-9; + unsigned data_rate = 128000; + float lowpass_freq = 12500.; + + Converting between user input and internal representation should be done + near the user interface, not in the most inner loop of an utility + function. + +---------------------------------------------------------------------------------- +Edited version of the Linux Kernel Style Guide: +---------------------------------------------------------------------------------- + + Chapter 1: Indentation + +Respect the indentation of the author of the original function. +If the indentation is not consistent, don't change it. If +you are so anal-retentive about these things and you can't +bare to even look at code with poor indentation, change it to 4. + + + Chapter 2: Placing Braces + +The other issue that always comes up in C styling is the placement of +braces. Unlike the indent size, there are few technical reasons to +choose one placement strategy over the other, but the preferred way, as +shown to us by the prophets Kernighan and Ritchie, is to put the opening +brace last on the line, and put the closing brace first, thusly: + + if (x is true) { + we do y + } + +However, there is one special case, namely functions: they have the +opening brace at the beginning of the next line, thus: + + int function(int x) + { + body of function + } + +Heretic people all over the world have claimed that this inconsistency +is ... well ... inconsistent, but all right-thinking people know that +(a) K&R are _right_ and (b) K&R are right. Besides, functions are +special anyway (you can't nest them in C). + +Note that the closing brace is empty on a line of its own, _except_ in +the cases where it is followed by a continuation of the same statement, +ie a "while" in a do-statement or an "else" in an if-statement, like +this: + + do { + body of do-loop + } while (condition); + +and + + if (x == y) { + .. + } else if (x > y) { + ... + } else { + .... + } + +Rationale: K&R. + +Also, note that this brace-placement also minimizes the number of empty +(or almost empty) lines, without any loss of readability. Thus, as the +supply of new-lines on your screen is not a renewable resource (think +25-line terminal screens here), you have more empty lines to put +comments on. + + + Chapter 3: Naming + +C is a Spartan language, and so should your naming be. Unlike Modula-2 +and Pascal programmers, C programmers do not use cute names like +ThisVariableIsATemporaryCounter. A C programmer would call that +variable "tmp", which is much easier to write, and not the least more +difficult to understand. + +HOWEVER, while mixed-case names are frowned upon, descriptive names for +global variables are a must. To call a global function "foo" is a +shooting offense. + +GLOBAL variables (to be used only if you _really_ need them) need to +have descriptive names, as do global functions. If you have a function +that counts the number of active users, you should call that +"count_active_users()" or similar, you should _not_ call it "cntusr()". + +Encoding the type of a function into the name (so-called Hungarian +notation) is brain damaged - the compiler knows the types anyway and can +check those, and it only confuses the programmer. No wonder MicroSoft +makes buggy programs. + +LOCAL variable names should be short, and to the point. If you have +some random integer loop counter, it should probably be called "i". +Calling it "loop_counter" is non-productive, if there is no chance of it +being mis-understood. Similarly, "tmp" can be just about any type of +variable that is used to hold a temporary value. + + + + Chapter 4: Functions + +Document functions. + +Keep functions as modular as possible. But don't adhere to artificial +line number limitations. For example, lame_encode_frame() encodes a +single MP3 frame and is a long sequence of function calls. It makes +no sense to break this into two or more routines. + + + + Chapter 5: Commenting + +Comments are good, but there is also a danger of over-commenting. NEVER +try to explain HOW your code works in a comment: it's much better to +write the code so that the _working_ is obvious, and it's a waste of +time to explain badly written code. + +Generally, you want your comments to tell WHAT your code does, not HOW. +Also, try to avoid putting comments inside a function body: if the +function is so complex that you need to separately comment parts of it, +you should probably go back to chapter 4 for a while. You can make +small comments to note or warn about something particularly clever (or +ugly), but try to avoid excess. Instead, put the comments at the head +of the function, telling people what it does, and possibly WHY it does +it. + + diff --git a/lame-3.97/TODO b/lame-3.97/TODO new file mode 100644 index 0000000..33d9575 --- /dev/null +++ b/lame-3.97/TODO @@ -0,0 +1,162 @@ +1. bug in resample code: downsampling from 44101 to 44100 causes + a seg fault. Workaround in place for now: resampling disabled + if input/output samplerates agree to 4 digits. + + + +2. high bitrate encodings have trouble on some hardware players. +Track this down. Probably caused by --strictly-enforce-ISO and +IXMAX_VAL. Try setting IXMAX_VAL back to 8191 and/or +maxmp3buf=8*960 to see if there is a working combination. + +note: one of the decoder bugs was identified. It is caused by using +different block sizes on both channels. A parameter need to be +added to Lame to handle workarounds. + + +3 frontend: code is a complete mess. But it has so many debugged + features it will be a lot of work to re-write. + + +4. MSVC project files. It would be nice to create a working + MSVC6 workspace, which included all the projects as possible + targets: + lame.exe + mp3x.exe (require GTK libs) + lame_enc.dll + ACM codec + directshow codec + + I think the only MSVC5 project that we need to preserve is + for lame_enc.dll, since Albert Faber (still?) doesn't use VC6? + But no reason we cant have VC5 and VC6 project files for the dll. + + + + + + +5. +NOGAP encoding: + +-nogap: more testing, fix options, test id3 tags? +Can we change id3 tags without reseting the encoder?? +At the end of encoding 1.wav, call lame_get_mf_samples_to_encode() +to find the number of non encoded buffered PCM samples. Then +encode samples from 2.wav until these PCM samples have been +encoded, *THEN* call lame_encode_flush_nogap() and close +out file 1.mp3. + + +NOGAP decoding: +lame --decode --nogap file1.mp3 file2.mp3 file3.mp3 +should also work. What needs to be done: +get_audio.c: We need a way to open a second mp3 file, without + calling lame_decode_init() and reinitializing mpglib. + And the mpglib needs to know to look for new Xing + tags at the beginning of file2.mp3 and file3.mp3. + + + +6. +Does stdin work when LAME is compiled to use libsndfile? +(new version of libsndfile will support this - try this out) + + +7. +LAME has problems with pure DC input. i.e. a square wave with +a frequency well below 20 Hz. Not very important, but it should +be fixed. + + +8. +mgplib has bugs with i-stereo. flag denoting invalid +i-stereo value (= frame is m/s stereo) is not correct. + +9. +lowpass filter: for M/S stereo, use more filtering for the side +channel, less filtering for mid channel. We need to first replace +the polyphase filter with an FIR lowpass filter with finer frequency +resolution before implementing this. + +10. +LAME has a 31 point FIR filter used for resampling, which +can also be used as a lowpass. When resampling is done, +use that filter to also lowpass instead of the polyphase filter. + +11. +Even when resampling is not needed, should we use an FIR filter +for the lowpass? If it is not too much slower, yes. If it +is slower, then it should be an option since it will produce +higher quality. + +12. +We should consider moving the experts options from the *long +help* text into an *experts only* help text. The average Joe gets +knocked down by the huge number of possibilities to setup lame. + + + + +50. +Better tonality estimation. +Gpsycho uses predictability, and so needs a delay to detect the tonality +of a sound. +Nspsytune seems to miss tonals when several of them are too narrow. +We would probably need the best of both. + + + + +60. +Different ATH handling for sfb21. We are using the minimum value of ath +in each whole sfb. in sfb21 this leads to very high bitrates. +We could perhaps use 2 or 3 ath partitions in sfb21 + +note: partially done + + + +70. +Use mixed blocks. + + + + +90. +Use intensity stereo. This is a must-have for low bitrates, but if the +algorythm is very good it could also be used in every case. +Note: mpg123 (and all derivatives, like xmms and lame/mpglib) +have bugs in the intensity stereo decoding. Bugs have been there +for years since there are very few intensity stereo mp3's out there. + + + + + +998. +Merge GOGO's fast assembler routines. + + + + +999. +It would be nice to save some information whilst encoding +a: wave -> mp3 + a RIFF/wave can contain LIST chunks with information + about author, title, etc. + ==> could go into TAG fields of resulting mp3 +b: mp3 -> mp3 + ==> we could copy the TAG directly +c: mp3 -> wave + ==> copy TAG into LIST chunk + + + +1500. +Integrate plusV extensions + + + +2000. +To be able to encode as fast as FastEnc \ No newline at end of file diff --git a/lame-3.97/USAGE b/lame-3.97/USAGE new file mode 100644 index 0000000..9f039c0 --- /dev/null +++ b/lame-3.97/USAGE @@ -0,0 +1,853 @@ + +% lame [options] inputfile [outputfile] + +For more options, just type: +% lame --help + + +======================================================================= +Constant Bitrate Examples: +======================================================================= +fixed bit rate jstereo 128 kbps encoding: +% lame sample.wav sample.mp3 + +fixed bit rate jstereo 128 kbps encoding, higher quality: (recommended) +% lame -h sample.wav sample.mp3 + +Fast encode, low quality (no noise shaping) +% lame -f sample.wav sample.mp3 + +======================================================================= +Variable Bitrate Examples: +======================================================================= +LAME has two types of variable bitrate: ABR and VBR. + +ABR is the type of variable bitrate encoding usually found in other +MP3 encoders, Vorbis and AAC. The number of bits is determined by +some metric (like perceptual entropy, or just the number of bits +needed for a certain set of encoding tables), and it is not based on +computing the actual encoding/quantization error. ABR should always +give results equal or better than CBR: + +ABR: (--abr means encode with an average bitrate of around x kbps) +lame -h --abr 128 sample.wav sample.mp3 + + +VBR is a true variable bitrate mode which bases the number of bits for +each frame on the measured quantization error relative to the +estimated allowed masking. VBR is currently under heavy development. +It can on occasion result in too much compression, so it should be +used with a minimum bitrate of 112 kbps. This will let LAME increase +the bitrate for difficult-to-encode frames, but prevent LAME from +being too aggressive for simple frames: + +Variable Bitrate (VBR): (use -V n to adjust quality/filesize) +% lame -h -v -b 112 sample.wav sample.mp3 + + + +======================================================================= +LOW BITRATES +======================================================================= +At lower bitrates, (like 24 kbps per channel), it is recommended that +you use a 16 kHz sampling rate combined with lowpass filtering. LAME, +as well as commercial encoders (FhG, Xing) will do this automatically. +However, if you feel there is too much (or not enough) lowpass +filtering, you may need to try different values of the lowpass cutoff +and passband width (--resample, --lowpass and --lowpass-width options). + + +======================================================================= +STREAMING EXAMPLES +======================================================================= + +% cat inputfile | lame [options] - - > output + + + + +======================================================================= +Scripts are included (in the 'misc' subdirectory) +to run lame on multiple files: + +bach script: mlame Run "mlame -?" for instructions. +sh script: auenc Run auenc for instructions +sh script: mugeco.sh + +Pearl script which will re-encode mp3 files and preserve id3 tags: +lameid3.pl + +Windows scripts: +lame4dos.bat +Lame.vbs (and an HTML frontend: LameGUI.html) + + +======================================================================= +options guide: +======================================================================= +These options are explained in detail below. + + +Quality related: + +-m m/s/j/f/a mode selection +-k disable all filtering +-d allow block types to differ between channels +--athonly ignore psy-model output, only use masking from the ATH +--voice (obsolete, try --preset voice instead) +--noshort disable short blocks +-q n Internal algorithm quality setting 0..9. + 0 = slowest algorithms, but potentially highest quality + 9 = faster algorithms, very poor quality +-h same as -q2 +-f same as -q7 + + +Constant Bit Rate (CBR) +-b n set bitrate (8, 16, 24, ..., 320) +--freeformat produce a free format bitstream. User must also specify + a bitrate with -b, between 8 and 640 kbps. + +Variable Bit Rate (VBR) +-v VBR +--vbr-old use old variable bitrate (VBR) routine (default) +--vbr-new use new variable bitrate (VBR) routine +-V n VBR quality setting (0=highest quality, 9=lowest) +-b n specify a minimum allowed bitrate (8,16,24,...,320) +-B n specify a maximum allowed bitrate (8,16,24,...,320) +-F strictly enforce minimum bitrate +-t disable VBR informational tag +--nohist disable display of VBR bitrate histogram + +--abr n specify average bitrate desired + + +Experimental (undocumented): may work better or worse: + +-X n try different quality measures (when comparing quantizations) +-Y +-Z + + +Operational: + +-r assume input file is raw PCM +-s n input sampling frequency in kHz (for raw PCM input files) +--resample n output sampling frequency +--mp3input input file is an MP3 file. decode using mpglib/mpg123 +--ogginput input file is an Ogg Vorbis file. decode using libvorbis +-x swap bytes of input file +--scale multiply PCM input by +--scale-l scale channel 0 (left) input (multiply PCM data) by +--scale-r scale channel 1 (right) input (multiply PCM data) by +-a downmix stereo input file to mono .mp3 +-e n/5/c de-emphasis +-p add CRC error protection +-c mark the encoded file as copyrighted +-o mark the encoded file as a copy +-S don't print progress report, VBR histogram +--strictly-enforce-ISO comply as much as possible to ISO MPEG spec +--replaygain-fast compute RG fast but slightly inaccurately (default) +--replaygain-accurate compute RG more accurately and find the peak sample +--noreplaygain disable ReplayGain analysis +--clipdetect enable --replaygain-accurate and print a message whether + clipping occurs and how far the waveform is from full scale + +--decode assume input file is an mp3 file, and decode to wav. +-t disable writing of WAV header when using --decode + (decode to raw pcm, native endian format (use -x to swap)) + +--ogg Encode using Ogg Vorbis (.ogg) instead of mp3. + + + +ID3 tagging: + +--tt audio/song title (max 30 chars for version 1 tag) +--ta <artist> audio/song artist (max 30 chars for version 1 tag) +--tl <album> audio/song album (max 30 chars for version 1 tag) +--ty <year> audio/song year of issue (1 to 9999) +--tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1) +--tn <track> audio/song track number (1 to 255, creates v1.1 tag) +--tg <genre> audio/song genre (name or number in list) +--add-id3v2 force addition of version 2 tag +--id3v1-only add only a version 1 tag +--id3v2-only add only a version 2 tag +--space-id3v1 pad version 1 tag with spaces instead of nulls +--pad-id3v2 pad version 2 tag with extra 128 bytes +--genre-list print alphabetically sorted ID3 genre list and exit + +Note: A version 2 tag will NOT be added unless one of the input fields +won't fit in a version 1 tag (e.g. the title string is longer than 30 +characters), or the '--add-id3v2' or '--id3v2-only' options are used, +or output is redirected to stdout. + +OS/2-specific options: + --priority <type> sets the process priority + + +options not yet described: +--nores disable bit reservoir +--noath disable ATH +--athlower <n db> lower the ATH by n db. +--athshort use only the ATH for short blocks +--cwlimit <freq> specify range of tonality calculation +--disptime +--notemp disable temporal masking + +--lowpass +--lowpass-width +--highpass +--highpass-width + + + + + +======================================================================= +Detailed description of all options in alphabetical order +======================================================================= + + +======================================================================= +downmix +======================================================================= +-a + +mix the stereo input file to mono and encode as mono. + +This option is only needed in the case of raw PCM stereo input +(because LAME cannot determine the number of channels in the input file). +To encode a stereo PCM input file as mono, use "lame -m s -a" + +For WAV and AIFF input files, using "-m m" will always produce a +mono .mp3 file from both mono and stereo input. + + +======================================================================= +average bitrate encoding (aka Safe VBR) +======================================================================= +--abr n + +turns on encoding with a targeted average bitrate of n kbps, allowing +to use frames of different sizes. The allowed range of n is 8...320 +kbps, you can use any integer value within that range. + + + + + +======================================================================= +ATH only +======================================================================= +--athonly + +This option causes LAME to ignore the output of the psy-model and +only use masking from the ATH. (absolute threshold of hearing) + +Using --athonly is NOT RECOMMENDED. It is designed for testing +different ATH curves. + + + +======================================================================= +bitrate +======================================================================= +-b n + +For MPEG-1 (sampling frequencies of 32, 44.1 and 48 kHz) +n = 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG-2 and MPEG-2.5 (sampling frequencies of 8, 11.025, +12, 16, 22.05 and 24 kHz) +n = 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + + +The bitrate to be used. Default is 128 kbps MPEG1, 80 kbps MPEG2. + +When used with variable bitrate encodings (VBR), -b specifies the +minimum bitrate to use. This is useful to prevent LAME VBR from +using some very aggressive compression which can cause some distortion +due to small flaws in the psycho-acoustic model. + +======================================================================= +max bitrate +======================================================================= +-B n + +see also option "-b" for allowed bitrates. + +Maximum allowed bitrate when using VBR/ABR. + +Using -B is NOT RECOMMENDED. A 128 kbps CBR bitstream, because of the +bit reservoir, can actually have frames which use as many bits as a +320 kbps frame. ABR/VBR modes minimize the use of the bit reservoir, and +thus need to allow 320 kbps frames to get the same flexability as CBR +streams. + + + + +======================================================================= +copyright +======================================================================= +-c + +mark the encoded file as copyrighted + + + +======================================================================= +clipping detection +======================================================================= +--clipdetect + +Enable --replaygain-accurate and print a message whether clipping +occurs and how far in dB the waveform is from full scale. + +This option is not usable if the MP3 decoder was _explicitly_ disabled +in the build of LAME. + +See also: --replaygain-accurate + + + +======================================================================= +block type control +======================================================================= +-d + +Allows the left and right channels to use different block types. +Normally this is not allowed, only because the FhG encoder does +not seem to allow it either. If anyone finds a sample where -d +produces better results, let me know. (mt@sulaco.org) + + +======================================================================= +mpglib decode capability +======================================================================= +--decode + +This just uses LAME's mpg123/mpglib interface to decode an MP3 file to +a wav file. The input file can be any input type supported by +encoding, including .mp3 (layers 1, 2 and 3) and .ogg. + +If -t is used (disable wav header), LAME will output +raw pcm in native endian format (use -x to swap bytes). + +This option is not usable if the MP3 decoder was _explicitly_ disabled +in the build of LAME. + + +======================================================================= +de-emphasis +======================================================================= +-e n/5/c + + n = (none, default) + 5 = 0/15 microseconds + c = citt j.17 + +All this does is set a flag in the bitstream. If you have a PCM +input file where one of the above types of (obsolete) emphasis has +been applied, you can set this flag in LAME. Then the mp3 decoder +should de-emphasize the output during playback, although most +decoders ignore this flag. + +A better solution would be to apply the de-emphasis with a standalone +utility before encoding, and then encode without -e. + + + +======================================================================= +fast mode +======================================================================= +-f + +Same as -q 7. + +NOT RECOMMENDED. Use when encoding speed is critical and encoding +quality does not matter. Disable noise shaping. Psycho acoustics are +used only for bit allocation and pre-echo detection. + +======================================================================= +strictly enforce VBR minimum bitrate +======================================================================= +-F + +strictly enforce VBR minimum bitrate. With out this optioni, the minimum +bitrate will be ignored for passages of analog silence. + + + +======================================================================= +free format bitstreams +======================================================================= +--freeformat + +LAME will produce a fixed bitrate, free format bitstream. +User must specify the desired bitrate in kbps, which can +be any integer between 8 and 640. + +Not supported by most decoders. Complient decoders (of which there +are few) are only required to support up to 320 kbps. + +Decoders which can handle free format: + + supports up to +MAD 640 kbps +"lame --decode" 550 kbps +Freeamp: 440 kbps +l3dec: 310 kbps + + + + + +======================================================================= +high quality +======================================================================= +-h + +use some quality improvements. The same as -q 2. + + + +======================================================================= +keep all frequencies +======================================================================= +-k + +keep all frequencies. (Disable all filters) + +LAME will automatically apply various types of lowpass filters. This +is because the high frequency coefficients can take up a lot of bits +that would be better used for lower, more important frequencies. + +-k will disable all lowpass filtering. Not recommended. + + + +======================================================================= +Modes: +======================================================================= + +-m m mono +-m s stereo +-m j joint stereo +-m f forced mid/side stereo +-m d dual (independent) channels +-m i intensity stereo +-m a auto + +MONO is the default mode for mono input files. If "-m m" is specified +for a stereo input file, the two channels will be averaged into a mono +signal. + +STEREO + +JOINT STEREO is the default mode for stereo files with fixed bitrates of +128 kbps or less. At higher fixed bitrates, the default is stereo. +For VBR encoding, jstereo is the default for VBR_q >4, and stereo +is the default for VBR_q <=4. You can override all of these defaults +by specifing the mode on the command line. + +jstereo means the encoder can use (on a frame by frame bases) either +regular stereo (just encode left and right channels independently) +or mid/side stereo. In mid/side stereo, the mid (L+R) and side (L-R) +channels are encoded, and more bits are allocated to the mid channel +than the side channel. This will effectively increase the bandwidth +if the signal does not have too much stereo separation. + +Mid/side stereo is basically a trick to increase bandwidth. At 128 kbps, +it is clearly worth while. At higher bitrates it is less useful. + +For truly mono content, use -m m, which will automatically down +sample your input file to mono. This will produce 30% better results +over -m j. + +Using mid/side stereo inappropriately can result in audible +compression artifacts. To much switching between mid/side and regular +stereo can also sound bad. To determine when to switch to mid/side +stereo, LAME uses a much more sophisticated algorithm than that +described in the ISO documentation. + +FORCED MID/SIDE STEREO forces all frames to be encoded mid/side stereo. It +should only be used if you are sure every frame of the input file +has very little stereo seperation. + +DUAL CHANNELS Not supported. + +INTENSITY STEREO + +AUTO + +Auto select should select (if input is stereo) + 8 kbps Mono + 16- 96 kbps Intensity Stereo (if available, otherwise Joint Stereo) + 112-128 kbps Joint Stereo -mj + 160-192 kbps -mj with variable mid/side threshold + 224-320 kbps Independent Stereo -ms + + + +======================================================================= +MP3 input file +======================================================================= +--mp3input + +Assume the input file is a MP3 file. LAME will decode the input file +before re-encoding it. Since MP3 is a lossy format, this is +not recommended in general. But it is useful for creating low bitrate +mp3s from high bitrate mp3s. If the filename ends in ".mp3" LAME will assume +it is an MP3. For stdin or MP3 files which dont end in .mp3 you need +to use this switch. + + +======================================================================= +disable historgram display +======================================================================= +--nohist + +By default, LAME will display a bitrate histogram while producing +VBR mp3 files. This will disable that feature. + + +======================================================================= +disable ReplayGain analysis +======================================================================= +--noreplaygain + +By default ReplayGain analysis is enabled. This switch disables it. + +See also: --replaygain-accurate, --replaygain-fast + + +======================================================================= +disable short blocks +======================================================================= +--noshort + +Encode all frames using long blocks. NOT RECOMMENDED. For +testing purposes only. + + + +======================================================================= +non-original +======================================================================= +-o + +mark the encoded file as a copy + + + +======================================================================= +CRC error protection +======================================================================= +-p + +turn on CRC error protection. +Yes this really does work correctly in LAME. However, it takes +16 bits per frame that would otherwise be used for encoding. + + +======================================================================= +algorithm quality selection +======================================================================= +-q n + +Bitrate is of course the main influence on quality. The higher the +bitrate, the higher the quality. But for a given bitrate, +we have a choice of algorithms to determine the best +scalefactors and huffman encoding (noise shaping). + +-q 0: use slowest & best possible version of all algorithms. + +-q 2: recommended. Same as -h. -q 0 and -q 1 are slow and may not produce + significantly higher quality. + +-q 5: default value. Good speed, reasonable quality + +-q 7: same as -f. Very fast, ok quality. (psycho acoustics are + used for pre-echo & M/S, but no noise shaping is done. + +-q 9: disables almost all algorithms including psy-model. poor quality. + + + +======================================================================= +input file is raw pcm +======================================================================= +-r + +Assume the input file is raw pcm. Sampling rate and mono/stereo/jstereo +must be specified on the command line. Without -r, LAME will perform +several fseek()'s on the input file looking for WAV and AIFF headers. + +Not supported if LAME is compiled to use LIBSNDFILE. + + + +======================================================================= +slightly more accurate ReplayGain analysis and finding the peak sample +======================================================================= +--replaygain-accurate + +Enable decoding on the fly. Compute "Radio" ReplayGain on the decoded +data stream. Find the peak sample of the decoded data stream and store +it in the file. + + +ReplayGain analysis does _not_ affect the content of a compressed data +stream itself, it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from http://www.replaygain.org/ + +By default, LAME performs ReplayGain analysis on the input data (after +the user-specified volume scaling). This behaviour might give slightly +inaccurate results because the data on the output of a lossy +compression/decompression sequence differs from the initial input data. +When --replaygain-accurate is specified the mp3 stream gets decoded on +the fly and the analysis is performed on the decoded data stream. +Although theoretically this method gives more accurate results, it has +several disadvantages: + * tests have shown that the difference between the ReplayGain values + computed on the input data and decoded data is usually no greater + than 0.5dB, although the minimum volume difference the human ear + can perceive is about 1.0dB + * decoding on the fly significantly slows down the encoding process +The apparent advantage is that: + * with --replaygain-accurate the peak sample is determined and + stored in the file. The knowledge of the peak sample can be useful + to decoders (players) to prevent a negative effect called 'clipping' + that introduces distortion into sound. + + +Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. +The analysis is performed with the reference volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition +from version 3.95 to 3.95.1. + +This option is not usable if the MP3 decoder was _explicitly_ disabled +in the build of LAME. (Note: if LAME is compiled without the MP3 decoder, +ReplayGain analysis is performed on the input data after user-specified +volume scaling). + +See also: --replaygain-fast, --noreplaygain, --clipdetect + + +======================================================================= +fast ReplayGain analysis +======================================================================= +--replaygain-fast + +Compute "Radio" ReplayGain of the input data stream after user-specified +volume scaling and/or resampling. + +ReplayGain analysis does _not_ affect the content of a compressed data +stream itself, it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from http://www.replaygain.org/ + +Only the "Radio" ReplayGain value is computed. It is stored in the LAME tag. +The analysis is performed with the reference volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition +from version 3.95 to 3.95.1. + +This switch is enabled by default. + +See also: --replaygain-accurate, --noreplaygain + + + +======================================================================= +output sampling frequency in kHz +======================================================================= +--resample n + +where n = 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 + +Output sampling frequency. Resample the input if necessary. + +If not specified, LAME may sometimes resample automatically +when faced with extreme compression conditions (like encoding +a 44.1 kHz input file at 32 kbps). To disable this automatic +resampling, you have to use --resamle to set the output samplerate +equal to the inptu samplerate. In that case, LAME will not +perform any extra computations. + + + +======================================================================= +sampling frequency in kHz +======================================================================= +-s n + +where n = sampling rate in kHz. + +Required for raw PCM input files. Otherwise it will be determined +from the header information in the input file. + +LAME will automatically resample the input file to one of the +supported MP3 samplerates if necessary. + + +======================================================================= +silent operation +======================================================================= +-S + +don't print progress report + +======================================================================= +scale +======================================================================= +--scale <arg> + +Scales input by <arg>. This just multiplies the PCM data +(after it has been converted to floating point) by <arg>. + +<arg> > 1: increase volume +<arg> = 1: no effect +<arg> < 1: reduce volume + +Use with care, since most MP3 decoders will truncate data +which decodes to values greater than 32768. + + +======================================================================= +strict ISO complience +======================================================================= +--strictly-enforce-ISO + +With this option, LAME will enforce the 7680 bit limitation on +total frame size. This results in many wasted bits for +high bitrate encodings. + + +======================================================================= +disable VBR tag +======================================================================= +-t + +Disable writing of the VBR Tag (only valid if -v flag is +specified) This tag in embedded in frame 0 of the MP3 file. It lets +VBR aware players correctly seek and compute playing times of VBR +files. + +When '--decode' is specified (decode mp3 to wav), this flag will +disable writing the WAV header. The output will be raw pcm, +native endian format. Use -x to swap bytes. + + + +======================================================================= +variable bit rate (VBR) +======================================================================= +-v + +Turn on VBR. There are several ways you can use VBR. I personally +like using VBR to get files slightly bigger than 128 kbps files, where +the extra bits are used for the occasional difficult-to-encode frame. +For this, try specifying a minimum bitrate to use with VBR: + +lame -v -b 112 input.wav output.mp3 + +If the file is too big, use -V n, where n = 0...9 + +lame -v -V n -b 112 input.wav output.mp3 + + +If you want to use VBR to get the maximum compression possible, +and for this, you can try: + +lame -v input.wav output.mp3 +lame -v -V n input.wav output.mp3 (to vary quality/filesize) + + + + + + +======================================================================= +VBR quality setting +======================================================================= +-V n + +n = 0...9. Specifies the value of VBR_q. +default = 4, highest quality = 0, smallest files = 9 + +Using -V 5 or higher (lower quality) is NOT RECOMMENDED. +ABR will produce better results. + + +How is VBR_q used? + +The value of VBR_q influences two basic parameters of LAME's psycho +acoustics: + a) the absolute threshold of hearing + b) the sample to noise ratio +The lower the VBR_q value the lower the injected quantization noise +will be. + +*NOTE* No psy-model is perfect, so there can often be distortion which +is audible even though the psy-model claims it is not! Thus using a +small minimum bitrate can result in some aggressive compression and +audible distortion even with -V 0. Thus using -V 0 does not sound +better than a fixed 256 kbps encoding. For example: suppose in the 1 kHz +frequency band the psy-model claims 20 dB of distortion will not be +detectable by the human ear, so LAME VBR-0 will compress that +frequency band as much as possible and introduce at most 20 dB of +distortion. Using a fixed 256 kbps framesize, LAME could end up +introducing only 2 dB of distortion. If the psy-model was correct, +they will both sound the same. If the psy-model was wrong, the VBR-0 +result can sound worse. + + +======================================================================= +voice encoding mode +======================================================================= +--voice + +An experimental voice encoding mode. Tuned for 44.1 kHz input files. +--voice is deprecated, use --preset voice instead + + +======================================================================= +swapbytes +======================================================================= +-x + +swap bytes in the input file (and output file when using --decode). +For sorting out little endian/big endian type problems. If your +encodings sound like static, try this first. + +======================================================================= +OS/2 process priority control +======================================================================= +--priority <type> + +(OS/2 only) + +Sets the process priority for LAME while running under IBM OS/2. +This can be very useful to avoid the system becoming slow and/or +unresponsive. By setting LAME to run in a lower priority, you leave +more time for the system to update basic processing (drawing windows, +polling keyboard/mouse, etc). The impact in LAME's performance is +minimal if you use priority 0 to 2. + +The valid parameters are: + + 0 = Low priority (IDLE, delta = 0) + 1 = Medium priority (IDLE, delta = +31) + 2 = Regular priority (REGULAR, delta = -31) + 3 = High priority (REGULAR, delta = 0) + 4 = Maximum priority (REGULAR, delta = +31) + +Note that if you call '--priority' without a parameter, then +priority 0 will be assumed. + + + + diff --git a/lame-3.97/acinclude.m4 b/lame-3.97/acinclude.m4 new file mode 100644 index 0000000..b0d8d07 --- /dev/null +++ b/lame-3.97/acinclude.m4 @@ -0,0 +1,88 @@ +dnl acinclude.m4. Change *this* file to add new or change macros. +dnl When changes have been made, delete aclocal.m4 and run +dnl "aclocal". +dnl +dnl DO NOT change aclocal.m4 ! +dnl + +dnl * LA_SEARCH_FILE(variable, filename, PATH) +dnl * Search "filename" in the specified "PATH", "variable" will +dnl * contain the full pathname or the empty string +dnl * PATH is space-separated list of directories. +dnl * by Florian Bomers + +AC_DEFUN(LA_SEARCH_FILE,[ + $1= + dnl hack: eliminate line feeds in $2 + for FILE in $2; do + for DIR in $3; do + dnl use PATH in order + if test ".$1"="." && test -f "$DIR/$FILE"; then + $1=$DIR + fi + done + done +]) + +dnl * LA_SEARCH_LIB(lib-variable, include-variable, lib-filename, header-filename, prefix) +dnl * looks for "lib-filename" and "header-filename" in the area of "prefix". +dnl * if found, "lib-variable" and "include-variable" are set to the +dnl * respective paths. +dnl * prefix is a single path +dnl * libs are searched in prefix, prefix/lib, prefix/.., prefix/../lib +dnl * headers are searched in prefix, prefix/include, prefix/.., prefix/../include +dnl * +dnl * If one of them is not found, both "lib-variable", "include-variable" are +dnl * set to the empty string. +dnl * +dnl * TODO: assert function call to verify lib +dnl * +dnl * by Florian Bomers + +AC_DEFUN(LA_SEARCH_LIB,[ + dnl look for lib + LA_SEARCH_FILE($1, $3, $5 $5/lib $5/.. $5/../lib) + dnl look for header. + LA_SEARCH_FILE($2, $4, $5 $5/include $5/.. $5/../include) + if test ".$1" = "." || test ".$2" = "."; then + $1= + $2= + fi +]) + + + + +# alex_IEEE854_FLOAT80 +# ------------ +AC_DEFUN(alex_IEEE854_FLOAT80, +[AC_CACHE_CHECK(for IEEE854 compliant 80 bit floats, alex_cv_ieee854_float80, +[AC_TRY_RUN([ +int float2long_IEEE_compliance ( void ) +{ + struct { + long padding; /* to prevent unaligned access */ + float f; + } s; + s.f = 12582912.; if ( *(long*)(&s.f) != 1262485504l ) return 0; + s.f = 12615679.; if ( *(long*)(&s.f) != 1262518271l ) return 0; + s.f = 13582912.; if ( *(long*)(&s.f) != 1263485504l ) return 0; + s.f = 12550145.; if ( *(long*)(&s.f) != 1262452737l ) return 0; + s.f = 11582912.; if ( *(long*)(&s.f) != 1261485504l ) return 0; + return 1; +} + +int main(void) +{ + int retval; + + retval = float2long_IEEE_compliance(); + + /* no error return -> success */ + return !retval; +} +], alex_cv_ieee854_float80=yes, alex_cv_ieee854_float80=no, +[AC_MSG_WARN(can't check for IEEE854 compliant 80 bit floats)] +)])]) # alex_IEEE854_FLOAT80 + + diff --git a/lame-3.97/aclocal.m4 b/lame-3.97/aclocal.m4 new file mode 100644 index 0000000..b31c724 --- /dev/null +++ b/lame-3.97/aclocal.m4 @@ -0,0 +1,7311 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 47 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +[$]* +EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +#- set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +])# AC_PROG_LD + + +# AC_PROG_LD_GNU +# -------------- +AC_DEFUN([AC_PROG_LD_GNU], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac]) +with_gnu_ld=$lt_cv_prog_gnu_ld +])# AC_PROG_LD_GNU + + +# AC_PROG_LD_RELOAD_FLAG +# ---------------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +])# AC_PROG_LD_RELOAD_FLAG + + +# AC_DEPLIBS_CHECK_METHOD +# ----------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that LIBLTDL +# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If +# DIRECTORY is not provided and an installed libltdl is not found, it is +# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' +# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_builddir and top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# --------------- +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# -------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# +# Check for any special shared library compilation flags. +# +_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' + ;; + esac +fi +if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then + AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) + _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) + + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +# Report which librarie types wil actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sco*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext <<EOF +int a; +void foo (void) { a = 0; } +EOF +],[$1],[CXX],[cat > conftest.$ac_ext <<EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +EOF +],[$1],[F77],[cat > conftest.$ac_ext <<EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +EOF +],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then + _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then + _LT_AC_TAGVAR(predep_objects, $1)="$p" + else + _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then + _LT_AC_TAGVAR(postdep_objects, $1)="$p" + else + _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$rm -f confest.$objext + +case " $_LT_AC_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac +])# AC_LIBTOOL_POSTDEP_PREDEP + +# AC_LIBTOOL_LANG_F77_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) +AC_DEFUN([_LT_AC_LANG_F77_CONFIG], +[AC_REQUIRE([AC_PROG_F77]) +AC_LANG_PUSH(Fortran 77) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$G77" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP + + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_F77_CONFIG + + +# AC_LIBTOOL_LANG_GCJ_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) +AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], +[AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_GCJ_CONFIG + + +# AC_LIBTOOL_LANG_RC_CONFIG +# -------------------------- +# Ensure that the configuration vars for the Windows resource compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) +AC_DEFUN([_LT_AC_LANG_RC_CONFIG], +[AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_RC_CONFIG + + +# AC_LIBTOOL_CONFIG([TAGNAME]) +# ---------------------------- +# If TAGNAME is not passed, then create an initial libtool script +# with a default configuration from the untagged config vars. Otherwise +# add code to config.status for appending the configuration named by +# TAGNAME from the matching tagged config vars. +AC_DEFUN([AC_LIBTOOL_CONFIG], +[# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + _LT_AC_TAGVAR(compiler, $1) \ + _LT_AC_TAGVAR(CC, $1) \ + _LT_AC_TAGVAR(LD, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ + _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ + _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ + _LT_AC_TAGVAR(old_archive_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ + _LT_AC_TAGVAR(predep_objects, $1) \ + _LT_AC_TAGVAR(postdep_objects, $1) \ + _LT_AC_TAGVAR(predeps, $1) \ + _LT_AC_TAGVAR(postdeps, $1) \ + _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ + _LT_AC_TAGVAR(archive_cmds, $1) \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ + _LT_AC_TAGVAR(postinstall_cmds, $1) \ + _LT_AC_TAGVAR(postuninstall_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ + _LT_AC_TAGVAR(allow_undefined_flag, $1) \ + _LT_AC_TAGVAR(no_undefined_flag, $1) \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ + _LT_AC_TAGVAR(hardcode_automatic, $1) \ + _LT_AC_TAGVAR(module_cmds, $1) \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) \ + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ + _LT_AC_TAGVAR(exclude_expsyms, $1) \ + _LT_AC_TAGVAR(include_expsyms, $1); do + + case $var in + _LT_AC_TAGVAR(old_archive_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ + _LT_AC_TAGVAR(archive_cmds, $1) | \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(module_cmds, $1) | \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\[$]0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` + ;; + esac + +ifelse([$1], [], + [cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + AC_MSG_NOTICE([creating $ofile])], + [cfgfile="$ofile"]) + + cat <<__EOF__ >> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDRT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <<EOF >> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds it's shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + *) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + sco3.2v5*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4.2uw2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv5*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include <windows.h> +# #undef WIN32_LEAN_AND_MEAN +# #include <stdio.h> +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include <cygwin/cygwin_dll.h> +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + + +# Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# This was merged into AC_PROG_CC in Autoconf. + +AU_DEFUN([AM_PROG_CC_STDC], +[AC_PROG_CC +AC_DIAGNOSE([obsolete], [$0: + your code should no longer depend upon `am_cv_prog_cc_stdc', but upon + `ac_cv_prog_cc_stdc'. Remove this warning and the assignment when + you adjust the code. You can also remove the above call to + AC_PROG_CC if you already called it elsewhere.]) +am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc +]) +AU_DEFUN([fp_PROG_CC_STDC]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + + +# Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +AC_DEFUN([AM_WITH_DMALLOC], +[AC_MSG_CHECKING([if malloc debugging is wanted]) +AC_ARG_WITH(dmalloc, +[ --with-dmalloc use dmalloc, as in + http://www.dmalloc.com/dmalloc.tar.gz], +[if test "$withval" = yes; then + AC_MSG_RESULT(yes) + AC_DEFINE(WITH_DMALLOC,1, + [Define if using the dmalloc debugging malloc package]) + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + AC_MSG_RESULT(no) +fi], [AC_MSG_RESULT(no)]) +]) + +AU_DEFUN([fp_WITH_DMALLOC], [AM_WITH_DMALLOC]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +AC_DEFUN([AM_C_PROTOTYPES], +[AC_REQUIRE([AC_C_PROTOTYPES]) +if test "$ac_cv_prog_cc_stdc" != no; then + U= ANSI2KNR= +else + U=_ ANSI2KNR=./ansi2knr +fi +# Ensure some checks needed by ansi2knr itself. +AC_REQUIRE([AC_HEADER_STDC]) +AC_CHECK_HEADERS(string.h) +AC_SUBST(U)dnl +AC_SUBST(ANSI2KNR)dnl +]) + +AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +# Configure paths for GTK+ +# Owen Taylor 97-11-3 + +dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS +dnl +AC_DEFUN(AM_PATH_GTK, +[dnl +dnl Get the cflags and libraries from the gtk-config script +dnl +AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], + gtk_config_prefix="$withval", gtk_config_prefix="") +AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], + gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") +AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], + , enable_gtktest=yes) + + for module in . $4 + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + AC_PATH_PROG(GTK_CONFIG, gtk-config, no) + min_gtk_version=ifelse([$1], ,0.99.7,$1) + AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK is sufficiently new. (Also sanity +dnl checks the results of gtk-config to some extent +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include <gtk/gtk.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include <gtk/gtk.h> +#include <stdio.h> +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +m4_include([acinclude.m4]) diff --git a/lame-3.97/config.guess b/lame-3.97/config.guess new file mode 100644 index 0000000..0e30d56 --- /dev/null +++ b/lame-3.97/config.guess @@ -0,0 +1,1407 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner <per@bothner.com>. +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha*:OpenVMS:*:*) + echo alpha-hp-vms + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + # GNU/FreeBSD systems have a "k" prefix to indicate we are using + # FreeBSD's kernel, but not the complete OS. + case ${LIBC} in gnu) kernel_only='k' ;; esac + echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + ftp://ftp.gnu.org/pub/gnu/config/ + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lame-3.97/config.h.in b/lame-3.97/config.h.in new file mode 100644 index 0000000..bce9d38 --- /dev/null +++ b/lame-3.97/config.h.in @@ -0,0 +1,348 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* debug define */ +#undef ABORTFP + +/* enable VBR bitrate histogram */ +#undef BRHIST + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* alot of debug output */ +#undef DEBUG + +/* allow to compute a more accurate replaygain value */ +#undef DECODE_ON_THE_FLY + +/* double is faster than float on Alpha */ +#undef FLOAT + +/* float instead of double */ +#undef FLOAT8 + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#undef HAVE_DLFCN_H + +/* we link against libefence */ +#undef HAVE_EFENCE + +/* Define to 1 if you have the <errno.h> header file. */ +#undef HAVE_ERRNO_H + +/* Define to 1 if you have the <fcntl.h> header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* have working GTK */ +#undef HAVE_GTK + +/* add ieee754_float32_t type */ +#undef HAVE_IEEE754_FLOAT32_T +#ifndef HAVE_IEEE754_FLOAT32_T + typedef float ieee754_float32_t; +#endif + +/* add ieee754_float64_t type */ +#undef HAVE_IEEE754_FLOAT64_T +#ifndef HAVE_IEEE754_FLOAT64_T + typedef double ieee754_float64_t; +#endif + +/* system has 80 bit floats */ +#undef HAVE_IEEE854_FLOAT80 + +/* add ieee854_float80_t type */ +#undef HAVE_IEEE854_FLOAT80_T +#ifndef HAVE_IEEE854_FLOAT80_T + typedef long double ieee854_float80_t; +#endif + +/* add int16_t type */ +#undef HAVE_INT16_T +#ifndef HAVE_INT16_T + typedef short int16_t; +#endif + +/* add int32_t type */ +#undef HAVE_INT32_T +#ifndef HAVE_INT32_T +#undef A_INT32_T + typedef A_INT32_T int32_t; +#endif + +/* add int64_t type */ +#undef HAVE_INT64_T +#ifndef HAVE_INT64_T +#undef A_INT64_T + typedef A_INT64_T int64_t; +#endif + +/* add int8_t type */ +#undef HAVE_INT8_T +#ifndef HAVE_INT8_T + typedef char int8_t; +#endif + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the <limits.h> header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the <linux/soundcard.h> header file. */ +#undef HAVE_LINUX_SOUNDCARD_H + +/* Define to 1 if long double works and has more range or precision than + double. */ +#undef HAVE_LONG_DOUBLE + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* build with mpglib support */ +#undef HAVE_MPGLIB + +/* have nasm */ +#undef HAVE_NASM + +/* Define to 1 if you have the <ncurses/termcap.h> header file. */ +#undef HAVE_NCURSES_TERMCAP_H + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the <sys/soundcard.h> header file. */ +#undef HAVE_SYS_SOUNDCARD_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/time.h> header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* have termcap */ +#undef HAVE_TERMCAP + +/* Define to 1 if you have the <termcap.h> header file. */ +#undef HAVE_TERMCAP_H + +/* add uint16_t type */ +#undef HAVE_UINT16_T +#ifndef HAVE_UINT16_T + typedef unsigned short uint16_t; +#endif + +/* add uint32_t type */ +#undef HAVE_UINT32_T +#ifndef HAVE_UINT32_T +#undef A_UINT32_T + typedef A_UINT32_T uint32_t; +#endif + +/* add uint64_t type */ +#undef HAVE_UINT64_T +#ifndef HAVE_UINT64_T +#undef A_UINT64_T + typedef A_UINT64_T uint64_t; +#endif + +/* add uint8_t type */ +#undef HAVE_UINT8_T +#ifndef HAVE_UINT8_T + typedef unsigned char uint8_t; +#endif + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* winsock */ +#undef HAVE_WINSOCKET + +/* requested by Frank, seems to be temporary needed for a smooth transition */ +#undef LAME_LIBRARY_BUILD + +/* build with libsndfile support */ +#undef LIBSNDFILE + +/* use MMX version of choose_table */ +#undef MMX_choose_table + +/* no debug build */ +#undef NDEBUG + +/* build without hooks for analyzer */ +#undef NOANALYSIS + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if the C compiler supports function prototypes. */ +#undef PROTOTYPES + +/* The size of a `double', as computed by sizeof. */ +#undef SIZEOF_DOUBLE + +/* The size of a `float', as computed by sizeof. */ +#undef SIZEOF_FLOAT + +/* The size of a `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of a `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of a `long double', as computed by sizeof. */ +#undef SIZEOF_LONG_DOUBLE + +/* The size of a `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* The size of a `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of a `unsigned int', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_INT + +/* The size of a `unsigned long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG + +/* The size of a `unsigned long long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG_LONG + +/* The size of a `unsigned short', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_SHORT + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* IEEE754 compatible machine */ +#undef TAKEHIRO_IEEE754_HACK + +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ +#undef TIME_WITH_SYS_TIME + +/* faster log implementation with less but enough precission */ +#undef USE_FAST_LOG + +/* build with layer 1 decoding */ +#undef USE_LAYER_1 + +/* build with layer 2 decoding */ +#undef USE_LAYER_2 + +/* Version number of package */ +#undef VERSION + +/* Define if using the dmalloc debugging malloc package */ +#undef WITH_DMALLOC + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* we're on DEC Alpha */ +#undef __DECALPHA__ + +/* work around a glibc bug */ +#undef __NO_MATH_INLINES + +/* Define like PROTOTYPES; this can be used by system headers. */ +#undef __PROTOTYPES + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `unsigned' if <sys/types.h> does not define. */ +#undef size_t + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + diff --git a/lame-3.97/config.sub b/lame-3.97/config.sub new file mode 100644 index 0000000..9d7f733 --- /dev/null +++ b/lame-3.97/config.sub @@ -0,0 +1,1504 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-07-04' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | amd64-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/lame-3.97/configMS.h b/lame-3.97/configMS.h new file mode 100644 index 0000000..67e88fe --- /dev/null +++ b/lame-3.97/configMS.h @@ -0,0 +1,120 @@ +/* The number of bytes in a double. */ +#define SIZEOF_DOUBLE 8 + +/* The number of bytes in a float. */ +#define SIZEOF_FLOAT 4 + +/* The number of bytes in a int. */ +#define SIZEOF_INT 4 + +/* The number of bytes in a long. */ +#define SIZEOF_LONG 4 + +/* The number of bytes in a long double. */ +#define SIZEOF_LONG_DOUBLE 12 + +/* The number of bytes in a short. */ +#define SIZEOF_SHORT 2 + +/* The number of bytes in a unsigned int. */ +#define SIZEOF_UNSIGNED_INT 4 + +/* The number of bytes in a unsigned long. */ +#define SIZEOF_UNSIGNED_LONG 4 + +/* The number of bytes in a unsigned short. */ +#define SIZEOF_UNSIGNED_SHORT 2 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS + +/* Define if you have the <errno.h> header file. */ +#define HAVE_ERRNO_H + +/* Define if you have the <fcntl.h> header file. */ +#define HAVE_FCNTL_H + +/* Define if you have the <limits.h> header file. */ +#define HAVE_LIMITS_H + +/* Name of package */ +#define PACKAGE "lame" + +/* Version number of package */ +#define VERSION "3.97" + +/* Define if compiler has function prototypes */ +#define PROTOTYPES 1 + +/* enable VBR bitrate histogram */ +#define BRHIST 1 + +/* IEEE754 compatible machine */ +#define TAKEHIRO_IEEE754_HACK 1 + +/* faster log implementation with less but enough precission */ +#define USE_FAST_LOG 1 + +#define HAVE_STRCHR +#define HAVE_MEMCPY + +#if defined(_MSC_VER) || defined(__BORLANDC__) +#pragma warning( disable : 4305 ) + typedef __int8 int8_t; + typedef __int16 int16_t; + typedef __int32 int32_t; + typedef __int64 int64_t; + + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int64 uint64_t; + + typedef float float32_t; + typedef double float64_t; +#elif defined (__GNUC__) +#define __int8_t_defined +#define uint8_t unsigned char +#define uint16_t unsigned short +#define uint32_t unsigned int +#define uint64_t unsigned long long + +#define int8_t signed char +#define int16_t signed short +#define int32_t signed int +#define int64_t signed long long +#endif + +typedef long double ieee854_float80_t; +typedef double ieee754_float64_t; +typedef float ieee754_float32_t; + +#ifdef HAVE_MPGLIB +# define DECODE_ON_THE_FLY 1 +#endif + +#ifdef LAME_ACM +/* memory hacking for driver purposes */ +#define calloc(x,y) acm_Calloc(x,y) +#define free(x) acm_Free(x) +#define malloc(x) acm_Malloc(x) + +#include <stddef.h> +void *acm_Calloc( size_t num, size_t size ); +void *acm_Malloc( size_t size ); +void acm_Free( void * mem); +#endif /* LAME_ACM */ + +#define LAME_LIBRARY_BUILD + + +#ifdef HAVE_NASM + #if (defined(__ICL) && (__ICL >= 450)) + #define HAVE_XMMINTRIN_H + #elif defined(_MSC_VER) + #include <malloc.h> + #ifdef _mm_malloc + #define HAVE_XMMINTRIN_H + #endif + #endif +#endif diff --git a/lame-3.97/configure b/lame-3.97/configure new file mode 100644 index 0000000..862abce --- /dev/null +++ b/lame-3.97/configure @@ -0,0 +1,32549 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59 for lame 3.97. +# +# Report bugs to <lame-dev@lists.sf.net>. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='lame' +PACKAGE_TARNAME='lame' +PACKAGE_VERSION='3.97' +PACKAGE_STRING='lame 3.97' +PACKAGE_BUGREPORT='lame-dev@lists.sf.net' + +ac_unique_file="libmp3lame/lame.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#if HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# if HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#if HAVE_STRINGS_H +# include <strings.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif +#if HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT am__include am__quote CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBTOOL_DEPS U ANSI2KNR ALLOCA GTK_CONFIG GTK_CFLAGS GTK_LIBS LIB_WITH_DECODER_TRUE LIB_WITH_DECODER_FALSE WITH_BRHIST_TRUE WITH_BRHIST_FALSE NASM HAVE_NASM_TRUE HAVE_NASM_FALSE INCLUDES FRONTEND_LDFLAGS FRONTEND_CFLAGS FRONTEND_LDADD LDADD LIB_MAJOR_VERSION LIB_MINOR_VERSION NASM_FORMAT MAKEDEP RM_F WITH_FRONTEND WITH_MP3X WITH_MP3RTP CPUTYPE CONFIG_DEFS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures lame 3.97 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of lame 3.97:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-largefile omit support for large files + --enable-nasm Allow the use of nasm if available + --disable-gtktest Do not try to compile and run a test GTK program + --enable-efence Use ElectricFence for malloc debugging + --disable-analyzer-hooks Exclude analyzer hooks + --disable-decoder Exclude mpg123 decoder + --enable-decode-layer1 Include layer1 decoding default=no + --disable-decode-layer2 Exclude layer2 decoding + --disable-frontend Do not build the lame executable default=build + --enable-mp3x Build GTK frame analyzer default=no + --enable-mp3rtp Build mp3rtp default=no + --disable-brhist Include the VBR bitrate histogram feature + default=yes + --enable-all-float Whether to make all floting point variables as float, not double + default=no + --enable-expopt=full,norm Whether to enable experimental optimizations + default=no + --enable-debug=alot,norm Enable debugging (disables optimizations) + default=no + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] + include additional configurations [automatic] + --with-dmalloc use dmalloc, as in + http://www.dmalloc.com/dmalloc.tar.gz + --with-gtk-prefix=PFX Prefix where GTK is installed (optional) + --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional) + --with-fileio=lame Use lame's internal file io routines default + =sndfile Use Erik de Castro Lopo's libsndfile + (no stdin possible currently) + --with-sndfile-prefix=DIR Alternate location for libsndfile + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to <lame-dev@lists.sf.net>. +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +lame configure 3.97 +generated by GNU Autoconf 2.59 + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by lame $as_me 3.97, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + +am__api_version="1.9" +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='lame' + VERSION='3.97' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + ac_config_headers="$ac_config_headers config.h" + +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + + +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +echo "$as_me:$LINENO: checking for AIX" >&5 +echo $ECHO_N "checking for AIX... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef _AIX + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +cat >>confdefs.h <<\_ACEOF +#define _ALL_SOURCE 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest* + + +echo "$as_me:$LINENO: checking for library containing strerror" >&5 +echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 +if test "${ac_cv_search_strerror+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +ac_cv_search_strerror=no +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_strerror="none required" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test "$ac_cv_search_strerror" = no; then + for ac_lib in cposix; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror (); +int +main () +{ +strerror (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_search_strerror="-l$ac_lib" +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done +fi +LIBS=$ac_func_search_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 +echo "${ECHO_T}$ac_cv_search_strerror" >&6 +if test "$ac_cv_search_strerror" != no; then + test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" + +fi + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking minix/config.h usability" >&5 +echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <minix/config.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking minix/config.h presence" >&5 +echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <minix/config.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for minix/config.h" >&5 +echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6 +if test "${ac_cv_header_minix_config_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_minix_config_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5 +echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6 + +fi +if test $ac_cv_header_minix_config_h = yes; then + MINIX=yes +else + MINIX= +fi + + +if test "$MINIX" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_SOURCE 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _POSIX_1_SOURCE 2 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define _MINIX 1 +_ACEOF + +fi + +case $host_os in + *cygwin* ) CYGWIN=yes;; + * ) CYGWIN=no;; +esac + +# AC_DISABLE_SHARED +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/${ac_tool_prefix}nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + esac + fi + done + IFS="$lt_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case "$host_cpu" in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4514 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +esac + +need_locks="$enable_libtool_lock" + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:$LINENO: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5620:" \ + "checking for Fortran 77 compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for *BSD + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris* | sysv5*) + symcode='[BDRT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <<EOF >> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# +# Check for any special shared library compilation flags. +# +lt_prog_cc_shlib= +if test "$GCC" = no; then + case $host_os in + sco3.2v5*) + lt_prog_cc_shlib='-belf' + ;; + esac +fi +if test -n "$lt_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + + +# +# Check to make sure the static flag actually works. +# +echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_prog_compiler_static" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6718: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6722: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-static' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic='-Kpic' + lt_prog_compiler_static='-dn' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6980: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6984: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7042: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:7046: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec=' ' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + ia64*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + *) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 9282 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 9380 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which librarie types wil actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-tags was given. +if test "${with_tags+set}" = set; then + withval="$with_tags" + tagnames="$withval" +fi; + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cc + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break + ;; + *) + test "$with_gnu_ld" != yes && break + ;; + esac + fi + done + IFS="$lt_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 </dev/null` in +*GNU* | *'with BFD'*) + lt_cv_prog_gnu_ld=yes + ;; +*) + lt_cv_prog_gnu_ld=no + ;; +esac +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_CXX=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX=' ' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + hardcode_libdir_separator_CXX=: + ;; + ia64*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + *) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case "$host_cpu" in + hppa*64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case "$host_cpu" in + ia64*|hppa*64*) + archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sco*) + archive_cmds_need_lc_CXX=no + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + archive_cmds_need_lc_CXX=no + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <<EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +EOF + +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-static' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + sco*) + case $cc_basename in + CC*) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + *) + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + unixware*) + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11628: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11632: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11690: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11694: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 13059 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 13157 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +test "$ld_shlibs_F77" = no && can_build_shared=no + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-static' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_F77='-Kpic' + lt_prog_compiler_static_F77='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14042: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14046: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14104: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14108: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_F77=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_f77_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_F77=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77=' ' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + ia64*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + *) + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + sco3.2v5*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_F77='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv5*) + no_undefined_flag_F77=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_F77= + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16226: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16230: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case "$host_cpu" in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-static' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + sco3.2v5*) + lt_prog_compiler_pic_GCJ='-Kpic' + lt_prog_compiler_static_GCJ='-dn' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16488: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16492: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp + $SED '/^$/d' conftest.err >conftest.er2 + if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case "$host_os" in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16550: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16554: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp + $SED '/^$/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' + else + ld_shlibs_GCJ=no + fi + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* ) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # -bexpall does not export symbols beginning with underscore (_) + always_export_symbols_GCJ=yes + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ=' ' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds it's shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10* | hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case "$host_cpu" in + hppa*64*|ia64*) + archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' + ;; + *) + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + case "$host_cpu" in + hppa*64*) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + ia64*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + *) + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + sco3.2v5*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv5*) + no_undefined_flag_GCJ=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + hardcode_libdir_flag_spec_GCJ= + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib<name>.so + # instead of lib<name>.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case "$host_cpu" in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 18790 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +#line 18888 "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + +CFLAGS="${ac_save_CFLAGS}" + +# increase this when the shared lib becomes totally incompatible +LIB_MAJOR_VERSION=0 + +# increase this when changes are made, but they are upward compatible +# to previous versions +LIB_MINOR_VERSION=0 + +if test "${ac_cv_cygwin}" = "yes"; then + if test "${CC}" != "gcc"; then + { { echo "$as_me:$LINENO: error: Please use + CC=gcc ./configure + Abort this configure run and add \"CC=gcc\" or you will + see errors and no lame.exe will be build." >&5 +echo "$as_me: error: Please use + CC=gcc ./configure + Abort this configure run and add \"CC=gcc\" or you will + see errors and no lame.exe will be build." >&2;} + { (exit 1); exit 1; }; } + fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +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 "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include <stdlib.h> +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc + + +echo "$as_me:$LINENO: checking for function prototypes" >&5 +echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6 +if test "$ac_cv_prog_cc_stdc" != no; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define PROTOTYPES 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define __PROTOTYPES 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +if test "$ac_cv_prog_cc_stdc" != no; then + U= ANSI2KNR= +else + U=_ ANSI2KNR=./ansi2knr +fi +# Ensure some checks needed by ansi2knr itself. + + +for ac_header in string.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo "$as_me:$LINENO: checking for dmalloc.h" >&5 +echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking dmalloc.h usability" >&5 +echo $ECHO_N "checking dmalloc.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <dmalloc.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking dmalloc.h presence" >&5 +echo $ECHO_N "checking dmalloc.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <dmalloc.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: dmalloc.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: dmalloc.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: dmalloc.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: dmalloc.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: dmalloc.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: dmalloc.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: dmalloc.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: dmalloc.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: dmalloc.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: dmalloc.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: dmalloc.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for dmalloc.h" >&5 +echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 +if test "${ac_cv_header_dmalloc_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_dmalloc_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_dmalloc_h" >&5 +echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 + +fi + + +if test "${ac_cv_header_dmalloc_h}" = "yes"; then + echo "$as_me:$LINENO: checking if malloc debugging is wanted" >&5 +echo $ECHO_N "checking if malloc debugging is wanted... $ECHO_C" >&6 + +# Check whether --with-dmalloc or --without-dmalloc was given. +if test "${with_dmalloc+set}" = set; then + withval="$with_dmalloc" + if test "$withval" = yes; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define WITH_DMALLOC 1 +_ACEOF + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi; + +fi + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + + + + + + + + + +for ac_header in \ + errno.h \ + fcntl.h \ + limits.h \ + stdint.h \ + string.h \ + sys/soundcard.h \ + sys/time.h \ + unistd.h \ + linux/soundcard.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +if test ${cross_compiling} = "no"; then + echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 +echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 +if test "${ac_cv_c_bigendian+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # See if sys/param.h defines the BYTE_ORDER macro. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/param.h> + +int +main () +{ +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # It does; now see whether it defined to BIG_ENDIAN or not. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/param.h> + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_bigendian=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +# It does not; compile a test program. +if test "$cross_compiling" = yes; then + # try to guess the endianness by grepping values into an object file + ac_cv_c_bigendian=unknown + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; +short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; +void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } +short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; +short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; +void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } +int +main () +{ + _ascii (); _ebcdic (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then + ac_cv_c_bigendian=yes +fi +if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi +fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +main () +{ + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long l; + char c[sizeof (long)]; + } u; + u.l = 1; + exit (u.c[sizeof (long) - 1] == 1); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_bigendian=no +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_bigendian=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 +echo "${ECHO_T}$ac_cv_c_bigendian" >&6 +case $ac_cv_c_bigendian in + yes) + +cat >>confdefs.h <<\_ACEOF +#define WORDS_BIGENDIAN 1 +_ACEOF + ;; + no) + ;; + *) + { { echo "$as_me:$LINENO: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&5 +echo "$as_me: error: unknown endianness +presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +fi + +if test "${GCC}" = "yes"; then + echo "$as_me:$LINENO: checking version of GCC" >&5 +echo $ECHO_N "checking version of GCC... $ECHO_C" >&6 + GCC_version=`${CC} --version | sed -n '1s/^[^ ]* (.*) //;s/ .*$//;1p'` + echo "$as_me:$LINENO: result: ${GCC_version}" >&5 +echo "${ECHO_T}${GCC_version}" >&6 +fi + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + + +echo "$as_me:$LINENO: checking for short" >&5 +echo $ECHO_N "checking for short... $ECHO_C" >&6 +if test "${ac_cv_type_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((short *) 0) + return 0; +if (sizeof (short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_short=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_short=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 +echo "${ECHO_T}$ac_cv_type_short" >&6 + +echo "$as_me:$LINENO: checking size of short" >&5 +echo $ECHO_N "checking size of short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_short" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (short)); } +unsigned long ulongval () { return (long) (sizeof (short)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_short" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned short" >&5 +echo $ECHO_N "checking for unsigned short... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned short *) 0) + return 0; +if (sizeof (unsigned short)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_short=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_short=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_short" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_short" >&6 + +echo "$as_me:$LINENO: checking size of unsigned short" >&5 +echo $ECHO_N "checking size of unsigned short... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_short+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_short" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned short))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_short=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned short)); } +unsigned long ulongval () { return (long) (sizeof (unsigned short)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned short))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned short)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned short)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_short=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned short), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_short=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_short" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_short" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_SHORT $ac_cv_sizeof_unsigned_short +_ACEOF + + +echo "$as_me:$LINENO: checking for int" >&5 +echo $ECHO_N "checking for int... $ECHO_C" >&6 +if test "${ac_cv_type_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int *) 0) + return 0; +if (sizeof (int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 +echo "${ECHO_T}$ac_cv_type_int" >&6 + +echo "$as_me:$LINENO: checking size of int" >&5 +echo $ECHO_N "checking size of int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_int" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (int)); } +unsigned long ulongval () { return (long) (sizeof (int)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned int" >&5 +echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned int *) 0) + return 0; +if (sizeof (unsigned int)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_int=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_int=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 + +echo "$as_me:$LINENO: checking size of unsigned int" >&5 +echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_int+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_int" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_int=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned int)); } +unsigned long ulongval () { return (long) (sizeof (unsigned int)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned int))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned int)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned int)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_int=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned int), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_int=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int +_ACEOF + + +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned long" >&5 +echo $ECHO_N "checking for unsigned long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned long *) 0) + return 0; +if (sizeof (unsigned long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long" >&6 + +echo "$as_me:$LINENO: checking size of unsigned long" >&5 +echo $ECHO_N "checking size of unsigned long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned long)); } +unsigned long ulongval () { return (long) (sizeof (unsigned long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long +_ACEOF + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + +echo "$as_me:$LINENO: checking for unsigned long long" >&5 +echo $ECHO_N "checking for unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_type_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((unsigned long long *) 0) + return 0; +if (sizeof (unsigned long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_unsigned_long_long=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_unsigned_long_long=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_unsigned_long_long" >&6 + +echo "$as_me:$LINENO: checking size of unsigned long long" >&5 +echo $ECHO_N "checking size of unsigned long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_unsigned_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_unsigned_long_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (unsigned long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_unsigned_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (unsigned long long)); } +unsigned long ulongval () { return (long) (sizeof (unsigned long long)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (unsigned long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (unsigned long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (unsigned long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_unsigned_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (unsigned long long), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_unsigned_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_unsigned_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long +_ACEOF + + +echo "$as_me:$LINENO: checking for float" >&5 +echo $ECHO_N "checking for float... $ECHO_C" >&6 +if test "${ac_cv_type_float+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((float *) 0) + return 0; +if (sizeof (float)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_float=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_float=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_float" >&5 +echo "${ECHO_T}$ac_cv_type_float" >&6 + +echo "$as_me:$LINENO: checking size of float" >&5 +echo $ECHO_N "checking size of float... $ECHO_C" >&6 +if test "${ac_cv_sizeof_float+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_float" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (float))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_float=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (float)); } +unsigned long ulongval () { return (long) (sizeof (float)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (float))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (float)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (float)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_float=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (float), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_float=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_float" >&5 +echo "${ECHO_T}$ac_cv_sizeof_float" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_FLOAT $ac_cv_sizeof_float +_ACEOF + + +echo "$as_me:$LINENO: checking for double" >&5 +echo $ECHO_N "checking for double... $ECHO_C" >&6 +if test "${ac_cv_type_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((double *) 0) + return 0; +if (sizeof (double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_double" >&5 +echo "${ECHO_T}$ac_cv_type_double" >&6 + +echo "$as_me:$LINENO: checking size of double" >&5 +echo $ECHO_N "checking size of double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_double" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (double)); } +unsigned long ulongval () { return (long) (sizeof (double)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_double" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_DOUBLE $ac_cv_sizeof_double +_ACEOF + + + +echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5 +echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6 +if test "${ac_cv_c_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <float.h> + long double foo = 0.0; +int +main () +{ +static int test_array [1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug. */ + (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON) + | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5 +echo "${ECHO_T}$ac_cv_c_long_double" >&6 +if test $ac_cv_c_long_double = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LONG_DOUBLE 1 +_ACEOF + +fi + +if test "${ac_cv_c_have_long_double}" = "yes" ; then + echo "$as_me:$LINENO: checking for long double" >&5 +echo $ECHO_N "checking for long double... $ECHO_C" >&6 +if test "${ac_cv_type_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((long double *) 0) + return 0; +if (sizeof (long double)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_double=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_long_double=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_double" >&5 +echo "${ECHO_T}$ac_cv_type_long_double" >&6 + +echo "$as_me:$LINENO: checking size of long double" >&5 +echo $ECHO_N "checking size of long double... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_double+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_double" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo= ac_hi= +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long double))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_double=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run test program while cross compiling +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +long longval () { return (long) (sizeof (long double)); } +unsigned long ulongval () { return (long) (sizeof (long double)); } +#include <stdio.h> +#include <stdlib.h> +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long double))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long double)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long double)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_double=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute sizeof (long double), 77 +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_double=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_double" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_double" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double +_ACEOF + + +fi + +echo "$as_me:$LINENO: checking for uint8_t" >&5 +echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint8_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint8_t *) 0) + return 0; +if (sizeof (uint8_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint8_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint8_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint8_t" >&6 +if test $ac_cv_type_uint8_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT8_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int8_t" >&5 +echo $ECHO_N "checking for int8_t... $ECHO_C" >&6 +if test "${ac_cv_type_int8_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int8_t *) 0) + return 0; +if (sizeof (int8_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int8_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int8_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5 +echo "${ECHO_T}$ac_cv_type_int8_t" >&6 +if test $ac_cv_type_int8_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT8_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for uint16_t" >&5 +echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint16_t *) 0) + return 0; +if (sizeof (uint16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint16_t" >&6 +if test $ac_cv_type_uint16_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT16_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int16_t" >&5 +echo $ECHO_N "checking for int16_t... $ECHO_C" >&6 +if test "${ac_cv_type_int16_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int16_t *) 0) + return 0; +if (sizeof (int16_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int16_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int16_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5 +echo "${ECHO_T}$ac_cv_type_int16_t" >&6 +if test $ac_cv_type_int16_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT16_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for uint32_t" >&5 +echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint32_t *) 0) + return 0; +if (sizeof (uint32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint32_t" >&6 +if test $ac_cv_type_uint32_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT32_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int32_t" >&5 +echo $ECHO_N "checking for int32_t... $ECHO_C" >&6 +if test "${ac_cv_type_int32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int32_t *) 0) + return 0; +if (sizeof (int32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 +echo "${ECHO_T}$ac_cv_type_int32_t" >&6 +if test $ac_cv_type_int32_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT32_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for uint64_t" >&5 +echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6 +if test "${ac_cv_type_uint64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((uint64_t *) 0) + return 0; +if (sizeof (uint64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_uint64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_uint64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 +echo "${ECHO_T}$ac_cv_type_uint64_t" >&6 +if test $ac_cv_type_uint64_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_UINT64_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for int64_t" >&5 +echo $ECHO_N "checking for int64_t... $ECHO_C" >&6 +if test "${ac_cv_type_int64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((int64_t *) 0) + return 0; +if (sizeof (int64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_int64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_int64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5 +echo "${ECHO_T}$ac_cv_type_int64_t" >&6 +if test $ac_cv_type_int64_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INT64_T 1 +_ACEOF + + +fi + + + + + + + + + + + + + + +if test "${ac_cv_sizeof_unsigned_short}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT32_T unsigned short +_ACEOF + +else + if test "${ac_cv_sizeof_unsigned_int}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT32_T unsigned int +_ACEOF + + else + if test "${ac_cv_sizeof_unsigned_long}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT32_T unsigned long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +if test "${ac_cv_sizeof_short}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT32_T short +_ACEOF + +else + if test "${ac_cv_sizeof_int}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT32_T int +_ACEOF + + else + if test "${ac_cv_sizeof_long}" = "4"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT32_T long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +if test "${ac_cv_sizeof_unsigned_int}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT64_T unsigned int +_ACEOF + +else + if test "${ac_cv_sizeof_unsigned_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT64_T unsigned long +_ACEOF + + else + if test "${ac_cv_sizeof_unsigned_long_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_UINT64_T unsigned long long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +if test "${ac_cv_sizeof_int}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT64_T int +_ACEOF + +else + if test "${ac_cv_sizeof_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT64_T long +_ACEOF + + else + if test "${ac_cv_sizeof_long_long}" = "8"; then + cat >>confdefs.h <<\_ACEOF +#define A_INT64_T long long +_ACEOF + + else + { { echo "$as_me:$LINENO: error: CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net" >&5 +echo "$as_me: error: CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net" >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi + + + + +echo "$as_me:$LINENO: checking for IEEE854 compliant 80 bit floats" >&5 +echo $ECHO_N "checking for IEEE854 compliant 80 bit floats... $ECHO_C" >&6 +if test "${alex_cv_ieee854_float80+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + { echo "$as_me:$LINENO: WARNING: can't check for IEEE854 compliant 80 bit floats" >&5 +echo "$as_me: WARNING: can't check for IEEE854 compliant 80 bit floats" >&2;} + +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int float2long_IEEE_compliance ( void ) +{ + struct { + long padding; /* to prevent unaligned access */ + float f; + } s; + s.f = 12582912.; if ( *(long*)(&s.f) != 1262485504l ) return 0; + s.f = 12615679.; if ( *(long*)(&s.f) != 1262518271l ) return 0; + s.f = 13582912.; if ( *(long*)(&s.f) != 1263485504l ) return 0; + s.f = 12550145.; if ( *(long*)(&s.f) != 1262452737l ) return 0; + s.f = 11582912.; if ( *(long*)(&s.f) != 1261485504l ) return 0; + return 1; +} + +int main(void) +{ + int retval; + + retval = float2long_IEEE_compliance(); + + /* no error return -> success */ + return !retval; +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + alex_cv_ieee854_float80=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +alex_cv_ieee854_float80=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $alex_cv_ieee854_float80" >&5 +echo "${ECHO_T}$alex_cv_ieee854_float80" >&6 +if test "${alex_cv_ieee854_float80}" = "yes" ; then + if test "${ac_cv_c_long_double}" = "yes" ; then + echo "$as_me:$LINENO: checking for ieee854_float80_t" >&5 +echo $ECHO_N "checking for ieee854_float80_t... $ECHO_C" >&6 +if test "${ac_cv_type_ieee854_float80_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ieee854_float80_t *) 0) + return 0; +if (sizeof (ieee854_float80_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ieee854_float80_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ieee854_float80_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ieee854_float80_t" >&5 +echo "${ECHO_T}$ac_cv_type_ieee854_float80_t" >&6 +if test $ac_cv_type_ieee854_float80_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_IEEE854_FLOAT80_T 1 +_ACEOF + +long double +fi + + + + + +cat >>confdefs.h <<\_ACEOF +#define HAVE_IEEE854_FLOAT80 1 +_ACEOF + + fi +fi +echo "$as_me:$LINENO: checking for ieee754_float64_t" >&5 +echo $ECHO_N "checking for ieee754_float64_t... $ECHO_C" >&6 +if test "${ac_cv_type_ieee754_float64_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ieee754_float64_t *) 0) + return 0; +if (sizeof (ieee754_float64_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ieee754_float64_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ieee754_float64_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ieee754_float64_t" >&5 +echo "${ECHO_T}$ac_cv_type_ieee754_float64_t" >&6 +if test $ac_cv_type_ieee754_float64_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_IEEE754_FLOAT64_T 1 +_ACEOF + + +fi +echo "$as_me:$LINENO: checking for ieee754_float32_t" >&5 +echo $ECHO_N "checking for ieee754_float32_t... $ECHO_C" >&6 +if test "${ac_cv_type_ieee754_float32_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((ieee754_float32_t *) 0) + return 0; +if (sizeof (ieee754_float32_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_ieee754_float32_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ieee754_float32_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ieee754_float32_t" >&5 +echo "${ECHO_T}$ac_cv_type_ieee754_float32_t" >&6 +if test $ac_cv_type_ieee754_float32_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_IEEE754_FLOAT32_T 1 +_ACEOF + + +fi + + + + + + + + + +cat >>confdefs.h <<\_ACEOF +#define LAME_LIBRARY_BUILD 1 +_ACEOF + + + +if test ${cross_compiling} = "yes"; then + { echo "$as_me:$LINENO: WARNING: + ************************************************************************** + * * + * You are cross compiling: * + * - I did not have a change to determine * + * + the size of: * + * - short * + * - unsigned short * + * - int * + * - unsigned int * + * - long * + * - unsigned long * + * - float * + * - double * + * - long double * + * + the endianess of the system * + * - You have to provide appropriate defines for them in config.h, e.g. * + * + define SIZEOF_SHORT to 2 if the size of a short is 2 * + * + define WORDS_BIGENDIAN if your system is a big endian system * + * * + **************************************************************************" >&5 +echo "$as_me: WARNING: + ************************************************************************** + * * + * You are cross compiling: * + * - I did not have a change to determine * + * + the size of: * + * - short * + * - unsigned short * + * - int * + * - unsigned int * + * - long * + * - unsigned long * + * - float * + * - double * + * - long double * + * + the endianess of the system * + * - You have to provide appropriate defines for them in config.h, e.g. * + * + define SIZEOF_SHORT to 2 if the size of a short is 2 * + * + define WORDS_BIGENDIAN if your system is a big endian system * + * * + **************************************************************************" >&2;} +fi + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <sys/time.h> +#include <time.h> + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <alloca.h> +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include <malloc.h> +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include <alloca.h> +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + + + +for ac_func in gettimeofday strtol +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +if test "X${ac_cv_func_strtol}" != "Xyes"; then + { { echo "$as_me:$LINENO: error: function strtol is mandatory" >&5 +echo "$as_me: error: function strtol is mandatory" >&2;} + { (exit 1); exit 1; }; } +fi + +SOCKETFUNCTION=YES +if test "${ac_cv_header_winsock2_h+set}" = set; then + echo "$as_me:$LINENO: checking for winsock2.h" >&5 +echo $ECHO_N "checking for winsock2.h... $ECHO_C" >&6 +if test "${ac_cv_header_winsock2_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: $ac_cv_header_winsock2_h" >&5 +echo "${ECHO_T}$ac_cv_header_winsock2_h" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking winsock2.h usability" >&5 +echo $ECHO_N "checking winsock2.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <winsock2.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking winsock2.h presence" >&5 +echo $ECHO_N "checking winsock2.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <winsock2.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: winsock2.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: winsock2.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: winsock2.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: winsock2.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: winsock2.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: winsock2.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: winsock2.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: winsock2.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: winsock2.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: winsock2.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: winsock2.h: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for winsock2.h" >&5 +echo $ECHO_N "checking for winsock2.h... $ECHO_C" >&6 +if test "${ac_cv_header_winsock2_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_winsock2_h=$ac_header_preproc +fi +echo "$as_me:$LINENO: result: $ac_cv_header_winsock2_h" >&5 +echo "${ECHO_T}$ac_cv_header_winsock2_h" >&6 + +fi +if test $ac_cv_header_winsock2_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_WINSOCKET +_ACEOF + + LIBS="$LIBS -lwsock32" +fi + + +if test $ac_cv_header_winsock2_h = no; then + +for ac_func in socket +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + if test $ac_cv_func_socket = no; then + # maybe it is in libsocket + echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 +echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket (); +int +main () +{ +socket (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_socket=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_socket=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 +if test $ac_cv_lib_socket_socket = yes; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_SOCKET 1 +_ACEOF + + LIBS="$LIBS -lsocket" +fi + + + if test "X${ac_cv_lib_socket_socket}" != "Xyes"; then + SOCKETFUNCTION=NO + else + case ${host_os} in + *solaris*) + LIBS="$LIBS -lnsl" + ;; + esac + fi + fi +fi + + +CFLAGS=${CFLAGS} +CONFIG_DEFS=${CONFIG_DEFS} +NASM= +INCLUDES="-I\$(top_srcdir)/include -I\$(srcdir)" +FRONTEND_LDFLAGS= +FRONTEND_CFLAGS= +LIB_SOURCES= +MAKEDEP="-M" +RM_F="rm -f" + +# Check whether --enable-nasm or --disable-nasm was given. +if test "${enable_nasm+set}" = set; then + enableval="$enable_nasm" + ASM_FOR_ARCH="i386" +else + ASM_FOR_ARCH="" +fi; + + + +for ac_header in termcap.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in ncurses/termcap.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------ ## +## Report this to lame-dev@lists.sf.net ## +## ------------------------------------ ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +echo "$as_me:$LINENO: checking for initscr in -ltermcap" >&5 +echo $ECHO_N "checking for initscr in -ltermcap... $ECHO_C" >&6 +if test "${ac_cv_lib_termcap_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_termcap_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_termcap_initscr=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_initscr" >&6 +if test $ac_cv_lib_termcap_initscr = yes; then + HAVE_TERMCAP="termcap" +fi + +echo "$as_me:$LINENO: checking for initscr in -lcurses" >&5 +echo $ECHO_N "checking for initscr in -lcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_curses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_curses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_curses_initscr=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_curses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_curses_initscr" >&6 +if test $ac_cv_lib_curses_initscr = yes; then + HAVE_TERMCAP="curses" +fi + +echo "$as_me:$LINENO: checking for initscr in -lncurses" >&5 +echo $ECHO_N "checking for initscr in -lncurses... $ECHO_C" >&6 +if test "${ac_cv_lib_ncurses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lncurses $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char initscr (); +int +main () +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ncurses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ncurses_initscr=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_ncurses_initscr" >&6 +if test $ac_cv_lib_ncurses_initscr = yes; then + HAVE_TERMCAP="ncurses" +fi + + +echo "$as_me:$LINENO: checking for cos in -lm" >&5 +echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6 +if test "${ac_cv_lib_m_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char cos (); +int +main () +{ +cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_m_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_m_cos=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_m_cos" >&6 +if test $ac_cv_lib_m_cos = yes; then + USE_LIBM="-lm" +fi + +echo "$as_me:$LINENO: checking for cos in -lffm" >&5 +echo $ECHO_N "checking for cos in -lffm... $ECHO_C" >&6 +if test "${ac_cv_lib_ffm_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lffm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char cos (); +int +main () +{ +cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ffm_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_ffm_cos=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ffm_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_ffm_cos" >&6 +if test $ac_cv_lib_ffm_cos = yes; then + USE_LIBM="-lffm -lm" +fi + +echo "$as_me:$LINENO: checking for cos in -lcpml" >&5 +echo $ECHO_N "checking for cos in -lcpml... $ECHO_C" >&6 +if test "${ac_cv_lib_cpml_cos+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcpml $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char cos (); +int +main () +{ +cos (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_cpml_cos=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_cpml_cos=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_cpml_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_cpml_cos" >&6 +if test $ac_cv_lib_cpml_cos = yes; then + USE_LIBM="-lcpml" +fi + +CONFIG_MATH_LIB="${USE_LIBM}" + +echo "$as_me:$LINENO: checking for sf_open_read in -lsndfile" >&5 +echo $ECHO_N "checking for sf_open_read in -lsndfile... $ECHO_C" >&6 +if test "${ac_cv_lib_sndfile_sf_open_read+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsndfile $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char sf_open_read (); +int +main () +{ +sf_open_read (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_sndfile_sf_open_read=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_sndfile_sf_open_read=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_sndfile_sf_open_read" >&5 +echo "${ECHO_T}$ac_cv_lib_sndfile_sf_open_read" >&6 +if test $ac_cv_lib_sndfile_sf_open_read = yes; then + HAVE_SNDFILE="yes" +fi + + + + + +# Check whether --with-gtk-prefix or --without-gtk-prefix was given. +if test "${with_gtk_prefix+set}" = set; then + withval="$with_gtk_prefix" + gtk_config_prefix="$withval" +else + gtk_config_prefix="" +fi; + +# Check whether --with-gtk-exec-prefix or --without-gtk-exec-prefix was given. +if test "${with_gtk_exec_prefix+set}" = set; then + withval="$with_gtk_exec_prefix" + gtk_config_exec_prefix="$withval" +else + gtk_config_exec_prefix="" +fi; +# Check whether --enable-gtktest or --disable-gtktest was given. +if test "${enable_gtktest+set}" = set; then + enableval="$enable_gtktest" + +else + enable_gtktest=yes +fi; + + for module in . + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + # Extract the first word of "gtk-config", so it can be a program name with args. +set dummy gtk-config; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_GTK_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $GTK_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GTK_CONFIG="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" + ;; +esac +fi +GTK_CONFIG=$ac_cv_path_GTK_CONFIG + +if test -n "$GTK_CONFIG"; then + echo "$as_me:$LINENO: result: $GTK_CONFIG" >&5 +echo "${ECHO_T}$GTK_CONFIG" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + min_gtk_version=1.2.0 + echo "$as_me:$LINENO: checking for GTK - version >= $min_gtk_version" >&5 +echo $ECHO_N "checking for GTK - version >= $min_gtk_version... $ECHO_C" >&6 + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <gtk/gtk.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +no_gtk=yes +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + HAVE_GTK="yes" + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include <gtk/gtk.h> +#include <stdio.h> + +int +main () +{ + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + HAVE_GTK="no" + fi + + + rm -f conf.gtktest + +if test "${HAVE_GTK}" = "yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GTK 1 +_ACEOF + +fi + + +echo "$as_me:$LINENO: checking use of ElectricFence malloc debugging" >&5 +echo $ECHO_N "checking use of ElectricFence malloc debugging... $ECHO_C" >&6 +# Check whether --enable-efence or --disable-efence was given. +if test "${enable_efence+set}" = set; then + enableval="$enable_efence" + CONFIG_EFENCE="${enableval}" +else + CONFIG_EFENCE="no" +fi; + +case "${CONFIG_EFENCE}" in +yes) + echo "$as_me:$LINENO: checking for EF_Print in -lefence" >&5 +echo $ECHO_N "checking for EF_Print in -lefence... $ECHO_C" >&6 +if test "${ac_cv_lib_efence_EF_Print+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lefence $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char EF_Print (); +int +main () +{ +EF_Print (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_efence_EF_Print=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_efence_EF_Print=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_efence_EF_Print" >&5 +echo "${ECHO_T}$ac_cv_lib_efence_EF_Print" >&6 +if test $ac_cv_lib_efence_EF_Print = yes; then + HAVE_EFENCE="-lefence" +fi + + if test "x${HAVE_EFENCE}" != "x-lefence"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + LDADD="${LDADD} ${HAVE_EFENCE}" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_EFENCE 1 +_ACEOF + + echo "$as_me:$LINENO: result: ${CONFIG_EFENCE}" >&5 +echo "${ECHO_T}${CONFIG_EFENCE}" >&6 + fi + ;; +no) + echo "$as_me:$LINENO: result: ${CONFIG_EFENCE}" >&5 +echo "${ECHO_T}${CONFIG_EFENCE}" >&6 + ;; +*) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_EFENCE}� for efence option" >&5 +echo "$as_me: error: bad value �${CONFIG_EFENCE}� for efence option" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + +echo "$as_me:$LINENO: checking use of file io" >&5 +echo $ECHO_N "checking use of file io... $ECHO_C" >&6 +WARNING= + +# Check whether --with-fileio or --without-fileio was given. +if test "${with_fileio+set}" = set; then + withval="$with_fileio" + CONFIG_FILEIO="${withval}" +else + CONFIG_FILEIO="lame" +fi; + +# Check whether --with-sndfile-prefix or --without-sndfile-prefix was given. +if test "${with_sndfile_prefix+set}" = set; then + withval="$with_sndfile_prefix" + CONFIG_SNDFILE_PREFIX="${withval}" +else + CONFIG_SNDFILE_PREFIX="" +fi; +if test "${CONFIG_FILEIO}" = "sndfile" ; then + if test "x${CONFIG_SNDFILE_PREFIX}" != "x" ; then + # look for sndfile lib. This overrides any standard location + + + SNDFILE_LIB_LOC= + libsndfile.a + for FILE in \ + libsndfile.a; do + for DIR in $CONFIG_SNDFILE_PREFIX $CONFIG_SNDFILE_PREFIX/lib $CONFIG_SNDFILE_PREFIX/.. $CONFIG_SNDFILE_PREFIX/../lib; do + if test ".SNDFILE_LIB_LOC"="." && test -f "$DIR/$FILE"; then + SNDFILE_LIB_LOC=$DIR + fi + done + done + + + SNDFILE_INC_LOC= + for FILE in sndfile.h; do + for DIR in $CONFIG_SNDFILE_PREFIX $CONFIG_SNDFILE_PREFIX/include $CONFIG_SNDFILE_PREFIX/.. $CONFIG_SNDFILE_PREFIX/../include; do + if test ".SNDFILE_INC_LOC"="." && test -f "$DIR/$FILE"; then + SNDFILE_INC_LOC=$DIR + fi + done + done + + if test ".SNDFILE_LIB_LOC" = "." || test ".SNDFILE_INC_LOC" = "."; then + SNDFILE_LIB_LOC= + SNDFILE_INC_LOC= + fi + + if test "x${SNDFILE_LIB_LOC}" != "x" ; then + HAVE_SNDFILE="yes" + FRONTEND_LDFLAGS="-L${SNDFILE_LIB_LOC} ${FRONTEND_LDFLAGS}" + INCLUDES="-I${SNDFILE_INC_LOC} ${INCLUDES}" + else + WARNING="sndfile lib not found in specified prefix." + fi + fi + if test "${HAVE_SNDFILE}" = "yes" ; then + FRONTEND_LDADD="-lsndfile ${FRONTEND_LDADD}" + +cat >>confdefs.h <<\_ACEOF +#define LIBSNDFILE 1 +_ACEOF + + else + # default + CONFIG_FILEIO="lame" + WARNING="${WARNING} Could not find any sndfile lib on system." + fi +else + CONFIG_FILEIO="lame" +fi +echo "$as_me:$LINENO: result: ${CONFIG_FILEIO}" >&5 +echo "${ECHO_T}${CONFIG_FILEIO}" >&6 +if test "x${WARNING}" != "x" ; then + { echo "$as_me:$LINENO: WARNING: $WARNING" >&5 +echo "$as_me: WARNING: $WARNING" >&2;} +fi + + +echo "$as_me:$LINENO: checking use of analyzer hooks" >&5 +echo $ECHO_N "checking use of analyzer hooks... $ECHO_C" >&6 +# Check whether --enable-analyzer-hooks or --disable-analyzer-hooks was given. +if test "${enable_analyzer_hooks+set}" = set; then + enableval="$enable_analyzer_hooks" + CONFIG_ANALYZER="${enableval}" +else + CONFIG_ANALYZER="yes" +fi; + +case "${CONFIG_ANALYZER}" in +yes) + ;; +no) + +cat >>confdefs.h <<\_ACEOF +#define NOANALYSIS 1 +_ACEOF + + ;; +*) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_ANALYZER}� for analyzer-hooks option" >&5 +echo "$as_me: error: bad value �${CONFIG_ANALYZER}� for analyzer-hooks option" >&2;} + { (exit 1); exit 1; }; } + ;; +esac +echo "$as_me:$LINENO: result: $CONFIG_ANALYZER" >&5 +echo "${ECHO_T}$CONFIG_ANALYZER" >&6 + + +echo "$as_me:$LINENO: checking use of mpg123 decoder" >&5 +echo $ECHO_N "checking use of mpg123 decoder... $ECHO_C" >&6 +# Check whether --enable-decoder or --disable-decoder was given. +if test "${enable_decoder+set}" = set; then + enableval="$enable_decoder" + CONFIG_DECODER="${enableval}" +else + CONFIG_DECODER="yes" +fi; +# Check whether --enable-decode-layer1 or --disable-decode-layer1 was given. +if test "${enable_decode_layer1+set}" = set; then + enableval="$enable_decode_layer1" + CONFIG_DECODER_L1="${enableval}" +else + CONFIG_DECODER_L1="no" +fi; +# Check whether --enable-decode-layer2 or --disable-decode-layer2 was given. +if test "${enable_decode_layer2+set}" = set; then + enableval="$enable_decode_layer2" + CONFIG_DECODER_L2="${enableval}" +else + CONFIG_DECODER_L2="yes" +fi; + + + +if test "x${CONFIG_DECODER}" = "xyes"; then + LIB_WITH_DECODER_TRUE= + LIB_WITH_DECODER_FALSE='#' +else + LIB_WITH_DECODER_TRUE='#' + LIB_WITH_DECODER_FALSE= +fi + + +if test "${CONFIG_DECODER}" != "no" ; then + CONFIG_DECODER="yes (Layer" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MPGLIB 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define DECODE_ON_THE_FLY 1 +_ACEOF + + + if test "${CONFIG_DECODER_L1}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 1," + +cat >>confdefs.h <<\_ACEOF +#define USE_LAYER_1 1 +_ACEOF + + fi + if test "${CONFIG_DECODER_L2}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 2," + +cat >>confdefs.h <<\_ACEOF +#define USE_LAYER_2 1 +_ACEOF + + fi + CONFIG_DECODER="${CONFIG_DECODER} 3)" +fi +echo "$as_me:$LINENO: result: $CONFIG_DECODER" >&5 +echo "${ECHO_T}$CONFIG_DECODER" >&6 + + +echo "$as_me:$LINENO: checking if the lame frontend should be build" >&5 +echo $ECHO_N "checking if the lame frontend should be build... $ECHO_C" >&6 +# Check whether --enable-frontend or --disable-frontend was given. +if test "${enable_frontend+set}" = set; then + enableval="$enable_frontend" + WITH_FRONTEND="${enableval}" +else + WITH_FRONTEND=yes +fi; +if test "x${WITH_FRONTEND}" = "xyes"; then + WITH_FRONTEND=lame${ac_exeext} + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + WITH_FRONTEND= + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + +echo "$as_me:$LINENO: checking if mp3x is requested" >&5 +echo $ECHO_N "checking if mp3x is requested... $ECHO_C" >&6 +# Check whether --enable-mp3x or --disable-mp3x was given. +if test "${enable_mp3x+set}" = set; then + enableval="$enable_mp3x" + WITH_MP3X="${enableval}" +else + WITH_MP3X=no +fi; +if test "x${WITH_MP3X}" = "xyes"; then + WITH_MP3X=mp3x${ac_exeext} + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + WITH_MP3X= + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "${HAVE_GTK}" = "no"; then + if test "x${WITH_MP3X}" = "xmp3x"; then + { echo "$as_me:$LINENO: WARNING: can't build mp3x" >&5 +echo "$as_me: WARNING: can't build mp3x" >&2;} + WITH_MP3X= + fi + if test "x${CONFIG_ANALYZER}" != "xyes"; then + { echo "$as_me:$LINENO: WARNING: can't build mp3x because of disabled analyzer hooks" >&5 +echo "$as_me: WARNING: can't build mp3x because of disabled analyzer hooks" >&2;} + WITH_MP3X= + fi +fi + +echo "$as_me:$LINENO: checking if mp3rtp is requested" >&5 +echo $ECHO_N "checking if mp3rtp is requested... $ECHO_C" >&6 +# Check whether --enable-mp3rtp or --disable-mp3rtp was given. +if test "${enable_mp3rtp+set}" = set; then + enableval="$enable_mp3rtp" + WITH_MP3RTP="${enableval}" +else + WITH_MP3RTP=no +fi; +if test "x${WITH_MP3RTP}" = "xyes"; then + if test ${SOCKETFUNCTION} = NO; then + { { echo "$as_me:$LINENO: error: function socket is mandatory for mp3rtp" >&5 +echo "$as_me: error: function socket is mandatory for mp3rtp" >&2;} + { (exit 1); exit 1; }; } + fi + WITH_MP3RTP=mp3rtp${ac_exeext} + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + WITH_MP3RTP= + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +# +# this is from vorbis +# +case $host in +*86-*-linux*) + # glibc < 2.1.3 has a serious FP bug in the math inline header + # that will cripple Vorbis. Look to see if the magic FP stack + # clobber is missing in the mathinline header, thus indicating + # the buggy version + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "log10.*fldlg2.*fxch" >/dev/null 2>&1; then + bad=maybe +else + bad=no +fi +rm -f conftest* + + + echo "$as_me:$LINENO: checking glibc mathinline bug" >&5 +echo $ECHO_N "checking glibc mathinline bug... $ECHO_C" >&6 + if test ${bad} = "maybe" ;then + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "log10.*fldlg2.*fxch.*st\([0123456789]*\)" >/dev/null 2>&1; then + bad=no +else + bad=yes +fi +rm -f conftest* + + fi + echo "$as_me:$LINENO: result: ${bad}" >&5 +echo "${ECHO_T}${bad}" >&6 + if test ${bad} = "yes" ;then + { echo "$as_me:$LINENO: WARNING: " >&5 +echo "$as_me: WARNING: " >&2;} + { echo "$as_me:$LINENO: WARNING: ********************************************************" >&5 +echo "$as_me: WARNING: ********************************************************" >&2;} + { echo "$as_me:$LINENO: WARNING: * The glibc headers on this machine have a serious bug *" >&5 +echo "$as_me: WARNING: * The glibc headers on this machine have a serious bug *" >&2;} + { echo "$as_me:$LINENO: WARNING: * in /usr/include/bits/mathinline.h This bug affects *" >&5 +echo "$as_me: WARNING: * in /usr/include/bits/mathinline.h This bug affects *" >&2;} + { echo "$as_me:$LINENO: WARNING: * all floating point code, not only LAME, but all code *" >&5 +echo "$as_me: WARNING: * all floating point code, not only LAME, but all code *" >&2;} + { echo "$as_me:$LINENO: WARNING: * built on this machine. Upgrading to glibc 2.1.3 is *" >&5 +echo "$as_me: WARNING: * built on this machine. Upgrading to glibc 2.1.3 is *" >&2;} + { echo "$as_me:$LINENO: WARNING: * strongly urged to correct the problem. *" >&5 +echo "$as_me: WARNING: * strongly urged to correct the problem. *" >&2;} + { echo "$as_me:$LINENO: WARNING: *Note: that upgrading glibc will not fix any previously*" >&5 +echo "$as_me: WARNING: *Note: that upgrading glibc will not fix any previously*" >&2;} + { echo "$as_me:$LINENO: WARNING: * built programs; this is a compile-time bug. *" >&5 +echo "$as_me: WARNING: * built programs; this is a compile-time bug. *" >&2;} + { echo "$as_me:$LINENO: WARNING: * To work around the problem for this build of LAME, *" >&5 +echo "$as_me: WARNING: * To work around the problem for this build of LAME, *" >&2;} + { echo "$as_me:$LINENO: WARNING: * autoconf is disabling all math inlining. This will *" >&5 +echo "$as_me: WARNING: * autoconf is disabling all math inlining. This will *" >&2;} + { echo "$as_me:$LINENO: WARNING: * hurt LAME performace but is necessary for LAME to *" >&5 +echo "$as_me: WARNING: * hurt LAME performace but is necessary for LAME to *" >&2;} + { echo "$as_me:$LINENO: WARNING: * work correctly. Once glibc is upgraded, rerun *" >&5 +echo "$as_me: WARNING: * work correctly. Once glibc is upgraded, rerun *" >&2;} + { echo "$as_me:$LINENO: WARNING: * configure and make to build with inlining. *" >&5 +echo "$as_me: WARNING: * configure and make to build with inlining. *" >&2;} + { echo "$as_me:$LINENO: WARNING: ********************************************************" >&5 +echo "$as_me: WARNING: ********************************************************" >&2;} + { echo "$as_me:$LINENO: WARNING: " >&5 +echo "$as_me: WARNING: " >&2;} + + +cat >>confdefs.h <<\_ACEOF +#define __NO_MATH_INLINES 1 +_ACEOF + + fi;; +esac + + +echo "$as_me:$LINENO: checking use of VBR bitrate histogram" >&5 +echo $ECHO_N "checking use of VBR bitrate histogram... $ECHO_C" >&6 +if test "x${HAVE_TERMCAP}" != "x"; then + TERMCAP_DEFAULT="yes" +else + TERMCAP_DEFAULT="no" +fi +# Check whether --enable-brhist or --disable-brhist was given. +if test "${enable_brhist+set}" = set; then + enableval="$enable_brhist" + CONFIG_BRHIST="${enableval}" +else + CONFIG_BRHIST="yes" +fi; +if test "${CONFIG_BRHIST}" != "no" ; then + +cat >>confdefs.h <<\_ACEOF +#define BRHIST 1 +_ACEOF + + + if test "${TERMCAP_DEFAULT}" = "yes" ; then + FRONTEND_LDADD="-l${HAVE_TERMCAP} ${FRONTEND_LDADD}" + CONFIG_BRHIST="yes, with ${HAVE_TERMCAP}" + +cat >>confdefs.h <<\_ACEOF +#define HAVE_TERMCAP 1 +_ACEOF + + else + CONFIG_BRHIST="yes, simulated termcap" + fi +fi +echo "$as_me:$LINENO: result: ${CONFIG_BRHIST}" >&5 +echo "${ECHO_T}${CONFIG_BRHIST}" >&6 + + +if test "${CONFIG_BRHIST}" != "no"; then + WITH_BRHIST_TRUE= + WITH_BRHIST_FALSE='#' +else + WITH_BRHIST_TRUE='#' + WITH_BRHIST_FALSE= +fi + + + + +case $host_cpu in +*86) + CPUTYPE="i386" + + # use internal knowledge of the IEEE 754 layout + +cat >>confdefs.h <<\_ACEOF +#define TAKEHIRO_IEEE754_HACK 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define USE_FAST_LOG 1 +_ACEOF + + ;; +powerpc) + CPUTYPE="no" + + # use internal knowledge of the IEEE 754 layout + +cat >>confdefs.h <<\_ACEOF +#define TAKEHIRO_IEEE754_HACK 1 +_ACEOF + + + # The following should not get enabled on a G5. HOWTO check for a G5? + +cat >>confdefs.h <<\_ACEOF +#define USE_FAST_LOG 1 +_ACEOF + + ;; +*) + CPUTYPE="no" + ;; +esac + + + +echo "$as_me:$LINENO: checking for FLOAT8 as float" >&5 +echo $ECHO_N "checking for FLOAT8 as float... $ECHO_C" >&6 +# Check whether --enable-all-float or --disable-all-float was given. +if test "${enable_all_float+set}" = set; then + enableval="$enable_all_float" + CONFIG_ALLFLOAT="${enableval}" +else + CONFIG_ALLFLOAT="no" +fi; +case "${CONFIG_ALLFLOAT}" in +no) + ;; +yes) + +cat >>confdefs.h <<\_ACEOF +#define FLOAT8 float +_ACEOF + + ;; +*) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_ALLFLOAT}� for all-float option" >&5 +echo "$as_me: error: bad value �${CONFIG_ALLFLOAT}� for all-float option" >&2;} + { (exit 1); exit 1; }; } + ;; +esac +echo "$as_me:$LINENO: result: ${CONFIG_ALLFLOAT}" >&5 +echo "${ECHO_T}${CONFIG_ALLFLOAT}" >&6 + + + +# Extract the first word of "nasm", so it can be a program name with args. +set dummy nasm; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_NASM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $NASM in + [\\/]* | ?:[\\/]*) + ac_cv_path_NASM="$NASM" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_NASM="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_NASM" && ac_cv_path_NASM="no" + ;; +esac +fi +NASM=$ac_cv_path_NASM + +if test -n "$NASM"; then + echo "$as_me:$LINENO: result: $NASM" >&5 +echo "${ECHO_T}$NASM" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +case "${NASM}" in +no) + ;; +*) + echo "$as_me:$LINENO: checking for assembler routines for this processor type" >&5 +echo $ECHO_N "checking for assembler routines for this processor type... $ECHO_C" >&6 + for recurse_over in ${ASM_FOR_ARCH} + do + if test "${CPUTYPE}" = "${recurse_over}"; then + include_asm_routines="yes" + fi + done + if test "x${include_asm_routines}" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_NASM 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define MMX_choose_table 1 +_ACEOF + + else + include_asm_routines="no" + NASM="no" + fi + echo "$as_me:$LINENO: result: ${include_asm_routines}" >&5 +echo "${ECHO_T}${include_asm_routines}" >&6 + ;; +esac + + +if test "${NASM}" != "no"; then + HAVE_NASM_TRUE= + HAVE_NASM_FALSE='#' +else + HAVE_NASM_TRUE='#' + HAVE_NASM_FALSE= +fi + + +case $host_os in + *cygwin*|*mingw32*) + CYGWIN=yes + NASM_FORMAT="-f win32 -DWIN32" + ;; + *) + CYGWIN=no + NASM_FORMAT="-f elf" + ;; +esac + +# +# 'expopt' is used for "additional optimizations", not for optimizations which +# are marked as "experimental" in the guide for the compiler. +# They are "experimental" here in the LAME project (at least +# "--enable-expopt=full"). +# +echo "$as_me:$LINENO: checking for additional optimizations" >&5 +echo $ECHO_N "checking for additional optimizations... $ECHO_C" >&6 +# Check whether --enable-expopt or --disable-expopt was given. +if test "${enable_expopt+set}" = set; then + enableval="$enable_expopt" + CONFIG_EXPOPT="${enableval}" +else + CONFIG_EXPOPT="no" +fi; + +if test "x$GCC" = "xyes"; then + # gcc defaults. OS specific options go in versious sections below + # from the gcc man pages: "there is no reason to use -pedantic" + if test "x${with_gnu_ld}" = "xyes"; then + CFLAGS="-Wall -pipe ${CFLAGS}" + else + # some vendor ld's don't like '-pipe' + CFLAGS="-Wall ${CFLAGS}" + fi + + # GCC version specific generic options + case "${GCC_version}" in + 2.96*) + # for buggy version of gcc shipped with RH7.1, back of on some + # optimizations + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fsched-interblock -fbranch-count-reg -fforce-addr \ + -fforce-mem" + ;; + 3.0*) + # -funroll-loops seems to produce buggy code with gcc 3.0.3 + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + 3.2*) + # -fomit-frame-pointer seems to be buggy on cygwin + case ${host_os} in + *cygwin*) + OMIT_FRAME_POINTER= + ;; + *) + OMIT_FRAME_POINTER=-fomit-frame-pointer + ;; + esac + + OPTIMIZATION="-O ${OMIT_FRAME_POINTER} -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + *) + # default + OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr -fforce-mem" + ;; + esac + + + # GCC version independend generic options + OPTIMIZATION_NORM="-fschedule-insns2" + + + # generic CPU specific options + case ${host_cpu} in + sparc) + case "${GCC_version}" in + 3.0*) + ;; + 3.*) + # doesn't work on 3.0.x, but on 3.[12] and + # hopefully on every other release after that too + if test -x /usr/bin/isalist; then + /usr/bin/isalist | grep sparcv8plus \ + >/dev/null 2>&1 && \ + OPTIMIZATION="${OPTIMIZATION} \ + -mcpu=ultrasparc \ + -mtune=ultrasparc" + fi + ;; + esac + ;; + *86) + case "${GCC_version}" in + 3.*) + OPTIMIZATION="${OPTIMIZATION} \ + -maccumulate-outgoing-args" + ;; + esac + ;; + esac + + + case "${CONFIG_EXPOPT}" in + no) + # if someone supplies own CFLAGS, we don't add our own + if test "x${ac_save_CFLAGS}" != "x"; then + OPTIMIZATION="" + fi + ;; + norm|yes) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM}" + ;; + full) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM} \ + ${OPTIMIZATION_FULL}" + + # some hardware dependend options + case "${GCC_version}" in + 2.9*|3.*) + # "new" GCC, use some "new" CPU specific optimizations + case ${host_cpu} in + *486) + OPTIMIZATION="${OPTIMIZATION} -m486 \ + -mfancy-math-387" + ;; + *586) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentium \ + -march=pentium -mfancy-math-387" + ;; + *686) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentiumpro \ + -march=pentiumpro -mfancy-math-387 \ + -malign-double" + ;; + *86) + OPTIMIZATION="${OPTIMIZATION} -mfancy-math-387" + ;; + alpha*) + OPTIMIZATION="${OPTIMIZATION} -mfp-regs" + +cat >>confdefs.h <<\_ACEOF +#define FLOAT double +_ACEOF + + # add "-mcpu=21164a -Wa,-m21164a" to optimize + # for 21164a (ev56) CPU + ;; + *) + OPTIMIZATION="${OPTIMIZATION} -fdelayed-branch" + ;; + esac + ;; + *) + # no special optimization for other versions + { echo "$as_me:$LINENO: WARNING: LAME doesn't know about your version of gcc" >&5 +echo "$as_me: WARNING: LAME doesn't know about your version of gcc" >&2;} + ;; + esac + ;; + *) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_EXPOPT}� for expopt option" >&5 +echo "$as_me: error: bad value �${CONFIG_EXPOPT}� for expopt option" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + echo "$as_me:$LINENO: result: ${CONFIG_EXPOPT}" >&5 +echo "${ECHO_T}${CONFIG_EXPOPT}" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + + + +echo "$as_me:$LINENO: checking for debug options" >&5 +echo $ECHO_N "checking for debug options... $ECHO_C" >&6 +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + CONFIG_DEBUG="${enableval}" +else + CONFIG_DEBUG="no" +fi; + +if test "x$GCC" = "xyes"; then + DEBUG_NORM_OPT="-O -g -Wall" + DEBUG_ANOYING="-Wbad-function-cast -Wcast-align \ + -Wcast-qual -Wchar-subscripts -Wconversion \ + -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ + -Wredundant-decls -Wshadow -Wstrict-prototypes \ + -Wwrite-strings -Winline \ + -Wformat -Wswitch -Waggregate-return -Wmissing-noreturn \ + -Wimplicit-int -fno-builtin" + + case "${CONFIG_DEBUG}" in + no) + +cat >>confdefs.h <<\_ACEOF +#define NDEBUG 1 +_ACEOF + + ;; + norm|yes) + +cat >>confdefs.h <<\_ACEOF +#define ABORTFP 1 +_ACEOF + + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + anoying) + +cat >>confdefs.h <<\_ACEOF +#define ABORTFP 1 +_ACEOF + + OPTIMIZATION="${DEBUG_NORM_OPT} ${DEBUG_ANOYING}" + ;; + alot) + +cat >>confdefs.h <<\_ACEOF +#define ABORTFP 1 +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define DEBUG 1 +_ACEOF + + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + *) + { { echo "$as_me:$LINENO: error: bad value �${CONFIG_DEBUG}� for debug option" >&5 +echo "$as_me: error: bad value �${CONFIG_DEBUG}� for debug option" >&2;} + { (exit 1); exit 1; }; } + esac + + echo "$as_me:$LINENO: result: ${CONFIG_DEBUG}" >&5 +echo "${ECHO_T}${CONFIG_DEBUG}" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + + + +########################################################################## +# LINUX on Digital/Compaq Alpha CPUs +########################################################################## +case $host in +alpha*-*-linux*) + +################################################################ +#### Check if 'ccc' is in our path +################################################################ +if test "`which ccc 2>/dev/null | grep -c ccc`" != "0" ; then + # Compaq's C Compiler + CC=ccc + +################################################################ +#### set 'OPTIMIZATION = -arch host -tune host' +#### to generate/tune instructions for this machine +#### 'OPTIMIZATION += -migrate -fast -inline speed -unroll 0' +#### tweak to run as fast as possible :) +#### 'OPTIMIZATION += -w0' +#### set warning and linking flags +################################################################ + OPTIMIZATION="-arch host -tune host" + OPTIMIZATION="-migrate -fast -inline speed -unroll 0 $OPTIMIZATION" + OPTIMIZATION="-w0 $OPTIMIZATION" + + +################################################################ +#### to debug, uncomment +################################################################ + # For Debugging + #OPTIMIZATION="-g3 $OPTIMIZATION" + +################################################################ +#### define __DECALPHA__ (i was getting re-declaration warnings +#### in machine.h +################################################################ + # Define DEC Alpha + +cat >>confdefs.h <<\_ACEOF +#define __DECALPHA__ 1 +_ACEOF + +fi # gcc or ccc? +;; # alpha + + +########################################################################## +# SunOS +########################################################################## +sparc-*-sunos4*) + if test CC = "cc"; then + OPTIMIZATION="-O -xCC" + MAKEDEP="-xM" + # for gcc, use instead: + # CC="gcc" + # OPTIMIZATION="-O" + # MAKEDEP="-M" +{ echo "$as_me:$LINENO: WARNING: Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation." >&5 +echo "$as_me: WARNING: Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation." >&2;} + fi +;; #SunOS + +########################################################################## +# SGI +########################################################################## +*-sgi-irix*) + if test CC = "cc"; then + OPTIMIZATION="-O3 -woff all" + fi +;; # SGI + +########################################################################## +# Compaq Alpha running Dec Unix (OSF) +########################################################################## +alpha*-dec-osf*) + if test CC = "cc"; then + OPTIMIZATION="-fast -O3 -std -g3 -non_shared" + fi +;; #OSF +esac + +# todo: include the following tests in the case-list +UNAME=`uname` +ARCH=`uname -m` + +########################################################################### +# MOSXS (Rhapsody PPC) +########################################################################### +if test "$UNAME" = "Rhapsody"; then +# CC="cc" # should be handled already by autoconf + MAKEDEP="-make" +fi + +########################################################################### +# MAC OSX Darwin PPC +########################################################################### +if test "$UNAME" = "Darwin"; then + MAKEDEP="-make" + CFLAGS="$CFLAGS -fno-common" +fi + + +########################################################################## +# OS/2 +########################################################################## +# Properly installed EMX runtime & development package is a prerequisite. +# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 +# +########################################################################## +if test "$UNAME" = "OS/2"; then + SHELL=sh + #CC=gcc # should already be handled by configure + + # file extension should already be handled by automake (I don't know, + # please give feedback! + #FILE_EXTENSION=".exe" + +# Uncomment & inspect the GTK lines to use MP3x GTK frame analyzer. +# Properly installed XFree86/devlibs & GTK+ is a prerequisite. +# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: +# AC_DEFINE(HAVE_GTK, 1, have GTK) +# AC_DEFINE(__ST_MT_ERRNO__, 1) +# INCLUDES="-IC:/XFree86/include/gtk12 -IC:/XFree86/include/glib12 \ +# -IC:/XFree86/include $INCLUDES" +# FRONTEND_LDFLAGS="-LC:/XFree86/lib -lgtk12 -lgdk12 -lgmodule -lglib12 \ +# -lXext -lX11 -lshm -lbsd -lsocket -lm $FRONTEND_LDFLAGS" +# FRONTEND_CFLAGS="-Zmtd -Zsysv-signals -Zbin-files $FRONTEND_CFLAGS" +fi + +########################################################################### +# AmigaOS +########################################################################### +# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS +# +########################################################################### +if test "$UNAME" = "AmigaOS" ; then + CC="gcc -noixemul" + OPTIMIZATION="$OPTIMIZATION -m68020-60 -m68881" + MAKEDEP="-MM" + if test "$ARCH" = "WOS"; then + CC="ppc-amigaos-gcc -warpup" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi + if test "$ARCH",PPC; then + CC="ppc-amigaos-gcc" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi +fi + + +CFLAGS="${OPTIMIZATION} ${CFLAGS}" +LDADD="${LDADD}" +FRONTEND_LDADD="${FRONTEND_LDADD} ${CONFIG_MATH_LIB}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ac_config_files="$ac_config_files Makefile libmp3lame/Makefile libmp3lame/i386/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# 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 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${LIB_WITH_DECODER_TRUE}" && test -z "${LIB_WITH_DECODER_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"LIB_WITH_DECODER\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"LIB_WITH_DECODER\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${WITH_BRHIST_TRUE}" && test -z "${WITH_BRHIST_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"WITH_BRHIST\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"WITH_BRHIST\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${HAVE_NASM_TRUE}" && test -z "${HAVE_NASM_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"HAVE_NASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"HAVE_NASM\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by lame $as_me 3.97, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <bug-autoconf@gnu.org>." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +lame config.status 3.97 +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "libmp3lame/Makefile" ) CONFIG_FILES="$CONFIG_FILES libmp3lame/Makefile" ;; + "libmp3lame/i386/Makefile" ) CONFIG_FILES="$CONFIG_FILES libmp3lame/i386/Makefile" ;; + "frontend/Makefile" ) CONFIG_FILES="$CONFIG_FILES frontend/Makefile" ;; + "mpglib/Makefile" ) CONFIG_FILES="$CONFIG_FILES mpglib/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "doc/html/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/html/Makefile" ;; + "doc/man/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/man/Makefile" ;; + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "Dll/Makefile" ) CONFIG_FILES="$CONFIG_FILES Dll/Makefile" ;; + "misc/Makefile" ) CONFIG_FILES="$CONFIG_FILES misc/Makefile" ;; + "debian/Makefile" ) CONFIG_FILES="$CONFIG_FILES debian/Makefile" ;; + "dshow/Makefile" ) CONFIG_FILES="$CONFIG_FILES dshow/Makefile" ;; + "ACM/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/Makefile" ;; + "ACM/ADbg/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/ADbg/Makefile" ;; + "ACM/ddk/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/ddk/Makefile" ;; + "ACM/tinyxml/Makefile" ) CONFIG_FILES="$CONFIG_FILES ACM/tinyxml/Makefile" ;; + "lame.spec" ) CONFIG_FILES="$CONFIG_FILES lame.spec" ;; + "mac/Makefile" ) CONFIG_FILES="$CONFIG_FILES mac/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t +s,@U@,$U,;t t +s,@ANSI2KNR@,$ANSI2KNR,;t t +s,@ALLOCA@,$ALLOCA,;t t +s,@GTK_CONFIG@,$GTK_CONFIG,;t t +s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t +s,@GTK_LIBS@,$GTK_LIBS,;t t +s,@LIB_WITH_DECODER_TRUE@,$LIB_WITH_DECODER_TRUE,;t t +s,@LIB_WITH_DECODER_FALSE@,$LIB_WITH_DECODER_FALSE,;t t +s,@WITH_BRHIST_TRUE@,$WITH_BRHIST_TRUE,;t t +s,@WITH_BRHIST_FALSE@,$WITH_BRHIST_FALSE,;t t +s,@NASM@,$NASM,;t t +s,@HAVE_NASM_TRUE@,$HAVE_NASM_TRUE,;t t +s,@HAVE_NASM_FALSE@,$HAVE_NASM_FALSE,;t t +s,@INCLUDES@,$INCLUDES,;t t +s,@FRONTEND_LDFLAGS@,$FRONTEND_LDFLAGS,;t t +s,@FRONTEND_CFLAGS@,$FRONTEND_CFLAGS,;t t +s,@FRONTEND_LDADD@,$FRONTEND_LDADD,;t t +s,@LDADD@,$LDADD,;t t +s,@LIB_MAJOR_VERSION@,$LIB_MAJOR_VERSION,;t t +s,@LIB_MINOR_VERSION@,$LIB_MINOR_VERSION,;t t +s,@NASM_FORMAT@,$NASM_FORMAT,;t t +s,@MAKEDEP@,$MAKEDEP,;t t +s,@RM_F@,$RM_F,;t t +s,@WITH_FRONTEND@,$WITH_FRONTEND,;t t +s,@WITH_MP3X@,$WITH_MP3X,;t t +s,@WITH_MP3RTP@,$WITH_MP3RTP,;t t +s,@CPUTYPE@,$CPUTYPE,;t t +s,@CONFIG_DEFS@,$CONFIG_DEFS,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # 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_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # 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" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`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 + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# 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_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`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 + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/lame-3.97/configure.in b/lame-3.97/configure.in new file mode 100644 index 0000000..2aa2075 --- /dev/null +++ b/lame-3.97/configure.in @@ -0,0 +1,1092 @@ +dnl $Id: configure.in,v 1.115 2005/09/04 19:11:58 aleidinger Exp $ +dnl +dnl +dnl don't forget to set ASM_FOR_ARCH to a space delimited list of +dnl processor architectures, for which assembler routines exist +dnl +dnl +dnl Exported and configured variables: +dnl CC +dnl CFLAGS +dnl LDFLAGS +dnl LDADD +dnl NASM + +dnl extra vars for frontend: +dnl FRONTEND_LDFLAGS +dnl FRONTEND_CFLAGS +dnl FRONTEND_LDADD + +AC_PREREQ(2.53) +AC_INIT(lame,3.97,lame-dev@lists.sf.net) +AC_CONFIG_SRCDIR([libmp3lame/lame.c]) + +dnl check system +AC_CANONICAL_HOST + +dnl automake +AM_INIT_AUTOMAKE +AM_CONFIG_HEADER(config.h) +AM_MAINTAINER_MODE +AM_MAKE_INCLUDE + +dnl check environment +AC_AIX +AC_ISC_POSIX +AC_MINIX +case $host_os in + *cygwin* ) CYGWIN=yes;; + * ) CYGWIN=no;; +esac + +dnl libtool +# AC_DISABLE_SHARED +AC_PROG_LIBTOOL +AC_SUBST(LIBTOOL_DEPS) +CFLAGS="${ac_save_CFLAGS}" + +# increase this when the shared lib becomes totally incompatible +LIB_MAJOR_VERSION=0 + +# increase this when changes are made, but they are upward compatible +# to previous versions +LIB_MINOR_VERSION=0 + +dnl # work around for a bug, don't know where it is exactly +if test "${ac_cv_cygwin}" = "yes"; then + if test "${CC}" != "gcc"; then + AC_MSG_ERROR([Please use] + [ CC=gcc ./configure] + [Abort this configure run and add "CC=gcc" or you will] + [see errors and no lame.exe will be build.]) + fi +fi + +dnl check programs +AM_PROG_CC_STDC + +dnl more automake stuff +AM_C_PROTOTYPES + +AC_CHECK_HEADER(dmalloc.h) +if test "${ac_cv_header_dmalloc_h}" = "yes"; then + AM_WITH_DMALLOC +fi + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS( \ + errno.h \ + fcntl.h \ + limits.h \ + stdint.h \ + string.h \ + sys/soundcard.h \ + sys/time.h \ + unistd.h \ + linux/soundcard.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +if test ${cross_compiling} = "no"; then + AC_C_BIGENDIAN +fi + +if test "${GCC}" = "yes"; then + AC_MSG_CHECKING(version of GCC) + GCC_version=`${CC} --version | sed -n '1s/^[[^ ]]* (.*) //;s/ .*$//;1p'` + AC_MSG_RESULT(${GCC_version}) +fi + +AC_SYS_LARGEFILE + +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(unsigned short) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(unsigned int) +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(unsigned long) +AC_CHECK_SIZEOF(long long) +AC_CHECK_SIZEOF(unsigned long long) +AC_CHECK_SIZEOF(float) +AC_CHECK_SIZEOF(double) + +AC_C_LONG_DOUBLE +if test "${ac_cv_c_have_long_double}" = "yes" ; then + AC_CHECK_SIZEOF(long double) +fi + +AC_CHECK_TYPES([uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t]) + +AH_VERBATIM([HAVE_UINT8_T], +[/* add uint8_t type */ +#undef HAVE_UINT8_T +#ifndef HAVE_UINT8_T + typedef unsigned char uint8_t; +#endif]) + +AH_VERBATIM([HAVE_INT8_T], +[/* add int8_t type */ +#undef HAVE_INT8_T +#ifndef HAVE_INT8_T + typedef char int8_t; +#endif]) + +AH_VERBATIM([HAVE_UINT16_T], +[/* add uint16_t type */ +#undef HAVE_UINT16_T +#ifndef HAVE_UINT16_T + typedef unsigned short uint16_t; +#endif]) + +AH_VERBATIM([HAVE_INT16_T], +[/* add int16_t type */ +#undef HAVE_INT16_T +#ifndef HAVE_INT16_T + typedef short int16_t; +#endif]) + +if test "${ac_cv_sizeof_unsigned_short}" = "4"; then + AC_DEFINE(A_UINT32_T,unsigned short) +else + if test "${ac_cv_sizeof_unsigned_int}" = "4"; then + AC_DEFINE(A_UINT32_T,unsigned int) + else + if test "${ac_cv_sizeof_unsigned_long}" = "4"; then + AC_DEFINE(A_UINT32_T,unsigned long) + else + AC_MSG_ERROR([CHECK_TYPE_uint32_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_UINT32_T], +[/* add uint32_t type */ +#undef HAVE_UINT32_T +#ifndef HAVE_UINT32_T +#undef A_UINT32_T + typedef A_UINT32_T uint32_t; +#endif]) + +if test "${ac_cv_sizeof_short}" = "4"; then + AC_DEFINE(A_INT32_T,short) +else + if test "${ac_cv_sizeof_int}" = "4"; then + AC_DEFINE(A_INT32_T,int) + else + if test "${ac_cv_sizeof_long}" = "4"; then + AC_DEFINE(A_INT32_T,long) + else + AC_MSG_ERROR([CHECK_TYPE_int32_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_INT32_T], +[/* add int32_t type */ +#undef HAVE_INT32_T +#ifndef HAVE_INT32_T +#undef A_INT32_T + typedef A_INT32_T int32_t; +#endif]) + +if test "${ac_cv_sizeof_unsigned_int}" = "8"; then + AC_DEFINE(A_UINT64_T,unsigned int) +else + if test "${ac_cv_sizeof_unsigned_long}" = "8"; then + AC_DEFINE(A_UINT64_T,unsigned long) + else + if test "${ac_cv_sizeof_unsigned_long_long}" = "8"; then + AC_DEFINE(A_UINT64_T,unsigned long long) + else + AC_MSG_ERROR([CHECK_TYPE_uint64_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_UINT64_T], +[/* add uint64_t type */ +#undef HAVE_UINT64_T +#ifndef HAVE_UINT64_T +#undef A_UINT64_T + typedef A_UINT64_T uint64_t; +#endif]) + +if test "${ac_cv_sizeof_int}" = "8"; then + AC_DEFINE(A_INT64_T,int) +else + if test "${ac_cv_sizeof_long}" = "8"; then + AC_DEFINE(A_INT64_T,long) + else + if test "${ac_cv_sizeof_long_long}" = "8"; then + AC_DEFINE(A_INT64_T,long long) + else + AC_MSG_ERROR([CHECK_TYPE_int64_t - please report to lame-dev@lists.sourceforge.net]) + fi + fi +fi + +AH_VERBATIM([HAVE_INT64_T], +[/* add int64_t type */ +#undef HAVE_INT64_T +#ifndef HAVE_INT64_T +#undef A_INT64_T + typedef A_INT64_T int64_t; +#endif]) + +alex_IEEE854_FLOAT80 +if test "${alex_cv_ieee854_float80}" = "yes" ; then + if test "${ac_cv_c_long_double}" = "yes" ; then + AC_CHECK_TYPES(ieee854_float80_t, long double) + AH_VERBATIM([HAVE_IEEE854_FLOAT80_T], +[/* add ieee854_float80_t type */ +#undef HAVE_IEEE854_FLOAT80_T +#ifndef HAVE_IEEE854_FLOAT80_T + typedef long double ieee854_float80_t; +#endif]) + + AC_DEFINE(HAVE_IEEE854_FLOAT80, 1, [system has 80 bit floats]) + fi +fi +AC_CHECK_TYPES([ieee754_float64_t, ieee754_float32_t]) + +AH_VERBATIM([HAVE_IEEE754_FLOAT64_T], +[/* add ieee754_float64_t type */ +#undef HAVE_IEEE754_FLOAT64_T +#ifndef HAVE_IEEE754_FLOAT64_T + typedef double ieee754_float64_t; +#endif]) + +AH_VERBATIM([HAVE_IEEE754_FLOAT32_T], +[/* add ieee754_float32_t type */ +#undef HAVE_IEEE754_FLOAT32_T +#ifndef HAVE_IEEE754_FLOAT32_T + typedef float ieee754_float32_t; +#endif]) + +AC_DEFINE(LAME_LIBRARY_BUILD, 1, [requested by Frank, seems to be temporary needed for a smooth transition]) + + +if test ${cross_compiling} = "yes"; then + AC_MSG_WARN([] + [**************************************************************************] + [* *] + [* You are cross compiling: *] + [* - I did not have a change to determine *] + [* + the size of: *] + [* - short *] + [* - unsigned short *] + [* - int *] + [* - unsigned int *] + [* - long *] + [* - unsigned long *] + [* - float *] + [* - double *] + [* - long double *] + [* + the endianess of the system *] + [* - You have to provide appropriate defines for them in config.h, e.g. *] + [* + define SIZEOF_SHORT to 2 if the size of a short is 2 *] + [* + define WORDS_BIGENDIAN if your system is a big endian system *] + [* *] + [**************************************************************************]) +fi + +AC_TYPE_SIZE_T +AC_HEADER_TIME + +dnl Checks for library functions. +AC_FUNC_ALLOCA +AC_CHECK_FUNCS(gettimeofday strtol) + +if test "X${ac_cv_func_strtol}" != "Xyes"; then + AC_MSG_ERROR([function strtol is mandatory]) +fi + +dnl Check if we have winsock, if so, we are on a mingw system +dnl and need libwsock32 +SOCKETFUNCTION=YES +AC_CHECK_HEADER(winsock2.h, [AC_DEFINE([HAVE_WINSOCKET], [], [winsock]) + LIBS="$LIBS -lwsock32"]) +if test $ac_cv_header_winsock2_h = no; then + AC_CHECK_FUNCS(socket) + if test $ac_cv_func_socket = no; then + # maybe it is in libsocket + AC_CHECK_LIB(socket, socket, [AC_DEFINE(HAVE_SOCKET) + LIBS="$LIBS -lsocket"]) + + if test "X${ac_cv_lib_socket_socket}" != "Xyes"; then + SOCKETFUNCTION=NO + else + case ${host_os} in + *solaris*) + LIBS="$LIBS -lnsl" + ;; + esac + fi + fi +fi + + +dnl Initialize configuration variables for the Makefile +CFLAGS=${CFLAGS} +CONFIG_DEFS=${CONFIG_DEFS} +NASM= +INCLUDES="-I\$(top_srcdir)/include -I\$(srcdir)" +FRONTEND_LDFLAGS= +FRONTEND_CFLAGS= +LIB_SOURCES= +MAKEDEP="-M" +RM_F="rm -f" + +AC_ARG_ENABLE(nasm, + [ --enable-nasm Allow the use of nasm if available], + ASM_FOR_ARCH="i386", ASM_FOR_ARCH="") + +dnl Checks for libraries. + +AC_CHECK_HEADERS(termcap.h) +AC_CHECK_HEADERS(ncurses/termcap.h) +AC_CHECK_LIB(termcap, initscr, HAVE_TERMCAP="termcap") +AC_CHECK_LIB(curses, initscr, HAVE_TERMCAP="curses") +AC_CHECK_LIB(ncurses, initscr, HAVE_TERMCAP="ncurses") + +dnl math lib +AC_CHECK_LIB(m, cos, USE_LIBM="-lm") +dnl free fast math library +AC_CHECK_LIB(ffm, cos, USE_LIBM="-lffm -lm") +dnl Compaq fast math library. +AC_CHECK_LIB(cpml, cos, USE_LIBM="-lcpml") +CONFIG_MATH_LIB="${USE_LIBM}" + +AC_CHECK_LIB(sndfile, sf_open_read, HAVE_SNDFILE="yes") + + +dnl configure use of features + +AM_PATH_GTK(1.2.0, HAVE_GTK="yes", HAVE_GTK="no") +if test "${HAVE_GTK}" = "yes"; then + AC_DEFINE(HAVE_GTK, 1, have working GTK) +fi + + +dnl ElectricFence malloc debugging +AC_MSG_CHECKING(use of ElectricFence malloc debugging) +AC_ARG_ENABLE(efence, + [ --enable-efence Use ElectricFence for malloc debugging], + CONFIG_EFENCE="${enableval}", CONFIG_EFENCE="no") + +case "${CONFIG_EFENCE}" in +yes) + AC_CHECK_LIB(efence, EF_Print, HAVE_EFENCE="-lefence") + if test "x${HAVE_EFENCE}" != "x-lefence"; then + AC_MSG_RESULT(yes, but libefence not found) + else + LDADD="${LDADD} ${HAVE_EFENCE}" + AC_DEFINE(HAVE_EFENCE, 1, we link against libefence) + AC_MSG_RESULT(${CONFIG_EFENCE}) + fi + ;; +no) + AC_MSG_RESULT(${CONFIG_EFENCE}) + ;; +*) + AC_MSG_ERROR(bad value �${CONFIG_EFENCE}� for efence option) + ;; +esac + + +dnl libsndfile +AC_MSG_CHECKING(use of file io) +WARNING= +AC_ARG_WITH(fileio, + [ --with-fileio=lame Use lame's internal file io routines [default]] + [ =sndfile Use Erik de Castro Lopo's libsndfile] + [ (no stdin possible currently)], + CONFIG_FILEIO="${withval}", CONFIG_FILEIO="lame") +AC_ARG_WITH(sndfile-prefix, + [ --with-sndfile-prefix=DIR Alternate location for libsndfile], + CONFIG_SNDFILE_PREFIX="${withval}", CONFIG_SNDFILE_PREFIX="") +if test "${CONFIG_FILEIO}" = "sndfile" ; then + if test "x${CONFIG_SNDFILE_PREFIX}" != "x" ; then + # look for sndfile lib. This overrides any standard location + LA_SEARCH_LIB(SNDFILE_LIB_LOC, SNDFILE_INC_LOC, \ + libsndfile.a, sndfile.h, $CONFIG_SNDFILE_PREFIX) + if test "x${SNDFILE_LIB_LOC}" != "x" ; then + HAVE_SNDFILE="yes" + FRONTEND_LDFLAGS="-L${SNDFILE_LIB_LOC} ${FRONTEND_LDFLAGS}" + INCLUDES="-I${SNDFILE_INC_LOC} ${INCLUDES}" + else + WARNING="sndfile lib not found in specified prefix." + fi + fi + if test "${HAVE_SNDFILE}" = "yes" ; then + FRONTEND_LDADD="-lsndfile ${FRONTEND_LDADD}" + AC_DEFINE(LIBSNDFILE, 1, build with libsndfile support) + else + # default + CONFIG_FILEIO="lame" + WARNING="${WARNING} Could not find any sndfile lib on system." + fi +else + CONFIG_FILEIO="lame" +fi +AC_MSG_RESULT(${CONFIG_FILEIO}) +if test "x${WARNING}" != "x" ; then + AC_MSG_WARN($WARNING) +fi + + +dnl check if we should remove hooks for analyzer code in library +dnl default library must include these hooks +AC_MSG_CHECKING(use of analyzer hooks) +AC_ARG_ENABLE(analyzer-hooks, + [ --disable-analyzer-hooks Exclude analyzer hooks], + CONFIG_ANALYZER="${enableval}", CONFIG_ANALYZER="yes") + +case "${CONFIG_ANALYZER}" in +yes) + ;; +no) + AC_DEFINE(NOANALYSIS, 1, build without hooks for analyzer) + ;; +*) + AC_MSG_ERROR(bad value �${CONFIG_ANALYZER}� for analyzer-hooks option) + ;; +esac +AC_MSG_RESULT($CONFIG_ANALYZER) + + +dnl mpg123 decoder +AC_MSG_CHECKING(use of mpg123 decoder) +AC_ARG_ENABLE(decoder, + [ --disable-decoder Exclude mpg123 decoder], + CONFIG_DECODER="${enableval}", CONFIG_DECODER="yes") +AC_ARG_ENABLE(decode-layer1, + [ --enable-decode-layer1 Include layer1 decoding [default=no]], + CONFIG_DECODER_L1="${enableval}", CONFIG_DECODER_L1="no") +AC_ARG_ENABLE(decode-layer2, + [ --disable-decode-layer2 Exclude layer2 decoding], + CONFIG_DECODER_L2="${enableval}", CONFIG_DECODER_L2="yes") + +AM_CONDITIONAL(LIB_WITH_DECODER, test "x${CONFIG_DECODER}" = "xyes") + +if test "${CONFIG_DECODER}" != "no" ; then + CONFIG_DECODER="yes (Layer" + AC_DEFINE(HAVE_MPGLIB, 1, build with mpglib support) + AC_DEFINE(DECODE_ON_THE_FLY, 1, allow to compute a more accurate replaygain value) + + if test "${CONFIG_DECODER_L1}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 1," + AC_DEFINE(USE_LAYER_1, 1, build with layer 1 decoding) + fi + if test "${CONFIG_DECODER_L2}" != "no"; then + CONFIG_DECODER="${CONFIG_DECODER} 2," + AC_DEFINE(USE_LAYER_2, 1, build with layer 2 decoding) + fi + CONFIG_DECODER="${CONFIG_DECODER} 3)" +fi +AC_MSG_RESULT($CONFIG_DECODER) + + +AC_MSG_CHECKING(if the lame frontend should be build) +AC_ARG_ENABLE(frontend, + [ --disable-frontend Do not build the lame executable [default=build]], + WITH_FRONTEND="${enableval}", WITH_FRONTEND=yes) +if test "x${WITH_FRONTEND}" = "xyes"; then + WITH_FRONTEND=lame${ac_exeext} + AC_MSG_RESULT(yes) +else + WITH_FRONTEND= + AC_MSG_RESULT(no) +fi + + + +AC_MSG_CHECKING(if mp3x is requested) +AC_ARG_ENABLE(mp3x, + [ --enable-mp3x Build GTK frame analyzer [default=no]], + WITH_MP3X="${enableval}", WITH_MP3X=no) +if test "x${WITH_MP3X}" = "xyes"; then + WITH_MP3X=mp3x${ac_exeext} + AC_MSG_RESULT(yes) +else + WITH_MP3X= + AC_MSG_RESULT(no) +fi + +if test "${HAVE_GTK}" = "no"; then + if test "x${WITH_MP3X}" = "xmp3x"; then + AC_MSG_WARN(can't build mp3x, no GTK installed) + WITH_MP3X= + fi + if test "x${CONFIG_ANALYZER}" != "xyes"; then + AC_MSG_WARN(can't build mp3x because of disabled analyzer hooks) + WITH_MP3X= + fi +fi + +AC_MSG_CHECKING(if mp3rtp is requested) +AC_ARG_ENABLE(mp3rtp, + [ --enable-mp3rtp Build mp3rtp [default=no]], + WITH_MP3RTP="${enableval}", WITH_MP3RTP=no) +if test "x${WITH_MP3RTP}" = "xyes"; then + if test ${SOCKETFUNCTION} = NO; then + AC_MSG_ERROR([function socket is mandatory for mp3rtp]) + fi + WITH_MP3RTP=mp3rtp${ac_exeext} + AC_MSG_RESULT(yes) +else + WITH_MP3RTP= + AC_MSG_RESULT(no) +fi + + +# +# this is from vorbis +# +dnl check GLIBC +case $host in +*86-*-linux*) + # glibc < 2.1.3 has a serious FP bug in the math inline header + # that will cripple Vorbis. Look to see if the magic FP stack + # clobber is missing in the mathinline header, thus indicating + # the buggy version + + AC_EGREP_CPP(log10.*fldlg2.*fxch,[ + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + ],bad=maybe,bad=no) + + AC_MSG_CHECKING(glibc mathinline bug) + if test ${bad} = "maybe" ;then + AC_EGREP_CPP(log10.*fldlg2.*fxch.*st\([[0123456789]]*\), + [ + #define __LIBC_INTERNAL_MATH_INLINES 1 + #define __OPTIMIZE__ + #include <math.h> + ],bad=no,bad=yes) + fi + AC_MSG_RESULT(${bad}) + if test ${bad} = "yes" ;then + AC_MSG_WARN([ ]) + AC_MSG_WARN([********************************************************]) + AC_MSG_WARN([* The glibc headers on this machine have a serious bug *]) + AC_MSG_WARN([* in /usr/include/bits/mathinline.h This bug affects *]) + AC_MSG_WARN([* all floating point code, not only LAME, but all code *]) + AC_MSG_WARN([* built on this machine. Upgrading to glibc 2.1.3 is *]) + AC_MSG_WARN([* strongly urged to correct the problem. *]) + AC_MSG_WARN([*Note: that upgrading glibc will not fix any previously*]) + AC_MSG_WARN([* built programs; this is a compile-time bug. *]) + AC_MSG_WARN([* To work around the problem for this build of LAME, *]) + AC_MSG_WARN([* autoconf is disabling all math inlining. This will *]) + AC_MSG_WARN([* hurt LAME performace but is necessary for LAME to *]) + AC_MSG_WARN([* work correctly. Once glibc is upgraded, rerun *]) + AC_MSG_WARN([* configure and make to build with inlining. *]) + AC_MSG_WARN([********************************************************]) + AC_MSG_WARN([ ]) + + AC_DEFINE(__NO_MATH_INLINES, 1, work around a glibc bug) + fi;; +esac + + +dnl configure use of VBR bitrate histogram +dnl todo: always use yes as default, use simulation instead ? +AC_MSG_CHECKING(use of VBR bitrate histogram) +if test "x${HAVE_TERMCAP}" != "x"; then + TERMCAP_DEFAULT="yes" +else + TERMCAP_DEFAULT="no" +fi +AC_ARG_ENABLE(brhist, + [ --disable-brhist Include the VBR bitrate histogram feature] + [ [default=yes]], + CONFIG_BRHIST="${enableval}", CONFIG_BRHIST="yes") +if test "${CONFIG_BRHIST}" != "no" ; then + AC_DEFINE(BRHIST, 1, enable VBR bitrate histogram) + + if test "${TERMCAP_DEFAULT}" = "yes" ; then + FRONTEND_LDADD="-l${HAVE_TERMCAP} ${FRONTEND_LDADD}" + CONFIG_BRHIST="yes, with ${HAVE_TERMCAP}" + AC_DEFINE(HAVE_TERMCAP, 1, have termcap) + else + CONFIG_BRHIST="yes, simulated termcap" + fi +fi +AC_MSG_RESULT(${CONFIG_BRHIST}) +AM_CONDITIONAL(WITH_BRHIST, test "${CONFIG_BRHIST}" != "no") + + + +dnl ### processor specific options ### +case $host_cpu in +*86) + CPUTYPE="i386" + + # use internal knowledge of the IEEE 754 layout + AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) + AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) + ;; +powerpc) + CPUTYPE="no" + + # use internal knowledge of the IEEE 754 layout + AC_DEFINE(TAKEHIRO_IEEE754_HACK, 1, IEEE754 compatible machine) + + # The following should not get enabled on a G5. HOWTO check for a G5? + AC_DEFINE(USE_FAST_LOG, 1, faster log implementation with less but enough precission) + ;; +*) + CPUTYPE="no" + ;; +esac + + + +AC_MSG_CHECKING(for FLOAT8 as float) +AC_ARG_ENABLE(all-float, + [ --enable-all-float Whether to make all floting point variables as float, not double] + [ [default=no]], + CONFIG_ALLFLOAT="${enableval}", CONFIG_ALLFLOAT="no") +case "${CONFIG_ALLFLOAT}" in +no) + ;; +yes) + AC_DEFINE(FLOAT8, float, float instead of double) + ;; +*) + AC_MSG_ERROR(bad value �${CONFIG_ALLFLOAT}� for all-float option) + ;; +esac +AC_MSG_RESULT(${CONFIG_ALLFLOAT}) + + + +AC_PATH_PROG(NASM, nasm, no) +case "${NASM}" in +no) + ;; +*) + AC_MSG_CHECKING(for assembler routines for this processor type) + for recurse_over in ${ASM_FOR_ARCH} + do + if test "${CPUTYPE}" = "${recurse_over}"; then + include_asm_routines="yes" + fi + done + if test "x${include_asm_routines}" = "xyes"; then + AC_DEFINE(HAVE_NASM, 1, have nasm) + AC_DEFINE(MMX_choose_table, 1, use MMX version of choose_table) + else + include_asm_routines="no" + NASM="no" + fi + AC_MSG_RESULT(${include_asm_routines}) + ;; +esac +AM_CONDITIONAL(HAVE_NASM, test "${NASM}" != "no") + +case $host_os in + *cygwin*|*mingw32*) + CYGWIN=yes + NASM_FORMAT="-f win32 -DWIN32" + ;; + *) + CYGWIN=no + NASM_FORMAT="-f elf" + ;; +esac + +# +# 'expopt' is used for "additional optimizations", not for optimizations which +# are marked as "experimental" in the guide for the compiler. +# They are "experimental" here in the LAME project (at least +# "--enable-expopt=full"). +# +AC_MSG_CHECKING(for additional optimizations) +AC_ARG_ENABLE(expopt, + [ --enable-expopt=full,norm Whether to enable experimental optimizations] + [ [default=no]], + CONFIG_EXPOPT="${enableval}", CONFIG_EXPOPT="no") + +if test "x$GCC" = "xyes"; then + # gcc defaults. OS specific options go in versious sections below + # from the gcc man pages: "there is no reason to use -pedantic" + if test "x${with_gnu_ld}" = "xyes"; then + CFLAGS="-Wall -pipe ${CFLAGS}" + else + # some vendor ld's don't like '-pipe' + CFLAGS="-Wall ${CFLAGS}" + fi + + # GCC version specific generic options + case "${GCC_version}" in + 2.96*) + # for buggy version of gcc shipped with RH7.1, back of on some + # optimizations + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fsched-interblock -fbranch-count-reg -fforce-addr \ + -fforce-mem" + ;; + 3.0*) + # -funroll-loops seems to produce buggy code with gcc 3.0.3 + OPTIMIZATION="-O -fomit-frame-pointer -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + 3.2*) + # -fomit-frame-pointer seems to be buggy on cygwin + case ${host_os} in + *cygwin*) + OMIT_FRAME_POINTER= + ;; + *) + OMIT_FRAME_POINTER=-fomit-frame-pointer + ;; + esac + + OPTIMIZATION="-O ${OMIT_FRAME_POINTER} -ffast-math" + OPTIMIZATION_FULL="-fmove-all-movables -freduce-all-givs \ + -fbranch-count-reg -fforce-addr -fforce-mem" + ;; + *) + # default + OPTIMIZATION="-O3 ${OMIT_FRAME_POINTER} -ffast-math \ + -funroll-loops" + OPTIMIZATION_FULL="-fbranch-count-reg -fforce-addr -fforce-mem" + ;; + esac + + + # GCC version independend generic options + OPTIMIZATION_NORM="-fschedule-insns2" + + + # generic CPU specific options + case ${host_cpu} in + sparc) + case "${GCC_version}" in + 3.0*) + ;; + 3.*) + # doesn't work on 3.0.x, but on 3.[12] and + # hopefully on every other release after that too + if test -x /usr/bin/isalist; then + /usr/bin/isalist | grep sparcv8plus \ + >/dev/null 2>&1 && \ + OPTIMIZATION="${OPTIMIZATION} \ + -mcpu=ultrasparc \ + -mtune=ultrasparc" + fi + ;; + esac + ;; + *86) + case "${GCC_version}" in + 3.*) + OPTIMIZATION="${OPTIMIZATION} \ + -maccumulate-outgoing-args" + ;; + esac + ;; + esac + + + case "${CONFIG_EXPOPT}" in + no) + # if someone supplies own CFLAGS, we don't add our own + if test "x${ac_save_CFLAGS}" != "x"; then + OPTIMIZATION="" + fi + ;; + norm|yes) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM}" + ;; + full) + OPTIMIZATION="${OPTIMIZATION} ${OPTIMIZATION_NORM} \ + ${OPTIMIZATION_FULL}" + + # some hardware dependend options + case "${GCC_version}" in + 2.9*|3.*) + # "new" GCC, use some "new" CPU specific optimizations + case ${host_cpu} in + *486) + OPTIMIZATION="${OPTIMIZATION} -m486 \ + -mfancy-math-387" + ;; + *586) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentium \ + -march=pentium -mfancy-math-387" + ;; + *686) + OPTIMIZATION="${OPTIMIZATION} -mcpu=pentiumpro \ + -march=pentiumpro -mfancy-math-387 \ + -malign-double" + ;; + *86) + OPTIMIZATION="${OPTIMIZATION} -mfancy-math-387" + ;; + alpha*) + OPTIMIZATION="${OPTIMIZATION} -mfp-regs" + AC_DEFINE(FLOAT, double, double is faster than float on Alpha) + # add "-mcpu=21164a -Wa,-m21164a" to optimize + # for 21164a (ev56) CPU + ;; + *) + OPTIMIZATION="${OPTIMIZATION} -fdelayed-branch" + ;; + esac + ;; + *) + # no special optimization for other versions + AC_MSG_WARN(LAME doesn't know about your version of gcc, please report it to lame-dev@lists.sourceforge.net. Please make sure you try the latest LAME version first!) + ;; + esac + ;; + *) + AC_MSG_ERROR(bad value �${CONFIG_EXPOPT}� for expopt option) + ;; + esac + + AC_MSG_RESULT(${CONFIG_EXPOPT}) +else + AC_MSG_RESULT(no) +fi + + + + + +AC_MSG_CHECKING(for debug options) +AC_ARG_ENABLE(debug, + [ --enable-debug=alot,norm Enable debugging (disables optimizations)] + [ [default=no]], + CONFIG_DEBUG="${enableval}", CONFIG_DEBUG="no") + +if test "x$GCC" = "xyes"; then + DEBUG_NORM_OPT="-O -g -Wall" + DEBUG_ANOYING="-Wbad-function-cast -Wcast-align \ + -Wcast-qual -Wchar-subscripts -Wconversion \ + -Wmissing-prototypes -Wnested-externs -Wpointer-arith \ + -Wredundant-decls -Wshadow -Wstrict-prototypes \ + -Wwrite-strings -Winline \ + -Wformat -Wswitch -Waggregate-return -Wmissing-noreturn \ + -Wimplicit-int -fno-builtin" + + case "${CONFIG_DEBUG}" in + no) + AC_DEFINE(NDEBUG, 1, no debug build) + ;; + norm|yes) + AC_DEFINE(ABORTFP, 1, debug define) + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + anoying) + AC_DEFINE(ABORTFP, 1, debug define) + OPTIMIZATION="${DEBUG_NORM_OPT} ${DEBUG_ANOYING}" + ;; + alot) + AC_DEFINE(ABORTFP, 1, debug define) + AC_DEFINE(DEBUG, 1, alot of debug output) + OPTIMIZATION="${DEBUG_NORM_OPT}" + ;; + *) + AC_MSG_ERROR(bad value �${CONFIG_DEBUG}� for debug option) + esac + + AC_MSG_RESULT(${CONFIG_DEBUG}) +else + AC_MSG_RESULT(no) +fi + + + +dnl ### system specific options ### + +########################################################################## +# LINUX on Digital/Compaq Alpha CPUs +########################################################################## +case $host in +alpha*-*-linux*) + +################################################################ +#### Check if 'ccc' is in our path +################################################################ +if test "`which ccc 2>/dev/null | grep -c ccc`" != "0" ; then + # Compaq's C Compiler + CC=ccc + +################################################################ +#### set 'OPTIMIZATION = -arch host -tune host' +#### to generate/tune instructions for this machine +#### 'OPTIMIZATION += -migrate -fast -inline speed -unroll 0' +#### tweak to run as fast as possible :) +#### 'OPTIMIZATION += -w0' +#### set warning and linking flags +################################################################ + OPTIMIZATION="-arch host -tune host" + OPTIMIZATION="-migrate -fast -inline speed -unroll 0 $OPTIMIZATION" + OPTIMIZATION="-w0 $OPTIMIZATION" + + +################################################################ +#### to debug, uncomment +################################################################ + # For Debugging + #OPTIMIZATION="-g3 $OPTIMIZATION" + +################################################################ +#### define __DECALPHA__ (i was getting re-declaration warnings +#### in machine.h +################################################################ + # Define DEC Alpha + AC_DEFINE(__DECALPHA__, 1, we're on DEC Alpha) +fi # gcc or ccc? +;; # alpha + + +########################################################################## +# SunOS +########################################################################## +sparc-*-sunos4*) + if test CC = "cc"; then + OPTIMIZATION="-O -xCC" + MAKEDEP="-xM" + # for gcc, use instead: + # CC="gcc" + # OPTIMIZATION="-O" + # MAKEDEP="-M" +AC_MSG_WARN([Please contact lame@lists.sourceforge.net with the output of the configure run and the file config.cache. Thank you for your cooperation.]) + fi +;; #SunOS + +########################################################################## +# SGI +########################################################################## +*-sgi-irix*) + if test CC = "cc"; then + OPTIMIZATION="-O3 -woff all" + fi +;; # SGI + +########################################################################## +# Compaq Alpha running Dec Unix (OSF) +########################################################################## +alpha*-dec-osf*) + if test CC = "cc"; then + OPTIMIZATION="-fast -O3 -std -g3 -non_shared" + fi +;; #OSF +esac + +# todo: include the following tests in the case-list +UNAME=`uname` +ARCH=`uname -m` + +########################################################################### +# MOSXS (Rhapsody PPC) +########################################################################### +if test "$UNAME" = "Rhapsody"; then +# CC="cc" # should be handled already by autoconf + MAKEDEP="-make" +fi + +########################################################################### +# MAC OSX Darwin PPC +########################################################################### +if test "$UNAME" = "Darwin"; then + MAKEDEP="-make" + CFLAGS="$CFLAGS -fno-common" +fi + + +########################################################################## +# OS/2 +########################################################################## +# Properly installed EMX runtime & development package is a prerequisite. +# tools I used: make 3.76.1, uname 1.12, sed 2.05, PD-ksh 5.2.13 +# +########################################################################## +if test "$UNAME" = "OS/2"; then + SHELL=sh + #CC=gcc # should already be handled by configure + + # file extension should already be handled by automake (I don't know, + # please give feedback! + #FILE_EXTENSION=".exe" + +# Uncomment & inspect the GTK lines to use MP3x GTK frame analyzer. +# Properly installed XFree86/devlibs & GTK+ is a prerequisite. +# The following works for me using Xfree86/OS2 3.3.5 and GTK+ 1.2.3: +# AC_DEFINE(HAVE_GTK, 1, have GTK) +# AC_DEFINE(__ST_MT_ERRNO__, 1) +# INCLUDES="-IC:/XFree86/include/gtk12 -IC:/XFree86/include/glib12 \ +# -IC:/XFree86/include $INCLUDES" +# FRONTEND_LDFLAGS="-LC:/XFree86/lib -lgtk12 -lgdk12 -lgmodule -lglib12 \ +# -lXext -lX11 -lshm -lbsd -lsocket -lm $FRONTEND_LDFLAGS" +# FRONTEND_CFLAGS="-Zmtd -Zsysv-signals -Zbin-files $FRONTEND_CFLAGS" +fi + +########################################################################### +# AmigaOS +########################################################################### +# Type 'Make ARCH=PPC' for PowerUP and 'Make ARCH=WOS' for WarpOS +# +########################################################################### +if test "$UNAME" = "AmigaOS" ; then + CC="gcc -noixemul" + OPTIMIZATION="$OPTIMIZATION -m68020-60 -m68881" + MAKEDEP="-MM" + if test "$ARCH" = "WOS"; then + CC="ppc-amigaos-gcc -warpup" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi + if test "$ARCH",PPC; then + CC="ppc-amigaos-gcc" + OPTIMIZATION="$OPTIMIZATION -mmultiple -mcpu=603e" + AR="ppc-amigaos-ar" + RANLIB="ppc-amigaos-ranlib" + fi +fi + + +CFLAGS="${OPTIMIZATION} ${CFLAGS}" +LDADD="${LDADD}" +FRONTEND_LDADD="${FRONTEND_LDADD} ${CONFIG_MATH_LIB}" + + +AC_SUBST(INCLUDES) + +AC_SUBST(FRONTEND_LDFLAGS) +AC_SUBST(FRONTEND_CFLAGS) +AC_SUBST(FRONTEND_LDADD) +AC_SUBST(LDADD) + +AC_SUBST(LIB_MAJOR_VERSION) +AC_SUBST(LIB_MINOR_VERSION) + +AC_SUBST(NASM) +AC_SUBST(NASM_FORMAT) + +AC_SUBST(MAKEDEP) +AC_SUBST(RM_F) + +AC_SUBST(LIBTOOL_DEPS) + +AC_SUBST(WITH_FRONTEND) +AC_SUBST(WITH_MP3X) +AC_SUBST(WITH_MP3RTP) + +AC_SUBST(CPUTYPE) + +AC_SUBST(CONFIG_DEFS) + +AC_CONFIG_FILES([Makefile libmp3lame/Makefile libmp3lame/i386/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile]) +AC_OUTPUT diff --git a/lame-3.97/debian/.svn/all-wcprops b/lame-3.97/debian/.svn/all-wcprops new file mode 100644 index 0000000..546011a --- /dev/null +++ b/lame-3.97/debian/.svn/all-wcprops @@ -0,0 +1,71 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/328/monitor/trunk/lame-3.97/debian +END +lame.files +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/lame.files +END +control +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/control +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/328/monitor/trunk/lame-3.97/debian/Makefile.in +END +libmp3lame0-dev.files +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/libmp3lame0-dev.files +END +lame.docs +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/lame.docs +END +libmp3lame0.files +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/libmp3lame0.files +END +changelog +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/changelog +END +copyright +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/copyright +END +libmp3lame0-dev.docs +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/libmp3lame0-dev.docs +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/Makefile.am +END +rules +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/debian/rules +END diff --git a/lame-3.97/debian/.svn/entries b/lame-3.97/debian/.svn/entries new file mode 100644 index 0000000..81c5c58 --- /dev/null +++ b/lame-3.97/debian/.svn/entries @@ -0,0 +1,402 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/debian +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +lame.files +file + + + + +2012-01-23T14:07:04.056489Z +cec83efb6537ec7b5e4d04ecabed58a8 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +44 + +control +file + + + + +2012-01-23T14:07:04.056489Z +f5b8ead4ca53e51cbc3b4343e05a6ea0 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1714 + +Makefile.in +file + + + + +2012-01-23T14:07:04.057495Z +f7547470e9f0d6f6b6207e582a20a349 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +9921 + +libmp3lame0-dev.files +file + + + + +2012-01-23T14:07:04.058489Z +13e71f3e27d99959271061f746bb76ec +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +41 + +lame.docs +file + + + + +2012-01-23T14:07:04.058489Z +04bdb5d2370330a9fe19f2f0e8e8a588 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +18 + +libmp3lame0.files +file + + + + +2012-01-23T14:07:04.058489Z +ecb4d3a16e14552d3695ad28f6bd98e9 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +24 + +changelog +file + + + + +2012-01-23T14:07:04.059489Z +837ee76ea40757dab20a79576465d393 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +5753 + +copyright +file + + + + +2012-01-23T14:07:04.059489Z +c8c0da3e15d0e86d2cbc35a06435a802 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +2077 + +libmp3lame0-dev.docs +file + + + + +2012-01-23T14:07:04.059489Z +90cee9e7d7f32473a1d8a06756a62fd1 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +30 + +Makefile.am +file + + + + +2012-01-23T14:07:04.059489Z +71f20fc15597fec71fd395adbd30d46c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +300 + +rules +file + + + + +2012-01-23T14:07:04.060486Z +4930b4119ba9ffe8899f54cc55ae19c9 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +2296 + diff --git a/lame-3.97/debian/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/debian/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/debian/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/debian/.svn/text-base/Makefile.am.svn-base b/lame-3.97/debian/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..1b8dc8b --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,18 @@ +## $Id: Makefile.am,v 1.5 2005/08/25 12:14:44 takehiro Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + changelog \ + control \ + copyright \ + libmp3lame0-dev.docs \ + libmp3lame0-dev.files \ + libmp3lame0.files \ + lame.docs \ + lame.files \ + rules + +dist-hook: + chmod +x $(distdir)/rules + diff --git a/lame-3.97/debian/.svn/text-base/Makefile.in.svn-base b/lame-3.97/debian/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..7157a51 --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,364 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = debian +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + changelog \ + control \ + copyright \ + libmp3lame0-dev.docs \ + libmp3lame0-dev.files \ + libmp3lame0.files \ + lame.docs \ + lame.files \ + rules + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign debian/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign debian/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + dist-hook distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-info-am + + +# end global section + +dist-hook: + chmod +x $(distdir)/rules +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/debian/.svn/text-base/changelog.svn-base b/lame-3.97/debian/.svn/text-base/changelog.svn-base new file mode 100644 index 0000000..d28258d --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/changelog.svn-base @@ -0,0 +1,165 @@ +lame (3.97-8) unstable; urgency=low + + * debian/rules: enable full optimization, now that it works with GCC 4. + + -- Rogério Brito <rbrito@users.sf.net> Mon, 5 Sep 2005 01:24:44 -0300 + +lame (3.97-7) unstable; urgency=low + + * debian/control: make libmp3lame0 provide and replace liblame0. + + -- Rogério Brito <rbrito@users.sf.net> Tue, 16 Aug 2005 04:36:46 -0300 + +lame (3.97-6) unstable; urgency=low + + * debian/control: make libmp3lame0 provide liblame0 for legacy apps; + * debian/control: fix typo in description of libmp3lame0-dev; + * debian/libmp3lame0-dev.files: don't ship shared libraries. + + -- Rogério Brito <rbrito@users.sf.net> Tue, 16 Aug 2005 04:03:42 -0300 + +lame (3.97-5) unstable; urgency=low + + * debian/control: fix use of SONAME in the package; + * debian/liblame0.*: renamed to libmp3lame0.* as per above; + * debian/liblame-dev: idem; + * debian/rules: incorporate some changes by Christian Marillat. + + -- Rogério Brito <rbrito@users.sf.net> Mon, 15 Aug 2005 00:47:25 -0300 + +lame (3.97-4) unstable; urgency=low + + * debian/control: exclude libsndfile0-dev as a build dependency. + * debian/control: include libgtk1.2-dev as a build dependency. + * debian/rules: s/--with-fileio=sndfile/--with-fileio=lame/, since + grabbing input from stdin is a very important feature. + + -- Rogério Brito <rbrito@users.sf.net> Fri, 5 Aug 2005 02:01:40 -0300 + +lame (3.97-3) unstable; urgency=low + + * doc/man/lame.1: document the --{un,}signed options. + * doc/man/lame.1: document the --{big,little}-endian options. + * debian/control: include libsndfile0-dev as a build dependency. + * debian/rules: s/--with-fileio=lame/--with-fileio=sndfile/ . + + -- Rogério Brito <rbrito@users.sf.net> Wed, 3 Aug 2005 21:35:17 -0300 + +lame (3.97-2) unstable; urgency=low + + * debian/rules: use dh_installman instead of dh_installmanpages. + * doc/man/lame.1: escape minus signals with backslash. + + -- Rogério Brito <rbrito@users.sf.net> Wed, 27 Jul 2005 04:58:39 -0300 + +lame (3.97-1) unstable; urgency=low + + * Preparation for the beta release of lame 3.97. + * Still more improvements to come. + + -- Rogério Brito <rbrito@users.sf.net> Tue, 26 Jul 2005 18:16:34 -0300 + +lame (3.97-0.2) unstable; urgency=low + + * Fixed debian/control according to the Debian Library Packaging Guide + + -- Jack Bates <ms419@freezone.co.uk> Thu, 12 May 2005 13:41:28 -0700 + +lame (3.97-0.1) unstable; urgency=low + + * Preparation for new upstream release. + * debian/control: modified short descriptions to be lower case. + + -- Rogério Brito <rbrito@users.sf.net> Fri, 18 Mar 2005 01:18:42 -0300 + +lame (3.96-0.1) unstable; urgency=low + + * Update debian packaging for lame 3.96 + + -- Geoffrey T. Dairiki <dairiki@dairiki.org> Fri, 9 Apr 2004 10:28:12 -0700 + +lame (3.94-0.1) unstable; urgency=low + + * Update packaging for lame 3.94 alpha 14; + * Made progress to make the package as lintian-clean as possible: + * debian/copyright: removed the traces of the skeleton file; + * debian/rules: avoid using --host, as per warning of ./configure; + * debian/rules: use trick to avoind generating a library with rpath; + * debian/lame.docs: avoid generating duplicate html documentation; + * debian/control: added dependency on debhelper >= 3; + * still more work left, but progressing anyway (i.e., changes listed in + /usr/share/doc/debian-policy/upgrading-checklist.txt.gz should be + applied). + + -- Rogério Brito <rbrito@users.sf.net> Tue, 15 Jul 2003 19:30:42 -0300 + +lame (3.93-0.1) unstable; urgency=low + + * Prevent lame 3.93 shipping and still building a 3.92 debian package; + * Use --enable-nasm, as is shouldn't break compilation on non-x86; + * Use --enable-expopt, to get a bit more of speed. + + -- Rogério Brito <rbrito@users.sf.net> Sun, 25 Aug 2002 18:58:16 -0300 + +lame (3.92-1) unstable; urgency=low + + * New upstream release. + * Closes: #578135. + + -- Rogério Brito <linuxsup@ig.com.br> Sun, 28 Jul 2002 03:08:04 -0300 + +lame (3.91-1) unstable; urgency=low + + * New upstream release. + + -- Rogerio Brito <linuxsup@ig.com.br> Sun, 20 Jan 2002 20:50:19 -0200 + +lame (3.90.1-0) unstable; urgency=low + + * New upstream release. + * debian/control: nasm is only a build-dependency on x86; + * debian/control: added debhelper to build-dependency list; + * debian/control: changed description of the binary packages; + * debian/rules: enabled experimental/agressive optimizations; + * debian/rules: effectively spread the installed files in binary packages; + * debian/rules: now dh_makeshlibs creates good postinst and prerm scripts; + * Changed the lame-dev package to liblame0-dev; + * Removed references to lame-extras, since it doesn't exist anymore; + * Added LICENCE to copyright and excluded it from the binary package; + * Removed INSTALL from the binary package; + * lame is now almost lintian clean (the only problem remaining is + an rpath in liblame build process). + + -- Rogerio Brito <linuxsup@ig.com.br> Fri, 28 Dec 2001 04:08:57 -0200 + +lame (3.90-1) unstable; urgency=low + + * New upstream release. + + -- Viral <viral@debian.org> Tue, 21 Aug 2001 13:50:14 +0530 + +lame (3.89-1) unstable; urgency=low + + * New upstream version. + * Added --host=$$(dpkg-architecture -qDEB_HOST_GNU_TYPE) to configure. + * Added liblame0 package. + * Added doc-base entry. + * Actual ChangeLog is installed now instead of history.html + + -- Viral <viral@debian.org> Sun, 22 Jul 2001 03:07:30 +0530 + +lame (3.88-0) unstable; urgency=low + + * Updated debian/ directory to use configure. + + -- Ingo Saitz <Ingo.Saitz@stud.uni-hannover.de> Mon, 11 Dec 2000 08:43:26 +0100 + +lame (3.86-1) unstable; urgency=low + + * Initial Release. + + -- Stefan Karrmann <S.Karrmann@gmx.net> Thu, 31 Aug 2000 22:15:07 +0200 + +Local variables: +mode: debian-changelog +End: diff --git a/lame-3.97/debian/.svn/text-base/control.svn-base b/lame-3.97/debian/.svn/text-base/control.svn-base new file mode 100644 index 0000000..b46cdc2 --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/control.svn-base @@ -0,0 +1,50 @@ +Source: lame +Section: sound +Priority: optional +Maintainer: Rogério Brito <rbrito@users.sf.net> +Build-Depends: debhelper (>= 4), libgtk1.2-dev, libncurses5-dev, nasm [i386] +Standards-Version: 3.5.6 + +Package: lame +Architecture: any +Depends: ${shlibs:Depends} +Description: open source MP3 encoder + Lame is a program which can be used to create compressed + audio files. (Lame aint MP3 encoder). These audio files + can be played back by popular mp3 players such as mpg123. + To read from stdin, use "-" for <infile>. To write to + stdout, use a "-" for <outfile>. + . + This package contains the frontend encoder binary almost all + options (such as frame analyzer and decoder) enabled. + +Package: libmp3lame0 +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Provides: liblame0 +Replaces: liblame0 +Description: shared libraries for MP3 encoding + Lame is a program which can be used to create compressed + audio files. (Lame aint MP3 encoder). These audio files + can be played back by popular mp3 players such as mpg123. + To read from stdin, use "-" for <infile>. To write to + stdout, use a "-" for <outfile>. + . + This package contains the dynamic library. + +Package: libmp3lame0-dev +Architecture: any +Section: libdevel +Depends: libmp3lame0 (= ${Source-Version}), libc6-dev +Provides: libmp3lame-dev +Conflicts: libmp3lame-dev +Description: development files for lame + Lame is a program which can be used to create compressed + audio files. (Lame aint MP3 encoder). These audio files + can be played back by popular mp3 players such as mpg123. + To read from stdin, use "-" for <infile>. To write to + stdout, use a "-" for <outfile>. + . + This package contains the static library and header files + for development with lame. diff --git a/lame-3.97/debian/.svn/text-base/copyright.svn-base b/lame-3.97/debian/.svn/text-base/copyright.svn-base new file mode 100644 index 0000000..0a3298c --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/copyright.svn-base @@ -0,0 +1,50 @@ +This package was originally debianized by Stefan Karrmann <S.Karrmann@gmx.net> +on Thu, 31 Aug 2000 22:15:07 +0200. + +It was downloaded from <http://www.mp3dev.org/mp3/>. + +Upstream Authors: please, see the file html/contributors.html for a +list of contributors to the lame project. + +Copyright: + + LAME is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + LAME is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Additionally, the original software's LICENCE file contains the following: + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Can I use LAME in my commercial program? + +Yes, you can, under the restrictions of the LGPL. The easiest +way to do this is to: + +1. Link to LAME as separate library (libmp3lame.a on unix or + lame_enc.dll on windows) + +2. Fully acknowledge that you are using LAME, and give a link + to our web site, www.mp3dev.org + +3. If you make modifications to LAME, you *must* release these + these modifications back to the LAME project, under the LGPL. + +*** IMPORTANT NOTE *** + +The decoding functions provided in LAME use the mpglib decoding engine which +is under the GPL. They may not be used by any program not released under the +GPL unless you obtain such permission from the MPG123 project (www.mpg123.de). +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/LGPL'. diff --git a/lame-3.97/debian/.svn/text-base/lame.docs.svn-base b/lame-3.97/debian/.svn/text-base/lame.docs.svn-base new file mode 100644 index 0000000..f0e1368 --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/lame.docs.svn-base @@ -0,0 +1,3 @@ +README +TODO +USAGE diff --git a/lame-3.97/debian/.svn/text-base/lame.files.svn-base b/lame-3.97/debian/.svn/text-base/lame.files.svn-base new file mode 100644 index 0000000..5d06f7f --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/lame.files.svn-base @@ -0,0 +1,2 @@ +usr/bin/lame +usr/share/doc/lame/html/*.html diff --git a/lame-3.97/debian/.svn/text-base/libmp3lame0-dev.docs.svn-base b/lame-3.97/debian/.svn/text-base/libmp3lame0-dev.docs.svn-base new file mode 100644 index 0000000..5fd203e --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/libmp3lame0-dev.docs.svn-base @@ -0,0 +1,4 @@ +API +README +STYLEGUIDE +HACKING diff --git a/lame-3.97/debian/.svn/text-base/libmp3lame0-dev.files.svn-base b/lame-3.97/debian/.svn/text-base/libmp3lame0-dev.files.svn-base new file mode 100644 index 0000000..d6ee0f3 --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/libmp3lame0-dev.files.svn-base @@ -0,0 +1,2 @@ +usr/include/lame/lame.h +usr/lib/*.{a,la} diff --git a/lame-3.97/debian/.svn/text-base/libmp3lame0.files.svn-base b/lame-3.97/debian/.svn/text-base/libmp3lame0.files.svn-base new file mode 100644 index 0000000..f5235c2 --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/libmp3lame0.files.svn-base @@ -0,0 +1 @@ +usr/lib/libmp3lame.so.* diff --git a/lame-3.97/debian/.svn/text-base/rules.svn-base b/lame-3.97/debian/.svn/text-base/rules.svn-base new file mode 100644 index 0000000..92d4812 --- /dev/null +++ b/lame-3.97/debian/.svn/text-base/rules.svn-base @@ -0,0 +1,92 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DHVERBOSE=1 + +# This is the debhelper compatibility version to use. +export DH_COMPAT=4 + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + CFLAGS="$(CFLAGS)" ./configure \ + --prefix=/usr \ + --mandir=/usr/share/man \ + --with-fileio=lame \ + --without-vorbis \ + --enable-decode-layer1 \ + --enable-mp3x \ + --enable-mp3rtp \ + --enable-nasm \ + --with-pic \ + --enable-expopt=full + + # Patch the generated libtool to avoid passing -rpath when linking, + # and to explicitly link libraries against the libraries they depend + # on. (thanks Richard Braakman <dark@xs4all.nl>). Taken from: + # http://lists.debian.org/debian-devel/2002/debian-devel-200207/msg01792.html + sed < libtool > libtool-2 \ + -e 's/^\(hardcode_libdir_flag_spec\).*$$/\1=" -D__LIBTOOL_IS_A_FOOL__ "/' \ + -e '/^archive_cmds="/s/"$$/ \\$$deplibs"/' + mv libtool-2 libtool + chmod 755 libtool + + touch configure-stamp + +build: configure-stamp build-stamp +build-stamp: + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + # Parts of this taken from Christian Marillat's packaging. + [ ! -f Makefile ] || $(MAKE) distclean + dh_clean confcache libmp3lame/i386/choose_table.nas.lst \ + libmp3lame/i386/cpu_feat.nas.lst libmp3lame/i386/scalar.nas.lst + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/tmp. + $(MAKE) DESTDIR=`pwd`/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_movefiles + dh_installdocs + dh_installman -Nlibmp3lame0 -Nlibmp3lame0-dev + dh_installchangelogs ChangeLog + dh_strip + dh_compress + dh_fixperms + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/lame-3.97/debian/Makefile.am b/lame-3.97/debian/Makefile.am new file mode 100644 index 0000000..1b8dc8b --- /dev/null +++ b/lame-3.97/debian/Makefile.am @@ -0,0 +1,18 @@ +## $Id: Makefile.am,v 1.5 2005/08/25 12:14:44 takehiro Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + changelog \ + control \ + copyright \ + libmp3lame0-dev.docs \ + libmp3lame0-dev.files \ + libmp3lame0.files \ + lame.docs \ + lame.files \ + rules + +dist-hook: + chmod +x $(distdir)/rules + diff --git a/lame-3.97/debian/Makefile.in b/lame-3.97/debian/Makefile.in new file mode 100644 index 0000000..7157a51 --- /dev/null +++ b/lame-3.97/debian/Makefile.in @@ -0,0 +1,364 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = debian +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + changelog \ + control \ + copyright \ + libmp3lame0-dev.docs \ + libmp3lame0-dev.files \ + libmp3lame0.files \ + lame.docs \ + lame.files \ + rules + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign debian/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign debian/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + dist-hook distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-info-am + + +# end global section + +dist-hook: + chmod +x $(distdir)/rules +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/debian/changelog b/lame-3.97/debian/changelog new file mode 100644 index 0000000..d28258d --- /dev/null +++ b/lame-3.97/debian/changelog @@ -0,0 +1,165 @@ +lame (3.97-8) unstable; urgency=low + + * debian/rules: enable full optimization, now that it works with GCC 4. + + -- Rogério Brito <rbrito@users.sf.net> Mon, 5 Sep 2005 01:24:44 -0300 + +lame (3.97-7) unstable; urgency=low + + * debian/control: make libmp3lame0 provide and replace liblame0. + + -- Rogério Brito <rbrito@users.sf.net> Tue, 16 Aug 2005 04:36:46 -0300 + +lame (3.97-6) unstable; urgency=low + + * debian/control: make libmp3lame0 provide liblame0 for legacy apps; + * debian/control: fix typo in description of libmp3lame0-dev; + * debian/libmp3lame0-dev.files: don't ship shared libraries. + + -- Rogério Brito <rbrito@users.sf.net> Tue, 16 Aug 2005 04:03:42 -0300 + +lame (3.97-5) unstable; urgency=low + + * debian/control: fix use of SONAME in the package; + * debian/liblame0.*: renamed to libmp3lame0.* as per above; + * debian/liblame-dev: idem; + * debian/rules: incorporate some changes by Christian Marillat. + + -- Rogério Brito <rbrito@users.sf.net> Mon, 15 Aug 2005 00:47:25 -0300 + +lame (3.97-4) unstable; urgency=low + + * debian/control: exclude libsndfile0-dev as a build dependency. + * debian/control: include libgtk1.2-dev as a build dependency. + * debian/rules: s/--with-fileio=sndfile/--with-fileio=lame/, since + grabbing input from stdin is a very important feature. + + -- Rogério Brito <rbrito@users.sf.net> Fri, 5 Aug 2005 02:01:40 -0300 + +lame (3.97-3) unstable; urgency=low + + * doc/man/lame.1: document the --{un,}signed options. + * doc/man/lame.1: document the --{big,little}-endian options. + * debian/control: include libsndfile0-dev as a build dependency. + * debian/rules: s/--with-fileio=lame/--with-fileio=sndfile/ . + + -- Rogério Brito <rbrito@users.sf.net> Wed, 3 Aug 2005 21:35:17 -0300 + +lame (3.97-2) unstable; urgency=low + + * debian/rules: use dh_installman instead of dh_installmanpages. + * doc/man/lame.1: escape minus signals with backslash. + + -- Rogério Brito <rbrito@users.sf.net> Wed, 27 Jul 2005 04:58:39 -0300 + +lame (3.97-1) unstable; urgency=low + + * Preparation for the beta release of lame 3.97. + * Still more improvements to come. + + -- Rogério Brito <rbrito@users.sf.net> Tue, 26 Jul 2005 18:16:34 -0300 + +lame (3.97-0.2) unstable; urgency=low + + * Fixed debian/control according to the Debian Library Packaging Guide + + -- Jack Bates <ms419@freezone.co.uk> Thu, 12 May 2005 13:41:28 -0700 + +lame (3.97-0.1) unstable; urgency=low + + * Preparation for new upstream release. + * debian/control: modified short descriptions to be lower case. + + -- Rogério Brito <rbrito@users.sf.net> Fri, 18 Mar 2005 01:18:42 -0300 + +lame (3.96-0.1) unstable; urgency=low + + * Update debian packaging for lame 3.96 + + -- Geoffrey T. Dairiki <dairiki@dairiki.org> Fri, 9 Apr 2004 10:28:12 -0700 + +lame (3.94-0.1) unstable; urgency=low + + * Update packaging for lame 3.94 alpha 14; + * Made progress to make the package as lintian-clean as possible: + * debian/copyright: removed the traces of the skeleton file; + * debian/rules: avoid using --host, as per warning of ./configure; + * debian/rules: use trick to avoind generating a library with rpath; + * debian/lame.docs: avoid generating duplicate html documentation; + * debian/control: added dependency on debhelper >= 3; + * still more work left, but progressing anyway (i.e., changes listed in + /usr/share/doc/debian-policy/upgrading-checklist.txt.gz should be + applied). + + -- Rogério Brito <rbrito@users.sf.net> Tue, 15 Jul 2003 19:30:42 -0300 + +lame (3.93-0.1) unstable; urgency=low + + * Prevent lame 3.93 shipping and still building a 3.92 debian package; + * Use --enable-nasm, as is shouldn't break compilation on non-x86; + * Use --enable-expopt, to get a bit more of speed. + + -- Rogério Brito <rbrito@users.sf.net> Sun, 25 Aug 2002 18:58:16 -0300 + +lame (3.92-1) unstable; urgency=low + + * New upstream release. + * Closes: #578135. + + -- Rogério Brito <linuxsup@ig.com.br> Sun, 28 Jul 2002 03:08:04 -0300 + +lame (3.91-1) unstable; urgency=low + + * New upstream release. + + -- Rogerio Brito <linuxsup@ig.com.br> Sun, 20 Jan 2002 20:50:19 -0200 + +lame (3.90.1-0) unstable; urgency=low + + * New upstream release. + * debian/control: nasm is only a build-dependency on x86; + * debian/control: added debhelper to build-dependency list; + * debian/control: changed description of the binary packages; + * debian/rules: enabled experimental/agressive optimizations; + * debian/rules: effectively spread the installed files in binary packages; + * debian/rules: now dh_makeshlibs creates good postinst and prerm scripts; + * Changed the lame-dev package to liblame0-dev; + * Removed references to lame-extras, since it doesn't exist anymore; + * Added LICENCE to copyright and excluded it from the binary package; + * Removed INSTALL from the binary package; + * lame is now almost lintian clean (the only problem remaining is + an rpath in liblame build process). + + -- Rogerio Brito <linuxsup@ig.com.br> Fri, 28 Dec 2001 04:08:57 -0200 + +lame (3.90-1) unstable; urgency=low + + * New upstream release. + + -- Viral <viral@debian.org> Tue, 21 Aug 2001 13:50:14 +0530 + +lame (3.89-1) unstable; urgency=low + + * New upstream version. + * Added --host=$$(dpkg-architecture -qDEB_HOST_GNU_TYPE) to configure. + * Added liblame0 package. + * Added doc-base entry. + * Actual ChangeLog is installed now instead of history.html + + -- Viral <viral@debian.org> Sun, 22 Jul 2001 03:07:30 +0530 + +lame (3.88-0) unstable; urgency=low + + * Updated debian/ directory to use configure. + + -- Ingo Saitz <Ingo.Saitz@stud.uni-hannover.de> Mon, 11 Dec 2000 08:43:26 +0100 + +lame (3.86-1) unstable; urgency=low + + * Initial Release. + + -- Stefan Karrmann <S.Karrmann@gmx.net> Thu, 31 Aug 2000 22:15:07 +0200 + +Local variables: +mode: debian-changelog +End: diff --git a/lame-3.97/debian/control b/lame-3.97/debian/control new file mode 100644 index 0000000..b46cdc2 --- /dev/null +++ b/lame-3.97/debian/control @@ -0,0 +1,50 @@ +Source: lame +Section: sound +Priority: optional +Maintainer: Rogério Brito <rbrito@users.sf.net> +Build-Depends: debhelper (>= 4), libgtk1.2-dev, libncurses5-dev, nasm [i386] +Standards-Version: 3.5.6 + +Package: lame +Architecture: any +Depends: ${shlibs:Depends} +Description: open source MP3 encoder + Lame is a program which can be used to create compressed + audio files. (Lame aint MP3 encoder). These audio files + can be played back by popular mp3 players such as mpg123. + To read from stdin, use "-" for <infile>. To write to + stdout, use a "-" for <outfile>. + . + This package contains the frontend encoder binary almost all + options (such as frame analyzer and decoder) enabled. + +Package: libmp3lame0 +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Provides: liblame0 +Replaces: liblame0 +Description: shared libraries for MP3 encoding + Lame is a program which can be used to create compressed + audio files. (Lame aint MP3 encoder). These audio files + can be played back by popular mp3 players such as mpg123. + To read from stdin, use "-" for <infile>. To write to + stdout, use a "-" for <outfile>. + . + This package contains the dynamic library. + +Package: libmp3lame0-dev +Architecture: any +Section: libdevel +Depends: libmp3lame0 (= ${Source-Version}), libc6-dev +Provides: libmp3lame-dev +Conflicts: libmp3lame-dev +Description: development files for lame + Lame is a program which can be used to create compressed + audio files. (Lame aint MP3 encoder). These audio files + can be played back by popular mp3 players such as mpg123. + To read from stdin, use "-" for <infile>. To write to + stdout, use a "-" for <outfile>. + . + This package contains the static library and header files + for development with lame. diff --git a/lame-3.97/debian/copyright b/lame-3.97/debian/copyright new file mode 100644 index 0000000..0a3298c --- /dev/null +++ b/lame-3.97/debian/copyright @@ -0,0 +1,50 @@ +This package was originally debianized by Stefan Karrmann <S.Karrmann@gmx.net> +on Thu, 31 Aug 2000 22:15:07 +0200. + +It was downloaded from <http://www.mp3dev.org/mp3/>. + +Upstream Authors: please, see the file html/contributors.html for a +list of contributors to the lame project. + +Copyright: + + LAME is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + LAME is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Additionally, the original software's LICENCE file contains the following: + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Can I use LAME in my commercial program? + +Yes, you can, under the restrictions of the LGPL. The easiest +way to do this is to: + +1. Link to LAME as separate library (libmp3lame.a on unix or + lame_enc.dll on windows) + +2. Fully acknowledge that you are using LAME, and give a link + to our web site, www.mp3dev.org + +3. If you make modifications to LAME, you *must* release these + these modifications back to the LAME project, under the LGPL. + +*** IMPORTANT NOTE *** + +The decoding functions provided in LAME use the mpglib decoding engine which +is under the GPL. They may not be used by any program not released under the +GPL unless you obtain such permission from the MPG123 project (www.mpg123.de). +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +On Debian systems, the complete text of the GNU Library +General Public License can be found in `/usr/share/common-licenses/LGPL'. diff --git a/lame-3.97/debian/lame.docs b/lame-3.97/debian/lame.docs new file mode 100644 index 0000000..f0e1368 --- /dev/null +++ b/lame-3.97/debian/lame.docs @@ -0,0 +1,3 @@ +README +TODO +USAGE diff --git a/lame-3.97/debian/lame.files b/lame-3.97/debian/lame.files new file mode 100644 index 0000000..5d06f7f --- /dev/null +++ b/lame-3.97/debian/lame.files @@ -0,0 +1,2 @@ +usr/bin/lame +usr/share/doc/lame/html/*.html diff --git a/lame-3.97/debian/libmp3lame0-dev.docs b/lame-3.97/debian/libmp3lame0-dev.docs new file mode 100644 index 0000000..5fd203e --- /dev/null +++ b/lame-3.97/debian/libmp3lame0-dev.docs @@ -0,0 +1,4 @@ +API +README +STYLEGUIDE +HACKING diff --git a/lame-3.97/debian/libmp3lame0-dev.files b/lame-3.97/debian/libmp3lame0-dev.files new file mode 100644 index 0000000..d6ee0f3 --- /dev/null +++ b/lame-3.97/debian/libmp3lame0-dev.files @@ -0,0 +1,2 @@ +usr/include/lame/lame.h +usr/lib/*.{a,la} diff --git a/lame-3.97/debian/libmp3lame0.files b/lame-3.97/debian/libmp3lame0.files new file mode 100644 index 0000000..f5235c2 --- /dev/null +++ b/lame-3.97/debian/libmp3lame0.files @@ -0,0 +1 @@ +usr/lib/libmp3lame.so.* diff --git a/lame-3.97/debian/rules b/lame-3.97/debian/rules new file mode 100644 index 0000000..92d4812 --- /dev/null +++ b/lame-3.97/debian/rules @@ -0,0 +1,92 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. + +# Uncomment this to turn on verbose mode. +#export DHVERBOSE=1 + +# This is the debhelper compatibility version to use. +export DH_COMPAT=4 + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + CFLAGS="$(CFLAGS)" ./configure \ + --prefix=/usr \ + --mandir=/usr/share/man \ + --with-fileio=lame \ + --without-vorbis \ + --enable-decode-layer1 \ + --enable-mp3x \ + --enable-mp3rtp \ + --enable-nasm \ + --with-pic \ + --enable-expopt=full + + # Patch the generated libtool to avoid passing -rpath when linking, + # and to explicitly link libraries against the libraries they depend + # on. (thanks Richard Braakman <dark@xs4all.nl>). Taken from: + # http://lists.debian.org/debian-devel/2002/debian-devel-200207/msg01792.html + sed < libtool > libtool-2 \ + -e 's/^\(hardcode_libdir_flag_spec\).*$$/\1=" -D__LIBTOOL_IS_A_FOOL__ "/' \ + -e '/^archive_cmds="/s/"$$/ \\$$deplibs"/' + mv libtool-2 libtool + chmod 755 libtool + + touch configure-stamp + +build: configure-stamp build-stamp +build-stamp: + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + # Parts of this taken from Christian Marillat's packaging. + [ ! -f Makefile ] || $(MAKE) distclean + dh_clean confcache libmp3lame/i386/choose_table.nas.lst \ + libmp3lame/i386/cpu_feat.nas.lst libmp3lame/i386/scalar.nas.lst + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/tmp. + $(MAKE) DESTDIR=`pwd`/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_movefiles + dh_installdocs + dh_installman -Nlibmp3lame0 -Nlibmp3lame0-dev + dh_installchangelogs ChangeLog + dh_strip + dh_compress + dh_fixperms + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/lame-3.97/depcomp b/lame-3.97/depcomp new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/doc/.svn/all-wcprops b/lame-3.97/doc/.svn/all-wcprops new file mode 100644 index 0000000..61c72fc --- /dev/null +++ b/lame-3.97/doc/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/328/monitor/trunk/lame-3.97/doc +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/328/monitor/trunk/lame-3.97/doc/Makefile.in +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/doc/Makefile.am +END diff --git a/lame-3.97/doc/.svn/entries b/lame-3.97/doc/.svn/entries new file mode 100644 index 0000000..402c8e0 --- /dev/null +++ b/lame-3.97/doc/.svn/entries @@ -0,0 +1,102 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/doc +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Makefile.in +file + + + + +2012-01-23T14:07:04.447493Z +7abc85ef3d637202e4b83ca36d4fceca +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +15054 + +html +dir + +Makefile.am +file + + + + +2012-01-23T14:07:04.448490Z +56534802d9e3a8bd687b574efcf5d33d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +125 + +man +dir + diff --git a/lame-3.97/doc/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/doc/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/doc/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/doc/.svn/text-base/Makefile.am.svn-base b/lame-3.97/doc/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..c452a6a --- /dev/null +++ b/lame-3.97/doc/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,5 @@ +## $Id: Makefile.am,v 1.2 2001/01/15 15:16:08 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +SUBDIRS = html man diff --git a/lame-3.97/doc/.svn/text-base/Makefile.in.svn-base b/lame-3.97/doc/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..2d2640e --- /dev/null +++ b/lame-3.97/doc/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,505 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +SUBDIRS = html man +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-libtool \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/doc/Makefile.am b/lame-3.97/doc/Makefile.am new file mode 100644 index 0000000..c452a6a --- /dev/null +++ b/lame-3.97/doc/Makefile.am @@ -0,0 +1,5 @@ +## $Id: Makefile.am,v 1.2 2001/01/15 15:16:08 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +SUBDIRS = html man diff --git a/lame-3.97/doc/Makefile.in b/lame-3.97/doc/Makefile.in new file mode 100644 index 0000000..2d2640e --- /dev/null +++ b/lame-3.97/doc/Makefile.in @@ -0,0 +1,505 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = doc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +SUBDIRS = html man +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive distclean distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-libtool \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/doc/html/.svn/all-wcprops b/lame-3.97/doc/html/.svn/all-wcprops new file mode 100644 index 0000000..9377cb3 --- /dev/null +++ b/lame-3.97/doc/html/.svn/all-wcprops @@ -0,0 +1,83 @@ +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/328/monitor/trunk/lame-3.97/doc/html +END +contributors.html +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/contributors.html +END +examples.html +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/examples.html +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/328/monitor/trunk/lame-3.97/doc/html/Makefile.in +END +id3.html +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/id3.html +END +basic.html +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/basic.html +END +history.html +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/history.html +END +lame.css +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/lame.css +END +switchs.html +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/switchs.html +END +presets.html +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/presets.html +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/doc/html/Makefile.am +END +index.html +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/index.html +END +modes.html +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/modes.html +END +node6.html +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/doc/html/node6.html +END diff --git a/lame-3.97/doc/html/.svn/entries b/lame-3.97/doc/html/.svn/entries new file mode 100644 index 0000000..1146cab --- /dev/null +++ b/lame-3.97/doc/html/.svn/entries @@ -0,0 +1,470 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/doc/html +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +contributors.html +file + + + + +2012-01-23T14:07:04.413489Z +10036652b7b2d26e9f73b65faa3cd16f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3761 + +examples.html +file + + + + +2012-01-23T14:07:04.414487Z +938882c24e0d96cc6cb21c86a3adf880 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1661 + +Makefile.in +file + + + + +2012-01-23T14:07:04.414487Z +b2375808bffea98b332aa577de730c2d +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +10932 + +id3.html +file + + + + +2012-01-23T14:07:04.415487Z +e54ec53be4b0920249167e473a1e6971 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +7411 + +basic.html +file + + + + +2012-01-23T14:07:04.415487Z +fd3d0d3395d8cec9cf24faa3d167136f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4764 + +history.html +file + + + + +2012-01-23T14:07:04.417521Z +d8fc5880fd6f03fbbb15dd9684871b8b +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +78115 + +lame.css +file + + + + +2012-01-23T14:07:04.418520Z +1d0ec1386c0a71000a4aef3705465acd +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +708 + +switchs.html +file + + + + +2012-01-23T14:07:04.420485Z +119972a631a8b32767c6c51948df0b7b +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +48171 + +presets.html +file + + + + +2012-01-23T14:07:04.420485Z +a0208854d5f64409af9c3dd64cab5136 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3036 + +Makefile.am +file + + + + +2012-01-23T14:07:04.420485Z +a3cd86602daeb00d0231e80bbcc4fb5a +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +434 + +index.html +file + + + + +2012-01-23T14:07:04.421487Z +0e8d3902fb498691f1b40b1b6855f5c5 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2162 + +modes.html +file + + + + +2012-01-23T14:07:04.421487Z +7cb207b4a04bf480d99f8c2d2ef1fd20 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2240 + +node6.html +file + + + + +2012-01-23T14:07:04.422497Z +aa0e9d0bce4c5c5314a571df26b50d96 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +6835 + diff --git a/lame-3.97/doc/html/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/doc/html/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/doc/html/.svn/prop-base/basic.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/basic.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/basic.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/contributors.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/contributors.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/contributors.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/examples.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/examples.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/examples.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/history.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/history.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/history.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/id3.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/id3.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/id3.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/index.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/index.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/index.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/lame.css.svn-base b/lame-3.97/doc/html/.svn/prop-base/lame.css.svn-base new file mode 100644 index 0000000..6bb3962 --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/lame.css.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 8 +text/css +END diff --git a/lame-3.97/doc/html/.svn/prop-base/modes.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/modes.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/modes.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/node6.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/node6.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/node6.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/presets.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/presets.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/presets.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/prop-base/switchs.html.svn-base b/lame-3.97/doc/html/.svn/prop-base/switchs.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/doc/html/.svn/prop-base/switchs.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/doc/html/.svn/text-base/Makefile.am.svn-base b/lame-3.97/doc/html/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..503a124 --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,24 @@ +## $Id: Makefile.am,v 1.4 2002/10/15 09:54:04 aleidinger Exp $ + +AUTOMAKE_OPTIONS = foreign ansi2knr + +docdir = $(datadir)/doc +pkgdocdir = $(docdir)/$(PACKAGE) +htmldir = $(docdir)/html +pkghtmldir = $(pkgdocdir)/html + +pkghtml_DATA = \ + basic.html \ + contributors.html \ + examples.html \ + history.html \ + id3.html \ + index.html \ + lame.css \ + modes.html \ + node6.html \ + presets.html \ + switchs.html + +EXTRA_DIST = $(pkghtml_DATA) + diff --git a/lame-3.97/doc/html/.svn/text-base/Makefile.in.svn-base b/lame-3.97/doc/html/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..70eb940 --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,389 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/html +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkghtmldir)" +pkghtmlDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkghtml_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = foreign ansi2knr +docdir = $(datadir)/doc +pkgdocdir = $(docdir)/$(PACKAGE) +htmldir = $(docdir)/html +pkghtmldir = $(pkgdocdir)/html +pkghtml_DATA = \ + basic.html \ + contributors.html \ + examples.html \ + history.html \ + id3.html \ + index.html \ + lame.css \ + modes.html \ + node6.html \ + presets.html \ + switchs.html + +EXTRA_DIST = $(pkghtml_DATA) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/html/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkghtmlDATA: $(pkghtml_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkghtmldir)" || $(mkdir_p) "$(DESTDIR)$(pkghtmldir)" + @list='$(pkghtml_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkghtmlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkghtmldir)/$$f'"; \ + $(pkghtmlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkghtmldir)/$$f"; \ + done + +uninstall-pkghtmlDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkghtml_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkghtmldir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkghtmldir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(pkghtmldir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pkghtmlDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pkghtmlDATA + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-pkghtmlDATA \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-info-am uninstall-pkghtmlDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/doc/html/.svn/text-base/basic.html.svn-base b/lame-3.97/doc/html/.svn/text-base/basic.html.svn-base new file mode 100644 index 0000000..85c0939 --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/basic.html.svn-base @@ -0,0 +1,158 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<HTML> +<HEAD> +<TITLE>Basic command line switch reference + + + + + + + + +

Basic command line switch reference

+
+Only the most usual switches are described here. However those should be sufficient +for the vast majority of users. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
switchparameter
--abraverage bitrate encoding
-bbitrate (8...320)
--decodedecoding only
-f fast mode
-hhigh quality
--help help
-m mmono mode
-VVBR quality setting (0...9)
+
+

+
* --abr n    average + bitrate encoding +
+
+
Turns on encoding with a targeted average bitrate of n kbits, allowing to + use frames of different sizes. The allowed range of n is 8-320, you can use + any integer value within that range. +

+
+
+
+
+
+
* -b n    bitrate +
+
+
+
For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz)
+ n = 32,40,48,56,64,80,96,112,128,160,192,224,256,320
+
+ For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz)
+ n = 8,16,24,32,40,48,56,64,80,96,112,128,144,160
+
+ Default is 128 kbs for MPEG1 and 80 kbs for MPEG2. +

+
+
+
+
+
+
* --decode    decoding + only
+
+
+
Uses LAME for decoding to a WAV file. The input file can be any input type + supported by encoding, including layer I,II,III (MP3). +

+
+
+
+
+
+
* -f    fast mode +
+
+
+
This switch forces the encoder to use a faster encoding mode, but with + a lower quality. +

+
+
+
+
+
+
* -h    high quality +
+
+
+
Use some quality improvements. Encoding will be slower, but the result + will be of higher quality.
+ This switch is always enabled when using VBR. +

+
+
+
+
+
+
* --help    help +
+
+
+
Display a list of all available options. +

+
+
+
+
+
+
* -m m    mono + mode
+
+
+
The input will be encoded as a mono signal. +

+
+
+
+
+
+
* -V 0...9    VBR quality + setting
+
+
+
Enable VBR (Variable BitRate) and specifies the value of VBR quality.
+ default=4
+ 0=highest quality. +
+ + diff --git a/lame-3.97/doc/html/.svn/text-base/contributors.html.svn-base b/lame-3.97/doc/html/.svn/text-base/contributors.html.svn-base new file mode 100644 index 0000000..005b4cf --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/contributors.html.svn-base @@ -0,0 +1,165 @@ + + +Contributors + + + +
+

Contributors

+
+
+

The following people contributed to the LAME development:

+

Lauri Ahonen
+ Sakari Ailus
+ Tero Auvinen
+ Michal Bacik
+ Alex Ballegooy
+ Wilfried Behne
+ Bob Bell
+ Simon Blandford
+ Segher Boessenkool
+ Florian Bome
+ Lionel Bonnet
+ Gabriel Bouvigne
+ Rogério Theodoro de Brito
+ Erik de Castro Lopo
+ David Chandler
+ Michael Cheng
+ John Dahlstrom
+ Goran Dokic
+ James Droppo
+ Sergey Dubov
+ Dominique Duvivier
+ John Edwards
+ Alvaro Martinez Echevarria
+ Joakim Enerstam
+ Albert Faber
+ Nils Faerber
+ Sami Farin
+ Mikhail M. Fedotov
+ Joseph Fourier
+ Jani Frilander
+ Richard Gorton
+ Casper Gripenberg
+ Steffan Haeuser
+ Jeremy Hall
+ Paul Hartman
+ John Hayward-Warburton
+ Peder Hedlund
+ Robert Hegemann
+ Mathew Hendry
+ Magnus Holmgren
+ Ben "Jacobs"
+ Tamito Kajiyama
+ Ti Kan
+ Mo Katz
+ Iwasa Kazmi
+ Ralf Kempkens
+ Frank Klemm
+ Aleksander Korzynski
+ Joachim Kuebart
+ Leonid Kulakov
+ Dmitry Kutsanov
+ Jarmo Laakkonen
+ An van Lam
+ Juha Laukala
+ Greg Lehey
+ Felix von Leitner
+ Rafael Luebbert
+ Macik
+ Lars Magne Ingebrigtsen
+ Scott Manley
+ Vladimir Marek
+ Goran Markovic
+ Sergey A. Maslyakov
+ Chris Matrakidis
+ Greg Maxwell
+ Scott Miller
+ Darin Morrison
+ Tomasz Motylewski
+ Kimmo Mustonen
+ Dan Nelson
+ Anton Oleynikov
+ Mike Oliphant
+ André Osterhues
+ Johannes Overmann
+ Gian-Carlo Pascutto
+ Jan Peman
+ Jan Rafaj
+ Gertjan van Ratingen
+ Miguel Revilla Rodriguez
+ Shawn Riley
+ Tim Ruddick
+ Ingo Saitz
+ Conrad Sanderson
+ Sergey Sapelin
+ William Schelter
+ Justin Schoeman
+ Naoki Shibata
+ Sigbj�rn Skj�ret
+ Nathan Slingerland
+ Patrick De Smet
+ Acy Stapp
+ Mark Stephens
+ Alexander Stumpf
+ Stephane Tavenard
+ Mark Taylor
+ Mikhail Teterin
+ Brad Threatt
+ Takehiro Tominaga
+ Warren Toomey
+ Atro Tossavainen
+ Roel Van Den Berghe
+ Christopher Wise
+ Martin Weghofer
+ William Welch
+ Gerhard Wesp
+ Alfred Weyers
+ Ethan Yeo
+ Chuck Zenkus

+

 

+

Original ISO contributors:

+

Bill Aspromonte
+ Shaun Astarabadi
+ R. Bittner
+ Karlheinz Brandenburg
+ W. Joseph Carter
+ Jack Chang
+ Mike Coleman
+ Johnathan Devine
+ Ernst Eberlein
+ Dan Ellis
+ Peter Farrett
+ Jean-Georges Fritsch
+ Vlad Fruchter
+ Hendrik Fuchs
+ Bernhard Grill
+ Amit Gulati
+ Munsi Haque
+ Chuck Hsiao
+ Toshiyuki Ishino
+ Masahiro Iwadare
+ Earl Jennings
+ James Johnston
+ Leon v.d. Kerkhof
+ Don Lee
+ Mike Li
+ Yu-Tang Lin
+ Soren Neilsen
+ Simao F. Campos Neto
+ Mark Paley
+ Davis Pan
+ Tan Ah Peng
+ Kevin Peterson
+ Juan Pineda
+ Ernst F. Schroeder
+ Peter Siebert
+ Jens Spille
+ John Stewart
+ Sam Stewart
+ Al Tabayoyon
+ Kathy Wang
+ Franz-Otto Witte
+ Douglas Wong

+ + diff --git a/lame-3.97/doc/html/.svn/text-base/examples.html.svn-base b/lame-3.97/doc/html/.svn/text-base/examples.html.svn-base new file mode 100644 index 0000000..ebe5df8 --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/examples.html.svn-base @@ -0,0 +1,44 @@ + + + + + + + + + + Some command line examples + + + +

Some command line examples

+
    +
  • Fixed bit rate 128kbps encoding:
    + lame sample.wav sample.mp3
    +
    +
  • +
  • Fixed bit rate jstereo 128kbps encoding, high quality (recommended):
    + lame -h sample.wav sample.mp3
    +
    +
  • +
  • Average bit rate 112kbps encoding:
    + lame --abr 112 sample.wav sample.mp3
    +
    +
  • +
  • Fast encode, low quality (no psycho-acoustics):
    + lame -f sample.wav sample.mp3
    +
    +
  • +
  • Variable bitrate (use -V n to adjust quality/filesize):
    + lame -h -V 6 sample.wav sample.mp3
    +
    +
  • +
  • Streaming mono 22.05 kHz raw pcm, 24 kbps output:
    + cat inputfile | lame -r -m m -b 24 -s 22.05 -- > output
    +
    +
  • +
  • Streaming mono 44.1 kHz raw pcm, with downsampling to 22.05 kHz:
    + cat inputfile | lame -r -m m -b 24 --resample 22.05 -- > output
  • +
+ + diff --git a/lame-3.97/doc/html/.svn/text-base/history.html.svn-base b/lame-3.97/doc/html/.svn/text-base/history.html.svn-base new file mode 100644 index 0000000..0283d0e --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/history.html.svn-base @@ -0,0 +1,1513 @@ + + + + + + +LAME Changelog + + +
+

History

+
+Starting with LAME 3.0:
+red = features and bug fixes which affect quality +
+blue = features and bug fixes which affect speed +
+black = usability, portability, other +
+

LAME 3.97   September 24 2006

+
    +
  • 3.97 beta 3 becomes 3.97 +
  • +
+
+

LAME 3.97 beta 3   August 19 2006

+
    +
  • Gabriel Bouvigne: +
      +
    • Workaround against a short blocks detection issue
    • +
    +
  • +
+
+

LAME 3.97 beta 2   November 26 2005

+
    +
  • Gabriel Bouvigne: +
      +
    • Fixed an initialization error when input is not using a standard sampling frequency
    • +
    • Fixed a possible assertion failure in very low bitrate encoding
    • +
    • Slight change regarding ATH adjustment with V5
    • +
    • Reinstated bit reservoir for 320kbps CBR
    • +
    • ReplayGain analysis should now be faster when encountering silent parts
    • +
    +
  • +
  • Takehiro Tominaga: +
      +
    • Fixed a possible link problem of assembly code
    • +
    +
  • +
+
+

LAME 3.97 beta 1   September 12 2005

+
    +
  • Takehiro Tominaga: +
      +
    • Fixed an out of array access in mp3rtp +
    • Fixed a quality setting in DLL
    • +
    • Fixed display when using --silent
    • +
    +
  • +
  • Vitaly Ivanov: +
      +
    • Updated DirectShow interface
    • +
    +
  • +
  • Robert Hegemann: +
      +
    • Fixed an out of array access
    • +
    • Fixed some small rounding problem in vbr-new quantization routines
    • +
    • Fixed a bug in vbr-new regarding high frequencies (sfb21) when using -Y
    • +
    • Fixed a few bugs in vbr-new when using -Y
    • +
    • Updated scalefactors allocation scheme in vbr-new
    • +
    • Fixed mingw32 configure problems
    • +
    • Resolved some compiler warnings
    • +
    • Updated command-line visualisation
    • +
    +
  • +
  • Gabriel Bouvigne: +
      +
    • Changed some FLOAT8 to FLOAT
    • +
    • Added project files for VC7
    • +
    • Reworked -q1 and -q0
    • +
    • Updated presets
    • +
    • Fixed an error in ISO quantization on systems not using the IEEE754 hack
    • +
    • Faster quantization
    • +
    • SSE version of init_xrpow
    • +
    +
  • +
  • Rog�rio Brito: +
      +
    • Updated Debian packaging
    • +
    • Documentation work
    • +
    +
  • +
  • Chris Miller: +
      +
    • Support for x64 platform SDK in makefile.msvc
    • +
    +
  • +
+
+

LAME 3.96.1    July 25 2004

+
    +
  • Robert Hegemann: +
      +
    • Fixed a rare bug in vbr-new (could lead to crashes or data corruption)
    • +
    +
  • +
  • Gabriel Bouvigne: +
      +
    • some fixes in ACM codec
    • +
    • fixed padding when encoding to 320kbps
    • +
    • fixed block size selection for mid and side channels
    • +
    +
  • +
+
+

LAME 3.96    April 11 2004

+
    +
  • Gabriel Bouvigne: +
      +
    • new quantization selection mode (used in ABR/CBR)
    • +
    • set sfscale for ABR/CBR up to 160kbps
    • +
    +
  • +
+
+

LAME 3.96 beta 2    March 28 2004

+
    +
  • Takehiro Tominaga: +
      +
    • removed unnecessary integer convertion in resampling
    • +
  • +
  • Robert Hegemann: +
      +
    • reworked scalefactor allocation in vbr-new
    • +
    • fixed a freeformat decoding problem
    • +
    +
  • Gabriel Bouvigne: +
      +
    • updated minimal bitrate for V1 and V2
    • +
    +
  • +
  • Aleksander Korzynski: +
      +
    • added ability to disable ReplayGain analysis
    • +
    +
  • +
+
+

LAME 3.96 beta    March 7 2004

+
    +
  • Takehiro Tominaga: +
      +
    • fixed decoding issue
    • +
  • +
  • Aleksander Korzynski: +
      +
    • changed internal ReplayGain handling
    • +
    • fixed some issues when ReplayGain is used with resampling
    • +
    +
  • +
  • Robert Hegemann: +
      +
    • added standard ISO quantization for vbr-new, used at lower quality settings
    • +
    • faster count_bits for vbr-new
    • +
    • faster find_scalefac_ave function for vbr-new
    • +
    • fixed an out of array access in psychoacoustic models; + this bug could make some psy calculations worthless and sometimes let lame crash
    • +
    • fixed an error on silent scalefactor bands; + this bug resulted in huffman data overrun problems while decoding, + resulting in audible glitches
    • +
    • fixed a freeformat decoding bug
    • +
    +
  • Gabriel Bouvigne: +
      +
    • adjusted short block thresholds
    • +
    • fixed some array addressing bugs
    • +
    • made ReplayGain analysis reentrant
    • +
    +
  • +
  • David Chandler: fixed a crash in quantize_xrpow +
  • +
  • Michal Bacik: fixed a crash when using 8kHz +
  • +
  • Goran Markovic: fixed some decoding bugs +
  • +
  • John Edwards: fixed a too small buffer in ReplayGain code
  • +
+
+

LAME 3.95.1    January 12 2004

+
    +
  • Gabriel Bouvigne: +
      +
    • fixed a crash when using vbr-new
    • +
    • changed ReplayGain reference level to 89dB
    • +
  • +
+
+

LAME 3.95    January 11 2004

+
    +
  • Gabriel Bouvigne: +
      +
    • fixed lowpass values when using vbr with mono files
    • +
    • faster quantization loops
    • +
    • faster count_bits
    • +
    • fixed a buffer requirement error in ACM codec
    • +
  • +
  • Takehiro TOMINAGA: +
      +
    • fixed mpglib and other decoding support code to prevent the crash when invalid mp3 input
    • +
  • +
  • removed Layer I decoding support
  • +
  • use FastLog and IEEE 754 hack on PowerPC too (approx. 10 percent faster)
  • +
+
+

LAME 3.94 beta December 15 2003

+
    +
  • Takehiro Tominaga: +
      +
    • fixed block switching of nspsytune
    • +
    • best huffman divide in the inner loop. + This should improve the quality, but PAINFULLY slow. So it is not enabled + by default. Use -q0 to use it.
    • +
    • Changed -q option mapping. "-q2" until version 3.93 is now "-q3".
    • +
    • saving bits by better scalefactor storing
    • +
    • removed Vorbis support
    • +
    • substep quantization.This should help breaking + the SFB21 bloating problem
    • +
    • made psychoacoustic model aware of ATH adjustements
    • +
    • use ATH value as short block masking lower limit
    • +
    • several fixes in psychoacoustic model
    • +
    • more robust decoding
    • +
  • +
  • Mark Taylor / Gabriel Bouvigne: fixed issues in VBR header
  • +
  • Mark Taylor: workaround against some hardware decoder defficiencies
  • +
  • Aleksander Korzynski: ability to compute the "Radio" ReplayGain and detect clipping + on the fly. The ReplayGain value is stored in the Lame tag.
  • +
  • Gabriel Bouvigne: +
      +
    • work on presets
    • +
    • use presets by default for cbr/abr
    • +
    • use presets by default for vbr
    • +
    • analog silence detection in partitionned sfb21
    • +
    • do not compute noise in upper 0 part of the spectrum
    • +
    • only compute noise in modified scalefactor bands
    • +
  • +
  • Guillaume Lessard: +
      +
    • nogap related changes
    • +
  • +
  • Alexander Leidinger: +
      +
    • prevent closing the input fd prematurely if the input is a named pipe
    • +
  • +
+
+

LAME 3.93.1    December 1 2002

+
    +
  • Gabriel Bouvigne: +
      +
    • preset medium added to the dll interface
    • +
    • fix for abr/cbr presets
    • +
    • fix -q0 switch
    • +
    +
  • +
  • Alexander Leidinger: fix link problem on systems where socket() resides + in libsocket
  • +
+
+

LAME 3.93    November 16 2002

+
    +
  • Takehiro Tominaga: +
      +
    • bit allocation for pre-echo control improved for + single channel encodings
    • +
    • substep noise shaping
    • +
    • optimizations by changing data structure
    • +
    • noise shaping model 2 fix
    • +
    • nspsytune FIR filter clean up
    • +
    • fix small psymodel bugs(DC current estimation, + preecho detection of non-VBR mode, and nspsymode initialization)
    • +
    • portability fixes for Tru64 UNIX
    • +
    +
  • +
  • Albert Faber: some fixes in the DLL
  • +
  • Simon Blandford: fixes for channel scaling in mono mode
  • +
  • Dominique Duvivier: some optimizations and a faster + log10 function
  • +
  • Mark Taylor: +
      +
    • some tag related fixes in the direct show filter and in the ACM codec
    • +
    • fixed a mono encoding bug found by Justin Schoeman
    • +
    • calc_noise bug fix
    • +
    • other fixes
    • +
    +
  • +
  • Alexander Leidinger: +
      +
    • update to autoconf 2.53, rewrite some configure tests
    • +
    • Akos Maroy: determine gcc version even with gcc 3.1
    • +
    • Andrew Bachmann: compile shared libs on BeOS (and perhaps other arches)
    • +
    • ultrasparc switches for gcc 3.1
    • +
    • fixes for SunOS 4.x
    • +
    • fixes for 64bit arches
    • +
    • CFLAGS fix for IRIX
    • +
    • don't override CFLAGS if exptopt isn't requested
    • +
    +
  • +
  • Robert Hegeman: +
      +
    • some fixes
    • +
    • some fixes for VBR
    • +
    +
  • +
  • Gabriel Bouvigne: +
      +
    • --noasm switch. Might help Cyrix/Via users
    • +
    • presets and alt-presets merged
    • +
    +
  • +
+
+

LAME 3.92    April 14 2002

+
    +
  • Alexander Leidinger:  add non linear psymodel + (compile time option, disabled by default), workaround a bug in gcc + 3.0.3 (compiler options, based upon suggestions from various people, see archives + and changelog for more)
  • +
  • Steve Lhomme:  ACM wrapper (MS-Windows codec)
  • +
  • Steve Lhomme:  less memory copying on stereo + (interleaved) input
  • +
  • Takehiro Tominaga: Inter-channel masking, enables + with --interch x option
  • +
  • For buggy versions of gcc compiler (2.96*), back off on some of the advanced + compiler options
    +
  • +
+
+

LAME 3.91    December 29 2001

+
    +
  • Darin Morrison:  Bugfix for --alt-preset (for + content with low volume, clean vocals), only important for the "fast standard" + preset +
  • +
  • Alexander Leidinger: +
      +
    • add some missing files to the distribution
    • +
    • add --alt-preset to the man page
    • +
    +
  • +
+
+

LAME 3.90    December 21 2001

+
    +
  • Many small improvements and bug fixes not added to + history
  • +
  • John Dahlstrom:  more fine tuning on the auto + adjustment of the ATH
  • +
  • Robert Hegemann:  small speed and quality improvements + for the old VBR code (--vbr-old).
  • +
  • Robert Hegemann:  some short block bug fixes +
  • +
  • Robert Hegemann:  Big improvements to --vbr-mtrh, + now encodes much more frequencies over 16khz
  • +
  • Robert Hegemann:  --vbr-new code disabled (outdated + and lower quality) and replaced with --vbr-mtrh (Both --vbr-new and --vbr-mtrh + now default to mtrh)
  • +
  • Robert Hegemann:  reordering of --longhelp to give more information, + --extrahelp dropped
  • +
  • Darin Morrison:  Totally revamped and extremely high quality unified + preset system and other general quality improvements now available with --alt-presets: +
      +
    • some improvements to psychoacoustics (vast improvements + over default L.A.M.E. modes) when --alt-preset is used including:
    • +
        +
      • Improved tuning of short block usage.
      • +
      • Improved quantization selection usage (the + -X modes), now adapts between appropriate modes on the fly. Also helps + on "dropout" problems and with pre-echo cases.
      • +
      • Improved joint stereo usage. Thresholds are + better tuned now and fix some "dropout" problems L.A.M.E. suffers from + on clips like serioustrouble.
      • +
      • Improved noise shaping usage. Now switches + between noise shaping modes on the fly (toggles -Z on and off when appropriate) + which allows lower bitrates but without the quality compromise.
      • +
      • Clips vastly improved over default L.A.M.E. + modes (vbr/cbr/abr, including --r3mix): castanets, florida_seq, death2, + fatboy, spahm, gbtinc, ravebase, short, florida_seq, hihat, bassdrum, + 2nd_vent_clip, serioustrouble, bloodline, and others. No degraded clips + known.
      • +
      • VBR bitrates are now more "stable" with less fluctuation -- not dipping + too low on some music and not increasing too high unnecessarily on other + music. "--alt-preset standard" provides bitrates roughly within the + range of 180-220kbps, often averaging close to 192kbps.
      • +
      +
    • --alt-presets replace the --dm-presets and "metal" preset is removed + and replaced with generic abr and cbr presets.
    • +
    • --alt-preset extreme (note the 'e') replaces xtreme to help eliminate + some confusion
    • +
    • --alt-preset vbr modes now have a fast option which offers almost no + compromise in speed.
    • +
    • --alt-preset standard (and "fast standard") are now much lower in bitrate, + matching --r3mix with an overall average, though offering higher quality + especially on difficult test samples.
    • +
    • --alt-presets are no longer just "presets" as in a collection of switches, + instead they are now quality "modes" because of special code level tunings + (those mentioned above).
    • +
    • Use --alt-preset help for more information.
    • +
    +
  • +
  • Roel VdB: more tuning on the --r3mix preset
  • +
  • Jon Dee, Roel VdB:  INFO tag
  • +
  • Alexander Leidinger, mp3gain@hotmail.com:  added --scale-l and --scale-r + to scale stereo channels independantly
  • +
  • Takehiro Tominaga:  new noise shaping mode, offering + more "cutting edge" shaping according to masking, enabled via -q0
  • +
  • Mark Taylor:  More work on --nogap
  • +
  • Gabriel Bouvigne:  Small changes to abr code for more accurate final + bitrate
  • +
  • Gabriel Bouvigne, mp3gain@hotmail.com:  Preliminary ReplayGain analysis code added (not functional + yet)
  • +
  • Gabriel Bouvigne, Alexander Leidinger:  Documentation updates
  • +
  • John Dahlstrom, DSPguru@math.com:  floating point interface function + in the Windows DLL
  • +
+
+

LAME 3.89beta   July 5 2001

+
    +
  • John Stewart:  long filename support for Win9x/NT.
  • +
  • Takehiro Tominaga:  LAME can calculate the CRC of VBR header, so now + "lame -pv" works fine.
  • +
  • Robert Hegemann:  Improvements of the new VBR + code (--vbr-mtrh).
  • +
  • Robert Hegemann: New VBR code (--vbr-mtrh) is now + defaulted to get more feedback. The VBR speed is now on par with CBR. We will + use the old VBR code in the release.
  • +
  • Gabriel Bouvigne: Change of the maximum frame size + limit. LAME should now be more friendly with hardware players.
  • +
  • Gabriel Bouvigne: Size of VBR is now more balanced according to the -V value.
  • +
  • Alexander Leidinger: Finished the implementation of the set/get functions.
  • +
  • John Dahlstrom: LAME now handles 24bits input
  • +
  • Mark Taylor: bugs in lame --decode causing truncation of mp3 file fixed
  • +
  • Mark Taylor: preliminary --nogap support
  • +
  • "Final" API completed: shared library safe!  This API is frozen and + should be backwords compatiable with future versions of libmp3lame.so, but + we will continue to add new functionality.  
    +
  • +
+

LAME 3.88beta   March 25 2001

+
    +
  • A lot of work that was never added to the History!
  • +
  • Frank Klemm and Gabriel Bouvigne:  New ATH formula.  + Big improvement for high bitrate encodings.
  • +
  • Takehiro Tominaga: Temporal masking
  • +
  • Gabriel Bouvigne/Mark Taylor: auto adjustment of + ATH
  • +
  • Robert Hegemann:  Better outer_loop stopping + criterion.  Enabled with -q2 or better.
  • +
  • Robert Hegemann/Naoki Shibata:  slow/carefull + noise shaping.  -q3..9:  amplify all distorted bands.  -q2: + amplify distorted bands within 50%.  -q1-0:  amplify only most distorted + band at each iteration.
  • +
  • Takehiro Tominaga: Interframe, shortblock temporal + masking.
  • +
  • Takehiro Tominaga:  LAME restructured into a shared library and front + end application.  Slight changes to the API. More changes are coming + to turn LAME into a true shared library (right now you have to recompile if + you upgrade the library :-(
  • +
  • Naoki Shibata:
  • +
      +
    • improvements to psychoacoustics (--nspsytune)
    • +
    • BUG in long block pre echo control fixed + (some out of range array access in M/S psychoacoustics)
    • +
    +
  • Ralf Kempkens:    Visual Basic Script + for lame, suggested to put it on your Windows Desktop and you can drag'n'drop + Waves to encode on it.
  • +
  • Alexander Stumpf:    improved lame.bat + for 4Dos users
  • +
  • Mark Taylor: Several bugs fixed in the resampling + code.
  • +
  • Frank Klemm, Robert Hegemann:    added + assembler code for CPU feature detection on runtime (MMX, 3DNow, SIMD)
  • +
  • Takehiro Tominaga: 3DNow FFT code.
  • +
  • Florian Bome, Alexander Leidinger:    + more work on configure stuff
  • +
  • Alexander Leidinger:   automake/libtool + generated Makefiles and TONS of other work.
  • +
  • Alexander Leidinger:   Much work towards + shared library style API.
  • +
  • Anonymous: New more efficient RTP code.
  • +
  • Mark Taylor: psycho-acoustic data now computed for + all scalefactor bands (up to 24 kHz)
  • +
  • Mark Taylor, Takehiro Tominaga: All ISO table data + replaced by formulas - should improve MPEG2.5 results for which we never had + correct table data.
  • +
+

LAME 3.87alpha  September 25 2000

+
    +
  • Mark Taylor:  Bug fixed in LAME/mpglib error recovery when encountering + a corrupt  MP3 frame during *decoding*.
  • +
  • Albert Faber:  added LayerI+II decoding support
  • +
  • Frank Klemm:  added improved CRC calculation
  • +
  • Frank Klemm: substantial code cleanup/improvements
  • +
  • Robert Hegemann:  Bug fixes
  • +
      +
    • in huffman_init, could lead to segmentation + faults (only in rare cases, most likely at lower sample rates)
    • +
    • M/S switching at lower sample rates (the + fact there is no 2nd granule was ignored)
    • +
    +
  • Robert Hegemann:  speed up in  VBR
  • +
  • Jarmo Laakkonen:  Amiga/GCC settings for Makefile.unix.
  • +
  • Magnus Holmgren:  README and Makefile for (free) Borland C++  + compiler. Will also compile lame_enc.dll, but this is untested.
  • +
  • Florian Bome:   LAME finally has a  ./configure script!!
  • +
+

LAME 3.86beta  August 6 2000

+
    +
  • Christopher Wise:  A makefile for DJGPP, the DOS version of gcc.  + Now most windows users should be able to compile LAME with minimal effort.
  • +
  • Robert Hegemann:  old VBR:   fixed + some bugs and Takehiro's scalefac_scale feature (not yet on by  default.)  + older LAME versions did not allow to spent more than 2500 bits of 4095 possible + bits to a granule per channel, now fixed.
  • +
  • Robert Hegemann:  new VBR:   analog silence treatment like + in old VBR
  • +
  • William Welch:  Improved options for Linux/Alpha gcc and ccc compilers + in Makefile.
  • +
  • Mathew Hendry:  setting appropriate CRC bit for additional Xing-VBR + tagging frame
  • +
  • Don Melton:  added ID3 version 2 TAG support
  • +
  • John Dahlstrom: fixed bug allowing timing information + (for status in command line encoder) to overflow.
  • +
  • Tamito KAJIYAMA, Fixed several bugs in the LAME/Vorbis + interface.
  • +
  • Mark Taylor:  lame --decode will recognize Album + ID tags
  • +
  • Naoki Shibata:  Additive masking and other improvements + to psycho acoustics.  (not yet on by default)
  • +
+

LAME 3.85beta   July 3 2000

+
    +
  • Takehiro Tominaga:  mid/side stereo demasking + thresholds updated.
  • +
  • Takehiro Tominaga: New short block MDCT coefficient data structure.  + Should allow for future speed improvements.
  • +
  • Robert Hegemann:  fixed bug in old VBR routine, the --noath mode messed + up the VBR routine resulting in very large files
  • +
  • Robert Hegemann: found bugs in some sections when using 32 bit floating + point.  Default is now back to 64bit floating point.
  • +
  • Takehiro Tominaga:  Modified PE formula to use + ATH.
  • +
  • S.T.L.:  README.DJGPP - instructions for compiling + LAME with DJGPP, the dos version of gcc.
  • +
+

LAME 3.84beta  June 30  2000

+
    +
  • Mark Weinstein:  .wav file output (with --decode option) was writing + the wrong filesize in the .wav file.  Now fixed.
  • +
  • Mark Taylor:  (optional) Vorbis support, both encoding and decoding.  + LAME can now produce .ogg files, or even re-encode your entire .ogg collection + into mp3.   (Just kidding: it is always a bad idea to convert from + one lossy format to another)
  • +
  • ?: Bug fixed causing VBR to crash under windows.   (pretab[] + array overflow)
  • +
  • Sergey Sapelin: Another bug found in the mpg123 MPEG2 tables.  Now + fixed for the mpg123 based decoder in LAME.
  • +
  • Marco Remondini:  VBR histogram works in win32.  compile with + -DBRHIST -DNOTERMCAP
  • +
  • Takehiro Tominaga:  LAME CBR will now use scalefac_scale + to expand the dynamic range of the scalefactors.
  • +
  • Iwasa Kazmi:  Library improvements:  exit()'s, + printf, fprintf's are being replaced by interceptable macros.
  • +
+

LAME 3.83beta  May 19  2000

+
    +
  • Mark Taylor:  Bug in buffering routines:  + in some cases, could cause MDCT  to read past end of buffer.  Rare + in MPEG2, even more rare for MPEG1, but potentially serious!
  • +
  • Mark Taylor:  MDCT/polyphase filterbank was not being "primed" properly.  + Does not effect output unless you set the encoder delay lower than the default + of 576 samples.
  • +
  • Mark Taylor:  "vdbj" and "Caster"  found + several VBR bugs (now fixed):   1.  Analog silence detection + only checked frequencies up to 16 kHz.  2.  VBR mode could still + somehow avoid -F mode.  3.  VBR mode would ignore noise above 16 + kHz (scalefactor band 22), Now calc_noise1 will compute the noise in this + band when in VBR mode.  Not calculated in CBR  mode since CBR algorithm + has no way of using this information.
  • +
  • Mark Taylor:  scalefactor band 22 info (masking(=ATH),  noise + and energy) now displayed in frame analyzer.
  • +
  • VBR code ATH tuning was disabled by accident in 3.81, + now fixed.
  • +
  • Mark Taylor:  lame --decode will produce .wav + files.  (oops - size is off by a factor of 4)
  • +
+

LAME 3.82beta   May 11 2000

+
    +
  • Robert Hegemann:  Fixed bug in high bitrate joint stereo encodings.
  • +
  • Naoki Shibata:  new long block MDCT routine
  • +
+

LAME 3.81beta  May 8 2000

+
    +
  • all ISO code removed!
  • +
  • Takehiro Tominaga and Naoki Shibata:  new window + subband routines.
  • +
  • Naoki Shibata:  Bug fix in mpglib (decoding) + lib:  in some cases, MDCT coefficients from previous granule was incorrectly + used for the next granule.
  • +
  • ISO 7680 bit buffer limitation removed.  It + can be reactivated with "--strictly-enforce-ISO"  Please report any trouble + with high bitrates.
  • +
+

LAME 3.80beta  May 6 2000

+
    +
  • Takehiro Tominaga:  more efficient and faster + huffman encoding!
  • +
  • Takehiro Tominaga and Mark Taylor:  much improved + short block compression!
  • +
  • Tomasz Motylewski and Mark Taylor:  MPEG2.5 + now supported!
  • +
  • Mark Taylor: incorporated Takehiro's bitstream.c!  + bitstream.c used by default, but old ISO bitstream code can also be used.
  • +
  • Scott  Manley and Mark Taylor:  good resampling + routine finaly in LAME.  uses a 19 point FIR filter with Blackman window.  + Very slow for non integer resampling ratios.
  • +
  • Iwasa Kazmi:  fixed SIGBUS error:  VBR + and id3 tags were using data after it was free()'d.
  • +
  • Robert Hegemann:  Improved VBR tuning.  + #define RH_QUALITY_CONTROL and #RH_SIDE_VBR now the defaults.
  • +
  • Robert Hegemann:   LAME version string + now added to ancillary data.
  • +
  • Kimmo Mustonen:  VBR histogram support for Amiga.
  • +
  • Casper Gripenberg:  VBR stats (but not histogram) for DOS verson.
  • +
  • Robert Hegemann:  rare VBR overflow bug fixed.
  • +
  • Zack:  -F option strictly enforces the VBR min bitrate.  Without + -F, LAME will ignore the minimum bitrate when encoding analog silence.
  • +
  • Shawn Riley:  User can now specify a compression ratio (--comp <arg>) + instead of a bit rate.  Default settings based on a compression ratio + of 11.0
  • +
  • Mark Taylor:  free format bitstreams can be created with --freeformat, + and specify any integer bitrate from 8 to 320kbs with -b.
  • +
  • Mark Taylor: lame be used as a decoder (output raw pcm only):  lame + --decode input.mp3 output.pcm
  • +
+

LAME 3.70   April 6 2000

+
    +
  • "LAME 3.69beta" becomes LAME 3.70 "stable"
  • +
+

LAME 3.69beta   April 6 2000

+
    +
  • "spahm":  default mode selection bug fixed.  In some cases, lame + was defaulting to regular stereo instead of jstereo when the user did not + specify a mode.
  • +
+

LAME 3.68beta  April 4 2000

+
    +
  • Mark Taylor: mono encoding bug in DLL fixed.
  • +
  • Ingo Saitz: bug in --cwlimit argument parsing fixed.
  • +
  • Scott Manly: bug in 4-point resample code fixed.
  • +
+

LAME 3.67beta  March 27 2000

+
    +
  • Robert Hegemann:  jstereo now enabled for MPEG2 + encodings
  • +
  • Mark Taylor: old M/S stereo mode which used L/R maskings has been removed.
  • +
  • Mark Taylor: Xing MPEG2 VBR headers now working.
  • +
  • Mark Taylor:  When quantized coefficients are + all 0 in a band, set scalefactors to 0 also to save a few bits.
  • +
  • Ingo Saitz:  Problems with framesize calculation + when using -f fast-math option fixed.
  • +
+

LAME 3.66beta March 21 2000

+
    +
  • Bug fixes in BladeEnc DLL, possible click in last mp3 frame, VBR historgram + display, byteswapping option, ASM quantize routines work for both float and + double.
  • +
+

LAME 3.65beta   March 17 2000

+
    +
  • Enabled ASM version of quantize_xrpow() - accidently disabled in lame3.64.
  • +
+

LAME 3.64beta  March 16 2000

+
    +
  • Don Melton:  id3v1.1 tags & id3 bugfixes
  • +
  • Gabriel Bouvigne:  L/R matching block type fix
  • +
  • Bug fixed which was allowing quantized values to + exceed the maximum when not using -h
  • +
  • Mark Taylor: Fitlers based on polyphase filterbank.  + should be slightly better since the responce is independent of the blocktype, + and they are slightly faster.
  • +
  • Mark Taylor: API:  the API changed slightly - and this should be the + final version. There is a new routine: lame_encode_buffer() which takes an + arbritray sized input buffer, resamples & filters if necessary, encodes, + and returns the mp3buffer.  There are also several new #defines, so it + is possible to compile a simple encoding library with no decoding or file + I/O or command line parsing.  see the file API for details.
  • +
  • Mark Taylor: MSVC stuff:  lame.exe (with and without the frame analyzer) + and the CDex lame_enc.dll
  • +
    + should compile under MSVC.  The MSVC5 project files may need some tweaking.  + In particular,
    + you need to make sure LAMEPARSE, LAMESNDFILE and HAVEMPGLIB
    + are defined.  (and HAVEGTK for the GTK stuff). +
+

LAME 3.63beta  February 20  2000

+
    +
  • Robert Hegemann:  FPE with -h fixed?
  • +
  • Mathey Hendry:  FPE error catching for Cygwin, FPE fix for vbr mode + and output to /dev/null
  • +
  • Jeremy Hall:  Fixed problems with input files where the number of + samples is not known.
  • +
  • Mathew Hendry:  ASM quantize_xrpow() for GNU + i386
  • +
  • Wilfried Behne  quantize_xrpow ()for PowerPC + and non-ASM
  • +
  • Takehiro Tominaga:  GOGO FFTs  (not yet + used?)
  • +
    +   +
+

LAME 3.62beta   February 9 2000

+
    +
  • Iwasa Kazmi:  frame analyzer short block display + of single subblocks (press 1,2  or 3)
  • +
  • Ingo Saitz:  --help option added, with output + to stdout
  • +
  • Alfred Weyers: short block AAC spreading function + bug fixed
  • +
  • Takehiro Tominaga:  new scalefac data structure + - improves performance!
  • +
  • Lionel Bonnet:  Bug fixed in MPEG2 scalefactor + routine: scalefactors were being severly limited.
  • +
  • Takehiro Tominaga:  faster FFT routines from.  + These routines are also compatible with the GOGO routines, in case someone + is interested in porting them back to LAME.
  • +
  • Sigbjørn Skjæret, Takehiro Tominaga:  + faster pow() code.
  • +
  • Joachim Kuebart:  Found some unitialized variables + that were effecting quality for encodings which did not use the -h option + (now fixed).
  • +
  • Mark Taylor: More modularization work.   It is now possible to + use LAME as a library where you can set the encoding parameters directly and + do your own file i/o.   The calling program is now it's own mp3 + output.  For an example of the LAME API, see main.c, or mp3rtp.c or mp3x.c.  + These can all be compiled as stand alone programs which link with libmp3lame.a.
  • +
  • Felix vos Leitner:  mp3rtp fixes.  mp3rtp is a standalone program + which will encode and stream with RTP.
  • +
  • Robert Hegemann:  Information written to stderr displaying exactly + which type of lowpass filter (if any) is being used.
  • +
  • Iwasa Kazmi:  mpglib (the mpg123 decoder) scsfi decoding fixes.
  • +
  • Takehiro Tominaga:  More mpglib scsfi decoding fixes.
  • +
+

LAME 3.61beta  January 14 2000

+
    +
  • Mark Taylor: Fixed bug with lowpass filters when + using VBR with a 64kbs or lower min bitrate setting.
  • +
  • Takehiro Tominaga:  more efficient huffman encoding + splitting.
  • +
+

LAME 3.60beta   January 9 2000

+
    +
  • Mark Taylor: Distribution now comes with self test.  Needs work to + be automated, see 'make test' in Makefile.
  • +
  • Mark Taylor: AAC spreading function now the default
  • +
  • Gabriel Bouvigne: updated HTML docs
  • +
  • Felix von Leitner: compute correct file length from Xing header (if present) + when input file is a mp3 file
  • +
  • Felix von Leitner: mp3rtp (standalone) program now included.  Not + yet tested.  mp3rtp ip:port:ttl  <infile>   /dev/null + will stream directly to ip:port using  RTP.
  • +
    +   +
+

LAME 3.59beta  January 4 2000

+
    +
  • Takehiro Tominaga:  --noath option.  Disables ATH maskings.
  • +
  • Gabriel Bouvigne:  updated HTML docs.
  • +
  • Iwasa Kazmi:  makefile fixes
  • +
  • Mark Taylor:  Fixed bug where first frame of data was always overwritten + with 0's.  Thanks to 'gol'
  • +
  • Mark Taylor:  bug fixes in mid/side masking + ratios (thanks to Menno Bakker)
  • +
  • Mark Taylor:  replaced norm_l, norm_s table data with formulas.
  • +
+

LAME 3.58beta  December 13 1999

+
    +
  • Segher Boessenkool:  More accurate quantization + procedure!  Enabled with -h.
  • +
  • Mathew Hendry, Acy Stapp and Takehiro Tominaga: ASM + optimizations for quantize_xrpow and quantize_xrpow_ISO.
  • +
  • Chuck Zenkus:  "encoder inside" logo on web page
  • +
  • Mark Taylor:   a couple people have asked for this.   + Allow LAME to overide VBR_min_bitrate if analog_silence detected.   + Analog_silence defined a la Robert:   energy  < ATH.
  • +
  • An Van Lam: Valid bitrates were being printed for layer 2, not layer 3!
  • +
  • Ethan Yeo:  Makefile.MSVC updated
  • +
  • Mark Stephens:  updated all MSVC project files
  • +
  • Robert Hegemann:  lowpass and highpass filters can be enabled with + --lowpass, --highpass
  • +
  • Mark Taylor:  MS switching is now smoother: + ms_ratio average over 4 granules
  • +
  • Takehiro Tominaga:  Scalefactor pre-emphasis + fixed (and now turned back on)
  • +
  • Takehiro Tominaga:  Bug in M/S maskings:  + switch to turn on stereo demasking code was buggy.
  • +
+

LAME 3.57beta  November 22 1999

+
    +
  • Sigbjørn Skjæret, patch to allow encoding from 8bit input + files when using LIBSNDFILE
  • +
  • Mark Taylor: Automatic downsampling to nearest valid samplerate.
  • +
  • Mark Taylor: Scalefactor bands demarked on MDCT plot in frameanalyzer
  • +
  • Mark Taylor: Scalefactor preemphasis disabled for now.   The + algorithm was often doing more harm than good.
  • +
+

LAME 3.56beta  November 19 1999

+
    +
  • Kimmo Mustonen: portabilty code cleanup.
  • +
  • Vladimir Marek: id3 genre patch.
  • +
  • Conrad Sanderson: new applypatch script.
  • +
  • Mark Taylor: Initial window type now "STOP_TYPE" to reduce initial attenuation.  + This is needed because the new encoder delay is so short.  With a NORM_TYPE, + the first 240 samples would be attenuated.
  • +
  • Mark Taylor: Padding at end of file now adjusted (hopefully!) to produce + as little padding as possible while still guarantee all input samples are + encoded.
  • +
  • Takehiro Tominaga:  Reduced shortblock extra + bit allocation formulas by 10% since new huffman coding is at least 10% more + efficient.
  • +
+

LAME 3.55beta  November 11 1999

+
    +
  • Albert Faber:  updated BladeEnc.dll
  • +
  • Mark Taylor: Simple lowpass filter added to linear downsampling routine.
  • +
  • Nils Faerber: updated man page.
  • +
  • Mark Taylor: All floating point variables are delcared FLOAT or  FLOAT8.  + Change the definition of FLOAT8 in machine.h to run at 32bit preceision.
  • +
  • Mark Taylor: Bug (introduced in 3.54beta) in stereo->mono downsampling + fixed.
  • +
+

LAME 3.54beta  November 8 1999

+
    +
  • Mark Taylor: Encoder delay is now 48 samples.  Can be adjusted to + 1160 to sync with FhG (see ENCDELAY in encoder.h)  This is kind of amazing, + since if Takehiro put his MDCT/filterbank routine in a decoder, we could have + a total  delay of only 96 samples.
  • +
  • Mark Taylor: More inconstancies found and fixed in + MPEG2 tables.
  • +
  • Mark Taylor: Resampling from an MP3 input file now works.  But we + still dont have a lowpass filter so dont expect good results.
  • +
+

LAME 3.53beta  November 8 1999

+
    +
  • Takehiro Tominaga:  Fixed MPEG2 problem in new + MDCT routines.  Takehiro's combined filterbank/MDCT routine is now the + default.  Removes all buffering from psymodel.c and the filterbanks/MDCT + routines.
  • +
+

LAME 3.52beta  November 8 1999

+
    +
  • By permission of copyright holders of all GPL code in LAME,  all GPL + code is now released under a modified version of the LGPL (see the README + file)
  • +
  • By popular demand, all C++ comments changed to C style comments
  • +
  • Mark Taylor: Linear resampling now works.  Use --resample to set an + output samplerate different from the input samplerate.  (doesn't seem + to work with mp3 input files, and there is no lowpass filter, so dont expect + good results just yet)
  • +
  • Takehiro Tominaga:  Faster Huffman encoding + routines
  • +
+The following changes are disabled because of MPEG2 problems.  +But to try them, set MDCTDELAY=48 in encoder.h, instead of MDCTDELAY=528.: +
    +
  • Takehiro Tominaga:  New MDCT routines with shorter + delay (48 samples instead of 528) and even faster than the old routines.
  • +
  • Takehiro Tominaga:  Removed extra buffering + in psymodel.c
  • +
+

LAME 3.51  November 7 1999

+
    +
  • Takehiro Tominaga: Bug in quantize.c absolute threshold of hearing calculation + for non-44.1 kHz input files.
  • +
+

LAME 3.50  November 1 1999

+
    +
  • LAME 3.37beta becomes official LAME 3.50 release
  • +
+

LAME 3.37beta  November 1 1999

+
    +
  • Lionel Bonnet:  Found severe bug in MPEG2 Short + block SNR.
  • +
  • Sergey Sapelin:  VBR Toc improvement.
  • +
  • Sergey Dubov: fskip() routine
  • +
  • Conrad Sanderson: replacement for filterbank.c.   Not much faster + but amazingly simpler.
  • +
+

LAME 3.36beta  October 25 1999

+
    +
  • Albert Faber:  more MSVC and BladeDLL updates
  • +
  • Kimmo Mustonen:  Much code cleanup and Amiga updates
  • +
  • Anton Oleynikov: Borland C updates
  • +
  • Mark Taylor: More stdin fixes:  For some reason, forward fseek()'s + would fail when used on pipes even though it is okay with redirection from + "<". So I changed all the forward fseek()'s to use fread().  This + should improve stdin support for wav/aiff files.  If you know the input + file is raw pcm, you can still use the '-r' option to avoid *all* seeking + of any kind.
  • +
    +   +
+

LAME 3.35beta  October 21 1999

+
    +
  • Leonid Kulakov:  Serious bug in MPEG2 scalefactor + band tables fixed.
  • +
  • Portability patches from:  Anton Oleynikov, Sigbjørn Skjæret, + Mathew Hendry, Richard Gorton
  • +
  • Alfred Weyers: compiler options, updated timestatus.
  • +
  • Albert Faber:  BladeDll and other updates (new machine.h).
  • +
  • Monty:  updated Makefile to fix gcc inline math bug.
  • +
    +   +
+

LAME 3.34beta  October 12 1999

+
    +
  • Mark Taylor: Bug fixed:  minimum bitrate in + VBR mode could be ignored for a few frames.
  • +
  • Mark Taylor: New (minor) VBR tunings.
  • +
  • Tim Ruddick: New wav/aiff header parsing routines.  Better parsing + and fewer fseek()'s.
  • +
  • Anton Oleynikov:  patches to work with Borland C
  • +
  • Gabriel Bouvigne:  Experimental voice option + enabled with --voice
  • +
+

LAME 3.33beta  October 11 1999

+
    +
  • Robert Hegemann: RH VBR mode now the default and + only VBR mode.  The new code will always quantize to 0 distortion and + the quality is increased by reducing the masking from the psy-model.  + -X0 is still the default for now.
  • +
  • Robert Hegemann: new -X5 mode
  • +
  • Mathew Hendry: New timing code, removes the need for HAVETIMES
  • +
  • Mathew Hendry:  assembler quantize_xrpow for + Windows
  • +
  • Iwasa Kazmi:  stdin/stdout patch for Windows
  • +
  • Mark Taylor: New option: "--athonly" will ignore the psy-model output and + use only the absolute threshold of hearing for the masking.
  • +
    +   +
+

LAME 3.32beta  October 8 1999

+
    +
  • Takehiro Tominaga:  faster long block spreading + function convolution for non 44.1 kHz sampling frequencies, and faster short + block spreading function convolution for all sampling frequencies.
  • +
  • Takehiro Tominaga:  Completly rewritten huffman + table selection and count_bits().  More efficient table selection results + in many more bits per frame.
  • +
  • Takehiro Tominaga:  More efficient scalefac + compress setting.
  • +
  • Mike Cheng: new calc_noise2()
  • +
  • Alfred Weyers: patch for timestatus() seconds rollover
  • +
    +   +
+

LAME 3.31beta  September 28 1999

+
    +
  • Albert Faber:  updated his BladeDLL code.  This allows LAME to + be compiled into a BladeEnc compatiable .dll.
  • +
  • Mike Cheng: faster l3psycho_ener() routine.
  • +
  • Sigbjørn Skjæret: more code cleanup.
  • +
+

LAME  3.30beta  September 27 1999

+
    +
  • Conrad Sanderson:  ID3 tag code added (type 'lame' for instructions)
  • +
  • new mdct.c from Mike Cheng (no faster, but much cleaner code)
  • +
  • Mathew Hendry: Microsoft nmake makefile and a couple other changes for + MSVC
  • +
  • More modulization work:  One input sound file interface handles mp3's, + uncompressed audio, with or without LIBSNDFILE.  Fixes (hopefully) a + bunch of file I/O bugs introduced in 3.29 (Mark Taylor)
  • +
  • LAME will now print valid samplerate/bitrate combinations (Mark Taylor)
  • +
  • stdin/stdout fix for OS/2 (Paul Hartman)
  • +
  • For mp3 input files, totalframes estimated based on filesize and first + frame bitrate. (Mark Taylor)
  • +
  • Updated all functions with new style prototypes.  (Sigbjørn + Skjæret)
  • +
    +   +
+

LAME 3.29beta  September 21 1999

+
    +
  • Bug in bigv_bitcount fixed.  Loop.c was overestimating + the number of bits needed, resulting in wasted bits every frame.  (Leonid + A. Kulakov)
  • +
  • Bug in *_choose_table() fixed   These routines + would not sellect the optimal Huffman table in some cases.   (Leonid + A. Kulakov)
  • +
  • Tuning of ATH normalization (macik)
  • +
  • Removed unused variables and fixed function prototypes (Sigbjørn + Skjæret)
  • +
  • Sami Farin sent a  .wav  file that  LAME built in support + choked on.   I added a slightly more sophisticated wav header parsing + to handle this, but if you have trouble, use libsndfile.
  • +
  • Resampling hooks and options added.  Buffering and resampling routines + need to be written.
  • +
  • LAME will now take an mp3 file as input.  When resampling code is + working, LAME will be able to (for example) convert a high bitrate stereo + mp3 to a low bitrate mono mp3 for streaming.
  • +
+

LAME 3.28beta  September 15 1999

+
    +
  • Serious bug fixed in high frequency MDCT coefficients.  + Huffman coding was reversing the order of the count1 block quadruples.   + (Leonid A. Kulakov)
  • +
  • nint() problems under Tru64 unix fixed and preprocessor variable HAVE_NINT + removed.  (Bob Bell)
  • +
  • Compiler warning fixes and code cleanup   (Sigbjørn Skjæret, + Lionel Bonnet)
  • +
  • USAGE file now includes suggestions for downsampling.  For low bitrate + encodings, proper downsampling can give dramatically better results.  + (John Hayward-Warburton)
  • +
+

LAME 3.27beta  September 12 1999

+
    +
  • Several bugs in encode.c and l3bitstream.c fixed by Lionel Bonnet.
  • +
  • Bugs in new VBR (#define RH) formula for mono input file and mid/side encoding + fixed.
  • +
+

LAME 3.26beta  September 10 1999

+
    +
  • The "-m m" option (mono .mp3 file) will automatically mix left and right + channels if the input file is stereo.  (Alfred Weyers)
  • +
  • New quant_compare algorithm (method for deciding + which of two quantizations is better) enabled with -X4 (Greg Maxwell)
  • +
  • New mid/side VBR bit allocation formula.  Mid + channel bits are set by the quality requirements, and then the side channel + uses a reduced number of bits (in a proportion coming from the fixed bitrate + code).  This might not be optimal, but it should be pretty good and no + one knows what the optimal solution should be.  (Greg Maxwell)
  • +
  • New VBR (#define RH) tunings based on detailed listening + tests by Macik and Greg Maxwell.
  • +
  • Sigbjørn Skjæret fixed several compiler warnings (which turned + out to be potential bugs)
  • +
  • Takehiro Tominaga fixed a low bitrate bug in reduce_side()
  • +
  • Alfred Weyers fixed some buffer overflows.
  • +
  • New ATH (absolute threshold of hearing) formula replaces + buggy ISO code, and adds  analog silence treatment  (removal of + coefficients below below ATH).   These are turned on by default + but have not been fully tested.  (Robert Hegemann)
  • +
  • Bug in short block spreading function fixed.  + (Robert Hegemann)
  • +
+

LAME 3.25beta  August 22 1999

+
    +
  • Sigbjørn Skjæret fixed a zero byte malloc call.  This + bug  was introduced in 3.24 and causes problems on non Linux systems.
  • +
  • Bit allocation routines would sometimes allocate more than 4095 bits to + one channel of one granule.  A couple of people reported problems that + might be caused by this, especially at higher bitrates.
  • +
  • Nils Faerber updated the man page and fixed many of the compiler warnings.
  • +
    +   +
+

LAME 3.24beta   August 15 1999

+
    +
  • This release contains the following new code (for developers) which is + disabled by default:
  • +
  • Robert Hegemann:  Completely overhauled VBR code.  Now computes + exact number of bits required for the given qualty and then quantized with + the appropriate bitrate.
  • +
  • Several new quantization quality measures.
  • +
+

LAME 3.23beta  August 8 1999

+
    +
  • Very nice continuously updated VBR histogram display from Iwasa Kazmi.  + (disabled with --nohist).
  • +
  • More modulerization work.  The encoding engine can now be compiled + into libmp3lame, but the interface is awkward.
  • +
  • Bug fixed in FFT Hann window formula (Leonid A. Kulakov).
  • +
  • New LAME logo on the download page.  Created by Chris Michalisles.
  • +
  • Several VBR algorithm improvements from Robert Hegemann.  + New quantization noise metrics and VBR quality measure takes into account + mid/side encoding.  Should produce smaller files with the same quality, + especially when using jstereo.
  • +
+

LAME 3.22beta  July 27 1999

+
    +
  • Downsampling (stereo to mono) bug with MPEG2 fixed.  (Mike Oliphant)
  • +
  • Downsampling now merges L & R channels - before it only took the L + channel.
  • +
  • More modularization and code cleanup from Albert Faber and myself.
  • +
  • Input filesize limit removed for raw pcm input files.  For other file + types, LAME will still only read the first 2^32 samples, (27 hours of playing + time at 44.1 kHz).
  • +
    +   +
+

LAME 3.21beta  July 26 1999

+
    +
  • Correct Mid/Side masking thresholds for JSTEREO mode!  + This is enabled with -h.  It  makes LAME about 20% slower since + it computes psycho-acoustics for L,R Mid and Side channels.
  • +
  • "Analog silence" threshold added.  Keeps VBR + from upping the bitrate during very quite passages.  (Robert.Hegemann)
  • +
  • New VBR quality setting from Robert Hegemann.  + It is based on the idea that distortion at lower bit rates sounds worse than + at higher bitrates, and so the allowed distortion (VBR quality setting) is + proportional to the bitrate.  Because of this, default minimum bitrate + is now 32kbs.
  • +
  • Expermental subblock gain code enabled with -Z.
  • +
  • New "-r" option for raw pcm input files.  With -r, LAME will not do + any fseek()'s or look for wav and aiff headers on the input file.
  • +
  • Bug fixes in mp3x (frame analyzer) for viewing frames near end of the file.
  • +
  • Bug fixed to allow setting the sampling rate of raw pcm input files.
  • +
+

LAME 3.20beta  July 19 1999

+
    +
  • Bug in get_audio.c fixed.  Libsndfile wrappers would not compile (Miguel + Revilla  Rodriguez)
  • +
  • Nils Faerber found some unitialized variables and some wierd extranous + computations in filter_subband, now fixed.  This was causing seg faults + on some machines.
  • +
    +   +
+

LAME 3.19beta  July 18 1999

+
    +
  • Oops!  Robert Hegemann immediatly found a bug + in the new  (old -Z option) quantization code.  calc_noise1 was + not returning tot_noise, so non ms-stereo frames were buggy.
  • +
    +   +
+

LAME 3.18beta  July 17 1999

+
    +
  • Many psycho-acoustic bug fixes.  Dan Nelson + discovered a bug in MPEG2: For short blocks, the code assumes 42 partition + bands.  MPEG1 sometimes has less, MPEG2 can have more.  In MPEG1, + this bug would not have effected the output if your compiler initializes static + variables to 0 on creation.  In MPEG2 it leads to array out-of-bounds + access errors. Finally, there was a related bug in MPEG1/MPEG2, short & + long blocks where the energy above 16 kHz was all added to partition band + 0. (the lowest frequeny partition band!)
  • +
  • The -Z option (Gabriel Bouvigne's idea of using total + quantization noise to choose between two quantizations with the same value + of "over") is now the default.  I believe this helps remove the trilling + sound in Jan's testsignal4.wav.  The quality of testsignal2.wav and testsignal4.wav + are now better than Xing and getting closer to FhG.
  • +
  • Bug fixes in frame & sample count for downsampling mode. (ben "jacobs")
  • +
  • Patches to improve modulization.  (ben "jacobs")
  • +
+

LAME 3.17beta  July 11 1999

+
    +
  • substantial code cleanup towards goal of making LAME more modular.
  • +
+

LAME 3.16beta  July 11 1999

+
    +
  • New tunings of window switching, and better bit allocation + based on pe.  (Jan Rafaj.  improves both testsignal2.wav and testsignal4.wav).
  • +
  • Bug in mid/side quantization when side channel was + zero fixed.  (Albert Faber)
  • +
  • Removed some extranous computations in l3psy.c (Robert Hegemann)
  • +
  • More detailed timing status info, including hours display. (Sakari Ailus) + and percentage indicator (Conrad Sanderson).
  • +
  • Window_subband and calc_noise1,calc_noise2 speedups.  + Quantize_xrpow speedup should be significant on non GNU/intel systems. (Mike + Cheng)
  • +
  • Better initial guess for VBR bitrate.  Should + speed up VBR encoding.  (Gabriel Bouvigne)
  • +
  • More advanced .wav header parsing.  fixes bugs involving click in + first frame. (Robert.Hegemann)
  • +
  • Correct filesize and total frame computation when using LIBSNDFILE (ben + "jacobs")
  • +
  • Click in last frame (buffering problem) when using libsndfile fixed.
  • +
  • Audio I/O code overhauled.  There is now a uniform audio i/o interface + to libsndfile or the LAME built in wav/aiff routines.  All audio i/o + code localized to get_audio.c.
  • +
    +   +
+

LAME 3.15beta

+
    +
  • times()/clock() problem fixed for non-unix OS.  (Ben "Jacobs")
  • +
  • Fixed uninitialized pe[] when using fast mode.  (Ben "Jacobs")
  • +
+

LAME 3.13  June 24 1999

+
    +
  • Patches for BeOS from Gertjan van Ratingen.
  • +
  • Makefile info for OS/2 Warp 4.0  (from dink.org).
  • +
  • Status display now based on wall clock time, not cpu time.
  • +
  • mem_alloc no longer allocates twice as much memory as needed (Jan Peman).
  • +
+

3.12pre9

+
    +
  • Updated BLADEDLL code to handle recent changes (Albert Faber).
  • +
  • Bug fixed in parsing options when not using GTK (Albert Faber).
  • +
  • MPEG2 Layer III psycho acoustics now working.
  • +
  • Improved huffman encoding Chris Matrakidis. (10% + faster).  I dont know how he finds these improvements!  LAME with + full quality now encodes faster than real time on my PII 266.
  • +
  • Fixed time display when encoding takes more than 60 minutes.
  • +
+

3.12pre8

+
    +
  • New mid/side stereo + criterion.  LAME will use mid/side stereo only when the difference between + L & R masking thresholds (averaged over all scalefactors) is less then + 5db.  In several test samples it does a very good job mimicking the FhG + encoder.
  • +
  • Bug in mid/side stereo fixed:  independent variation + of mid & side channel scalefactors disabled.  Because of the way + outer_loop is currently coded, when encoding mid/side coefficietns using left/right + thresholds, you have to vary the scalefactors simultaneously.
  • +
  • Bug in side/mid energy ratio calculation fixed. (Thanks + to Robert Hegemann)
  • +
  • Default mode is stereo (not jstereo) if bitrate is chosen as 192kbs or + higher.  Tero Auvinen first pointed out that FhG seems to think at 160kbs, + their encoder is so good it doesn't need jstereo tricks. Since LAME is not + as good as FhG, I am going to claim that 192kbs LAME is so good it doens't + need jstereo tricks, and thus it is disabled by default.
  • +
  • WAV header parsing for big-endian machines, and automatic detection of + big-endian machines.  (Thanks to  Sigbjørn Skjæret).
  • +
  • added 56 sample delay to sync LAME with FhG.
  • +
  • MP3x (frame analyzer) can now handle MPEG2 streams.
  • +
+

3.12pre7

+
    +
  • MPEG2 layer III now working!  lower bit rates (down to 8kbs) and 3 + more sampling frequencies:  16000, 22050, 24000Hz. Quality is poor - + the psy-model does not yet work with these sampling frequencies.
  • +
  • Fixed "ERROR: outer_loop(): huff_bits < 0." bug when using VBR.
  • +
  • bash and sh scripts to run LAME on multiple files now included.  (from + Robert Hegemann and Gerhard Wesp respectively)
  • +
  • bug fix in encoding times for longer files from  (Alvaro Martinez + Echevarria)
  • +
  • yet another segfault in the frame analyzer fixed.
  • +
  • ISO psy-model/bit allocation routines removed.  This allowed makeframe() + to be made much simpler, and most of the complicated buffering is now gone. + Eventually I would like the encoding engine to be a stand alone library.
  • +
+

3.12pre6

+
    +
  • Better VBR tuning.  Find minimum bitrate with + distortion less than the allows maximum.  A minimum bit rate is imposed + on frames with short blocks (where the measured distortion can not be trusted).   + A minimum frame bitrate can be specified with -b, default=64kbs.
  • +
  • LIBSNDFILE support.  + With libsndfile, LAME can encode almost all sound formats.  Albert Faber + did the work for this, including getting libsndfile running under win32.
  • +
  • CRC checksum now working!   (Thanks to Johannes Overmann )
  • +
  • frame analyzer will now work with mono .mp3 files
  • +
  • more code tweeks from Jan Peman.
  • +
  • Compaq-Alpha(Linux) fixes and speedups from Nils + Faerber.
  • +
  • Faster bin_search_StepSize from Juha Laukala.
  • +
  • Faster quantize() from Mike Cheng
  • +
  • Faster quantize_xrpow() from Chris Matrakidis.  + xrpow_flag removed since this option is now on by default.
  • +
  • Fixed .wav header parsing from Nils Faerber.
  • +
  • Xing VBR frame info header code from Albert Faber.   "Xing" and + "LAME 3.12" embedded in first frame.
  • +
  • Bug in VBR bit allocation based on "over" value fixed.
  • +
+

LAME 3.11  June 3 1999

+
    +
  • Almost all warnings (-Wall) now fixed!  (Thanks to Jan Peman)
  • +
  • More coding improvements from Gabriel Bouvigne and Warren Toomey.
  • +
  • VBR  (variable bit rate).   Increases + bit rate for short blocks and for frames where the number of bands containing + audible distortion is greater than a given value.  Much tuning needs + to be done.
  • +
  • Patch to remove all atan() calls from James Droppo.
  • + +
+

LAME 3.10 May 30 1999

+
    +
  • Fast mode (-f)  disables psycho-acoustic model + for real time encoding on older machines.  Thanks to Lauri Ahonen who + first sent a patch for this.
  • +
  • New bit reservoir usage scheme to accommodate the + new pre-echo detection formulas.
  • +
  • Tuning of AWS and ENER_AWS pre-echo formulas by Gabriel + Bouvigne and myself.  They work great!  now on by default.
  • +
  • In jstereo, force blocktypes for left & right channels to be identical.  + FhG seems to do this.  It can be disabled with "-d".
  • +
  • Patches to compile MP3x under win32 (Thanks to Albert Faber).
  • +
  • bin_serach_stepsize limited to a quantizationStepSize + of  -210 through 45.
  • +
  • outer_loop()  will now vary Mid & Side scalefactors + independently.  Can lead to better quantizations, but it is slower (twice + as many quantizations to look at).  Running with "-m f" does not need + this and will run at the old speed
  • +
  • Bug in inner_loop would allow quantizations larger + than allowed.  (introduced in lame3.04, now fixed.)
  • +
  • Updated HTML documentation from Gabriel Bouvigne.
  • +
  • Unix  man page from William Schelter.
  • +
  • numlines[] bug fixed.  (Thanks to Rafael Luebbert, + MPecker author).
  • +
  • Quantization speed improvements from Chirs Matrakidis.
  • +
  • When comparing quantizations with the same number + of bands with audible distortion, use the one with the largest scalefactors, + not the first one outer_loop happened to find.
  • +
  • Improved defination of best quantization when using -f (fast mode).
  • +
  • subblock code now working.  But no algorithm to choose subblock gains + yet.
  • +
  • Linux now segfaults on floating point exceptions.  Should prevent + me from releasing binaries that crash on other operating systems.
  • +
+

LAME 3.04 May 22 1999

+
    +
  • Preliminary documentation from Gabriel Bouvigne.
  • +
  • I wouldn't have thought it was possible, but now + there are even more speed improvements from Chris Matrakidis!  Removed + one FFT when using joint stereo, and many improvements in loop.c.
  • +
  • "Fake" ms_stereo mode renamed "Force" ms_stereo since it forces mid/side + stereo on all frames.  For some music this is said to be a problem, but + for most music mode is probably better than the default jstereo because it + uses specialized mid/side channel masking thresholds.
  • +
  • Small bugs in Force ms_stereo mode fixed.
  • +
  • Compaq Alpha fixes from Nathan Slingerland.
  • +
  • Some new experimental pre-echo detection formulas + in l3psy.c (#ifdef AWS and #ifdef ENER_AWS, both off by default.  Thanks + to Gabriel Bouvigne and Andre Osterhues)
  • +
  • Several bugs in the syncing of data displayed by mp3x (the frame analyzer) + were fixed.
  • +
  • highq (-h) option added.  This turns on things (just one so far) that + should sound better but slow down LAME.
  • +
+

LAME 3.03 May 18 1999

+
    +
  • Faster (20%) & cleaner FFT (Thanks to Chris Matrakidis  + http://www.geocities.com/ResearchTriangle/8869/fft_summary.html)
  • +
  • mods so it works with VC++ (Thanks to Gabriel Bouvigne, www.mp3tech.org)
  • +
  • MP3s marked "original" by default  (Thanks to Gabriel Bouvigne, www.mp3tech.org)
  • +
  • Can now be compiled into a BladeEnc compatible .DLL   (Thanks + to  Albert Faber, CDex author)
  • +
  • Patches for "silent mode" and stdin/stdout  (Thanks to Lars Magne + Ingebrigtsen)
  • +
  • Fixed rare bug: if a long_block is sandwiched between + two short_blocks, it must be changed to a short_block, but the short_block + ratios have not been computed in l3psy.c.  Now always compute short_block + ratios just in case.
  • +
  • Fixed bug with initial quantize step size when many + coefficients are zero.  (Thanks to Martin Weghofer).
  • +
  • Bug fixed in MP3x display of audible distortion.
  • +
  • improved status display (Thanks to Lauri Ahonen).
  • +
+

LAME 3.02 May 12 1999

+
    +
  • encoder could use ms_stereo even if channel 0 and + 1 block types were different.  (Thanks to Jan Rafaj)
  • +
  • added -k option to disable the 16 kHz cutoff at 128kbs.  + This cutoff is never used at higher bitrates. (Thanks to Jan Rafaj)
  • +
  • modified pe bit allocation formula to make sense + at bit rates other than 128kbs.
  • +
  • fixed l3_xmin initialization problem which showed up under FreeBSD.  + (Thanks to Warren Toomey)
  • +
+

LAME 3.01 May 11 1999

+
    +
  • max_name_size increased to 300  (Thanks to Mike Oliphant)
  • +
  • patch to allow seeks on input file (Thanks to Scott Manley)
  • +
  • fixes for mono modes (Thanks to everyone who pointed this out)
  • +
  • overflow in calc_noise2 fixed
  • +
  • bit reservoir overflow when encoding lots of frames with all zeros  + (Thanks to Jani Frilander)
  • +
+


+ LAME 3.0 May 10 1999

+
    +
  • added GPSYCHO (developed by Mark Taylor)
  • +
  • added MP3x (developed by Mark Taylor)
  • +
  • LAME now maintained by Mark Taylor
  • +
+November 8 1998 +
    +
  • Version 2.1f released
  • +
  • 50% faster filter_subband() routine in encode.c contributed by James Droppo
  • +
+November 2 1998 +
    +
  • Version 2.1e released.
  • +
  • New command line switch -a auto-resamples a stereo input file to + mono.
  • +
  • New command line switch -r resamples from 44.1 kHz to 32 kHz [this + switch doesn't work really well. Very tinny sounding output files. Has to + do with the way I do the resampling probably]
  • +
  • Both of these were put into the ISO code in the encode.c file, and are + simply different ways of filling the input buffers from a file.
  • +
+October 31 1998 +
    +
  • Version 2.1d released
  • +
  • Fixed memory alloc in musicin.c (for l3_sb_sample)
  • +
  • Added new command line switch (-x) to force swapping of byte order
  • +
  • Cleaned up memory routines in l3psy.c. All the mem_alloc() and free() routines + where changed so that it was only done once and not every single time + the routine was called.
  • +
  • Added a compile time switch -DTIMER that includes all timing info. It's + a switch for the time being until some other people have tested on their system. + Timing code has a tendency to do different things on different platforms.
  • +
+October 18 1998 +
    +
  • Version 2.1b released.
  • +
  • Fixed up bug: all PCM files were being read as WAV.
  • +
  • Played with the mem_alloc routine to fix crash under amigaos (just allocating + twice as much memory as needed). Might see if we can totally do without this + routine. Individual malloc()s where they are needed instead
  • +
  • Put Jan Peman's quality switch back in. This reduces quality via the '-q ' + switch. Fun speedup which is mostly harmless if you're not concerned with + quality.
  • +
  • Compiling with amiga-gcc works fine
  • +
+October 16 1998 +
    +
  • Version 2.1a released. User input/output has been cleaned up a bit. WAV + file reading is there in a very rudimentary sense ie the program will recognize + the header and skip it, but not read it. The WAV file is assumed to be 16bit + stereo 44.1 kHz.
  • +
+October 6 1998 +
    +
  • Version 2.1 released with all tables now incorporated into the exe. Thanks + to Lars Magne Ingebrigtseni(larsi@ifi.uio.no)
  • +
+October 4 1998In response to some concerns about the quality of the encoder, +I have rebuilt the encoder from scratch and carefully compared output at all stages +with the output of the unmodified ISO encoder. Version2.0 of +LAME is built from the ISO source code (dist10), and incorporates modifications +from myself and the 8hz effort. The output file from LAME v2.0 is identical +to the output of the ISO encoder for my test file.Since I do not have heaps of +time, I left the ISO AIFF file reader in the code, and did not incorporate a WAV +file reader.Added section on quality October +1 1998 +
    +
  • Updated web page and released LAME v1.0
  • +
+Up to September 1998 +
    + Working on the 8hz source code... +
      +
    • Patched the 8hz source code
    • +
    • 45% faster than original source (on my freebsd p166).
    • +
        +
      • m1 - sped up the mdct.c and quantize() functions [MDCTD, MDCTD2, LOOPD]
      • +
      • m2 - sped up the filter_subband routine using Stephane Tavenard + 's work from musicin [FILTST]
      • +
      • m2 - minor cleanup of window_subband [WINDST2]
      • +
      • m2 - Cleaned up a few bits in l3psy.c. Replaced a sparse matrix multiply + with a hand configured unrolling [PSYD]
      • +
      • m3 - (amiga only) Added in the asm FFT for m68k (based on sources from + Henryk Richter and Stephane Tavenard)
      • +
      • m4 - raw pcm support back in
      • +
      • m5 - put in a byte-ordering switch for raw PCM reading (just in case)
      • +
      • m6 - reworked the whole fft.c file. fft now 10-15% faster.
      • +
      • m7 - totally new fft routine. exploits fact that this is a real->complex + fft. About twice as fast as previous fastest fft (in m6). (C fft routine + is faster than the asm one on an m68k!)
      • +
      • m8
      • +
          +
        • - Now encodes from stdin. Use '-' as the input filename. Thanks to + Brad Threatt
        • +
        • - Worked out that the 1024point FFT only ever uses the first 6 phi + values, and the first 465 energy values. Saves a bunch of calculations.
        • +
        • - Added a speed-up/quality switch. Speed is increased but quality + is decreased slightly. My ears are bad enough not to be able + to notice the difference in quality at low settings :). Setting '-q + 1' improves speed by about 10%. '-q 100' improves speed by about 26%. + Enoding of my test track goes from 111s (at default '-q 0') to 82s (at + -q 100). Thanks to Jan Peman for this tip.
        • +
        +
      • m9 - fixed an error in l3psy.c. numlines[] is overwritten with incorrect + data. Added a new variable numlines_s[] to fix this. Thanks again to Jan + Peman.
      • +
      • m10 - Down to 106 seconds by selecting a few more compiler options. + Also added a pow20() function in l3loop.c to speed up (ever so slightly) + calls to pow(2.0, x)
      • +
      • m11
      • +
          +
        • No speedups. Just cleaned up some bits of the code.
        • +
        • Changed K&R prototyping to 'normal' format. Thanks to Steffan + Haeuser for his help here.
        • +
        • Changed some C++ style comments to normal C comments in huffman.c
        • +
        • Removed the #warning from psy_data.h (it was getting annoying!)
        • +
        • Removed reference in bitstream.c to malloc.h. Is there a system left + where malloc.h hasn't been superceded by stdlib.h?
        • +
        +
      • In Progess:
      • +
          +
        • my PSYD hack for the spreading functions is only valid for 44.1 kHz + - Should really put in a "if freq = 44.1 kHz" switch for it. Someone + might want to extend the speedup for 48 and 32 kHz.
        • +
        • Putting in Jan Peman's quantanf_init speedup.
        • +
        +
      +
    +
+ + diff --git a/lame-3.97/doc/html/.svn/text-base/id3.html.svn-base b/lame-3.97/doc/html/.svn/text-base/id3.html.svn-base new file mode 100644 index 0000000..5f600f1 --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/id3.html.svn-base @@ -0,0 +1,257 @@ + + + +ID3 tags + + + + + + + + +

ID3 tags

+

 

+

LAME is able to embed ID3 v1, v1.1 or v2 tags inside the encoded MP3 file. + This allows to have some usefull information about the music track included + inside the file. Those data can be read by most MP3 players.
+
+ Lame will smartly choose wich tags to use. It will add ID3 v2 tags only if the + input comments won't fint in v1 or v1.1 tags, ie if they are more than 30 characters. + In this case, both v1 and v2 tags will be added, to ensure reading of tags by + MP3 players wich are unable to read ID3 v2 tags.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID3 comments switchesparameters
--tt "title"title of song
--ta "artist"artist who did the song
--tl "album"album where it came from
--ty "year"year in which the song/album was made
--tc "comment"additional info
--tn "track"track number of the song on the CD (1 to 255, creates + an ID3 v 1.1 tag)
--tg "genre" genre of song (name or number)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID3 behaviour switches 
--add-id3v2 force addition of version 2 tag
--id3v1-only add only a version 1 tag
--id3v2-only add only a version 2 tag
--space-id3v1 pad version 1 tags with spaces instead of nulls
--pad-id3v2 pad version 2 tags with extra 128 bytes
--ignore-tag-errors ignore errors in values passed for tags, use defaults in case an error occours
--genre-list print alphabetically sorted ID3 genre list and exit
+


+ The following genres are supported:
+
+

+ + + + + +
00 - Blues
+ 01 - Classic Rock
+ 02 - Country
+ 03 - Dance
+ 04 - Disco
+ 05 - Funk
+ 06 - Grunge
+ 07 - Hip-Hop
+ 08 - Jazz
+ 09 - Metal
+ 10 - New Age
+ 11 - Oldies
+ 12 - Other
+ 13 - Pop
+ 14 - R&B
+ 15 - Rap
+ 16 - Reggae
+ 17 - Rock
+ 18 - Techno
+ 19 - Industrial
+ 20 - Alternative
+ 21 - Ska
+ 22 - Death Metal
+ 23 - Pranks
+ 24 - Soundtrack
+ 25 - Euro-Techno
+ 26 - Ambient
+ 27 - Trip-Hop
+ 28 - Vocal
+ 29 - Jazz+Funk
+ 30 - Fusion
+ 31 - Trance
+ 32 - Classical
+ 33 - Instrumental
+ 34 - Acid
+ 35 - House
+ 36 - Game
+ 37 - Sound Clip
+ 38 - Gospel
+ 39 - Noise
+ 40 - Alternative Rock
+ 41 - Bass
+ 43 - Punk
+ 44 - Space
+ 45 - Meditative
+ 46 - Instrumental Pop
+ 47 - Instrumental Rock
+ 48 - Ethnic
+ 49 - Gothic
+ 50 - Darkwave
+ 51 - Techno-Industrial
+ 52 - Electronic
+ 53 - Pop-Folk
+ 54 - Eurodance
+ 55 - Dream
+ 56 - Southern Rock
+ 57 - Comedy
+ 58 - Cult
+ 59 - Gangsta
+ 60 - Top 40
+ 61 - Christian Rap
+ 62 - Pop/Funk
+ 63 - Jungle
+ 64 - Native US
+ 65 - Cabaret
+ 66 - New Wave
+ 67 - Psychadelic
+ 68 - Rave
+ 69 - Showtunes
+ 70 - Trailer
+ 71 - Lo-Fi
+ 72 - Tribal
+ 73 - Acid Punk
+ 74 - Acid Jazz
+ 75 - Polka
+ 76 - Retro
+ 77 - Musical
+ 78 - Rock & Roll
+ 79 - Hard Rock
+ 80 - Folk
+ 81 - Folk-Rock
+ 82 - National Folk
+ 83 - Swing
+ 84 - Fast Fusion
+ 85 - Bebob
+ 86 - Latin
+ 87 - Revival
+ 88 - Celtic
+ 89 - Bluegrass
+ 90 - Avantgarde
+ 91 - Gothic Rock
+ 92 - Progressive Rock
+ 93 - Psychedelic Rock
+ 94 - Symphonic Rock
+ 95 - Slow Rock
+ 96 - Big Band
+ 97 - Chorus
+ 98 - Easy Listening
+ 99 - Acoustic
100 - Humour
+ 101 - Speech
+ 102 - Chanson
+ 103 - Opera
+ 104 - Chamber Music
+ 105 - Sonata
+ 106 - Symphony
+ 107 - Booty Bass
+ 108 - Primus
+ 109 - Porn Groove
+ 110 - Satire
+ 111 - Slow Jam
+ 112 - Club
+ 113 - Tango
+ 114 - Samba
+ 115 - Folklore
+ 116 - Ballad
+ 117 - Power Ballad
+ 118 - Rhytmic Soul
+ 119 - Freestyle
+ 120 - Duet
+ 121 - Punk Rock
+ 122 - Drum Solo
+ 123 - Acapella
+ 124 - Euro-House
+ 125 - Dance Hall
+ 126 - Goa
+ 127 - Drum & Bass
+ 128 - Club-House
+ 129 - Hardcore
+ 130 - Terror
+ 131 - Indie
+ 132 - BritPop
+ 133 - Negerpunk
+ 134 - Polsk Punk
+ 135 - Beat
+ 136 - Christian Gangsta
+ 137 - Heavy Metal
+ 138 - Black Metal
+ 139 - Crossover
+ 140 - Contemporary C
+ 141 - Christian Rock
+ 142 - Merengue
+ 143 - Salsa
+ 144 - Thrash Metal
+ 145 - Anime
+ 146 - JPop
+ 147 - SynthPop
+


+
+
+

+ + diff --git a/lame-3.97/doc/html/.svn/text-base/index.html.svn-base b/lame-3.97/doc/html/.svn/text-base/index.html.svn-base new file mode 100644 index 0000000..8b9b366 --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/index.html.svn-base @@ -0,0 +1,55 @@ + + + +LAME V3 Next Generation High-End MPEG Layer III Encoding + + + + + + + + + +

+

LAME + V3.97
+
+


+
Lame + Ain't an MP3 Encoder +


+
+

+

Open Source Project
+ http://www.mp3dev.org

+

+

+

+

+

+
+
+
+
  • Introduction + +
  • Some command line examples +
  • CBR, ABR and VBR: the 3 encoding modes +
  • Built-in presets +
  • Basic command line switch reference +
  • Full command line switch reference +
  • ID3 tags +
  • History +
  • Contributors
    +
    + + diff --git a/lame-3.97/doc/html/.svn/text-base/lame.css.svn-base b/lame-3.97/doc/html/.svn/text-base/lame.css.svn-base new file mode 100644 index 0000000..a9c3ebd --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/lame.css.svn-base @@ -0,0 +1,24 @@ +BODY { + font-family: Arial, Helvetica, sans-serif; + position: absolute; + padding-left: 1cm; + margin-left: 1cm; + } + +h1, h2, h3 { + margin-left: -1cm; text-align: left + } + +TABLE { text-align: left; font-family: Arial, Helvetica, sans-serif;} +TH {background-color: #C0C0C0} +TD {font-family: Arial, Helvetica, sans-serif;} + +SMALL.TINY { font-size : xx-small } +SMALL.SCRIPTSIZE { font-size : xx-small } +SMALL.FOOTNOTESIZE { font-size : x-small } +SMALL.SMALL { font-size : small } +BIG.LARGE { font-size : large } +BIG.XLARGE { font-size : x-large } +BIG.XXLARGE { font-size : xx-large } +BIG.HUGE { font-size : xx-large } +BIG.XHUGE { font-size : xx-large } diff --git a/lame-3.97/doc/html/.svn/text-base/modes.html.svn-base b/lame-3.97/doc/html/.svn/text-base/modes.html.svn-base new file mode 100644 index 0000000..9c7707a --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/modes.html.svn-base @@ -0,0 +1,48 @@ + + + +Encoding modes + + + + + + + + +

    CBR/ABR/VBR: the 3 encoding modes

    +

     

    +

    LAME is able to encode your music using one of its 3 encoding modes: constant + bitrate (CBR), average bitrate (ABR) and variable bitrate (VBR).
    +
    +
    +

    +

    Constant Bitrate (CBR)

    +

    This is the default encoding mode, and also the most basic. In this mode, the + bitrate will be the same for the whole file. It means that each part of your + mp3 file will be using the same number of bits. The musical passage beeing a + difficult one to encode or an easy one, the encoder will use the same bitrate, + so the quality of your mp3 is variable. Complex parts will be of a lower quality + than the easiest ones. The main advantage is that the final files size won't + change and can be accurately predicted.
    +
    +

    +

    Average Bitrate (ABR)

    +

    In this mode, you choose a target bitrate and the encoder will try to constantly + maintain an average bitrate while using higher bitrates for the parts of your + music that need more bits. The result will be of higher quality than CBR encoding + while the average file size will remain predictible, so this mode is highly + recommended over CBR.
    +
    +

    +

    Variable bitrate (VBR)

    +

    In this mode, you choose the desired quality on a scale going from 9 (lowest + quality/highest distortion) to 0 (highest quality/lowest distortion). Then encoder + tries to maintain the given quality in the whole file by choosing the optimal + number of bits to spend for each part of your music. The main advantage is that + you are able to specify the quality level that you want to reach, but the inconvenient + is that the final file size is totally unpredictible.

    + + diff --git a/lame-3.97/doc/html/.svn/text-base/node6.html.svn-base b/lame-3.97/doc/html/.svn/text-base/node6.html.svn-base new file mode 100644 index 0000000..9159790 --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/node6.html.svn-base @@ -0,0 +1,132 @@ + + + +Introduction + + + + + + + + +Subsections + + +
    +

    Introduction

    +There is a lot of confusion surrounding the terms audio compression, audio +encoding, and audio decoding. This section will give you an overview +what audio coding (another one of these terms...) is all about. +

    +

    The purpose of audio compression +

    +

    Up to the advent of audio compression, high-quality digital audio data took + a lot of hard disk space to store. Let us go through a short example. +

    You want to, say, sample your favorite 1-minute song and store it on your + harddisk. Because you want CD quality, you sample at 44.1 kHz, stereo, + with 16 bits per sample. +

    44100 Hz means that you have 44100 values per second coming in from your sound + card (or input file). Multiply that by two because you have two channels. Multiply + by another factor of two because you have two bytes per value (that's what 16 + bit means). The song will take up 44100 samples/s · 2 channels + · 2 bytes/sample · 60 s/min ~ 10 MBytes of storage space + on your harddisk. +

    If you wanted to download that over the internet, given an average 56k modem + connected at 44k (which is a typical case), it would take you (at least) 10000000 + bytes · 8 bits/byte / (44000 bits/s) · / (60 s/min) ~ 30 minutes +

    Just to download one minute of music!
    +

    Digital audio coding, which - in this context - is synonymously called digital + audio compression as well, is the art of minimizing storage space (or channel + bandwidth) requirements for audio data. Modern perceptual audio coding techniques + (like MPEG Layer III) exploit the properties of the human ear (the perception + of sound) to achieve a size reduction by a factor of 11 with little or no perceptible + loss of quality. +

    Therefore, such schemes are the key technology for high quality low bit-rate + applications, like soundtracks for CD-ROM games, solid-state sound memories, + Internet audio, digital audio broadcasting systems, and the like. +

    +

    The two parts of audio compression +

    +

    Audio compression really consists of two parts. The first part, called encoding, + transforms the digital audio data that resides, say, in a WAVE file, into a + highly compressed form called bitstream. To play the bitstream on your + soundcard, you need the second part, called decoding. Decoding takes + the bitstream and re-expands it to a WAVE file. +

    The program that effects the first part is called an audio encoder. + LAME is such an encoder . The program that does the second part is called + an audio decoder. One well-known MPEG Layer III decoder is Xmms, + another mpg123. Both can be found on ww.mp3-tech.org . +

    Compression ratios, bitrate and quality +

    +

    It has not been explicitly mentioned up to now: What you end up with after + encoding and decoding is not the same sound file anymore: All superflous information + has been squeezed out, so to say. It is not the same file, but it will + sound the same - more or less, depending on how much compression had + been performed on it. +

    Generally speaking, the lower the compression ratio achieved, the better the + sound quality will be in the end - and vice versa. Table 1.1 + gives you an overview about quality achievable. +

    Because compression ratio is a somewhat unwieldy measure, experts use the + term bitrate when speaking of the strength of compression. Bitrate denotes + the average number of bits that one second of audio data will take up in your + compressed bitstream. Usually the units used will be kbps, which is kbits/s, + or 1000 bits/s. To calculate the number of bytes + per second of audio data, simply divide the number of bits per second by eight. +


    +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1.1: Bitrate versus sound quality
    BitrateBandwidthQuality comparable to or better than
    16 kbps4.5 kHzshortwave radio
    32 kbps7.5 kHzAM radio
    96 kbps11 kHzFM radio
    128 kbps16 kHznear CD
    160-180 kbps
    + (variable bitrate)
    20 kHzperceptual transparency
    256 kbps22 kHzstudio
    +
    +
    +
    + + diff --git a/lame-3.97/doc/html/.svn/text-base/presets.html.svn-base b/lame-3.97/doc/html/.svn/text-base/presets.html.svn-base new file mode 100644 index 0000000..25c0d9c --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/presets.html.svn-base @@ -0,0 +1,66 @@ + + + +Presets + + + + + + + + +

    Built-in presets

    +

     

    +

    Lame features some built-in presets. Those presets are designed to provide + the highest possible quality.
    + They have for the most part been subject to and tuned via rigorous listening + tests to verify and achieve this objective. These are continually updated to + coincide with the latest developments that occur and as a result should provide + you with nearly the best quality currently possible from LAME.

    +


    + If your goal is quality, these presets are highly recommended over any custom + set of parameters you might use. To activate presets, you should use:
    + lame --preset preset_name
    +
    +
    +

    +

    VBR modes

    +

    --preset medium

    +

    This preset should provide near transparency to most people on most music.
    + The resulting bitrate should be in the 150-180kbps range, according to music + complexity.

    +

    --preset standard

    +

    This preset should generally be transparent to most people on most music and + is already quite high in quality.
    + The resulting bitrate should be in the 170-210kbps range, according to music + complexity.

    +

    --preset extreme

    +

    If you have extremely good hearing and similar equipment, this preset will + provide slightly higher quality than the "standard" mode.
    + The resulting bitrate should be in the 200-240kbps range, according to music + complexity.

    +

    Any of those VBR presets can also be used in fast mode, using the new vbr algorithm. + This mode is faster, but its quality could be a little lower. To enable the + fast mode, use:
    + lame --preset fast preset_name

    +

     

    +

    CBR 320kbps

    +

    --preset insane

    +

    This preset will usually be overkill for most people and most situations, but + if you must have the absolute highest quality with no regard to filesize, this + is the way to go. This preset is the highest preset quality available.

    +

     

    +

    ABR modes

    +

    --preset <kbps>

    +

    Using this preset will usually give you good quality at a specified bitrate. + Depending on the bitrate entered, this preset will determine the optimal settings + for that particular situation.
    + While this approach works, it is not nearly as flexible as VBR, and usually + will not reach the same quality level as VBR at higher bitrates.
    + If you need CBR encoding, those presets can also be used in CBR mode by using:
    + lame --preset cbr <kbps>

    + + diff --git a/lame-3.97/doc/html/.svn/text-base/switchs.html.svn-base b/lame-3.97/doc/html/.svn/text-base/switchs.html.svn-base new file mode 100644 index 0000000..96c732a --- /dev/null +++ b/lame-3.97/doc/html/.svn/text-base/switchs.html.svn-base @@ -0,0 +1,1340 @@ + + + +Full command line switch reference + + + + + + + + +

    Full command line switch reference

    +

    note: Options which could exist without being documented + here are considered as experimental ones. Such experimental options should usually + not be used. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    switchparameter
    -adownmix stereo file to mono
    --abraverage bitrate encoding
    --allshortuse short blocks only
    --athlowerlower the ATH
    --athonlyATH only
    --athshortATH only for short blocks
    --athtypeselect ATH type
    -bbitrate (8...320)
    -Bmax VBR/ABR bitrate (8...320)
    --bitwidthinput bit width
    -ccopyright
    --cbrenforce use of constant bitrate
    --clipdetectclipping detection
    --compchoose compression ratio
    --cwlimittonality limit
    -dblock type control
    --decodedecoding only
    --disptimetime between display updates
    -ede-emphasis (n, 5, c)
    -f fast mode
    -F strictly enforce the -b option
    --freeformat free format bitstream
    -hhigh quality
    --help help
    --highpass highpass filtering frequency in kHz
    --highpass-width width of highpass filtering in kHz
    -k full bandwidth
    --lowpass lowpass filtering frequency in kHz
    --lowpass-width width of lowpass filtering in kHz
    -mstereo mode (s, j, f, m)
    --mp1inputMPEG Layer I input file
    --mp2inputMPEG Layer II input file
    --mp3inputMPEG Layer III input file
    --noathdisable ATH
    --noasmdisable assembly optimizations (mmx/3dnow/sse)
    --nohistdisable histogram display
    --noreplaygaindisable ReplayGain analysis
    --noresdisable bit reservoir
    --noshortdisable short blocks frames
    --notempdisable temporal masking
    -onon-original
    -perror protection
    --presetuse built-in preset
    --priorityOS/2 process priority control
    -qalgorithm quality selection
    --quietsilent operation
    -rinput file is raw PCM
    --replaygain-accuratecompute ReplayGain more accurately and find the peak sample
    --replaygain-fastcompute ReplayGain fast but slightly inaccurately (default)
    --resampleoutput sampling frequency in kHz (encoding only)
    -ssampling frequency in kHz
    -Ssilent operation
    --scalescale input
    --scale-lscale input channel 0 (left)
    --scale-rscale input channel 1 (right)
    --shortuse short blocks
    --silentsilent operation
    --strictly-enforce-ISOstrict ISO compliance
    -tdisable INFO/WAV header
    -VVBR quality setting (0...9)
    --vbr-newnew VBR mode
    --vbr-oldolder VBR mode
    --verboseverbosity
    -xswapbytes
    -Xchange quality measure
    +
    +

    +
    * -a    downmix  +
    Mix the stereo input file to mono and encode as mono.
    + The downmix is calculated as the sum of the left and right channel, attenuated + by 6 dB.
    +
    + This option is only needed in the case of raw PCM stereo input (because LAME + cannot determine the number of channels in the input file).
    + To encode a stereo PCM input file as mono, use "lame -m s -a".
    +
    + For WAV and AIFF input files, using "-m m" will always produce a mono .mp3 + file from both mono and stereo input. +

    +
    +
    +
    +
    +
    +
    * --abr n    average + bitrate encoding
    +
    +
    +
    Turns on encoding with a targeted average bitrate of n kbits, allowing to + use frames of different sizes. The allowed range of n is 8-310, you can use + any integer value within that range.
    +
    + It can be combined with the -b and -B switches like:
    + lame --abr 123 -b 64 -B 192 a.wav a.mp3
    + which would limit the allowed frame sizes between 64 and 192 kbits.
    +
    + +
    +
    +
    +
    +
    * --allshort    use + short blocks only
    +
    +
    +
    Use only short blocks, no long ones. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athlower n    lower + the ATH
    +
    +
    +
    Lower the ATH (absolute threshold of hearing) by n dB.
    + Normally, humans are unable to hear any sound below this threshold, but for + music recorded at very low level this option might be useful. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athonly    ATH + only
    +
    +
    +
    This option causes LAME to ignore the output of the psy-model and only use + masking from the ATH (absolute threshold of hearing). Might be useful at very + high bitrates or for testing the ATH. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athshort    ATH + only for short blocks
    +
    +
    +
    Ignore psychoacoustic model for short blocks, use ATH only. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athtype 0/1/2    select + ATH type
    +
    +
    +
    The Absolute Threshold of Hearing is the minimum threshold under which humans + are unable to hear any sound. In the past, LAME was using ATH shape 0 which + is the Painter & Spanias formula. Tests have shown that this formula is innacurate + for the 13-22 kHz area, leading to audible artifacts in some cases. Shape 1 + was thus implemented, which is over sensitive, leading to very high bitrates. + Shape 2 formula was accurately modelized from real data in order to real optimal + quality while not wasting bitrate. In CBR and ABR modes, LAME uses ATH shape + 2 by default.
    +
    + In VBR mode, LAME is adapting its shape according to the + -V value, going gradually from the 0 shape at -V9 up to shape 2 at -V0. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * -b n    bitrate +
    +
    +
    +
    For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz)
    + n = 32,40,48,56,64,80,96,112,128,160,192,224,256,320
    +
    + For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz)
    + n = 8,16,24,32,40,48,56,64,80,96,112,128,144,160
    +
    + Default is 128 kbps for MPEG1 and 64 kbps for MPEG2.
    +
    + When used with variable bitrate encoding (VBR), -b specifies the minimum bitrate + to be used. However, in order to avoid wasted space, the smallest frame size + available will be used during silences. +

    +
    +
    +
    +
    +
    +
    * -B n    maximum + VBR/ABR bitrate 
    +
    +
    +
    For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz)
    + n = 32,40,48,56,64,80,96,112,128,160,192,224,256,320
    +
    + For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz)
    + n = 8,16,24,32,40,48,56,64,80,96,112,128,144,160
    +
    + Specifies the maximum allowed bitrate when using VBR/ABR
    +
    + The use of -B is NOT RECOMMENDED. A 128kbps CBR bitstream, because of the bit reservoir, + can actually have frames which use as many bits as a 320kbps frame. VBR modes + minimize the use of the bit reservoir, and thus need to allow 320kbps frames + to get the same flexibility as CBR streams.
    +
    + note: If you own an mp3 hardware player build upon a MAS 3503 chip, you + must set maximum bitrate to no more than 224 kpbs.
    +
    +
    +
    * --bitwidth 8/16/24/32    input + bit width 
    +
    +
    +
    Required only for raw PCM input files. Otherwise it will be determined + from the header of the input file.
    +
    +
    +
    +
    +
    +
    * --clipdetect    clipping detection +
    +
    +
    +
    + Enable --replaygain-accurate and print a message whether clipping + occurs and how far in dB the waveform is from full scale.
    +
    + This option is not usable if the MP3 decoder was explicitly + disabled in the build of LAME.
    +
    + See also: --replaygain-accurate +

    +
    +
    +
    +
    * --cbr +     enforce use of constant bitrate +
    +
    +
    +
    This switch enforces the use of constant bitrate encoding. +

    +
    +
    +
    +
    * --cbr +     enforce use of constant bitrate +
    +
    +
    +
    This switch enforces the use of constant bitrate encoding. +

    +
    +
    +
    +
    * --comp    choose + compression ratio
    +
    +
    +
    Instead of choosing bitrate, using this option, user can choose compression + ratio to achieve. +

    +
    +
    +
    +
    * --cwlimit n   tonality + limit
    +
    +
    +
    Compute tonality up to freq (in kHz). Default setting is 8.8717. +

    +
    +
    +
    +
    * -d    block type control +
    +
    +
    +
    Allows the left and right channels to use different block size types. +

    +
    +
    +
    +
    * --decode    decoding + only
    +
    +
    +
    Uses LAME for decoding to a WAV file. The input file can be any input type + supported by encoding, including layer I,II,III (MP3) and OGG files. In case + of MPEG files, LAME uses a bugfixed version of mpglib for decoding.
    +
    + If -t is used (disable WAV header), Lame will output raw PCM in native endian + format. You can use -x to swap bytes order.
    +
    + This option is not usable if the MP3 decoder was explicitly + disabled in the build of LAME. +

    +
    +
    +
    +
    +
    +
    * --disptime n    time + between display updates
    +
    +
    +
    Set the delay in seconds between two display updates. +

    +
    +
    +
    +
    +
    +
    * -e n/5/c    de-emphasis +
    +
    +
    +

    + n = (none, default)
    + 5 = 0/15 microseconds
    + c = citt j.17
    +
    + All this does is set a flag in the bitstream. If you have a PCM input file + where one of the above types of (obsolete) emphasis has been applied, you + can set this flag in LAME. Then the mp3 decoder should de-emphasize the output + during playback, although most decoders ignore this flag.
    +
    + A better solution would be to apply the de-emphasis with a standalone utility + before encoding, and then encode without -e. +

    +
    +
    +
    +
    +
    +
    * -f    fast mode +
    +
    +
    +
    This switch forces the encoder to use a faster encoding mode, but with + a lower quality. The behaviour is the same as the -q7 switch.
    +
    + Noise shaping will be disabled, but psycho acoustics will still be computed + for bit allocation and pre-echo detection. +

    +
    +
    +
    +
    +
    +
    * -F   strictly enforce the + -b option
    +
    +
    +
    This is mainly for use with hardware players that do not support low bitrate + mp3.
    +
    + Without this option, the minimum bitrate will be ignored for passages of analog + silence, ie when the music level is below the absolute threshold of human + hearing (ATH). +

    +
    +
    +
    +
    +
    +
    * --freeformat    free + format bitstream
    +
    +
    +
    Produces a free format bitstream. With this option, you can use -b with + any bitrate higher than 8 kbps.
    +
    + However, even if an mp3 decoder is required to support free bitrates at least + up to 320 kbps, many players are unable to deal with it.
    +
    + Tests have shown that the following decoders support free format:
    +
    + FreeAmp up to 440 kbps
    + in_mpg123 up to 560 kbps
    + l3dec up to 310 kbps
    + LAME up to 560 kbps
    + MAD up to 640 kbps
    +

    +
    +
    +
    +
    +
    +
    * -h    high quality +
    +
    +
    +
    Use some quality improvements. Encoding will be slower, but the result + will be of higher quality. The behaviour is the same as the -q2 switch.
    + This switch is always enabled when using VBR. +

    +
    +
    +
    +
    +
    +
    * --help    help +
    +
    +
    +
    Display a list of all available options. +

    +
    +
    +
    +
    +
    +
    * --highpass    highpass + filtering frequency in kHz
    +
    +
    +
    Set an highpass filtering frequency. Frequencies below the specified one + will be cutoff. +

    +
    +
    +
    +
    +
    +
    * --highpass-width    width + of highpass filtering in kHz
    +
    +
    +
    Set the width of the highpass filter. The default value is 15% of the highpass + frequency. +

    +
    +
    +
    +
    +
    +
    * -k    full bandwidth +
    +
    +
    +
    Tells the encoder to use full bandwidth and to disable all filters. By + default, the encoder uses some lowpass filtering at lower bitrates, in order + to keep a good quality by giving more bits to more important frequencies.
    + Increasing the bandwidth from the default setting might produce ringing artefacts + at low bitrates. Use with care! +

    +
    +
    +
    +
    +
    +
    * --lowpass    lowpass + filtering frequency in kHz
    +
    +
    +
    Set a lowpass filtering frequency. Frequencies above the specified one + will be cutoff. +

    +
    +
    +
    +
    +
    +
    * --lowpass-width    width + of lowpass filtering in kHz
    +
    +
    +
    Set the width of the lowpass filter. The default value is 15% of the lowpass + frequency. +

    +
    +
    +
    +
    +
    +
    * -m s/j/f/d/m    stereo + mode
    +
    +
    +
    Joint-stereo is the default mode for input files featuring two channels.. +
    +
    + stereo

    + In this mode, the encoder makes no use of potentially existing correlations + between the two input channels. It can, however, negotiate the bit demand + between both channel, i.e. give one channel more bits if the other contains + silence or needs less bits because of a lower complexity.
    +
    + joint stereo
    + In this mode, the encoder will make use of correlation between both channels. + The signal will be matrixed into a sum ("mid"), computed by L+R, and difference + ("side") signal, computed by L-R, and more bits are allocated to the mid channel.
    + This will effectively increase the bandwidth if the signal does not have too + much stereo separation, thus giving a significant gain in encoding quality. + In joint stereo, the encoder can select between Left/Right and Mid/Side representation + on a frame basis.
    +
    + Using mid/side stereo inappropriately can result in audible compression artifacts. + To much switching between mid/side and regular stereo can also sound bad. + To determine when to switch to mid/side stereo, LAME uses a much more sophisticated + algorithm than that described in the ISO documentation, and thus is safe to + use in joint stereo mode.
    +
    + forced joint stereo
    + This mode will force MS joint stereo on all frames. It's slightly faster than + joint stereo, but it should be used only if you are sure that every frame + of the input file has very little stereo separation.
    +
    + dual channels
    + In this mode, the 2 channels will be totally independently encoded. Each + channel will have exactly half of the bitrate. This mode is designed for applications + like dual languages encoding (ex: English in one channel and French in the + other). Using this encoding mode for regular stereo files will result in a + lower quality encoding.
    +
    + mono
    + The input will be encoded as a mono signal. If it was a stereo signal, it + will be downsampled to mono. The downmix is calculated as the sum of the left + and right channel, attenuated by 6 dB. +

    +
    +
    +
    +
    +
    +
    * --mp1input    MPEG + Layer I input file
    +
    +
    +
    Assume the input file is a MPEG Layer I file.
    + If the filename ends in ".mp1" or ".mpg" LAME will assume it is + a MPEG Layer I file. For stdin or Layer I files which do not end in .mp1 or .mpg + you need to use this switch. +

    +
    +
    +
    +
    +
    +
    +
    * --mp2input    MPEG + Layer II input file
    +
    +
    +
    Assume the input file is a MPEG Layer II (ie MP2) file.
    + If the filename ends in ".mp2" LAME will assume it is a MPEG Layer II file. For + stdin or Layer II files which do not end in .mp2 you need to use this switch. +

    +
    +
    +
    +
    +
    +
    +
    * --mp3input    MPEG + Layer III input file
    +
    +
    +
    Assume the input file is a MP3 file. Useful for downsampling from one + mp3 to another. As an example, it can be useful for streaming through an + IceCast server.
    + If the filename ends in ".mp3" LAME will assume it is an MP3 file. For stdin or + MP3 files which do not end in .mp3 you need to use this switch. +

    +
    +
    +
    +
    +
    +
    +
    * --noath    disable + ATH
    +
    +
    +
    Disable any use of the ATH (absolute threshold of hearing) for masking. + Normally, humans are unable to hear any sound below this threshold. +

    +
    +
    +
    +
    +
    +
    +
    * --noasm mmx/3dnow/sse +     disable assembly optimizations
    +
    +
    +
    Disable specific assembly optimizations. Quality will not increase, only + speed will be reduced. If you have problems running Lame on a Cyrix/Via + processor, disabling mmx optimizations might solve your problem. +

    +
    +
    +
    +
    +
    +
    +
    * --nohist    disable + histogram display
    +
    +
    +
    By default, LAME will display a bitrate histogram while producing VBR mp3 + files. This will disable that feature.
    + Histogram display might not be available on your release. +

    +
    +
    +
    +
    +
    +
    +
    * --noreplaygain    disable + ReplayGain analysis
    +
    +
    +
    By default ReplayGain analysis is enabled. This switch disables it.
    +
    + See also: --replaygain-accurate, + --replaygain-fast +

    +
    +
    +
    +
    +
    +
    +
    * --nores    disable + bit reservoir
    +
    +
    +
    Disable the bit reservoir. Each frame will then become independent from + previous ones, but the quality will be lower. +

    +
    +
    +
    +
    +
    +
    +
    * --noshort    disable + short blocks frames
    +
    +
    +
    Encode all frames using long blocks only. This could increase quality when + encoding at very low bitrates, but can produce serious pre-echo artefacts. +

    +
    +
    +
    +
    +
    +
    +
    * --notemp    disable + temporal masking
    +
    +
    +
    Don't make use of the temporal masking effect. +

    +
    +
    +
    +
    +
    +
    +
    * -o    non-original +
    +
    +
    +
    Mark the encoded file as being a copy. +

    +
    +
    +
    +
    +
    +
    * -p    error protection
    +
    +
    +
    Turn on CRC error protection.
    + It will add a cyclic redundancy check (CRC) code in each frame, allowing to + detect transmission errors that could occur on the MP3 stream. However, it + takes 16 bits per frame that would otherwise be used for encoding, and then + will slightly reduce the sound quality. +

    +
    +
    +
    +
    +
    +
    * --preset presetName     use + built-in preset
    +
    +
    Use one of the built-in presets (standard, fast standard, extreme, fast extreme, insane, or the abr/cbr modes). +
    +
    "--preset help" gives more information about the usage possibilities for these presets. +

    +
    +
    +
    +
    +
    * --priority 0...4    OS/2 + process priority control
    +
    +
    With this option, LAME will run with a different process priority under + IBM OS/2.
    + This will greatly improve system responsiveness, since OS/2 will have more + free time to properly update the screen and poll the keyboard/mouse. It should + make quite a difference overall, especially on slower machines. LAME's performance + impact should be minimal.
    +
    +
    0 (Low priority)
    + Priority 0 assumes "IDLE" class, with delta 0.
    + LAME will have the lowest priority possible, and the encoding may be suspended + very frequently by user interaction.
    +
    +
    1 (Medium priority)
    + Priority 1 assumes "IDLE" class, with delta +31.
    + LAME won't interfere at all with what you're doing.
    + Recommended if you have a slower machine.
    +
    +
    2 (Regular priority)
    + Priority 2 assumes "REGULAR" class, with delta -31.
    + LAME won't interfere with your activity. It'll run just like a regular process, + but will spare just a bit of idle time for the system. Recommended for most + users.
    +
    +
    3 (High priority)
    + Priority 3 assumes "REGULAR" class, with delta 0.
    + LAME will run with a priority a bit higher than a normal process.
    + Good if you're just running LAME by itself or with moderate user interaction.
    +
    +
    4 (Maximum priority)
    + Priority 4 assumes "REGULAR" class, with delta +31.
    + LAME will run with a very high priority, and may interfere with the machine + response.
    + Recommended if you only intend to run LAME by itself, or if you have a fast + processor.
    +
    +
    + Priority 1 or 2 is recommended for most users. +

    +
    +
    +
    +
    +
    +
    * -q 0..9    algorithm + quality selection
    +
    +
    +
    Bitrate is of course the main influence on quality. The higher the bitrate, + the higher the quality. But for a given bitrate, we have a choice of algorithms + to determine the best scalefactors and Huffman encoding (noise shaping).
    +
    + -q 0: use slowest & best possible version of all algorithms. -q 0 and -q 1 + are slow and may not produce significantly higher quality.
    +
    + -q 2: recommended. Same as -h.
    +
    + -q 5: default value. Good speed, reasonable quality.
    +
    + -q 7: same as -f. Very fast, ok quality. (psycho acoustics are used for pre-echo + & M/S, but no noise shaping is done.
    +
    + -q 9: disables almost all algorithms including psy-model. poor quality. +

    +
    +
    +
    +
    +
    +
    * -r    input file is + raw PCM
    +
    +
    +
    Assume the input file is raw PCM. Sampling rate and mono/stereo/jstereo + must be specified on the command line. Without -r, LAME will perform several + fseek()'s on the input file looking for WAV and AIFF headers.
    + Might not be available on your release. +

    +
    +
    +
    +
    +
    +
    * --replaygain-accurate    compute + ReplayGain more accurately and find the peak sample
    +
    +
    +
    + Enable decoding on the fly. Compute "Radio" ReplayGain on the decoded + data stream. Find the peak sample of the decoded data stream and store + it in the file.
    +
    + ReplayGain analysis does not affect the content of a + compressed data stream itself, it is a value stored in the header + of a sound file. Information on the purpose of ReplayGain and the + algorithms used is available from + http://www.replaygain.org/
    +
    + By default, LAME performs ReplayGain analysis on the input data + (after the user-specified volume scaling). This + behavior might give slightly inaccurate results because the data on + the output of a lossy compression/decompression sequence differs from + the initial input data. When --replaygain-accurate is specified the + mp3 stream gets decoded on the fly and the analysis is performed on the + decoded data stream. Although theoretically this method gives more + accurate results, it has several disadvantages: +
      +
    • tests have shown that the difference between the ReplayGain values + computed on the input data and decoded data is usually no greater + than 0.5dB, although the minimum volume difference the human ear + can perceive is about 1.0dB +
    • +
    • decoding on the fly significantly slows down the encoding process +
    • +
    + The apparent advantage is that: +
      +
    • with --replaygain-accurate the peak sample is determined and + stored in the file. The knowledge of the peak sample can be useful + to decoders (players) to prevent a negative effect called 'clipping' + that introduces distortion into sound. +
    • +
    +
    + Only the "RadioGain" ReplayGain value is computed. It is stored in the + LAME tag. The analysis is performed with the reference volume equal + to 89dB. Note: the reference volume has been changed from 83dB on + transition from version 3.95 to 3.95.1.
    +
    + This option is not usable if the MP3 decoder was explicitly + disabled in the build of LAME. (Note: if LAME is compiled without the + MP3 decoder, ReplayGain analysis is performed on the input data after + user-specified volume scaling).
    +
    + See also: --replaygain-fast, + --noreplaygain, --clipdetect +

    +
    +
    +
    +
    +
    +
    +
    * --replaygain-fast    compute + ReplayGain fast but slightly inaccurately (default)
    +
    +
    +
    + Compute "Radio" ReplayGain on the input data stream after user-specified + volume scaling and/or resampling.
    +
    + ReplayGain analysis does not affect the content of a + compressed data stream itself, it is a value stored in the header + of a sound file. Information on the purpose of ReplayGain and the + algorithms used is available from + http://www.replaygain.org/
    +
    + Only the "RadioGain" ReplayGain value is computed. It is stored in the + LAME tag. The analysis is performed with the reference volume equal + to 89dB. Note: the reference volume has been changed from 83dB on + transition from version 3.95 to 3.95.1.
    +
    + This switch is enabled by default.
    +
    + See also: --replaygain-accurate, + --noreplaygain +

    +
    +
    +
    +
    +
    +
    +
    * --resample 8/11.025/12/16/22.05/24/32/44.1/48    output + sampling frequency in kHz
    +
    +
    +
    Select output sampling frequency (for encoding only).
    + If not specified, LAME will automatically resample the input when using high + compression ratios. +

    +
    +
    +
    +
    +
    +
    +
    * -s 8/11.025/12/16/22.05/24/32/44.1/48    sampling + frequency
    +
    +
    +
    Required only for raw PCM input files. Otherwise it will be determined + from the header of the input file.
    +
    + LAME will automatically resample the input file to one of the supported MP3 + samplerates if necessary. +

    +
    +
    +
    +
    +
    +
    * -S / --silent / --quiet    silent + operation
    +
    +
    +
    Don't print progress report. +

    +
    +
    +
    +
    +
    +
    * --scale n    scales + input by n
    +
    * --scale-l n    scales + input channel 0 (left) by n
    +
    * --scale-r n    scales + input channel 1 (right) by n
    +
    +
    +
    Scales input by n. This just multiplies the PCM data (after it has been + converted to floating point) by n.
    +
    + n > 1: increase volume
    + n = 1: no effect
    + n < 1: reduce volume
    +
    + Use with care, since most MP3 decoders will truncate data which decodes to + values greater than 32768. +

    +
    +
    +
    +
    +
    +
    * --short    use + short blocks
    +
    +
    +
    Let LAME use short blocks when appropriate. It is the default setting. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --strictly-enforce-ISO    strict + ISO compliance
    +
    +
    +
    With this option, LAME will enforce the 7680 bit limitation on total frame + size.
    + This results in many wasted bits for high bitrate encodings but will ensure + strict ISO compatibility. This compatibility might be important for hardware + players. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * -t    disable INFO/WAV + header
    +
    +
    +
    Disable writing of the INFO Tag on encoding.
    + This tag in embedded in frame 0 of the MP3 file. It includes some information + about the encoding options of the file, and in VBR it lets VBR aware players + correctly seek and compute playing times of VBR files.
    +
    + When '--decode' is specified (decode to WAV), this flag will disable writing + of the WAV header. The output will be raw PCM, native endian format. Use -x + to swap bytes. +

    +
    +
    +
    +
    +
    +
    * -V 0...9    VBR quality + setting
    +
    +
    +
    Enable VBR (Variable BitRate) and specifies the value of VBR quality.
    + default=4
    + 0=highest quality. +

    +
    +
    +
    +
    +
    +
    * --vbr-new    new + VBR mode
    +
    +
    +
    Invokes the newest VBR algorithm. During the development of version 3.90, + considerable tuning was done on this algorithm, and it is now considered to + be on par with the original --vbr-old.
    + It has the added advantage of being very fast (over twice as fast as --vbr-old). +

    +
    +
    +
    +
    +
    +
    * --vbr-old    older + VBR mode
    +
    +
    +
    Invokes the oldest, most tested VBR algorithm. It produces very good quality + files, though is not very fast. This has, up through v3.89, been considered + the "workhorse" VBR algorithm. +

    +
    +
    +
    +
    +
    +
    * --verbose    verbosity
    +
    +
    +
    Print a lot of information on screen. +

    +
    +
    +
    +
    +
    +
    * -x    swapbytes +
    +
    +
    +
    Swap bytes in the input file or output file when using --decode.
    + For sorting out little endian/big endian type problems. If your encodings + sounds like static, try this first. +

    +
    +
    +
    +
    +
    +
    * -X 0...7    change + quality measure
    +
    +
    +
    When LAME searches for a "good" quantization, it has to compare the actual + one with the best one found so far. The comparison says which one is better, + the best so far or the actual. The -X parameter selects between different + approaches to make this decision, -X0 being the default mode:
    +
    + -X0
    + The criterions are (in order of importance):
    + * less distorted scalefactor bands
    + * the sum of noise over the thresholds is lower
    + * the total noise is lower
    +
    + -X1
    + The actual is better if the maximum noise over all scalefactor bands is less + than the best so far .
    +
    + -X2
    + The actual is better if the total sum of noise is lower than the best so far.
    +
    + -X3
    + The actual is better if the total sum of noise is lower than the best so far + and the maximum noise over all scalefactor bands is less than the best so + far plus 2db.
    +
    + -X4
    + Not yet documented.
    +
    + -X5
    + The criterions are (in order of importance):
    + * the sum of noise over the thresholds is lower
    + * the total sum of noise is lower
    +
    + -X6
    + The criterions are (in order of importance):
    + * the sum of noise over the thresholds is lower
    + * the maximum noise over all scalefactor bands is lower
    + * the total sum of noise is lower
    +
    + -X7
    + The criterions are:
    + * less distorted scalefactor bands
    + or
    + * the sum of noise over the thresholds is lower +
    + + diff --git a/lame-3.97/doc/html/Makefile.am b/lame-3.97/doc/html/Makefile.am new file mode 100644 index 0000000..503a124 --- /dev/null +++ b/lame-3.97/doc/html/Makefile.am @@ -0,0 +1,24 @@ +## $Id: Makefile.am,v 1.4 2002/10/15 09:54:04 aleidinger Exp $ + +AUTOMAKE_OPTIONS = foreign ansi2knr + +docdir = $(datadir)/doc +pkgdocdir = $(docdir)/$(PACKAGE) +htmldir = $(docdir)/html +pkghtmldir = $(pkgdocdir)/html + +pkghtml_DATA = \ + basic.html \ + contributors.html \ + examples.html \ + history.html \ + id3.html \ + index.html \ + lame.css \ + modes.html \ + node6.html \ + presets.html \ + switchs.html + +EXTRA_DIST = $(pkghtml_DATA) + diff --git a/lame-3.97/doc/html/Makefile.in b/lame-3.97/doc/html/Makefile.in new file mode 100644 index 0000000..70eb940 --- /dev/null +++ b/lame-3.97/doc/html/Makefile.in @@ -0,0 +1,389 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/html +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkghtmldir)" +pkghtmlDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkghtml_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = foreign ansi2knr +docdir = $(datadir)/doc +pkgdocdir = $(docdir)/$(PACKAGE) +htmldir = $(docdir)/html +pkghtmldir = $(pkgdocdir)/html +pkghtml_DATA = \ + basic.html \ + contributors.html \ + examples.html \ + history.html \ + id3.html \ + index.html \ + lame.css \ + modes.html \ + node6.html \ + presets.html \ + switchs.html + +EXTRA_DIST = $(pkghtml_DATA) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/html/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/html/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkghtmlDATA: $(pkghtml_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkghtmldir)" || $(mkdir_p) "$(DESTDIR)$(pkghtmldir)" + @list='$(pkghtml_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkghtmlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkghtmldir)/$$f'"; \ + $(pkghtmlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkghtmldir)/$$f"; \ + done + +uninstall-pkghtmlDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkghtml_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkghtmldir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkghtmldir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(pkghtmldir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pkghtmlDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pkghtmlDATA + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-pkghtmlDATA \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-info-am uninstall-pkghtmlDATA + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/doc/html/basic.html b/lame-3.97/doc/html/basic.html new file mode 100644 index 0000000..85c0939 --- /dev/null +++ b/lame-3.97/doc/html/basic.html @@ -0,0 +1,158 @@ + + + +Basic command line switch reference + + + + + + + + +

    Basic command line switch reference

    +
    +Only the most usual switches are described here. However those should be sufficient +for the vast majority of users. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    switchparameter
    --abraverage bitrate encoding
    -bbitrate (8...320)
    --decodedecoding only
    -f fast mode
    -hhigh quality
    --help help
    -m mmono mode
    -VVBR quality setting (0...9)
    +
    +

    +
    * --abr n    average + bitrate encoding +
    +
    +
    Turns on encoding with a targeted average bitrate of n kbits, allowing to + use frames of different sizes. The allowed range of n is 8-320, you can use + any integer value within that range. +

    +
    +
    +
    +
    +
    +
    * -b n    bitrate +
    +
    +
    +
    For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz)
    + n = 32,40,48,56,64,80,96,112,128,160,192,224,256,320
    +
    + For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz)
    + n = 8,16,24,32,40,48,56,64,80,96,112,128,144,160
    +
    + Default is 128 kbs for MPEG1 and 80 kbs for MPEG2. +

    +
    +
    +
    +
    +
    +
    * --decode    decoding + only
    +
    +
    +
    Uses LAME for decoding to a WAV file. The input file can be any input type + supported by encoding, including layer I,II,III (MP3). +

    +
    +
    +
    +
    +
    +
    * -f    fast mode +
    +
    +
    +
    This switch forces the encoder to use a faster encoding mode, but with + a lower quality. +

    +
    +
    +
    +
    +
    +
    * -h    high quality +
    +
    +
    +
    Use some quality improvements. Encoding will be slower, but the result + will be of higher quality.
    + This switch is always enabled when using VBR. +

    +
    +
    +
    +
    +
    +
    * --help    help +
    +
    +
    +
    Display a list of all available options. +

    +
    +
    +
    +
    +
    +
    * -m m    mono + mode
    +
    +
    +
    The input will be encoded as a mono signal. +

    +
    +
    +
    +
    +
    +
    * -V 0...9    VBR quality + setting
    +
    +
    +
    Enable VBR (Variable BitRate) and specifies the value of VBR quality.
    + default=4
    + 0=highest quality. +
    + + diff --git a/lame-3.97/doc/html/contributors.html b/lame-3.97/doc/html/contributors.html new file mode 100644 index 0000000..005b4cf --- /dev/null +++ b/lame-3.97/doc/html/contributors.html @@ -0,0 +1,165 @@ + + +Contributors + + + +
    +

    Contributors

    +
    +
    +

    The following people contributed to the LAME development:

    +

    Lauri Ahonen
    + Sakari Ailus
    + Tero Auvinen
    + Michal Bacik
    + Alex Ballegooy
    + Wilfried Behne
    + Bob Bell
    + Simon Blandford
    + Segher Boessenkool
    + Florian Bome
    + Lionel Bonnet
    + Gabriel Bouvigne
    + Rogério Theodoro de Brito
    + Erik de Castro Lopo
    + David Chandler
    + Michael Cheng
    + John Dahlstrom
    + Goran Dokic
    + James Droppo
    + Sergey Dubov
    + Dominique Duvivier
    + John Edwards
    + Alvaro Martinez Echevarria
    + Joakim Enerstam
    + Albert Faber
    + Nils Faerber
    + Sami Farin
    + Mikhail M. Fedotov
    + Joseph Fourier
    + Jani Frilander
    + Richard Gorton
    + Casper Gripenberg
    + Steffan Haeuser
    + Jeremy Hall
    + Paul Hartman
    + John Hayward-Warburton
    + Peder Hedlund
    + Robert Hegemann
    + Mathew Hendry
    + Magnus Holmgren
    + Ben "Jacobs"
    + Tamito Kajiyama
    + Ti Kan
    + Mo Katz
    + Iwasa Kazmi
    + Ralf Kempkens
    + Frank Klemm
    + Aleksander Korzynski
    + Joachim Kuebart
    + Leonid Kulakov
    + Dmitry Kutsanov
    + Jarmo Laakkonen
    + An van Lam
    + Juha Laukala
    + Greg Lehey
    + Felix von Leitner
    + Rafael Luebbert
    + Macik
    + Lars Magne Ingebrigtsen
    + Scott Manley
    + Vladimir Marek
    + Goran Markovic
    + Sergey A. Maslyakov
    + Chris Matrakidis
    + Greg Maxwell
    + Scott Miller
    + Darin Morrison
    + Tomasz Motylewski
    + Kimmo Mustonen
    + Dan Nelson
    + Anton Oleynikov
    + Mike Oliphant
    + André Osterhues
    + Johannes Overmann
    + Gian-Carlo Pascutto
    + Jan Peman
    + Jan Rafaj
    + Gertjan van Ratingen
    + Miguel Revilla Rodriguez
    + Shawn Riley
    + Tim Ruddick
    + Ingo Saitz
    + Conrad Sanderson
    + Sergey Sapelin
    + William Schelter
    + Justin Schoeman
    + Naoki Shibata
    + Sigbj�rn Skj�ret
    + Nathan Slingerland
    + Patrick De Smet
    + Acy Stapp
    + Mark Stephens
    + Alexander Stumpf
    + Stephane Tavenard
    + Mark Taylor
    + Mikhail Teterin
    + Brad Threatt
    + Takehiro Tominaga
    + Warren Toomey
    + Atro Tossavainen
    + Roel Van Den Berghe
    + Christopher Wise
    + Martin Weghofer
    + William Welch
    + Gerhard Wesp
    + Alfred Weyers
    + Ethan Yeo
    + Chuck Zenkus

    +

     

    +

    Original ISO contributors:

    +

    Bill Aspromonte
    + Shaun Astarabadi
    + R. Bittner
    + Karlheinz Brandenburg
    + W. Joseph Carter
    + Jack Chang
    + Mike Coleman
    + Johnathan Devine
    + Ernst Eberlein
    + Dan Ellis
    + Peter Farrett
    + Jean-Georges Fritsch
    + Vlad Fruchter
    + Hendrik Fuchs
    + Bernhard Grill
    + Amit Gulati
    + Munsi Haque
    + Chuck Hsiao
    + Toshiyuki Ishino
    + Masahiro Iwadare
    + Earl Jennings
    + James Johnston
    + Leon v.d. Kerkhof
    + Don Lee
    + Mike Li
    + Yu-Tang Lin
    + Soren Neilsen
    + Simao F. Campos Neto
    + Mark Paley
    + Davis Pan
    + Tan Ah Peng
    + Kevin Peterson
    + Juan Pineda
    + Ernst F. Schroeder
    + Peter Siebert
    + Jens Spille
    + John Stewart
    + Sam Stewart
    + Al Tabayoyon
    + Kathy Wang
    + Franz-Otto Witte
    + Douglas Wong

    + + diff --git a/lame-3.97/doc/html/examples.html b/lame-3.97/doc/html/examples.html new file mode 100644 index 0000000..ebe5df8 --- /dev/null +++ b/lame-3.97/doc/html/examples.html @@ -0,0 +1,44 @@ + + + + + + + + + + Some command line examples + + + +

    Some command line examples

    +
      +
    • Fixed bit rate 128kbps encoding:
      + lame sample.wav sample.mp3
      +
      +
    • +
    • Fixed bit rate jstereo 128kbps encoding, high quality (recommended):
      + lame -h sample.wav sample.mp3
      +
      +
    • +
    • Average bit rate 112kbps encoding:
      + lame --abr 112 sample.wav sample.mp3
      +
      +
    • +
    • Fast encode, low quality (no psycho-acoustics):
      + lame -f sample.wav sample.mp3
      +
      +
    • +
    • Variable bitrate (use -V n to adjust quality/filesize):
      + lame -h -V 6 sample.wav sample.mp3
      +
      +
    • +
    • Streaming mono 22.05 kHz raw pcm, 24 kbps output:
      + cat inputfile | lame -r -m m -b 24 -s 22.05 -- > output
      +
      +
    • +
    • Streaming mono 44.1 kHz raw pcm, with downsampling to 22.05 kHz:
      + cat inputfile | lame -r -m m -b 24 --resample 22.05 -- > output
    • +
    + + diff --git a/lame-3.97/doc/html/history.html b/lame-3.97/doc/html/history.html new file mode 100644 index 0000000..0283d0e --- /dev/null +++ b/lame-3.97/doc/html/history.html @@ -0,0 +1,1513 @@ + + + + + + +LAME Changelog + + +
    +

    History

    +
    +Starting with LAME 3.0:
    +red = features and bug fixes which affect quality +
    +blue = features and bug fixes which affect speed +
    +black = usability, portability, other +
    +

    LAME 3.97   September 24 2006

    +
      +
    • 3.97 beta 3 becomes 3.97 +
    • +
    +
    +

    LAME 3.97 beta 3   August 19 2006

    +
      +
    • Gabriel Bouvigne: +
        +
      • Workaround against a short blocks detection issue
      • +
      +
    • +
    +
    +

    LAME 3.97 beta 2   November 26 2005

    +
      +
    • Gabriel Bouvigne: +
        +
      • Fixed an initialization error when input is not using a standard sampling frequency
      • +
      • Fixed a possible assertion failure in very low bitrate encoding
      • +
      • Slight change regarding ATH adjustment with V5
      • +
      • Reinstated bit reservoir for 320kbps CBR
      • +
      • ReplayGain analysis should now be faster when encountering silent parts
      • +
      +
    • +
    • Takehiro Tominaga: +
        +
      • Fixed a possible link problem of assembly code
      • +
      +
    • +
    +
    +

    LAME 3.97 beta 1   September 12 2005

    +
      +
    • Takehiro Tominaga: +
        +
      • Fixed an out of array access in mp3rtp +
      • Fixed a quality setting in DLL
      • +
      • Fixed display when using --silent
      • +
      +
    • +
    • Vitaly Ivanov: +
        +
      • Updated DirectShow interface
      • +
      +
    • +
    • Robert Hegemann: +
        +
      • Fixed an out of array access
      • +
      • Fixed some small rounding problem in vbr-new quantization routines
      • +
      • Fixed a bug in vbr-new regarding high frequencies (sfb21) when using -Y
      • +
      • Fixed a few bugs in vbr-new when using -Y
      • +
      • Updated scalefactors allocation scheme in vbr-new
      • +
      • Fixed mingw32 configure problems
      • +
      • Resolved some compiler warnings
      • +
      • Updated command-line visualisation
      • +
      +
    • +
    • Gabriel Bouvigne: +
        +
      • Changed some FLOAT8 to FLOAT
      • +
      • Added project files for VC7
      • +
      • Reworked -q1 and -q0
      • +
      • Updated presets
      • +
      • Fixed an error in ISO quantization on systems not using the IEEE754 hack
      • +
      • Faster quantization
      • +
      • SSE version of init_xrpow
      • +
      +
    • +
    • Rog�rio Brito: +
        +
      • Updated Debian packaging
      • +
      • Documentation work
      • +
      +
    • +
    • Chris Miller: +
        +
      • Support for x64 platform SDK in makefile.msvc
      • +
      +
    • +
    +
    +

    LAME 3.96.1    July 25 2004

    +
      +
    • Robert Hegemann: +
        +
      • Fixed a rare bug in vbr-new (could lead to crashes or data corruption)
      • +
      +
    • +
    • Gabriel Bouvigne: +
        +
      • some fixes in ACM codec
      • +
      • fixed padding when encoding to 320kbps
      • +
      • fixed block size selection for mid and side channels
      • +
      +
    • +
    +
    +

    LAME 3.96    April 11 2004

    +
      +
    • Gabriel Bouvigne: +
        +
      • new quantization selection mode (used in ABR/CBR)
      • +
      • set sfscale for ABR/CBR up to 160kbps
      • +
      +
    • +
    +
    +

    LAME 3.96 beta 2    March 28 2004

    +
      +
    • Takehiro Tominaga: +
        +
      • removed unnecessary integer convertion in resampling
      • +
    • +
    • Robert Hegemann: +
        +
      • reworked scalefactor allocation in vbr-new
      • +
      • fixed a freeformat decoding problem
      • +
      +
    • Gabriel Bouvigne: +
        +
      • updated minimal bitrate for V1 and V2
      • +
      +
    • +
    • Aleksander Korzynski: +
        +
      • added ability to disable ReplayGain analysis
      • +
      +
    • +
    +
    +

    LAME 3.96 beta    March 7 2004

    +
      +
    • Takehiro Tominaga: +
        +
      • fixed decoding issue
      • +
    • +
    • Aleksander Korzynski: +
        +
      • changed internal ReplayGain handling
      • +
      • fixed some issues when ReplayGain is used with resampling
      • +
      +
    • +
    • Robert Hegemann: +
        +
      • added standard ISO quantization for vbr-new, used at lower quality settings
      • +
      • faster count_bits for vbr-new
      • +
      • faster find_scalefac_ave function for vbr-new
      • +
      • fixed an out of array access in psychoacoustic models; + this bug could make some psy calculations worthless and sometimes let lame crash
      • +
      • fixed an error on silent scalefactor bands; + this bug resulted in huffman data overrun problems while decoding, + resulting in audible glitches
      • +
      • fixed a freeformat decoding bug
      • +
      +
    • Gabriel Bouvigne: +
        +
      • adjusted short block thresholds
      • +
      • fixed some array addressing bugs
      • +
      • made ReplayGain analysis reentrant
      • +
      +
    • +
    • David Chandler: fixed a crash in quantize_xrpow +
    • +
    • Michal Bacik: fixed a crash when using 8kHz +
    • +
    • Goran Markovic: fixed some decoding bugs +
    • +
    • John Edwards: fixed a too small buffer in ReplayGain code
    • +
    +
    +

    LAME 3.95.1    January 12 2004

    +
      +
    • Gabriel Bouvigne: +
        +
      • fixed a crash when using vbr-new
      • +
      • changed ReplayGain reference level to 89dB
      • +
    • +
    +
    +

    LAME 3.95    January 11 2004

    +
      +
    • Gabriel Bouvigne: +
        +
      • fixed lowpass values when using vbr with mono files
      • +
      • faster quantization loops
      • +
      • faster count_bits
      • +
      • fixed a buffer requirement error in ACM codec
      • +
    • +
    • Takehiro TOMINAGA: +
        +
      • fixed mpglib and other decoding support code to prevent the crash when invalid mp3 input
      • +
    • +
    • removed Layer I decoding support
    • +
    • use FastLog and IEEE 754 hack on PowerPC too (approx. 10 percent faster)
    • +
    +
    +

    LAME 3.94 beta December 15 2003

    +
      +
    • Takehiro Tominaga: +
        +
      • fixed block switching of nspsytune
      • +
      • best huffman divide in the inner loop. + This should improve the quality, but PAINFULLY slow. So it is not enabled + by default. Use -q0 to use it.
      • +
      • Changed -q option mapping. "-q2" until version 3.93 is now "-q3".
      • +
      • saving bits by better scalefactor storing
      • +
      • removed Vorbis support
      • +
      • substep quantization.This should help breaking + the SFB21 bloating problem
      • +
      • made psychoacoustic model aware of ATH adjustements
      • +
      • use ATH value as short block masking lower limit
      • +
      • several fixes in psychoacoustic model
      • +
      • more robust decoding
      • +
    • +
    • Mark Taylor / Gabriel Bouvigne: fixed issues in VBR header
    • +
    • Mark Taylor: workaround against some hardware decoder defficiencies
    • +
    • Aleksander Korzynski: ability to compute the "Radio" ReplayGain and detect clipping + on the fly. The ReplayGain value is stored in the Lame tag.
    • +
    • Gabriel Bouvigne: +
        +
      • work on presets
      • +
      • use presets by default for cbr/abr
      • +
      • use presets by default for vbr
      • +
      • analog silence detection in partitionned sfb21
      • +
      • do not compute noise in upper 0 part of the spectrum
      • +
      • only compute noise in modified scalefactor bands
      • +
    • +
    • Guillaume Lessard: +
        +
      • nogap related changes
      • +
    • +
    • Alexander Leidinger: +
        +
      • prevent closing the input fd prematurely if the input is a named pipe
      • +
    • +
    +
    +

    LAME 3.93.1    December 1 2002

    +
      +
    • Gabriel Bouvigne: +
        +
      • preset medium added to the dll interface
      • +
      • fix for abr/cbr presets
      • +
      • fix -q0 switch
      • +
      +
    • +
    • Alexander Leidinger: fix link problem on systems where socket() resides + in libsocket
    • +
    +
    +

    LAME 3.93    November 16 2002

    +
      +
    • Takehiro Tominaga: +
        +
      • bit allocation for pre-echo control improved for + single channel encodings
      • +
      • substep noise shaping
      • +
      • optimizations by changing data structure
      • +
      • noise shaping model 2 fix
      • +
      • nspsytune FIR filter clean up
      • +
      • fix small psymodel bugs(DC current estimation, + preecho detection of non-VBR mode, and nspsymode initialization)
      • +
      • portability fixes for Tru64 UNIX
      • +
      +
    • +
    • Albert Faber: some fixes in the DLL
    • +
    • Simon Blandford: fixes for channel scaling in mono mode
    • +
    • Dominique Duvivier: some optimizations and a faster + log10 function
    • +
    • Mark Taylor: +
        +
      • some tag related fixes in the direct show filter and in the ACM codec
      • +
      • fixed a mono encoding bug found by Justin Schoeman
      • +
      • calc_noise bug fix
      • +
      • other fixes
      • +
      +
    • +
    • Alexander Leidinger: +
        +
      • update to autoconf 2.53, rewrite some configure tests
      • +
      • Akos Maroy: determine gcc version even with gcc 3.1
      • +
      • Andrew Bachmann: compile shared libs on BeOS (and perhaps other arches)
      • +
      • ultrasparc switches for gcc 3.1
      • +
      • fixes for SunOS 4.x
      • +
      • fixes for 64bit arches
      • +
      • CFLAGS fix for IRIX
      • +
      • don't override CFLAGS if exptopt isn't requested
      • +
      +
    • +
    • Robert Hegeman: +
        +
      • some fixes
      • +
      • some fixes for VBR
      • +
      +
    • +
    • Gabriel Bouvigne: +
        +
      • --noasm switch. Might help Cyrix/Via users
      • +
      • presets and alt-presets merged
      • +
      +
    • +
    +
    +

    LAME 3.92    April 14 2002

    +
      +
    • Alexander Leidinger:  add non linear psymodel + (compile time option, disabled by default), workaround a bug in gcc + 3.0.3 (compiler options, based upon suggestions from various people, see archives + and changelog for more)
    • +
    • Steve Lhomme:  ACM wrapper (MS-Windows codec)
    • +
    • Steve Lhomme:  less memory copying on stereo + (interleaved) input
    • +
    • Takehiro Tominaga: Inter-channel masking, enables + with --interch x option
    • +
    • For buggy versions of gcc compiler (2.96*), back off on some of the advanced + compiler options
      +
    • +
    +
    +

    LAME 3.91    December 29 2001

    +
      +
    • Darin Morrison:  Bugfix for --alt-preset (for + content with low volume, clean vocals), only important for the "fast standard" + preset +
    • +
    • Alexander Leidinger: +
        +
      • add some missing files to the distribution
      • +
      • add --alt-preset to the man page
      • +
      +
    • +
    +
    +

    LAME 3.90    December 21 2001

    +
      +
    • Many small improvements and bug fixes not added to + history
    • +
    • John Dahlstrom:  more fine tuning on the auto + adjustment of the ATH
    • +
    • Robert Hegemann:  small speed and quality improvements + for the old VBR code (--vbr-old).
    • +
    • Robert Hegemann:  some short block bug fixes +
    • +
    • Robert Hegemann:  Big improvements to --vbr-mtrh, + now encodes much more frequencies over 16khz
    • +
    • Robert Hegemann:  --vbr-new code disabled (outdated + and lower quality) and replaced with --vbr-mtrh (Both --vbr-new and --vbr-mtrh + now default to mtrh)
    • +
    • Robert Hegemann:  reordering of --longhelp to give more information, + --extrahelp dropped
    • +
    • Darin Morrison:  Totally revamped and extremely high quality unified + preset system and other general quality improvements now available with --alt-presets: +
        +
      • some improvements to psychoacoustics (vast improvements + over default L.A.M.E. modes) when --alt-preset is used including:
      • +
          +
        • Improved tuning of short block usage.
        • +
        • Improved quantization selection usage (the + -X modes), now adapts between appropriate modes on the fly. Also helps + on "dropout" problems and with pre-echo cases.
        • +
        • Improved joint stereo usage. Thresholds are + better tuned now and fix some "dropout" problems L.A.M.E. suffers from + on clips like serioustrouble.
        • +
        • Improved noise shaping usage. Now switches + between noise shaping modes on the fly (toggles -Z on and off when appropriate) + which allows lower bitrates but without the quality compromise.
        • +
        • Clips vastly improved over default L.A.M.E. + modes (vbr/cbr/abr, including --r3mix): castanets, florida_seq, death2, + fatboy, spahm, gbtinc, ravebase, short, florida_seq, hihat, bassdrum, + 2nd_vent_clip, serioustrouble, bloodline, and others. No degraded clips + known.
        • +
        • VBR bitrates are now more "stable" with less fluctuation -- not dipping + too low on some music and not increasing too high unnecessarily on other + music. "--alt-preset standard" provides bitrates roughly within the + range of 180-220kbps, often averaging close to 192kbps.
        • +
        +
      • --alt-presets replace the --dm-presets and "metal" preset is removed + and replaced with generic abr and cbr presets.
      • +
      • --alt-preset extreme (note the 'e') replaces xtreme to help eliminate + some confusion
      • +
      • --alt-preset vbr modes now have a fast option which offers almost no + compromise in speed.
      • +
      • --alt-preset standard (and "fast standard") are now much lower in bitrate, + matching --r3mix with an overall average, though offering higher quality + especially on difficult test samples.
      • +
      • --alt-presets are no longer just "presets" as in a collection of switches, + instead they are now quality "modes" because of special code level tunings + (those mentioned above).
      • +
      • Use --alt-preset help for more information.
      • +
      +
    • +
    • Roel VdB: more tuning on the --r3mix preset
    • +
    • Jon Dee, Roel VdB:  INFO tag
    • +
    • Alexander Leidinger, mp3gain@hotmail.com:  added --scale-l and --scale-r + to scale stereo channels independantly
    • +
    • Takehiro Tominaga:  new noise shaping mode, offering + more "cutting edge" shaping according to masking, enabled via -q0
    • +
    • Mark Taylor:  More work on --nogap
    • +
    • Gabriel Bouvigne:  Small changes to abr code for more accurate final + bitrate
    • +
    • Gabriel Bouvigne, mp3gain@hotmail.com:  Preliminary ReplayGain analysis code added (not functional + yet)
    • +
    • Gabriel Bouvigne, Alexander Leidinger:  Documentation updates
    • +
    • John Dahlstrom, DSPguru@math.com:  floating point interface function + in the Windows DLL
    • +
    +
    +

    LAME 3.89beta   July 5 2001

    +
      +
    • John Stewart:  long filename support for Win9x/NT.
    • +
    • Takehiro Tominaga:  LAME can calculate the CRC of VBR header, so now + "lame -pv" works fine.
    • +
    • Robert Hegemann:  Improvements of the new VBR + code (--vbr-mtrh).
    • +
    • Robert Hegemann: New VBR code (--vbr-mtrh) is now + defaulted to get more feedback. The VBR speed is now on par with CBR. We will + use the old VBR code in the release.
    • +
    • Gabriel Bouvigne: Change of the maximum frame size + limit. LAME should now be more friendly with hardware players.
    • +
    • Gabriel Bouvigne: Size of VBR is now more balanced according to the -V value.
    • +
    • Alexander Leidinger: Finished the implementation of the set/get functions.
    • +
    • John Dahlstrom: LAME now handles 24bits input
    • +
    • Mark Taylor: bugs in lame --decode causing truncation of mp3 file fixed
    • +
    • Mark Taylor: preliminary --nogap support
    • +
    • "Final" API completed: shared library safe!  This API is frozen and + should be backwords compatiable with future versions of libmp3lame.so, but + we will continue to add new functionality.  
      +
    • +
    +

    LAME 3.88beta   March 25 2001

    +
      +
    • A lot of work that was never added to the History!
    • +
    • Frank Klemm and Gabriel Bouvigne:  New ATH formula.  + Big improvement for high bitrate encodings.
    • +
    • Takehiro Tominaga: Temporal masking
    • +
    • Gabriel Bouvigne/Mark Taylor: auto adjustment of + ATH
    • +
    • Robert Hegemann:  Better outer_loop stopping + criterion.  Enabled with -q2 or better.
    • +
    • Robert Hegemann/Naoki Shibata:  slow/carefull + noise shaping.  -q3..9:  amplify all distorted bands.  -q2: + amplify distorted bands within 50%.  -q1-0:  amplify only most distorted + band at each iteration.
    • +
    • Takehiro Tominaga: Interframe, shortblock temporal + masking.
    • +
    • Takehiro Tominaga:  LAME restructured into a shared library and front + end application.  Slight changes to the API. More changes are coming + to turn LAME into a true shared library (right now you have to recompile if + you upgrade the library :-(
    • +
    • Naoki Shibata:
    • +
        +
      • improvements to psychoacoustics (--nspsytune)
      • +
      • BUG in long block pre echo control fixed + (some out of range array access in M/S psychoacoustics)
      • +
      +
    • Ralf Kempkens:    Visual Basic Script + for lame, suggested to put it on your Windows Desktop and you can drag'n'drop + Waves to encode on it.
    • +
    • Alexander Stumpf:    improved lame.bat + for 4Dos users
    • +
    • Mark Taylor: Several bugs fixed in the resampling + code.
    • +
    • Frank Klemm, Robert Hegemann:    added + assembler code for CPU feature detection on runtime (MMX, 3DNow, SIMD)
    • +
    • Takehiro Tominaga: 3DNow FFT code.
    • +
    • Florian Bome, Alexander Leidinger:    + more work on configure stuff
    • +
    • Alexander Leidinger:   automake/libtool + generated Makefiles and TONS of other work.
    • +
    • Alexander Leidinger:   Much work towards + shared library style API.
    • +
    • Anonymous: New more efficient RTP code.
    • +
    • Mark Taylor: psycho-acoustic data now computed for + all scalefactor bands (up to 24 kHz)
    • +
    • Mark Taylor, Takehiro Tominaga: All ISO table data + replaced by formulas - should improve MPEG2.5 results for which we never had + correct table data.
    • +
    +

    LAME 3.87alpha  September 25 2000

    +
      +
    • Mark Taylor:  Bug fixed in LAME/mpglib error recovery when encountering + a corrupt  MP3 frame during *decoding*.
    • +
    • Albert Faber:  added LayerI+II decoding support
    • +
    • Frank Klemm:  added improved CRC calculation
    • +
    • Frank Klemm: substantial code cleanup/improvements
    • +
    • Robert Hegemann:  Bug fixes
    • +
        +
      • in huffman_init, could lead to segmentation + faults (only in rare cases, most likely at lower sample rates)
      • +
      • M/S switching at lower sample rates (the + fact there is no 2nd granule was ignored)
      • +
      +
    • Robert Hegemann:  speed up in  VBR
    • +
    • Jarmo Laakkonen:  Amiga/GCC settings for Makefile.unix.
    • +
    • Magnus Holmgren:  README and Makefile for (free) Borland C++  + compiler. Will also compile lame_enc.dll, but this is untested.
    • +
    • Florian Bome:   LAME finally has a  ./configure script!!
    • +
    +

    LAME 3.86beta  August 6 2000

    +
      +
    • Christopher Wise:  A makefile for DJGPP, the DOS version of gcc.  + Now most windows users should be able to compile LAME with minimal effort.
    • +
    • Robert Hegemann:  old VBR:   fixed + some bugs and Takehiro's scalefac_scale feature (not yet on by  default.)  + older LAME versions did not allow to spent more than 2500 bits of 4095 possible + bits to a granule per channel, now fixed.
    • +
    • Robert Hegemann:  new VBR:   analog silence treatment like + in old VBR
    • +
    • William Welch:  Improved options for Linux/Alpha gcc and ccc compilers + in Makefile.
    • +
    • Mathew Hendry:  setting appropriate CRC bit for additional Xing-VBR + tagging frame
    • +
    • Don Melton:  added ID3 version 2 TAG support
    • +
    • John Dahlstrom: fixed bug allowing timing information + (for status in command line encoder) to overflow.
    • +
    • Tamito KAJIYAMA, Fixed several bugs in the LAME/Vorbis + interface.
    • +
    • Mark Taylor:  lame --decode will recognize Album + ID tags
    • +
    • Naoki Shibata:  Additive masking and other improvements + to psycho acoustics.  (not yet on by default)
    • +
    +

    LAME 3.85beta   July 3 2000

    +
      +
    • Takehiro Tominaga:  mid/side stereo demasking + thresholds updated.
    • +
    • Takehiro Tominaga: New short block MDCT coefficient data structure.  + Should allow for future speed improvements.
    • +
    • Robert Hegemann:  fixed bug in old VBR routine, the --noath mode messed + up the VBR routine resulting in very large files
    • +
    • Robert Hegemann: found bugs in some sections when using 32 bit floating + point.  Default is now back to 64bit floating point.
    • +
    • Takehiro Tominaga:  Modified PE formula to use + ATH.
    • +
    • S.T.L.:  README.DJGPP - instructions for compiling + LAME with DJGPP, the dos version of gcc.
    • +
    +

    LAME 3.84beta  June 30  2000

    +
      +
    • Mark Weinstein:  .wav file output (with --decode option) was writing + the wrong filesize in the .wav file.  Now fixed.
    • +
    • Mark Taylor:  (optional) Vorbis support, both encoding and decoding.  + LAME can now produce .ogg files, or even re-encode your entire .ogg collection + into mp3.   (Just kidding: it is always a bad idea to convert from + one lossy format to another)
    • +
    • ?: Bug fixed causing VBR to crash under windows.   (pretab[] + array overflow)
    • +
    • Sergey Sapelin: Another bug found in the mpg123 MPEG2 tables.  Now + fixed for the mpg123 based decoder in LAME.
    • +
    • Marco Remondini:  VBR histogram works in win32.  compile with + -DBRHIST -DNOTERMCAP
    • +
    • Takehiro Tominaga:  LAME CBR will now use scalefac_scale + to expand the dynamic range of the scalefactors.
    • +
    • Iwasa Kazmi:  Library improvements:  exit()'s, + printf, fprintf's are being replaced by interceptable macros.
    • +
    +

    LAME 3.83beta  May 19  2000

    +
      +
    • Mark Taylor:  Bug in buffering routines:  + in some cases, could cause MDCT  to read past end of buffer.  Rare + in MPEG2, even more rare for MPEG1, but potentially serious!
    • +
    • Mark Taylor:  MDCT/polyphase filterbank was not being "primed" properly.  + Does not effect output unless you set the encoder delay lower than the default + of 576 samples.
    • +
    • Mark Taylor:  "vdbj" and "Caster"  found + several VBR bugs (now fixed):   1.  Analog silence detection + only checked frequencies up to 16 kHz.  2.  VBR mode could still + somehow avoid -F mode.  3.  VBR mode would ignore noise above 16 + kHz (scalefactor band 22), Now calc_noise1 will compute the noise in this + band when in VBR mode.  Not calculated in CBR  mode since CBR algorithm + has no way of using this information.
    • +
    • Mark Taylor:  scalefactor band 22 info (masking(=ATH),  noise + and energy) now displayed in frame analyzer.
    • +
    • VBR code ATH tuning was disabled by accident in 3.81, + now fixed.
    • +
    • Mark Taylor:  lame --decode will produce .wav + files.  (oops - size is off by a factor of 4)
    • +
    +

    LAME 3.82beta   May 11 2000

    +
      +
    • Robert Hegemann:  Fixed bug in high bitrate joint stereo encodings.
    • +
    • Naoki Shibata:  new long block MDCT routine
    • +
    +

    LAME 3.81beta  May 8 2000

    +
      +
    • all ISO code removed!
    • +
    • Takehiro Tominaga and Naoki Shibata:  new window + subband routines.
    • +
    • Naoki Shibata:  Bug fix in mpglib (decoding) + lib:  in some cases, MDCT coefficients from previous granule was incorrectly + used for the next granule.
    • +
    • ISO 7680 bit buffer limitation removed.  It + can be reactivated with "--strictly-enforce-ISO"  Please report any trouble + with high bitrates.
    • +
    +

    LAME 3.80beta  May 6 2000

    +
      +
    • Takehiro Tominaga:  more efficient and faster + huffman encoding!
    • +
    • Takehiro Tominaga and Mark Taylor:  much improved + short block compression!
    • +
    • Tomasz Motylewski and Mark Taylor:  MPEG2.5 + now supported!
    • +
    • Mark Taylor: incorporated Takehiro's bitstream.c!  + bitstream.c used by default, but old ISO bitstream code can also be used.
    • +
    • Scott  Manley and Mark Taylor:  good resampling + routine finaly in LAME.  uses a 19 point FIR filter with Blackman window.  + Very slow for non integer resampling ratios.
    • +
    • Iwasa Kazmi:  fixed SIGBUS error:  VBR + and id3 tags were using data after it was free()'d.
    • +
    • Robert Hegemann:  Improved VBR tuning.  + #define RH_QUALITY_CONTROL and #RH_SIDE_VBR now the defaults.
    • +
    • Robert Hegemann:   LAME version string + now added to ancillary data.
    • +
    • Kimmo Mustonen:  VBR histogram support for Amiga.
    • +
    • Casper Gripenberg:  VBR stats (but not histogram) for DOS verson.
    • +
    • Robert Hegemann:  rare VBR overflow bug fixed.
    • +
    • Zack:  -F option strictly enforces the VBR min bitrate.  Without + -F, LAME will ignore the minimum bitrate when encoding analog silence.
    • +
    • Shawn Riley:  User can now specify a compression ratio (--comp <arg>) + instead of a bit rate.  Default settings based on a compression ratio + of 11.0
    • +
    • Mark Taylor:  free format bitstreams can be created with --freeformat, + and specify any integer bitrate from 8 to 320kbs with -b.
    • +
    • Mark Taylor: lame be used as a decoder (output raw pcm only):  lame + --decode input.mp3 output.pcm
    • +
    +

    LAME 3.70   April 6 2000

    +
      +
    • "LAME 3.69beta" becomes LAME 3.70 "stable"
    • +
    +

    LAME 3.69beta   April 6 2000

    +
      +
    • "spahm":  default mode selection bug fixed.  In some cases, lame + was defaulting to regular stereo instead of jstereo when the user did not + specify a mode.
    • +
    +

    LAME 3.68beta  April 4 2000

    +
      +
    • Mark Taylor: mono encoding bug in DLL fixed.
    • +
    • Ingo Saitz: bug in --cwlimit argument parsing fixed.
    • +
    • Scott Manly: bug in 4-point resample code fixed.
    • +
    +

    LAME 3.67beta  March 27 2000

    +
      +
    • Robert Hegemann:  jstereo now enabled for MPEG2 + encodings
    • +
    • Mark Taylor: old M/S stereo mode which used L/R maskings has been removed.
    • +
    • Mark Taylor: Xing MPEG2 VBR headers now working.
    • +
    • Mark Taylor:  When quantized coefficients are + all 0 in a band, set scalefactors to 0 also to save a few bits.
    • +
    • Ingo Saitz:  Problems with framesize calculation + when using -f fast-math option fixed.
    • +
    +

    LAME 3.66beta March 21 2000

    +
      +
    • Bug fixes in BladeEnc DLL, possible click in last mp3 frame, VBR historgram + display, byteswapping option, ASM quantize routines work for both float and + double.
    • +
    +

    LAME 3.65beta   March 17 2000

    +
      +
    • Enabled ASM version of quantize_xrpow() - accidently disabled in lame3.64.
    • +
    +

    LAME 3.64beta  March 16 2000

    +
      +
    • Don Melton:  id3v1.1 tags & id3 bugfixes
    • +
    • Gabriel Bouvigne:  L/R matching block type fix
    • +
    • Bug fixed which was allowing quantized values to + exceed the maximum when not using -h
    • +
    • Mark Taylor: Fitlers based on polyphase filterbank.  + should be slightly better since the responce is independent of the blocktype, + and they are slightly faster.
    • +
    • Mark Taylor: API:  the API changed slightly - and this should be the + final version. There is a new routine: lame_encode_buffer() which takes an + arbritray sized input buffer, resamples & filters if necessary, encodes, + and returns the mp3buffer.  There are also several new #defines, so it + is possible to compile a simple encoding library with no decoding or file + I/O or command line parsing.  see the file API for details.
    • +
    • Mark Taylor: MSVC stuff:  lame.exe (with and without the frame analyzer) + and the CDex lame_enc.dll
    • +
      + should compile under MSVC.  The MSVC5 project files may need some tweaking.  + In particular,
      + you need to make sure LAMEPARSE, LAMESNDFILE and HAVEMPGLIB
      + are defined.  (and HAVEGTK for the GTK stuff). +
    +

    LAME 3.63beta  February 20  2000

    +
      +
    • Robert Hegemann:  FPE with -h fixed?
    • +
    • Mathey Hendry:  FPE error catching for Cygwin, FPE fix for vbr mode + and output to /dev/null
    • +
    • Jeremy Hall:  Fixed problems with input files where the number of + samples is not known.
    • +
    • Mathew Hendry:  ASM quantize_xrpow() for GNU + i386
    • +
    • Wilfried Behne  quantize_xrpow ()for PowerPC + and non-ASM
    • +
    • Takehiro Tominaga:  GOGO FFTs  (not yet + used?)
    • +
      +   +
    +

    LAME 3.62beta   February 9 2000

    +
      +
    • Iwasa Kazmi:  frame analyzer short block display + of single subblocks (press 1,2  or 3)
    • +
    • Ingo Saitz:  --help option added, with output + to stdout
    • +
    • Alfred Weyers: short block AAC spreading function + bug fixed
    • +
    • Takehiro Tominaga:  new scalefac data structure + - improves performance!
    • +
    • Lionel Bonnet:  Bug fixed in MPEG2 scalefactor + routine: scalefactors were being severly limited.
    • +
    • Takehiro Tominaga:  faster FFT routines from.  + These routines are also compatible with the GOGO routines, in case someone + is interested in porting them back to LAME.
    • +
    • Sigbjørn Skjæret, Takehiro Tominaga:  + faster pow() code.
    • +
    • Joachim Kuebart:  Found some unitialized variables + that were effecting quality for encodings which did not use the -h option + (now fixed).
    • +
    • Mark Taylor: More modularization work.   It is now possible to + use LAME as a library where you can set the encoding parameters directly and + do your own file i/o.   The calling program is now it's own mp3 + output.  For an example of the LAME API, see main.c, or mp3rtp.c or mp3x.c.  + These can all be compiled as stand alone programs which link with libmp3lame.a.
    • +
    • Felix vos Leitner:  mp3rtp fixes.  mp3rtp is a standalone program + which will encode and stream with RTP.
    • +
    • Robert Hegemann:  Information written to stderr displaying exactly + which type of lowpass filter (if any) is being used.
    • +
    • Iwasa Kazmi:  mpglib (the mpg123 decoder) scsfi decoding fixes.
    • +
    • Takehiro Tominaga:  More mpglib scsfi decoding fixes.
    • +
    +

    LAME 3.61beta  January 14 2000

    +
      +
    • Mark Taylor: Fixed bug with lowpass filters when + using VBR with a 64kbs or lower min bitrate setting.
    • +
    • Takehiro Tominaga:  more efficient huffman encoding + splitting.
    • +
    +

    LAME 3.60beta   January 9 2000

    +
      +
    • Mark Taylor: Distribution now comes with self test.  Needs work to + be automated, see 'make test' in Makefile.
    • +
    • Mark Taylor: AAC spreading function now the default
    • +
    • Gabriel Bouvigne: updated HTML docs
    • +
    • Felix von Leitner: compute correct file length from Xing header (if present) + when input file is a mp3 file
    • +
    • Felix von Leitner: mp3rtp (standalone) program now included.  Not + yet tested.  mp3rtp ip:port:ttl  <infile>   /dev/null + will stream directly to ip:port using  RTP.
    • +
      +   +
    +

    LAME 3.59beta  January 4 2000

    +
      +
    • Takehiro Tominaga:  --noath option.  Disables ATH maskings.
    • +
    • Gabriel Bouvigne:  updated HTML docs.
    • +
    • Iwasa Kazmi:  makefile fixes
    • +
    • Mark Taylor:  Fixed bug where first frame of data was always overwritten + with 0's.  Thanks to 'gol'
    • +
    • Mark Taylor:  bug fixes in mid/side masking + ratios (thanks to Menno Bakker)
    • +
    • Mark Taylor:  replaced norm_l, norm_s table data with formulas.
    • +
    +

    LAME 3.58beta  December 13 1999

    +
      +
    • Segher Boessenkool:  More accurate quantization + procedure!  Enabled with -h.
    • +
    • Mathew Hendry, Acy Stapp and Takehiro Tominaga: ASM + optimizations for quantize_xrpow and quantize_xrpow_ISO.
    • +
    • Chuck Zenkus:  "encoder inside" logo on web page
    • +
    • Mark Taylor:   a couple people have asked for this.   + Allow LAME to overide VBR_min_bitrate if analog_silence detected.   + Analog_silence defined a la Robert:   energy  < ATH.
    • +
    • An Van Lam: Valid bitrates were being printed for layer 2, not layer 3!
    • +
    • Ethan Yeo:  Makefile.MSVC updated
    • +
    • Mark Stephens:  updated all MSVC project files
    • +
    • Robert Hegemann:  lowpass and highpass filters can be enabled with + --lowpass, --highpass
    • +
    • Mark Taylor:  MS switching is now smoother: + ms_ratio average over 4 granules
    • +
    • Takehiro Tominaga:  Scalefactor pre-emphasis + fixed (and now turned back on)
    • +
    • Takehiro Tominaga:  Bug in M/S maskings:  + switch to turn on stereo demasking code was buggy.
    • +
    +

    LAME 3.57beta  November 22 1999

    +
      +
    • Sigbjørn Skjæret, patch to allow encoding from 8bit input + files when using LIBSNDFILE
    • +
    • Mark Taylor: Automatic downsampling to nearest valid samplerate.
    • +
    • Mark Taylor: Scalefactor bands demarked on MDCT plot in frameanalyzer
    • +
    • Mark Taylor: Scalefactor preemphasis disabled for now.   The + algorithm was often doing more harm than good.
    • +
    +

    LAME 3.56beta  November 19 1999

    +
      +
    • Kimmo Mustonen: portabilty code cleanup.
    • +
    • Vladimir Marek: id3 genre patch.
    • +
    • Conrad Sanderson: new applypatch script.
    • +
    • Mark Taylor: Initial window type now "STOP_TYPE" to reduce initial attenuation.  + This is needed because the new encoder delay is so short.  With a NORM_TYPE, + the first 240 samples would be attenuated.
    • +
    • Mark Taylor: Padding at end of file now adjusted (hopefully!) to produce + as little padding as possible while still guarantee all input samples are + encoded.
    • +
    • Takehiro Tominaga:  Reduced shortblock extra + bit allocation formulas by 10% since new huffman coding is at least 10% more + efficient.
    • +
    +

    LAME 3.55beta  November 11 1999

    +
      +
    • Albert Faber:  updated BladeEnc.dll
    • +
    • Mark Taylor: Simple lowpass filter added to linear downsampling routine.
    • +
    • Nils Faerber: updated man page.
    • +
    • Mark Taylor: All floating point variables are delcared FLOAT or  FLOAT8.  + Change the definition of FLOAT8 in machine.h to run at 32bit preceision.
    • +
    • Mark Taylor: Bug (introduced in 3.54beta) in stereo->mono downsampling + fixed.
    • +
    +

    LAME 3.54beta  November 8 1999

    +
      +
    • Mark Taylor: Encoder delay is now 48 samples.  Can be adjusted to + 1160 to sync with FhG (see ENCDELAY in encoder.h)  This is kind of amazing, + since if Takehiro put his MDCT/filterbank routine in a decoder, we could have + a total  delay of only 96 samples.
    • +
    • Mark Taylor: More inconstancies found and fixed in + MPEG2 tables.
    • +
    • Mark Taylor: Resampling from an MP3 input file now works.  But we + still dont have a lowpass filter so dont expect good results.
    • +
    +

    LAME 3.53beta  November 8 1999

    +
      +
    • Takehiro Tominaga:  Fixed MPEG2 problem in new + MDCT routines.  Takehiro's combined filterbank/MDCT routine is now the + default.  Removes all buffering from psymodel.c and the filterbanks/MDCT + routines.
    • +
    +

    LAME 3.52beta  November 8 1999

    +
      +
    • By permission of copyright holders of all GPL code in LAME,  all GPL + code is now released under a modified version of the LGPL (see the README + file)
    • +
    • By popular demand, all C++ comments changed to C style comments
    • +
    • Mark Taylor: Linear resampling now works.  Use --resample to set an + output samplerate different from the input samplerate.  (doesn't seem + to work with mp3 input files, and there is no lowpass filter, so dont expect + good results just yet)
    • +
    • Takehiro Tominaga:  Faster Huffman encoding + routines
    • +
    +The following changes are disabled because of MPEG2 problems.  +But to try them, set MDCTDELAY=48 in encoder.h, instead of MDCTDELAY=528.: +
      +
    • Takehiro Tominaga:  New MDCT routines with shorter + delay (48 samples instead of 528) and even faster than the old routines.
    • +
    • Takehiro Tominaga:  Removed extra buffering + in psymodel.c
    • +
    +

    LAME 3.51  November 7 1999

    +
      +
    • Takehiro Tominaga: Bug in quantize.c absolute threshold of hearing calculation + for non-44.1 kHz input files.
    • +
    +

    LAME 3.50  November 1 1999

    +
      +
    • LAME 3.37beta becomes official LAME 3.50 release
    • +
    +

    LAME 3.37beta  November 1 1999

    +
      +
    • Lionel Bonnet:  Found severe bug in MPEG2 Short + block SNR.
    • +
    • Sergey Sapelin:  VBR Toc improvement.
    • +
    • Sergey Dubov: fskip() routine
    • +
    • Conrad Sanderson: replacement for filterbank.c.   Not much faster + but amazingly simpler.
    • +
    +

    LAME 3.36beta  October 25 1999

    +
      +
    • Albert Faber:  more MSVC and BladeDLL updates
    • +
    • Kimmo Mustonen:  Much code cleanup and Amiga updates
    • +
    • Anton Oleynikov: Borland C updates
    • +
    • Mark Taylor: More stdin fixes:  For some reason, forward fseek()'s + would fail when used on pipes even though it is okay with redirection from + "<". So I changed all the forward fseek()'s to use fread().  This + should improve stdin support for wav/aiff files.  If you know the input + file is raw pcm, you can still use the '-r' option to avoid *all* seeking + of any kind.
    • +
      +   +
    +

    LAME 3.35beta  October 21 1999

    +
      +
    • Leonid Kulakov:  Serious bug in MPEG2 scalefactor + band tables fixed.
    • +
    • Portability patches from:  Anton Oleynikov, Sigbjørn Skjæret, + Mathew Hendry, Richard Gorton
    • +
    • Alfred Weyers: compiler options, updated timestatus.
    • +
    • Albert Faber:  BladeDll and other updates (new machine.h).
    • +
    • Monty:  updated Makefile to fix gcc inline math bug.
    • +
      +   +
    +

    LAME 3.34beta  October 12 1999

    +
      +
    • Mark Taylor: Bug fixed:  minimum bitrate in + VBR mode could be ignored for a few frames.
    • +
    • Mark Taylor: New (minor) VBR tunings.
    • +
    • Tim Ruddick: New wav/aiff header parsing routines.  Better parsing + and fewer fseek()'s.
    • +
    • Anton Oleynikov:  patches to work with Borland C
    • +
    • Gabriel Bouvigne:  Experimental voice option + enabled with --voice
    • +
    +

    LAME 3.33beta  October 11 1999

    +
      +
    • Robert Hegemann: RH VBR mode now the default and + only VBR mode.  The new code will always quantize to 0 distortion and + the quality is increased by reducing the masking from the psy-model.  + -X0 is still the default for now.
    • +
    • Robert Hegemann: new -X5 mode
    • +
    • Mathew Hendry: New timing code, removes the need for HAVETIMES
    • +
    • Mathew Hendry:  assembler quantize_xrpow for + Windows
    • +
    • Iwasa Kazmi:  stdin/stdout patch for Windows
    • +
    • Mark Taylor: New option: "--athonly" will ignore the psy-model output and + use only the absolute threshold of hearing for the masking.
    • +
      +   +
    +

    LAME 3.32beta  October 8 1999

    +
      +
    • Takehiro Tominaga:  faster long block spreading + function convolution for non 44.1 kHz sampling frequencies, and faster short + block spreading function convolution for all sampling frequencies.
    • +
    • Takehiro Tominaga:  Completly rewritten huffman + table selection and count_bits().  More efficient table selection results + in many more bits per frame.
    • +
    • Takehiro Tominaga:  More efficient scalefac + compress setting.
    • +
    • Mike Cheng: new calc_noise2()
    • +
    • Alfred Weyers: patch for timestatus() seconds rollover
    • +
      +   +
    +

    LAME 3.31beta  September 28 1999

    +
      +
    • Albert Faber:  updated his BladeDLL code.  This allows LAME to + be compiled into a BladeEnc compatiable .dll.
    • +
    • Mike Cheng: faster l3psycho_ener() routine.
    • +
    • Sigbjørn Skjæret: more code cleanup.
    • +
    +

    LAME  3.30beta  September 27 1999

    +
      +
    • Conrad Sanderson:  ID3 tag code added (type 'lame' for instructions)
    • +
    • new mdct.c from Mike Cheng (no faster, but much cleaner code)
    • +
    • Mathew Hendry: Microsoft nmake makefile and a couple other changes for + MSVC
    • +
    • More modulization work:  One input sound file interface handles mp3's, + uncompressed audio, with or without LIBSNDFILE.  Fixes (hopefully) a + bunch of file I/O bugs introduced in 3.29 (Mark Taylor)
    • +
    • LAME will now print valid samplerate/bitrate combinations (Mark Taylor)
    • +
    • stdin/stdout fix for OS/2 (Paul Hartman)
    • +
    • For mp3 input files, totalframes estimated based on filesize and first + frame bitrate. (Mark Taylor)
    • +
    • Updated all functions with new style prototypes.  (Sigbjørn + Skjæret)
    • +
      +   +
    +

    LAME 3.29beta  September 21 1999

    +
      +
    • Bug in bigv_bitcount fixed.  Loop.c was overestimating + the number of bits needed, resulting in wasted bits every frame.  (Leonid + A. Kulakov)
    • +
    • Bug in *_choose_table() fixed   These routines + would not sellect the optimal Huffman table in some cases.   (Leonid + A. Kulakov)
    • +
    • Tuning of ATH normalization (macik)
    • +
    • Removed unused variables and fixed function prototypes (Sigbjørn + Skjæret)
    • +
    • Sami Farin sent a  .wav  file that  LAME built in support + choked on.   I added a slightly more sophisticated wav header parsing + to handle this, but if you have trouble, use libsndfile.
    • +
    • Resampling hooks and options added.  Buffering and resampling routines + need to be written.
    • +
    • LAME will now take an mp3 file as input.  When resampling code is + working, LAME will be able to (for example) convert a high bitrate stereo + mp3 to a low bitrate mono mp3 for streaming.
    • +
    +

    LAME 3.28beta  September 15 1999

    +
      +
    • Serious bug fixed in high frequency MDCT coefficients.  + Huffman coding was reversing the order of the count1 block quadruples.   + (Leonid A. Kulakov)
    • +
    • nint() problems under Tru64 unix fixed and preprocessor variable HAVE_NINT + removed.  (Bob Bell)
    • +
    • Compiler warning fixes and code cleanup   (Sigbjørn Skjæret, + Lionel Bonnet)
    • +
    • USAGE file now includes suggestions for downsampling.  For low bitrate + encodings, proper downsampling can give dramatically better results.  + (John Hayward-Warburton)
    • +
    +

    LAME 3.27beta  September 12 1999

    +
      +
    • Several bugs in encode.c and l3bitstream.c fixed by Lionel Bonnet.
    • +
    • Bugs in new VBR (#define RH) formula for mono input file and mid/side encoding + fixed.
    • +
    +

    LAME 3.26beta  September 10 1999

    +
      +
    • The "-m m" option (mono .mp3 file) will automatically mix left and right + channels if the input file is stereo.  (Alfred Weyers)
    • +
    • New quant_compare algorithm (method for deciding + which of two quantizations is better) enabled with -X4 (Greg Maxwell)
    • +
    • New mid/side VBR bit allocation formula.  Mid + channel bits are set by the quality requirements, and then the side channel + uses a reduced number of bits (in a proportion coming from the fixed bitrate + code).  This might not be optimal, but it should be pretty good and no + one knows what the optimal solution should be.  (Greg Maxwell)
    • +
    • New VBR (#define RH) tunings based on detailed listening + tests by Macik and Greg Maxwell.
    • +
    • Sigbjørn Skjæret fixed several compiler warnings (which turned + out to be potential bugs)
    • +
    • Takehiro Tominaga fixed a low bitrate bug in reduce_side()
    • +
    • Alfred Weyers fixed some buffer overflows.
    • +
    • New ATH (absolute threshold of hearing) formula replaces + buggy ISO code, and adds  analog silence treatment  (removal of + coefficients below below ATH).   These are turned on by default + but have not been fully tested.  (Robert Hegemann)
    • +
    • Bug in short block spreading function fixed.  + (Robert Hegemann)
    • +
    +

    LAME 3.25beta  August 22 1999

    +
      +
    • Sigbjørn Skjæret fixed a zero byte malloc call.  This + bug  was introduced in 3.24 and causes problems on non Linux systems.
    • +
    • Bit allocation routines would sometimes allocate more than 4095 bits to + one channel of one granule.  A couple of people reported problems that + might be caused by this, especially at higher bitrates.
    • +
    • Nils Faerber updated the man page and fixed many of the compiler warnings.
    • +
      +   +
    +

    LAME 3.24beta   August 15 1999

    +
      +
    • This release contains the following new code (for developers) which is + disabled by default:
    • +
    • Robert Hegemann:  Completely overhauled VBR code.  Now computes + exact number of bits required for the given qualty and then quantized with + the appropriate bitrate.
    • +
    • Several new quantization quality measures.
    • +
    +

    LAME 3.23beta  August 8 1999

    +
      +
    • Very nice continuously updated VBR histogram display from Iwasa Kazmi.  + (disabled with --nohist).
    • +
    • More modulerization work.  The encoding engine can now be compiled + into libmp3lame, but the interface is awkward.
    • +
    • Bug fixed in FFT Hann window formula (Leonid A. Kulakov).
    • +
    • New LAME logo on the download page.  Created by Chris Michalisles.
    • +
    • Several VBR algorithm improvements from Robert Hegemann.  + New quantization noise metrics and VBR quality measure takes into account + mid/side encoding.  Should produce smaller files with the same quality, + especially when using jstereo.
    • +
    +

    LAME 3.22beta  July 27 1999

    +
      +
    • Downsampling (stereo to mono) bug with MPEG2 fixed.  (Mike Oliphant)
    • +
    • Downsampling now merges L & R channels - before it only took the L + channel.
    • +
    • More modularization and code cleanup from Albert Faber and myself.
    • +
    • Input filesize limit removed for raw pcm input files.  For other file + types, LAME will still only read the first 2^32 samples, (27 hours of playing + time at 44.1 kHz).
    • +
      +   +
    +

    LAME 3.21beta  July 26 1999

    +
      +
    • Correct Mid/Side masking thresholds for JSTEREO mode!  + This is enabled with -h.  It  makes LAME about 20% slower since + it computes psycho-acoustics for L,R Mid and Side channels.
    • +
    • "Analog silence" threshold added.  Keeps VBR + from upping the bitrate during very quite passages.  (Robert.Hegemann)
    • +
    • New VBR quality setting from Robert Hegemann.  + It is based on the idea that distortion at lower bit rates sounds worse than + at higher bitrates, and so the allowed distortion (VBR quality setting) is + proportional to the bitrate.  Because of this, default minimum bitrate + is now 32kbs.
    • +
    • Expermental subblock gain code enabled with -Z.
    • +
    • New "-r" option for raw pcm input files.  With -r, LAME will not do + any fseek()'s or look for wav and aiff headers on the input file.
    • +
    • Bug fixes in mp3x (frame analyzer) for viewing frames near end of the file.
    • +
    • Bug fixed to allow setting the sampling rate of raw pcm input files.
    • +
    +

    LAME 3.20beta  July 19 1999

    +
      +
    • Bug in get_audio.c fixed.  Libsndfile wrappers would not compile (Miguel + Revilla  Rodriguez)
    • +
    • Nils Faerber found some unitialized variables and some wierd extranous + computations in filter_subband, now fixed.  This was causing seg faults + on some machines.
    • +
      +   +
    +

    LAME 3.19beta  July 18 1999

    +
      +
    • Oops!  Robert Hegemann immediatly found a bug + in the new  (old -Z option) quantization code.  calc_noise1 was + not returning tot_noise, so non ms-stereo frames were buggy.
    • +
      +   +
    +

    LAME 3.18beta  July 17 1999

    +
      +
    • Many psycho-acoustic bug fixes.  Dan Nelson + discovered a bug in MPEG2: For short blocks, the code assumes 42 partition + bands.  MPEG1 sometimes has less, MPEG2 can have more.  In MPEG1, + this bug would not have effected the output if your compiler initializes static + variables to 0 on creation.  In MPEG2 it leads to array out-of-bounds + access errors. Finally, there was a related bug in MPEG1/MPEG2, short & + long blocks where the energy above 16 kHz was all added to partition band + 0. (the lowest frequeny partition band!)
    • +
    • The -Z option (Gabriel Bouvigne's idea of using total + quantization noise to choose between two quantizations with the same value + of "over") is now the default.  I believe this helps remove the trilling + sound in Jan's testsignal4.wav.  The quality of testsignal2.wav and testsignal4.wav + are now better than Xing and getting closer to FhG.
    • +
    • Bug fixes in frame & sample count for downsampling mode. (ben "jacobs")
    • +
    • Patches to improve modulization.  (ben "jacobs")
    • +
    +

    LAME 3.17beta  July 11 1999

    +
      +
    • substantial code cleanup towards goal of making LAME more modular.
    • +
    +

    LAME 3.16beta  July 11 1999

    +
      +
    • New tunings of window switching, and better bit allocation + based on pe.  (Jan Rafaj.  improves both testsignal2.wav and testsignal4.wav).
    • +
    • Bug in mid/side quantization when side channel was + zero fixed.  (Albert Faber)
    • +
    • Removed some extranous computations in l3psy.c (Robert Hegemann)
    • +
    • More detailed timing status info, including hours display. (Sakari Ailus) + and percentage indicator (Conrad Sanderson).
    • +
    • Window_subband and calc_noise1,calc_noise2 speedups.  + Quantize_xrpow speedup should be significant on non GNU/intel systems. (Mike + Cheng)
    • +
    • Better initial guess for VBR bitrate.  Should + speed up VBR encoding.  (Gabriel Bouvigne)
    • +
    • More advanced .wav header parsing.  fixes bugs involving click in + first frame. (Robert.Hegemann)
    • +
    • Correct filesize and total frame computation when using LIBSNDFILE (ben + "jacobs")
    • +
    • Click in last frame (buffering problem) when using libsndfile fixed.
    • +
    • Audio I/O code overhauled.  There is now a uniform audio i/o interface + to libsndfile or the LAME built in wav/aiff routines.  All audio i/o + code localized to get_audio.c.
    • +
      +   +
    +

    LAME 3.15beta

    +
      +
    • times()/clock() problem fixed for non-unix OS.  (Ben "Jacobs")
    • +
    • Fixed uninitialized pe[] when using fast mode.  (Ben "Jacobs")
    • +
    +

    LAME 3.13  June 24 1999

    +
      +
    • Patches for BeOS from Gertjan van Ratingen.
    • +
    • Makefile info for OS/2 Warp 4.0  (from dink.org).
    • +
    • Status display now based on wall clock time, not cpu time.
    • +
    • mem_alloc no longer allocates twice as much memory as needed (Jan Peman).
    • +
    +

    3.12pre9

    +
      +
    • Updated BLADEDLL code to handle recent changes (Albert Faber).
    • +
    • Bug fixed in parsing options when not using GTK (Albert Faber).
    • +
    • MPEG2 Layer III psycho acoustics now working.
    • +
    • Improved huffman encoding Chris Matrakidis. (10% + faster).  I dont know how he finds these improvements!  LAME with + full quality now encodes faster than real time on my PII 266.
    • +
    • Fixed time display when encoding takes more than 60 minutes.
    • +
    +

    3.12pre8

    +
      +
    • New mid/side stereo + criterion.  LAME will use mid/side stereo only when the difference between + L & R masking thresholds (averaged over all scalefactors) is less then + 5db.  In several test samples it does a very good job mimicking the FhG + encoder.
    • +
    • Bug in mid/side stereo fixed:  independent variation + of mid & side channel scalefactors disabled.  Because of the way + outer_loop is currently coded, when encoding mid/side coefficietns using left/right + thresholds, you have to vary the scalefactors simultaneously.
    • +
    • Bug in side/mid energy ratio calculation fixed. (Thanks + to Robert Hegemann)
    • +
    • Default mode is stereo (not jstereo) if bitrate is chosen as 192kbs or + higher.  Tero Auvinen first pointed out that FhG seems to think at 160kbs, + their encoder is so good it doesn't need jstereo tricks. Since LAME is not + as good as FhG, I am going to claim that 192kbs LAME is so good it doens't + need jstereo tricks, and thus it is disabled by default.
    • +
    • WAV header parsing for big-endian machines, and automatic detection of + big-endian machines.  (Thanks to  Sigbjørn Skjæret).
    • +
    • added 56 sample delay to sync LAME with FhG.
    • +
    • MP3x (frame analyzer) can now handle MPEG2 streams.
    • +
    +

    3.12pre7

    +
      +
    • MPEG2 layer III now working!  lower bit rates (down to 8kbs) and 3 + more sampling frequencies:  16000, 22050, 24000Hz. Quality is poor - + the psy-model does not yet work with these sampling frequencies.
    • +
    • Fixed "ERROR: outer_loop(): huff_bits < 0." bug when using VBR.
    • +
    • bash and sh scripts to run LAME on multiple files now included.  (from + Robert Hegemann and Gerhard Wesp respectively)
    • +
    • bug fix in encoding times for longer files from  (Alvaro Martinez + Echevarria)
    • +
    • yet another segfault in the frame analyzer fixed.
    • +
    • ISO psy-model/bit allocation routines removed.  This allowed makeframe() + to be made much simpler, and most of the complicated buffering is now gone. + Eventually I would like the encoding engine to be a stand alone library.
    • +
    +

    3.12pre6

    +
      +
    • Better VBR tuning.  Find minimum bitrate with + distortion less than the allows maximum.  A minimum bit rate is imposed + on frames with short blocks (where the measured distortion can not be trusted).   + A minimum frame bitrate can be specified with -b, default=64kbs.
    • +
    • LIBSNDFILE support.  + With libsndfile, LAME can encode almost all sound formats.  Albert Faber + did the work for this, including getting libsndfile running under win32.
    • +
    • CRC checksum now working!   (Thanks to Johannes Overmann )
    • +
    • frame analyzer will now work with mono .mp3 files
    • +
    • more code tweeks from Jan Peman.
    • +
    • Compaq-Alpha(Linux) fixes and speedups from Nils + Faerber.
    • +
    • Faster bin_search_StepSize from Juha Laukala.
    • +
    • Faster quantize() from Mike Cheng
    • +
    • Faster quantize_xrpow() from Chris Matrakidis.  + xrpow_flag removed since this option is now on by default.
    • +
    • Fixed .wav header parsing from Nils Faerber.
    • +
    • Xing VBR frame info header code from Albert Faber.   "Xing" and + "LAME 3.12" embedded in first frame.
    • +
    • Bug in VBR bit allocation based on "over" value fixed.
    • +
    +

    LAME 3.11  June 3 1999

    +
      +
    • Almost all warnings (-Wall) now fixed!  (Thanks to Jan Peman)
    • +
    • More coding improvements from Gabriel Bouvigne and Warren Toomey.
    • +
    • VBR  (variable bit rate).   Increases + bit rate for short blocks and for frames where the number of bands containing + audible distortion is greater than a given value.  Much tuning needs + to be done.
    • +
    • Patch to remove all atan() calls from James Droppo.
    • + +
    +

    LAME 3.10 May 30 1999

    +
      +
    • Fast mode (-f)  disables psycho-acoustic model + for real time encoding on older machines.  Thanks to Lauri Ahonen who + first sent a patch for this.
    • +
    • New bit reservoir usage scheme to accommodate the + new pre-echo detection formulas.
    • +
    • Tuning of AWS and ENER_AWS pre-echo formulas by Gabriel + Bouvigne and myself.  They work great!  now on by default.
    • +
    • In jstereo, force blocktypes for left & right channels to be identical.  + FhG seems to do this.  It can be disabled with "-d".
    • +
    • Patches to compile MP3x under win32 (Thanks to Albert Faber).
    • +
    • bin_serach_stepsize limited to a quantizationStepSize + of  -210 through 45.
    • +
    • outer_loop()  will now vary Mid & Side scalefactors + independently.  Can lead to better quantizations, but it is slower (twice + as many quantizations to look at).  Running with "-m f" does not need + this and will run at the old speed
    • +
    • Bug in inner_loop would allow quantizations larger + than allowed.  (introduced in lame3.04, now fixed.)
    • +
    • Updated HTML documentation from Gabriel Bouvigne.
    • +
    • Unix  man page from William Schelter.
    • +
    • numlines[] bug fixed.  (Thanks to Rafael Luebbert, + MPecker author).
    • +
    • Quantization speed improvements from Chirs Matrakidis.
    • +
    • When comparing quantizations with the same number + of bands with audible distortion, use the one with the largest scalefactors, + not the first one outer_loop happened to find.
    • +
    • Improved defination of best quantization when using -f (fast mode).
    • +
    • subblock code now working.  But no algorithm to choose subblock gains + yet.
    • +
    • Linux now segfaults on floating point exceptions.  Should prevent + me from releasing binaries that crash on other operating systems.
    • +
    +

    LAME 3.04 May 22 1999

    +
      +
    • Preliminary documentation from Gabriel Bouvigne.
    • +
    • I wouldn't have thought it was possible, but now + there are even more speed improvements from Chris Matrakidis!  Removed + one FFT when using joint stereo, and many improvements in loop.c.
    • +
    • "Fake" ms_stereo mode renamed "Force" ms_stereo since it forces mid/side + stereo on all frames.  For some music this is said to be a problem, but + for most music mode is probably better than the default jstereo because it + uses specialized mid/side channel masking thresholds.
    • +
    • Small bugs in Force ms_stereo mode fixed.
    • +
    • Compaq Alpha fixes from Nathan Slingerland.
    • +
    • Some new experimental pre-echo detection formulas + in l3psy.c (#ifdef AWS and #ifdef ENER_AWS, both off by default.  Thanks + to Gabriel Bouvigne and Andre Osterhues)
    • +
    • Several bugs in the syncing of data displayed by mp3x (the frame analyzer) + were fixed.
    • +
    • highq (-h) option added.  This turns on things (just one so far) that + should sound better but slow down LAME.
    • +
    +

    LAME 3.03 May 18 1999

    +
      +
    • Faster (20%) & cleaner FFT (Thanks to Chris Matrakidis  + http://www.geocities.com/ResearchTriangle/8869/fft_summary.html)
    • +
    • mods so it works with VC++ (Thanks to Gabriel Bouvigne, www.mp3tech.org)
    • +
    • MP3s marked "original" by default  (Thanks to Gabriel Bouvigne, www.mp3tech.org)
    • +
    • Can now be compiled into a BladeEnc compatible .DLL   (Thanks + to  Albert Faber, CDex author)
    • +
    • Patches for "silent mode" and stdin/stdout  (Thanks to Lars Magne + Ingebrigtsen)
    • +
    • Fixed rare bug: if a long_block is sandwiched between + two short_blocks, it must be changed to a short_block, but the short_block + ratios have not been computed in l3psy.c.  Now always compute short_block + ratios just in case.
    • +
    • Fixed bug with initial quantize step size when many + coefficients are zero.  (Thanks to Martin Weghofer).
    • +
    • Bug fixed in MP3x display of audible distortion.
    • +
    • improved status display (Thanks to Lauri Ahonen).
    • +
    +

    LAME 3.02 May 12 1999

    +
      +
    • encoder could use ms_stereo even if channel 0 and + 1 block types were different.  (Thanks to Jan Rafaj)
    • +
    • added -k option to disable the 16 kHz cutoff at 128kbs.  + This cutoff is never used at higher bitrates. (Thanks to Jan Rafaj)
    • +
    • modified pe bit allocation formula to make sense + at bit rates other than 128kbs.
    • +
    • fixed l3_xmin initialization problem which showed up under FreeBSD.  + (Thanks to Warren Toomey)
    • +
    +

    LAME 3.01 May 11 1999

    +
      +
    • max_name_size increased to 300  (Thanks to Mike Oliphant)
    • +
    • patch to allow seeks on input file (Thanks to Scott Manley)
    • +
    • fixes for mono modes (Thanks to everyone who pointed this out)
    • +
    • overflow in calc_noise2 fixed
    • +
    • bit reservoir overflow when encoding lots of frames with all zeros  + (Thanks to Jani Frilander)
    • +
    +


    + LAME 3.0 May 10 1999

    +
      +
    • added GPSYCHO (developed by Mark Taylor)
    • +
    • added MP3x (developed by Mark Taylor)
    • +
    • LAME now maintained by Mark Taylor
    • +
    +November 8 1998 +
      +
    • Version 2.1f released
    • +
    • 50% faster filter_subband() routine in encode.c contributed by James Droppo
    • +
    +November 2 1998 +
      +
    • Version 2.1e released.
    • +
    • New command line switch -a auto-resamples a stereo input file to + mono.
    • +
    • New command line switch -r resamples from 44.1 kHz to 32 kHz [this + switch doesn't work really well. Very tinny sounding output files. Has to + do with the way I do the resampling probably]
    • +
    • Both of these were put into the ISO code in the encode.c file, and are + simply different ways of filling the input buffers from a file.
    • +
    +October 31 1998 +
      +
    • Version 2.1d released
    • +
    • Fixed memory alloc in musicin.c (for l3_sb_sample)
    • +
    • Added new command line switch (-x) to force swapping of byte order
    • +
    • Cleaned up memory routines in l3psy.c. All the mem_alloc() and free() routines + where changed so that it was only done once and not every single time + the routine was called.
    • +
    • Added a compile time switch -DTIMER that includes all timing info. It's + a switch for the time being until some other people have tested on their system. + Timing code has a tendency to do different things on different platforms.
    • +
    +October 18 1998 +
      +
    • Version 2.1b released.
    • +
    • Fixed up bug: all PCM files were being read as WAV.
    • +
    • Played with the mem_alloc routine to fix crash under amigaos (just allocating + twice as much memory as needed). Might see if we can totally do without this + routine. Individual malloc()s where they are needed instead
    • +
    • Put Jan Peman's quality switch back in. This reduces quality via the '-q ' + switch. Fun speedup which is mostly harmless if you're not concerned with + quality.
    • +
    • Compiling with amiga-gcc works fine
    • +
    +October 16 1998 +
      +
    • Version 2.1a released. User input/output has been cleaned up a bit. WAV + file reading is there in a very rudimentary sense ie the program will recognize + the header and skip it, but not read it. The WAV file is assumed to be 16bit + stereo 44.1 kHz.
    • +
    +October 6 1998 +
      +
    • Version 2.1 released with all tables now incorporated into the exe. Thanks + to Lars Magne Ingebrigtseni(larsi@ifi.uio.no)
    • +
    +October 4 1998In response to some concerns about the quality of the encoder, +I have rebuilt the encoder from scratch and carefully compared output at all stages +with the output of the unmodified ISO encoder. Version2.0 of +LAME is built from the ISO source code (dist10), and incorporates modifications +from myself and the 8hz effort. The output file from LAME v2.0 is identical +to the output of the ISO encoder for my test file.Since I do not have heaps of +time, I left the ISO AIFF file reader in the code, and did not incorporate a WAV +file reader.Added section on quality October +1 1998 +
      +
    • Updated web page and released LAME v1.0
    • +
    +Up to September 1998 +
      + Working on the 8hz source code... +
        +
      • Patched the 8hz source code
      • +
      • 45% faster than original source (on my freebsd p166).
      • +
          +
        • m1 - sped up the mdct.c and quantize() functions [MDCTD, MDCTD2, LOOPD]
        • +
        • m2 - sped up the filter_subband routine using Stephane Tavenard + 's work from musicin [FILTST]
        • +
        • m2 - minor cleanup of window_subband [WINDST2]
        • +
        • m2 - Cleaned up a few bits in l3psy.c. Replaced a sparse matrix multiply + with a hand configured unrolling [PSYD]
        • +
        • m3 - (amiga only) Added in the asm FFT for m68k (based on sources from + Henryk Richter and Stephane Tavenard)
        • +
        • m4 - raw pcm support back in
        • +
        • m5 - put in a byte-ordering switch for raw PCM reading (just in case)
        • +
        • m6 - reworked the whole fft.c file. fft now 10-15% faster.
        • +
        • m7 - totally new fft routine. exploits fact that this is a real->complex + fft. About twice as fast as previous fastest fft (in m6). (C fft routine + is faster than the asm one on an m68k!)
        • +
        • m8
        • +
            +
          • - Now encodes from stdin. Use '-' as the input filename. Thanks to + Brad Threatt
          • +
          • - Worked out that the 1024point FFT only ever uses the first 6 phi + values, and the first 465 energy values. Saves a bunch of calculations.
          • +
          • - Added a speed-up/quality switch. Speed is increased but quality + is decreased slightly. My ears are bad enough not to be able + to notice the difference in quality at low settings :). Setting '-q + 1' improves speed by about 10%. '-q 100' improves speed by about 26%. + Enoding of my test track goes from 111s (at default '-q 0') to 82s (at + -q 100). Thanks to Jan Peman for this tip.
          • +
          +
        • m9 - fixed an error in l3psy.c. numlines[] is overwritten with incorrect + data. Added a new variable numlines_s[] to fix this. Thanks again to Jan + Peman.
        • +
        • m10 - Down to 106 seconds by selecting a few more compiler options. + Also added a pow20() function in l3loop.c to speed up (ever so slightly) + calls to pow(2.0, x)
        • +
        • m11
        • +
            +
          • No speedups. Just cleaned up some bits of the code.
          • +
          • Changed K&R prototyping to 'normal' format. Thanks to Steffan + Haeuser for his help here.
          • +
          • Changed some C++ style comments to normal C comments in huffman.c
          • +
          • Removed the #warning from psy_data.h (it was getting annoying!)
          • +
          • Removed reference in bitstream.c to malloc.h. Is there a system left + where malloc.h hasn't been superceded by stdlib.h?
          • +
          +
        • In Progess:
        • +
            +
          • my PSYD hack for the spreading functions is only valid for 44.1 kHz + - Should really put in a "if freq = 44.1 kHz" switch for it. Someone + might want to extend the speedup for 48 and 32 kHz.
          • +
          • Putting in Jan Peman's quantanf_init speedup.
          • +
          +
        +
      +
    + + diff --git a/lame-3.97/doc/html/id3.html b/lame-3.97/doc/html/id3.html new file mode 100644 index 0000000..5f600f1 --- /dev/null +++ b/lame-3.97/doc/html/id3.html @@ -0,0 +1,257 @@ + + + +ID3 tags + + + + + + + + +

    ID3 tags

    +

     

    +

    LAME is able to embed ID3 v1, v1.1 or v2 tags inside the encoded MP3 file. + This allows to have some usefull information about the music track included + inside the file. Those data can be read by most MP3 players.
    +
    + Lame will smartly choose wich tags to use. It will add ID3 v2 tags only if the + input comments won't fint in v1 or v1.1 tags, ie if they are more than 30 characters. + In this case, both v1 and v2 tags will be added, to ensure reading of tags by + MP3 players wich are unable to read ID3 v2 tags.

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ID3 comments switchesparameters
    --tt "title"title of song
    --ta "artist"artist who did the song
    --tl "album"album where it came from
    --ty "year"year in which the song/album was made
    --tc "comment"additional info
    --tn "track"track number of the song on the CD (1 to 255, creates + an ID3 v 1.1 tag)
    --tg "genre" genre of song (name or number)
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ID3 behaviour switches 
    --add-id3v2 force addition of version 2 tag
    --id3v1-only add only a version 1 tag
    --id3v2-only add only a version 2 tag
    --space-id3v1 pad version 1 tags with spaces instead of nulls
    --pad-id3v2 pad version 2 tags with extra 128 bytes
    --ignore-tag-errors ignore errors in values passed for tags, use defaults in case an error occours
    --genre-list print alphabetically sorted ID3 genre list and exit
    +


    + The following genres are supported:
    +
    +

    + + + + + +
    00 - Blues
    + 01 - Classic Rock
    + 02 - Country
    + 03 - Dance
    + 04 - Disco
    + 05 - Funk
    + 06 - Grunge
    + 07 - Hip-Hop
    + 08 - Jazz
    + 09 - Metal
    + 10 - New Age
    + 11 - Oldies
    + 12 - Other
    + 13 - Pop
    + 14 - R&B
    + 15 - Rap
    + 16 - Reggae
    + 17 - Rock
    + 18 - Techno
    + 19 - Industrial
    + 20 - Alternative
    + 21 - Ska
    + 22 - Death Metal
    + 23 - Pranks
    + 24 - Soundtrack
    + 25 - Euro-Techno
    + 26 - Ambient
    + 27 - Trip-Hop
    + 28 - Vocal
    + 29 - Jazz+Funk
    + 30 - Fusion
    + 31 - Trance
    + 32 - Classical
    + 33 - Instrumental
    + 34 - Acid
    + 35 - House
    + 36 - Game
    + 37 - Sound Clip
    + 38 - Gospel
    + 39 - Noise
    + 40 - Alternative Rock
    + 41 - Bass
    + 43 - Punk
    + 44 - Space
    + 45 - Meditative
    + 46 - Instrumental Pop
    + 47 - Instrumental Rock
    + 48 - Ethnic
    + 49 - Gothic
    + 50 - Darkwave
    + 51 - Techno-Industrial
    + 52 - Electronic
    + 53 - Pop-Folk
    + 54 - Eurodance
    + 55 - Dream
    + 56 - Southern Rock
    + 57 - Comedy
    + 58 - Cult
    + 59 - Gangsta
    + 60 - Top 40
    + 61 - Christian Rap
    + 62 - Pop/Funk
    + 63 - Jungle
    + 64 - Native US
    + 65 - Cabaret
    + 66 - New Wave
    + 67 - Psychadelic
    + 68 - Rave
    + 69 - Showtunes
    + 70 - Trailer
    + 71 - Lo-Fi
    + 72 - Tribal
    + 73 - Acid Punk
    + 74 - Acid Jazz
    + 75 - Polka
    + 76 - Retro
    + 77 - Musical
    + 78 - Rock & Roll
    + 79 - Hard Rock
    + 80 - Folk
    + 81 - Folk-Rock
    + 82 - National Folk
    + 83 - Swing
    + 84 - Fast Fusion
    + 85 - Bebob
    + 86 - Latin
    + 87 - Revival
    + 88 - Celtic
    + 89 - Bluegrass
    + 90 - Avantgarde
    + 91 - Gothic Rock
    + 92 - Progressive Rock
    + 93 - Psychedelic Rock
    + 94 - Symphonic Rock
    + 95 - Slow Rock
    + 96 - Big Band
    + 97 - Chorus
    + 98 - Easy Listening
    + 99 - Acoustic
    100 - Humour
    + 101 - Speech
    + 102 - Chanson
    + 103 - Opera
    + 104 - Chamber Music
    + 105 - Sonata
    + 106 - Symphony
    + 107 - Booty Bass
    + 108 - Primus
    + 109 - Porn Groove
    + 110 - Satire
    + 111 - Slow Jam
    + 112 - Club
    + 113 - Tango
    + 114 - Samba
    + 115 - Folklore
    + 116 - Ballad
    + 117 - Power Ballad
    + 118 - Rhytmic Soul
    + 119 - Freestyle
    + 120 - Duet
    + 121 - Punk Rock
    + 122 - Drum Solo
    + 123 - Acapella
    + 124 - Euro-House
    + 125 - Dance Hall
    + 126 - Goa
    + 127 - Drum & Bass
    + 128 - Club-House
    + 129 - Hardcore
    + 130 - Terror
    + 131 - Indie
    + 132 - BritPop
    + 133 - Negerpunk
    + 134 - Polsk Punk
    + 135 - Beat
    + 136 - Christian Gangsta
    + 137 - Heavy Metal
    + 138 - Black Metal
    + 139 - Crossover
    + 140 - Contemporary C
    + 141 - Christian Rock
    + 142 - Merengue
    + 143 - Salsa
    + 144 - Thrash Metal
    + 145 - Anime
    + 146 - JPop
    + 147 - SynthPop
    +


    +
    +
    +

    + + diff --git a/lame-3.97/doc/html/index.html b/lame-3.97/doc/html/index.html new file mode 100644 index 0000000..8b9b366 --- /dev/null +++ b/lame-3.97/doc/html/index.html @@ -0,0 +1,55 @@ + + + +LAME V3 Next Generation High-End MPEG Layer III Encoding + + + + + + + + + +

    +

    LAME + V3.97
    +
    +


    +
    Lame + Ain't an MP3 Encoder +


    +
    +

    +

    Open Source Project
    + http://www.mp3dev.org

    +

    +

    +

    +

    +

    +
    +
    +
    +
  • Introduction + +
  • Some command line examples +
  • CBR, ABR and VBR: the 3 encoding modes +
  • Built-in presets +
  • Basic command line switch reference +
  • Full command line switch reference +
  • ID3 tags +
  • History +
  • Contributors
    +
    + + diff --git a/lame-3.97/doc/html/lame.css b/lame-3.97/doc/html/lame.css new file mode 100644 index 0000000..a9c3ebd --- /dev/null +++ b/lame-3.97/doc/html/lame.css @@ -0,0 +1,24 @@ +BODY { + font-family: Arial, Helvetica, sans-serif; + position: absolute; + padding-left: 1cm; + margin-left: 1cm; + } + +h1, h2, h3 { + margin-left: -1cm; text-align: left + } + +TABLE { text-align: left; font-family: Arial, Helvetica, sans-serif;} +TH {background-color: #C0C0C0} +TD {font-family: Arial, Helvetica, sans-serif;} + +SMALL.TINY { font-size : xx-small } +SMALL.SCRIPTSIZE { font-size : xx-small } +SMALL.FOOTNOTESIZE { font-size : x-small } +SMALL.SMALL { font-size : small } +BIG.LARGE { font-size : large } +BIG.XLARGE { font-size : x-large } +BIG.XXLARGE { font-size : xx-large } +BIG.HUGE { font-size : xx-large } +BIG.XHUGE { font-size : xx-large } diff --git a/lame-3.97/doc/html/modes.html b/lame-3.97/doc/html/modes.html new file mode 100644 index 0000000..9c7707a --- /dev/null +++ b/lame-3.97/doc/html/modes.html @@ -0,0 +1,48 @@ + + + +Encoding modes + + + + + + + + +

    CBR/ABR/VBR: the 3 encoding modes

    +

     

    +

    LAME is able to encode your music using one of its 3 encoding modes: constant + bitrate (CBR), average bitrate (ABR) and variable bitrate (VBR).
    +
    +
    +

    +

    Constant Bitrate (CBR)

    +

    This is the default encoding mode, and also the most basic. In this mode, the + bitrate will be the same for the whole file. It means that each part of your + mp3 file will be using the same number of bits. The musical passage beeing a + difficult one to encode or an easy one, the encoder will use the same bitrate, + so the quality of your mp3 is variable. Complex parts will be of a lower quality + than the easiest ones. The main advantage is that the final files size won't + change and can be accurately predicted.
    +
    +

    +

    Average Bitrate (ABR)

    +

    In this mode, you choose a target bitrate and the encoder will try to constantly + maintain an average bitrate while using higher bitrates for the parts of your + music that need more bits. The result will be of higher quality than CBR encoding + while the average file size will remain predictible, so this mode is highly + recommended over CBR.
    +
    +

    +

    Variable bitrate (VBR)

    +

    In this mode, you choose the desired quality on a scale going from 9 (lowest + quality/highest distortion) to 0 (highest quality/lowest distortion). Then encoder + tries to maintain the given quality in the whole file by choosing the optimal + number of bits to spend for each part of your music. The main advantage is that + you are able to specify the quality level that you want to reach, but the inconvenient + is that the final file size is totally unpredictible.

    + + diff --git a/lame-3.97/doc/html/node6.html b/lame-3.97/doc/html/node6.html new file mode 100644 index 0000000..9159790 --- /dev/null +++ b/lame-3.97/doc/html/node6.html @@ -0,0 +1,132 @@ + + + +Introduction + + + + + + + + +Subsections + + +
    +

    Introduction

    +There is a lot of confusion surrounding the terms audio compression, audio +encoding, and audio decoding. This section will give you an overview +what audio coding (another one of these terms...) is all about. +

    +

    The purpose of audio compression +

    +

    Up to the advent of audio compression, high-quality digital audio data took + a lot of hard disk space to store. Let us go through a short example. +

    You want to, say, sample your favorite 1-minute song and store it on your + harddisk. Because you want CD quality, you sample at 44.1 kHz, stereo, + with 16 bits per sample. +

    44100 Hz means that you have 44100 values per second coming in from your sound + card (or input file). Multiply that by two because you have two channels. Multiply + by another factor of two because you have two bytes per value (that's what 16 + bit means). The song will take up 44100 samples/s · 2 channels + · 2 bytes/sample · 60 s/min ~ 10 MBytes of storage space + on your harddisk. +

    If you wanted to download that over the internet, given an average 56k modem + connected at 44k (which is a typical case), it would take you (at least) 10000000 + bytes · 8 bits/byte / (44000 bits/s) · / (60 s/min) ~ 30 minutes +

    Just to download one minute of music!
    +

    Digital audio coding, which - in this context - is synonymously called digital + audio compression as well, is the art of minimizing storage space (or channel + bandwidth) requirements for audio data. Modern perceptual audio coding techniques + (like MPEG Layer III) exploit the properties of the human ear (the perception + of sound) to achieve a size reduction by a factor of 11 with little or no perceptible + loss of quality. +

    Therefore, such schemes are the key technology for high quality low bit-rate + applications, like soundtracks for CD-ROM games, solid-state sound memories, + Internet audio, digital audio broadcasting systems, and the like. +

    +

    The two parts of audio compression +

    +

    Audio compression really consists of two parts. The first part, called encoding, + transforms the digital audio data that resides, say, in a WAVE file, into a + highly compressed form called bitstream. To play the bitstream on your + soundcard, you need the second part, called decoding. Decoding takes + the bitstream and re-expands it to a WAVE file. +

    The program that effects the first part is called an audio encoder. + LAME is such an encoder . The program that does the second part is called + an audio decoder. One well-known MPEG Layer III decoder is Xmms, + another mpg123. Both can be found on ww.mp3-tech.org . +

    Compression ratios, bitrate and quality +

    +

    It has not been explicitly mentioned up to now: What you end up with after + encoding and decoding is not the same sound file anymore: All superflous information + has been squeezed out, so to say. It is not the same file, but it will + sound the same - more or less, depending on how much compression had + been performed on it. +

    Generally speaking, the lower the compression ratio achieved, the better the + sound quality will be in the end - and vice versa. Table 1.1 + gives you an overview about quality achievable. +

    Because compression ratio is a somewhat unwieldy measure, experts use the + term bitrate when speaking of the strength of compression. Bitrate denotes + the average number of bits that one second of audio data will take up in your + compressed bitstream. Usually the units used will be kbps, which is kbits/s, + or 1000 bits/s. To calculate the number of bytes + per second of audio data, simply divide the number of bits per second by eight. +


    +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table 1.1: Bitrate versus sound quality
    BitrateBandwidthQuality comparable to or better than
    16 kbps4.5 kHzshortwave radio
    32 kbps7.5 kHzAM radio
    96 kbps11 kHzFM radio
    128 kbps16 kHznear CD
    160-180 kbps
    + (variable bitrate)
    20 kHzperceptual transparency
    256 kbps22 kHzstudio
    +
    +
    +
    + + diff --git a/lame-3.97/doc/html/presets.html b/lame-3.97/doc/html/presets.html new file mode 100644 index 0000000..25c0d9c --- /dev/null +++ b/lame-3.97/doc/html/presets.html @@ -0,0 +1,66 @@ + + + +Presets + + + + + + + + +

    Built-in presets

    +

     

    +

    Lame features some built-in presets. Those presets are designed to provide + the highest possible quality.
    + They have for the most part been subject to and tuned via rigorous listening + tests to verify and achieve this objective. These are continually updated to + coincide with the latest developments that occur and as a result should provide + you with nearly the best quality currently possible from LAME.

    +


    + If your goal is quality, these presets are highly recommended over any custom + set of parameters you might use. To activate presets, you should use:
    + lame --preset preset_name
    +
    +
    +

    +

    VBR modes

    +

    --preset medium

    +

    This preset should provide near transparency to most people on most music.
    + The resulting bitrate should be in the 150-180kbps range, according to music + complexity.

    +

    --preset standard

    +

    This preset should generally be transparent to most people on most music and + is already quite high in quality.
    + The resulting bitrate should be in the 170-210kbps range, according to music + complexity.

    +

    --preset extreme

    +

    If you have extremely good hearing and similar equipment, this preset will + provide slightly higher quality than the "standard" mode.
    + The resulting bitrate should be in the 200-240kbps range, according to music + complexity.

    +

    Any of those VBR presets can also be used in fast mode, using the new vbr algorithm. + This mode is faster, but its quality could be a little lower. To enable the + fast mode, use:
    + lame --preset fast preset_name

    +

     

    +

    CBR 320kbps

    +

    --preset insane

    +

    This preset will usually be overkill for most people and most situations, but + if you must have the absolute highest quality with no regard to filesize, this + is the way to go. This preset is the highest preset quality available.

    +

     

    +

    ABR modes

    +

    --preset <kbps>

    +

    Using this preset will usually give you good quality at a specified bitrate. + Depending on the bitrate entered, this preset will determine the optimal settings + for that particular situation.
    + While this approach works, it is not nearly as flexible as VBR, and usually + will not reach the same quality level as VBR at higher bitrates.
    + If you need CBR encoding, those presets can also be used in CBR mode by using:
    + lame --preset cbr <kbps>

    + + diff --git a/lame-3.97/doc/html/switchs.html b/lame-3.97/doc/html/switchs.html new file mode 100644 index 0000000..96c732a --- /dev/null +++ b/lame-3.97/doc/html/switchs.html @@ -0,0 +1,1340 @@ + + + +Full command line switch reference + + + + + + + + +

    Full command line switch reference

    +

    note: Options which could exist without being documented + here are considered as experimental ones. Such experimental options should usually + not be used. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    switchparameter
    -adownmix stereo file to mono
    --abraverage bitrate encoding
    --allshortuse short blocks only
    --athlowerlower the ATH
    --athonlyATH only
    --athshortATH only for short blocks
    --athtypeselect ATH type
    -bbitrate (8...320)
    -Bmax VBR/ABR bitrate (8...320)
    --bitwidthinput bit width
    -ccopyright
    --cbrenforce use of constant bitrate
    --clipdetectclipping detection
    --compchoose compression ratio
    --cwlimittonality limit
    -dblock type control
    --decodedecoding only
    --disptimetime between display updates
    -ede-emphasis (n, 5, c)
    -f fast mode
    -F strictly enforce the -b option
    --freeformat free format bitstream
    -hhigh quality
    --help help
    --highpass highpass filtering frequency in kHz
    --highpass-width width of highpass filtering in kHz
    -k full bandwidth
    --lowpass lowpass filtering frequency in kHz
    --lowpass-width width of lowpass filtering in kHz
    -mstereo mode (s, j, f, m)
    --mp1inputMPEG Layer I input file
    --mp2inputMPEG Layer II input file
    --mp3inputMPEG Layer III input file
    --noathdisable ATH
    --noasmdisable assembly optimizations (mmx/3dnow/sse)
    --nohistdisable histogram display
    --noreplaygaindisable ReplayGain analysis
    --noresdisable bit reservoir
    --noshortdisable short blocks frames
    --notempdisable temporal masking
    -onon-original
    -perror protection
    --presetuse built-in preset
    --priorityOS/2 process priority control
    -qalgorithm quality selection
    --quietsilent operation
    -rinput file is raw PCM
    --replaygain-accuratecompute ReplayGain more accurately and find the peak sample
    --replaygain-fastcompute ReplayGain fast but slightly inaccurately (default)
    --resampleoutput sampling frequency in kHz (encoding only)
    -ssampling frequency in kHz
    -Ssilent operation
    --scalescale input
    --scale-lscale input channel 0 (left)
    --scale-rscale input channel 1 (right)
    --shortuse short blocks
    --silentsilent operation
    --strictly-enforce-ISOstrict ISO compliance
    -tdisable INFO/WAV header
    -VVBR quality setting (0...9)
    --vbr-newnew VBR mode
    --vbr-oldolder VBR mode
    --verboseverbosity
    -xswapbytes
    -Xchange quality measure
    +
    +

    +
    * -a    downmix  +
    Mix the stereo input file to mono and encode as mono.
    + The downmix is calculated as the sum of the left and right channel, attenuated + by 6 dB.
    +
    + This option is only needed in the case of raw PCM stereo input (because LAME + cannot determine the number of channels in the input file).
    + To encode a stereo PCM input file as mono, use "lame -m s -a".
    +
    + For WAV and AIFF input files, using "-m m" will always produce a mono .mp3 + file from both mono and stereo input. +

    +
    +
    +
    +
    +
    +
    * --abr n    average + bitrate encoding
    +
    +
    +
    Turns on encoding with a targeted average bitrate of n kbits, allowing to + use frames of different sizes. The allowed range of n is 8-310, you can use + any integer value within that range.
    +
    + It can be combined with the -b and -B switches like:
    + lame --abr 123 -b 64 -B 192 a.wav a.mp3
    + which would limit the allowed frame sizes between 64 and 192 kbits.
    +
    + +
    +
    +
    +
    +
    * --allshort    use + short blocks only
    +
    +
    +
    Use only short blocks, no long ones. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athlower n    lower + the ATH
    +
    +
    +
    Lower the ATH (absolute threshold of hearing) by n dB.
    + Normally, humans are unable to hear any sound below this threshold, but for + music recorded at very low level this option might be useful. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athonly    ATH + only
    +
    +
    +
    This option causes LAME to ignore the output of the psy-model and only use + masking from the ATH (absolute threshold of hearing). Might be useful at very + high bitrates or for testing the ATH. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athshort    ATH + only for short blocks
    +
    +
    +
    Ignore psychoacoustic model for short blocks, use ATH only. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --athtype 0/1/2    select + ATH type
    +
    +
    +
    The Absolute Threshold of Hearing is the minimum threshold under which humans + are unable to hear any sound. In the past, LAME was using ATH shape 0 which + is the Painter & Spanias formula. Tests have shown that this formula is innacurate + for the 13-22 kHz area, leading to audible artifacts in some cases. Shape 1 + was thus implemented, which is over sensitive, leading to very high bitrates. + Shape 2 formula was accurately modelized from real data in order to real optimal + quality while not wasting bitrate. In CBR and ABR modes, LAME uses ATH shape + 2 by default.
    +
    + In VBR mode, LAME is adapting its shape according to the + -V value, going gradually from the 0 shape at -V9 up to shape 2 at -V0. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * -b n    bitrate +
    +
    +
    +
    For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz)
    + n = 32,40,48,56,64,80,96,112,128,160,192,224,256,320
    +
    + For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz)
    + n = 8,16,24,32,40,48,56,64,80,96,112,128,144,160
    +
    + Default is 128 kbps for MPEG1 and 64 kbps for MPEG2.
    +
    + When used with variable bitrate encoding (VBR), -b specifies the minimum bitrate + to be used. However, in order to avoid wasted space, the smallest frame size + available will be used during silences. +

    +
    +
    +
    +
    +
    +
    * -B n    maximum + VBR/ABR bitrate 
    +
    +
    +
    For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz)
    + n = 32,40,48,56,64,80,96,112,128,160,192,224,256,320
    +
    + For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz)
    + n = 8,16,24,32,40,48,56,64,80,96,112,128,144,160
    +
    + Specifies the maximum allowed bitrate when using VBR/ABR
    +
    + The use of -B is NOT RECOMMENDED. A 128kbps CBR bitstream, because of the bit reservoir, + can actually have frames which use as many bits as a 320kbps frame. VBR modes + minimize the use of the bit reservoir, and thus need to allow 320kbps frames + to get the same flexibility as CBR streams.
    +
    + note: If you own an mp3 hardware player build upon a MAS 3503 chip, you + must set maximum bitrate to no more than 224 kpbs.
    +
    +
    +
    * --bitwidth 8/16/24/32    input + bit width 
    +
    +
    +
    Required only for raw PCM input files. Otherwise it will be determined + from the header of the input file.
    +
    +
    +
    +
    +
    +
    * --clipdetect    clipping detection +
    +
    +
    +
    + Enable --replaygain-accurate and print a message whether clipping + occurs and how far in dB the waveform is from full scale.
    +
    + This option is not usable if the MP3 decoder was explicitly + disabled in the build of LAME.
    +
    + See also: --replaygain-accurate +

    +
    +
    +
    +
    * --cbr +     enforce use of constant bitrate +
    +
    +
    +
    This switch enforces the use of constant bitrate encoding. +

    +
    +
    +
    +
    * --cbr +     enforce use of constant bitrate +
    +
    +
    +
    This switch enforces the use of constant bitrate encoding. +

    +
    +
    +
    +
    * --comp    choose + compression ratio
    +
    +
    +
    Instead of choosing bitrate, using this option, user can choose compression + ratio to achieve. +

    +
    +
    +
    +
    * --cwlimit n   tonality + limit
    +
    +
    +
    Compute tonality up to freq (in kHz). Default setting is 8.8717. +

    +
    +
    +
    +
    * -d    block type control +
    +
    +
    +
    Allows the left and right channels to use different block size types. +

    +
    +
    +
    +
    * --decode    decoding + only
    +
    +
    +
    Uses LAME for decoding to a WAV file. The input file can be any input type + supported by encoding, including layer I,II,III (MP3) and OGG files. In case + of MPEG files, LAME uses a bugfixed version of mpglib for decoding.
    +
    + If -t is used (disable WAV header), Lame will output raw PCM in native endian + format. You can use -x to swap bytes order.
    +
    + This option is not usable if the MP3 decoder was explicitly + disabled in the build of LAME. +

    +
    +
    +
    +
    +
    +
    * --disptime n    time + between display updates
    +
    +
    +
    Set the delay in seconds between two display updates. +

    +
    +
    +
    +
    +
    +
    * -e n/5/c    de-emphasis +
    +
    +
    +

    + n = (none, default)
    + 5 = 0/15 microseconds
    + c = citt j.17
    +
    + All this does is set a flag in the bitstream. If you have a PCM input file + where one of the above types of (obsolete) emphasis has been applied, you + can set this flag in LAME. Then the mp3 decoder should de-emphasize the output + during playback, although most decoders ignore this flag.
    +
    + A better solution would be to apply the de-emphasis with a standalone utility + before encoding, and then encode without -e. +

    +
    +
    +
    +
    +
    +
    * -f    fast mode +
    +
    +
    +
    This switch forces the encoder to use a faster encoding mode, but with + a lower quality. The behaviour is the same as the -q7 switch.
    +
    + Noise shaping will be disabled, but psycho acoustics will still be computed + for bit allocation and pre-echo detection. +

    +
    +
    +
    +
    +
    +
    * -F   strictly enforce the + -b option
    +
    +
    +
    This is mainly for use with hardware players that do not support low bitrate + mp3.
    +
    + Without this option, the minimum bitrate will be ignored for passages of analog + silence, ie when the music level is below the absolute threshold of human + hearing (ATH). +

    +
    +
    +
    +
    +
    +
    * --freeformat    free + format bitstream
    +
    +
    +
    Produces a free format bitstream. With this option, you can use -b with + any bitrate higher than 8 kbps.
    +
    + However, even if an mp3 decoder is required to support free bitrates at least + up to 320 kbps, many players are unable to deal with it.
    +
    + Tests have shown that the following decoders support free format:
    +
    + FreeAmp up to 440 kbps
    + in_mpg123 up to 560 kbps
    + l3dec up to 310 kbps
    + LAME up to 560 kbps
    + MAD up to 640 kbps
    +

    +
    +
    +
    +
    +
    +
    * -h    high quality +
    +
    +
    +
    Use some quality improvements. Encoding will be slower, but the result + will be of higher quality. The behaviour is the same as the -q2 switch.
    + This switch is always enabled when using VBR. +

    +
    +
    +
    +
    +
    +
    * --help    help +
    +
    +
    +
    Display a list of all available options. +

    +
    +
    +
    +
    +
    +
    * --highpass    highpass + filtering frequency in kHz
    +
    +
    +
    Set an highpass filtering frequency. Frequencies below the specified one + will be cutoff. +

    +
    +
    +
    +
    +
    +
    * --highpass-width    width + of highpass filtering in kHz
    +
    +
    +
    Set the width of the highpass filter. The default value is 15% of the highpass + frequency. +

    +
    +
    +
    +
    +
    +
    * -k    full bandwidth +
    +
    +
    +
    Tells the encoder to use full bandwidth and to disable all filters. By + default, the encoder uses some lowpass filtering at lower bitrates, in order + to keep a good quality by giving more bits to more important frequencies.
    + Increasing the bandwidth from the default setting might produce ringing artefacts + at low bitrates. Use with care! +

    +
    +
    +
    +
    +
    +
    * --lowpass    lowpass + filtering frequency in kHz
    +
    +
    +
    Set a lowpass filtering frequency. Frequencies above the specified one + will be cutoff. +

    +
    +
    +
    +
    +
    +
    * --lowpass-width    width + of lowpass filtering in kHz
    +
    +
    +
    Set the width of the lowpass filter. The default value is 15% of the lowpass + frequency. +

    +
    +
    +
    +
    +
    +
    * -m s/j/f/d/m    stereo + mode
    +
    +
    +
    Joint-stereo is the default mode for input files featuring two channels.. +
    +
    + stereo

    + In this mode, the encoder makes no use of potentially existing correlations + between the two input channels. It can, however, negotiate the bit demand + between both channel, i.e. give one channel more bits if the other contains + silence or needs less bits because of a lower complexity.
    +
    + joint stereo
    + In this mode, the encoder will make use of correlation between both channels. + The signal will be matrixed into a sum ("mid"), computed by L+R, and difference + ("side") signal, computed by L-R, and more bits are allocated to the mid channel.
    + This will effectively increase the bandwidth if the signal does not have too + much stereo separation, thus giving a significant gain in encoding quality. + In joint stereo, the encoder can select between Left/Right and Mid/Side representation + on a frame basis.
    +
    + Using mid/side stereo inappropriately can result in audible compression artifacts. + To much switching between mid/side and regular stereo can also sound bad. + To determine when to switch to mid/side stereo, LAME uses a much more sophisticated + algorithm than that described in the ISO documentation, and thus is safe to + use in joint stereo mode.
    +
    + forced joint stereo
    + This mode will force MS joint stereo on all frames. It's slightly faster than + joint stereo, but it should be used only if you are sure that every frame + of the input file has very little stereo separation.
    +
    + dual channels
    + In this mode, the 2 channels will be totally independently encoded. Each + channel will have exactly half of the bitrate. This mode is designed for applications + like dual languages encoding (ex: English in one channel and French in the + other). Using this encoding mode for regular stereo files will result in a + lower quality encoding.
    +
    + mono
    + The input will be encoded as a mono signal. If it was a stereo signal, it + will be downsampled to mono. The downmix is calculated as the sum of the left + and right channel, attenuated by 6 dB. +

    +
    +
    +
    +
    +
    +
    * --mp1input    MPEG + Layer I input file
    +
    +
    +
    Assume the input file is a MPEG Layer I file.
    + If the filename ends in ".mp1" or ".mpg" LAME will assume it is + a MPEG Layer I file. For stdin or Layer I files which do not end in .mp1 or .mpg + you need to use this switch. +

    +
    +
    +
    +
    +
    +
    +
    * --mp2input    MPEG + Layer II input file
    +
    +
    +
    Assume the input file is a MPEG Layer II (ie MP2) file.
    + If the filename ends in ".mp2" LAME will assume it is a MPEG Layer II file. For + stdin or Layer II files which do not end in .mp2 you need to use this switch. +

    +
    +
    +
    +
    +
    +
    +
    * --mp3input    MPEG + Layer III input file
    +
    +
    +
    Assume the input file is a MP3 file. Useful for downsampling from one + mp3 to another. As an example, it can be useful for streaming through an + IceCast server.
    + If the filename ends in ".mp3" LAME will assume it is an MP3 file. For stdin or + MP3 files which do not end in .mp3 you need to use this switch. +

    +
    +
    +
    +
    +
    +
    +
    * --noath    disable + ATH
    +
    +
    +
    Disable any use of the ATH (absolute threshold of hearing) for masking. + Normally, humans are unable to hear any sound below this threshold. +

    +
    +
    +
    +
    +
    +
    +
    * --noasm mmx/3dnow/sse +     disable assembly optimizations
    +
    +
    +
    Disable specific assembly optimizations. Quality will not increase, only + speed will be reduced. If you have problems running Lame on a Cyrix/Via + processor, disabling mmx optimizations might solve your problem. +

    +
    +
    +
    +
    +
    +
    +
    * --nohist    disable + histogram display
    +
    +
    +
    By default, LAME will display a bitrate histogram while producing VBR mp3 + files. This will disable that feature.
    + Histogram display might not be available on your release. +

    +
    +
    +
    +
    +
    +
    +
    * --noreplaygain    disable + ReplayGain analysis
    +
    +
    +
    By default ReplayGain analysis is enabled. This switch disables it.
    +
    + See also: --replaygain-accurate, + --replaygain-fast +

    +
    +
    +
    +
    +
    +
    +
    * --nores    disable + bit reservoir
    +
    +
    +
    Disable the bit reservoir. Each frame will then become independent from + previous ones, but the quality will be lower. +

    +
    +
    +
    +
    +
    +
    +
    * --noshort    disable + short blocks frames
    +
    +
    +
    Encode all frames using long blocks only. This could increase quality when + encoding at very low bitrates, but can produce serious pre-echo artefacts. +

    +
    +
    +
    +
    +
    +
    +
    * --notemp    disable + temporal masking
    +
    +
    +
    Don't make use of the temporal masking effect. +

    +
    +
    +
    +
    +
    +
    +
    * -o    non-original +
    +
    +
    +
    Mark the encoded file as being a copy. +

    +
    +
    +
    +
    +
    +
    * -p    error protection
    +
    +
    +
    Turn on CRC error protection.
    + It will add a cyclic redundancy check (CRC) code in each frame, allowing to + detect transmission errors that could occur on the MP3 stream. However, it + takes 16 bits per frame that would otherwise be used for encoding, and then + will slightly reduce the sound quality. +

    +
    +
    +
    +
    +
    +
    * --preset presetName     use + built-in preset
    +
    +
    Use one of the built-in presets (standard, fast standard, extreme, fast extreme, insane, or the abr/cbr modes). +
    +
    "--preset help" gives more information about the usage possibilities for these presets. +

    +
    +
    +
    +
    +
    * --priority 0...4    OS/2 + process priority control
    +
    +
    With this option, LAME will run with a different process priority under + IBM OS/2.
    + This will greatly improve system responsiveness, since OS/2 will have more + free time to properly update the screen and poll the keyboard/mouse. It should + make quite a difference overall, especially on slower machines. LAME's performance + impact should be minimal.
    +
    +
    0 (Low priority)
    + Priority 0 assumes "IDLE" class, with delta 0.
    + LAME will have the lowest priority possible, and the encoding may be suspended + very frequently by user interaction.
    +
    +
    1 (Medium priority)
    + Priority 1 assumes "IDLE" class, with delta +31.
    + LAME won't interfere at all with what you're doing.
    + Recommended if you have a slower machine.
    +
    +
    2 (Regular priority)
    + Priority 2 assumes "REGULAR" class, with delta -31.
    + LAME won't interfere with your activity. It'll run just like a regular process, + but will spare just a bit of idle time for the system. Recommended for most + users.
    +
    +
    3 (High priority)
    + Priority 3 assumes "REGULAR" class, with delta 0.
    + LAME will run with a priority a bit higher than a normal process.
    + Good if you're just running LAME by itself or with moderate user interaction.
    +
    +
    4 (Maximum priority)
    + Priority 4 assumes "REGULAR" class, with delta +31.
    + LAME will run with a very high priority, and may interfere with the machine + response.
    + Recommended if you only intend to run LAME by itself, or if you have a fast + processor.
    +
    +
    + Priority 1 or 2 is recommended for most users. +

    +
    +
    +
    +
    +
    +
    * -q 0..9    algorithm + quality selection
    +
    +
    +
    Bitrate is of course the main influence on quality. The higher the bitrate, + the higher the quality. But for a given bitrate, we have a choice of algorithms + to determine the best scalefactors and Huffman encoding (noise shaping).
    +
    + -q 0: use slowest & best possible version of all algorithms. -q 0 and -q 1 + are slow and may not produce significantly higher quality.
    +
    + -q 2: recommended. Same as -h.
    +
    + -q 5: default value. Good speed, reasonable quality.
    +
    + -q 7: same as -f. Very fast, ok quality. (psycho acoustics are used for pre-echo + & M/S, but no noise shaping is done.
    +
    + -q 9: disables almost all algorithms including psy-model. poor quality. +

    +
    +
    +
    +
    +
    +
    * -r    input file is + raw PCM
    +
    +
    +
    Assume the input file is raw PCM. Sampling rate and mono/stereo/jstereo + must be specified on the command line. Without -r, LAME will perform several + fseek()'s on the input file looking for WAV and AIFF headers.
    + Might not be available on your release. +

    +
    +
    +
    +
    +
    +
    * --replaygain-accurate    compute + ReplayGain more accurately and find the peak sample
    +
    +
    +
    + Enable decoding on the fly. Compute "Radio" ReplayGain on the decoded + data stream. Find the peak sample of the decoded data stream and store + it in the file.
    +
    + ReplayGain analysis does not affect the content of a + compressed data stream itself, it is a value stored in the header + of a sound file. Information on the purpose of ReplayGain and the + algorithms used is available from + http://www.replaygain.org/
    +
    + By default, LAME performs ReplayGain analysis on the input data + (after the user-specified volume scaling). This + behavior might give slightly inaccurate results because the data on + the output of a lossy compression/decompression sequence differs from + the initial input data. When --replaygain-accurate is specified the + mp3 stream gets decoded on the fly and the analysis is performed on the + decoded data stream. Although theoretically this method gives more + accurate results, it has several disadvantages: +
      +
    • tests have shown that the difference between the ReplayGain values + computed on the input data and decoded data is usually no greater + than 0.5dB, although the minimum volume difference the human ear + can perceive is about 1.0dB +
    • +
    • decoding on the fly significantly slows down the encoding process +
    • +
    + The apparent advantage is that: +
      +
    • with --replaygain-accurate the peak sample is determined and + stored in the file. The knowledge of the peak sample can be useful + to decoders (players) to prevent a negative effect called 'clipping' + that introduces distortion into sound. +
    • +
    +
    + Only the "RadioGain" ReplayGain value is computed. It is stored in the + LAME tag. The analysis is performed with the reference volume equal + to 89dB. Note: the reference volume has been changed from 83dB on + transition from version 3.95 to 3.95.1.
    +
    + This option is not usable if the MP3 decoder was explicitly + disabled in the build of LAME. (Note: if LAME is compiled without the + MP3 decoder, ReplayGain analysis is performed on the input data after + user-specified volume scaling).
    +
    + See also: --replaygain-fast, + --noreplaygain, --clipdetect +

    +
    +
    +
    +
    +
    +
    +
    * --replaygain-fast    compute + ReplayGain fast but slightly inaccurately (default)
    +
    +
    +
    + Compute "Radio" ReplayGain on the input data stream after user-specified + volume scaling and/or resampling.
    +
    + ReplayGain analysis does not affect the content of a + compressed data stream itself, it is a value stored in the header + of a sound file. Information on the purpose of ReplayGain and the + algorithms used is available from + http://www.replaygain.org/
    +
    + Only the "RadioGain" ReplayGain value is computed. It is stored in the + LAME tag. The analysis is performed with the reference volume equal + to 89dB. Note: the reference volume has been changed from 83dB on + transition from version 3.95 to 3.95.1.
    +
    + This switch is enabled by default.
    +
    + See also: --replaygain-accurate, + --noreplaygain +

    +
    +
    +
    +
    +
    +
    +
    * --resample 8/11.025/12/16/22.05/24/32/44.1/48    output + sampling frequency in kHz
    +
    +
    +
    Select output sampling frequency (for encoding only).
    + If not specified, LAME will automatically resample the input when using high + compression ratios. +

    +
    +
    +
    +
    +
    +
    +
    * -s 8/11.025/12/16/22.05/24/32/44.1/48    sampling + frequency
    +
    +
    +
    Required only for raw PCM input files. Otherwise it will be determined + from the header of the input file.
    +
    + LAME will automatically resample the input file to one of the supported MP3 + samplerates if necessary. +

    +
    +
    +
    +
    +
    +
    * -S / --silent / --quiet    silent + operation
    +
    +
    +
    Don't print progress report. +

    +
    +
    +
    +
    +
    +
    * --scale n    scales + input by n
    +
    * --scale-l n    scales + input channel 0 (left) by n
    +
    * --scale-r n    scales + input channel 1 (right) by n
    +
    +
    +
    Scales input by n. This just multiplies the PCM data (after it has been + converted to floating point) by n.
    +
    + n > 1: increase volume
    + n = 1: no effect
    + n < 1: reduce volume
    +
    + Use with care, since most MP3 decoders will truncate data which decodes to + values greater than 32768. +

    +
    +
    +
    +
    +
    +
    * --short    use + short blocks
    +
    +
    +
    Let LAME use short blocks when appropriate. It is the default setting. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * --strictly-enforce-ISO    strict + ISO compliance
    +
    +
    +
    With this option, LAME will enforce the 7680 bit limitation on total frame + size.
    + This results in many wasted bits for high bitrate encodings but will ensure + strict ISO compatibility. This compatibility might be important for hardware + players. +
    +
    +
      +

    +
    +
    +
    +
    +
    +
    * -t    disable INFO/WAV + header
    +
    +
    +
    Disable writing of the INFO Tag on encoding.
    + This tag in embedded in frame 0 of the MP3 file. It includes some information + about the encoding options of the file, and in VBR it lets VBR aware players + correctly seek and compute playing times of VBR files.
    +
    + When '--decode' is specified (decode to WAV), this flag will disable writing + of the WAV header. The output will be raw PCM, native endian format. Use -x + to swap bytes. +

    +
    +
    +
    +
    +
    +
    * -V 0...9    VBR quality + setting
    +
    +
    +
    Enable VBR (Variable BitRate) and specifies the value of VBR quality.
    + default=4
    + 0=highest quality. +

    +
    +
    +
    +
    +
    +
    * --vbr-new    new + VBR mode
    +
    +
    +
    Invokes the newest VBR algorithm. During the development of version 3.90, + considerable tuning was done on this algorithm, and it is now considered to + be on par with the original --vbr-old.
    + It has the added advantage of being very fast (over twice as fast as --vbr-old). +

    +
    +
    +
    +
    +
    +
    * --vbr-old    older + VBR mode
    +
    +
    +
    Invokes the oldest, most tested VBR algorithm. It produces very good quality + files, though is not very fast. This has, up through v3.89, been considered + the "workhorse" VBR algorithm. +

    +
    +
    +
    +
    +
    +
    * --verbose    verbosity
    +
    +
    +
    Print a lot of information on screen. +

    +
    +
    +
    +
    +
    +
    * -x    swapbytes +
    +
    +
    +
    Swap bytes in the input file or output file when using --decode.
    + For sorting out little endian/big endian type problems. If your encodings + sounds like static, try this first. +

    +
    +
    +
    +
    +
    +
    * -X 0...7    change + quality measure
    +
    +
    +
    When LAME searches for a "good" quantization, it has to compare the actual + one with the best one found so far. The comparison says which one is better, + the best so far or the actual. The -X parameter selects between different + approaches to make this decision, -X0 being the default mode:
    +
    + -X0
    + The criterions are (in order of importance):
    + * less distorted scalefactor bands
    + * the sum of noise over the thresholds is lower
    + * the total noise is lower
    +
    + -X1
    + The actual is better if the maximum noise over all scalefactor bands is less + than the best so far .
    +
    + -X2
    + The actual is better if the total sum of noise is lower than the best so far.
    +
    + -X3
    + The actual is better if the total sum of noise is lower than the best so far + and the maximum noise over all scalefactor bands is less than the best so + far plus 2db.
    +
    + -X4
    + Not yet documented.
    +
    + -X5
    + The criterions are (in order of importance):
    + * the sum of noise over the thresholds is lower
    + * the total sum of noise is lower
    +
    + -X6
    + The criterions are (in order of importance):
    + * the sum of noise over the thresholds is lower
    + * the maximum noise over all scalefactor bands is lower
    + * the total sum of noise is lower
    +
    + -X7
    + The criterions are:
    + * less distorted scalefactor bands
    + or
    + * the sum of noise over the thresholds is lower +
    + + diff --git a/lame-3.97/doc/man/.svn/all-wcprops b/lame-3.97/doc/man/.svn/all-wcprops new file mode 100644 index 0000000..83c7e8e --- /dev/null +++ b/lame-3.97/doc/man/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/328/monitor/trunk/lame-3.97/doc/man +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/328/monitor/trunk/lame-3.97/doc/man/Makefile.in +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/doc/man/Makefile.am +END +lame.1 +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/238/monitor/trunk/lame-3.97/doc/man/lame.1 +END diff --git a/lame-3.97/doc/man/.svn/entries b/lame-3.97/doc/man/.svn/entries new file mode 100644 index 0000000..cefa05b --- /dev/null +++ b/lame-3.97/doc/man/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/doc/man +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Makefile.in +file + + + + +2012-01-23T14:07:04.444483Z +f9e586e4ffc975965d4e3d02b32f859d +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +11272 + +Makefile.am +file + + + + +2012-01-23T14:07:04.445488Z +c49c052562c3bbece2b021dbeb5552d2 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +145 + +lame.1 +file + + + + +2012-01-23T14:07:04.445488Z +ea2595b69218db03b00128b5816d4f42 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +30512 + diff --git a/lame-3.97/doc/man/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/doc/man/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/doc/man/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/doc/man/.svn/text-base/Makefile.am.svn-base b/lame-3.97/doc/man/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..ecab077 --- /dev/null +++ b/lame-3.97/doc/man/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,7 @@ +## $Id: Makefile.am,v 1.1 2000/10/22 11:39:44 aleidinger Exp $ + +AUTOMAKE_OPTIONS = foreign ansi2knr + +man_MANS = lame.1 +EXTRA_DIST = ${man_MANS} + diff --git a/lame-3.97/doc/man/.svn/text-base/Makefile.in.svn-base b/lame-3.97/doc/man/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..7cac23b --- /dev/null +++ b/lame-3.97/doc/man/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,398 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/man +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = foreign ansi2knr +man_MANS = lame.1 +EXTRA_DIST = ${man_MANS} +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/man/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/man/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-man1 \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-info-am uninstall-man \ + uninstall-man1 + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/doc/man/.svn/text-base/lame.1.svn-base b/lame-3.97/doc/man/.svn/text-base/lame.1.svn-base new file mode 100644 index 0000000..e0f2733 --- /dev/null +++ b/lame-3.97/doc/man/.svn/text-base/lame.1.svn-base @@ -0,0 +1,1233 @@ +.TH lame 1 "August 03, 2005" "" "LAME audio compressor" +.SH NAME +lame \- create mp3 audio files +.SH SYNOPSIS +lame [options] +.SH DESCRIPTION +.PP +LAME is a program which can be used to create compressed audio files. +(Lame ain't an MP3 encoder). +These audio files can be played back by popular MP3 players such as +mpg123 or madplay. +To read from stdin, use "\-" for . +To write to stdout, use a "\-" for . +.SH OPTIONS +Input options: +.TP +.B \-r +Assume the input file is raw pcm. +Sampling rate and mono/stereo/jstereo must be specified on the command line. +Without +.B \-r, +LAME will perform several +.I fseek()'s +on the input file looking for WAV and AIFF headers. +.br +Might not be available on your release. +.TP +.B \-x +Swap bytes in the input file or output file when using +.B \-\-decode. +.br +For sorting out little endian/big endian type problems. +If your encodings sounds like static, +try this first. +.br +Without using +.B \-x, +LAME will treat input file as native endian. +.TP +.BI \-s " sfreq" +.I sfreq += 8/11.025/12/16/22.05/24/32/44.1/48 + +Required only for raw PCM input files. +Otherwise it will be determined from the header of the input file. + +LAME will automatically resample the input file to one of the supported +MP3 samplerates if necessary. +.TP +.BI \-\-bitwidth " n" +Input bit width per sample. +.br +.I n += 8, 16, 24, 32 (default 16) + +Required only for raw PCM input files. +Otherwise it will be determined from the header of the input file. +.TP +.BI \-\-signed +Instructs LAME that the samples from the input are signed (the default). + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.BI \-\-unsigned +Instructs LAME that the samples from the input are unsigned. + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.BI \-\-little-endian +Instructs LAME that the samples from the input are in little-endian form. + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.BI \-\-big-endian +Instructs LAME that the samples from the input are in big-endian form. + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.B \-\-mp2input +Assume the input file is a MPEG Layer II (ie MP2) file. +.br +If the filename ends in ".mp2" LAME will assume it is a MPEG Layer II file. +For stdin or Layer II files which do not end in .mp2 you need to use +this switch. +.TP +.B \-\-mp3input +Assume the input file is a MP3 file. +.br +Useful for downsampling from one mp3 to another. +As an example, +it can be useful for streaming through an IceCast server. +.br +If the filename ends in ".mp3" LAME will assume it is an MP3. +For stdin or MP3 files which do not end in .mp3 you need to use this switch. +.TP +.BI \-\-nogap " file1 file2 ..." +gapless encoding for a set of contiguous files +.TP +.BI \-\-nogapout " dir" +output dir for gapless encoding (must precede \-\-nogap) + +.PP +Operational options: +.TP +.BI \-m " mode" +.I mode += s, j, f, d, m + +Joint-stereo is the default mode for stereo files with VBR when +.B \-V +is more than 4 or fixed bitrates of 160kbs or less. +At higher fixed bitrates or higher VBR settings, +the default is stereo. + +.B (s)tereo +.br +In this mode, +the encoder makes no use of potentially existing correlations between +the two input channels. +It can, +however, +negotiate the bit demand between both channel, +i.e. give one channel more bits if the other contains silence or needs +less bits because of a lower complexity. + +.B (j)oint stereo +.br +In this mode, +the encoder will make use of a correlation between both channels. +The signal will be matrixed into a sum ("mid"), +computed by L+R, +and difference ("side") signal, +computed by L\-R, +and more bits are allocated to the mid channel. +This will effectively increase the bandwidth if the signal does not +have too much stereo separation, +thus giving a significant gain in encoding quality. + +Using mid/side stereo inappropriately can result in audible +compression artifacts. +To much switching between mid/side and regular stereo can also +sound bad. +To determine when to switch to mid/side stereo, +LAME uses a much more sophisticated algorithm than that described +in the ISO documentation, and thus is safe to use in joint +stereo mode. + +.B (f)orced joint stereo +.br +This mode will force MS joint stereo on all frames. +It is slightly faster than joint stereo, +but it should be used only if you are sure that every frame of the +input file has very little stereo separation. + +.B (d)ual channels +.br +In this mode, +the 2 channels will be totally independently encoded. +Each channel will have exactly half of the bitrate. +This mode is designed for applications like dual languages +encoding (for example: English in one channel and French in the other). +Using this encoding mode for regular stereo files will result in a +lower quality encoding. + +.B (m)ono +.br +The input will be encoded as a mono signal. +If it was a stereo signal, +it will be downsampled to mono. +The downmix is calculated as the sum of the left and right channel, +attenuated by 6 dB. +.TP +.B \-a +Mix the stereo input file to mono and encode as mono. +.br +The downmix is calculated as the sum of the left and right channel, +attenuated by 6 dB. + +This option is only needed in the case of raw PCM stereo input +(because LAME cannot determine the number of channels in the input file). +To encode a stereo PCM input file as mono, +use +.B lame \-m +.I s +.B \-a. + +For WAV and AIFF input files, +using +.B \-m +will always produce a mono .mp3 file from both mono and stereo input. +.TP +.B \-d +Allows the left and right channels to use different block size types. +.TP +.B \-\-freeformat +Produces a free format bitstream. +With this option, +you can use +.B \-b +with any bitrate higher than 8 kbps. + +However, +even if an mp3 decoder is required to support free bitrates at +least up to 320 kbps, +many players are unable to deal with it. + +Tests have shown that the following decoders support free format: +.br +.B FreeAmp +up to 440 kbps +.br +.B in_mpg123 +up to 560 kbps +.br +.B l3dec +up to 310 kbps +.br +.B LAME +up to 560 kbps +.br +.B MAD +up to 640 kbps +.TP +.B \-\-decode +Uses LAME for decoding to a wav file. +The input file can be any input type supported by encoding, +including layer II files. +LAME uses a bugfixed version of mpglib for decoding. + +If +.B \-t +is used (disable wav header), +LAME will output raw pcm in native endian format. +You can use +.B \-x +to swap bytes order. + +This option is not usable if the MP3 decoder was +.B explicitly +disabled in the build of LAME. +.TP +.BI \-t +Disable writing of the INFO Tag on encoding. +.br +This tag in embedded in frame 0 of the MP3 file. +It includes some information about the encoding options of the file, +and in VBR it lets VBR aware players correctly seek and compute +playing times of VBR files. + +When +.B \-\-decode +is specified (decode to WAV), +this flag will disable writing of the WAV header. +The output will be raw pcm, +native endian format. +Use +.B \-x +to swap bytes. +.TP +.BI \-\-comp " arg" +Instead of choosing bitrate, +using this option, +user can choose compression ratio to achieve. +.TP +.BI \-\-scale " n" +.PD 0 +.TP +.BI \-\-scale\-l " n" +.TP +.BI \-\-scale\-r " n" +Scales input (every channel, only left channel or only right channel) by +.I n. +This just multiplies the PCM data (after it has been converted to floating +point) by +.I n. + +.I n +> 1: increase volume +.br +.I n += 1: no effect +.br +.I n +< 1: reduce volume + +Use with care, +since most MP3 decoders will truncate data which decodes to values +greater than 32768. +.PD +.TP +.B \-\-replaygain\-fast +Compute ReplayGain fast but slightly inaccurately. + +This computes "Radio" ReplayGain on the input data stream after +user\(hyspecified volume\(hyscaling and/or resampling. + +The ReplayGain analysis does +.I not +affect the content of a compressed data stream itself, +it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from +.B http://www.replaygain.org/. + +Only the "RadioGain" Replaygain value is computed, +it is stored in the LAME tag. +The analysis is performed with the reference +volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition from +version 3.95 to 3.95.1. + +This switch is enabled by default. + +See also: +.B \-\-replaygain\-accurate, \-\-noreplaygain +.TP +.B \-\-replaygain\-accurate +Compute ReplayGain more accurately and find the peak sample. + +This enables decoding on the fly, computes "Radio" ReplayGain on the +decoded data stream, +finds the peak sample of the decoded data stream and stores it in the file. + +The ReplayGain analysis does +.I not +affect the content of a compressed data stream itself, +it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from +.B http://www.replaygain.org/. + + +By default, LAME performs ReplayGain analysis on the input data +(after the user\(hyspecified volume scaling). +This behavior might give slightly inaccurate results +because the data on the output of a lossy compression/decompression sequence +differs from the initial input data. +When +.B \-\-replaygain-accurate +is specified the mp3 stream gets decoded on the fly and the analysis is +performed on the decoded data stream. +Although theoretically this method gives more accurate results, +it has several disadvantages: +.RS 8 +.IP "*" 4 +tests have shown that the difference between the ReplayGain values computed +on the input data and decoded data is usually not greater than 0.5dB, +although the minimum volume difference the human ear can perceive is +about 1.0dB +.IP "*" 4 +decoding on the fly significantly slows down the encoding process +.RE +.RS 7 + +The apparent advantage is that: +.RE +.RS 8 +.IP "*" 4 +with +.B \-\-replaygain-accurate +the real peak sample is determined and stored in the file. +The knowledge of the peak sample can be useful to decoders (players) +to prevent a negative effect called 'clipping' that introduces distortion +into the sound. +.RE +.RS 7 + +Only the "RadioGain" ReplayGain value is computed, +it is stored in the LAME tag. +The analysis is performed with the reference +volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition from +version 3.95 to 3.95.1. + +This option is not usable if the MP3 decoder was +.B explicitly +disabled in the build of LAME. +(Note: if LAME is compiled without the MP3 decoder, +ReplayGain analysis is performed on the input data after user-specified +volume scaling). + +See also: +.B \-\-replaygain-fast, \-\-noreplaygain \-\-clipdetect +.RE +.TP +.B \-\-noreplaygain +Disable ReplayGain analysis. + +By default ReplayGain analysis is enabled. This switch disables it. + +See also: +.B \-\-replaygain-fast, \-\-replaygain-accurate +.TP +.B \-\-clipdetect +Clipping detection. + +Enable +.B \-\-replaygain-accurate +and print a message whether clipping occurs and how far in dB the waveform +is from full scale. + +This option is not usable if the MP3 decoder was +.B explicitly +disabled in the build of LAME. + +See also: +.B \-\-replaygain-accurate +.TP +.B \-\-preset " [fast] type | [cbr] kbps" +Use one of the built-in presets. + +Have a look at the PRESETS section below. + +.B Warning: +with the current version fast presets might result in too high bitrate +compared to regular presets. + +.B \-\-preset help +gives more infos about the the used options in these presets. +.TP +.B \-\-alt-preset " [fast] type | [cbr] kbps" +Use one of the built-in presets. + +This option is deprecated and offers the same as the +.B \-\-preset +option above. Do not use it anymore, it will go away in a later version. +.TP +.B \-\-r3mix +Uses r3mix VBR preset. +.br +See http://www.r3mix.net/ for more details. +.TP +.B \-\-noasm " type" +Disable specific assembly optimizations ( +.B mmx +/ +.B 3dnow +/ +.B sse +). +Quality will not increase, only speed will be reduced. +If you have problems running Lame on a Cyrix/Via processor, +disabling mmx optimizations might solve your problem. + +.PP +Verbosity: +.TP +.BI \-\-disptime " n" +Set the delay in seconds between two display updates. +.TP +.B \-\-nohist +By default, +LAME will display a bitrate histogram while producing VBR mp3 files. +This will disable that feature. +.br +Histogram display might not be available on your release. +.TP +.B -S +.PD 0 +.TP +.B \-\-silent +.TP +.B \-\-quiet +Do not print anything on the screen. +.PD +.TP +.B \-\-verbose +Print a lot of information on the screen. +.TP +.B \-\-help +Display a list of available options. + +.PP +Noise shaping & psycho acoustic algorithms: +.TP +.BI -q " qual" +0 <= +.I qual +<= 9 + +Bitrate is of course the main influence on quality. +The higher the bitrate, +the higher the quality. +But for a given bitrate, +we have a choice of algorithms to determine the best scalefactors +and Huffman encoding (noise shaping). + +.B -q 0: +.br +use slowest & best possible version of all algorithms. +.B -q 0 +and +.B -q 1 +are slow and may not produce significantly higher quality. + +.B -q 2: +.br +recommended. +Same as +.B -h. + +.B -q 5: +.br +default value. +Good speed, +reasonable quality. + +.B -q 7: +.br +same as +.B -f. +Very fast, +ok quality. +Psycho acoustics are used for pre-echo & M/S, +but no noise shaping is done. + +.B -q 9: +.br +disables almost all algorithms including psy-model. +Poor quality. +.TP +.B -h +Use some quality improvements. +Encoding will be slower, +but the result will be of higher quality. +The behavior is the same as the +.B -q 2 +switch. +.br +This switch is always enabled when using VBR. +.TP +.B -f +This switch forces the encoder to use a faster encoding mode, +but with a lower quality. +The behavior is the same as the +.B -q 7 +switch. + +Noise shaping will be disabled, +but psycho acoustics will still be computed for bit allocation +and pre-echo detection. + +.PP +CBR (constant bitrate, the default) options: +.TP +.BI -b " n" +For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz) +.br +.I n += 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz) +.br +.I n += 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + +Default is 128 for MPEG1 and 64 for MPEG2. +.TP +.BI \-\-cbr +enforce use of constant bitrate + +.PP +ABR (average bitrate) options: +.TP +.BI \-\-abr " n" +Turns on encoding with a targeted average bitrate of n kbits, +allowing to use frames of different sizes. +The allowed range of +.I n +is 8 - 310, +you can use any integer value within that range. + +It can be combined with the +.B -b +and +.B -B +switches like: +.B lame \-\-abr +.I 123 +.B -b +.I 64 +.B -B +.I 192 a.wav a.mp3 +which would limit the allowed frame sizes between 64 and 192 kbits. + +The use of +.B -B +is NOT RECOMMENDED. +A 128 kbps CBR bitstream, +because of the bit reservoir, +can actually have frames which use as many bits as a 320 kbps frame. +VBR modes minimize the use of the bit reservoir, +and thus need to allow 320 kbps frames to get the same flexibility +as CBR streams. + +.PP +VBR (variable bitrate) options: +.TP +.B -v +use variable bitrate +.B (\-\-vbr-old) +.TP +.B \-\-vbr-old +Invokes the oldest, +most tested VBR algorithm. +It produces very good quality files, +though is not very fast. +This has, +up through v3.89, +been considered the "workhorse" VBR algorithm. +.TP +.B \-\-vbr-new +Invokes the newest VBR algorithm. +During the development of version 3.90, +considerable tuning was done on this algorithm, +and it is now considered to be on par with the original +.B \-\-vbr-old. +It has the added advantage of being very fast (over twice as fast as +.B \-\-vbr-old). +.TP +.BI -V " n" +0 <= +.I n +<= 9 +.br +Enable VBR (Variable BitRate) and specifies the value of VBR quality +(default = 4). +0 = highest quality. + +.PP +ABR and VBR options: +.TP +.BI -b " bitrate" +For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz) +.br +.I n += 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz) +.br +.I n += 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + +Specifies the minimum bitrate to be used. +However, +in order to avoid wasted space, +the smallest frame size available will be used during silences. +.TP +.BI -B " bitrate" +For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz) +.br +.I n += 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz) +.br +.I n += 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + +Specifies the maximum allowed bitrate. + +Note: If you own an mp3 hardware player build upon a MAS 3503 chip, +you must set maximum bitrate to no more than 224 kpbs. +.TP +.B -F +Strictly enforce the +.B -b +option. +.br +This is mainly for use with hardware players that do not support low +bitrate mp3. + +Without this option, +the minimum bitrate will be ignored for passages of analog silence, +i.e. when the music level is below the absolute threshold of +human hearing (ATH). + +.PP +ATH related: +.TP +.B \-\-noath +Disable any use of the ATH (absolute threshold of hearing) for masking. +Normally, +humans are unable to hear any sound below this threshold. +.TP +.B \-\-athshort +Ignore psychoacoustic model for short blocks, +use ATH only. +.TP +.B \-\-athonly +This option causes LAME to ignore the output of the psy-model and only +use masking from the ATH (absolute threshold of hearing). +Might be useful at very high bitrates or for testing the ATH. +.TP +.BI \-\-athtype " shape" +The Absolute Threshold of Hearing is the minimum threshold under which +humans are unable to hear any sound. +.br +In the past, +LAME was using ATH shape 0 which is the Painter & Spanias formula. +Tests have shown that this formula is innacurate for the +13 - 22 kHz area, +leading to audible artifacts in some cases. +.br +Shape 1 was thus implemented, +which is over sensitive, +leading to very high bitrates. +.br +Shape 2 formula was accurately modelized from real data in order to +reach optimal quality while not wasting bitrate. +In CBR and ABR modes, +LAME uses ATH shape 2 by default, +VBR selects one depending on the specified parameter to the +.B -V +option. +.TP +.BI \-\-athlower " n" +Lower the ATH (absolute threshold of hearing) by +.I n +dB. +.br +Normally, +humans are unable to hear any sound below this threshold, +but for music recorded at very low level this option might be useful. +.TP +.BI \-\-athaa-type " n" +ATH auto adjust types 1 - 3, +else no adjustment +.TP +.BI \-\-athaa-sensitivity " x" +activation offset in -/+ dB for ATH auto-adjustment + +.PP +PSY related: +.TP +.B \-\-short +Let LAME use short blocks when appropriate. +It is the default setting. +.TP +.B \-\-noshort +Encode all frames using long blocks only. +This could increase quality when encoding at very low bitrates, +but can produce serious pre-echo artefacts. +.TP +.B \-\-allshort +Use only short blocks, +no long ones. +.TP +.BI \-\-cwlimit " freq" +Compute tonality up to +.I freq +(in kHz). +Default setting is 8.8717. +.TP +.B \-\-notemp +Do not make use of the temporal masking effect. +.TP +.B \-\-nspsytune +Experimental PSY tunings by Naoki Shibata +.TP +.B \-\-nssafejoint +M/S switching criterion +.TP +.BI \-\-nsmsfix " arg" +M/S switching tuning [effective 0-3.5] +.TP +.BI \-\-ns-bass " x" +Adjust masking for sfbs 0 - 6 (long) 0 - 5 (short) +.TP +.BI \-\-ns-alto " x" +Adjust masking for sfbs 7 - 13 (long) 6 - 10 (short) +.TP +.BI \-\-ns-treble " x" +Adjust masking for sfbs 14 - 21 (long) 11 - 12 (short) +.TP +.BI \-\-ns-sfb21 " x" +Change ns-treble by x dB for sfb21 + +.PP +Experimental options: +.TP +.BI -X " n" +0 <= +.I n +<= 7 + +When LAME searches for a "good" quantization, +it has to compare the actual one with the best one found so far. +The comparison says which one is better, +the best so far or the actual. +The +.B -X +parameter selects between different approaches to make this decision, +.B -X0 +being the default mode: + +.B -X0 +.br +The criterions are (in order of importance): +.br +* less distorted scalefactor bands +.br +* the sum of noise over the thresholds is lower +.br +* the total noise is lower + +.B -X1 +.br +The actual is better if the maximum noise over all scalefactor bands is +less than the best so far. + +.B -X2 +.br +The actual is better if the total sum of noise is lower than the best so +far. + +.B -X3 +.br +The actual is better if the total sum of noise is lower than the best so +far and the maximum noise over all scalefactor bands is less than the +best so far plus 2dB. + +.B -X4 +.br +Not yet documented. + +.B -X5 +.br +The criterions are (in order of importance): +.br +* the sum of noise over the thresholds is lower +.br +* the total sum of noise is lower + +.B -X6 +.br +The criterions are (in order of importance): +.br +* the sum of noise over the thresholds is lower +.br +* the maximum noise over all scalefactor bands is lower +.br +* the total sum of noise is lower + +.B -X7 +.br +The criterions are: +.br +* less distorted scalefactor bands +.br +or +.br +* the sum of noise over the thresholds is lower +.TP +.B -Y +lets LAME ignore noise in sfb21, like in CBR +.TP +.B -Z +toggles the scalefac feature on + +.PP +MP3 header/stream options: +.TP +.BI -e " emp" +.I emp += n, 5, c + +n = (none, default) +.br +5 = 0/15 microseconds +.br +c = citt j.17 + +All this does is set a flag in the bitstream. +If you have a PCM input file where one of the above types of +(obsolete) emphasis has been applied, +you can set this flag in LAME. +Then the mp3 decoder should de-emphasize the output during playback, +although most decoders ignore this flag. + +A better solution would be to apply the de-emphasis with a standalone +utility before encoding, +and then encode without +.B -e. +.TP +.B -c +Mark the encoded file as being copyrighted. +.TP +.B -o +Mark the encoded file as being a copy. +.TP +.B -p +Turn on CRC error protection. +.br +It will add a cyclic redundancy check (CRC) code in each frame, +allowing to detect transmission errors that could occur on the +MP3 stream. +However, +it takes 16 bits per frame that would otherwise be used for encoding, +and then will slightly reduce the sound quality. +.TP +.B \-\-nores +Disable the bit reservoir. +Each frame will then become independent from previous ones, +but the quality will be lower. +.TP +.B \-\-strictly-enforce-ISO +With this option, +LAME will enforce the 7680 bit limitation on total frame size. +.br +This results in many wasted bits for high bitrate encodings but will +ensure strict ISO compatibility. +This compatibility might be important for hardware players. + +.PP +Filter options: +.TP +.B -k +Tells the encoder to use full bandwidth and to disable all filters. +By default, +the encoder uses some highpass filtering at low bitrates, +in order to keep a good quality by giving more bits to more important +frequencies. +.br +Increasing the bandwidth from the default setting might produce +ringing artefacts at low bitrates. +Use with care! +.TP +.BI \-\-lowpass " freq" +Set a lowpass filtering frequency in kHz. +Frequencies above the specified one will be cutoff. +.TP +.BI \-\-lowpass-width " freq" +Set the width of the lowpass filter. +The default value is 15% of the lowpass frequency. +.TP +.BI \-\-highpass " freq" +Set an highpass filtering frequency in kHz. +Frequencies below the specified one will be cutoff. +.TP +.BI \-\-highpass-width " freq" +Set the width of the highpass filter in kHz. +The default value is 15% of the highpass frequency. +.TP +.BI \-\-resample " sfreq" +.I sfreq += 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 +.br +Select output sampling frequency (only supported for encoding). +.br +If not specified, +LAME will automatically resample the input when using high compression ratios. + +.PP +ID3 tag options: +.TP +.BI \-\-tt " title" +audio/song title (max 30 chars for version 1 tag) +.TP +.BI \-\-ta " artist" +audio/song artist (max 30 chars for version 1 tag) +.TP +.BI \-\-tl " album" +audio/song album (max 30 chars for version 1 tag) +.TP +.BI \-\-ty " year" +audio/song year of issue (1 to 9999) +.TP +.BI \-\-tc " comment" +user-defined text (max 30 chars for v1 tag, 28 for v1.1) +.TP +.BI \-\-tn " track" +audio/song track number (1 to 255, creates v1.1 tag) +.TP +.BI \-\-tg " genre" +audio/song genre (name or number in list) +.TP +.B \-\-add-id3v2 +force addition of version 2 tag +.TP +.B \-\-id3v1-only +add only a version 1 tag +.TP +.B \-\-id3v2-only +add only a version 2 tag +.TP +.B \-\-space-id3v1 +pad version 1 tag with spaces instead of nulls +.TP +.B \-\-pad-id3v2 +pad version 2 tag with extra 128 bytes +.TP +.B \-\-genre-list +print alphabetically sorted ID3 genre list and exit +.TP +.B \-\-ignore-tag-errors +ignore errors in values passed for tags, use defaults in case an error occurs + +.PP +Analysis options: +.TP +.B \-g +run graphical analysis on . + can also be a .mp3 file. +(This feature is a compile time option. +Your binary may for speed reasons be compiled without this.) + +.SH ID3 TAGS +LAME is able to embed ID3 v1, +v1.1 or v2 tags inside the encoded MP3 file. +This allows to have some useful information about the music track +included inside the file. +Those data can be read by most MP3 players. + +Lame will smartly choose which tags to use. +It will add ID3 v2 tags only if the input comments won't fit in v1 +or v1.1 tags, +i.e. if they are more than 30 characters. +In this case, +both v1 and v2 tags will be added, +to ensure reading of tags by MP3 players which are unable to read ID3 v2 tags. + +.SH ENCODING MODES +LAME is able to encode your music using one of its 3 encoding modes: +constant bitrate (CBR), average bitrate (ABR) and variable bitrate (VBR). +.TP +.B Constant Bitrate (CBR) +This is the default encoding mode, +and also the most basic. +In this mode, +the bitrate will be the same for the whole file. +It means that each part of your mp3 file will be using the same +number of bits. +The musical passage being a difficult one to encode or an easy one, +the encoder will use the same bitrate, +so the quality of your mp3 is variable. +Complex parts will be of a lower quality than the easiest ones. +The main advantage is that the final files size won't change and +can be accurately predicted. +.TP +.B Average Bitrate (ABR) +In this mode, +you choose the encoder will maintain an average bitrate while using +higher bitrates for the parts of your music that need more bits. +The result will be of higher quality than CBR encoding but the +average file size will remain predictable, +so this mode is highly recommended over CBR. +This encoding mode is similar to what is referred as vbr in AAC or +Liquid Audio (2 other compression technologies). +.TP +.B Variable bitrate (VBR) +In this mode, +you choose the desired quality on a scale from 9 (lowest +quality/biggest distortion) to 0 (highest quality/lowest distortion). +Then encoder tries to maintain the given quality in the whole file by +choosing the optimal number of bits to spend for each part of your music. +The main advantage is that you are able to specify the quality level that +you want to reach, +but the inconvenient is that the final file size is totally unpredictable. + +.SH PRESETS +The +.B \-\-preset +switches are designed to provide the highest possible quality. + +They have for the most part been subject to and tuned via rigorous double blind +listening tests to verify and achieve this objective. + +These are continually updated to coincide with the latest developments that +occur and as a result should provide you with nearly the best quality +currently possible from LAME. + +To activate these presets: +.PP +For VBR modes (generally highest quality): +.TP +.B \-\-preset medium +This preset should provide near transparency to most people on most music. +.TP +.B \-\-preset standard +This preset should generally be transparent to most people on most music and +is already quite high in quality. +.TP +.B \-\-preset extreme +If you have extremely good hearing and similar equipment, +this preset will generally provide slightly higher quality than the +.B standard +mode. +.PP +For CBR 320kbps (highest quality possible from the +.B \-\-preset +switches): +.TP +.B \-\-preset insane +This preset will usually be overkill for most people and most situations, +but if you must have the absolute highest quality with no regard to filesize, +this is the way to go. +.PP +For ABR modes (high quality per given bitrate but not as high as VBR): +.TP +.B \-\-preset " kbps" +Using this preset will usually give you good quality at a specified bitrate. +Depending on the bitrate entered, +this preset will determine the optimal settings for that particular situation. +While this approach works, +it is not nearly as flexible as VBR, +and usually will not attain the same level of quality as VBR at higher bitrates. +.PP +The following options are also available for the corresponding profiles: +.PP +.B fast standard|extreme|insane +.br +.B cbr " kbps" +.PP +.TP +.B fast +Enables the new fast VBR for a particular profile. +The disadvantage to the speed switch is that often times the bitrate will be +slightly higher than with the normal mode and quality may be slightly lower also. +.TP +.B cbr +If you use the ABR mode (read above) with a significant bitrate such as 80, +96, +112, +128, +160, +192, +224, +256, +320, +you can use the +.B cbr +option to force CBR mode encoding instead of the standard ABR mode. +ABR does provide higher quality but CBR may be useful in situations such as when +streaming an MP3 over the Internet may be important. + + +.SH EXAMPLES +.LP +Fixed bit rate jstereo 128kbs encoding: +.IP +.B lame +.I sample.wav sample.mp3 + +.LP +Fixed bit rate jstereo 128 kbps encoding, highest quality (recommended): +.IP +.B lame \-h +.I sample.wav sample.mp3 + +.LP +Fixed bit rate jstereo 112 kbps encoding: +.IP +.B lame \-b +.I 112 sample.wav sample.mp3 + +.LP +To disable joint stereo encoding (slightly faster, +but less quality at bitrates <= 128 kbps): +.IP +.B lame \-m +.I s sample.wav sample.mp3 + +.LP +Fast encode, +low quality (no psycho-acoustics): +.IP +.B lame \-f +.I sample.wav sample.mp3 + +.LP +Variable bitrate (use \-V n to adjust quality/filesize): +.IP +.B lame \-h \-V +.I 6 sample.wav sample.mp3 + +.LP +Streaming mono 22.05 kHz raw pcm, 24 kbps output: +.IP +.B cat +.I inputfile +.B | lame \-r \-m +.I m +.B \-b +.I 24 +.B \-s +.I 22.05 \- \- +.B > +.I output + +.LP +Streaming mono 44.1 kHz raw pcm, +with downsampling to 22.05 kHz: +.IP +.B cat +.I inputfile +.B | lame \-r \-m +.I m +.B \-b +.I 24 +.B \-\-resample +.I 22.05 \- \- +.B > +.I output + +.LP +Encode with the +.B fast standard +preset: +.IP +.B lame \-\-preset fast standard +.I sample.wav sample.mp3 + +.SH BUGS +.PP +Probably there are some. +.SH SEE ALSO +.BR mpg123 (1) , +.BR madplay (1) , +.BR sox (1) +.SH AUTHORS +.nf +LAME originally developed by Mike Cheng and now maintained by +Mark Taylor. GPSYCHO psycho-acoustic model by Mark Taylor. +(http://www.mp3dev.org/). +mpglib by Michael Hipp +Manual page by William Schelter, Nils Faerber, Alexander Leidinger. +Small fixes on the manual page by Rogerio Brito. +.f diff --git a/lame-3.97/doc/man/Makefile.am b/lame-3.97/doc/man/Makefile.am new file mode 100644 index 0000000..ecab077 --- /dev/null +++ b/lame-3.97/doc/man/Makefile.am @@ -0,0 +1,7 @@ +## $Id: Makefile.am,v 1.1 2000/10/22 11:39:44 aleidinger Exp $ + +AUTOMAKE_OPTIONS = foreign ansi2knr + +man_MANS = lame.1 +EXTRA_DIST = ${man_MANS} + diff --git a/lame-3.97/doc/man/Makefile.in b/lame-3.97/doc/man/Makefile.in new file mode 100644 index 0000000..7cac23b --- /dev/null +++ b/lame-3.97/doc/man/Makefile.in @@ -0,0 +1,398 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc/man +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = foreign ansi2knr +man_MANS = lame.1 +EXTRA_DIST = ${man_MANS} +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/man/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/man/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ + rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-man1 \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-info-am uninstall-man \ + uninstall-man1 + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/doc/man/lame.1 b/lame-3.97/doc/man/lame.1 new file mode 100644 index 0000000..e0f2733 --- /dev/null +++ b/lame-3.97/doc/man/lame.1 @@ -0,0 +1,1233 @@ +.TH lame 1 "August 03, 2005" "" "LAME audio compressor" +.SH NAME +lame \- create mp3 audio files +.SH SYNOPSIS +lame [options] +.SH DESCRIPTION +.PP +LAME is a program which can be used to create compressed audio files. +(Lame ain't an MP3 encoder). +These audio files can be played back by popular MP3 players such as +mpg123 or madplay. +To read from stdin, use "\-" for . +To write to stdout, use a "\-" for . +.SH OPTIONS +Input options: +.TP +.B \-r +Assume the input file is raw pcm. +Sampling rate and mono/stereo/jstereo must be specified on the command line. +Without +.B \-r, +LAME will perform several +.I fseek()'s +on the input file looking for WAV and AIFF headers. +.br +Might not be available on your release. +.TP +.B \-x +Swap bytes in the input file or output file when using +.B \-\-decode. +.br +For sorting out little endian/big endian type problems. +If your encodings sounds like static, +try this first. +.br +Without using +.B \-x, +LAME will treat input file as native endian. +.TP +.BI \-s " sfreq" +.I sfreq += 8/11.025/12/16/22.05/24/32/44.1/48 + +Required only for raw PCM input files. +Otherwise it will be determined from the header of the input file. + +LAME will automatically resample the input file to one of the supported +MP3 samplerates if necessary. +.TP +.BI \-\-bitwidth " n" +Input bit width per sample. +.br +.I n += 8, 16, 24, 32 (default 16) + +Required only for raw PCM input files. +Otherwise it will be determined from the header of the input file. +.TP +.BI \-\-signed +Instructs LAME that the samples from the input are signed (the default). + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.BI \-\-unsigned +Instructs LAME that the samples from the input are unsigned. + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.BI \-\-little-endian +Instructs LAME that the samples from the input are in little-endian form. + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.BI \-\-big-endian +Instructs LAME that the samples from the input are in big-endian form. + +Required only for raw PCM input files +and only available if LAME was compiled with libsndfile. +.TP +.B \-\-mp2input +Assume the input file is a MPEG Layer II (ie MP2) file. +.br +If the filename ends in ".mp2" LAME will assume it is a MPEG Layer II file. +For stdin or Layer II files which do not end in .mp2 you need to use +this switch. +.TP +.B \-\-mp3input +Assume the input file is a MP3 file. +.br +Useful for downsampling from one mp3 to another. +As an example, +it can be useful for streaming through an IceCast server. +.br +If the filename ends in ".mp3" LAME will assume it is an MP3. +For stdin or MP3 files which do not end in .mp3 you need to use this switch. +.TP +.BI \-\-nogap " file1 file2 ..." +gapless encoding for a set of contiguous files +.TP +.BI \-\-nogapout " dir" +output dir for gapless encoding (must precede \-\-nogap) + +.PP +Operational options: +.TP +.BI \-m " mode" +.I mode += s, j, f, d, m + +Joint-stereo is the default mode for stereo files with VBR when +.B \-V +is more than 4 or fixed bitrates of 160kbs or less. +At higher fixed bitrates or higher VBR settings, +the default is stereo. + +.B (s)tereo +.br +In this mode, +the encoder makes no use of potentially existing correlations between +the two input channels. +It can, +however, +negotiate the bit demand between both channel, +i.e. give one channel more bits if the other contains silence or needs +less bits because of a lower complexity. + +.B (j)oint stereo +.br +In this mode, +the encoder will make use of a correlation between both channels. +The signal will be matrixed into a sum ("mid"), +computed by L+R, +and difference ("side") signal, +computed by L\-R, +and more bits are allocated to the mid channel. +This will effectively increase the bandwidth if the signal does not +have too much stereo separation, +thus giving a significant gain in encoding quality. + +Using mid/side stereo inappropriately can result in audible +compression artifacts. +To much switching between mid/side and regular stereo can also +sound bad. +To determine when to switch to mid/side stereo, +LAME uses a much more sophisticated algorithm than that described +in the ISO documentation, and thus is safe to use in joint +stereo mode. + +.B (f)orced joint stereo +.br +This mode will force MS joint stereo on all frames. +It is slightly faster than joint stereo, +but it should be used only if you are sure that every frame of the +input file has very little stereo separation. + +.B (d)ual channels +.br +In this mode, +the 2 channels will be totally independently encoded. +Each channel will have exactly half of the bitrate. +This mode is designed for applications like dual languages +encoding (for example: English in one channel and French in the other). +Using this encoding mode for regular stereo files will result in a +lower quality encoding. + +.B (m)ono +.br +The input will be encoded as a mono signal. +If it was a stereo signal, +it will be downsampled to mono. +The downmix is calculated as the sum of the left and right channel, +attenuated by 6 dB. +.TP +.B \-a +Mix the stereo input file to mono and encode as mono. +.br +The downmix is calculated as the sum of the left and right channel, +attenuated by 6 dB. + +This option is only needed in the case of raw PCM stereo input +(because LAME cannot determine the number of channels in the input file). +To encode a stereo PCM input file as mono, +use +.B lame \-m +.I s +.B \-a. + +For WAV and AIFF input files, +using +.B \-m +will always produce a mono .mp3 file from both mono and stereo input. +.TP +.B \-d +Allows the left and right channels to use different block size types. +.TP +.B \-\-freeformat +Produces a free format bitstream. +With this option, +you can use +.B \-b +with any bitrate higher than 8 kbps. + +However, +even if an mp3 decoder is required to support free bitrates at +least up to 320 kbps, +many players are unable to deal with it. + +Tests have shown that the following decoders support free format: +.br +.B FreeAmp +up to 440 kbps +.br +.B in_mpg123 +up to 560 kbps +.br +.B l3dec +up to 310 kbps +.br +.B LAME +up to 560 kbps +.br +.B MAD +up to 640 kbps +.TP +.B \-\-decode +Uses LAME for decoding to a wav file. +The input file can be any input type supported by encoding, +including layer II files. +LAME uses a bugfixed version of mpglib for decoding. + +If +.B \-t +is used (disable wav header), +LAME will output raw pcm in native endian format. +You can use +.B \-x +to swap bytes order. + +This option is not usable if the MP3 decoder was +.B explicitly +disabled in the build of LAME. +.TP +.BI \-t +Disable writing of the INFO Tag on encoding. +.br +This tag in embedded in frame 0 of the MP3 file. +It includes some information about the encoding options of the file, +and in VBR it lets VBR aware players correctly seek and compute +playing times of VBR files. + +When +.B \-\-decode +is specified (decode to WAV), +this flag will disable writing of the WAV header. +The output will be raw pcm, +native endian format. +Use +.B \-x +to swap bytes. +.TP +.BI \-\-comp " arg" +Instead of choosing bitrate, +using this option, +user can choose compression ratio to achieve. +.TP +.BI \-\-scale " n" +.PD 0 +.TP +.BI \-\-scale\-l " n" +.TP +.BI \-\-scale\-r " n" +Scales input (every channel, only left channel or only right channel) by +.I n. +This just multiplies the PCM data (after it has been converted to floating +point) by +.I n. + +.I n +> 1: increase volume +.br +.I n += 1: no effect +.br +.I n +< 1: reduce volume + +Use with care, +since most MP3 decoders will truncate data which decodes to values +greater than 32768. +.PD +.TP +.B \-\-replaygain\-fast +Compute ReplayGain fast but slightly inaccurately. + +This computes "Radio" ReplayGain on the input data stream after +user\(hyspecified volume\(hyscaling and/or resampling. + +The ReplayGain analysis does +.I not +affect the content of a compressed data stream itself, +it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from +.B http://www.replaygain.org/. + +Only the "RadioGain" Replaygain value is computed, +it is stored in the LAME tag. +The analysis is performed with the reference +volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition from +version 3.95 to 3.95.1. + +This switch is enabled by default. + +See also: +.B \-\-replaygain\-accurate, \-\-noreplaygain +.TP +.B \-\-replaygain\-accurate +Compute ReplayGain more accurately and find the peak sample. + +This enables decoding on the fly, computes "Radio" ReplayGain on the +decoded data stream, +finds the peak sample of the decoded data stream and stores it in the file. + +The ReplayGain analysis does +.I not +affect the content of a compressed data stream itself, +it is a value stored in the header of a sound file. +Information on the purpose of ReplayGain and the algorithms used is +available from +.B http://www.replaygain.org/. + + +By default, LAME performs ReplayGain analysis on the input data +(after the user\(hyspecified volume scaling). +This behavior might give slightly inaccurate results +because the data on the output of a lossy compression/decompression sequence +differs from the initial input data. +When +.B \-\-replaygain-accurate +is specified the mp3 stream gets decoded on the fly and the analysis is +performed on the decoded data stream. +Although theoretically this method gives more accurate results, +it has several disadvantages: +.RS 8 +.IP "*" 4 +tests have shown that the difference between the ReplayGain values computed +on the input data and decoded data is usually not greater than 0.5dB, +although the minimum volume difference the human ear can perceive is +about 1.0dB +.IP "*" 4 +decoding on the fly significantly slows down the encoding process +.RE +.RS 7 + +The apparent advantage is that: +.RE +.RS 8 +.IP "*" 4 +with +.B \-\-replaygain-accurate +the real peak sample is determined and stored in the file. +The knowledge of the peak sample can be useful to decoders (players) +to prevent a negative effect called 'clipping' that introduces distortion +into the sound. +.RE +.RS 7 + +Only the "RadioGain" ReplayGain value is computed, +it is stored in the LAME tag. +The analysis is performed with the reference +volume equal to 89dB. +Note: the reference volume has been changed from 83dB on transition from +version 3.95 to 3.95.1. + +This option is not usable if the MP3 decoder was +.B explicitly +disabled in the build of LAME. +(Note: if LAME is compiled without the MP3 decoder, +ReplayGain analysis is performed on the input data after user-specified +volume scaling). + +See also: +.B \-\-replaygain-fast, \-\-noreplaygain \-\-clipdetect +.RE +.TP +.B \-\-noreplaygain +Disable ReplayGain analysis. + +By default ReplayGain analysis is enabled. This switch disables it. + +See also: +.B \-\-replaygain-fast, \-\-replaygain-accurate +.TP +.B \-\-clipdetect +Clipping detection. + +Enable +.B \-\-replaygain-accurate +and print a message whether clipping occurs and how far in dB the waveform +is from full scale. + +This option is not usable if the MP3 decoder was +.B explicitly +disabled in the build of LAME. + +See also: +.B \-\-replaygain-accurate +.TP +.B \-\-preset " [fast] type | [cbr] kbps" +Use one of the built-in presets. + +Have a look at the PRESETS section below. + +.B Warning: +with the current version fast presets might result in too high bitrate +compared to regular presets. + +.B \-\-preset help +gives more infos about the the used options in these presets. +.TP +.B \-\-alt-preset " [fast] type | [cbr] kbps" +Use one of the built-in presets. + +This option is deprecated and offers the same as the +.B \-\-preset +option above. Do not use it anymore, it will go away in a later version. +.TP +.B \-\-r3mix +Uses r3mix VBR preset. +.br +See http://www.r3mix.net/ for more details. +.TP +.B \-\-noasm " type" +Disable specific assembly optimizations ( +.B mmx +/ +.B 3dnow +/ +.B sse +). +Quality will not increase, only speed will be reduced. +If you have problems running Lame on a Cyrix/Via processor, +disabling mmx optimizations might solve your problem. + +.PP +Verbosity: +.TP +.BI \-\-disptime " n" +Set the delay in seconds between two display updates. +.TP +.B \-\-nohist +By default, +LAME will display a bitrate histogram while producing VBR mp3 files. +This will disable that feature. +.br +Histogram display might not be available on your release. +.TP +.B -S +.PD 0 +.TP +.B \-\-silent +.TP +.B \-\-quiet +Do not print anything on the screen. +.PD +.TP +.B \-\-verbose +Print a lot of information on the screen. +.TP +.B \-\-help +Display a list of available options. + +.PP +Noise shaping & psycho acoustic algorithms: +.TP +.BI -q " qual" +0 <= +.I qual +<= 9 + +Bitrate is of course the main influence on quality. +The higher the bitrate, +the higher the quality. +But for a given bitrate, +we have a choice of algorithms to determine the best scalefactors +and Huffman encoding (noise shaping). + +.B -q 0: +.br +use slowest & best possible version of all algorithms. +.B -q 0 +and +.B -q 1 +are slow and may not produce significantly higher quality. + +.B -q 2: +.br +recommended. +Same as +.B -h. + +.B -q 5: +.br +default value. +Good speed, +reasonable quality. + +.B -q 7: +.br +same as +.B -f. +Very fast, +ok quality. +Psycho acoustics are used for pre-echo & M/S, +but no noise shaping is done. + +.B -q 9: +.br +disables almost all algorithms including psy-model. +Poor quality. +.TP +.B -h +Use some quality improvements. +Encoding will be slower, +but the result will be of higher quality. +The behavior is the same as the +.B -q 2 +switch. +.br +This switch is always enabled when using VBR. +.TP +.B -f +This switch forces the encoder to use a faster encoding mode, +but with a lower quality. +The behavior is the same as the +.B -q 7 +switch. + +Noise shaping will be disabled, +but psycho acoustics will still be computed for bit allocation +and pre-echo detection. + +.PP +CBR (constant bitrate, the default) options: +.TP +.BI -b " n" +For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz) +.br +.I n += 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz) +.br +.I n += 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + +Default is 128 for MPEG1 and 64 for MPEG2. +.TP +.BI \-\-cbr +enforce use of constant bitrate + +.PP +ABR (average bitrate) options: +.TP +.BI \-\-abr " n" +Turns on encoding with a targeted average bitrate of n kbits, +allowing to use frames of different sizes. +The allowed range of +.I n +is 8 - 310, +you can use any integer value within that range. + +It can be combined with the +.B -b +and +.B -B +switches like: +.B lame \-\-abr +.I 123 +.B -b +.I 64 +.B -B +.I 192 a.wav a.mp3 +which would limit the allowed frame sizes between 64 and 192 kbits. + +The use of +.B -B +is NOT RECOMMENDED. +A 128 kbps CBR bitstream, +because of the bit reservoir, +can actually have frames which use as many bits as a 320 kbps frame. +VBR modes minimize the use of the bit reservoir, +and thus need to allow 320 kbps frames to get the same flexibility +as CBR streams. + +.PP +VBR (variable bitrate) options: +.TP +.B -v +use variable bitrate +.B (\-\-vbr-old) +.TP +.B \-\-vbr-old +Invokes the oldest, +most tested VBR algorithm. +It produces very good quality files, +though is not very fast. +This has, +up through v3.89, +been considered the "workhorse" VBR algorithm. +.TP +.B \-\-vbr-new +Invokes the newest VBR algorithm. +During the development of version 3.90, +considerable tuning was done on this algorithm, +and it is now considered to be on par with the original +.B \-\-vbr-old. +It has the added advantage of being very fast (over twice as fast as +.B \-\-vbr-old). +.TP +.BI -V " n" +0 <= +.I n +<= 9 +.br +Enable VBR (Variable BitRate) and specifies the value of VBR quality +(default = 4). +0 = highest quality. + +.PP +ABR and VBR options: +.TP +.BI -b " bitrate" +For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz) +.br +.I n += 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz) +.br +.I n += 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + +Specifies the minimum bitrate to be used. +However, +in order to avoid wasted space, +the smallest frame size available will be used during silences. +.TP +.BI -B " bitrate" +For MPEG1 (sampling frequencies of 32, 44.1 and 48 kHz) +.br +.I n += 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320 + +For MPEG2 (sampling frequencies of 16, 22.05 and 24 kHz) +.br +.I n += 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 + +Specifies the maximum allowed bitrate. + +Note: If you own an mp3 hardware player build upon a MAS 3503 chip, +you must set maximum bitrate to no more than 224 kpbs. +.TP +.B -F +Strictly enforce the +.B -b +option. +.br +This is mainly for use with hardware players that do not support low +bitrate mp3. + +Without this option, +the minimum bitrate will be ignored for passages of analog silence, +i.e. when the music level is below the absolute threshold of +human hearing (ATH). + +.PP +ATH related: +.TP +.B \-\-noath +Disable any use of the ATH (absolute threshold of hearing) for masking. +Normally, +humans are unable to hear any sound below this threshold. +.TP +.B \-\-athshort +Ignore psychoacoustic model for short blocks, +use ATH only. +.TP +.B \-\-athonly +This option causes LAME to ignore the output of the psy-model and only +use masking from the ATH (absolute threshold of hearing). +Might be useful at very high bitrates or for testing the ATH. +.TP +.BI \-\-athtype " shape" +The Absolute Threshold of Hearing is the minimum threshold under which +humans are unable to hear any sound. +.br +In the past, +LAME was using ATH shape 0 which is the Painter & Spanias formula. +Tests have shown that this formula is innacurate for the +13 - 22 kHz area, +leading to audible artifacts in some cases. +.br +Shape 1 was thus implemented, +which is over sensitive, +leading to very high bitrates. +.br +Shape 2 formula was accurately modelized from real data in order to +reach optimal quality while not wasting bitrate. +In CBR and ABR modes, +LAME uses ATH shape 2 by default, +VBR selects one depending on the specified parameter to the +.B -V +option. +.TP +.BI \-\-athlower " n" +Lower the ATH (absolute threshold of hearing) by +.I n +dB. +.br +Normally, +humans are unable to hear any sound below this threshold, +but for music recorded at very low level this option might be useful. +.TP +.BI \-\-athaa-type " n" +ATH auto adjust types 1 - 3, +else no adjustment +.TP +.BI \-\-athaa-sensitivity " x" +activation offset in -/+ dB for ATH auto-adjustment + +.PP +PSY related: +.TP +.B \-\-short +Let LAME use short blocks when appropriate. +It is the default setting. +.TP +.B \-\-noshort +Encode all frames using long blocks only. +This could increase quality when encoding at very low bitrates, +but can produce serious pre-echo artefacts. +.TP +.B \-\-allshort +Use only short blocks, +no long ones. +.TP +.BI \-\-cwlimit " freq" +Compute tonality up to +.I freq +(in kHz). +Default setting is 8.8717. +.TP +.B \-\-notemp +Do not make use of the temporal masking effect. +.TP +.B \-\-nspsytune +Experimental PSY tunings by Naoki Shibata +.TP +.B \-\-nssafejoint +M/S switching criterion +.TP +.BI \-\-nsmsfix " arg" +M/S switching tuning [effective 0-3.5] +.TP +.BI \-\-ns-bass " x" +Adjust masking for sfbs 0 - 6 (long) 0 - 5 (short) +.TP +.BI \-\-ns-alto " x" +Adjust masking for sfbs 7 - 13 (long) 6 - 10 (short) +.TP +.BI \-\-ns-treble " x" +Adjust masking for sfbs 14 - 21 (long) 11 - 12 (short) +.TP +.BI \-\-ns-sfb21 " x" +Change ns-treble by x dB for sfb21 + +.PP +Experimental options: +.TP +.BI -X " n" +0 <= +.I n +<= 7 + +When LAME searches for a "good" quantization, +it has to compare the actual one with the best one found so far. +The comparison says which one is better, +the best so far or the actual. +The +.B -X +parameter selects between different approaches to make this decision, +.B -X0 +being the default mode: + +.B -X0 +.br +The criterions are (in order of importance): +.br +* less distorted scalefactor bands +.br +* the sum of noise over the thresholds is lower +.br +* the total noise is lower + +.B -X1 +.br +The actual is better if the maximum noise over all scalefactor bands is +less than the best so far. + +.B -X2 +.br +The actual is better if the total sum of noise is lower than the best so +far. + +.B -X3 +.br +The actual is better if the total sum of noise is lower than the best so +far and the maximum noise over all scalefactor bands is less than the +best so far plus 2dB. + +.B -X4 +.br +Not yet documented. + +.B -X5 +.br +The criterions are (in order of importance): +.br +* the sum of noise over the thresholds is lower +.br +* the total sum of noise is lower + +.B -X6 +.br +The criterions are (in order of importance): +.br +* the sum of noise over the thresholds is lower +.br +* the maximum noise over all scalefactor bands is lower +.br +* the total sum of noise is lower + +.B -X7 +.br +The criterions are: +.br +* less distorted scalefactor bands +.br +or +.br +* the sum of noise over the thresholds is lower +.TP +.B -Y +lets LAME ignore noise in sfb21, like in CBR +.TP +.B -Z +toggles the scalefac feature on + +.PP +MP3 header/stream options: +.TP +.BI -e " emp" +.I emp += n, 5, c + +n = (none, default) +.br +5 = 0/15 microseconds +.br +c = citt j.17 + +All this does is set a flag in the bitstream. +If you have a PCM input file where one of the above types of +(obsolete) emphasis has been applied, +you can set this flag in LAME. +Then the mp3 decoder should de-emphasize the output during playback, +although most decoders ignore this flag. + +A better solution would be to apply the de-emphasis with a standalone +utility before encoding, +and then encode without +.B -e. +.TP +.B -c +Mark the encoded file as being copyrighted. +.TP +.B -o +Mark the encoded file as being a copy. +.TP +.B -p +Turn on CRC error protection. +.br +It will add a cyclic redundancy check (CRC) code in each frame, +allowing to detect transmission errors that could occur on the +MP3 stream. +However, +it takes 16 bits per frame that would otherwise be used for encoding, +and then will slightly reduce the sound quality. +.TP +.B \-\-nores +Disable the bit reservoir. +Each frame will then become independent from previous ones, +but the quality will be lower. +.TP +.B \-\-strictly-enforce-ISO +With this option, +LAME will enforce the 7680 bit limitation on total frame size. +.br +This results in many wasted bits for high bitrate encodings but will +ensure strict ISO compatibility. +This compatibility might be important for hardware players. + +.PP +Filter options: +.TP +.B -k +Tells the encoder to use full bandwidth and to disable all filters. +By default, +the encoder uses some highpass filtering at low bitrates, +in order to keep a good quality by giving more bits to more important +frequencies. +.br +Increasing the bandwidth from the default setting might produce +ringing artefacts at low bitrates. +Use with care! +.TP +.BI \-\-lowpass " freq" +Set a lowpass filtering frequency in kHz. +Frequencies above the specified one will be cutoff. +.TP +.BI \-\-lowpass-width " freq" +Set the width of the lowpass filter. +The default value is 15% of the lowpass frequency. +.TP +.BI \-\-highpass " freq" +Set an highpass filtering frequency in kHz. +Frequencies below the specified one will be cutoff. +.TP +.BI \-\-highpass-width " freq" +Set the width of the highpass filter in kHz. +The default value is 15% of the highpass frequency. +.TP +.BI \-\-resample " sfreq" +.I sfreq += 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 +.br +Select output sampling frequency (only supported for encoding). +.br +If not specified, +LAME will automatically resample the input when using high compression ratios. + +.PP +ID3 tag options: +.TP +.BI \-\-tt " title" +audio/song title (max 30 chars for version 1 tag) +.TP +.BI \-\-ta " artist" +audio/song artist (max 30 chars for version 1 tag) +.TP +.BI \-\-tl " album" +audio/song album (max 30 chars for version 1 tag) +.TP +.BI \-\-ty " year" +audio/song year of issue (1 to 9999) +.TP +.BI \-\-tc " comment" +user-defined text (max 30 chars for v1 tag, 28 for v1.1) +.TP +.BI \-\-tn " track" +audio/song track number (1 to 255, creates v1.1 tag) +.TP +.BI \-\-tg " genre" +audio/song genre (name or number in list) +.TP +.B \-\-add-id3v2 +force addition of version 2 tag +.TP +.B \-\-id3v1-only +add only a version 1 tag +.TP +.B \-\-id3v2-only +add only a version 2 tag +.TP +.B \-\-space-id3v1 +pad version 1 tag with spaces instead of nulls +.TP +.B \-\-pad-id3v2 +pad version 2 tag with extra 128 bytes +.TP +.B \-\-genre-list +print alphabetically sorted ID3 genre list and exit +.TP +.B \-\-ignore-tag-errors +ignore errors in values passed for tags, use defaults in case an error occurs + +.PP +Analysis options: +.TP +.B \-g +run graphical analysis on . + can also be a .mp3 file. +(This feature is a compile time option. +Your binary may for speed reasons be compiled without this.) + +.SH ID3 TAGS +LAME is able to embed ID3 v1, +v1.1 or v2 tags inside the encoded MP3 file. +This allows to have some useful information about the music track +included inside the file. +Those data can be read by most MP3 players. + +Lame will smartly choose which tags to use. +It will add ID3 v2 tags only if the input comments won't fit in v1 +or v1.1 tags, +i.e. if they are more than 30 characters. +In this case, +both v1 and v2 tags will be added, +to ensure reading of tags by MP3 players which are unable to read ID3 v2 tags. + +.SH ENCODING MODES +LAME is able to encode your music using one of its 3 encoding modes: +constant bitrate (CBR), average bitrate (ABR) and variable bitrate (VBR). +.TP +.B Constant Bitrate (CBR) +This is the default encoding mode, +and also the most basic. +In this mode, +the bitrate will be the same for the whole file. +It means that each part of your mp3 file will be using the same +number of bits. +The musical passage being a difficult one to encode or an easy one, +the encoder will use the same bitrate, +so the quality of your mp3 is variable. +Complex parts will be of a lower quality than the easiest ones. +The main advantage is that the final files size won't change and +can be accurately predicted. +.TP +.B Average Bitrate (ABR) +In this mode, +you choose the encoder will maintain an average bitrate while using +higher bitrates for the parts of your music that need more bits. +The result will be of higher quality than CBR encoding but the +average file size will remain predictable, +so this mode is highly recommended over CBR. +This encoding mode is similar to what is referred as vbr in AAC or +Liquid Audio (2 other compression technologies). +.TP +.B Variable bitrate (VBR) +In this mode, +you choose the desired quality on a scale from 9 (lowest +quality/biggest distortion) to 0 (highest quality/lowest distortion). +Then encoder tries to maintain the given quality in the whole file by +choosing the optimal number of bits to spend for each part of your music. +The main advantage is that you are able to specify the quality level that +you want to reach, +but the inconvenient is that the final file size is totally unpredictable. + +.SH PRESETS +The +.B \-\-preset +switches are designed to provide the highest possible quality. + +They have for the most part been subject to and tuned via rigorous double blind +listening tests to verify and achieve this objective. + +These are continually updated to coincide with the latest developments that +occur and as a result should provide you with nearly the best quality +currently possible from LAME. + +To activate these presets: +.PP +For VBR modes (generally highest quality): +.TP +.B \-\-preset medium +This preset should provide near transparency to most people on most music. +.TP +.B \-\-preset standard +This preset should generally be transparent to most people on most music and +is already quite high in quality. +.TP +.B \-\-preset extreme +If you have extremely good hearing and similar equipment, +this preset will generally provide slightly higher quality than the +.B standard +mode. +.PP +For CBR 320kbps (highest quality possible from the +.B \-\-preset +switches): +.TP +.B \-\-preset insane +This preset will usually be overkill for most people and most situations, +but if you must have the absolute highest quality with no regard to filesize, +this is the way to go. +.PP +For ABR modes (high quality per given bitrate but not as high as VBR): +.TP +.B \-\-preset " kbps" +Using this preset will usually give you good quality at a specified bitrate. +Depending on the bitrate entered, +this preset will determine the optimal settings for that particular situation. +While this approach works, +it is not nearly as flexible as VBR, +and usually will not attain the same level of quality as VBR at higher bitrates. +.PP +The following options are also available for the corresponding profiles: +.PP +.B fast standard|extreme|insane +.br +.B cbr " kbps" +.PP +.TP +.B fast +Enables the new fast VBR for a particular profile. +The disadvantage to the speed switch is that often times the bitrate will be +slightly higher than with the normal mode and quality may be slightly lower also. +.TP +.B cbr +If you use the ABR mode (read above) with a significant bitrate such as 80, +96, +112, +128, +160, +192, +224, +256, +320, +you can use the +.B cbr +option to force CBR mode encoding instead of the standard ABR mode. +ABR does provide higher quality but CBR may be useful in situations such as when +streaming an MP3 over the Internet may be important. + + +.SH EXAMPLES +.LP +Fixed bit rate jstereo 128kbs encoding: +.IP +.B lame +.I sample.wav sample.mp3 + +.LP +Fixed bit rate jstereo 128 kbps encoding, highest quality (recommended): +.IP +.B lame \-h +.I sample.wav sample.mp3 + +.LP +Fixed bit rate jstereo 112 kbps encoding: +.IP +.B lame \-b +.I 112 sample.wav sample.mp3 + +.LP +To disable joint stereo encoding (slightly faster, +but less quality at bitrates <= 128 kbps): +.IP +.B lame \-m +.I s sample.wav sample.mp3 + +.LP +Fast encode, +low quality (no psycho-acoustics): +.IP +.B lame \-f +.I sample.wav sample.mp3 + +.LP +Variable bitrate (use \-V n to adjust quality/filesize): +.IP +.B lame \-h \-V +.I 6 sample.wav sample.mp3 + +.LP +Streaming mono 22.05 kHz raw pcm, 24 kbps output: +.IP +.B cat +.I inputfile +.B | lame \-r \-m +.I m +.B \-b +.I 24 +.B \-s +.I 22.05 \- \- +.B > +.I output + +.LP +Streaming mono 44.1 kHz raw pcm, +with downsampling to 22.05 kHz: +.IP +.B cat +.I inputfile +.B | lame \-r \-m +.I m +.B \-b +.I 24 +.B \-\-resample +.I 22.05 \- \- +.B > +.I output + +.LP +Encode with the +.B fast standard +preset: +.IP +.B lame \-\-preset fast standard +.I sample.wav sample.mp3 + +.SH BUGS +.PP +Probably there are some. +.SH SEE ALSO +.BR mpg123 (1) , +.BR madplay (1) , +.BR sox (1) +.SH AUTHORS +.nf +LAME originally developed by Mike Cheng and now maintained by +Mark Taylor. GPSYCHO psycho-acoustic model by Mark Taylor. +(http://www.mp3dev.org/). +mpglib by Michael Hipp +Manual page by William Schelter, Nils Faerber, Alexander Leidinger. +Small fixes on the manual page by Rogerio Brito. +.f diff --git a/lame-3.97/dshow/.svn/all-wcprops b/lame-3.97/dshow/.svn/all-wcprops new file mode 100644 index 0000000..3ba82d4 --- /dev/null +++ b/lame-3.97/dshow/.svn/all-wcprops @@ -0,0 +1,143 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/!svn/ver/328/monitor/trunk/lame-3.97/dshow +END +dshow.dsw +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/dshow.dsw +END +Mpegac.h +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/Mpegac.h +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/328/monitor/trunk/lame-3.97/dshow/Makefile.in +END +aboutprp.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/aboutprp.h +END +iaudioprops.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/iaudioprops.h +END +Property.rc +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/Property.rc +END +PropPage_adv.cpp +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/PropPage_adv.cpp +END +Mpegac.def +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/Mpegac.def +END +UIDS.H +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/UIDS.H +END +README +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/README +END +PropPage_adv.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/PropPage_adv.h +END +REG.CPP +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/REG.CPP +END +PropPage.cpp +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/PropPage.cpp +END +Encoder.cpp +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/Encoder.cpp +END +REG.H +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/REG.H +END +PropPage.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/PropPage.h +END +Encoder.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/Encoder.h +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/Makefile.am +END +dshow.dsp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/dshow.dsp +END +Mpegac.cpp +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/Mpegac.cpp +END +aboutprp.cpp +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/aboutprp.cpp +END +resource.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/dshow/resource.h +END +elogo.ico +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/dshow/elogo.ico +END diff --git a/lame-3.97/dshow/.svn/entries b/lame-3.97/dshow/.svn/entries new file mode 100644 index 0000000..633ad13 --- /dev/null +++ b/lame-3.97/dshow/.svn/entries @@ -0,0 +1,810 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/dshow +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +dshow.dsw +file + + + + +2012-01-23T14:07:04.657487Z +ee734ec7e6fff782de4805a209318d3c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1067 + +Mpegac.h +file + + + + +2012-01-23T14:07:04.659498Z +1b37f629427caa7786567b035cf55a8c +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +7720 + +Makefile.in +file + + + + +2012-01-23T14:07:04.658491Z +a4af5e20c13032180cd7809d3fc1c631 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +9929 + +aboutprp.h +file + + + + +2012-01-23T14:07:04.658491Z +89414e16f05f80e8f6a4068e75905345 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1379 + +iaudioprops.h +file + + + + +2012-01-23T14:07:04.659498Z +dedc460dc95f659dc066108c81a451c1 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +8836 + +Property.rc +file + + + + +2012-01-23T14:07:04.660485Z +520fbb0b6db4f0a17fbfcd746c61d3a1 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9327 + +PropPage_adv.cpp +file + + + + +2012-01-23T14:07:04.660485Z +5f756de930aa503259751ebbf5bde492 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +10634 + +Mpegac.def +file + + + + +2012-01-23T14:07:04.660485Z +8242bc3fa5c415e012f2c145b116f2c5 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1016 + +UIDS.H +file + + + + +2012-01-23T14:07:04.660485Z +06704f205dea679a8a11a31eb65a17b2 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1661 + +README +file + + + + +2012-01-23T14:07:04.661486Z +1bc31a1a7136bd6f0d4f839443533f32 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +594 + +PropPage_adv.h +file + + + + +2012-01-23T14:07:04.661486Z +c81443fb50b3d2752243155d716f52f8 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1783 + +REG.CPP +file + + + + +2012-01-23T14:07:04.661486Z +e28e683704358e40fedee27b175e9bf6 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +5932 + +PropPage.cpp +file + + + + +2012-01-23T14:07:04.661486Z +c7d31644924fab3e854e2bf2ec472355 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +20090 + +Encoder.cpp +file + + + + +2012-01-23T14:07:04.662486Z +f68862984201f40fb027c0586d31c0e8 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +12155 + +PropPage.h +file + + + + +2012-01-23T14:07:04.662486Z +ec0b3435cab63eef2f47821c85061e54 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2246 + +REG.H +file + + + + +2012-01-23T14:07:04.662486Z +9b85dc7bb429cdaa0dd3a578ec24a98b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +2334 + +Encoder.h +file + + + + +2012-01-23T14:07:04.663487Z +481e572ac452a99994e50161176a20b8 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +5226 + +Makefile.am +file + + + + +2012-01-23T14:07:04.667483Z +14cd1e9b285e269808177ff702013fa4 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +411 + +dshow.dsp +file + + + + +2012-01-23T14:07:04.667483Z +50aac78112a438014d51ff7361fd2a3d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +5573 + +Mpegac.cpp +file + + + + +2012-01-23T14:07:04.667483Z +7c42354425e14d016620f75bf52066de +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +40331 + +aboutprp.cpp +file + + + + +2012-01-23T14:07:04.668487Z +030796cf56ebb6c842ad3e553dc693ca +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4789 + +resource.h +file + + + + +2012-01-23T14:07:04.668487Z +92aab4d5f89686c7e846f203fddad614 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2269 + +elogo.ico +file + + + + +2012-01-23T14:07:04.668487Z +3d3417dd0a70d9d6c3a02c819b728bd1 +2007-12-20T22:24:54.554753Z +238 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +766 + diff --git a/lame-3.97/dshow/.svn/prop-base/Encoder.h.svn-base b/lame-3.97/dshow/.svn/prop-base/Encoder.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/Encoder.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/dshow/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/prop-base/Mpegac.h.svn-base b/lame-3.97/dshow/.svn/prop-base/Mpegac.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/Mpegac.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/prop-base/PropPage.h.svn-base b/lame-3.97/dshow/.svn/prop-base/PropPage.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/PropPage.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/prop-base/PropPage_adv.h.svn-base b/lame-3.97/dshow/.svn/prop-base/PropPage_adv.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/PropPage_adv.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/prop-base/README.svn-base b/lame-3.97/dshow/.svn/prop-base/README.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/README.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/dshow/.svn/prop-base/aboutprp.h.svn-base b/lame-3.97/dshow/.svn/prop-base/aboutprp.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/aboutprp.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/prop-base/elogo.ico.svn-base b/lame-3.97/dshow/.svn/prop-base/elogo.ico.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/elogo.ico.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lame-3.97/dshow/.svn/prop-base/iaudioprops.h.svn-base b/lame-3.97/dshow/.svn/prop-base/iaudioprops.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/iaudioprops.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/prop-base/resource.h.svn-base b/lame-3.97/dshow/.svn/prop-base/resource.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/dshow/.svn/prop-base/resource.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/dshow/.svn/text-base/Encoder.cpp.svn-base b/lame-3.97/dshow/.svn/text-base/Encoder.cpp.svn-base new file mode 100644 index 0000000..8ae8693 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Encoder.cpp.svn-base @@ -0,0 +1,429 @@ +/* + * LAME MP3 encoder for DirectShow + * LAME encoder wrapper + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include "Encoder.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// +CEncoder::CEncoder() : + m_bInpuTypeSet(FALSE), + m_bOutpuTypeSet(FALSE), + m_bFinished(FALSE), + m_outOffset(0), + m_outReadOffset(0), + m_frameCount(0), + pgf(NULL) +{ + m_outFrameBuf = new unsigned char[OUT_BUFFER_SIZE]; +} + +CEncoder::~CEncoder() +{ + Close(); + + if (m_outFrameBuf) + delete [] m_outFrameBuf; +} + +////////////////////////////////////////////////////////////////////// +// SetInputType - check if given input type is supported +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::SetInputType(LPWAVEFORMATEX lpwfex, bool bJustCheck) +{ + CAutoLock l(&m_lock); + + if (lpwfex->wFormatTag == WAVE_FORMAT_PCM) + { + if (lpwfex->nChannels == 1 || lpwfex->nChannels == 2) + { + if (lpwfex->nSamplesPerSec == 48000 || + lpwfex->nSamplesPerSec == 44100 || + lpwfex->nSamplesPerSec == 32000 || + lpwfex->nSamplesPerSec == 24000 || + lpwfex->nSamplesPerSec == 22050 || + lpwfex->nSamplesPerSec == 16000 || + lpwfex->nSamplesPerSec == 12000 || + lpwfex->nSamplesPerSec == 11025 || + lpwfex->nSamplesPerSec == 8000) + { + if (lpwfex->wBitsPerSample == 16) + { + if (!bJustCheck) + { + memcpy(&m_wfex, lpwfex, sizeof(WAVEFORMATEX)); + m_bInpuTypeSet = true; + } + + return S_OK; + } + } + } + } + + if (!bJustCheck) + m_bInpuTypeSet = false; + + return E_INVALIDARG; +} + +////////////////////////////////////////////////////////////////////// +// SetOutputType - try to initialize encoder with given output type +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::SetOutputType(MPEG_ENCODER_CONFIG &mabsi) +{ + CAutoLock l(&m_lock); + + m_mabsi = mabsi; + m_bOutpuTypeSet = true; + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// SetDefaultOutputType - sets default MPEG audio properties according +// to input type +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::SetDefaultOutputType(LPWAVEFORMATEX lpwfex) +{ + CAutoLock l(&m_lock); + + if(lpwfex->nChannels == 1 || m_mabsi.bForceMono) + m_mabsi.ChMode = MONO; + + if((lpwfex->nSamplesPerSec < m_mabsi.dwSampleRate) || (lpwfex->nSamplesPerSec % m_mabsi.dwSampleRate != 0)) + m_mabsi.dwSampleRate = lpwfex->nSamplesPerSec; + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// Init - initialized or reiniyialized encoder SDK with given input +// and output settings +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::Init() +{ + CAutoLock l(&m_lock); + + m_outOffset = 0; + m_outReadOffset = 0; + + m_bFinished = FALSE; + + m_frameCount = 0; + + if (!pgf) + { + if (!m_bInpuTypeSet || !m_bOutpuTypeSet) + return E_UNEXPECTED; + + // Init Lame library + // note: newer, safer interface which doesn't + // allow or require direct access to 'gf' struct is being written + // see the file 'API' included with LAME. + if (pgf = lame_init()) + { + pgf->num_channels = m_wfex.nChannels; + + pgf->in_samplerate = m_wfex.nSamplesPerSec; + pgf->out_samplerate = m_mabsi.dwSampleRate; + if ((pgf->out_samplerate >= 32000) && (m_mabsi.dwBitrate < 32)) + pgf->brate = 32; + else + pgf->brate = m_mabsi.dwBitrate; + + pgf->VBR = m_mabsi.vmVariable; + pgf->VBR_min_bitrate_kbps = m_mabsi.dwVariableMin; + pgf->VBR_max_bitrate_kbps = m_mabsi.dwVariableMax; + + pgf->copyright = m_mabsi.bCopyright; + pgf->original = m_mabsi.bOriginal; + pgf->error_protection = m_mabsi.bCRCProtect; + + pgf->bWriteVbrTag = m_mabsi.dwXingTag; + pgf->strict_ISO = m_mabsi.dwStrictISO; + pgf->VBR_hard_min = m_mabsi.dwEnforceVBRmin; + + if (pgf->num_channels == 2 && !m_mabsi.bForceMono) + { + int act_br = pgf->VBR ? pgf->VBR_min_bitrate_kbps + pgf->VBR_max_bitrate_kbps / 2 : pgf->brate; + + // Disabled. It's for user's consideration now + //int rel = pgf->out_samplerate / (act_br + 1); + //pgf->mode = rel < 200 ? m_mabsi.ChMode : JOINT_STEREO; + + pgf->mode = m_mabsi.ChMode; + } + else + pgf->mode = MONO; + + if (pgf->mode == JOINT_STEREO) + pgf->force_ms = m_mabsi.dwForceMS; + else + pgf->force_ms = 0; + + pgf->mode_fixed = m_mabsi.dwModeFixed; + + if (m_mabsi.dwVoiceMode != 0) + { + pgf->lowpassfreq = 12000; + pgf->VBR_max_bitrate_kbps = 160; + } + + if (m_mabsi.dwKeepAllFreq != 0) + { + pgf->lowpassfreq = -1; + pgf->highpassfreq = -1; + } + + pgf->quality = m_mabsi.dwQuality; + pgf->VBR_q = m_mabsi.dwVBRq; + + lame_init_params(pgf); + + // encoder delay compensation + { + short * start_padd = (short *)calloc(48, pgf->num_channels * sizeof(short)); + + if (pgf->num_channels == 2) + lame_encode_buffer_interleaved(pgf, start_padd, 48, m_outFrameBuf, OUT_BUFFER_SIZE); + else + lame_encode_buffer(pgf, start_padd, start_padd, 48, m_outFrameBuf, OUT_BUFFER_SIZE); + + free(start_padd); + } + + return S_OK; + } + + return E_FAIL; + } + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// Close - closes encoder +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::Close() +{ + CAutoLock l(&m_lock); + + if (pgf) + { + lame_close(pgf); + pgf = NULL; + } + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// Encode - encodes data placed on pdata and returns +// the number of processed bytes +////////////////////////////////////////////////////////////////////// +int CEncoder::Encode(const short * pdata, int data_size) +{ + CAutoLock l(&m_lock); + + if (!pgf || !m_outFrameBuf || !pdata || data_size < 0 || (data_size & (sizeof(short) - 1))) + return -1; + + // some data left in the buffer, shift to start + if (m_outReadOffset > 0) + { + if (m_outOffset > m_outReadOffset) + memmove(m_outFrameBuf, m_outFrameBuf + m_outReadOffset, m_outOffset - m_outReadOffset); + + m_outOffset -= m_outReadOffset; + } + + m_outReadOffset = 0; + + + + m_bFinished = FALSE; + + int bytes_processed = 0; + + while (1) + { + int nsamples = (data_size - bytes_processed) / (sizeof(short) * pgf->num_channels); + + if (nsamples <= 0) + break; + + if (nsamples > 1152) + nsamples = 1152; + + if (m_outOffset >= OUT_BUFFER_MAX) + break; + + int out_bytes = 0; + + if (pgf->num_channels == 2) + out_bytes = lame_encode_buffer_interleaved( + pgf, + (short *)(pdata + (bytes_processed / sizeof(short))), + nsamples, + m_outFrameBuf + m_outOffset, + OUT_BUFFER_SIZE - m_outOffset); + else + out_bytes = lame_encode_buffer( + pgf, + pdata + (bytes_processed / sizeof(short)), + pdata + (bytes_processed / sizeof(short)), + nsamples, + m_outFrameBuf + m_outOffset, + OUT_BUFFER_SIZE - m_outOffset); + + if (out_bytes < 0) + return -1; + + m_outOffset += out_bytes; + bytes_processed += nsamples * pgf->num_channels * sizeof(short); + } + + return bytes_processed; +} + +// +// Finsh - flush the buffered samples +// +HRESULT CEncoder::Finish() +{ + CAutoLock l(&m_lock); + + if (!pgf || !m_outFrameBuf || (m_outOffset >= OUT_BUFFER_MAX)) + return E_FAIL; + + m_outOffset += lame_encode_flush(pgf, m_outFrameBuf + m_outOffset, OUT_BUFFER_SIZE - m_outOffset); + + m_bFinished = TRUE; + + return S_OK; +} + + +int getFrameLength(const unsigned char * pdata) +{ + if (!pdata || pdata[0] != 0xff || (pdata[1] & 0xe0) != 0xe0) + return -1; + + const int sample_rate_tab[4][4] = + { + {11025,12000,8000,1}, + {1,1,1,1}, + {22050,24000,16000,1}, + {44100,48000,32000,1} + }; + +#define MPEG_VERSION_RESERVED 1 +#define MPEG_VERSION_1 3 + +#define LAYER_III 1 + +#define BITRATE_FREE 0 +#define BITRATE_RESERVED 15 + +#define SRATE_RESERVED 3 + +#define EMPHASIS_RESERVED 2 + + int version_id = (pdata[1] & 0x18) >> 3; + int layer = (pdata[1] & 0x06) >> 1; + int bitrate_id = (pdata[2] & 0xF0) >> 4; + int sample_rate_id = (pdata[2] & 0x0C) >> 2; + int padding = (pdata[2] & 0x02) >> 1; + int emphasis = pdata[3] & 0x03; + + if (version_id != MPEG_VERSION_RESERVED && + layer == LAYER_III && + bitrate_id != BITRATE_FREE && + bitrate_id != BITRATE_RESERVED && + sample_rate_id != SRATE_RESERVED && + emphasis != EMPHASIS_RESERVED) + { + int spf = (version_id == MPEG_VERSION_1) ? 1152 : 576; + int sample_rate = sample_rate_tab[version_id][sample_rate_id]; + int bitrate = dwBitRateValue[version_id != MPEG_VERSION_1][bitrate_id - 1] * 1000; + + return (bitrate * spf) / (8 * sample_rate) + padding; + } + + return -1; +} + + +int CEncoder::GetFrame(const unsigned char ** pframe) +{ + if (!pgf || !m_outFrameBuf || !pframe) + return -1; + + while ((m_outOffset - m_outReadOffset) > 4) + { + int frame_length = getFrameLength(m_outFrameBuf + m_outReadOffset); + + if (frame_length < 0) + { + m_outReadOffset++; + } + else if (frame_length <= (m_outOffset - m_outReadOffset)) + { + *pframe = m_outFrameBuf + m_outReadOffset; + m_outReadOffset += frame_length; + + m_frameCount++; + + // don't deliver the first and the last frames + if (m_frameCount != 1 && !(m_bFinished && (m_outOffset - m_outReadOffset) < 5)) + return frame_length; + } + else + break; + } + + return 0; +} + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/dshow/.svn/text-base/Encoder.h.svn-base b/lame-3.97/dshow/.svn/text-base/Encoder.h.svn-base new file mode 100644 index 0000000..461ee69 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Encoder.h.svn-base @@ -0,0 +1,170 @@ +/* + * LAME MP3 encoder for DirectShow + * LAME encoder wrapper + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_) +#define AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include "..\include\lame.h" +#include "..\libmp3lame\lame_global_flags.h" +/* +#define INPUT_BUFF_SIZE 65536 * 2 +#define OUTPUT_BUFF_SIZE 16384 +#define FRAME_SIZE_LAYER3 1152 +*/ + +const unsigned int dwBitRateValue[2][14] = +{ + {32,40,48,56,64,80,96,112,128,160,192,224,256,320}, // MPEG-1 + {8,16,24,32,40,48,56,64,80,96,112,128,144,160} // MPEG-2/2.5 +}; +/* +#define STEREO 0 +#define JOINT_STEREO 1 +#define DUAL_CHANNEL 2 +#define MONO 3 +*/ + +#define OUT_BUFFER_SIZE 16384 +#define OUT_BUFFER_GUARD 8192 +#define OUT_BUFFER_MAX (OUT_BUFFER_SIZE - OUT_BUFFER_GUARD) + +typedef struct { + DWORD dwSampleRate; //SF in Hz + DWORD dwBitrate; //BR in bit per second + vbr_mode vmVariable; + DWORD dwVariableMin; //specify a minimum allowed bitrate + DWORD dwVariableMax; //specify a maximum allowed bitrate + DWORD dwQuality; //Encoding quality + DWORD dwVBRq; // VBR quality setting (0=highest quality, 9=lowest) + long lLayer; //Layer: 1 or 2 + + MPEG_mode ChMode; //Channel coding mode: see doc + DWORD dwForceMS; + + DWORD bCRCProtect; //Is CRC protection activated? + DWORD bForceMono; + DWORD bSetDuration; + DWORD bCopyright; //Is the stream protected by copyright? + DWORD bOriginal; //Is the stream an original? + + DWORD dwPES; // PES header. Obsolete + + DWORD dwEnforceVBRmin; + DWORD dwVoiceMode; + DWORD dwKeepAllFreq; + DWORD dwStrictISO; + DWORD dwNoShortBlock; + DWORD dwXingTag; + DWORD dwModeFixed; +} MPEG_ENCODER_CONFIG; + + +class CEncoder +{ +public: + + CEncoder(); + virtual ~CEncoder(); + + // Initialize encoder with PCM stream properties + HRESULT SetInputType(LPWAVEFORMATEX lpwfex, bool bJustCheck = FALSE); // returns E_INVALIDARG if not supported + // GetInputType - returns current input type + HRESULT GetInputType(WAVEFORMATEX *pwfex) + { + if(m_bInpuTypeSet) + { + memcpy(pwfex, &m_wfex, sizeof(WAVEFORMATEX)); + return S_OK; + } + else + return E_UNEXPECTED; + } + + // Set MPEG audio parameters + HRESULT SetOutputType(MPEG_ENCODER_CONFIG &mabsi); // returns E_INVALIDARG if not supported or + // not compatible with input type + // Return current MPEG audio settings + HRESULT GetOutputType(MPEG_ENCODER_CONFIG* pmabsi) + { + if (m_bOutpuTypeSet) + { + memcpy(pmabsi, &m_mabsi, sizeof(MPEG_ENCODER_CONFIG)); + return S_OK; + } + else + return E_UNEXPECTED; + } + + // Set if output stream is a PES. Obsolete + void SetPES(bool bPES) + { + m_mabsi.dwPES = false;//bPES; + } + // Is output stream a PES. Obsolete + BOOL IsPES() const + { + return (BOOL)m_mabsi.dwPES; + } + + // Initialize encoder SDK + HRESULT Init(); + // Close encoder SDK + HRESULT Close(); + + // Encode media sample data + int Encode(const short * pdata, int data_size); + int GetFrame(const unsigned char ** pframe); + + HRESULT Finish(); + + +protected: + HRESULT SetDefaultOutputType(LPWAVEFORMATEX lpwfex); + + // Input media type + WAVEFORMATEX m_wfex; + + // Output media type + MPEG_ENCODER_CONFIG m_mabsi; + + // Compressor private data + lame_global_flags * pgf; + + // Compressor miscelaneous state + BOOL m_bInpuTypeSet; + BOOL m_bOutpuTypeSet; + + BOOL m_bFinished; + int m_frameCount; + + unsigned char * m_outFrameBuf; + int m_outOffset; + int m_outReadOffset; + + CCritSec m_lock; +}; + +#endif // !defined(AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_) diff --git a/lame-3.97/dshow/.svn/text-base/Makefile.am.svn-base b/lame-3.97/dshow/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..7ae0a9e --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,27 @@ +## $Id: Makefile.am,v 1.5 2001/02/18 12:11:10 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + Encoder.cpp \ + Encoder.h \ + Mpegac.cpp \ + Mpegac.def \ + Mpegac.h \ + PropPage.cpp \ + PropPage.h \ + PropPage_adv.cpp \ + PropPage_adv.h \ + Property.rc \ + README \ + REG.CPP \ + REG.H \ + UIDS.H \ + aboutprp.cpp \ + aboutprp.h \ + dshow.dsp \ + dshow.dsw \ + elogo.ico \ + iaudioprops.h \ + resource.h + diff --git a/lame-3.97/dshow/.svn/text-base/Makefile.in.svn-base b/lame-3.97/dshow/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..6349277 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,370 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = dshow +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + Encoder.cpp \ + Encoder.h \ + Mpegac.cpp \ + Mpegac.def \ + Mpegac.h \ + PropPage.cpp \ + PropPage.h \ + PropPage_adv.cpp \ + PropPage_adv.h \ + Property.rc \ + README \ + REG.CPP \ + REG.H \ + UIDS.H \ + aboutprp.cpp \ + aboutprp.h \ + dshow.dsp \ + dshow.dsw \ + elogo.ico \ + iaudioprops.h \ + resource.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign dshow/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign dshow/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/dshow/.svn/text-base/Mpegac.cpp.svn-base b/lame-3.97/dshow/.svn/text-base/Mpegac.cpp.svn-base new file mode 100644 index 0000000..a036fc3 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Mpegac.cpp.svn-base @@ -0,0 +1,1408 @@ +/* + * LAME MP3 encoder for DirectShow + * DirectShow filter implementation + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +//#include +#include "uids.h" +#include "iaudioprops.h" +#include "mpegac.h" +#include "resource.h" + +#include "PropPage.h" +#include "PropPage_adv.h" +#include "aboutprp.h" + +#include "Encoder.h" +#include "Reg.h" + +#ifndef _INC_MMREG +#include +#endif + +// default parameters +#define DEFAULT_LAYER 3 +#define DEFAULT_STEREO_MODE JOINT_STEREO +#define DEFAULT_FORCE_MS 0 +#define DEFAULT_MODE_FIXED 0 +#define DEFAULT_ENFORCE_MIN 0 +#define DEFAULT_VOICE 0 +#define DEFAULT_KEEP_ALL_FREQ 0 +#define DEFAULT_STRICT_ISO 0 +#define DEFAULT_DISABLE_SHORT_BLOCK 0 +#define DEFAULT_XING_TAG 0 +#define DEFAULT_SAMPLE_RATE 44100 +#define DEFAULT_BITRATE 128 +#define DEFAULT_VARIABLE 0 +#define DEFAULT_CRC 0 +#define DEFAULT_FORCE_MONO 0 +#define DEFAULT_SET_DURATION 1 +#define DEFAULT_COPYRIGHT 0 +#define DEFAULT_ORIGINAL 0 +#define DEFAULT_VARIABLEMIN 80 +#define DEFAULT_VARIABLEMAX 160 +#define DEFAULT_ENCODING_QUALITY 5 +#define DEFAULT_VBR_QUALITY 4 +#define DEFAULT_PES 0 + + +/* Registration setup stuff */ +// Setup data + +AMOVIESETUP_MEDIATYPE sudMpgInputType[] = +{ + { &MEDIATYPE_Audio, &MEDIASUBTYPE_PCM } +}; +AMOVIESETUP_MEDIATYPE sudMpgOutputType[] = +{ + { &MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1AudioPayload }, + { &MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG2_AUDIO }, +}; + +AMOVIESETUP_PIN sudMpgPins[3] = +{ + { L"PCM Input", + FALSE, // bRendered + FALSE, // bOutput + FALSE, // bZero + FALSE, // bMany + &CLSID_NULL, // clsConnectsToFilter + NULL, // ConnectsToPin + NUMELMS(sudMpgInputType), // Number of media types + sudMpgInputType + }, + { L"MPEG Output", + FALSE, // bRendered + TRUE, // bOutput + FALSE, // bZero + FALSE, // bMany + &CLSID_NULL, // clsConnectsToFilter + NULL, // ConnectsToPin + NUMELMS(sudMpgOutputType), // Number of media types + sudMpgOutputType + } +}; + +AMOVIESETUP_FILTER sudMpgAEnc = +{ + &CLSID_LAMEDShowFilter, + L"LAME Audio Encoder", + MERIT_SW_COMPRESSOR, // Don't use us for real! + NUMELMS(sudMpgPins), // 3 pins + sudMpgPins +}; + +/*****************************************************************************/ +// COM Global table of objects in this dll +CFactoryTemplate g_Templates[] = +{ + { L"LAME Audio Encoder", &CLSID_LAMEDShowFilter, CMpegAudEnc::CreateInstance, NULL, &sudMpgAEnc }, + { L"LAME Audio Encoder Property Page", &CLSID_LAMEDShow_PropertyPage, CMpegAudEncPropertyPage::CreateInstance}, + { L"LAME Audio Encoder Property Page", &CLSID_LAMEDShow_PropertyPageAdv, CMpegAudEncPropertyPageAdv::CreateInstance}, + { L"LAME Audio Encoder About", &CLSID_LAMEDShow_About, CMAEAbout::CreateInstance} +}; +// Count of objects listed in g_cTemplates +int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]); + +CUnknown *CMpegAudEnc::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr) +{ + CUnknown *punk = new CMpegAudEnc(lpunk, phr); + if (punk == NULL) + *phr = E_OUTOFMEMORY; + return punk; +} + +CMpegAudEnc::CMpegAudEnc(LPUNKNOWN lpunk, HRESULT *phr) + : CTransformFilter(NAME("LAME Audio Encoder"), lpunk, + CLSID_LAMEDShowFilter), + CPersistStream(lpunk, phr) +{ + MPEG_ENCODER_CONFIG mec; + ReadPresetSettings(&mec); + m_Encoder.SetOutputType(mec); + + m_hasFinished = TRUE; +} + +CMpegAudEnc::~CMpegAudEnc(void) +{ +} + +LPAMOVIESETUP_FILTER CMpegAudEnc::GetSetupData() +{ + return &sudMpgAEnc; +} + + +HRESULT CMpegAudEnc::Receive(IMediaSample * pSample) +{ + CAutoLock lock(&m_cs); + + if (!pSample) + return S_OK; + + BYTE * pSourceBuffer = NULL; + + if (pSample->GetPointer(&pSourceBuffer) != S_OK || !pSourceBuffer) + return S_OK; + + long sample_size = pSample->GetActualDataLength(); + + REFERENCE_TIME rtStart, rtStop; + BOOL gotValidTime = (pSample->GetTime(&rtStart, &rtStop) != VFW_E_SAMPLE_TIME_NOT_SET); + + if (sample_size <= 0 || pSourceBuffer == NULL || m_hasFinished || (gotValidTime && rtStart < 0)) + return S_OK; + + if (gotValidTime) + { + if (m_rtStreamTime < 0) + { + m_rtStreamTime = rtStart; + m_rtEstimated = rtStart; + } + else + { + resync_point_t * sync = m_sync + m_sync_in_idx; + + // if old sync data is applied and gap is greater than 1 ms + // then make a new synchronization point + if (sync->applied && (rtStart - m_rtEstimated > 10000)) + { + sync->sample = m_samplesIn; + sync->delta = rtStart - m_rtEstimated; + sync->applied = FALSE; + + m_rtEstimated += sync->delta; + + if (m_sync_in_idx < (RESYNC_COUNT - 1)) + m_sync_in_idx++; + else + m_sync_in_idx = 0; + } + } + } + + m_rtEstimated += (LONGLONG)(m_bytesToDuration * sample_size); + m_samplesIn += sample_size / m_bytesPerSample; + + while (sample_size > 0) + { + int bytes_processed = m_Encoder.Encode((short *)pSourceBuffer, sample_size); + + if (bytes_processed <= 0) + return S_OK; + + FlushEncodedSamples(); + + sample_size -= bytes_processed; + pSourceBuffer += bytes_processed; + } + + return S_OK; +} + + + + +HRESULT CMpegAudEnc::FlushEncodedSamples() +{ + IMediaSample * pOutSample = NULL; + BYTE * pDst = NULL; + + if (m_rtStreamTime < 0) + m_rtStreamTime = 0; + + while (1) + { + const unsigned char * pframe = NULL; + int frame_size = m_Encoder.GetFrame(&pframe); + + if (frame_size <= 0 || !pframe) + break; + + if (!m_sync[m_sync_out_idx].applied && m_sync[m_sync_out_idx].sample <= m_samplesOut) + { + m_rtStreamTime += m_sync[m_sync_out_idx].delta; + m_sync[m_sync_out_idx].applied = TRUE; + + if (m_sync_out_idx < (RESYNC_COUNT - 1)) + m_sync_out_idx++; + else + m_sync_out_idx = 0; + } + + REFERENCE_TIME rtStart = m_rtStreamTime; + REFERENCE_TIME rtStop = rtStart + m_rtFrameTime; + + HRESULT hr = m_pOutput->GetDeliveryBuffer(&pOutSample, NULL, NULL, 0); + if (hr == S_OK && pOutSample) + { + hr = pOutSample->GetPointer(&pDst); + if (hr == S_OK && pDst) + { + CopyMemory(pDst, pframe, frame_size); + + pOutSample->SetSyncPoint(TRUE); + pOutSample->SetActualDataLength(frame_size); + pOutSample->SetTime(&rtStart, m_setDuration ? &rtStop : NULL); + + m_pOutput->Deliver(pOutSample); + } + + pOutSample->Release(); + } + + m_samplesOut += m_samplesPerFrame; + m_rtStreamTime = rtStop; + } + + return S_OK; +} + + +//////////////////////////////////////////////////////////////////////////// +// StartStreaming - prepare to receive new data +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::StartStreaming() +{ + WAVEFORMATEX * pwfxOut = (WAVEFORMATEX *) m_pOutput->CurrentMediaType().Format(); + WAVEFORMATEX * pwfxIn = (WAVEFORMATEX *) m_pInput->CurrentMediaType().Format(); + + m_bytesPerSample = pwfxIn->nChannels * sizeof(short); + m_samplesPerFrame = (pwfxOut->nSamplesPerSec >= 32000) ? 1152 : 576; + + m_rtFrameTime = MulDiv(10000000, m_samplesPerFrame, pwfxOut->nSamplesPerSec); + + m_samplesIn = m_samplesOut = 0; + m_rtStreamTime = -1; + + // initialize encoder + m_Encoder.Init(); + + m_hasFinished = FALSE; + + for (int i = 0; i < RESYNC_COUNT; i++) + { + m_sync[i].sample = 0; + m_sync[i].delta = 0; + m_sync[i].applied = TRUE; + } + + m_sync_in_idx = 0; + m_sync_out_idx = 0; + + get_SetDuration(&m_setDuration); + + return S_OK; +} + + +HRESULT CMpegAudEnc::StopStreaming() +{ + m_Encoder.Close(); + + return S_OK; +} + + +//////////////////////////////////////////////////////////////////////////// +// EndOfStream - stop data processing +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::EndOfStream() +{ + CAutoLock lock(&m_cs); + + // Flush data + m_Encoder.Finish(); + FlushEncodedSamples(); + + // Close encoder + m_Encoder.Close(); + + m_hasFinished = TRUE; + + return CTransformFilter::EndOfStream(); +} + + +//////////////////////////////////////////////////////////////////////////// +// BeginFlush - stop data processing +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::BeginFlush() +{ + HRESULT hr = CTransformFilter::BeginFlush(); + + if (SUCCEEDED(hr)) + { + CAutoLock lock(&m_cs); + + DWORD dwDstSize = 0; + + // Flush data + m_Encoder.Finish(); + FlushEncodedSamples(); + + m_rtStreamTime = -1; + } + + return hr; +} + + + +//////////////////////////////////////////////////////////////////////////// +// SetMediaType - called when filters are connecting +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::SetMediaType(PIN_DIRECTION direction, const CMediaType * pmt) +{ + HRESULT hr = S_OK; + + if (*pmt->FormatType() != FORMAT_WaveFormatEx) + return VFW_E_INVALIDMEDIATYPE; + + if (pmt->FormatLength() < sizeof(WAVEFORMATEX)) + return VFW_E_INVALIDMEDIATYPE; + + if (direction == PINDIR_INPUT) + { + DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::SetMediaType(), direction = PINDIR_INPUT"))); + + // Pass input media type to encoder + m_Encoder.SetInputType((LPWAVEFORMATEX)pmt->Format()); + + WAVEFORMATEX * pwfx = (WAVEFORMATEX *)pmt->Format(); + + if (pwfx) + m_bytesToDuration = (float)1.e7 / (float)(pwfx->nChannels * sizeof(short) * pwfx->nSamplesPerSec); + else + m_bytesToDuration = 0.0; + + Reconnect(); + } + else if (direction == PINDIR_OUTPUT) + { + WAVEFORMATEX wfIn; + m_Encoder.GetInputType(&wfIn); + + if (wfIn.nSamplesPerSec % + ((LPWAVEFORMATEX)pmt->Format())->nSamplesPerSec != 0) + return VFW_E_TYPE_NOT_ACCEPTED; + } + + return hr; +} + +//////////////////////////////////////////////////////////////////////////// +// CheckInputType - check if you can support mtIn +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::CheckInputType(const CMediaType* mtIn) +{ + if (*mtIn->Type() == MEDIATYPE_Audio && *mtIn->FormatType() == FORMAT_WaveFormatEx) + if (mtIn->FormatLength() >= sizeof(WAVEFORMATEX)) + if (mtIn->IsTemporalCompressed() == FALSE) + return m_Encoder.SetInputType((LPWAVEFORMATEX)mtIn->Format(), true); + + return E_INVALIDARG; +} + +//////////////////////////////////////////////////////////////////////////// +// CheckTransform - checks if we can support the transform from this input to this output +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut) +{ + if (*mtOut->FormatType() != FORMAT_WaveFormatEx) + return VFW_E_INVALIDMEDIATYPE; + + if (mtOut->FormatLength() < sizeof(WAVEFORMATEX)) + return VFW_E_INVALIDMEDIATYPE; + + MPEG_ENCODER_CONFIG mec; + if(FAILED(m_Encoder.GetOutputType(&mec))) + return S_OK; + + if (((LPWAVEFORMATEX)mtIn->Format())->nSamplesPerSec % mec.dwSampleRate != 0) + return S_OK; + + if (mec.dwSampleRate != ((LPWAVEFORMATEX)mtOut->Format())->nSamplesPerSec) + return VFW_E_TYPE_NOT_ACCEPTED; + + return S_OK; +} + +//////////////////////////////////////////////////////////////////////////// +// DecideBufferSize - sets output buffers number and size +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::DecideBufferSize( + IMemAllocator* pAllocator, + ALLOCATOR_PROPERTIES* pProperties) +{ + HRESULT hr = S_OK; + + /// + pProperties->cBuffers = 1; + pProperties->cbBuffer = OUT_BUFFER_SIZE; + // + + ASSERT(pProperties->cbBuffer); + + ALLOCATOR_PROPERTIES Actual; + hr = pAllocator->SetProperties(pProperties,&Actual); + if(FAILED(hr)) + return hr; + + if (Actual.cbBuffer < pProperties->cbBuffer || + Actual.cBuffers < pProperties->cBuffers) + {// can't use this allocator + return E_INVALIDARG; + } + return S_OK; +} + +//////////////////////////////////////////////////////////////////////////// +// GetMediaType - overrideble for suggesting outpu pin media types +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::GetMediaType(int iPosition, CMediaType *pMediaType) +{ + DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::GetMediaType()"))); + + if (iPosition < 0) + return E_INVALIDARG; + + switch (iPosition) + { + case 0: + {// We can support two output streams - PES or AES + if(m_Encoder.IsPES()) + { + pMediaType->SetType(&MEDIATYPE_MPEG2_PES); + pMediaType->SetSubtype(&MEDIASUBTYPE_MPEG2_AUDIO); + } + else + { + pMediaType->SetType(&MEDIATYPE_Audio); + pMediaType->SetSubtype(&MEDIASUBTYPE_MP3); + } + break; + } + default: + return VFW_S_NO_MORE_ITEMS; + } + + if (m_pInput->IsConnected() == FALSE) + { + pMediaType->SetFormatType(&FORMAT_None); + return NOERROR; + } + + SetOutMediaType(); + pMediaType->SetSampleSize(OUT_BUFFER_SIZE); + pMediaType->SetTemporalCompression(FALSE); + pMediaType->AllocFormatBuffer(sizeof(MPEGLAYER3WAVEFORMAT)); + pMediaType->SetFormat((LPBYTE)&m_mwf, sizeof(MPEGLAYER3WAVEFORMAT)); + pMediaType->SetFormatType(&FORMAT_WaveFormatEx); + + return S_OK; +} + +//////////////////////////////////////////////////////////////////////////// +// SetOutMediaType - sets filter output media type according to +// current encoder out MPEG audio properties +//////////////////////////////////////////////////////////////////////////// +void CMpegAudEnc::SetOutMediaType() +{ + MPEG_ENCODER_CONFIG mec; + if(FAILED(m_Encoder.GetOutputType(&mec))) + return ; + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + return ; + +// BOOL bDirty = FALSE; + + if ((wf.nSamplesPerSec % mec.dwSampleRate) != 0) + { + mec.dwSampleRate = wf.nSamplesPerSec; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } + + if (wf.nChannels == 1 && mec.ChMode != MONO) + { + mec.ChMode = MONO; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } + + if (wf.nChannels == 2 && !mec.bForceMono && mec.ChMode == MONO) + { + mec.ChMode = STEREO; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } + + if (wf.nChannels == 2 && mec.bForceMono) + { + mec.ChMode = MONO; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } +/* + if (bDirty) + { + // we are tied to the registry, especially our configuration + // so when we change the incorrect sample rate, we need + // to change the value in registry too. Same to channel mode + SaveAudioEncoderPropertiesToRegistry(); + DbgLog((LOG_TRACE, 1, TEXT("Changed sampling rate internally"))); + } +*/ + // Fill MPEG1WAVEFORMAT DirectShow SDK structure + m_mwf.wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3; + m_mwf.wfx.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); + + if(mec.ChMode == MONO) + m_mwf.wfx.nChannels = 1; + else + m_mwf.wfx.nChannels = 2; + + m_mwf.wfx.nSamplesPerSec = mec.dwSampleRate; + m_mwf.wfx.nBlockAlign = 1; + + m_mwf.wfx.wBitsPerSample = 0; + m_mwf.wfx.nAvgBytesPerSec = mec.dwBitrate * 1000 / 8; + + + m_mwf.wID = MPEGLAYER3_ID_MPEG; + m_mwf.fdwFlags = MPEGLAYER3_FLAG_PADDING_ISO; + m_mwf.nBlockSize = 1; + m_mwf.nFramesPerBlock = 1; + m_mwf.nCodecDelay = 0; +} + +HRESULT CMpegAudEnc::Reconnect() +{ + HRESULT hr = S_FALSE; + + if (m_pOutput && m_pOutput->IsConnected() && m_State == State_Stopped) + { + MPEG_ENCODER_CONFIG mec; + hr = m_Encoder.GetOutputType(&mec); + + if ((hr = m_Encoder.SetOutputType(mec)) == S_OK) + { + CMediaType cmt; + + cmt.InitMediaType(); + GetMediaType(0, &cmt); + + if (S_OK == (hr = m_pOutput->GetConnected()->QueryAccept(&cmt))) + hr = m_pGraph->Reconnect(m_pOutput); + else + hr = m_pOutput->SetMediaType(&cmt); + } + } + + return hr; +} + +// +// Read persistent configuration from Registry +// +void CMpegAudEnc::ReadPresetSettings(MPEG_ENCODER_CONFIG * pmec) +{ + DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::ReadPresetSettings()"))); + + CRegKey rk(HKEY_CURRENT_USER, KEY_LAME_ENCODER); + + pmec->dwBitrate = rk.getDWORD(VALUE_BITRATE,DEFAULT_BITRATE); + pmec->dwVariableMin = rk.getDWORD(VALUE_VARIABLEMIN,DEFAULT_VARIABLEMIN); + pmec->dwVariableMax = rk.getDWORD(VALUE_VARIABLEMAX,DEFAULT_VARIABLEMAX); + pmec->vmVariable = rk.getDWORD(VALUE_VARIABLE, DEFAULT_VARIABLE) ? vbr_rh : vbr_off; + pmec->dwQuality = rk.getDWORD(VALUE_QUALITY,DEFAULT_ENCODING_QUALITY); + pmec->dwVBRq = rk.getDWORD(VALUE_VBR_QUALITY,DEFAULT_VBR_QUALITY); + pmec->lLayer = rk.getDWORD(VALUE_LAYER, DEFAULT_LAYER); + pmec->bCRCProtect = rk.getDWORD(VALUE_CRC, DEFAULT_CRC); + pmec->bForceMono = rk.getDWORD(VALUE_FORCE_MONO, DEFAULT_FORCE_MONO); + pmec->bSetDuration = rk.getDWORD(VALUE_SET_DURATION, DEFAULT_SET_DURATION); + pmec->bCopyright = rk.getDWORD(VALUE_COPYRIGHT, DEFAULT_COPYRIGHT); + pmec->bOriginal = rk.getDWORD(VALUE_ORIGINAL, DEFAULT_ORIGINAL); + pmec->dwSampleRate = rk.getDWORD(VALUE_SAMPLE_RATE, DEFAULT_SAMPLE_RATE); + pmec->dwPES = rk.getDWORD(VALUE_PES, DEFAULT_PES); + + pmec->ChMode = (MPEG_mode)rk.getDWORD(VALUE_STEREO_MODE, DEFAULT_STEREO_MODE); + pmec->dwForceMS = rk.getDWORD(VALUE_FORCE_MS, DEFAULT_FORCE_MS); + + pmec->dwEnforceVBRmin = rk.getDWORD(VALUE_ENFORCE_MIN, DEFAULT_ENFORCE_MIN); + pmec->dwVoiceMode = rk.getDWORD(VALUE_VOICE, DEFAULT_VOICE); + pmec->dwKeepAllFreq = rk.getDWORD(VALUE_KEEP_ALL_FREQ, DEFAULT_KEEP_ALL_FREQ); + pmec->dwStrictISO = rk.getDWORD(VALUE_STRICT_ISO, DEFAULT_STRICT_ISO); + pmec->dwNoShortBlock = rk.getDWORD(VALUE_DISABLE_SHORT_BLOCK, DEFAULT_DISABLE_SHORT_BLOCK); + pmec->dwXingTag = rk.getDWORD(VALUE_XING_TAG, DEFAULT_XING_TAG); + pmec->dwModeFixed = rk.getDWORD(VALUE_MODE_FIXED, DEFAULT_MODE_FIXED); + + rk.Close(); +} + +//////////////////////////////////////////////////////////////// +// Property page handling +//////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::GetPages(CAUUID *pcauuid) +{ + GUID *pguid; + + pcauuid->cElems = 3; + pcauuid->pElems = pguid = (GUID *) CoTaskMemAlloc(sizeof(GUID) * pcauuid->cElems); + + if (pcauuid->pElems == NULL) + return E_OUTOFMEMORY; + + pguid[0] = CLSID_LAMEDShow_PropertyPage; + pguid[1] = CLSID_LAMEDShow_PropertyPageAdv; + pguid[2] = CLSID_LAMEDShow_About; + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::NonDelegatingQueryInterface(REFIID riid, void ** ppv) +{ + + if (riid == IID_ISpecifyPropertyPages) + return GetInterface((ISpecifyPropertyPages *) this, ppv); + else if(riid == IID_IPersistStream) + return GetInterface((IPersistStream *)this, ppv); +// else if (riid == IID_IVAudioEncSettings) +// return GetInterface((IVAudioEncSettings*) this, ppv); + else if (riid == IID_IAudioEncoderProperties) + return GetInterface((IAudioEncoderProperties*) this, ppv); + + return CTransformFilter::NonDelegatingQueryInterface(riid, ppv); +} + +//////////////////////////////////////////////////////////////// +//IVAudioEncSettings interface methods +//////////////////////////////////////////////////////////////// + +// +// IAudioEncoderProperties +// +STDMETHODIMP CMpegAudEnc::get_PESOutputEnabled(DWORD *dwEnabled) +{ + *dwEnabled = (DWORD)m_Encoder.IsPES(); + DbgLog((LOG_TRACE, 1, TEXT("get_PESOutputEnabled -> %d"), *dwEnabled)); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_PESOutputEnabled(DWORD dwEnabled) +{ + m_Encoder.SetPES((BOOL)!!dwEnabled); + DbgLog((LOG_TRACE, 1, TEXT("set_PESOutputEnabled(%d)"), !!dwEnabled)); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_MPEGLayer(DWORD *dwLayer) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwLayer = (DWORD)mec.lLayer; + + DbgLog((LOG_TRACE, 1, TEXT("get_MPEGLayer -> %d"), *dwLayer)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_MPEGLayer(DWORD dwLayer) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + if (dwLayer == 2) + mec.lLayer = 2; + else if (dwLayer == 1) + mec.lLayer = 1; + m_Encoder.SetOutputType(mec); + + DbgLog((LOG_TRACE, 1, TEXT("set_MPEGLayer(%d)"), dwLayer)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_Bitrate(DWORD *dwBitrate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwBitrate = (DWORD)mec.dwBitrate; + DbgLog((LOG_TRACE, 1, TEXT("get_Bitrate -> %d"), *dwBitrate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_Bitrate(DWORD dwBitrate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwBitrate = dwBitrate; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Bitrate(%d)"), dwBitrate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_Variable(DWORD *dwVariable) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwVariable = (DWORD)(mec.vmVariable == vbr_off ? 0 : 1); + DbgLog((LOG_TRACE, 1, TEXT("get_Variable -> %d"), *dwVariable)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_Variable(DWORD dwVariable) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + + mec.vmVariable = dwVariable ? vbr_rh : vbr_off; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Variable(%d)"), dwVariable)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_VariableMin(DWORD *dwMin) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwMin = (DWORD)mec.dwVariableMin; + DbgLog((LOG_TRACE, 1, TEXT("get_Variablemin -> %d"), *dwMin)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VariableMin(DWORD dwMin) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVariableMin = dwMin; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Variablemin(%d)"), dwMin)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_VariableMax(DWORD *dwMax) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwMax = (DWORD)mec.dwVariableMax; + DbgLog((LOG_TRACE, 1, TEXT("get_Variablemax -> %d"), *dwMax)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VariableMax(DWORD dwMax) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVariableMax = dwMax; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Variablemax(%d)"), dwMax)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_Quality(DWORD *dwQuality) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwQuality=(DWORD)mec.dwQuality; + DbgLog((LOG_TRACE, 1, TEXT("get_Quality -> %d"), *dwQuality)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_Quality(DWORD dwQuality) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwQuality = dwQuality; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Quality(%d)"), dwQuality)); + return S_OK; +} +STDMETHODIMP CMpegAudEnc::get_VariableQ(DWORD *dwVBRq) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwVBRq=(DWORD)mec.dwVBRq; + DbgLog((LOG_TRACE, 1, TEXT("get_VariableQ -> %d"), *dwVBRq)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VariableQ(DWORD dwVBRq) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVBRq = dwVBRq; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_VariableQ(%d)"), dwVBRq)); + return S_OK; +} + + +STDMETHODIMP CMpegAudEnc::get_SourceSampleRate(DWORD *dwSampleRate) +{ + *dwSampleRate = 0; + + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + return E_FAIL; + + *dwSampleRate = wf.nSamplesPerSec; + DbgLog((LOG_TRACE, 1, TEXT("get_SourceSampleRate -> %d"), *dwSampleRate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_SourceChannels(DWORD *dwChannels) +{ + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + return E_FAIL; + + *dwChannels = wf.nChannels; + DbgLog((LOG_TRACE, 1, TEXT("get_SourceChannels -> %d"), *dwChannels)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_SampleRate(DWORD *dwSampleRate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwSampleRate = mec.dwSampleRate; + DbgLog((LOG_TRACE, 1, TEXT("get_SampleRate -> %d"), *dwSampleRate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_SampleRate(DWORD dwSampleRate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + DWORD dwOldSampleRate = mec.dwSampleRate; + mec.dwSampleRate = dwSampleRate; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_SampleRate(%d)"), dwSampleRate)); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ChannelMode(DWORD *dwChannelMode) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwChannelMode = mec.ChMode; + DbgLog((LOG_TRACE, 1, TEXT("get_ChannelMode -> %d"), *dwChannelMode)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ChannelMode(DWORD dwChannelMode) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.ChMode = (MPEG_mode)dwChannelMode; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ChannelMode(%d)"), dwChannelMode)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ForceMS(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwForceMS; + DbgLog((LOG_TRACE, 1, TEXT("get_ForceMS -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ForceMS(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwForceMS = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ForceMS(%d)"), dwFlag)); + return S_OK; +} + + +STDMETHODIMP CMpegAudEnc::get_CRCFlag(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bCRCProtect; + DbgLog((LOG_TRACE, 1, TEXT("get_CRCFlag -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ForceMono(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bForceMono; + DbgLog((LOG_TRACE, 1, TEXT("get_ForceMono -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_SetDuration(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bSetDuration; + DbgLog((LOG_TRACE, 1, TEXT("get_SetDuration -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_CRCFlag(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bCRCProtect = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_CRCFlag(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ForceMono(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bForceMono = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ForceMono(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_SetDuration(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bSetDuration = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_SetDuration(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_EnforceVBRmin(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwEnforceVBRmin; + DbgLog((LOG_TRACE, 1, TEXT("get_EnforceVBRmin -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_EnforceVBRmin(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwEnforceVBRmin = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_EnforceVBRmin(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_VoiceMode(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwVoiceMode; + DbgLog((LOG_TRACE, 1, TEXT("get_VoiceMode -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VoiceMode(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVoiceMode = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_VoiceMode(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_KeepAllFreq(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwKeepAllFreq; + DbgLog((LOG_TRACE, 1, TEXT("get_KeepAllFreq -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_KeepAllFreq(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwKeepAllFreq = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_KeepAllFreq(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_StrictISO(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwStrictISO; + DbgLog((LOG_TRACE, 1, TEXT("get_StrictISO -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_StrictISO(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwStrictISO = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_StrictISO(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_NoShortBlock(DWORD *dwNoShortBlock) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwNoShortBlock = mec.dwNoShortBlock; + DbgLog((LOG_TRACE, 1, TEXT("get_NoShortBlock -> %d"), *dwNoShortBlock)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_NoShortBlock(DWORD dwNoShortBlock) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwNoShortBlock = dwNoShortBlock; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_NoShortBlock(%d)"), dwNoShortBlock)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_XingTag(DWORD *dwXingTag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwXingTag = mec.dwXingTag; + DbgLog((LOG_TRACE, 1, TEXT("get_XingTag -> %d"), *dwXingTag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_XingTag(DWORD dwXingTag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwXingTag = dwXingTag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_XingTag(%d)"), dwXingTag)); + return S_OK; +} + + + +STDMETHODIMP CMpegAudEnc::get_OriginalFlag(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bOriginal; + DbgLog((LOG_TRACE, 1, TEXT("get_OriginalFlag -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_OriginalFlag(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bOriginal = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_OriginalFlag(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_CopyrightFlag(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bCopyright; + DbgLog((LOG_TRACE, 1, TEXT("get_CopyrightFlag -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_CopyrightFlag(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bCopyright = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_CopyrightFlag(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ModeFixed(DWORD *dwModeFixed) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwModeFixed = mec.dwModeFixed; + DbgLog((LOG_TRACE, 1, TEXT("get_ModeFixed -> %d"), *dwModeFixed)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ModeFixed(DWORD dwModeFixed) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwModeFixed = dwModeFixed; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ModeFixed(%d)"), dwModeFixed)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ParameterBlockSize(BYTE *pcBlock, DWORD *pdwSize) +{ + DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize -> %d%d"), *pcBlock, *pdwSize)); + + if (pcBlock != NULL) { + if (*pdwSize >= sizeof(MPEG_ENCODER_CONFIG)) { + m_Encoder.GetOutputType((MPEG_ENCODER_CONFIG*)pcBlock); + return S_OK; + } + else { + *pdwSize = sizeof(MPEG_ENCODER_CONFIG); + return E_FAIL; + } + } + else if (pdwSize != NULL) { + *pdwSize = sizeof(MPEG_ENCODER_CONFIG); + return S_OK; + } + + return E_FAIL; +} + +STDMETHODIMP CMpegAudEnc::set_ParameterBlockSize(BYTE *pcBlock, DWORD dwSize) +{ + DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize(%d, %d)"), *pcBlock, dwSize)); + if (sizeof(MPEG_ENCODER_CONFIG) == dwSize){ + m_Encoder.SetOutputType(*(MPEG_ENCODER_CONFIG*)pcBlock); + return S_OK; + } + else return E_FAIL; +} + + +STDMETHODIMP CMpegAudEnc::DefaultAudioEncoderProperties() +{ + DbgLog((LOG_TRACE, 1, TEXT("DefaultAudioEncoderProperties()"))); + + HRESULT hr = InputTypeDefined(); + if (FAILED(hr)) + return hr; + + DWORD dwSourceSampleRate; + get_SourceSampleRate(&dwSourceSampleRate); + + set_PESOutputEnabled(DEFAULT_PES); + set_MPEGLayer(DEFAULT_LAYER); + + set_Bitrate(DEFAULT_BITRATE); + set_Variable(FALSE); + set_VariableMin(DEFAULT_VARIABLEMIN); + set_VariableMax(DEFAULT_VARIABLEMAX); + set_Quality(DEFAULT_ENCODING_QUALITY); + set_VariableQ(DEFAULT_VBR_QUALITY); + + set_SampleRate(dwSourceSampleRate); + set_CRCFlag(FALSE); + set_ForceMono(FALSE); + set_SetDuration(FALSE); + set_OriginalFlag(FALSE); + set_CopyrightFlag(FALSE); + + set_EnforceVBRmin(DEFAULT_ENFORCE_MIN); + set_VoiceMode(DEFAULT_VOICE); + set_KeepAllFreq(DEFAULT_KEEP_ALL_FREQ); + set_StrictISO(DEFAULT_STRICT_ISO); + set_NoShortBlock(DEFAULT_DISABLE_SHORT_BLOCK); + set_XingTag(DEFAULT_XING_TAG); + set_ForceMS(DEFAULT_FORCE_MS); + set_ChannelMode(DEFAULT_STEREO_MODE); + set_ModeFixed(DEFAULT_MODE_FIXED); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::LoadAudioEncoderPropertiesFromRegistry() +{ + DbgLog((LOG_TRACE, 1, TEXT("LoadAudioEncoderPropertiesFromRegistry()"))); + + MPEG_ENCODER_CONFIG mec; + ReadPresetSettings(&mec); + if(m_Encoder.SetOutputType(mec) == S_FALSE) + return S_FALSE; + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::SaveAudioEncoderPropertiesToRegistry() +{ + DbgLog((LOG_TRACE, 1, TEXT("SaveAudioEncoderPropertiesToRegistry()"))); + CRegKey rk; + + MPEG_ENCODER_CONFIG mec; + if(m_Encoder.GetOutputType(&mec) == S_FALSE) + return E_FAIL; + + if(rk.Create(HKEY_CURRENT_USER, KEY_LAME_ENCODER)) + { + rk.setDWORD(VALUE_BITRATE, mec.dwBitrate); + rk.setDWORD(VALUE_VARIABLE, mec.vmVariable); + rk.setDWORD(VALUE_VARIABLEMIN, mec.dwVariableMin); + rk.setDWORD(VALUE_VARIABLEMAX, mec.dwVariableMax); + rk.setDWORD(VALUE_QUALITY, mec.dwQuality); + rk.setDWORD(VALUE_VBR_QUALITY, mec.dwVBRq); + + rk.setDWORD(VALUE_CRC, mec.bCRCProtect); + rk.setDWORD(VALUE_FORCE_MONO, mec.bForceMono); + rk.setDWORD(VALUE_SET_DURATION, mec.bSetDuration); + rk.setDWORD(VALUE_PES, mec.dwPES); + rk.setDWORD(VALUE_COPYRIGHT, mec.bCopyright); + rk.setDWORD(VALUE_ORIGINAL, mec.bOriginal); + rk.setDWORD(VALUE_SAMPLE_RATE, mec.dwSampleRate); + + rk.setDWORD(VALUE_STEREO_MODE, mec.ChMode); + rk.setDWORD(VALUE_FORCE_MS, mec.dwForceMS); + rk.setDWORD(VALUE_XING_TAG, mec.dwXingTag); + rk.setDWORD(VALUE_DISABLE_SHORT_BLOCK, mec.dwNoShortBlock); + rk.setDWORD(VALUE_STRICT_ISO, mec.dwStrictISO); + rk.setDWORD(VALUE_KEEP_ALL_FREQ, mec.dwKeepAllFreq); + rk.setDWORD(VALUE_VOICE, mec.dwVoiceMode); + rk.setDWORD(VALUE_ENFORCE_MIN, mec.dwEnforceVBRmin); + rk.setDWORD(VALUE_MODE_FIXED, mec.dwModeFixed); + + rk.Close(); + } + + // Reconnect filter graph + Reconnect(); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::InputTypeDefined() +{ + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + { + DbgLog((LOG_TRACE, 1, TEXT("!InputTypeDefined()"))); + return E_FAIL; + } + + DbgLog((LOG_TRACE, 1, TEXT("InputTypeDefined()"))); + return S_OK; +} + + +STDMETHODIMP CMpegAudEnc::ApplyChanges() +{ + return Reconnect(); +} + +// +// CPersistStream stuff +// + +// what is our class ID? +STDMETHODIMP CMpegAudEnc::GetClassID(CLSID *pClsid) +{ + CheckPointer(pClsid, E_POINTER); + *pClsid = CLSID_LAMEDShowFilter; + return S_OK; +} + +HRESULT CMpegAudEnc::WriteToStream(IStream *pStream) +{ + DbgLog((LOG_TRACE,1,TEXT("WriteToStream()"))); + + MPEG_ENCODER_CONFIG mec; + + if(m_Encoder.GetOutputType(&mec) == S_FALSE) + return E_FAIL; + + return pStream->Write(&mec, sizeof(mec), 0); +} + + +// what device should we use? Used to re-create a .GRF file that we +// are in +HRESULT CMpegAudEnc::ReadFromStream(IStream *pStream) +{ + MPEG_ENCODER_CONFIG mec; + + HRESULT hr = pStream->Read(&mec, sizeof(mec), 0); + if(FAILED(hr)) + return hr; + + if(m_Encoder.SetOutputType(mec) == S_FALSE) + return S_FALSE; + + DbgLog((LOG_TRACE,1,TEXT("ReadFromStream() succeeded"))); + + hr = S_OK; + return hr; +} + + +// How long is our data? +int CMpegAudEnc::SizeMax() +{ + return sizeof(MPEG_ENCODER_CONFIG); +} + + + +//////////////////////////////////////////// +STDAPI DllRegisterServer() +{ + // Create entry in HKEY_CLASSES_ROOT\Filter + OLECHAR szCLSID[CHARS_IN_GUID]; + TCHAR achTemp[MAX_PATH]; + HKEY hKey; + + HRESULT hr = StringFromGUID2(*g_Templates[0].m_ClsID, szCLSID, CHARS_IN_GUID); + wsprintf(achTemp, TEXT("Filter\\%ls"), szCLSID); + // create key + RegCreateKey(HKEY_CLASSES_ROOT, (LPCTSTR)achTemp, &hKey); + RegCloseKey(hKey); + return AMovieDllRegisterServer2(TRUE); +} + +STDAPI DllUnregisterServer() +{ + // Delete entry in HKEY_CLASSES_ROOT\Filter + OLECHAR szCLSID[CHARS_IN_GUID]; + TCHAR achTemp[MAX_PATH]; + + HRESULT hr = StringFromGUID2(*g_Templates[0].m_ClsID, szCLSID, CHARS_IN_GUID); + wsprintf(achTemp, TEXT("Filter\\%ls"), szCLSID); + // create key + RegDeleteKey(HKEY_CLASSES_ROOT, (LPCTSTR)achTemp); + return AMovieDllRegisterServer2(FALSE); +} + diff --git a/lame-3.97/dshow/.svn/text-base/Mpegac.def.svn-base b/lame-3.97/dshow/.svn/text-base/Mpegac.def.svn-base new file mode 100644 index 0000000..d3a2be9 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Mpegac.def.svn-base @@ -0,0 +1,27 @@ +; +; LAME MP3 encoder for DirectShow +; +; Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Library General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Library General Public License for more details. +; +; You should have received a copy of the GNU Library General Public +; License along with this library; if not, write to the +; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +; Boston, MA 02111-1307, USA. +; + +LIBRARY lame.ax +EXPORTS + DllGetClassObject PRIVATE + DllCanUnloadNow PRIVATE + DllRegisterServer PRIVATE + DllUnregisterServer PRIVATE diff --git a/lame-3.97/dshow/.svn/text-base/Mpegac.h.svn-base b/lame-3.97/dshow/.svn/text-base/Mpegac.h.svn-base new file mode 100644 index 0000000..32d0f79 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Mpegac.h.svn-base @@ -0,0 +1,219 @@ +/* + * LAME MP3 encoder for DirectShow + * DirectShow filter implementation + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include "Encoder.h" + +#define KEY_LAME_ENCODER "SOFTWARE\\GNU\\LAME MPEG Layer III Audio Encoder Filter" + +#define VALUE_BITRATE "Bitrate" +#define VALUE_VARIABLE "Variable" +#define VALUE_VARIABLEMIN "VariableMin" +#define VALUE_VARIABLEMAX "VariableMax" +#define VALUE_QUALITY "Quality" +#define VALUE_VBR_QUALITY "VBR Quality" +#define VALUE_SAMPLE_RATE "Sample Rate" + +#define VALUE_STEREO_MODE "Stereo Mode" +#define VALUE_FORCE_MS "Force MS" + +#define VALUE_LAYER "Layer" +#define VALUE_ORIGINAL "Original" +#define VALUE_COPYRIGHT "Copyright" +#define VALUE_CRC "CRC" +#define VALUE_FORCE_MONO "Force Mono" +#define VALUE_SET_DURATION "Set Duration" +#define VALUE_PES "PES" + +#define VALUE_ENFORCE_MIN "EnforceVBRmin" +#define VALUE_VOICE "Voice Mode" +#define VALUE_KEEP_ALL_FREQ "Keep All Frequencies" +#define VALUE_STRICT_ISO "Strict ISO" +#define VALUE_DISABLE_SHORT_BLOCK "No Short Block" +#define VALUE_XING_TAG "Xing Tag" +#define VALUE_MODE_FIXED "Mode Fixed" + + +typedef struct +{ + LONGLONG sample; + REFERENCE_TIME delta; + + BOOL applied; +} resync_point_t; + +#define RESYNC_COUNT 4 + +/////////////////////////////////////////////////////////////////// +// CMpegAudEnc class - implementation for ITransformFilter interface +/////////////////////////////////////////////////////////////////// +class CMpegAudEncPropertyPage; +class CMpegAudEnc : public CTransformFilter, + public ISpecifyPropertyPages, + public IAudioEncoderProperties, + public CPersistStream +{ +public: + DECLARE_IUNKNOWN + + static CUnknown *CreateInstance(LPUNKNOWN lpunk, HRESULT *phr); + + LPAMOVIESETUP_FILTER GetSetupData(); + + HRESULT Reconnect(); + + HRESULT Receive(IMediaSample *pSample); + + HRESULT CheckInputType(const CMediaType* mtIn); + HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut); + HRESULT DecideBufferSize(IMemAllocator * pAllocator, ALLOCATOR_PROPERTIES *pprop); + + HRESULT GetMediaType (int iPosition, CMediaType *pMediaType); + HRESULT SetMediaType (PIN_DIRECTION direction,const CMediaType *pmt); + + + // + HRESULT StartStreaming(); + HRESULT StopStreaming(); + HRESULT EndOfStream(); + HRESULT BeginFlush(); + + ~CMpegAudEnc(void); + + // ISpecifyPropertyPages + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv); + STDMETHODIMP GetPages(CAUUID *pPages); + + // IAudioEncoderProperties + STDMETHODIMP get_PESOutputEnabled(DWORD *dwEnabled); // PES header. Obsolete + STDMETHODIMP set_PESOutputEnabled(DWORD dwEnabled); // PES header. Obsolete + + STDMETHODIMP get_MPEGLayer(DWORD *dwLayer); + STDMETHODIMP set_MPEGLayer(DWORD dwLayer); + + STDMETHODIMP get_Bitrate(DWORD *dwBitrate); + STDMETHODIMP set_Bitrate(DWORD dwBitrate); + STDMETHODIMP get_Variable(DWORD *dwVariable); + STDMETHODIMP set_Variable(DWORD dwVariable); + STDMETHODIMP get_VariableMin(DWORD *dwMin); + STDMETHODIMP set_VariableMin(DWORD dwMin); + STDMETHODIMP get_VariableMax(DWORD *dwMax); + STDMETHODIMP set_VariableMax(DWORD dwMax); + STDMETHODIMP get_Quality(DWORD *dwQuality); + STDMETHODIMP set_Quality(DWORD dwQuality); + STDMETHODIMP get_VariableQ(DWORD *dwVBRq); + STDMETHODIMP set_VariableQ(DWORD dwVBRq); + STDMETHODIMP get_SourceSampleRate(DWORD *dwSampleRate); + STDMETHODIMP get_SourceChannels(DWORD *dwChannels); + STDMETHODIMP get_SampleRate(DWORD *dwSampleRate); + STDMETHODIMP set_SampleRate(DWORD dwSampleRate); + + STDMETHODIMP get_ChannelMode(DWORD *dwChannelMode); + STDMETHODIMP set_ChannelMode(DWORD dwChannelMode); + STDMETHODIMP get_ForceMS(DWORD *dwFlag); + STDMETHODIMP set_ForceMS(DWORD dwFlag); + STDMETHODIMP get_EnforceVBRmin(DWORD *dwFlag); + STDMETHODIMP set_EnforceVBRmin(DWORD dwFlag); + STDMETHODIMP get_VoiceMode(DWORD *dwFlag); + STDMETHODIMP set_VoiceMode(DWORD dwFlag); + STDMETHODIMP get_KeepAllFreq(DWORD *dwFlag); + STDMETHODIMP set_KeepAllFreq(DWORD dwFlag); + STDMETHODIMP get_StrictISO(DWORD *dwFlag); + STDMETHODIMP set_StrictISO(DWORD dwFlag); + STDMETHODIMP get_NoShortBlock(DWORD *dwNoShortBlock); + STDMETHODIMP set_NoShortBlock(DWORD dwNoShortBlock); + STDMETHODIMP get_XingTag(DWORD *dwXingTag); + STDMETHODIMP set_XingTag(DWORD dwXingTag); + STDMETHODIMP get_ModeFixed(DWORD *dwModeFixed); + STDMETHODIMP set_ModeFixed(DWORD dwModeFixed); + + + STDMETHODIMP get_CRCFlag(DWORD *dwFlag); + STDMETHODIMP set_CRCFlag(DWORD dwFlag); + STDMETHODIMP get_ForceMono(DWORD *dwFlag); + STDMETHODIMP set_ForceMono(DWORD dwFlag); + STDMETHODIMP get_SetDuration(DWORD *dwFlag); + STDMETHODIMP set_SetDuration(DWORD dwFlag); + STDMETHODIMP get_OriginalFlag(DWORD *dwFlag); + STDMETHODIMP set_OriginalFlag(DWORD dwFlag); + STDMETHODIMP get_CopyrightFlag(DWORD *dwFlag); + STDMETHODIMP set_CopyrightFlag(DWORD dwFlag); + + STDMETHODIMP get_ParameterBlockSize(BYTE *pcBlock, DWORD *pdwSize); + STDMETHODIMP set_ParameterBlockSize(BYTE *pcBlock, DWORD dwSize); + + STDMETHODIMP DefaultAudioEncoderProperties(); + STDMETHODIMP LoadAudioEncoderPropertiesFromRegistry(); + STDMETHODIMP SaveAudioEncoderPropertiesToRegistry(); + STDMETHODIMP InputTypeDefined(); + + STDMETHODIMP ApplyChanges(); + + // CPersistStream + HRESULT WriteToStream(IStream *pStream); + HRESULT ReadFromStream(IStream *pStream); + + int SizeMax(); + STDMETHODIMP GetClassID(CLSID *pClsid); + +private: + CMpegAudEnc(LPUNKNOWN lpunk, HRESULT *phr); + + HRESULT FlushEncodedSamples(); + + void SetOutMediaType(); + + void ReadPresetSettings(MPEG_ENCODER_CONFIG *pmabsi); + + // Encoder object + CEncoder m_Encoder; + + // Current media out format + MPEGLAYER3WAVEFORMAT m_mwf; + + REFERENCE_TIME m_rtStreamTime; + REFERENCE_TIME m_rtFrameTime; + REFERENCE_TIME m_rtEstimated; + + // Synchronization data + LONGLONG m_samplesIn; + LONGLONG m_samplesOut; + int m_samplesPerFrame; + int m_bytesPerSample; + float m_bytesToDuration; + + resync_point_t m_sync[RESYNC_COUNT]; + int m_sync_in_idx; + int m_sync_out_idx; + + BOOL m_hasFinished; + + CCritSec m_cs; + + DWORD m_setDuration; + + +protected: + friend class CMpegAudEncPropertyPage; +}; + + diff --git a/lame-3.97/dshow/.svn/text-base/PropPage.cpp.svn-base b/lame-3.97/dshow/.svn/text-base/PropPage.cpp.svn-base new file mode 100644 index 0000000..fe4def5 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/PropPage.cpp.svn-base @@ -0,0 +1,659 @@ +/* + * LAME MP3 encoder for DirectShow + * Basic property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include "iaudioprops.h" +#include "mpegac.h" +#include "resource.h" +#include "PropPage.h" +#include "Reg.h" + +// strings to appear in comboboxes +const char * szBitRateString[2][14] = { + { + "32 kbps","40 kbps","48 kbps","56 kbps", + "64 kbps","80 kbps","96 kbps","112 kbps", + "128 kbps","160 kbps","192 kbps","224 kbps", + "256 kbps","320 kbps" + }, + { + "8 kbps","16 kbps","24 kbps","32 kbps", + "40 kbps","48 kbps","56 kbps","64 kbps", + "80 kbps","96 kbps","112 kbps","128 kbps", + "144 kbps","160 kbps" + } +}; + +LPCSTR szQualityDesc[10] = { + "High", "High", "High", "High", "High", + "Medium", "Medium", + "Low", "Low", + "Fast mode" +}; + +LPCSTR szVBRqDesc[10] = { + "0 - ~1:4", + "1 - ~1:5", + "2 - ~1:6", + "3 - ~1:7", + "4 - ~1:9", + "5 - ~1:9", + "6 - ~1:10", + "7 - ~1:11", + "8 - ~1:12", + "9 - ~1:14" +}; + +struct SSampleRate { + DWORD dwSampleRate; + LPCSTR lpSampleRate; +}; + +SSampleRate srRates[9] = { + // MPEG-1 + {48000, "48 kHz"}, + {44100, "44.1 kHz"}, + {32000, "32 kHz"}, + + // MPEG-2 + {24000, "24 kHz"}, + {22050, "22.05 kHz"}, + {16000, "16 kHz"}, + + // MPEG-2.5 + {12000, "12 kHz"}, + {11025, "11.025 kHz"}, + { 8000, "8 kHz"} +}; + +//////////////////////////////////////////////////////////////// +// CreateInstance +//////////////////////////////////////////////////////////////// +CUnknown *CMpegAudEncPropertyPage::CreateInstance( LPUNKNOWN punk, HRESULT *phr ) +{ + CMpegAudEncPropertyPage *pNewObject + = new CMpegAudEncPropertyPage( punk, phr ); + + if( pNewObject == NULL ) + *phr = E_OUTOFMEMORY; + + return pNewObject; +} + +//////////////////////////////////////////////////////////////// +// Constructor +//////////////////////////////////////////////////////////////// +CMpegAudEncPropertyPage::CMpegAudEncPropertyPage(LPUNKNOWN punk, HRESULT *phr) + : CBasePropertyPage(NAME("Encoder Property Page"), + punk, IDD_AUDIOENCPROPS, IDS_AUDIO_PROPS_TITLE) + , m_pAEProps(NULL) +{ + ASSERT(phr); + + m_srIdx = 0; + + InitCommonControls(); +} + +// +// OnConnect +// +// Give us the filter to communicate with +HRESULT CMpegAudEncPropertyPage::OnConnect(IUnknown *pUnknown) +{ + ASSERT(m_pAEProps == NULL); + + // Ask the filter for it's control interface + + HRESULT hr = pUnknown->QueryInterface(IID_IAudioEncoderProperties,(void **)&m_pAEProps); + if (FAILED(hr)) + return E_NOINTERFACE; + + ASSERT(m_pAEProps); + + // Get current filter state + m_pAEProps->get_Bitrate(&m_dwBitrate); + m_pAEProps->get_Variable(&m_dwVariable); + m_pAEProps->get_VariableMin(&m_dwMin); + m_pAEProps->get_VariableMax(&m_dwMax); + m_pAEProps->get_Quality(&m_dwQuality); + m_pAEProps->get_VariableQ(&m_dwVBRq); + m_pAEProps->get_SampleRate(&m_dwSampleRate); + m_pAEProps->get_CRCFlag(&m_dwCRC); + m_pAEProps->get_ForceMono(&m_dwForceMono); + m_pAEProps->get_SetDuration(&m_dwSetDuration); + m_pAEProps->get_CopyrightFlag(&m_dwCopyright); + m_pAEProps->get_OriginalFlag(&m_dwOriginal); + + return NOERROR; +} + +// +// OnDisconnect +// +// Release the interface + +HRESULT CMpegAudEncPropertyPage::OnDisconnect() +{ + // Release the interface + if (m_pAEProps == NULL) + return E_UNEXPECTED; + + m_pAEProps->set_Bitrate(m_dwBitrate); + m_pAEProps->set_Variable(m_dwVariable); + m_pAEProps->set_VariableMin(m_dwMin); + m_pAEProps->set_VariableMax(m_dwMax); + m_pAEProps->set_Quality(m_dwQuality); + m_pAEProps->set_VariableQ(m_dwVBRq); + m_pAEProps->set_SampleRate(m_dwSampleRate); + m_pAEProps->set_CRCFlag(m_dwCRC); + m_pAEProps->set_ForceMono(m_dwForceMono); + m_pAEProps->set_SetDuration(m_dwSetDuration); + m_pAEProps->set_CopyrightFlag(m_dwCopyright); + m_pAEProps->set_OriginalFlag(m_dwOriginal); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->Release(); + m_pAEProps = NULL; + + return NOERROR; +} + +// +// OnActivate +// +// Called on dialog creation + +HRESULT CMpegAudEncPropertyPage::OnActivate(void) +{ + InitPropertiesDialog(m_hwnd); + + return NOERROR; +} + +// +// OnDeactivate +// +// Called on dialog destruction + +HRESULT CMpegAudEncPropertyPage::OnDeactivate(void) +{ + return NOERROR; +} + +//////////////////////////////////////////////////////////////// +// OnReceiveMessage - message handler function +//////////////////////////////////////////////////////////////// +BOOL CMpegAudEncPropertyPage::OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch (uMsg) + { + case WM_HSCROLL: + if ((HWND)lParam == m_hwndQuality) + { + int pos = SendMessage(m_hwndQuality, TBM_GETPOS, 0, 0); + if (pos >= 0 && pos < 10) + { + SetDlgItemText(hwnd,IDC_TEXT_QUALITY,szQualityDesc[pos]); + m_pAEProps->set_Quality(pos); + SetDirty(); + } + } + break; + + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_COMBO_CBR: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nBitrate = SendDlgItemMessage(hwnd, IDC_COMBO_CBR, CB_GETCURSEL, 0, 0L); + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + DWORD dwBitrate; + + if (dwSampleRate >= 32000) + { + // Consider MPEG 1 + dwBitrate = dwBitRateValue[0][nBitrate]; + } + else + { + // Consider MPEG 2/2.5 + dwBitrate = dwBitRateValue[1][nBitrate]; + } + + m_pAEProps->set_Bitrate(dwBitrate); + + SetDirty(); + } + break; + + case IDC_COMBO_VBRMIN: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nVariableMin = SendDlgItemMessage(hwnd, IDC_COMBO_VBRMIN, CB_GETCURSEL, 0, 0L); + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + DWORD dwMin; + + if (dwSampleRate >= 32000) + { + // Consider MPEG 1 + dwMin = dwBitRateValue[0][nVariableMin]; + } + else + { + // Consider MPEG 2/2.5 + dwMin = dwBitRateValue[1][nVariableMin]; + } + + m_pAEProps->set_VariableMin(dwMin); + + SetDirty(); + } + break; + + case IDC_COMBO_VBRMAX: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nVariableMax = SendDlgItemMessage(hwnd, IDC_COMBO_VBRMAX, CB_GETCURSEL, 0, 0L); + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + DWORD dwMax; + + if (dwSampleRate >= 32000) + { + // Consider MPEG 1 + dwMax = dwBitRateValue[0][nVariableMax]; + } + else + { + // Consider MPEG 2/2.5 + dwMax = dwBitRateValue[1][nVariableMax]; + } + + m_pAEProps->set_VariableMax(dwMax); + + SetDirty(); + } + break; + + case IDC_COMBO_SAMPLE_RATE: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nSampleRate = SendDlgItemMessage(hwnd, IDC_COMBO_SAMPLE_RATE, CB_GETCURSEL, 0, 0L); + + if (nSampleRate < 0) + nSampleRate = 0; + else if (nSampleRate > 2) + nSampleRate = 2; + + DWORD dwSampleRate = srRates[nSampleRate * 3 + m_srIdx].dwSampleRate; + + m_pAEProps->set_SampleRate(dwSampleRate); + InitPropertiesDialog(hwnd); + SetDirty(); + } + break; + + case IDC_COMBO_VBRq: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nVBRq = SendDlgItemMessage(hwnd, IDC_COMBO_VBRq, CB_GETCURSEL, 0, 0L); + if (nVBRq >=0 && nVBRq <=9) + m_pAEProps->set_VariableQ(nVBRq); + SetDirty(); + } + break; + + case IDC_RADIO_CBR: + case IDC_RADIO_VBR: + m_pAEProps->set_Variable(LOWORD(wParam)-IDC_RADIO_CBR); + SetDirty(); + break; + + case IDC_CHECK_PES: + m_pAEProps->set_PESOutputEnabled(IsDlgButtonChecked(hwnd, IDC_CHECK_PES)); + SetDirty(); + break; + + case IDC_CHECK_COPYRIGHT: + m_pAEProps->set_CopyrightFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_COPYRIGHT)); + SetDirty(); + break; + + case IDC_CHECK_ORIGINAL: + m_pAEProps->set_OriginalFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_ORIGINAL)); + SetDirty(); + break; + + case IDC_CHECK_CRC: + m_pAEProps->set_CRCFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_CRC)); + SetDirty(); + break; + + case IDC_FORCE_MONO: + m_pAEProps->set_ForceMono(IsDlgButtonChecked(hwnd, IDC_FORCE_MONO)); + SetDirty(); + break; + + case IDC_SET_DURATION: + m_pAEProps->set_SetDuration(IsDlgButtonChecked(hwnd, IDC_SET_DURATION)); + SetDirty(); + break; + } + return TRUE; + + case WM_DESTROY: + return TRUE; + + default: + return FALSE; + } + + return TRUE; +} + +// +// OnApplyChanges +// +HRESULT CMpegAudEncPropertyPage::OnApplyChanges() +{ + m_pAEProps->get_Bitrate(&m_dwBitrate); + m_pAEProps->get_Variable(&m_dwVariable); + m_pAEProps->get_VariableMin(&m_dwMin); + m_pAEProps->get_VariableMax(&m_dwMax); + m_pAEProps->get_Quality(&m_dwQuality); + m_pAEProps->get_VariableQ(&m_dwVBRq); + m_pAEProps->get_SampleRate(&m_dwSampleRate); + m_pAEProps->get_CRCFlag(&m_dwCRC); + m_pAEProps->get_ForceMono(&m_dwForceMono); + m_pAEProps->get_SetDuration(&m_dwSetDuration); + m_pAEProps->get_CopyrightFlag(&m_dwCopyright); + m_pAEProps->get_OriginalFlag(&m_dwOriginal); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->ApplyChanges(); + + return S_OK; +} + +// +// Initialize dialogbox controls with proper values +// +void CMpegAudEncPropertyPage::InitPropertiesDialog(HWND hwndParent) +{ + EnableControls(hwndParent, TRUE); + + m_hwndQuality = GetDlgItem(hwndParent,IDC_SLIDER_QUALITY); + DWORD dwQuality; + m_pAEProps->get_Quality(&dwQuality); + SendDlgItemMessage(hwndParent, IDC_SLIDER_QUALITY, TBM_SETRANGE, 1, MAKELONG (2,9)); + SendDlgItemMessage(hwndParent, IDC_SLIDER_QUALITY, TBM_SETPOS, 1, dwQuality); + if (dwQuality>=0 && dwQuality<10) + SetDlgItemText(hwndParent,IDC_TEXT_QUALITY,szQualityDesc[dwQuality]); + + // + // initialize sample rate selection + // + DWORD dwSourceSampleRate; + m_pAEProps->get_SourceSampleRate(&dwSourceSampleRate); + + SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_RESETCONTENT, 0, 0L); + + switch (dwSourceSampleRate) + { + case 48000: + case 24000: + case 12000: + m_srIdx = 0; + break; + + case 32000: + case 16000: + case 8000: + m_srIdx = 2; + break; + + case 44100: + case 22050: + case 11025: + default: + m_srIdx = 1; + } + + for (int i = 0; i < 3; i++) + SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)srRates[i * 3 + m_srIdx].lpSampleRate); + + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + m_pAEProps->set_SampleRate(dwSampleRate); + + int nSR = 0; + while (dwSampleRate != srRates[nSR * 3 + m_srIdx].dwSampleRate && nSR < 3) + { + nSR++; + } + + if (nSR >= 3) + nSR = 0; + + SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_SETCURSEL, nSR, 0); + + DWORD dwChannels; + m_pAEProps->get_SourceChannels(&dwChannels); + + // + //initialize VBRq combo box + // + int k; + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_RESETCONTENT, 0, 0); + for (k = 0; k < 10; k++) + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szVBRqDesc[k]); + DWORD dwVBRq; + m_pAEProps->get_VariableQ(&dwVBRq); + if (dwVBRq<0) + dwVBRq = 0; + if (dwVBRq>9) + dwVBRq = 9; + m_pAEProps->set_VariableQ(dwVBRq); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_SETCURSEL, dwVBRq, 0); + +////////////////////////////////////// +// initialize CBR selection +////////////////////////////////////// + int nSt; + + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_RESETCONTENT, 0, 0); + if (dwSampleRate >= 32000) + { + // If target sampling rate is less than 32000, consider + // MPEG 1 audio + nSt = 0; + for (int i = 0; i < 14; i++) + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][i]); + } + else + { + // Consider MPEG 2 / 2.5 audio + nSt = 1; + for (int i = 0; i < 14 ; i++) + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][i]); + } + + DWORD dwBitrate; + m_pAEProps->get_Bitrate(&dwBitrate); + + int nBitrateSel = 0; + // BitRateValue[][i] is in ascending order + // We use this fact. We also know there are 14 bitrate values available. + // We are going to use the closest possible, so we can limit loop with 13 + while (nBitrateSel < 13 && dwBitRateValue[nSt][nBitrateSel] < dwBitrate) + nBitrateSel++; + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_SETCURSEL, nBitrateSel, 0); + + // check if the specified bitrate is found exactly and correct if not + if (dwBitRateValue[nSt][nBitrateSel] != dwBitrate) + { + dwBitrate = dwBitRateValue[nSt][nBitrateSel]; + // we can change it, because it is independent of any other parameters + // (but depends on some of them!) + m_pAEProps->set_Bitrate(dwBitrate); + } + + // + // Check VBR/CBR radio button + // + DWORD dwVariable; + m_pAEProps->get_Variable(&dwVariable); + CheckRadioButton(hwndParent, IDC_RADIO_CBR, IDC_RADIO_VBR, IDC_RADIO_CBR + dwVariable); + +////////////////////////////////////////////////// +// initialize VBR selection +////////////////////////////////////////////////// + //VBRMIN, VBRMAX + int j, nST; + + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_RESETCONTENT, 0, 0); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_RESETCONTENT, 0, 0); + + if (dwSampleRate >= 32000) + { + nST = 0; + for (j=0; j<14 ;j++) { + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][j]); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][j]); + } + } + else + { + nST = 1; + for (j = 0; j < 14; j++) + { + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][j]); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][j]); + } + } + + DWORD dwMin,dwMax; + m_pAEProps->get_VariableMin(&dwMin); + m_pAEProps->get_VariableMax(&dwMax); + + int nVariableMinSel = 0; + int nVariableMaxSel = 0; + + // BitRateValue[][i] is in ascending order + // We use this fact. We also know there are 14 bitrate values available. + // We are going to use the closest possible, so we can limit loop with 13 + while (nVariableMinSel<13 && dwBitRateValue[nST][nVariableMinSel] < dwMin) + nVariableMinSel++; + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_SETCURSEL, nVariableMinSel, 0); + + while (nVariableMaxSel<13 && dwBitRateValue[nST][nVariableMaxSel] < dwMax) + nVariableMaxSel++; + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_SETCURSEL, nVariableMaxSel, 0); + + + // check if the specified bitrate is found exactly and correct if not + if (dwBitRateValue[nST][nVariableMinSel] != dwMin) + { + dwMin = dwBitRateValue[nST][nVariableMinSel]; + // we can change it, because it is independent of any other parameters + // (but depends on some of them!) + m_pAEProps->set_VariableMin(dwMin); + } + + // check if the specified bitrate is found exactly and correct if not + if (dwBitRateValue[nST][nVariableMaxSel] != dwMax) + { + dwMax = dwBitRateValue[nST][nVariableMaxSel]; + // we can change it, because it is independent of any other parameters + // (but depends on some of them!) + m_pAEProps->set_VariableMax(dwMax); + } + + // + // initialize checkboxes + // + DWORD dwPES; + m_pAEProps->get_PESOutputEnabled(&dwPES); + + dwPES = 0; + CheckDlgButton(hwndParent, IDC_CHECK_PES, dwPES ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwCRC; + m_pAEProps->get_CRCFlag(&dwCRC); + CheckDlgButton(hwndParent, IDC_CHECK_CRC, dwCRC ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwForceMono; + m_pAEProps->get_ForceMono(&dwForceMono); + CheckDlgButton(hwndParent, IDC_FORCE_MONO, dwForceMono ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwSetDuration; + m_pAEProps->get_SetDuration(&dwSetDuration); + CheckDlgButton(hwndParent, IDC_SET_DURATION, dwSetDuration ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwCopyright; + m_pAEProps->get_CopyrightFlag(&dwCopyright); + CheckDlgButton(hwndParent, IDC_CHECK_COPYRIGHT, dwCopyright ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwOriginal; + m_pAEProps->get_OriginalFlag(&dwOriginal); + CheckDlgButton(hwndParent, IDC_CHECK_ORIGINAL, dwOriginal ? BST_CHECKED : BST_UNCHECKED); +} + + +//////////////////////////////////////////////////////////////// +// EnableControls +//////////////////////////////////////////////////////////////// +void CMpegAudEncPropertyPage::EnableControls(HWND hwndParent, bool bEnable) +{ + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_PES), false);//bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_CBR), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_CBR), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_VBR), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_VBRMIN), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_VBRMAX), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_COPYRIGHT), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_ORIGINAL), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_CRC), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_FORCE_MONO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_SET_DURATION), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_SLIDER_QUALITY), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_SAMPLE_RATE), bEnable); +} + +// +// SetDirty +// +// notifies the property page site of changes + +void CMpegAudEncPropertyPage::SetDirty() +{ + m_bDirty = TRUE; + if (m_pPageSite) + m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); +} + diff --git a/lame-3.97/dshow/.svn/text-base/PropPage.h.svn-base b/lame-3.97/dshow/.svn/text-base/PropPage.h.svn-base new file mode 100644 index 0000000..3f1e65d --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/PropPage.h.svn-base @@ -0,0 +1,61 @@ +/* + * LAME MP3 encoder for DirectShow + * Basic property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +class CMpegAudEncPropertyPage : public CBasePropertyPage +{ + +public: + static CUnknown *CreateInstance( LPUNKNOWN punk, HRESULT *phr ); + CMpegAudEncPropertyPage( LPUNKNOWN punk, HRESULT *phr ); + + HRESULT OnConnect(IUnknown *pUnknown); + HRESULT OnDisconnect(); + HRESULT OnActivate(); + HRESULT OnDeactivate(); + HRESULT OnApplyChanges(); + BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + +private: + void InitPropertiesDialog(HWND hwndParent); + void EnableControls(HWND hwndParent, bool bEnable); + void SetDirty(void); + + DWORD m_dwBitrate; //constant bit rate + DWORD m_dwVariable; //flag - whether the variable bit rate set + DWORD m_dwMin; //specify a minimum allowed bitrate + DWORD m_dwMax; //specify a maximum allowed bitrate + DWORD m_dwQuality; //encoding quality + DWORD m_dwVBRq; //VBR quality setting (0=highest quality, 9=lowest) + DWORD m_dwSampleRate; + DWORD m_dwChannelMode; + DWORD m_dwCRC; + DWORD m_dwForceMono; + DWORD m_dwSetDuration; + DWORD m_dwCopyright; + DWORD m_dwOriginal; + + HWND m_hwndQuality; //Slider window handle + + int m_srIdx; + + IAudioEncoderProperties *m_pAEProps; +}; diff --git a/lame-3.97/dshow/.svn/text-base/PropPage_adv.cpp.svn-base b/lame-3.97/dshow/.svn/text-base/PropPage_adv.cpp.svn-base new file mode 100644 index 0000000..ec1b9e7 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/PropPage_adv.cpp.svn-base @@ -0,0 +1,341 @@ +/* + * LAME MP3 encoder for DirectShow + * Advanced property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include "iaudioprops.h" +#include "mpegac.h" +#include "resource.h" +#include "PropPage_adv.h" +#include "Reg.h" + +#define MPG_MD_STEREO 0 +#define MPG_MD_JOINT_STEREO 1 +#define MPG_MD_DUAL_CHANNEL 2 +#define MPG_MD_MONO 3 + +// Strings which apear in comboboxes +const char *chChMode[4] = { + "Mono", + "Standard stereo", + "Joint stereo", + "Dual channel"}; + +//////////////////////////////////////////////////////////////// +// CreateInstance +//////////////////////////////////////////////////////////////// +CUnknown *CMpegAudEncPropertyPageAdv::CreateInstance( LPUNKNOWN punk, HRESULT *phr ) +{ + CMpegAudEncPropertyPageAdv *pNewObject + = new CMpegAudEncPropertyPageAdv( punk, phr ); + + if( pNewObject == NULL ) + *phr = E_OUTOFMEMORY; + + return pNewObject; +} + +//////////////////////////////////////////////////////////////// +// Constructor +//////////////////////////////////////////////////////////////// +CMpegAudEncPropertyPageAdv::CMpegAudEncPropertyPageAdv(LPUNKNOWN punk, HRESULT *phr) : + CBasePropertyPage(NAME("Encoder Advanced Property Page"), punk, IDD_ADVPROPS, IDS_AUDIO_ADVANCED_TITLE), + m_pAEProps(NULL) +{ + ASSERT(phr); + + InitCommonControls(); +} + +// +// OnConnect +// +// Give us the filter to communicate with +HRESULT CMpegAudEncPropertyPageAdv::OnConnect(IUnknown *pUnknown) +{ + ASSERT(m_pAEProps == NULL); + + // Ask the filter for it's control interface + + HRESULT hr = pUnknown->QueryInterface(IID_IAudioEncoderProperties,(void **)&m_pAEProps); + if (FAILED(hr)) + return E_NOINTERFACE; + + ASSERT(m_pAEProps); + + // Get current filter state +// m_pAEProps->LoadAudioEncoderPropertiesFromRegistry(); + + m_pAEProps->get_EnforceVBRmin(&m_dwEnforceVBRmin); + m_pAEProps->get_VoiceMode(&m_dwVoiceMode); + m_pAEProps->get_KeepAllFreq(&m_dwKeepAllFreq); + m_pAEProps->get_StrictISO(&m_dwStrictISO); + m_pAEProps->get_NoShortBlock(&m_dwNoShortBlock); + m_pAEProps->get_XingTag(&m_dwXingTag); + m_pAEProps->get_ChannelMode(&m_dwChannelMode); + m_pAEProps->get_ForceMS(&m_dwForceMS); + m_pAEProps->get_ModeFixed(&m_dwModeFixed); + + return NOERROR; +} + +// +// OnDisconnect +// +// Release the interface + +HRESULT CMpegAudEncPropertyPageAdv::OnDisconnect() +{ + // Release the interface + if (m_pAEProps == NULL) + return E_UNEXPECTED; + + m_pAEProps->set_EnforceVBRmin(m_dwEnforceVBRmin); + m_pAEProps->set_VoiceMode(m_dwVoiceMode); + m_pAEProps->set_KeepAllFreq(m_dwKeepAllFreq); + m_pAEProps->set_StrictISO(m_dwStrictISO); + m_pAEProps->set_NoShortBlock(m_dwNoShortBlock); + m_pAEProps->set_XingTag(m_dwXingTag); + m_pAEProps->set_ChannelMode(m_dwChannelMode); + m_pAEProps->set_ForceMS(m_dwForceMS); + m_pAEProps->set_ModeFixed(m_dwModeFixed); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->Release(); + m_pAEProps = NULL; + + return NOERROR; +} + +// +// OnActivate +// +// Called on dialog creation + +HRESULT CMpegAudEncPropertyPageAdv::OnActivate(void) +{ + InitPropertiesDialog(m_hwnd); + + return NOERROR; +} + +// +// OnDeactivate +// +// Called on dialog destruction + +HRESULT CMpegAudEncPropertyPageAdv::OnDeactivate(void) +{ + return NOERROR; +} + +//////////////////////////////////////////////////////////////// +// OnReceiveMessage - message handler function +//////////////////////////////////////////////////////////////// +BOOL CMpegAudEncPropertyPageAdv::OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch (uMsg) + { + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_RADIO_STEREO: + case IDC_RADIO_JSTEREO: + case IDC_RADIO_DUAL: + case IDC_RADIO_MONO: + { + + DWORD dwChannelMode = LOWORD(wParam) - IDC_RADIO_STEREO; + CheckRadioButton(hwnd, IDC_RADIO_STEREO, IDC_RADIO_MONO, LOWORD(wParam)); + + if (dwChannelMode == MPG_MD_JOINT_STEREO) + EnableWindow(GetDlgItem(hwnd,IDC_CHECK_FORCE_MS),TRUE); + else + EnableWindow(GetDlgItem(hwnd,IDC_CHECK_FORCE_MS),FALSE); + + m_pAEProps->set_ChannelMode(dwChannelMode); + SetDirty(); + } + break; + + case IDC_CHECK_ENFORCE_MIN: + m_pAEProps->set_EnforceVBRmin(IsDlgButtonChecked(hwnd, IDC_CHECK_ENFORCE_MIN)); + SetDirty(); + break; + + case IDC_CHECK_VOICE: + m_pAEProps->set_VoiceMode(IsDlgButtonChecked(hwnd, IDC_CHECK_VOICE)); + SetDirty(); + break; + + case IDC_CHECK_KEEP_ALL_FREQ: + m_pAEProps->set_KeepAllFreq(IsDlgButtonChecked(hwnd, IDC_CHECK_KEEP_ALL_FREQ)); + SetDirty(); + break; + + case IDC_CHECK_STRICT_ISO: + m_pAEProps->set_StrictISO(IsDlgButtonChecked(hwnd, IDC_CHECK_STRICT_ISO)); + SetDirty(); + break; + + case IDC_CHECK_DISABLE_SHORT_BLOCK: + m_pAEProps->set_NoShortBlock(IsDlgButtonChecked(hwnd, IDC_CHECK_DISABLE_SHORT_BLOCK)); + SetDirty(); + break; + + case IDC_CHECK_XING_TAG: + m_pAEProps->set_XingTag(IsDlgButtonChecked(hwnd, IDC_CHECK_XING_TAG)); + SetDirty(); + break; + + case IDC_CHECK_FORCE_MS: + m_pAEProps->set_ForceMS(IsDlgButtonChecked(hwnd, IDC_CHECK_FORCE_MS)); + SetDirty(); + break; + + case IDC_CHECK_MODE_FIXED: + m_pAEProps->set_ModeFixed(IsDlgButtonChecked(hwnd, IDC_CHECK_MODE_FIXED)); + SetDirty(); + break; + } + + return TRUE; + + case WM_DESTROY: + return TRUE; + + default: + return FALSE; + } + + return TRUE; +} + +// +// OnApplyChanges +// +HRESULT CMpegAudEncPropertyPageAdv::OnApplyChanges() +{ + m_pAEProps->get_EnforceVBRmin(&m_dwEnforceVBRmin); + m_pAEProps->get_VoiceMode(&m_dwVoiceMode); + m_pAEProps->get_KeepAllFreq(&m_dwKeepAllFreq); + m_pAEProps->get_StrictISO(&m_dwStrictISO); + m_pAEProps->get_ChannelMode(&m_dwChannelMode); + m_pAEProps->get_ForceMS(&m_dwForceMS); + m_pAEProps->get_NoShortBlock(&m_dwNoShortBlock); + m_pAEProps->get_XingTag(&m_dwXingTag); + m_pAEProps->get_ModeFixed(&m_dwModeFixed); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->ApplyChanges(); + + return S_OK; +} + +// +// Initialize dialogbox controls with proper values +// +void CMpegAudEncPropertyPageAdv::InitPropertiesDialog(HWND hwndParent) +{ + EnableControls(hwndParent, TRUE); + + // + // initialize radio bottons + // + DWORD dwChannelMode; + m_pAEProps->get_ChannelMode(&dwChannelMode); + CheckRadioButton(hwndParent, IDC_RADIO_STEREO, IDC_RADIO_MONO, IDC_RADIO_STEREO + dwChannelMode); + + if (dwChannelMode == MPG_MD_JOINT_STEREO) + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), TRUE); + else + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), FALSE); + + // + // initialize checkboxes + // + DWORD dwEnforceVBRmin; + m_pAEProps->get_EnforceVBRmin(&dwEnforceVBRmin); + CheckDlgButton(hwndParent, IDC_CHECK_ENFORCE_MIN, dwEnforceVBRmin ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwVoiceMode; + m_pAEProps->get_VoiceMode(&dwVoiceMode); + CheckDlgButton(hwndParent, IDC_CHECK_VOICE, dwVoiceMode ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwKeepAllFreq; + m_pAEProps->get_KeepAllFreq(&dwKeepAllFreq); + CheckDlgButton(hwndParent, IDC_CHECK_KEEP_ALL_FREQ, dwKeepAllFreq ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwStrictISO; + m_pAEProps->get_StrictISO(&dwStrictISO); + CheckDlgButton(hwndParent, IDC_CHECK_STRICT_ISO, dwStrictISO ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwNoShortBlock; + m_pAEProps->get_NoShortBlock(&dwNoShortBlock); + CheckDlgButton(hwndParent, IDC_CHECK_DISABLE_SHORT_BLOCK, dwNoShortBlock ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwXingEnabled; + m_pAEProps->get_XingTag(&dwXingEnabled); + CheckDlgButton(hwndParent, IDC_CHECK_XING_TAG, dwXingEnabled ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwForceMS; + m_pAEProps->get_ForceMS(&dwForceMS); + CheckDlgButton(hwndParent, IDC_CHECK_FORCE_MS, dwForceMS ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwModeFixed; + m_pAEProps->get_ModeFixed(&dwModeFixed); + CheckDlgButton(hwndParent, IDC_CHECK_MODE_FIXED, dwModeFixed ? BST_CHECKED : BST_UNCHECKED); +} + + +//////////////////////////////////////////////////////////////// +// EnableControls +//////////////////////////////////////////////////////////////// +void CMpegAudEncPropertyPageAdv::EnableControls(HWND hwndParent, bool bEnable) +{ + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_ENFORCE_MIN), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_STEREO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_JSTEREO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_DUAL), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_MONO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_VOICE), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_KEEP_ALL_FREQ), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_STRICT_ISO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_DISABLE_SHORT_BLOCK), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_XING_TAG), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_MODE_FIXED), bEnable); +} + +// +// SetDirty +// +// notifies the property page site of changes + +void CMpegAudEncPropertyPageAdv::SetDirty() +{ + m_bDirty = TRUE; + if (m_pPageSite) + m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); +} + diff --git a/lame-3.97/dshow/.svn/text-base/PropPage_adv.h.svn-base b/lame-3.97/dshow/.svn/text-base/PropPage_adv.h.svn-base new file mode 100644 index 0000000..f311786 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/PropPage_adv.h.svn-base @@ -0,0 +1,53 @@ +/* + * LAME MP3 encoder for DirectShow + * Advanced property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +class CMpegAudEncPropertyPageAdv : public CBasePropertyPage +{ + +public: + static CUnknown *CreateInstance( LPUNKNOWN punk, HRESULT *phr ); + CMpegAudEncPropertyPageAdv( LPUNKNOWN punk, HRESULT *phr ); + + HRESULT OnConnect(IUnknown *pUnknown); + HRESULT OnDisconnect(); + HRESULT OnActivate(); + HRESULT OnDeactivate(); + HRESULT OnApplyChanges(); + BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + +private: + void InitPropertiesDialog(HWND hwndParent); + void EnableControls(HWND hwndParent, bool bEnable); + void SetDirty(void); + + DWORD m_dwEnforceVBRmin; + DWORD m_dwVoiceMode; + DWORD m_dwKeepAllFreq; + DWORD m_dwStrictISO; + DWORD m_dwNoShortBlock; + DWORD m_dwXingTag; + DWORD m_dwChannelMode; + DWORD m_dwForceMS; + DWORD m_dwModeFixed; + + IAudioEncoderProperties *m_pAEProps; +}; diff --git a/lame-3.97/dshow/.svn/text-base/Property.rc.svn-base b/lame-3.97/dshow/.svn/text-base/Property.rc.svn-base new file mode 100644 index 0000000..45ef3e0 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/Property.rc.svn-base @@ -0,0 +1,294 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Russian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +#ifdef _WIN32 +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +#pragma code_page(1251) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_AUDIOENCPROPS DIALOGEX 0, 0, 228, 121 +STYLE WS_CHILD | WS_VISIBLE +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + CONTROL "Constant Bit Rate",IDC_RADIO_CBR,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,4,2,71,10 + CONTROL "Variable Bit Rate",IDC_RADIO_VBR,"Button", + BS_AUTORADIOBUTTON,4,31,69,10 + COMBOBOX IDC_COMBO_CBR,52,14,76,92,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_GROUP | WS_TABSTOP + COMBOBOX IDC_COMBO_VBRMIN,52,44,76,85,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO_VBRMAX,52,62,76,86,CBS_DROPDOWNLIST | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP, + WS_EX_TRANSPARENT + CONTROL "Copyright",IDC_CHECK_COPYRIGHT,"Button",BS_AUTOCHECKBOX | + WS_GROUP | WS_TABSTOP,151,39,45,10 + CONTROL "Original/Copy",IDC_CHECK_ORIGINAL,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,151,51,59,10 + CONTROL "CRC Protected",IDC_CHECK_CRC,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,151,63,63,10 + CONTROL "Slider1",IDC_SLIDER_QUALITY,"msctls_trackbar32", + TBS_BOTH | TBS_NOTICKS | WS_GROUP | WS_TABSTOP,66,101,96, + 15 + LTEXT "Kbit/s",IDC_STATIC,4,16,22,8 + CONTROL "Min",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,4, + 46,13,11 + LTEXT "Max",IDC_STATIC,4,64,16,11 + LTEXT "Encoding Quality",IDC_STATIC,4,105,54,8,NOT WS_GROUP + LTEXT "0",IDC_TEXT_QUALITY,170,104,47,10 + COMBOBOX IDC_COMBO_SAMPLE_RATE,151,14,59,104,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + CONTROL "Target Sample Rate",IDC_STATIC,"Static", + SS_LEFTNOWORDWRAP | NOT WS_VISIBLE | WS_GROUP,152,2,66,8 + COMBOBOX IDC_COMBO_VBRq,52,80,76,90,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + LTEXT "VBR Quality",IDC_STATIC,4,82,40,8 + CONTROL "Force Mono",IDC_FORCE_MONO,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,151,75,54,10 + CONTROL "Set Duration",IDC_SET_DURATION,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,151,88,55,10 +END + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""resource.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_AUDIOENCPROPS, DIALOG + BEGIN + RIGHTMARGIN, 223 + BOTTOMMARGIN, 118 + END +END +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,54,50801 + PRODUCTVERSION 1,0,54,50801 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "LAME DirectShow Filter\0" + VALUE "CompanyName", "\0" + VALUE "FileDescription", "LAME Audio Encoder\0" + VALUE "FileVersion", "1, 0, 54, 50801\0" + VALUE "InternalName", "LAME Audio Encoder\0" + VALUE "LegalCopyright", "Copyright � 2005 Elecard Ltd.\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "lame.ax\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "LAME Audio Encoder\0" + VALUE "ProductVersion", "1, 0, 54, 50801\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_AUDIO_PROPS_TITLE "MPEG Layer III Audio Encoder" + IDS_AUDIO_ADVANCED_TITLE "Advanced" + IDS_ABOUT "About" +END + +#endif // Russian resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ADVPROPS DIALOG DISCARDABLE 0, 0, 228, 121 +STYLE WS_CHILD | WS_VISIBLE +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Mono",IDC_RADIO_MONO,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,109,93,34,10 + CONTROL "Standard stereo",IDC_RADIO_STEREO,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,36,67,11 + CONTROL "Joint stereo",IDC_RADIO_JSTEREO,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,51,60,10 + GROUPBOX "Mode Selection",IDC_STATIC,103,26,118,82,BS_CENTER | + WS_GROUP + CONTROL "Strictly enforce VBR min bitrate",IDC_CHECK_ENFORCE_MIN, + "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,5,113, + 10 + CONTROL "Voice encoding mode",IDC_CHECK_VOICE,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,21,85,10 + CONTROL "Keep all frequencies",IDC_CHECK_KEEP_ALL_FREQ,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,37,80,10 + CONTROL "Strict ISO compliance",IDC_CHECK_STRICT_ISO,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,53,84,10 + CONTROL "Disable short blocks",IDC_CHECK_DISABLE_SHORT_BLOCK, + "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,69,79, + 10 + CONTROL "Enable Xing VBR tag",IDC_CHECK_XING_TAG,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,85,83,10 + CONTROL "Dual channel",IDC_RADIO_DUAL,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,79,58,10 + CONTROL "Forced mid / side stereo",IDC_CHECK_FORCE_MS,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,122,65,92,10 + CONTROL "Mode Fixed",IDC_CHECK_MODE_FIXED,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,101,53,10 +END + +IDD_ABOUT DIALOG DISCARDABLE 0, 0, 228, 121 +STYLE WS_CHILD +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "LAME Ain't MP3 Encoder (3.96 engine)",IDC_LAME_VER,7,8, + 208,8 + LTEXT "LAME Project Homepage: http://www.mp3dev.org", + IDC_LAME_URL,7,19,192,8 + EDITTEXT IDC_LAME_LA,7,31,214,83,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_ADVPROPS, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 221 + TOPMARGIN, 5 + BOTTOMMARGIN, 114 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 221 + TOPMARGIN, 7 + BOTTOMMARGIN, 114 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON2 ICON DISCARDABLE "elogo.ico" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lame-3.97/dshow/.svn/text-base/README.svn-base b/lame-3.97/dshow/.svn/text-base/README.svn-base new file mode 100644 index 0000000..04a0db1 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/README.svn-base @@ -0,0 +1,23 @@ +LAME DirectShow Filter +Version 1.0 + +Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + +This is a Microsoft(R) DirectShow(R) wrapper filter for +LAME library. It adds DirectShow interface to the +library and two property pages so you can tune some +encoding parameters. + +We are interested to here from you, when you use this package +as part of another project. + +Filter Homepage http://www.elecard.com/products/layer3encoder.shtml + +Vitaly Ivanov vitaly.ivanov@elecard.net.ru +Peter Gubanov peter@elecard.net.ru + +COPYING + +You may use this source under GPL terms! + + diff --git a/lame-3.97/dshow/.svn/text-base/REG.CPP.svn-base b/lame-3.97/dshow/.svn/text-base/REG.CPP.svn-base new file mode 100644 index 0000000..c85d130 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/REG.CPP.svn-base @@ -0,0 +1,286 @@ +/* + * LAME MP3 encoder for DirectShow + * Registry calls handling class + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "reg.h" + + +CRegKey::CRegKey(void) +{ + m_hRootKey = NULL; + m_name[0] = 0; + m_hKey = NULL; +} + + +CRegKey::CRegKey(HKEY rt, PTSTR pName) +{ + m_hRootKey = rt; + m_hKey = NULL; + if(pName) + { + lstrcpy(m_name, pName); + Open(m_hRootKey, m_name); + } + else + m_name[0] = 0; +} + + +CRegKey::~CRegKey(void) +{ + Close(); +} + + + +BOOL CRegKey::Open(HKEY rootKey, PTSTR pName) +{ + if(m_hKey) + Close(); + + m_hRootKey = rootKey; + if(pName) + { + lstrcpy(m_name, pName); + if(RegOpenKeyEx(m_hRootKey, m_name, 0, KEY_ALL_ACCESS, &m_hKey) != ERROR_SUCCESS) + { + m_hKey = NULL; + return FALSE; + } + } + else + { + m_name[0] = 0; + m_hKey = m_hRootKey; + } + + return TRUE; +} + + +BOOL CRegKey::Create(HKEY rootKey, PTSTR pName) +{ + if(m_hKey) + Close(); + + m_hRootKey = rootKey; + if(pName) + { + lstrcpy(m_name, pName); + if(RegCreateKeyEx(m_hRootKey, pName, NULL, + TEXT(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, + &m_hKey, NULL) != ERROR_SUCCESS) + { + + m_hKey = NULL; + return FALSE; + } + } + else + { + m_name[0] = 0; + } + m_hRootKey = m_hKey; + + return TRUE; +} + + +BOOL CRegKey::Open(PTSTR an) +{ + TCHAR achName[MAX_PATH]; + + if(m_hKey) + Close(); + + lstrcpy(achName, m_name); + if(an) + lstrcat(achName, an); + + if(RegOpenKeyEx(m_hRootKey, achName, 0, KEY_ALL_ACCESS, &m_hKey) != ERROR_SUCCESS) + { + m_hKey = NULL; + return FALSE; + } + + return TRUE; +} + + +BOOL CRegKey::Create(PTSTR an) +{ + TCHAR achName[MAX_PATH]; + + if(m_hKey) + Close(); + + lstrcpy(achName, m_name); + if(an) + lstrcat(achName, an); + + if(RegCreateKeyEx(m_hRootKey, achName, NULL, + TEXT(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, + &m_hKey, NULL) != ERROR_SUCCESS) + { + + m_hKey = NULL; + return FALSE; + } + + return TRUE; +} + + +BOOL CRegKey::Close(void) +{ + if(m_hKey && m_hKey != m_hRootKey) + RegCloseKey(m_hKey); + + m_hKey = 0; + return TRUE; +} + +BOOL CRegKey::getFlag(PTSTR valuename, BOOL bDefault) +{ + if(!m_hKey) + return bDefault; + + DWORD cbData; + DWORD dwData; + DWORD dwType; + + cbData = sizeof(dwData); + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS) + { + if(dwType == REG_DWORD) + return (dwData) ? TRUE : FALSE; + } + return bDefault; +} + + +void CRegKey::setFlag(PTSTR valuename, BOOL bValue, BOOL bDefault) +{ + if(getFlag(valuename, bDefault) == bValue ) + return; + + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&bValue, sizeof(bValue)); +} + + +void CRegKey::setFlag(PTSTR valuename, BOOL bValue) +{ + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&bValue, sizeof(bValue)); +} + + +DWORD CRegKey::getDWORD(PTSTR valuename, DWORD bDefault) +{ + DWORD dwData; + DWORD cbData; + DWORD dwType; + + if(!m_hKey) + return bDefault; + + cbData = sizeof(dwData); + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS) { + if(dwType == REG_DWORD) + { + return (UINT)dwData; + } + } + + return bDefault; +} + + +void CRegKey::setDWORD(PTSTR valuename, DWORD dwValue, DWORD dwDefault) +{ + DWORD dwData = dwValue; + + if(getDWORD(valuename, dwDefault) == dwValue) + return; + + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&dwData, sizeof(dwData)); +} + + +void CRegKey::setDWORD(PTSTR valuename, DWORD dwValue) +{ + DWORD dwData = dwValue; + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&dwData, sizeof(dwData)); +} + + +DWORD CRegKey::getString(PTSTR valuename, PTSTR pDefault, PTSTR pResult, int cbSize) +{ + DWORD dwType; + + cbSize *= sizeof(TCHAR); // for unicode strings + + if(m_hKey) + { + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (LPBYTE)pResult, (LPDWORD)&cbSize) == ERROR_SUCCESS) + { + if(dwType == REG_SZ) + { + return(cbSize - 1); + } + } + } + lstrcpy(pResult, pDefault); + return lstrlen(pDefault); +} + + +void CRegKey::setString(PTSTR valuename, PTSTR pData) +{ + RegSetValueEx(m_hKey, valuename, 0, REG_SZ, (LPBYTE)pData, (lstrlen(pData) + 1)*sizeof(TCHAR)); +} + + +DWORD CRegKey::getBinary(PTSTR valuename, PVOID pDefault, PVOID pResult, int cbSize) +{ + DWORD dwType; + + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (LPBYTE)pResult, (LPDWORD)&cbSize) == ERROR_SUCCESS) + { + if(dwType == REG_BINARY) + { + return cbSize; + } + } + + memmove(pResult, pDefault, cbSize); + return cbSize; +} + + +DWORD CRegKey::setBinary(PTSTR valuename, PVOID pData, int cbSize) +{ + RegSetValueEx(m_hKey, valuename, 0, REG_BINARY, (LPBYTE)pData, cbSize); + return cbSize; +} + diff --git a/lame-3.97/dshow/.svn/text-base/REG.H.svn-base b/lame-3.97/dshow/.svn/text-base/REG.H.svn-base new file mode 100644 index 0000000..7aea47f --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/REG.H.svn-base @@ -0,0 +1,90 @@ +/* + * LAME MP3 encoder for DirectShow + * Registry calls handling class + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __REG__ +#define __REG__ + +class CRegKey +{ +protected: + TCHAR m_name[MAX_PATH]; + HKEY m_hKey; + HKEY m_hRootKey; +public: + CRegKey(void); + CRegKey(HKEY rootKey, PTSTR pName); + ~CRegKey(void); + + BOOL Open(HKEY rootKey, PTSTR pName); + BOOL Create(HKEY rootKey, PTSTR pName); + BOOL Open(PTSTR an = NULL); + BOOL Create(PTSTR an = NULL); + BOOL Close(void); + + operator HKEY () const { return m_hKey; }; + + BOOL getFlag(PTSTR valuename, BOOL bDefault); + void setFlag(PTSTR valuename, BOOL bValue, BOOL bDefault); + void setFlag(PTSTR valuename, BOOL bValue); + DWORD getDWORD(PTSTR valuename, DWORD bDefault); + void setDWORD(PTSTR valuename, DWORD dwValue); + void setDWORD(PTSTR valuename, DWORD dwValue, DWORD dwDefault); + DWORD getString(PTSTR valuename, PTSTR pDefault, PTSTR pResult, int cbSize); + void setString(PTSTR valuename, PTSTR pData); + DWORD getBinary(PTSTR valuename, PVOID pDefault, PVOID pResult, int cbSize); + DWORD setBinary(PTSTR valuename, PVOID pData, int cbSize); +}; + +class CRegEnumKey +{ +public: + CRegEnumKey(HKEY hKey) + { + m_hKey = hKey; + m_dwIndex = 0; + } + + ~CRegEnumKey() + { + } + + LONG Next(LPTSTR pszStr, DWORD cbName) + { + FILETIME ftLastWriteTime; + LONG lRet = RegEnumKeyEx(m_hKey, m_dwIndex, pszStr, + &cbName, NULL, NULL, NULL, &ftLastWriteTime); + + m_dwIndex++; + return lRet; + } + + + void Reset(void) + { + m_dwIndex = 0; + } +protected: + HKEY m_hKey; + DWORD m_dwIndex; +}; + +#endif // __REG__ diff --git a/lame-3.97/dshow/.svn/text-base/UIDS.H.svn-base b/lame-3.97/dshow/.svn/text-base/UIDS.H.svn-base new file mode 100644 index 0000000..8e92631 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/UIDS.H.svn-base @@ -0,0 +1,41 @@ +/* + * LAME MP3 encoder for DirectShow + * CLSIDs of the filter and property pages + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +// {b8d27088-df5f-4b7c-98dc-0e91a1696286} +DEFINE_GUID(CLSID_LAMEDShowFilter, +0xb8d27088, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); + + +// {b8d27089-df5f-4b7c-98dc-0e91a1696286} +DEFINE_GUID(CLSID_LAMEDShow_PropertyPage, +0xb8d27089, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); + +// {b8d2708a-df5f-4b7c-98dc-0e91a1696286} +DEFINE_GUID(CLSID_LAMEDShow_PropertyPageAdv, +0xb8d2708a, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); + +// {FE69EDD1-04CB-11d5-994A-000021D1FE2F} +DEFINE_GUID(CLSID_LAMEDShow_About, +0xfe69edd1, 0xf4cb, 0x11d5, 0x99, 0x4a, 0x0, 0x0, 0x21, 0xd1, 0xfe, 0x2f); + +DEFINE_GUID(MEDIASUBTYPE_MP3, +0x00000055, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); \ No newline at end of file diff --git a/lame-3.97/dshow/.svn/text-base/aboutprp.cpp.svn-base b/lame-3.97/dshow/.svn/text-base/aboutprp.cpp.svn-base new file mode 100644 index 0000000..6297ed1 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/aboutprp.cpp.svn-base @@ -0,0 +1,194 @@ +/* + * LAME MP3 encoder for DirectShow + * About property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include +#include "iaudioprops.h" +#include "aboutprp.h" +#include "mpegac.h" +#include "resource.h" +#include "Reg.h" + + +// ------------------------------------------------------------------------- +// CMAEAbout +// ------------------------------------------------------------------------- + + +CHAR lpszText[] = "This library is free software; you can redistribute it \r\n" + "and/or modify it under the terms of the GNU \r\n" + "Library General Public License\r\n" + "as published by the Free Software Foundation;\r\n" + "either version 2 of the License,\r\n" + "or (at your option) any later version.\r\n" + "\r\n" + "This library is distributed in the hope that it will be useful,\r\n" + "but WITHOUT ANY WARRANTY;\r\n" + "without even the implied warranty of MERCHANTABILITY or \r\n" + "FITNESS FOR A PARTICULAR PURPOSE. See the GNU \r\n" + "Library General Public License for more details.\r\n" + "\r\n" + "You should have received a copy of the GNU\r\n" + "Library General Public License\r\n" + "along with this library; if not, write to the\r\n" + "Free Software Foundation,\r\n" + "Inc., 59 Temple Place - Suite 330,\r\n" + "Boston, MA 02111-1307, USA.\r\n"; + +// +// CreateInstance +// +CUnknown * WINAPI CMAEAbout::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr) +{ + CUnknown *punk = new CMAEAbout(lpunk, phr); + if (punk == NULL) { + *phr = E_OUTOFMEMORY; + } + + return punk; +} + + +// +// Constructor +// +// Creaete a Property page object for the MPEG options +CMAEAbout::CMAEAbout(LPUNKNOWN lpunk, HRESULT *phr) + : CBasePropertyPage(NAME("About LAME Ain't MP3 Encoder"), lpunk, + IDD_ABOUT,IDS_ABOUT) + , m_fWindowInactive(TRUE) +{ + ASSERT(phr); + +// InitCommonControls(); +} + +// +// OnConnect +// +// Give us the filter to communicate with + +HRESULT CMAEAbout::OnConnect(IUnknown *pUnknown) +{ + return NOERROR; +} + + +// +// OnDisconnect +// +// Release the interface + +HRESULT CMAEAbout::OnDisconnect() +{ + // Release the interface + + return NOERROR; +} + + +// +// OnActivate +// +// Called on dialog creation + +HRESULT CMAEAbout::OnActivate(void) +{ + // Add text to the window. + m_fWindowInactive = FALSE; + SendDlgItemMessage(m_hwnd, IDC_LAME_LA, WM_SETTEXT, 0, (LPARAM)lpszText); + + + CHAR strbuf[250]; + + sprintf(strbuf, "LAME Ain't MP3 Encoder (%s)", get_lame_version()); + SendDlgItemMessage(m_hwnd, IDC_LAME_VER, WM_SETTEXT, 0, (LPARAM)strbuf); + + sprintf(strbuf, "LAME Project Homepage: %s", get_lame_url()); + SendDlgItemMessage(m_hwnd, IDC_LAME_URL, WM_SETTEXT, 0, (LPARAM)strbuf); + + return NOERROR; +} + +// +// OnDeactivate +// +// Called on dialog destruction + +HRESULT CMAEAbout::OnDeactivate(void) +{ + m_fWindowInactive = TRUE; + return NOERROR; +} + + +// +// OnApplyChanges +// +// User pressed the Apply button, remember the current settings + +HRESULT CMAEAbout::OnApplyChanges(void) +{ + return NOERROR; +} + + +// +// OnReceiveMessages +// +// Handles the messages for our property window + +BOOL CMAEAbout::OnReceiveMessage( HWND hwnd + , UINT uMsg + , WPARAM wParam + , LPARAM lParam) +{ + if (m_fWindowInactive) + return FALSE; + + switch (uMsg) + { + case WM_DESTROY: + return TRUE; + + default: + return FALSE; + } + + return TRUE; +} + +// +// SetDirty +// +// notifies the property page site of changes + +void CMAEAbout::SetDirty() +{ + m_bDirty = TRUE; + + if (m_pPageSite) + m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); +} + diff --git a/lame-3.97/dshow/.svn/text-base/aboutprp.h.svn-base b/lame-3.97/dshow/.svn/text-base/aboutprp.h.svn-base new file mode 100644 index 0000000..664b50e --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/aboutprp.h.svn-base @@ -0,0 +1,41 @@ +/* + * LAME MP3 encoder for DirectShow + * About property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +class CMAEAbout: public CBasePropertyPage +{ +public: + + CMAEAbout(LPUNKNOWN lpUnk, HRESULT *phr); + static CUnknown * WINAPI CreateInstance(LPUNKNOWN lpunk, HRESULT *phr); + + HRESULT OnActivate(); + HRESULT OnConnect(IUnknown *pUnknown); + HRESULT OnDisconnect(); + HRESULT OnDeactivate(); + HRESULT OnApplyChanges(); + BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + +private: + void SetDirty(void); + + BOOL m_fWindowInactive; +}; diff --git a/lame-3.97/dshow/.svn/text-base/dshow.dsp.svn-base b/lame-3.97/dshow/.svn/text-base/dshow.dsp.svn-base new file mode 100644 index 0000000..7d81bf5 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/dshow.dsp.svn-base @@ -0,0 +1,187 @@ +# Microsoft Developer Studio Project File - Name="LAME DShow" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=LAME DShow - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "dshow.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "dshow.mak" CFG="LAME DShow - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "LAME DShow - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "LAME DShow - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "LAME DShow - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir ".\Release" +# PROP BASE Intermediate_Dir ".\Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir ".\Release" +# PROP Intermediate_Dir ".\Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /Gz /MD /W3 /GX /O2 /D "NDEBUG" /D "INC_OLE2" /D "STRICT" /D WINVER=0x0400 /D _X86_=1 /D "_WINDOWS" /D "WIN32" /D "STDC_HEADERS" /FR /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /D "NDEBUG" /mktyplib203 /win32 +# SUBTRACT MTL /nologo +# ADD BASE RSC /l 0x419 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# SUBTRACT BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 strmbase.lib msvcrt.lib libcmt.lib vfw32.lib winmm.lib kernel32.lib advapi32.lib version.lib largeint.lib Comdlg32.lib user32.lib gdi32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib quartz.lib measure.lib /base:"0x1c400000" /version:0.3 /entry:"DllEntryPoint@12" /subsystem:windows /dll /pdb:none /machine:I386 /nodefaultlib /out:".\lame.ax" +# SUBTRACT LINK32 /nologo + +!ELSEIF "$(CFG)" == "LAME DShow - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir ".\Debug" +# PROP BASE Intermediate_Dir ".\Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir ".\Debug" +# PROP Intermediate_Dir ".\Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /Gz /MDd /W3 /GX /ZI /Od /D "DEBUG" /D "INC_OLE2" /D WINVER=0x0400 /D _X86_=1 /D "STRICT" /D "_WINDOWS" /D "WIN32" /D "STDC_HEADERS" /FR /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 strmbasD.lib msvcrtd.lib libcmt.lib vfw32.lib winmm.lib kernel32.lib advapi32.lib version.lib largeint.lib Comdlg32.lib user32.lib gdi32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib quartz.lib measure.lib /nologo /base:"0x1c400000" /entry:"DllEntryPoint@12" /subsystem:windows /dll /incremental:no /debug /machine:I386 /nodefaultlib /out:".\lame.ax" +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "LAME DShow - Win32 Release" +# Name "LAME DShow - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\aboutprp.cpp +# End Source File +# Begin Source File + +SOURCE=.\Encoder.cpp +# End Source File +# Begin Source File + +SOURCE=.\Mpegac.cpp +# End Source File +# Begin Source File + +SOURCE=.\Mpegac.def +# End Source File +# Begin Source File + +SOURCE=.\Property.rc +# End Source File +# Begin Source File + +SOURCE=.\PropPage.cpp +# End Source File +# Begin Source File + +SOURCE=.\PropPage_adv.cpp +# End Source File +# Begin Source File + +SOURCE=.\REG.CPP +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" +# Begin Source File + +SOURCE=.\aboutprp.h +# End Source File +# Begin Source File + +SOURCE=.\Encoder.h +# End Source File +# Begin Source File + +SOURCE=.\iaudioprops.h +# End Source File +# Begin Source File + +SOURCE=..\include\lame.h +# End Source File +# Begin Source File + +SOURCE=.\Mpegac.h +# End Source File +# Begin Source File + +SOURCE=.\PropPage.h +# End Source File +# Begin Source File + +SOURCE=.\PropPage_adv.h +# End Source File +# Begin Source File + +SOURCE=.\reg.h +# End Source File +# Begin Source File + +SOURCE=.\resource.h +# End Source File +# Begin Source File + +SOURCE=.\uids.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\elogo.ico +# End Source File +# End Group +# Begin Source File + +SOURCE=.\README +# End Source File +# End Target +# End Project diff --git a/lame-3.97/dshow/.svn/text-base/dshow.dsw.svn-base b/lame-3.97/dshow/.svn/text-base/dshow.dsw.svn-base new file mode 100644 index 0000000..49d2e4f --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/dshow.dsw.svn-base @@ -0,0 +1,59 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "LAME DShow"=.\dshow.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "libmp3lame"=..\libmp3lame\libmp3lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "mpglib"=..\mpglib\mpglib_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/dshow/.svn/text-base/elogo.ico.svn-base b/lame-3.97/dshow/.svn/text-base/elogo.ico.svn-base new file mode 100644 index 0000000..1eae73d --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/elogo.ico.svn-base Binary files differ diff --git a/lame-3.97/dshow/.svn/text-base/iaudioprops.h.svn-base b/lame-3.97/dshow/.svn/text-base/iaudioprops.h.svn-base new file mode 100644 index 0000000..1532245 --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/iaudioprops.h.svn-base @@ -0,0 +1,263 @@ +/* + * LAME MP3 encoder for DirectShow + * Interface definition + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +// A custom interface to allow the user to modify audio +// encoder properties +#ifndef __IAUDIOPROPERTIES__ +#define __IAUDIOPROPERTIES__ +#ifdef __cplusplus +extern "C" { +#endif + // {ca7e9ef0-1cbe-11d3-8d29-00a0c94bbfee} + DEFINE_GUID(IID_IAudioEncoderProperties, + 0xca7e9ef0, 0x1cbe, 0x11d3, 0x8d, 0x29, 0x00, 0xa0, 0xc9, 0x4b, 0xbf, 0xee); + // + // Configuring MPEG audio encoder parameters with unspecified + // input stream type may lead to misbehaviour and confusing + // results. In most cases the specified parameters will be + // overridden by defaults for the input media type. + // To archive proper results use this interface on the + // audio encoder filter with input pin connected to the valid + // source. + // + DECLARE_INTERFACE_(IAudioEncoderProperties, IUnknown) + { + // Is PES output enabled? Return TRUE or FALSE + STDMETHOD(get_PESOutputEnabled) (THIS_ + DWORD *dwEnabled + ) PURE; + // Enable/disable PES output + STDMETHOD(set_PESOutputEnabled) (THIS_ + DWORD dwEnabled + ) PURE; + // Get target compression bitrate in Kbits/s + STDMETHOD(get_Bitrate) (THIS_ + DWORD *dwBitrate + ) PURE; + // Set target compression bitrate in Kbits/s + // Not all numbers available! See spec for details! + STDMETHOD(set_Bitrate) (THIS_ + DWORD dwBitrate + ) PURE; + // Get variable bitrate flag + STDMETHOD(get_Variable) (THIS_ + DWORD *dwVariable + ) PURE; + // Set variable bitrate flag + STDMETHOD(set_Variable) (THIS_ + DWORD dwVariable + ) PURE; + // Get variable bitrate in Kbits/s + STDMETHOD(get_VariableMin) (THIS_ + DWORD *dwmin + ) PURE; + // Set variable bitrate in Kbits/s + // Not all numbers available! See spec for details! + STDMETHOD(set_VariableMin) (THIS_ + DWORD dwmin + ) PURE; + // Get variable bitrate in Kbits/s + STDMETHOD(get_VariableMax) (THIS_ + DWORD *dwmax + ) PURE; + // Set variable bitrate in Kbits/s + // Not all numbers available! See spec for details! + STDMETHOD(set_VariableMax) (THIS_ + DWORD dwmax + ) PURE; + // Get compression quality + STDMETHOD(get_Quality) (THIS_ + DWORD *dwQuality + ) PURE; + // Set compression quality + // Not all numbers available! See spec for details! + STDMETHOD(set_Quality) (THIS_ + DWORD dwQuality + ) PURE; + // Get VBR quality + STDMETHOD(get_VariableQ) (THIS_ + DWORD *dwVBRq + ) PURE; + // Set VBR quality + // Not all numbers available! See spec for details! + STDMETHOD(set_VariableQ) (THIS_ + DWORD dwVBRq + ) PURE; + // Get source sample rate. Return E_FAIL if input pin + // in not connected. + STDMETHOD(get_SourceSampleRate) (THIS_ + DWORD *dwSampleRate + ) PURE; + // Get source number of channels. Return E_FAIL if + // input pin is not connected. + STDMETHOD(get_SourceChannels) (THIS_ + DWORD *dwChannels + ) PURE; + // Get sample rate for compressed audio bitstream + STDMETHOD(get_SampleRate) (THIS_ + DWORD *dwSampleRate + ) PURE; + // Set sample rate. See genaudio spec for details + STDMETHOD(set_SampleRate) (THIS_ + DWORD dwSampleRate + ) PURE; + // Get channel mode. See genaudio.h for details + STDMETHOD(get_ChannelMode) (THIS_ + DWORD *dwChannelMode + ) PURE; + // Set channel mode + STDMETHOD(set_ChannelMode) (THIS_ + DWORD dwChannelMode + ) PURE; + // Is CRC enabled? + STDMETHOD(get_CRCFlag) (THIS_ + DWORD *dwFlag + ) PURE; + // Enable/disable CRC + STDMETHOD(set_CRCFlag) (THIS_ + DWORD dwFlag + ) PURE; + // Force mono + STDMETHOD(get_ForceMono) (THIS_ + DWORD *dwFlag + ) PURE; + // Force mono + STDMETHOD(set_ForceMono) (THIS_ + DWORD dwFlag + ) PURE; + // Set duration + STDMETHOD(get_SetDuration) (THIS_ + DWORD *dwFlag + ) PURE; + // Set duration + STDMETHOD(set_SetDuration) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'original' flag + STDMETHOD(get_OriginalFlag) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_OriginalFlag) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'copyright' flag + STDMETHOD(get_CopyrightFlag) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_CopyrightFlag) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Enforce VBR Minimum bitrate' flag + STDMETHOD(get_EnforceVBRmin) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_EnforceVBRmin) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Voice' flag + STDMETHOD(get_VoiceMode) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_VoiceMode) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Keep All Frequencies' flag + STDMETHOD(get_KeepAllFreq) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_KeepAllFreq) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Strict ISO complience' flag + STDMETHOD(get_StrictISO) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_StrictISO) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Disable short block' flag + STDMETHOD(get_NoShortBlock) (THIS_ + DWORD *dwDisable + ) PURE; + STDMETHOD(set_NoShortBlock) (THIS_ + DWORD dwDisable + ) PURE; + // Control 'Xing VBR Tag' flag + STDMETHOD(get_XingTag) (THIS_ + DWORD *dwXingTag + ) PURE; + STDMETHOD(set_XingTag) (THIS_ + DWORD dwXingTag + ) PURE; + // Control 'Forced mid/ side stereo' flag + STDMETHOD(get_ForceMS) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_ForceMS) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'ModeFixed' flag + STDMETHOD(get_ModeFixed) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_ModeFixed) (THIS_ + DWORD dwFlag + ) PURE; + + //Receive the block of encoder + //configuration parametres + STDMETHOD(get_ParameterBlockSize) (THIS_ + BYTE *pcBlock, DWORD *pdwSize + ) PURE; + // Set encoder configuration parametres + STDMETHOD(set_ParameterBlockSize) (THIS_ + BYTE *pcBlock, DWORD dwSize + ) PURE; + // Set default audio encoder parameters depending + // on current input stream type + STDMETHOD(DefaultAudioEncoderProperties) (THIS_ + ) PURE; + // By default the modified properties are not saved to + // registry immediately, so the filter needs to be + // forced to do this. Omitting this steps may lead to + // misbehavior and confusing results. + STDMETHOD(LoadAudioEncoderPropertiesFromRegistry) (THIS_ + ) PURE; + STDMETHOD(SaveAudioEncoderPropertiesToRegistry) (THIS_ + ) PURE; + // Determine, whether the filter can be configured. If this + // functions returs E_FAIL, input format hasn't been + // specified and filter behavior unpredicated. If S_OK, + // the filter could be configured with correct values. + STDMETHOD(InputTypeDefined) (THIS_ + ) PURE; + // Reconnects output pin (crucial for Fraunhofer MPEG Layer-3 Decoder) + STDMETHOD(ApplyChanges) (THIS_ + ) PURE; + }; +#ifdef __cplusplus +} +#endif +#endif // __IAUDIOPROPERTIES__ + + + diff --git a/lame-3.97/dshow/.svn/text-base/resource.h.svn-base b/lame-3.97/dshow/.svn/text-base/resource.h.svn-base new file mode 100644 index 0000000..06b219b --- /dev/null +++ b/lame-3.97/dshow/.svn/text-base/resource.h.svn-base @@ -0,0 +1,57 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Property.rc +// +#define IDS_AUDIO_PROPS_TITLE 3 +#define IDS_AUDIO_ADVANCED_TITLE 4 +#define IDS_ABOUT 5 +#define IDD_AUDIOENCPROPS 100 +#define IDD_ADVPROPS 102 +#define IDD_ABOUT 105 +#define IDI_ICON2 106 +#define IDC_COMBO_CBR 1004 +#define IDC_CHECK_COPYRIGHT 1007 +#define IDC_CHECK_ORIGINAL 1008 +#define IDC_CHECK_CRC 1009 +#define IDC_CHECK_PES 1010 +#define IDC_COMBO_VBRMIN 1013 +#define IDC_TITLE_TEXT 1016 +#define IDC_RADIO_CBR 1019 +#define IDC_RADIO_VBR 1020 +#define IDC_SLIDER_QUALITY 1021 +#define IDC_TEXT_QUALITY 1023 +#define IDC_COMBO_VBRMAX 1024 +#define IDC_COMBO_SAMPLE_RATE 1025 +#define IDC_COMBO_VBRq 1026 +#define IDC_RADIO_STEREO 1027 +#define IDC_RADIO_JSTEREO 1028 +#define IDC_RADIO_DUAL 1029 +#define IDC_RADIO_MONO 1030 +#define IDC_CHECK_ENFORCE_MIN 1031 +#define IDC_CHECK_VOICE 1032 +#define IDC_CHECK_KEEP_ALL_FREQ 1033 +#define IDC_CHECK_STRICT_ISO 1034 +#define IDC_CHECK_DISABLE_SHORT_BLOCK 1035 +#define IDC_CHECK_XING_TAG 1036 +#define IDC_CHECK_FORCE_MS 1037 +#define IDC_CHECK_MODE_FIXED 1038 +#define IDC_RICHEDIT_LAME 1039 +#define IDC_EDIT_TEXT 1044 +#define IDC_LAME_LA 1044 +#define IDC_FORCE_MONO 1045 +#define IDC_LAME_VER 1046 +#define IDC_LAME_URL 1047 +#define IDC_SET_DURATION 1048 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 107 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1049 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/lame-3.97/dshow/Encoder.cpp b/lame-3.97/dshow/Encoder.cpp new file mode 100644 index 0000000..8ae8693 --- /dev/null +++ b/lame-3.97/dshow/Encoder.cpp @@ -0,0 +1,429 @@ +/* + * LAME MP3 encoder for DirectShow + * LAME encoder wrapper + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include "Encoder.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// +CEncoder::CEncoder() : + m_bInpuTypeSet(FALSE), + m_bOutpuTypeSet(FALSE), + m_bFinished(FALSE), + m_outOffset(0), + m_outReadOffset(0), + m_frameCount(0), + pgf(NULL) +{ + m_outFrameBuf = new unsigned char[OUT_BUFFER_SIZE]; +} + +CEncoder::~CEncoder() +{ + Close(); + + if (m_outFrameBuf) + delete [] m_outFrameBuf; +} + +////////////////////////////////////////////////////////////////////// +// SetInputType - check if given input type is supported +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::SetInputType(LPWAVEFORMATEX lpwfex, bool bJustCheck) +{ + CAutoLock l(&m_lock); + + if (lpwfex->wFormatTag == WAVE_FORMAT_PCM) + { + if (lpwfex->nChannels == 1 || lpwfex->nChannels == 2) + { + if (lpwfex->nSamplesPerSec == 48000 || + lpwfex->nSamplesPerSec == 44100 || + lpwfex->nSamplesPerSec == 32000 || + lpwfex->nSamplesPerSec == 24000 || + lpwfex->nSamplesPerSec == 22050 || + lpwfex->nSamplesPerSec == 16000 || + lpwfex->nSamplesPerSec == 12000 || + lpwfex->nSamplesPerSec == 11025 || + lpwfex->nSamplesPerSec == 8000) + { + if (lpwfex->wBitsPerSample == 16) + { + if (!bJustCheck) + { + memcpy(&m_wfex, lpwfex, sizeof(WAVEFORMATEX)); + m_bInpuTypeSet = true; + } + + return S_OK; + } + } + } + } + + if (!bJustCheck) + m_bInpuTypeSet = false; + + return E_INVALIDARG; +} + +////////////////////////////////////////////////////////////////////// +// SetOutputType - try to initialize encoder with given output type +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::SetOutputType(MPEG_ENCODER_CONFIG &mabsi) +{ + CAutoLock l(&m_lock); + + m_mabsi = mabsi; + m_bOutpuTypeSet = true; + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// SetDefaultOutputType - sets default MPEG audio properties according +// to input type +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::SetDefaultOutputType(LPWAVEFORMATEX lpwfex) +{ + CAutoLock l(&m_lock); + + if(lpwfex->nChannels == 1 || m_mabsi.bForceMono) + m_mabsi.ChMode = MONO; + + if((lpwfex->nSamplesPerSec < m_mabsi.dwSampleRate) || (lpwfex->nSamplesPerSec % m_mabsi.dwSampleRate != 0)) + m_mabsi.dwSampleRate = lpwfex->nSamplesPerSec; + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// Init - initialized or reiniyialized encoder SDK with given input +// and output settings +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::Init() +{ + CAutoLock l(&m_lock); + + m_outOffset = 0; + m_outReadOffset = 0; + + m_bFinished = FALSE; + + m_frameCount = 0; + + if (!pgf) + { + if (!m_bInpuTypeSet || !m_bOutpuTypeSet) + return E_UNEXPECTED; + + // Init Lame library + // note: newer, safer interface which doesn't + // allow or require direct access to 'gf' struct is being written + // see the file 'API' included with LAME. + if (pgf = lame_init()) + { + pgf->num_channels = m_wfex.nChannels; + + pgf->in_samplerate = m_wfex.nSamplesPerSec; + pgf->out_samplerate = m_mabsi.dwSampleRate; + if ((pgf->out_samplerate >= 32000) && (m_mabsi.dwBitrate < 32)) + pgf->brate = 32; + else + pgf->brate = m_mabsi.dwBitrate; + + pgf->VBR = m_mabsi.vmVariable; + pgf->VBR_min_bitrate_kbps = m_mabsi.dwVariableMin; + pgf->VBR_max_bitrate_kbps = m_mabsi.dwVariableMax; + + pgf->copyright = m_mabsi.bCopyright; + pgf->original = m_mabsi.bOriginal; + pgf->error_protection = m_mabsi.bCRCProtect; + + pgf->bWriteVbrTag = m_mabsi.dwXingTag; + pgf->strict_ISO = m_mabsi.dwStrictISO; + pgf->VBR_hard_min = m_mabsi.dwEnforceVBRmin; + + if (pgf->num_channels == 2 && !m_mabsi.bForceMono) + { + int act_br = pgf->VBR ? pgf->VBR_min_bitrate_kbps + pgf->VBR_max_bitrate_kbps / 2 : pgf->brate; + + // Disabled. It's for user's consideration now + //int rel = pgf->out_samplerate / (act_br + 1); + //pgf->mode = rel < 200 ? m_mabsi.ChMode : JOINT_STEREO; + + pgf->mode = m_mabsi.ChMode; + } + else + pgf->mode = MONO; + + if (pgf->mode == JOINT_STEREO) + pgf->force_ms = m_mabsi.dwForceMS; + else + pgf->force_ms = 0; + + pgf->mode_fixed = m_mabsi.dwModeFixed; + + if (m_mabsi.dwVoiceMode != 0) + { + pgf->lowpassfreq = 12000; + pgf->VBR_max_bitrate_kbps = 160; + } + + if (m_mabsi.dwKeepAllFreq != 0) + { + pgf->lowpassfreq = -1; + pgf->highpassfreq = -1; + } + + pgf->quality = m_mabsi.dwQuality; + pgf->VBR_q = m_mabsi.dwVBRq; + + lame_init_params(pgf); + + // encoder delay compensation + { + short * start_padd = (short *)calloc(48, pgf->num_channels * sizeof(short)); + + if (pgf->num_channels == 2) + lame_encode_buffer_interleaved(pgf, start_padd, 48, m_outFrameBuf, OUT_BUFFER_SIZE); + else + lame_encode_buffer(pgf, start_padd, start_padd, 48, m_outFrameBuf, OUT_BUFFER_SIZE); + + free(start_padd); + } + + return S_OK; + } + + return E_FAIL; + } + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// Close - closes encoder +////////////////////////////////////////////////////////////////////// +HRESULT CEncoder::Close() +{ + CAutoLock l(&m_lock); + + if (pgf) + { + lame_close(pgf); + pgf = NULL; + } + + return S_OK; +} + +////////////////////////////////////////////////////////////////////// +// Encode - encodes data placed on pdata and returns +// the number of processed bytes +////////////////////////////////////////////////////////////////////// +int CEncoder::Encode(const short * pdata, int data_size) +{ + CAutoLock l(&m_lock); + + if (!pgf || !m_outFrameBuf || !pdata || data_size < 0 || (data_size & (sizeof(short) - 1))) + return -1; + + // some data left in the buffer, shift to start + if (m_outReadOffset > 0) + { + if (m_outOffset > m_outReadOffset) + memmove(m_outFrameBuf, m_outFrameBuf + m_outReadOffset, m_outOffset - m_outReadOffset); + + m_outOffset -= m_outReadOffset; + } + + m_outReadOffset = 0; + + + + m_bFinished = FALSE; + + int bytes_processed = 0; + + while (1) + { + int nsamples = (data_size - bytes_processed) / (sizeof(short) * pgf->num_channels); + + if (nsamples <= 0) + break; + + if (nsamples > 1152) + nsamples = 1152; + + if (m_outOffset >= OUT_BUFFER_MAX) + break; + + int out_bytes = 0; + + if (pgf->num_channels == 2) + out_bytes = lame_encode_buffer_interleaved( + pgf, + (short *)(pdata + (bytes_processed / sizeof(short))), + nsamples, + m_outFrameBuf + m_outOffset, + OUT_BUFFER_SIZE - m_outOffset); + else + out_bytes = lame_encode_buffer( + pgf, + pdata + (bytes_processed / sizeof(short)), + pdata + (bytes_processed / sizeof(short)), + nsamples, + m_outFrameBuf + m_outOffset, + OUT_BUFFER_SIZE - m_outOffset); + + if (out_bytes < 0) + return -1; + + m_outOffset += out_bytes; + bytes_processed += nsamples * pgf->num_channels * sizeof(short); + } + + return bytes_processed; +} + +// +// Finsh - flush the buffered samples +// +HRESULT CEncoder::Finish() +{ + CAutoLock l(&m_lock); + + if (!pgf || !m_outFrameBuf || (m_outOffset >= OUT_BUFFER_MAX)) + return E_FAIL; + + m_outOffset += lame_encode_flush(pgf, m_outFrameBuf + m_outOffset, OUT_BUFFER_SIZE - m_outOffset); + + m_bFinished = TRUE; + + return S_OK; +} + + +int getFrameLength(const unsigned char * pdata) +{ + if (!pdata || pdata[0] != 0xff || (pdata[1] & 0xe0) != 0xe0) + return -1; + + const int sample_rate_tab[4][4] = + { + {11025,12000,8000,1}, + {1,1,1,1}, + {22050,24000,16000,1}, + {44100,48000,32000,1} + }; + +#define MPEG_VERSION_RESERVED 1 +#define MPEG_VERSION_1 3 + +#define LAYER_III 1 + +#define BITRATE_FREE 0 +#define BITRATE_RESERVED 15 + +#define SRATE_RESERVED 3 + +#define EMPHASIS_RESERVED 2 + + int version_id = (pdata[1] & 0x18) >> 3; + int layer = (pdata[1] & 0x06) >> 1; + int bitrate_id = (pdata[2] & 0xF0) >> 4; + int sample_rate_id = (pdata[2] & 0x0C) >> 2; + int padding = (pdata[2] & 0x02) >> 1; + int emphasis = pdata[3] & 0x03; + + if (version_id != MPEG_VERSION_RESERVED && + layer == LAYER_III && + bitrate_id != BITRATE_FREE && + bitrate_id != BITRATE_RESERVED && + sample_rate_id != SRATE_RESERVED && + emphasis != EMPHASIS_RESERVED) + { + int spf = (version_id == MPEG_VERSION_1) ? 1152 : 576; + int sample_rate = sample_rate_tab[version_id][sample_rate_id]; + int bitrate = dwBitRateValue[version_id != MPEG_VERSION_1][bitrate_id - 1] * 1000; + + return (bitrate * spf) / (8 * sample_rate) + padding; + } + + return -1; +} + + +int CEncoder::GetFrame(const unsigned char ** pframe) +{ + if (!pgf || !m_outFrameBuf || !pframe) + return -1; + + while ((m_outOffset - m_outReadOffset) > 4) + { + int frame_length = getFrameLength(m_outFrameBuf + m_outReadOffset); + + if (frame_length < 0) + { + m_outReadOffset++; + } + else if (frame_length <= (m_outOffset - m_outReadOffset)) + { + *pframe = m_outFrameBuf + m_outReadOffset; + m_outReadOffset += frame_length; + + m_frameCount++; + + // don't deliver the first and the last frames + if (m_frameCount != 1 && !(m_bFinished && (m_outOffset - m_outReadOffset) < 5)) + return frame_length; + } + else + break; + } + + return 0; +} + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/dshow/Encoder.h b/lame-3.97/dshow/Encoder.h new file mode 100644 index 0000000..461ee69 --- /dev/null +++ b/lame-3.97/dshow/Encoder.h @@ -0,0 +1,170 @@ +/* + * LAME MP3 encoder for DirectShow + * LAME encoder wrapper + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if !defined(AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_) +#define AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +#include "..\include\lame.h" +#include "..\libmp3lame\lame_global_flags.h" +/* +#define INPUT_BUFF_SIZE 65536 * 2 +#define OUTPUT_BUFF_SIZE 16384 +#define FRAME_SIZE_LAYER3 1152 +*/ + +const unsigned int dwBitRateValue[2][14] = +{ + {32,40,48,56,64,80,96,112,128,160,192,224,256,320}, // MPEG-1 + {8,16,24,32,40,48,56,64,80,96,112,128,144,160} // MPEG-2/2.5 +}; +/* +#define STEREO 0 +#define JOINT_STEREO 1 +#define DUAL_CHANNEL 2 +#define MONO 3 +*/ + +#define OUT_BUFFER_SIZE 16384 +#define OUT_BUFFER_GUARD 8192 +#define OUT_BUFFER_MAX (OUT_BUFFER_SIZE - OUT_BUFFER_GUARD) + +typedef struct { + DWORD dwSampleRate; //SF in Hz + DWORD dwBitrate; //BR in bit per second + vbr_mode vmVariable; + DWORD dwVariableMin; //specify a minimum allowed bitrate + DWORD dwVariableMax; //specify a maximum allowed bitrate + DWORD dwQuality; //Encoding quality + DWORD dwVBRq; // VBR quality setting (0=highest quality, 9=lowest) + long lLayer; //Layer: 1 or 2 + + MPEG_mode ChMode; //Channel coding mode: see doc + DWORD dwForceMS; + + DWORD bCRCProtect; //Is CRC protection activated? + DWORD bForceMono; + DWORD bSetDuration; + DWORD bCopyright; //Is the stream protected by copyright? + DWORD bOriginal; //Is the stream an original? + + DWORD dwPES; // PES header. Obsolete + + DWORD dwEnforceVBRmin; + DWORD dwVoiceMode; + DWORD dwKeepAllFreq; + DWORD dwStrictISO; + DWORD dwNoShortBlock; + DWORD dwXingTag; + DWORD dwModeFixed; +} MPEG_ENCODER_CONFIG; + + +class CEncoder +{ +public: + + CEncoder(); + virtual ~CEncoder(); + + // Initialize encoder with PCM stream properties + HRESULT SetInputType(LPWAVEFORMATEX lpwfex, bool bJustCheck = FALSE); // returns E_INVALIDARG if not supported + // GetInputType - returns current input type + HRESULT GetInputType(WAVEFORMATEX *pwfex) + { + if(m_bInpuTypeSet) + { + memcpy(pwfex, &m_wfex, sizeof(WAVEFORMATEX)); + return S_OK; + } + else + return E_UNEXPECTED; + } + + // Set MPEG audio parameters + HRESULT SetOutputType(MPEG_ENCODER_CONFIG &mabsi); // returns E_INVALIDARG if not supported or + // not compatible with input type + // Return current MPEG audio settings + HRESULT GetOutputType(MPEG_ENCODER_CONFIG* pmabsi) + { + if (m_bOutpuTypeSet) + { + memcpy(pmabsi, &m_mabsi, sizeof(MPEG_ENCODER_CONFIG)); + return S_OK; + } + else + return E_UNEXPECTED; + } + + // Set if output stream is a PES. Obsolete + void SetPES(bool bPES) + { + m_mabsi.dwPES = false;//bPES; + } + // Is output stream a PES. Obsolete + BOOL IsPES() const + { + return (BOOL)m_mabsi.dwPES; + } + + // Initialize encoder SDK + HRESULT Init(); + // Close encoder SDK + HRESULT Close(); + + // Encode media sample data + int Encode(const short * pdata, int data_size); + int GetFrame(const unsigned char ** pframe); + + HRESULT Finish(); + + +protected: + HRESULT SetDefaultOutputType(LPWAVEFORMATEX lpwfex); + + // Input media type + WAVEFORMATEX m_wfex; + + // Output media type + MPEG_ENCODER_CONFIG m_mabsi; + + // Compressor private data + lame_global_flags * pgf; + + // Compressor miscelaneous state + BOOL m_bInpuTypeSet; + BOOL m_bOutpuTypeSet; + + BOOL m_bFinished; + int m_frameCount; + + unsigned char * m_outFrameBuf; + int m_outOffset; + int m_outReadOffset; + + CCritSec m_lock; +}; + +#endif // !defined(AFX_VITECENCODER_H__40DC8A44_B937_11D2_A381_A2FD7C37FA15__INCLUDED_) diff --git a/lame-3.97/dshow/Makefile.am b/lame-3.97/dshow/Makefile.am new file mode 100644 index 0000000..7ae0a9e --- /dev/null +++ b/lame-3.97/dshow/Makefile.am @@ -0,0 +1,27 @@ +## $Id: Makefile.am,v 1.5 2001/02/18 12:11:10 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + Encoder.cpp \ + Encoder.h \ + Mpegac.cpp \ + Mpegac.def \ + Mpegac.h \ + PropPage.cpp \ + PropPage.h \ + PropPage_adv.cpp \ + PropPage_adv.h \ + Property.rc \ + README \ + REG.CPP \ + REG.H \ + UIDS.H \ + aboutprp.cpp \ + aboutprp.h \ + dshow.dsp \ + dshow.dsw \ + elogo.ico \ + iaudioprops.h \ + resource.h + diff --git a/lame-3.97/dshow/Makefile.in b/lame-3.97/dshow/Makefile.in new file mode 100644 index 0000000..6349277 --- /dev/null +++ b/lame-3.97/dshow/Makefile.in @@ -0,0 +1,370 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = dshow +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + Encoder.cpp \ + Encoder.h \ + Mpegac.cpp \ + Mpegac.def \ + Mpegac.h \ + PropPage.cpp \ + PropPage.h \ + PropPage_adv.cpp \ + PropPage_adv.h \ + Property.rc \ + README \ + REG.CPP \ + REG.H \ + UIDS.H \ + aboutprp.cpp \ + aboutprp.h \ + dshow.dsp \ + dshow.dsw \ + elogo.ico \ + iaudioprops.h \ + resource.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign dshow/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign dshow/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/dshow/Mpegac.cpp b/lame-3.97/dshow/Mpegac.cpp new file mode 100644 index 0000000..a036fc3 --- /dev/null +++ b/lame-3.97/dshow/Mpegac.cpp @@ -0,0 +1,1408 @@ +/* + * LAME MP3 encoder for DirectShow + * DirectShow filter implementation + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +//#include +#include "uids.h" +#include "iaudioprops.h" +#include "mpegac.h" +#include "resource.h" + +#include "PropPage.h" +#include "PropPage_adv.h" +#include "aboutprp.h" + +#include "Encoder.h" +#include "Reg.h" + +#ifndef _INC_MMREG +#include +#endif + +// default parameters +#define DEFAULT_LAYER 3 +#define DEFAULT_STEREO_MODE JOINT_STEREO +#define DEFAULT_FORCE_MS 0 +#define DEFAULT_MODE_FIXED 0 +#define DEFAULT_ENFORCE_MIN 0 +#define DEFAULT_VOICE 0 +#define DEFAULT_KEEP_ALL_FREQ 0 +#define DEFAULT_STRICT_ISO 0 +#define DEFAULT_DISABLE_SHORT_BLOCK 0 +#define DEFAULT_XING_TAG 0 +#define DEFAULT_SAMPLE_RATE 44100 +#define DEFAULT_BITRATE 128 +#define DEFAULT_VARIABLE 0 +#define DEFAULT_CRC 0 +#define DEFAULT_FORCE_MONO 0 +#define DEFAULT_SET_DURATION 1 +#define DEFAULT_COPYRIGHT 0 +#define DEFAULT_ORIGINAL 0 +#define DEFAULT_VARIABLEMIN 80 +#define DEFAULT_VARIABLEMAX 160 +#define DEFAULT_ENCODING_QUALITY 5 +#define DEFAULT_VBR_QUALITY 4 +#define DEFAULT_PES 0 + + +/* Registration setup stuff */ +// Setup data + +AMOVIESETUP_MEDIATYPE sudMpgInputType[] = +{ + { &MEDIATYPE_Audio, &MEDIASUBTYPE_PCM } +}; +AMOVIESETUP_MEDIATYPE sudMpgOutputType[] = +{ + { &MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG1AudioPayload }, + { &MEDIATYPE_Audio, &MEDIASUBTYPE_MPEG2_AUDIO }, +}; + +AMOVIESETUP_PIN sudMpgPins[3] = +{ + { L"PCM Input", + FALSE, // bRendered + FALSE, // bOutput + FALSE, // bZero + FALSE, // bMany + &CLSID_NULL, // clsConnectsToFilter + NULL, // ConnectsToPin + NUMELMS(sudMpgInputType), // Number of media types + sudMpgInputType + }, + { L"MPEG Output", + FALSE, // bRendered + TRUE, // bOutput + FALSE, // bZero + FALSE, // bMany + &CLSID_NULL, // clsConnectsToFilter + NULL, // ConnectsToPin + NUMELMS(sudMpgOutputType), // Number of media types + sudMpgOutputType + } +}; + +AMOVIESETUP_FILTER sudMpgAEnc = +{ + &CLSID_LAMEDShowFilter, + L"LAME Audio Encoder", + MERIT_SW_COMPRESSOR, // Don't use us for real! + NUMELMS(sudMpgPins), // 3 pins + sudMpgPins +}; + +/*****************************************************************************/ +// COM Global table of objects in this dll +CFactoryTemplate g_Templates[] = +{ + { L"LAME Audio Encoder", &CLSID_LAMEDShowFilter, CMpegAudEnc::CreateInstance, NULL, &sudMpgAEnc }, + { L"LAME Audio Encoder Property Page", &CLSID_LAMEDShow_PropertyPage, CMpegAudEncPropertyPage::CreateInstance}, + { L"LAME Audio Encoder Property Page", &CLSID_LAMEDShow_PropertyPageAdv, CMpegAudEncPropertyPageAdv::CreateInstance}, + { L"LAME Audio Encoder About", &CLSID_LAMEDShow_About, CMAEAbout::CreateInstance} +}; +// Count of objects listed in g_cTemplates +int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]); + +CUnknown *CMpegAudEnc::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr) +{ + CUnknown *punk = new CMpegAudEnc(lpunk, phr); + if (punk == NULL) + *phr = E_OUTOFMEMORY; + return punk; +} + +CMpegAudEnc::CMpegAudEnc(LPUNKNOWN lpunk, HRESULT *phr) + : CTransformFilter(NAME("LAME Audio Encoder"), lpunk, + CLSID_LAMEDShowFilter), + CPersistStream(lpunk, phr) +{ + MPEG_ENCODER_CONFIG mec; + ReadPresetSettings(&mec); + m_Encoder.SetOutputType(mec); + + m_hasFinished = TRUE; +} + +CMpegAudEnc::~CMpegAudEnc(void) +{ +} + +LPAMOVIESETUP_FILTER CMpegAudEnc::GetSetupData() +{ + return &sudMpgAEnc; +} + + +HRESULT CMpegAudEnc::Receive(IMediaSample * pSample) +{ + CAutoLock lock(&m_cs); + + if (!pSample) + return S_OK; + + BYTE * pSourceBuffer = NULL; + + if (pSample->GetPointer(&pSourceBuffer) != S_OK || !pSourceBuffer) + return S_OK; + + long sample_size = pSample->GetActualDataLength(); + + REFERENCE_TIME rtStart, rtStop; + BOOL gotValidTime = (pSample->GetTime(&rtStart, &rtStop) != VFW_E_SAMPLE_TIME_NOT_SET); + + if (sample_size <= 0 || pSourceBuffer == NULL || m_hasFinished || (gotValidTime && rtStart < 0)) + return S_OK; + + if (gotValidTime) + { + if (m_rtStreamTime < 0) + { + m_rtStreamTime = rtStart; + m_rtEstimated = rtStart; + } + else + { + resync_point_t * sync = m_sync + m_sync_in_idx; + + // if old sync data is applied and gap is greater than 1 ms + // then make a new synchronization point + if (sync->applied && (rtStart - m_rtEstimated > 10000)) + { + sync->sample = m_samplesIn; + sync->delta = rtStart - m_rtEstimated; + sync->applied = FALSE; + + m_rtEstimated += sync->delta; + + if (m_sync_in_idx < (RESYNC_COUNT - 1)) + m_sync_in_idx++; + else + m_sync_in_idx = 0; + } + } + } + + m_rtEstimated += (LONGLONG)(m_bytesToDuration * sample_size); + m_samplesIn += sample_size / m_bytesPerSample; + + while (sample_size > 0) + { + int bytes_processed = m_Encoder.Encode((short *)pSourceBuffer, sample_size); + + if (bytes_processed <= 0) + return S_OK; + + FlushEncodedSamples(); + + sample_size -= bytes_processed; + pSourceBuffer += bytes_processed; + } + + return S_OK; +} + + + + +HRESULT CMpegAudEnc::FlushEncodedSamples() +{ + IMediaSample * pOutSample = NULL; + BYTE * pDst = NULL; + + if (m_rtStreamTime < 0) + m_rtStreamTime = 0; + + while (1) + { + const unsigned char * pframe = NULL; + int frame_size = m_Encoder.GetFrame(&pframe); + + if (frame_size <= 0 || !pframe) + break; + + if (!m_sync[m_sync_out_idx].applied && m_sync[m_sync_out_idx].sample <= m_samplesOut) + { + m_rtStreamTime += m_sync[m_sync_out_idx].delta; + m_sync[m_sync_out_idx].applied = TRUE; + + if (m_sync_out_idx < (RESYNC_COUNT - 1)) + m_sync_out_idx++; + else + m_sync_out_idx = 0; + } + + REFERENCE_TIME rtStart = m_rtStreamTime; + REFERENCE_TIME rtStop = rtStart + m_rtFrameTime; + + HRESULT hr = m_pOutput->GetDeliveryBuffer(&pOutSample, NULL, NULL, 0); + if (hr == S_OK && pOutSample) + { + hr = pOutSample->GetPointer(&pDst); + if (hr == S_OK && pDst) + { + CopyMemory(pDst, pframe, frame_size); + + pOutSample->SetSyncPoint(TRUE); + pOutSample->SetActualDataLength(frame_size); + pOutSample->SetTime(&rtStart, m_setDuration ? &rtStop : NULL); + + m_pOutput->Deliver(pOutSample); + } + + pOutSample->Release(); + } + + m_samplesOut += m_samplesPerFrame; + m_rtStreamTime = rtStop; + } + + return S_OK; +} + + +//////////////////////////////////////////////////////////////////////////// +// StartStreaming - prepare to receive new data +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::StartStreaming() +{ + WAVEFORMATEX * pwfxOut = (WAVEFORMATEX *) m_pOutput->CurrentMediaType().Format(); + WAVEFORMATEX * pwfxIn = (WAVEFORMATEX *) m_pInput->CurrentMediaType().Format(); + + m_bytesPerSample = pwfxIn->nChannels * sizeof(short); + m_samplesPerFrame = (pwfxOut->nSamplesPerSec >= 32000) ? 1152 : 576; + + m_rtFrameTime = MulDiv(10000000, m_samplesPerFrame, pwfxOut->nSamplesPerSec); + + m_samplesIn = m_samplesOut = 0; + m_rtStreamTime = -1; + + // initialize encoder + m_Encoder.Init(); + + m_hasFinished = FALSE; + + for (int i = 0; i < RESYNC_COUNT; i++) + { + m_sync[i].sample = 0; + m_sync[i].delta = 0; + m_sync[i].applied = TRUE; + } + + m_sync_in_idx = 0; + m_sync_out_idx = 0; + + get_SetDuration(&m_setDuration); + + return S_OK; +} + + +HRESULT CMpegAudEnc::StopStreaming() +{ + m_Encoder.Close(); + + return S_OK; +} + + +//////////////////////////////////////////////////////////////////////////// +// EndOfStream - stop data processing +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::EndOfStream() +{ + CAutoLock lock(&m_cs); + + // Flush data + m_Encoder.Finish(); + FlushEncodedSamples(); + + // Close encoder + m_Encoder.Close(); + + m_hasFinished = TRUE; + + return CTransformFilter::EndOfStream(); +} + + +//////////////////////////////////////////////////////////////////////////// +// BeginFlush - stop data processing +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::BeginFlush() +{ + HRESULT hr = CTransformFilter::BeginFlush(); + + if (SUCCEEDED(hr)) + { + CAutoLock lock(&m_cs); + + DWORD dwDstSize = 0; + + // Flush data + m_Encoder.Finish(); + FlushEncodedSamples(); + + m_rtStreamTime = -1; + } + + return hr; +} + + + +//////////////////////////////////////////////////////////////////////////// +// SetMediaType - called when filters are connecting +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::SetMediaType(PIN_DIRECTION direction, const CMediaType * pmt) +{ + HRESULT hr = S_OK; + + if (*pmt->FormatType() != FORMAT_WaveFormatEx) + return VFW_E_INVALIDMEDIATYPE; + + if (pmt->FormatLength() < sizeof(WAVEFORMATEX)) + return VFW_E_INVALIDMEDIATYPE; + + if (direction == PINDIR_INPUT) + { + DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::SetMediaType(), direction = PINDIR_INPUT"))); + + // Pass input media type to encoder + m_Encoder.SetInputType((LPWAVEFORMATEX)pmt->Format()); + + WAVEFORMATEX * pwfx = (WAVEFORMATEX *)pmt->Format(); + + if (pwfx) + m_bytesToDuration = (float)1.e7 / (float)(pwfx->nChannels * sizeof(short) * pwfx->nSamplesPerSec); + else + m_bytesToDuration = 0.0; + + Reconnect(); + } + else if (direction == PINDIR_OUTPUT) + { + WAVEFORMATEX wfIn; + m_Encoder.GetInputType(&wfIn); + + if (wfIn.nSamplesPerSec % + ((LPWAVEFORMATEX)pmt->Format())->nSamplesPerSec != 0) + return VFW_E_TYPE_NOT_ACCEPTED; + } + + return hr; +} + +//////////////////////////////////////////////////////////////////////////// +// CheckInputType - check if you can support mtIn +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::CheckInputType(const CMediaType* mtIn) +{ + if (*mtIn->Type() == MEDIATYPE_Audio && *mtIn->FormatType() == FORMAT_WaveFormatEx) + if (mtIn->FormatLength() >= sizeof(WAVEFORMATEX)) + if (mtIn->IsTemporalCompressed() == FALSE) + return m_Encoder.SetInputType((LPWAVEFORMATEX)mtIn->Format(), true); + + return E_INVALIDARG; +} + +//////////////////////////////////////////////////////////////////////////// +// CheckTransform - checks if we can support the transform from this input to this output +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut) +{ + if (*mtOut->FormatType() != FORMAT_WaveFormatEx) + return VFW_E_INVALIDMEDIATYPE; + + if (mtOut->FormatLength() < sizeof(WAVEFORMATEX)) + return VFW_E_INVALIDMEDIATYPE; + + MPEG_ENCODER_CONFIG mec; + if(FAILED(m_Encoder.GetOutputType(&mec))) + return S_OK; + + if (((LPWAVEFORMATEX)mtIn->Format())->nSamplesPerSec % mec.dwSampleRate != 0) + return S_OK; + + if (mec.dwSampleRate != ((LPWAVEFORMATEX)mtOut->Format())->nSamplesPerSec) + return VFW_E_TYPE_NOT_ACCEPTED; + + return S_OK; +} + +//////////////////////////////////////////////////////////////////////////// +// DecideBufferSize - sets output buffers number and size +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::DecideBufferSize( + IMemAllocator* pAllocator, + ALLOCATOR_PROPERTIES* pProperties) +{ + HRESULT hr = S_OK; + + /// + pProperties->cBuffers = 1; + pProperties->cbBuffer = OUT_BUFFER_SIZE; + // + + ASSERT(pProperties->cbBuffer); + + ALLOCATOR_PROPERTIES Actual; + hr = pAllocator->SetProperties(pProperties,&Actual); + if(FAILED(hr)) + return hr; + + if (Actual.cbBuffer < pProperties->cbBuffer || + Actual.cBuffers < pProperties->cBuffers) + {// can't use this allocator + return E_INVALIDARG; + } + return S_OK; +} + +//////////////////////////////////////////////////////////////////////////// +// GetMediaType - overrideble for suggesting outpu pin media types +//////////////////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::GetMediaType(int iPosition, CMediaType *pMediaType) +{ + DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::GetMediaType()"))); + + if (iPosition < 0) + return E_INVALIDARG; + + switch (iPosition) + { + case 0: + {// We can support two output streams - PES or AES + if(m_Encoder.IsPES()) + { + pMediaType->SetType(&MEDIATYPE_MPEG2_PES); + pMediaType->SetSubtype(&MEDIASUBTYPE_MPEG2_AUDIO); + } + else + { + pMediaType->SetType(&MEDIATYPE_Audio); + pMediaType->SetSubtype(&MEDIASUBTYPE_MP3); + } + break; + } + default: + return VFW_S_NO_MORE_ITEMS; + } + + if (m_pInput->IsConnected() == FALSE) + { + pMediaType->SetFormatType(&FORMAT_None); + return NOERROR; + } + + SetOutMediaType(); + pMediaType->SetSampleSize(OUT_BUFFER_SIZE); + pMediaType->SetTemporalCompression(FALSE); + pMediaType->AllocFormatBuffer(sizeof(MPEGLAYER3WAVEFORMAT)); + pMediaType->SetFormat((LPBYTE)&m_mwf, sizeof(MPEGLAYER3WAVEFORMAT)); + pMediaType->SetFormatType(&FORMAT_WaveFormatEx); + + return S_OK; +} + +//////////////////////////////////////////////////////////////////////////// +// SetOutMediaType - sets filter output media type according to +// current encoder out MPEG audio properties +//////////////////////////////////////////////////////////////////////////// +void CMpegAudEnc::SetOutMediaType() +{ + MPEG_ENCODER_CONFIG mec; + if(FAILED(m_Encoder.GetOutputType(&mec))) + return ; + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + return ; + +// BOOL bDirty = FALSE; + + if ((wf.nSamplesPerSec % mec.dwSampleRate) != 0) + { + mec.dwSampleRate = wf.nSamplesPerSec; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } + + if (wf.nChannels == 1 && mec.ChMode != MONO) + { + mec.ChMode = MONO; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } + + if (wf.nChannels == 2 && !mec.bForceMono && mec.ChMode == MONO) + { + mec.ChMode = STEREO; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } + + if (wf.nChannels == 2 && mec.bForceMono) + { + mec.ChMode = MONO; + m_Encoder.SetOutputType(mec); +// bDirty = TRUE; + } +/* + if (bDirty) + { + // we are tied to the registry, especially our configuration + // so when we change the incorrect sample rate, we need + // to change the value in registry too. Same to channel mode + SaveAudioEncoderPropertiesToRegistry(); + DbgLog((LOG_TRACE, 1, TEXT("Changed sampling rate internally"))); + } +*/ + // Fill MPEG1WAVEFORMAT DirectShow SDK structure + m_mwf.wfx.wFormatTag = WAVE_FORMAT_MPEGLAYER3; + m_mwf.wfx.cbSize = sizeof(MPEGLAYER3WAVEFORMAT) - sizeof(WAVEFORMATEX); + + if(mec.ChMode == MONO) + m_mwf.wfx.nChannels = 1; + else + m_mwf.wfx.nChannels = 2; + + m_mwf.wfx.nSamplesPerSec = mec.dwSampleRate; + m_mwf.wfx.nBlockAlign = 1; + + m_mwf.wfx.wBitsPerSample = 0; + m_mwf.wfx.nAvgBytesPerSec = mec.dwBitrate * 1000 / 8; + + + m_mwf.wID = MPEGLAYER3_ID_MPEG; + m_mwf.fdwFlags = MPEGLAYER3_FLAG_PADDING_ISO; + m_mwf.nBlockSize = 1; + m_mwf.nFramesPerBlock = 1; + m_mwf.nCodecDelay = 0; +} + +HRESULT CMpegAudEnc::Reconnect() +{ + HRESULT hr = S_FALSE; + + if (m_pOutput && m_pOutput->IsConnected() && m_State == State_Stopped) + { + MPEG_ENCODER_CONFIG mec; + hr = m_Encoder.GetOutputType(&mec); + + if ((hr = m_Encoder.SetOutputType(mec)) == S_OK) + { + CMediaType cmt; + + cmt.InitMediaType(); + GetMediaType(0, &cmt); + + if (S_OK == (hr = m_pOutput->GetConnected()->QueryAccept(&cmt))) + hr = m_pGraph->Reconnect(m_pOutput); + else + hr = m_pOutput->SetMediaType(&cmt); + } + } + + return hr; +} + +// +// Read persistent configuration from Registry +// +void CMpegAudEnc::ReadPresetSettings(MPEG_ENCODER_CONFIG * pmec) +{ + DbgLog((LOG_TRACE,1,TEXT("CMpegAudEnc::ReadPresetSettings()"))); + + CRegKey rk(HKEY_CURRENT_USER, KEY_LAME_ENCODER); + + pmec->dwBitrate = rk.getDWORD(VALUE_BITRATE,DEFAULT_BITRATE); + pmec->dwVariableMin = rk.getDWORD(VALUE_VARIABLEMIN,DEFAULT_VARIABLEMIN); + pmec->dwVariableMax = rk.getDWORD(VALUE_VARIABLEMAX,DEFAULT_VARIABLEMAX); + pmec->vmVariable = rk.getDWORD(VALUE_VARIABLE, DEFAULT_VARIABLE) ? vbr_rh : vbr_off; + pmec->dwQuality = rk.getDWORD(VALUE_QUALITY,DEFAULT_ENCODING_QUALITY); + pmec->dwVBRq = rk.getDWORD(VALUE_VBR_QUALITY,DEFAULT_VBR_QUALITY); + pmec->lLayer = rk.getDWORD(VALUE_LAYER, DEFAULT_LAYER); + pmec->bCRCProtect = rk.getDWORD(VALUE_CRC, DEFAULT_CRC); + pmec->bForceMono = rk.getDWORD(VALUE_FORCE_MONO, DEFAULT_FORCE_MONO); + pmec->bSetDuration = rk.getDWORD(VALUE_SET_DURATION, DEFAULT_SET_DURATION); + pmec->bCopyright = rk.getDWORD(VALUE_COPYRIGHT, DEFAULT_COPYRIGHT); + pmec->bOriginal = rk.getDWORD(VALUE_ORIGINAL, DEFAULT_ORIGINAL); + pmec->dwSampleRate = rk.getDWORD(VALUE_SAMPLE_RATE, DEFAULT_SAMPLE_RATE); + pmec->dwPES = rk.getDWORD(VALUE_PES, DEFAULT_PES); + + pmec->ChMode = (MPEG_mode)rk.getDWORD(VALUE_STEREO_MODE, DEFAULT_STEREO_MODE); + pmec->dwForceMS = rk.getDWORD(VALUE_FORCE_MS, DEFAULT_FORCE_MS); + + pmec->dwEnforceVBRmin = rk.getDWORD(VALUE_ENFORCE_MIN, DEFAULT_ENFORCE_MIN); + pmec->dwVoiceMode = rk.getDWORD(VALUE_VOICE, DEFAULT_VOICE); + pmec->dwKeepAllFreq = rk.getDWORD(VALUE_KEEP_ALL_FREQ, DEFAULT_KEEP_ALL_FREQ); + pmec->dwStrictISO = rk.getDWORD(VALUE_STRICT_ISO, DEFAULT_STRICT_ISO); + pmec->dwNoShortBlock = rk.getDWORD(VALUE_DISABLE_SHORT_BLOCK, DEFAULT_DISABLE_SHORT_BLOCK); + pmec->dwXingTag = rk.getDWORD(VALUE_XING_TAG, DEFAULT_XING_TAG); + pmec->dwModeFixed = rk.getDWORD(VALUE_MODE_FIXED, DEFAULT_MODE_FIXED); + + rk.Close(); +} + +//////////////////////////////////////////////////////////////// +// Property page handling +//////////////////////////////////////////////////////////////// +HRESULT CMpegAudEnc::GetPages(CAUUID *pcauuid) +{ + GUID *pguid; + + pcauuid->cElems = 3; + pcauuid->pElems = pguid = (GUID *) CoTaskMemAlloc(sizeof(GUID) * pcauuid->cElems); + + if (pcauuid->pElems == NULL) + return E_OUTOFMEMORY; + + pguid[0] = CLSID_LAMEDShow_PropertyPage; + pguid[1] = CLSID_LAMEDShow_PropertyPageAdv; + pguid[2] = CLSID_LAMEDShow_About; + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::NonDelegatingQueryInterface(REFIID riid, void ** ppv) +{ + + if (riid == IID_ISpecifyPropertyPages) + return GetInterface((ISpecifyPropertyPages *) this, ppv); + else if(riid == IID_IPersistStream) + return GetInterface((IPersistStream *)this, ppv); +// else if (riid == IID_IVAudioEncSettings) +// return GetInterface((IVAudioEncSettings*) this, ppv); + else if (riid == IID_IAudioEncoderProperties) + return GetInterface((IAudioEncoderProperties*) this, ppv); + + return CTransformFilter::NonDelegatingQueryInterface(riid, ppv); +} + +//////////////////////////////////////////////////////////////// +//IVAudioEncSettings interface methods +//////////////////////////////////////////////////////////////// + +// +// IAudioEncoderProperties +// +STDMETHODIMP CMpegAudEnc::get_PESOutputEnabled(DWORD *dwEnabled) +{ + *dwEnabled = (DWORD)m_Encoder.IsPES(); + DbgLog((LOG_TRACE, 1, TEXT("get_PESOutputEnabled -> %d"), *dwEnabled)); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_PESOutputEnabled(DWORD dwEnabled) +{ + m_Encoder.SetPES((BOOL)!!dwEnabled); + DbgLog((LOG_TRACE, 1, TEXT("set_PESOutputEnabled(%d)"), !!dwEnabled)); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_MPEGLayer(DWORD *dwLayer) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwLayer = (DWORD)mec.lLayer; + + DbgLog((LOG_TRACE, 1, TEXT("get_MPEGLayer -> %d"), *dwLayer)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_MPEGLayer(DWORD dwLayer) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + if (dwLayer == 2) + mec.lLayer = 2; + else if (dwLayer == 1) + mec.lLayer = 1; + m_Encoder.SetOutputType(mec); + + DbgLog((LOG_TRACE, 1, TEXT("set_MPEGLayer(%d)"), dwLayer)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_Bitrate(DWORD *dwBitrate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwBitrate = (DWORD)mec.dwBitrate; + DbgLog((LOG_TRACE, 1, TEXT("get_Bitrate -> %d"), *dwBitrate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_Bitrate(DWORD dwBitrate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwBitrate = dwBitrate; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Bitrate(%d)"), dwBitrate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_Variable(DWORD *dwVariable) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwVariable = (DWORD)(mec.vmVariable == vbr_off ? 0 : 1); + DbgLog((LOG_TRACE, 1, TEXT("get_Variable -> %d"), *dwVariable)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_Variable(DWORD dwVariable) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + + mec.vmVariable = dwVariable ? vbr_rh : vbr_off; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Variable(%d)"), dwVariable)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_VariableMin(DWORD *dwMin) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwMin = (DWORD)mec.dwVariableMin; + DbgLog((LOG_TRACE, 1, TEXT("get_Variablemin -> %d"), *dwMin)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VariableMin(DWORD dwMin) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVariableMin = dwMin; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Variablemin(%d)"), dwMin)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_VariableMax(DWORD *dwMax) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwMax = (DWORD)mec.dwVariableMax; + DbgLog((LOG_TRACE, 1, TEXT("get_Variablemax -> %d"), *dwMax)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VariableMax(DWORD dwMax) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVariableMax = dwMax; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Variablemax(%d)"), dwMax)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_Quality(DWORD *dwQuality) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwQuality=(DWORD)mec.dwQuality; + DbgLog((LOG_TRACE, 1, TEXT("get_Quality -> %d"), *dwQuality)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_Quality(DWORD dwQuality) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwQuality = dwQuality; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_Quality(%d)"), dwQuality)); + return S_OK; +} +STDMETHODIMP CMpegAudEnc::get_VariableQ(DWORD *dwVBRq) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwVBRq=(DWORD)mec.dwVBRq; + DbgLog((LOG_TRACE, 1, TEXT("get_VariableQ -> %d"), *dwVBRq)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VariableQ(DWORD dwVBRq) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVBRq = dwVBRq; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_VariableQ(%d)"), dwVBRq)); + return S_OK; +} + + +STDMETHODIMP CMpegAudEnc::get_SourceSampleRate(DWORD *dwSampleRate) +{ + *dwSampleRate = 0; + + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + return E_FAIL; + + *dwSampleRate = wf.nSamplesPerSec; + DbgLog((LOG_TRACE, 1, TEXT("get_SourceSampleRate -> %d"), *dwSampleRate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_SourceChannels(DWORD *dwChannels) +{ + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + return E_FAIL; + + *dwChannels = wf.nChannels; + DbgLog((LOG_TRACE, 1, TEXT("get_SourceChannels -> %d"), *dwChannels)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_SampleRate(DWORD *dwSampleRate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwSampleRate = mec.dwSampleRate; + DbgLog((LOG_TRACE, 1, TEXT("get_SampleRate -> %d"), *dwSampleRate)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_SampleRate(DWORD dwSampleRate) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + DWORD dwOldSampleRate = mec.dwSampleRate; + mec.dwSampleRate = dwSampleRate; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_SampleRate(%d)"), dwSampleRate)); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ChannelMode(DWORD *dwChannelMode) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwChannelMode = mec.ChMode; + DbgLog((LOG_TRACE, 1, TEXT("get_ChannelMode -> %d"), *dwChannelMode)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ChannelMode(DWORD dwChannelMode) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.ChMode = (MPEG_mode)dwChannelMode; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ChannelMode(%d)"), dwChannelMode)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ForceMS(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwForceMS; + DbgLog((LOG_TRACE, 1, TEXT("get_ForceMS -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ForceMS(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwForceMS = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ForceMS(%d)"), dwFlag)); + return S_OK; +} + + +STDMETHODIMP CMpegAudEnc::get_CRCFlag(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bCRCProtect; + DbgLog((LOG_TRACE, 1, TEXT("get_CRCFlag -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ForceMono(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bForceMono; + DbgLog((LOG_TRACE, 1, TEXT("get_ForceMono -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_SetDuration(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bSetDuration; + DbgLog((LOG_TRACE, 1, TEXT("get_SetDuration -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_CRCFlag(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bCRCProtect = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_CRCFlag(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ForceMono(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bForceMono = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ForceMono(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_SetDuration(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bSetDuration = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_SetDuration(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_EnforceVBRmin(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwEnforceVBRmin; + DbgLog((LOG_TRACE, 1, TEXT("get_EnforceVBRmin -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_EnforceVBRmin(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwEnforceVBRmin = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_EnforceVBRmin(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_VoiceMode(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwVoiceMode; + DbgLog((LOG_TRACE, 1, TEXT("get_VoiceMode -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_VoiceMode(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwVoiceMode = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_VoiceMode(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_KeepAllFreq(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwKeepAllFreq; + DbgLog((LOG_TRACE, 1, TEXT("get_KeepAllFreq -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_KeepAllFreq(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwKeepAllFreq = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_KeepAllFreq(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_StrictISO(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.dwStrictISO; + DbgLog((LOG_TRACE, 1, TEXT("get_StrictISO -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_StrictISO(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwStrictISO = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_StrictISO(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_NoShortBlock(DWORD *dwNoShortBlock) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwNoShortBlock = mec.dwNoShortBlock; + DbgLog((LOG_TRACE, 1, TEXT("get_NoShortBlock -> %d"), *dwNoShortBlock)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_NoShortBlock(DWORD dwNoShortBlock) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwNoShortBlock = dwNoShortBlock; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_NoShortBlock(%d)"), dwNoShortBlock)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_XingTag(DWORD *dwXingTag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwXingTag = mec.dwXingTag; + DbgLog((LOG_TRACE, 1, TEXT("get_XingTag -> %d"), *dwXingTag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_XingTag(DWORD dwXingTag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwXingTag = dwXingTag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_XingTag(%d)"), dwXingTag)); + return S_OK; +} + + + +STDMETHODIMP CMpegAudEnc::get_OriginalFlag(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bOriginal; + DbgLog((LOG_TRACE, 1, TEXT("get_OriginalFlag -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_OriginalFlag(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bOriginal = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_OriginalFlag(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_CopyrightFlag(DWORD *dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwFlag = mec.bCopyright; + DbgLog((LOG_TRACE, 1, TEXT("get_CopyrightFlag -> %d"), *dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_CopyrightFlag(DWORD dwFlag) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.bCopyright = dwFlag; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_CopyrightFlag(%d)"), dwFlag)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ModeFixed(DWORD *dwModeFixed) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + *dwModeFixed = mec.dwModeFixed; + DbgLog((LOG_TRACE, 1, TEXT("get_ModeFixed -> %d"), *dwModeFixed)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::set_ModeFixed(DWORD dwModeFixed) +{ + MPEG_ENCODER_CONFIG mec; + m_Encoder.GetOutputType(&mec); + mec.dwModeFixed = dwModeFixed; + m_Encoder.SetOutputType(mec); + DbgLog((LOG_TRACE, 1, TEXT("set_ModeFixed(%d)"), dwModeFixed)); + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::get_ParameterBlockSize(BYTE *pcBlock, DWORD *pdwSize) +{ + DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize -> %d%d"), *pcBlock, *pdwSize)); + + if (pcBlock != NULL) { + if (*pdwSize >= sizeof(MPEG_ENCODER_CONFIG)) { + m_Encoder.GetOutputType((MPEG_ENCODER_CONFIG*)pcBlock); + return S_OK; + } + else { + *pdwSize = sizeof(MPEG_ENCODER_CONFIG); + return E_FAIL; + } + } + else if (pdwSize != NULL) { + *pdwSize = sizeof(MPEG_ENCODER_CONFIG); + return S_OK; + } + + return E_FAIL; +} + +STDMETHODIMP CMpegAudEnc::set_ParameterBlockSize(BYTE *pcBlock, DWORD dwSize) +{ + DbgLog((LOG_TRACE, 1, TEXT("get_ParameterBlockSize(%d, %d)"), *pcBlock, dwSize)); + if (sizeof(MPEG_ENCODER_CONFIG) == dwSize){ + m_Encoder.SetOutputType(*(MPEG_ENCODER_CONFIG*)pcBlock); + return S_OK; + } + else return E_FAIL; +} + + +STDMETHODIMP CMpegAudEnc::DefaultAudioEncoderProperties() +{ + DbgLog((LOG_TRACE, 1, TEXT("DefaultAudioEncoderProperties()"))); + + HRESULT hr = InputTypeDefined(); + if (FAILED(hr)) + return hr; + + DWORD dwSourceSampleRate; + get_SourceSampleRate(&dwSourceSampleRate); + + set_PESOutputEnabled(DEFAULT_PES); + set_MPEGLayer(DEFAULT_LAYER); + + set_Bitrate(DEFAULT_BITRATE); + set_Variable(FALSE); + set_VariableMin(DEFAULT_VARIABLEMIN); + set_VariableMax(DEFAULT_VARIABLEMAX); + set_Quality(DEFAULT_ENCODING_QUALITY); + set_VariableQ(DEFAULT_VBR_QUALITY); + + set_SampleRate(dwSourceSampleRate); + set_CRCFlag(FALSE); + set_ForceMono(FALSE); + set_SetDuration(FALSE); + set_OriginalFlag(FALSE); + set_CopyrightFlag(FALSE); + + set_EnforceVBRmin(DEFAULT_ENFORCE_MIN); + set_VoiceMode(DEFAULT_VOICE); + set_KeepAllFreq(DEFAULT_KEEP_ALL_FREQ); + set_StrictISO(DEFAULT_STRICT_ISO); + set_NoShortBlock(DEFAULT_DISABLE_SHORT_BLOCK); + set_XingTag(DEFAULT_XING_TAG); + set_ForceMS(DEFAULT_FORCE_MS); + set_ChannelMode(DEFAULT_STEREO_MODE); + set_ModeFixed(DEFAULT_MODE_FIXED); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::LoadAudioEncoderPropertiesFromRegistry() +{ + DbgLog((LOG_TRACE, 1, TEXT("LoadAudioEncoderPropertiesFromRegistry()"))); + + MPEG_ENCODER_CONFIG mec; + ReadPresetSettings(&mec); + if(m_Encoder.SetOutputType(mec) == S_FALSE) + return S_FALSE; + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::SaveAudioEncoderPropertiesToRegistry() +{ + DbgLog((LOG_TRACE, 1, TEXT("SaveAudioEncoderPropertiesToRegistry()"))); + CRegKey rk; + + MPEG_ENCODER_CONFIG mec; + if(m_Encoder.GetOutputType(&mec) == S_FALSE) + return E_FAIL; + + if(rk.Create(HKEY_CURRENT_USER, KEY_LAME_ENCODER)) + { + rk.setDWORD(VALUE_BITRATE, mec.dwBitrate); + rk.setDWORD(VALUE_VARIABLE, mec.vmVariable); + rk.setDWORD(VALUE_VARIABLEMIN, mec.dwVariableMin); + rk.setDWORD(VALUE_VARIABLEMAX, mec.dwVariableMax); + rk.setDWORD(VALUE_QUALITY, mec.dwQuality); + rk.setDWORD(VALUE_VBR_QUALITY, mec.dwVBRq); + + rk.setDWORD(VALUE_CRC, mec.bCRCProtect); + rk.setDWORD(VALUE_FORCE_MONO, mec.bForceMono); + rk.setDWORD(VALUE_SET_DURATION, mec.bSetDuration); + rk.setDWORD(VALUE_PES, mec.dwPES); + rk.setDWORD(VALUE_COPYRIGHT, mec.bCopyright); + rk.setDWORD(VALUE_ORIGINAL, mec.bOriginal); + rk.setDWORD(VALUE_SAMPLE_RATE, mec.dwSampleRate); + + rk.setDWORD(VALUE_STEREO_MODE, mec.ChMode); + rk.setDWORD(VALUE_FORCE_MS, mec.dwForceMS); + rk.setDWORD(VALUE_XING_TAG, mec.dwXingTag); + rk.setDWORD(VALUE_DISABLE_SHORT_BLOCK, mec.dwNoShortBlock); + rk.setDWORD(VALUE_STRICT_ISO, mec.dwStrictISO); + rk.setDWORD(VALUE_KEEP_ALL_FREQ, mec.dwKeepAllFreq); + rk.setDWORD(VALUE_VOICE, mec.dwVoiceMode); + rk.setDWORD(VALUE_ENFORCE_MIN, mec.dwEnforceVBRmin); + rk.setDWORD(VALUE_MODE_FIXED, mec.dwModeFixed); + + rk.Close(); + } + + // Reconnect filter graph + Reconnect(); + + return S_OK; +} + +STDMETHODIMP CMpegAudEnc::InputTypeDefined() +{ + WAVEFORMATEX wf; + if(FAILED(m_Encoder.GetInputType(&wf))) + { + DbgLog((LOG_TRACE, 1, TEXT("!InputTypeDefined()"))); + return E_FAIL; + } + + DbgLog((LOG_TRACE, 1, TEXT("InputTypeDefined()"))); + return S_OK; +} + + +STDMETHODIMP CMpegAudEnc::ApplyChanges() +{ + return Reconnect(); +} + +// +// CPersistStream stuff +// + +// what is our class ID? +STDMETHODIMP CMpegAudEnc::GetClassID(CLSID *pClsid) +{ + CheckPointer(pClsid, E_POINTER); + *pClsid = CLSID_LAMEDShowFilter; + return S_OK; +} + +HRESULT CMpegAudEnc::WriteToStream(IStream *pStream) +{ + DbgLog((LOG_TRACE,1,TEXT("WriteToStream()"))); + + MPEG_ENCODER_CONFIG mec; + + if(m_Encoder.GetOutputType(&mec) == S_FALSE) + return E_FAIL; + + return pStream->Write(&mec, sizeof(mec), 0); +} + + +// what device should we use? Used to re-create a .GRF file that we +// are in +HRESULT CMpegAudEnc::ReadFromStream(IStream *pStream) +{ + MPEG_ENCODER_CONFIG mec; + + HRESULT hr = pStream->Read(&mec, sizeof(mec), 0); + if(FAILED(hr)) + return hr; + + if(m_Encoder.SetOutputType(mec) == S_FALSE) + return S_FALSE; + + DbgLog((LOG_TRACE,1,TEXT("ReadFromStream() succeeded"))); + + hr = S_OK; + return hr; +} + + +// How long is our data? +int CMpegAudEnc::SizeMax() +{ + return sizeof(MPEG_ENCODER_CONFIG); +} + + + +//////////////////////////////////////////// +STDAPI DllRegisterServer() +{ + // Create entry in HKEY_CLASSES_ROOT\Filter + OLECHAR szCLSID[CHARS_IN_GUID]; + TCHAR achTemp[MAX_PATH]; + HKEY hKey; + + HRESULT hr = StringFromGUID2(*g_Templates[0].m_ClsID, szCLSID, CHARS_IN_GUID); + wsprintf(achTemp, TEXT("Filter\\%ls"), szCLSID); + // create key + RegCreateKey(HKEY_CLASSES_ROOT, (LPCTSTR)achTemp, &hKey); + RegCloseKey(hKey); + return AMovieDllRegisterServer2(TRUE); +} + +STDAPI DllUnregisterServer() +{ + // Delete entry in HKEY_CLASSES_ROOT\Filter + OLECHAR szCLSID[CHARS_IN_GUID]; + TCHAR achTemp[MAX_PATH]; + + HRESULT hr = StringFromGUID2(*g_Templates[0].m_ClsID, szCLSID, CHARS_IN_GUID); + wsprintf(achTemp, TEXT("Filter\\%ls"), szCLSID); + // create key + RegDeleteKey(HKEY_CLASSES_ROOT, (LPCTSTR)achTemp); + return AMovieDllRegisterServer2(FALSE); +} + diff --git a/lame-3.97/dshow/Mpegac.def b/lame-3.97/dshow/Mpegac.def new file mode 100644 index 0000000..d3a2be9 --- /dev/null +++ b/lame-3.97/dshow/Mpegac.def @@ -0,0 +1,27 @@ +; +; LAME MP3 encoder for DirectShow +; +; Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. +; +; This library is free software; you can redistribute it and/or +; modify it under the terms of the GNU Library General Public +; License as published by the Free Software Foundation; either +; version 2 of the License, or (at your option) any later version. +; +; This library is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +; Library General Public License for more details. +; +; You should have received a copy of the GNU Library General Public +; License along with this library; if not, write to the +; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +; Boston, MA 02111-1307, USA. +; + +LIBRARY lame.ax +EXPORTS + DllGetClassObject PRIVATE + DllCanUnloadNow PRIVATE + DllRegisterServer PRIVATE + DllUnregisterServer PRIVATE diff --git a/lame-3.97/dshow/Mpegac.h b/lame-3.97/dshow/Mpegac.h new file mode 100644 index 0000000..32d0f79 --- /dev/null +++ b/lame-3.97/dshow/Mpegac.h @@ -0,0 +1,219 @@ +/* + * LAME MP3 encoder for DirectShow + * DirectShow filter implementation + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include "Encoder.h" + +#define KEY_LAME_ENCODER "SOFTWARE\\GNU\\LAME MPEG Layer III Audio Encoder Filter" + +#define VALUE_BITRATE "Bitrate" +#define VALUE_VARIABLE "Variable" +#define VALUE_VARIABLEMIN "VariableMin" +#define VALUE_VARIABLEMAX "VariableMax" +#define VALUE_QUALITY "Quality" +#define VALUE_VBR_QUALITY "VBR Quality" +#define VALUE_SAMPLE_RATE "Sample Rate" + +#define VALUE_STEREO_MODE "Stereo Mode" +#define VALUE_FORCE_MS "Force MS" + +#define VALUE_LAYER "Layer" +#define VALUE_ORIGINAL "Original" +#define VALUE_COPYRIGHT "Copyright" +#define VALUE_CRC "CRC" +#define VALUE_FORCE_MONO "Force Mono" +#define VALUE_SET_DURATION "Set Duration" +#define VALUE_PES "PES" + +#define VALUE_ENFORCE_MIN "EnforceVBRmin" +#define VALUE_VOICE "Voice Mode" +#define VALUE_KEEP_ALL_FREQ "Keep All Frequencies" +#define VALUE_STRICT_ISO "Strict ISO" +#define VALUE_DISABLE_SHORT_BLOCK "No Short Block" +#define VALUE_XING_TAG "Xing Tag" +#define VALUE_MODE_FIXED "Mode Fixed" + + +typedef struct +{ + LONGLONG sample; + REFERENCE_TIME delta; + + BOOL applied; +} resync_point_t; + +#define RESYNC_COUNT 4 + +/////////////////////////////////////////////////////////////////// +// CMpegAudEnc class - implementation for ITransformFilter interface +/////////////////////////////////////////////////////////////////// +class CMpegAudEncPropertyPage; +class CMpegAudEnc : public CTransformFilter, + public ISpecifyPropertyPages, + public IAudioEncoderProperties, + public CPersistStream +{ +public: + DECLARE_IUNKNOWN + + static CUnknown *CreateInstance(LPUNKNOWN lpunk, HRESULT *phr); + + LPAMOVIESETUP_FILTER GetSetupData(); + + HRESULT Reconnect(); + + HRESULT Receive(IMediaSample *pSample); + + HRESULT CheckInputType(const CMediaType* mtIn); + HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut); + HRESULT DecideBufferSize(IMemAllocator * pAllocator, ALLOCATOR_PROPERTIES *pprop); + + HRESULT GetMediaType (int iPosition, CMediaType *pMediaType); + HRESULT SetMediaType (PIN_DIRECTION direction,const CMediaType *pmt); + + + // + HRESULT StartStreaming(); + HRESULT StopStreaming(); + HRESULT EndOfStream(); + HRESULT BeginFlush(); + + ~CMpegAudEnc(void); + + // ISpecifyPropertyPages + STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv); + STDMETHODIMP GetPages(CAUUID *pPages); + + // IAudioEncoderProperties + STDMETHODIMP get_PESOutputEnabled(DWORD *dwEnabled); // PES header. Obsolete + STDMETHODIMP set_PESOutputEnabled(DWORD dwEnabled); // PES header. Obsolete + + STDMETHODIMP get_MPEGLayer(DWORD *dwLayer); + STDMETHODIMP set_MPEGLayer(DWORD dwLayer); + + STDMETHODIMP get_Bitrate(DWORD *dwBitrate); + STDMETHODIMP set_Bitrate(DWORD dwBitrate); + STDMETHODIMP get_Variable(DWORD *dwVariable); + STDMETHODIMP set_Variable(DWORD dwVariable); + STDMETHODIMP get_VariableMin(DWORD *dwMin); + STDMETHODIMP set_VariableMin(DWORD dwMin); + STDMETHODIMP get_VariableMax(DWORD *dwMax); + STDMETHODIMP set_VariableMax(DWORD dwMax); + STDMETHODIMP get_Quality(DWORD *dwQuality); + STDMETHODIMP set_Quality(DWORD dwQuality); + STDMETHODIMP get_VariableQ(DWORD *dwVBRq); + STDMETHODIMP set_VariableQ(DWORD dwVBRq); + STDMETHODIMP get_SourceSampleRate(DWORD *dwSampleRate); + STDMETHODIMP get_SourceChannels(DWORD *dwChannels); + STDMETHODIMP get_SampleRate(DWORD *dwSampleRate); + STDMETHODIMP set_SampleRate(DWORD dwSampleRate); + + STDMETHODIMP get_ChannelMode(DWORD *dwChannelMode); + STDMETHODIMP set_ChannelMode(DWORD dwChannelMode); + STDMETHODIMP get_ForceMS(DWORD *dwFlag); + STDMETHODIMP set_ForceMS(DWORD dwFlag); + STDMETHODIMP get_EnforceVBRmin(DWORD *dwFlag); + STDMETHODIMP set_EnforceVBRmin(DWORD dwFlag); + STDMETHODIMP get_VoiceMode(DWORD *dwFlag); + STDMETHODIMP set_VoiceMode(DWORD dwFlag); + STDMETHODIMP get_KeepAllFreq(DWORD *dwFlag); + STDMETHODIMP set_KeepAllFreq(DWORD dwFlag); + STDMETHODIMP get_StrictISO(DWORD *dwFlag); + STDMETHODIMP set_StrictISO(DWORD dwFlag); + STDMETHODIMP get_NoShortBlock(DWORD *dwNoShortBlock); + STDMETHODIMP set_NoShortBlock(DWORD dwNoShortBlock); + STDMETHODIMP get_XingTag(DWORD *dwXingTag); + STDMETHODIMP set_XingTag(DWORD dwXingTag); + STDMETHODIMP get_ModeFixed(DWORD *dwModeFixed); + STDMETHODIMP set_ModeFixed(DWORD dwModeFixed); + + + STDMETHODIMP get_CRCFlag(DWORD *dwFlag); + STDMETHODIMP set_CRCFlag(DWORD dwFlag); + STDMETHODIMP get_ForceMono(DWORD *dwFlag); + STDMETHODIMP set_ForceMono(DWORD dwFlag); + STDMETHODIMP get_SetDuration(DWORD *dwFlag); + STDMETHODIMP set_SetDuration(DWORD dwFlag); + STDMETHODIMP get_OriginalFlag(DWORD *dwFlag); + STDMETHODIMP set_OriginalFlag(DWORD dwFlag); + STDMETHODIMP get_CopyrightFlag(DWORD *dwFlag); + STDMETHODIMP set_CopyrightFlag(DWORD dwFlag); + + STDMETHODIMP get_ParameterBlockSize(BYTE *pcBlock, DWORD *pdwSize); + STDMETHODIMP set_ParameterBlockSize(BYTE *pcBlock, DWORD dwSize); + + STDMETHODIMP DefaultAudioEncoderProperties(); + STDMETHODIMP LoadAudioEncoderPropertiesFromRegistry(); + STDMETHODIMP SaveAudioEncoderPropertiesToRegistry(); + STDMETHODIMP InputTypeDefined(); + + STDMETHODIMP ApplyChanges(); + + // CPersistStream + HRESULT WriteToStream(IStream *pStream); + HRESULT ReadFromStream(IStream *pStream); + + int SizeMax(); + STDMETHODIMP GetClassID(CLSID *pClsid); + +private: + CMpegAudEnc(LPUNKNOWN lpunk, HRESULT *phr); + + HRESULT FlushEncodedSamples(); + + void SetOutMediaType(); + + void ReadPresetSettings(MPEG_ENCODER_CONFIG *pmabsi); + + // Encoder object + CEncoder m_Encoder; + + // Current media out format + MPEGLAYER3WAVEFORMAT m_mwf; + + REFERENCE_TIME m_rtStreamTime; + REFERENCE_TIME m_rtFrameTime; + REFERENCE_TIME m_rtEstimated; + + // Synchronization data + LONGLONG m_samplesIn; + LONGLONG m_samplesOut; + int m_samplesPerFrame; + int m_bytesPerSample; + float m_bytesToDuration; + + resync_point_t m_sync[RESYNC_COUNT]; + int m_sync_in_idx; + int m_sync_out_idx; + + BOOL m_hasFinished; + + CCritSec m_cs; + + DWORD m_setDuration; + + +protected: + friend class CMpegAudEncPropertyPage; +}; + + diff --git a/lame-3.97/dshow/PropPage.cpp b/lame-3.97/dshow/PropPage.cpp new file mode 100644 index 0000000..fe4def5 --- /dev/null +++ b/lame-3.97/dshow/PropPage.cpp @@ -0,0 +1,659 @@ +/* + * LAME MP3 encoder for DirectShow + * Basic property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include "iaudioprops.h" +#include "mpegac.h" +#include "resource.h" +#include "PropPage.h" +#include "Reg.h" + +// strings to appear in comboboxes +const char * szBitRateString[2][14] = { + { + "32 kbps","40 kbps","48 kbps","56 kbps", + "64 kbps","80 kbps","96 kbps","112 kbps", + "128 kbps","160 kbps","192 kbps","224 kbps", + "256 kbps","320 kbps" + }, + { + "8 kbps","16 kbps","24 kbps","32 kbps", + "40 kbps","48 kbps","56 kbps","64 kbps", + "80 kbps","96 kbps","112 kbps","128 kbps", + "144 kbps","160 kbps" + } +}; + +LPCSTR szQualityDesc[10] = { + "High", "High", "High", "High", "High", + "Medium", "Medium", + "Low", "Low", + "Fast mode" +}; + +LPCSTR szVBRqDesc[10] = { + "0 - ~1:4", + "1 - ~1:5", + "2 - ~1:6", + "3 - ~1:7", + "4 - ~1:9", + "5 - ~1:9", + "6 - ~1:10", + "7 - ~1:11", + "8 - ~1:12", + "9 - ~1:14" +}; + +struct SSampleRate { + DWORD dwSampleRate; + LPCSTR lpSampleRate; +}; + +SSampleRate srRates[9] = { + // MPEG-1 + {48000, "48 kHz"}, + {44100, "44.1 kHz"}, + {32000, "32 kHz"}, + + // MPEG-2 + {24000, "24 kHz"}, + {22050, "22.05 kHz"}, + {16000, "16 kHz"}, + + // MPEG-2.5 + {12000, "12 kHz"}, + {11025, "11.025 kHz"}, + { 8000, "8 kHz"} +}; + +//////////////////////////////////////////////////////////////// +// CreateInstance +//////////////////////////////////////////////////////////////// +CUnknown *CMpegAudEncPropertyPage::CreateInstance( LPUNKNOWN punk, HRESULT *phr ) +{ + CMpegAudEncPropertyPage *pNewObject + = new CMpegAudEncPropertyPage( punk, phr ); + + if( pNewObject == NULL ) + *phr = E_OUTOFMEMORY; + + return pNewObject; +} + +//////////////////////////////////////////////////////////////// +// Constructor +//////////////////////////////////////////////////////////////// +CMpegAudEncPropertyPage::CMpegAudEncPropertyPage(LPUNKNOWN punk, HRESULT *phr) + : CBasePropertyPage(NAME("Encoder Property Page"), + punk, IDD_AUDIOENCPROPS, IDS_AUDIO_PROPS_TITLE) + , m_pAEProps(NULL) +{ + ASSERT(phr); + + m_srIdx = 0; + + InitCommonControls(); +} + +// +// OnConnect +// +// Give us the filter to communicate with +HRESULT CMpegAudEncPropertyPage::OnConnect(IUnknown *pUnknown) +{ + ASSERT(m_pAEProps == NULL); + + // Ask the filter for it's control interface + + HRESULT hr = pUnknown->QueryInterface(IID_IAudioEncoderProperties,(void **)&m_pAEProps); + if (FAILED(hr)) + return E_NOINTERFACE; + + ASSERT(m_pAEProps); + + // Get current filter state + m_pAEProps->get_Bitrate(&m_dwBitrate); + m_pAEProps->get_Variable(&m_dwVariable); + m_pAEProps->get_VariableMin(&m_dwMin); + m_pAEProps->get_VariableMax(&m_dwMax); + m_pAEProps->get_Quality(&m_dwQuality); + m_pAEProps->get_VariableQ(&m_dwVBRq); + m_pAEProps->get_SampleRate(&m_dwSampleRate); + m_pAEProps->get_CRCFlag(&m_dwCRC); + m_pAEProps->get_ForceMono(&m_dwForceMono); + m_pAEProps->get_SetDuration(&m_dwSetDuration); + m_pAEProps->get_CopyrightFlag(&m_dwCopyright); + m_pAEProps->get_OriginalFlag(&m_dwOriginal); + + return NOERROR; +} + +// +// OnDisconnect +// +// Release the interface + +HRESULT CMpegAudEncPropertyPage::OnDisconnect() +{ + // Release the interface + if (m_pAEProps == NULL) + return E_UNEXPECTED; + + m_pAEProps->set_Bitrate(m_dwBitrate); + m_pAEProps->set_Variable(m_dwVariable); + m_pAEProps->set_VariableMin(m_dwMin); + m_pAEProps->set_VariableMax(m_dwMax); + m_pAEProps->set_Quality(m_dwQuality); + m_pAEProps->set_VariableQ(m_dwVBRq); + m_pAEProps->set_SampleRate(m_dwSampleRate); + m_pAEProps->set_CRCFlag(m_dwCRC); + m_pAEProps->set_ForceMono(m_dwForceMono); + m_pAEProps->set_SetDuration(m_dwSetDuration); + m_pAEProps->set_CopyrightFlag(m_dwCopyright); + m_pAEProps->set_OriginalFlag(m_dwOriginal); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->Release(); + m_pAEProps = NULL; + + return NOERROR; +} + +// +// OnActivate +// +// Called on dialog creation + +HRESULT CMpegAudEncPropertyPage::OnActivate(void) +{ + InitPropertiesDialog(m_hwnd); + + return NOERROR; +} + +// +// OnDeactivate +// +// Called on dialog destruction + +HRESULT CMpegAudEncPropertyPage::OnDeactivate(void) +{ + return NOERROR; +} + +//////////////////////////////////////////////////////////////// +// OnReceiveMessage - message handler function +//////////////////////////////////////////////////////////////// +BOOL CMpegAudEncPropertyPage::OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch (uMsg) + { + case WM_HSCROLL: + if ((HWND)lParam == m_hwndQuality) + { + int pos = SendMessage(m_hwndQuality, TBM_GETPOS, 0, 0); + if (pos >= 0 && pos < 10) + { + SetDlgItemText(hwnd,IDC_TEXT_QUALITY,szQualityDesc[pos]); + m_pAEProps->set_Quality(pos); + SetDirty(); + } + } + break; + + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_COMBO_CBR: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nBitrate = SendDlgItemMessage(hwnd, IDC_COMBO_CBR, CB_GETCURSEL, 0, 0L); + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + DWORD dwBitrate; + + if (dwSampleRate >= 32000) + { + // Consider MPEG 1 + dwBitrate = dwBitRateValue[0][nBitrate]; + } + else + { + // Consider MPEG 2/2.5 + dwBitrate = dwBitRateValue[1][nBitrate]; + } + + m_pAEProps->set_Bitrate(dwBitrate); + + SetDirty(); + } + break; + + case IDC_COMBO_VBRMIN: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nVariableMin = SendDlgItemMessage(hwnd, IDC_COMBO_VBRMIN, CB_GETCURSEL, 0, 0L); + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + DWORD dwMin; + + if (dwSampleRate >= 32000) + { + // Consider MPEG 1 + dwMin = dwBitRateValue[0][nVariableMin]; + } + else + { + // Consider MPEG 2/2.5 + dwMin = dwBitRateValue[1][nVariableMin]; + } + + m_pAEProps->set_VariableMin(dwMin); + + SetDirty(); + } + break; + + case IDC_COMBO_VBRMAX: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nVariableMax = SendDlgItemMessage(hwnd, IDC_COMBO_VBRMAX, CB_GETCURSEL, 0, 0L); + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + DWORD dwMax; + + if (dwSampleRate >= 32000) + { + // Consider MPEG 1 + dwMax = dwBitRateValue[0][nVariableMax]; + } + else + { + // Consider MPEG 2/2.5 + dwMax = dwBitRateValue[1][nVariableMax]; + } + + m_pAEProps->set_VariableMax(dwMax); + + SetDirty(); + } + break; + + case IDC_COMBO_SAMPLE_RATE: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nSampleRate = SendDlgItemMessage(hwnd, IDC_COMBO_SAMPLE_RATE, CB_GETCURSEL, 0, 0L); + + if (nSampleRate < 0) + nSampleRate = 0; + else if (nSampleRate > 2) + nSampleRate = 2; + + DWORD dwSampleRate = srRates[nSampleRate * 3 + m_srIdx].dwSampleRate; + + m_pAEProps->set_SampleRate(dwSampleRate); + InitPropertiesDialog(hwnd); + SetDirty(); + } + break; + + case IDC_COMBO_VBRq: + if (HIWORD(wParam) == CBN_SELCHANGE) + { + int nVBRq = SendDlgItemMessage(hwnd, IDC_COMBO_VBRq, CB_GETCURSEL, 0, 0L); + if (nVBRq >=0 && nVBRq <=9) + m_pAEProps->set_VariableQ(nVBRq); + SetDirty(); + } + break; + + case IDC_RADIO_CBR: + case IDC_RADIO_VBR: + m_pAEProps->set_Variable(LOWORD(wParam)-IDC_RADIO_CBR); + SetDirty(); + break; + + case IDC_CHECK_PES: + m_pAEProps->set_PESOutputEnabled(IsDlgButtonChecked(hwnd, IDC_CHECK_PES)); + SetDirty(); + break; + + case IDC_CHECK_COPYRIGHT: + m_pAEProps->set_CopyrightFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_COPYRIGHT)); + SetDirty(); + break; + + case IDC_CHECK_ORIGINAL: + m_pAEProps->set_OriginalFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_ORIGINAL)); + SetDirty(); + break; + + case IDC_CHECK_CRC: + m_pAEProps->set_CRCFlag(IsDlgButtonChecked(hwnd, IDC_CHECK_CRC)); + SetDirty(); + break; + + case IDC_FORCE_MONO: + m_pAEProps->set_ForceMono(IsDlgButtonChecked(hwnd, IDC_FORCE_MONO)); + SetDirty(); + break; + + case IDC_SET_DURATION: + m_pAEProps->set_SetDuration(IsDlgButtonChecked(hwnd, IDC_SET_DURATION)); + SetDirty(); + break; + } + return TRUE; + + case WM_DESTROY: + return TRUE; + + default: + return FALSE; + } + + return TRUE; +} + +// +// OnApplyChanges +// +HRESULT CMpegAudEncPropertyPage::OnApplyChanges() +{ + m_pAEProps->get_Bitrate(&m_dwBitrate); + m_pAEProps->get_Variable(&m_dwVariable); + m_pAEProps->get_VariableMin(&m_dwMin); + m_pAEProps->get_VariableMax(&m_dwMax); + m_pAEProps->get_Quality(&m_dwQuality); + m_pAEProps->get_VariableQ(&m_dwVBRq); + m_pAEProps->get_SampleRate(&m_dwSampleRate); + m_pAEProps->get_CRCFlag(&m_dwCRC); + m_pAEProps->get_ForceMono(&m_dwForceMono); + m_pAEProps->get_SetDuration(&m_dwSetDuration); + m_pAEProps->get_CopyrightFlag(&m_dwCopyright); + m_pAEProps->get_OriginalFlag(&m_dwOriginal); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->ApplyChanges(); + + return S_OK; +} + +// +// Initialize dialogbox controls with proper values +// +void CMpegAudEncPropertyPage::InitPropertiesDialog(HWND hwndParent) +{ + EnableControls(hwndParent, TRUE); + + m_hwndQuality = GetDlgItem(hwndParent,IDC_SLIDER_QUALITY); + DWORD dwQuality; + m_pAEProps->get_Quality(&dwQuality); + SendDlgItemMessage(hwndParent, IDC_SLIDER_QUALITY, TBM_SETRANGE, 1, MAKELONG (2,9)); + SendDlgItemMessage(hwndParent, IDC_SLIDER_QUALITY, TBM_SETPOS, 1, dwQuality); + if (dwQuality>=0 && dwQuality<10) + SetDlgItemText(hwndParent,IDC_TEXT_QUALITY,szQualityDesc[dwQuality]); + + // + // initialize sample rate selection + // + DWORD dwSourceSampleRate; + m_pAEProps->get_SourceSampleRate(&dwSourceSampleRate); + + SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_RESETCONTENT, 0, 0L); + + switch (dwSourceSampleRate) + { + case 48000: + case 24000: + case 12000: + m_srIdx = 0; + break; + + case 32000: + case 16000: + case 8000: + m_srIdx = 2; + break; + + case 44100: + case 22050: + case 11025: + default: + m_srIdx = 1; + } + + for (int i = 0; i < 3; i++) + SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)srRates[i * 3 + m_srIdx].lpSampleRate); + + DWORD dwSampleRate; + m_pAEProps->get_SampleRate(&dwSampleRate); + m_pAEProps->set_SampleRate(dwSampleRate); + + int nSR = 0; + while (dwSampleRate != srRates[nSR * 3 + m_srIdx].dwSampleRate && nSR < 3) + { + nSR++; + } + + if (nSR >= 3) + nSR = 0; + + SendDlgItemMessage(hwndParent, IDC_COMBO_SAMPLE_RATE, CB_SETCURSEL, nSR, 0); + + DWORD dwChannels; + m_pAEProps->get_SourceChannels(&dwChannels); + + // + //initialize VBRq combo box + // + int k; + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_RESETCONTENT, 0, 0); + for (k = 0; k < 10; k++) + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szVBRqDesc[k]); + DWORD dwVBRq; + m_pAEProps->get_VariableQ(&dwVBRq); + if (dwVBRq<0) + dwVBRq = 0; + if (dwVBRq>9) + dwVBRq = 9; + m_pAEProps->set_VariableQ(dwVBRq); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRq, CB_SETCURSEL, dwVBRq, 0); + +////////////////////////////////////// +// initialize CBR selection +////////////////////////////////////// + int nSt; + + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_RESETCONTENT, 0, 0); + if (dwSampleRate >= 32000) + { + // If target sampling rate is less than 32000, consider + // MPEG 1 audio + nSt = 0; + for (int i = 0; i < 14; i++) + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][i]); + } + else + { + // Consider MPEG 2 / 2.5 audio + nSt = 1; + for (int i = 0; i < 14 ; i++) + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][i]); + } + + DWORD dwBitrate; + m_pAEProps->get_Bitrate(&dwBitrate); + + int nBitrateSel = 0; + // BitRateValue[][i] is in ascending order + // We use this fact. We also know there are 14 bitrate values available. + // We are going to use the closest possible, so we can limit loop with 13 + while (nBitrateSel < 13 && dwBitRateValue[nSt][nBitrateSel] < dwBitrate) + nBitrateSel++; + SendDlgItemMessage(hwndParent, IDC_COMBO_CBR, CB_SETCURSEL, nBitrateSel, 0); + + // check if the specified bitrate is found exactly and correct if not + if (dwBitRateValue[nSt][nBitrateSel] != dwBitrate) + { + dwBitrate = dwBitRateValue[nSt][nBitrateSel]; + // we can change it, because it is independent of any other parameters + // (but depends on some of them!) + m_pAEProps->set_Bitrate(dwBitrate); + } + + // + // Check VBR/CBR radio button + // + DWORD dwVariable; + m_pAEProps->get_Variable(&dwVariable); + CheckRadioButton(hwndParent, IDC_RADIO_CBR, IDC_RADIO_VBR, IDC_RADIO_CBR + dwVariable); + +////////////////////////////////////////////////// +// initialize VBR selection +////////////////////////////////////////////////// + //VBRMIN, VBRMAX + int j, nST; + + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_RESETCONTENT, 0, 0); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_RESETCONTENT, 0, 0); + + if (dwSampleRate >= 32000) + { + nST = 0; + for (j=0; j<14 ;j++) { + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][j]); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[0][j]); + } + } + else + { + nST = 1; + for (j = 0; j < 14; j++) + { + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][j]); + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR)szBitRateString[1][j]); + } + } + + DWORD dwMin,dwMax; + m_pAEProps->get_VariableMin(&dwMin); + m_pAEProps->get_VariableMax(&dwMax); + + int nVariableMinSel = 0; + int nVariableMaxSel = 0; + + // BitRateValue[][i] is in ascending order + // We use this fact. We also know there are 14 bitrate values available. + // We are going to use the closest possible, so we can limit loop with 13 + while (nVariableMinSel<13 && dwBitRateValue[nST][nVariableMinSel] < dwMin) + nVariableMinSel++; + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMIN, CB_SETCURSEL, nVariableMinSel, 0); + + while (nVariableMaxSel<13 && dwBitRateValue[nST][nVariableMaxSel] < dwMax) + nVariableMaxSel++; + SendDlgItemMessage(hwndParent, IDC_COMBO_VBRMAX, CB_SETCURSEL, nVariableMaxSel, 0); + + + // check if the specified bitrate is found exactly and correct if not + if (dwBitRateValue[nST][nVariableMinSel] != dwMin) + { + dwMin = dwBitRateValue[nST][nVariableMinSel]; + // we can change it, because it is independent of any other parameters + // (but depends on some of them!) + m_pAEProps->set_VariableMin(dwMin); + } + + // check if the specified bitrate is found exactly and correct if not + if (dwBitRateValue[nST][nVariableMaxSel] != dwMax) + { + dwMax = dwBitRateValue[nST][nVariableMaxSel]; + // we can change it, because it is independent of any other parameters + // (but depends on some of them!) + m_pAEProps->set_VariableMax(dwMax); + } + + // + // initialize checkboxes + // + DWORD dwPES; + m_pAEProps->get_PESOutputEnabled(&dwPES); + + dwPES = 0; + CheckDlgButton(hwndParent, IDC_CHECK_PES, dwPES ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwCRC; + m_pAEProps->get_CRCFlag(&dwCRC); + CheckDlgButton(hwndParent, IDC_CHECK_CRC, dwCRC ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwForceMono; + m_pAEProps->get_ForceMono(&dwForceMono); + CheckDlgButton(hwndParent, IDC_FORCE_MONO, dwForceMono ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwSetDuration; + m_pAEProps->get_SetDuration(&dwSetDuration); + CheckDlgButton(hwndParent, IDC_SET_DURATION, dwSetDuration ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwCopyright; + m_pAEProps->get_CopyrightFlag(&dwCopyright); + CheckDlgButton(hwndParent, IDC_CHECK_COPYRIGHT, dwCopyright ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwOriginal; + m_pAEProps->get_OriginalFlag(&dwOriginal); + CheckDlgButton(hwndParent, IDC_CHECK_ORIGINAL, dwOriginal ? BST_CHECKED : BST_UNCHECKED); +} + + +//////////////////////////////////////////////////////////////// +// EnableControls +//////////////////////////////////////////////////////////////// +void CMpegAudEncPropertyPage::EnableControls(HWND hwndParent, bool bEnable) +{ + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_PES), false);//bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_CBR), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_CBR), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_VBR), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_VBRMIN), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_VBRMAX), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_COPYRIGHT), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_ORIGINAL), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_CRC), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_FORCE_MONO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_SET_DURATION), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_SLIDER_QUALITY), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_COMBO_SAMPLE_RATE), bEnable); +} + +// +// SetDirty +// +// notifies the property page site of changes + +void CMpegAudEncPropertyPage::SetDirty() +{ + m_bDirty = TRUE; + if (m_pPageSite) + m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); +} + diff --git a/lame-3.97/dshow/PropPage.h b/lame-3.97/dshow/PropPage.h new file mode 100644 index 0000000..3f1e65d --- /dev/null +++ b/lame-3.97/dshow/PropPage.h @@ -0,0 +1,61 @@ +/* + * LAME MP3 encoder for DirectShow + * Basic property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +class CMpegAudEncPropertyPage : public CBasePropertyPage +{ + +public: + static CUnknown *CreateInstance( LPUNKNOWN punk, HRESULT *phr ); + CMpegAudEncPropertyPage( LPUNKNOWN punk, HRESULT *phr ); + + HRESULT OnConnect(IUnknown *pUnknown); + HRESULT OnDisconnect(); + HRESULT OnActivate(); + HRESULT OnDeactivate(); + HRESULT OnApplyChanges(); + BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + +private: + void InitPropertiesDialog(HWND hwndParent); + void EnableControls(HWND hwndParent, bool bEnable); + void SetDirty(void); + + DWORD m_dwBitrate; //constant bit rate + DWORD m_dwVariable; //flag - whether the variable bit rate set + DWORD m_dwMin; //specify a minimum allowed bitrate + DWORD m_dwMax; //specify a maximum allowed bitrate + DWORD m_dwQuality; //encoding quality + DWORD m_dwVBRq; //VBR quality setting (0=highest quality, 9=lowest) + DWORD m_dwSampleRate; + DWORD m_dwChannelMode; + DWORD m_dwCRC; + DWORD m_dwForceMono; + DWORD m_dwSetDuration; + DWORD m_dwCopyright; + DWORD m_dwOriginal; + + HWND m_hwndQuality; //Slider window handle + + int m_srIdx; + + IAudioEncoderProperties *m_pAEProps; +}; diff --git a/lame-3.97/dshow/PropPage_adv.cpp b/lame-3.97/dshow/PropPage_adv.cpp new file mode 100644 index 0000000..ec1b9e7 --- /dev/null +++ b/lame-3.97/dshow/PropPage_adv.cpp @@ -0,0 +1,341 @@ +/* + * LAME MP3 encoder for DirectShow + * Advanced property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include "iaudioprops.h" +#include "mpegac.h" +#include "resource.h" +#include "PropPage_adv.h" +#include "Reg.h" + +#define MPG_MD_STEREO 0 +#define MPG_MD_JOINT_STEREO 1 +#define MPG_MD_DUAL_CHANNEL 2 +#define MPG_MD_MONO 3 + +// Strings which apear in comboboxes +const char *chChMode[4] = { + "Mono", + "Standard stereo", + "Joint stereo", + "Dual channel"}; + +//////////////////////////////////////////////////////////////// +// CreateInstance +//////////////////////////////////////////////////////////////// +CUnknown *CMpegAudEncPropertyPageAdv::CreateInstance( LPUNKNOWN punk, HRESULT *phr ) +{ + CMpegAudEncPropertyPageAdv *pNewObject + = new CMpegAudEncPropertyPageAdv( punk, phr ); + + if( pNewObject == NULL ) + *phr = E_OUTOFMEMORY; + + return pNewObject; +} + +//////////////////////////////////////////////////////////////// +// Constructor +//////////////////////////////////////////////////////////////// +CMpegAudEncPropertyPageAdv::CMpegAudEncPropertyPageAdv(LPUNKNOWN punk, HRESULT *phr) : + CBasePropertyPage(NAME("Encoder Advanced Property Page"), punk, IDD_ADVPROPS, IDS_AUDIO_ADVANCED_TITLE), + m_pAEProps(NULL) +{ + ASSERT(phr); + + InitCommonControls(); +} + +// +// OnConnect +// +// Give us the filter to communicate with +HRESULT CMpegAudEncPropertyPageAdv::OnConnect(IUnknown *pUnknown) +{ + ASSERT(m_pAEProps == NULL); + + // Ask the filter for it's control interface + + HRESULT hr = pUnknown->QueryInterface(IID_IAudioEncoderProperties,(void **)&m_pAEProps); + if (FAILED(hr)) + return E_NOINTERFACE; + + ASSERT(m_pAEProps); + + // Get current filter state +// m_pAEProps->LoadAudioEncoderPropertiesFromRegistry(); + + m_pAEProps->get_EnforceVBRmin(&m_dwEnforceVBRmin); + m_pAEProps->get_VoiceMode(&m_dwVoiceMode); + m_pAEProps->get_KeepAllFreq(&m_dwKeepAllFreq); + m_pAEProps->get_StrictISO(&m_dwStrictISO); + m_pAEProps->get_NoShortBlock(&m_dwNoShortBlock); + m_pAEProps->get_XingTag(&m_dwXingTag); + m_pAEProps->get_ChannelMode(&m_dwChannelMode); + m_pAEProps->get_ForceMS(&m_dwForceMS); + m_pAEProps->get_ModeFixed(&m_dwModeFixed); + + return NOERROR; +} + +// +// OnDisconnect +// +// Release the interface + +HRESULT CMpegAudEncPropertyPageAdv::OnDisconnect() +{ + // Release the interface + if (m_pAEProps == NULL) + return E_UNEXPECTED; + + m_pAEProps->set_EnforceVBRmin(m_dwEnforceVBRmin); + m_pAEProps->set_VoiceMode(m_dwVoiceMode); + m_pAEProps->set_KeepAllFreq(m_dwKeepAllFreq); + m_pAEProps->set_StrictISO(m_dwStrictISO); + m_pAEProps->set_NoShortBlock(m_dwNoShortBlock); + m_pAEProps->set_XingTag(m_dwXingTag); + m_pAEProps->set_ChannelMode(m_dwChannelMode); + m_pAEProps->set_ForceMS(m_dwForceMS); + m_pAEProps->set_ModeFixed(m_dwModeFixed); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->Release(); + m_pAEProps = NULL; + + return NOERROR; +} + +// +// OnActivate +// +// Called on dialog creation + +HRESULT CMpegAudEncPropertyPageAdv::OnActivate(void) +{ + InitPropertiesDialog(m_hwnd); + + return NOERROR; +} + +// +// OnDeactivate +// +// Called on dialog destruction + +HRESULT CMpegAudEncPropertyPageAdv::OnDeactivate(void) +{ + return NOERROR; +} + +//////////////////////////////////////////////////////////////// +// OnReceiveMessage - message handler function +//////////////////////////////////////////////////////////////// +BOOL CMpegAudEncPropertyPageAdv::OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) +{ + switch (uMsg) + { + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDC_RADIO_STEREO: + case IDC_RADIO_JSTEREO: + case IDC_RADIO_DUAL: + case IDC_RADIO_MONO: + { + + DWORD dwChannelMode = LOWORD(wParam) - IDC_RADIO_STEREO; + CheckRadioButton(hwnd, IDC_RADIO_STEREO, IDC_RADIO_MONO, LOWORD(wParam)); + + if (dwChannelMode == MPG_MD_JOINT_STEREO) + EnableWindow(GetDlgItem(hwnd,IDC_CHECK_FORCE_MS),TRUE); + else + EnableWindow(GetDlgItem(hwnd,IDC_CHECK_FORCE_MS),FALSE); + + m_pAEProps->set_ChannelMode(dwChannelMode); + SetDirty(); + } + break; + + case IDC_CHECK_ENFORCE_MIN: + m_pAEProps->set_EnforceVBRmin(IsDlgButtonChecked(hwnd, IDC_CHECK_ENFORCE_MIN)); + SetDirty(); + break; + + case IDC_CHECK_VOICE: + m_pAEProps->set_VoiceMode(IsDlgButtonChecked(hwnd, IDC_CHECK_VOICE)); + SetDirty(); + break; + + case IDC_CHECK_KEEP_ALL_FREQ: + m_pAEProps->set_KeepAllFreq(IsDlgButtonChecked(hwnd, IDC_CHECK_KEEP_ALL_FREQ)); + SetDirty(); + break; + + case IDC_CHECK_STRICT_ISO: + m_pAEProps->set_StrictISO(IsDlgButtonChecked(hwnd, IDC_CHECK_STRICT_ISO)); + SetDirty(); + break; + + case IDC_CHECK_DISABLE_SHORT_BLOCK: + m_pAEProps->set_NoShortBlock(IsDlgButtonChecked(hwnd, IDC_CHECK_DISABLE_SHORT_BLOCK)); + SetDirty(); + break; + + case IDC_CHECK_XING_TAG: + m_pAEProps->set_XingTag(IsDlgButtonChecked(hwnd, IDC_CHECK_XING_TAG)); + SetDirty(); + break; + + case IDC_CHECK_FORCE_MS: + m_pAEProps->set_ForceMS(IsDlgButtonChecked(hwnd, IDC_CHECK_FORCE_MS)); + SetDirty(); + break; + + case IDC_CHECK_MODE_FIXED: + m_pAEProps->set_ModeFixed(IsDlgButtonChecked(hwnd, IDC_CHECK_MODE_FIXED)); + SetDirty(); + break; + } + + return TRUE; + + case WM_DESTROY: + return TRUE; + + default: + return FALSE; + } + + return TRUE; +} + +// +// OnApplyChanges +// +HRESULT CMpegAudEncPropertyPageAdv::OnApplyChanges() +{ + m_pAEProps->get_EnforceVBRmin(&m_dwEnforceVBRmin); + m_pAEProps->get_VoiceMode(&m_dwVoiceMode); + m_pAEProps->get_KeepAllFreq(&m_dwKeepAllFreq); + m_pAEProps->get_StrictISO(&m_dwStrictISO); + m_pAEProps->get_ChannelMode(&m_dwChannelMode); + m_pAEProps->get_ForceMS(&m_dwForceMS); + m_pAEProps->get_NoShortBlock(&m_dwNoShortBlock); + m_pAEProps->get_XingTag(&m_dwXingTag); + m_pAEProps->get_ModeFixed(&m_dwModeFixed); + m_pAEProps->SaveAudioEncoderPropertiesToRegistry(); + + m_pAEProps->ApplyChanges(); + + return S_OK; +} + +// +// Initialize dialogbox controls with proper values +// +void CMpegAudEncPropertyPageAdv::InitPropertiesDialog(HWND hwndParent) +{ + EnableControls(hwndParent, TRUE); + + // + // initialize radio bottons + // + DWORD dwChannelMode; + m_pAEProps->get_ChannelMode(&dwChannelMode); + CheckRadioButton(hwndParent, IDC_RADIO_STEREO, IDC_RADIO_MONO, IDC_RADIO_STEREO + dwChannelMode); + + if (dwChannelMode == MPG_MD_JOINT_STEREO) + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), TRUE); + else + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), FALSE); + + // + // initialize checkboxes + // + DWORD dwEnforceVBRmin; + m_pAEProps->get_EnforceVBRmin(&dwEnforceVBRmin); + CheckDlgButton(hwndParent, IDC_CHECK_ENFORCE_MIN, dwEnforceVBRmin ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwVoiceMode; + m_pAEProps->get_VoiceMode(&dwVoiceMode); + CheckDlgButton(hwndParent, IDC_CHECK_VOICE, dwVoiceMode ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwKeepAllFreq; + m_pAEProps->get_KeepAllFreq(&dwKeepAllFreq); + CheckDlgButton(hwndParent, IDC_CHECK_KEEP_ALL_FREQ, dwKeepAllFreq ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwStrictISO; + m_pAEProps->get_StrictISO(&dwStrictISO); + CheckDlgButton(hwndParent, IDC_CHECK_STRICT_ISO, dwStrictISO ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwNoShortBlock; + m_pAEProps->get_NoShortBlock(&dwNoShortBlock); + CheckDlgButton(hwndParent, IDC_CHECK_DISABLE_SHORT_BLOCK, dwNoShortBlock ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwXingEnabled; + m_pAEProps->get_XingTag(&dwXingEnabled); + CheckDlgButton(hwndParent, IDC_CHECK_XING_TAG, dwXingEnabled ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwForceMS; + m_pAEProps->get_ForceMS(&dwForceMS); + CheckDlgButton(hwndParent, IDC_CHECK_FORCE_MS, dwForceMS ? BST_CHECKED : BST_UNCHECKED); + + DWORD dwModeFixed; + m_pAEProps->get_ModeFixed(&dwModeFixed); + CheckDlgButton(hwndParent, IDC_CHECK_MODE_FIXED, dwModeFixed ? BST_CHECKED : BST_UNCHECKED); +} + + +//////////////////////////////////////////////////////////////// +// EnableControls +//////////////////////////////////////////////////////////////// +void CMpegAudEncPropertyPageAdv::EnableControls(HWND hwndParent, bool bEnable) +{ + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_ENFORCE_MIN), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_STEREO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_JSTEREO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_DUAL), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_RADIO_MONO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_FORCE_MS), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_VOICE), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_KEEP_ALL_FREQ), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_STRICT_ISO), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_DISABLE_SHORT_BLOCK), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_XING_TAG), bEnable); + EnableWindow(GetDlgItem(hwndParent, IDC_CHECK_MODE_FIXED), bEnable); +} + +// +// SetDirty +// +// notifies the property page site of changes + +void CMpegAudEncPropertyPageAdv::SetDirty() +{ + m_bDirty = TRUE; + if (m_pPageSite) + m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); +} + diff --git a/lame-3.97/dshow/PropPage_adv.h b/lame-3.97/dshow/PropPage_adv.h new file mode 100644 index 0000000..f311786 --- /dev/null +++ b/lame-3.97/dshow/PropPage_adv.h @@ -0,0 +1,53 @@ +/* + * LAME MP3 encoder for DirectShow + * Advanced property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +class CMpegAudEncPropertyPageAdv : public CBasePropertyPage +{ + +public: + static CUnknown *CreateInstance( LPUNKNOWN punk, HRESULT *phr ); + CMpegAudEncPropertyPageAdv( LPUNKNOWN punk, HRESULT *phr ); + + HRESULT OnConnect(IUnknown *pUnknown); + HRESULT OnDisconnect(); + HRESULT OnActivate(); + HRESULT OnDeactivate(); + HRESULT OnApplyChanges(); + BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + +private: + void InitPropertiesDialog(HWND hwndParent); + void EnableControls(HWND hwndParent, bool bEnable); + void SetDirty(void); + + DWORD m_dwEnforceVBRmin; + DWORD m_dwVoiceMode; + DWORD m_dwKeepAllFreq; + DWORD m_dwStrictISO; + DWORD m_dwNoShortBlock; + DWORD m_dwXingTag; + DWORD m_dwChannelMode; + DWORD m_dwForceMS; + DWORD m_dwModeFixed; + + IAudioEncoderProperties *m_pAEProps; +}; diff --git a/lame-3.97/dshow/Property.rc b/lame-3.97/dshow/Property.rc new file mode 100644 index 0000000..45ef3e0 --- /dev/null +++ b/lame-3.97/dshow/Property.rc @@ -0,0 +1,294 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +#include "resource.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Russian resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) +#ifdef _WIN32 +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +#pragma code_page(1251) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_AUDIOENCPROPS DIALOGEX 0, 0, 228, 121 +STYLE WS_CHILD | WS_VISIBLE +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + CONTROL "Constant Bit Rate",IDC_RADIO_CBR,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,4,2,71,10 + CONTROL "Variable Bit Rate",IDC_RADIO_VBR,"Button", + BS_AUTORADIOBUTTON,4,31,69,10 + COMBOBOX IDC_COMBO_CBR,52,14,76,92,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_GROUP | WS_TABSTOP + COMBOBOX IDC_COMBO_VBRMIN,52,44,76,85,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO_VBRMAX,52,62,76,86,CBS_DROPDOWNLIST | + CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP, + WS_EX_TRANSPARENT + CONTROL "Copyright",IDC_CHECK_COPYRIGHT,"Button",BS_AUTOCHECKBOX | + WS_GROUP | WS_TABSTOP,151,39,45,10 + CONTROL "Original/Copy",IDC_CHECK_ORIGINAL,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,151,51,59,10 + CONTROL "CRC Protected",IDC_CHECK_CRC,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,151,63,63,10 + CONTROL "Slider1",IDC_SLIDER_QUALITY,"msctls_trackbar32", + TBS_BOTH | TBS_NOTICKS | WS_GROUP | WS_TABSTOP,66,101,96, + 15 + LTEXT "Kbit/s",IDC_STATIC,4,16,22,8 + CONTROL "Min",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,4, + 46,13,11 + LTEXT "Max",IDC_STATIC,4,64,16,11 + LTEXT "Encoding Quality",IDC_STATIC,4,105,54,8,NOT WS_GROUP + LTEXT "0",IDC_TEXT_QUALITY,170,104,47,10 + COMBOBOX IDC_COMBO_SAMPLE_RATE,151,14,59,104,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + CONTROL "Target Sample Rate",IDC_STATIC,"Static", + SS_LEFTNOWORDWRAP | NOT WS_VISIBLE | WS_GROUP,152,2,66,8 + COMBOBOX IDC_COMBO_VBRq,52,80,76,90,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + LTEXT "VBR Quality",IDC_STATIC,4,82,40,8 + CONTROL "Force Mono",IDC_FORCE_MONO,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,151,75,54,10 + CONTROL "Set Duration",IDC_SET_DURATION,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,151,88,55,10 +END + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""resource.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_AUDIOENCPROPS, DIALOG + BEGIN + RIGHTMARGIN, 223 + BOTTOMMARGIN, 118 + END +END +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,54,50801 + PRODUCTVERSION 1,0,54,50801 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "LAME DirectShow Filter\0" + VALUE "CompanyName", "\0" + VALUE "FileDescription", "LAME Audio Encoder\0" + VALUE "FileVersion", "1, 0, 54, 50801\0" + VALUE "InternalName", "LAME Audio Encoder\0" + VALUE "LegalCopyright", "Copyright � 2005 Elecard Ltd.\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "lame.ax\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "LAME Audio Encoder\0" + VALUE "ProductVersion", "1, 0, 54, 50801\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_AUDIO_PROPS_TITLE "MPEG Layer III Audio Encoder" + IDS_AUDIO_ADVANCED_TITLE "Advanced" + IDS_ABOUT "About" +END + +#endif // Russian resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ADVPROPS DIALOG DISCARDABLE 0, 0, 228, 121 +STYLE WS_CHILD | WS_VISIBLE +FONT 8, "MS Sans Serif" +BEGIN + CONTROL "Mono",IDC_RADIO_MONO,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,109,93,34,10 + CONTROL "Standard stereo",IDC_RADIO_STEREO,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,36,67,11 + CONTROL "Joint stereo",IDC_RADIO_JSTEREO,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,51,60,10 + GROUPBOX "Mode Selection",IDC_STATIC,103,26,118,82,BS_CENTER | + WS_GROUP + CONTROL "Strictly enforce VBR min bitrate",IDC_CHECK_ENFORCE_MIN, + "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,5,113, + 10 + CONTROL "Voice encoding mode",IDC_CHECK_VOICE,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,21,85,10 + CONTROL "Keep all frequencies",IDC_CHECK_KEEP_ALL_FREQ,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,37,80,10 + CONTROL "Strict ISO compliance",IDC_CHECK_STRICT_ISO,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,53,84,10 + CONTROL "Disable short blocks",IDC_CHECK_DISABLE_SHORT_BLOCK, + "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,69,79, + 10 + CONTROL "Enable Xing VBR tag",IDC_CHECK_XING_TAG,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,85,83,10 + CONTROL "Dual channel",IDC_RADIO_DUAL,"Button", + BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,109,79,58,10 + CONTROL "Forced mid / side stereo",IDC_CHECK_FORCE_MS,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,122,65,92,10 + CONTROL "Mode Fixed",IDC_CHECK_MODE_FIXED,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,7,101,53,10 +END + +IDD_ABOUT DIALOG DISCARDABLE 0, 0, 228, 121 +STYLE WS_CHILD +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "LAME Ain't MP3 Encoder (3.96 engine)",IDC_LAME_VER,7,8, + 208,8 + LTEXT "LAME Project Homepage: http://www.mp3dev.org", + IDC_LAME_URL,7,19,192,8 + EDITTEXT IDC_LAME_LA,7,31,214,83,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_ADVPROPS, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 221 + TOPMARGIN, 5 + BOTTOMMARGIN, 114 + END + + IDD_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 221 + TOPMARGIN, 7 + BOTTOMMARGIN, 114 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON2 ICON DISCARDABLE "elogo.ico" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/lame-3.97/dshow/README b/lame-3.97/dshow/README new file mode 100644 index 0000000..04a0db1 --- /dev/null +++ b/lame-3.97/dshow/README @@ -0,0 +1,23 @@ +LAME DirectShow Filter +Version 1.0 + +Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + +This is a Microsoft(R) DirectShow(R) wrapper filter for +LAME library. It adds DirectShow interface to the +library and two property pages so you can tune some +encoding parameters. + +We are interested to here from you, when you use this package +as part of another project. + +Filter Homepage http://www.elecard.com/products/layer3encoder.shtml + +Vitaly Ivanov vitaly.ivanov@elecard.net.ru +Peter Gubanov peter@elecard.net.ru + +COPYING + +You may use this source under GPL terms! + + diff --git a/lame-3.97/dshow/REG.CPP b/lame-3.97/dshow/REG.CPP new file mode 100644 index 0000000..c85d130 --- /dev/null +++ b/lame-3.97/dshow/REG.CPP @@ -0,0 +1,286 @@ +/* + * LAME MP3 encoder for DirectShow + * Registry calls handling class + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include + +#include "reg.h" + + +CRegKey::CRegKey(void) +{ + m_hRootKey = NULL; + m_name[0] = 0; + m_hKey = NULL; +} + + +CRegKey::CRegKey(HKEY rt, PTSTR pName) +{ + m_hRootKey = rt; + m_hKey = NULL; + if(pName) + { + lstrcpy(m_name, pName); + Open(m_hRootKey, m_name); + } + else + m_name[0] = 0; +} + + +CRegKey::~CRegKey(void) +{ + Close(); +} + + + +BOOL CRegKey::Open(HKEY rootKey, PTSTR pName) +{ + if(m_hKey) + Close(); + + m_hRootKey = rootKey; + if(pName) + { + lstrcpy(m_name, pName); + if(RegOpenKeyEx(m_hRootKey, m_name, 0, KEY_ALL_ACCESS, &m_hKey) != ERROR_SUCCESS) + { + m_hKey = NULL; + return FALSE; + } + } + else + { + m_name[0] = 0; + m_hKey = m_hRootKey; + } + + return TRUE; +} + + +BOOL CRegKey::Create(HKEY rootKey, PTSTR pName) +{ + if(m_hKey) + Close(); + + m_hRootKey = rootKey; + if(pName) + { + lstrcpy(m_name, pName); + if(RegCreateKeyEx(m_hRootKey, pName, NULL, + TEXT(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, + &m_hKey, NULL) != ERROR_SUCCESS) + { + + m_hKey = NULL; + return FALSE; + } + } + else + { + m_name[0] = 0; + } + m_hRootKey = m_hKey; + + return TRUE; +} + + +BOOL CRegKey::Open(PTSTR an) +{ + TCHAR achName[MAX_PATH]; + + if(m_hKey) + Close(); + + lstrcpy(achName, m_name); + if(an) + lstrcat(achName, an); + + if(RegOpenKeyEx(m_hRootKey, achName, 0, KEY_ALL_ACCESS, &m_hKey) != ERROR_SUCCESS) + { + m_hKey = NULL; + return FALSE; + } + + return TRUE; +} + + +BOOL CRegKey::Create(PTSTR an) +{ + TCHAR achName[MAX_PATH]; + + if(m_hKey) + Close(); + + lstrcpy(achName, m_name); + if(an) + lstrcat(achName, an); + + if(RegCreateKeyEx(m_hRootKey, achName, NULL, + TEXT(""), REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, + &m_hKey, NULL) != ERROR_SUCCESS) + { + + m_hKey = NULL; + return FALSE; + } + + return TRUE; +} + + +BOOL CRegKey::Close(void) +{ + if(m_hKey && m_hKey != m_hRootKey) + RegCloseKey(m_hKey); + + m_hKey = 0; + return TRUE; +} + +BOOL CRegKey::getFlag(PTSTR valuename, BOOL bDefault) +{ + if(!m_hKey) + return bDefault; + + DWORD cbData; + DWORD dwData; + DWORD dwType; + + cbData = sizeof(dwData); + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS) + { + if(dwType == REG_DWORD) + return (dwData) ? TRUE : FALSE; + } + return bDefault; +} + + +void CRegKey::setFlag(PTSTR valuename, BOOL bValue, BOOL bDefault) +{ + if(getFlag(valuename, bDefault) == bValue ) + return; + + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&bValue, sizeof(bValue)); +} + + +void CRegKey::setFlag(PTSTR valuename, BOOL bValue) +{ + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&bValue, sizeof(bValue)); +} + + +DWORD CRegKey::getDWORD(PTSTR valuename, DWORD bDefault) +{ + DWORD dwData; + DWORD cbData; + DWORD dwType; + + if(!m_hKey) + return bDefault; + + cbData = sizeof(dwData); + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (PBYTE)&dwData, &cbData) == ERROR_SUCCESS) { + if(dwType == REG_DWORD) + { + return (UINT)dwData; + } + } + + return bDefault; +} + + +void CRegKey::setDWORD(PTSTR valuename, DWORD dwValue, DWORD dwDefault) +{ + DWORD dwData = dwValue; + + if(getDWORD(valuename, dwDefault) == dwValue) + return; + + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&dwData, sizeof(dwData)); +} + + +void CRegKey::setDWORD(PTSTR valuename, DWORD dwValue) +{ + DWORD dwData = dwValue; + RegSetValueEx(m_hKey, valuename, 0, REG_DWORD, (PBYTE)&dwData, sizeof(dwData)); +} + + +DWORD CRegKey::getString(PTSTR valuename, PTSTR pDefault, PTSTR pResult, int cbSize) +{ + DWORD dwType; + + cbSize *= sizeof(TCHAR); // for unicode strings + + if(m_hKey) + { + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (LPBYTE)pResult, (LPDWORD)&cbSize) == ERROR_SUCCESS) + { + if(dwType == REG_SZ) + { + return(cbSize - 1); + } + } + } + lstrcpy(pResult, pDefault); + return lstrlen(pDefault); +} + + +void CRegKey::setString(PTSTR valuename, PTSTR pData) +{ + RegSetValueEx(m_hKey, valuename, 0, REG_SZ, (LPBYTE)pData, (lstrlen(pData) + 1)*sizeof(TCHAR)); +} + + +DWORD CRegKey::getBinary(PTSTR valuename, PVOID pDefault, PVOID pResult, int cbSize) +{ + DWORD dwType; + + if(RegQueryValueEx(m_hKey, valuename, NULL, &dwType, (LPBYTE)pResult, (LPDWORD)&cbSize) == ERROR_SUCCESS) + { + if(dwType == REG_BINARY) + { + return cbSize; + } + } + + memmove(pResult, pDefault, cbSize); + return cbSize; +} + + +DWORD CRegKey::setBinary(PTSTR valuename, PVOID pData, int cbSize) +{ + RegSetValueEx(m_hKey, valuename, 0, REG_BINARY, (LPBYTE)pData, cbSize); + return cbSize; +} + diff --git a/lame-3.97/dshow/REG.H b/lame-3.97/dshow/REG.H new file mode 100644 index 0000000..7aea47f --- /dev/null +++ b/lame-3.97/dshow/REG.H @@ -0,0 +1,90 @@ +/* + * LAME MP3 encoder for DirectShow + * Registry calls handling class + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __REG__ +#define __REG__ + +class CRegKey +{ +protected: + TCHAR m_name[MAX_PATH]; + HKEY m_hKey; + HKEY m_hRootKey; +public: + CRegKey(void); + CRegKey(HKEY rootKey, PTSTR pName); + ~CRegKey(void); + + BOOL Open(HKEY rootKey, PTSTR pName); + BOOL Create(HKEY rootKey, PTSTR pName); + BOOL Open(PTSTR an = NULL); + BOOL Create(PTSTR an = NULL); + BOOL Close(void); + + operator HKEY () const { return m_hKey; }; + + BOOL getFlag(PTSTR valuename, BOOL bDefault); + void setFlag(PTSTR valuename, BOOL bValue, BOOL bDefault); + void setFlag(PTSTR valuename, BOOL bValue); + DWORD getDWORD(PTSTR valuename, DWORD bDefault); + void setDWORD(PTSTR valuename, DWORD dwValue); + void setDWORD(PTSTR valuename, DWORD dwValue, DWORD dwDefault); + DWORD getString(PTSTR valuename, PTSTR pDefault, PTSTR pResult, int cbSize); + void setString(PTSTR valuename, PTSTR pData); + DWORD getBinary(PTSTR valuename, PVOID pDefault, PVOID pResult, int cbSize); + DWORD setBinary(PTSTR valuename, PVOID pData, int cbSize); +}; + +class CRegEnumKey +{ +public: + CRegEnumKey(HKEY hKey) + { + m_hKey = hKey; + m_dwIndex = 0; + } + + ~CRegEnumKey() + { + } + + LONG Next(LPTSTR pszStr, DWORD cbName) + { + FILETIME ftLastWriteTime; + LONG lRet = RegEnumKeyEx(m_hKey, m_dwIndex, pszStr, + &cbName, NULL, NULL, NULL, &ftLastWriteTime); + + m_dwIndex++; + return lRet; + } + + + void Reset(void) + { + m_dwIndex = 0; + } +protected: + HKEY m_hKey; + DWORD m_dwIndex; +}; + +#endif // __REG__ diff --git a/lame-3.97/dshow/UIDS.H b/lame-3.97/dshow/UIDS.H new file mode 100644 index 0000000..8e92631 --- /dev/null +++ b/lame-3.97/dshow/UIDS.H @@ -0,0 +1,41 @@ +/* + * LAME MP3 encoder for DirectShow + * CLSIDs of the filter and property pages + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +// {b8d27088-df5f-4b7c-98dc-0e91a1696286} +DEFINE_GUID(CLSID_LAMEDShowFilter, +0xb8d27088, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); + + +// {b8d27089-df5f-4b7c-98dc-0e91a1696286} +DEFINE_GUID(CLSID_LAMEDShow_PropertyPage, +0xb8d27089, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); + +// {b8d2708a-df5f-4b7c-98dc-0e91a1696286} +DEFINE_GUID(CLSID_LAMEDShow_PropertyPageAdv, +0xb8d2708a, 0xff5f, 0x4b7c, 0x98, 0xdc, 0x0e, 0x91, 0xa1, 0x69, 0x62, 0x86); + +// {FE69EDD1-04CB-11d5-994A-000021D1FE2F} +DEFINE_GUID(CLSID_LAMEDShow_About, +0xfe69edd1, 0xf4cb, 0x11d5, 0x99, 0x4a, 0x0, 0x0, 0x21, 0xd1, 0xfe, 0x2f); + +DEFINE_GUID(MEDIASUBTYPE_MP3, +0x00000055, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71); \ No newline at end of file diff --git a/lame-3.97/dshow/aboutprp.cpp b/lame-3.97/dshow/aboutprp.cpp new file mode 100644 index 0000000..6297ed1 --- /dev/null +++ b/lame-3.97/dshow/aboutprp.cpp @@ -0,0 +1,194 @@ +/* + * LAME MP3 encoder for DirectShow + * About property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include +#include "iaudioprops.h" +#include "aboutprp.h" +#include "mpegac.h" +#include "resource.h" +#include "Reg.h" + + +// ------------------------------------------------------------------------- +// CMAEAbout +// ------------------------------------------------------------------------- + + +CHAR lpszText[] = "This library is free software; you can redistribute it \r\n" + "and/or modify it under the terms of the GNU \r\n" + "Library General Public License\r\n" + "as published by the Free Software Foundation;\r\n" + "either version 2 of the License,\r\n" + "or (at your option) any later version.\r\n" + "\r\n" + "This library is distributed in the hope that it will be useful,\r\n" + "but WITHOUT ANY WARRANTY;\r\n" + "without even the implied warranty of MERCHANTABILITY or \r\n" + "FITNESS FOR A PARTICULAR PURPOSE. See the GNU \r\n" + "Library General Public License for more details.\r\n" + "\r\n" + "You should have received a copy of the GNU\r\n" + "Library General Public License\r\n" + "along with this library; if not, write to the\r\n" + "Free Software Foundation,\r\n" + "Inc., 59 Temple Place - Suite 330,\r\n" + "Boston, MA 02111-1307, USA.\r\n"; + +// +// CreateInstance +// +CUnknown * WINAPI CMAEAbout::CreateInstance(LPUNKNOWN lpunk, HRESULT *phr) +{ + CUnknown *punk = new CMAEAbout(lpunk, phr); + if (punk == NULL) { + *phr = E_OUTOFMEMORY; + } + + return punk; +} + + +// +// Constructor +// +// Creaete a Property page object for the MPEG options +CMAEAbout::CMAEAbout(LPUNKNOWN lpunk, HRESULT *phr) + : CBasePropertyPage(NAME("About LAME Ain't MP3 Encoder"), lpunk, + IDD_ABOUT,IDS_ABOUT) + , m_fWindowInactive(TRUE) +{ + ASSERT(phr); + +// InitCommonControls(); +} + +// +// OnConnect +// +// Give us the filter to communicate with + +HRESULT CMAEAbout::OnConnect(IUnknown *pUnknown) +{ + return NOERROR; +} + + +// +// OnDisconnect +// +// Release the interface + +HRESULT CMAEAbout::OnDisconnect() +{ + // Release the interface + + return NOERROR; +} + + +// +// OnActivate +// +// Called on dialog creation + +HRESULT CMAEAbout::OnActivate(void) +{ + // Add text to the window. + m_fWindowInactive = FALSE; + SendDlgItemMessage(m_hwnd, IDC_LAME_LA, WM_SETTEXT, 0, (LPARAM)lpszText); + + + CHAR strbuf[250]; + + sprintf(strbuf, "LAME Ain't MP3 Encoder (%s)", get_lame_version()); + SendDlgItemMessage(m_hwnd, IDC_LAME_VER, WM_SETTEXT, 0, (LPARAM)strbuf); + + sprintf(strbuf, "LAME Project Homepage: %s", get_lame_url()); + SendDlgItemMessage(m_hwnd, IDC_LAME_URL, WM_SETTEXT, 0, (LPARAM)strbuf); + + return NOERROR; +} + +// +// OnDeactivate +// +// Called on dialog destruction + +HRESULT CMAEAbout::OnDeactivate(void) +{ + m_fWindowInactive = TRUE; + return NOERROR; +} + + +// +// OnApplyChanges +// +// User pressed the Apply button, remember the current settings + +HRESULT CMAEAbout::OnApplyChanges(void) +{ + return NOERROR; +} + + +// +// OnReceiveMessages +// +// Handles the messages for our property window + +BOOL CMAEAbout::OnReceiveMessage( HWND hwnd + , UINT uMsg + , WPARAM wParam + , LPARAM lParam) +{ + if (m_fWindowInactive) + return FALSE; + + switch (uMsg) + { + case WM_DESTROY: + return TRUE; + + default: + return FALSE; + } + + return TRUE; +} + +// +// SetDirty +// +// notifies the property page site of changes + +void CMAEAbout::SetDirty() +{ + m_bDirty = TRUE; + + if (m_pPageSite) + m_pPageSite->OnStatusChange(PROPPAGESTATUS_DIRTY); +} + diff --git a/lame-3.97/dshow/aboutprp.h b/lame-3.97/dshow/aboutprp.h new file mode 100644 index 0000000..664b50e --- /dev/null +++ b/lame-3.97/dshow/aboutprp.h @@ -0,0 +1,41 @@ +/* + * LAME MP3 encoder for DirectShow + * About property page + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +class CMAEAbout: public CBasePropertyPage +{ +public: + + CMAEAbout(LPUNKNOWN lpUnk, HRESULT *phr); + static CUnknown * WINAPI CreateInstance(LPUNKNOWN lpunk, HRESULT *phr); + + HRESULT OnActivate(); + HRESULT OnConnect(IUnknown *pUnknown); + HRESULT OnDisconnect(); + HRESULT OnDeactivate(); + HRESULT OnApplyChanges(); + BOOL OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); + +private: + void SetDirty(void); + + BOOL m_fWindowInactive; +}; diff --git a/lame-3.97/dshow/dshow.dsp b/lame-3.97/dshow/dshow.dsp new file mode 100644 index 0000000..7d81bf5 --- /dev/null +++ b/lame-3.97/dshow/dshow.dsp @@ -0,0 +1,187 @@ +# Microsoft Developer Studio Project File - Name="LAME DShow" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=LAME DShow - Win32 Release +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "dshow.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "dshow.mak" CFG="LAME DShow - Win32 Release" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "LAME DShow - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "LAME DShow - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "LAME DShow - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir ".\Release" +# PROP BASE Intermediate_Dir ".\Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir ".\Release" +# PROP Intermediate_Dir ".\Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /Gz /MD /W3 /GX /O2 /D "NDEBUG" /D "INC_OLE2" /D "STRICT" /D WINVER=0x0400 /D _X86_=1 /D "_WINDOWS" /D "WIN32" /D "STDC_HEADERS" /FR /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /win32 +# ADD MTL /D "NDEBUG" /mktyplib203 /win32 +# SUBTRACT MTL /nologo +# ADD BASE RSC /l 0x419 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# SUBTRACT BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 strmbase.lib msvcrt.lib libcmt.lib vfw32.lib winmm.lib kernel32.lib advapi32.lib version.lib largeint.lib Comdlg32.lib user32.lib gdi32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib quartz.lib measure.lib /base:"0x1c400000" /version:0.3 /entry:"DllEntryPoint@12" /subsystem:windows /dll /pdb:none /machine:I386 /nodefaultlib /out:".\lame.ax" +# SUBTRACT LINK32 /nologo + +!ELSEIF "$(CFG)" == "LAME DShow - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir ".\Debug" +# PROP BASE Intermediate_Dir ".\Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir ".\Debug" +# PROP Intermediate_Dir ".\Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c +# ADD CPP /nologo /Gz /MDd /W3 /GX /ZI /Od /D "DEBUG" /D "INC_OLE2" /D WINVER=0x0400 /D _X86_=1 /D "STRICT" /D "_WINDOWS" /D "WIN32" /D "STDC_HEADERS" /FR /YX /FD /c +# ADD BASE MTL /nologo /D "_DEBUG" /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x419 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 +# ADD LINK32 strmbasD.lib msvcrtd.lib libcmt.lib vfw32.lib winmm.lib kernel32.lib advapi32.lib version.lib largeint.lib Comdlg32.lib user32.lib gdi32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib quartz.lib measure.lib /nologo /base:"0x1c400000" /entry:"DllEntryPoint@12" /subsystem:windows /dll /incremental:no /debug /machine:I386 /nodefaultlib /out:".\lame.ax" +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "LAME DShow - Win32 Release" +# Name "LAME DShow - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" +# Begin Source File + +SOURCE=.\aboutprp.cpp +# End Source File +# Begin Source File + +SOURCE=.\Encoder.cpp +# End Source File +# Begin Source File + +SOURCE=.\Mpegac.cpp +# End Source File +# Begin Source File + +SOURCE=.\Mpegac.def +# End Source File +# Begin Source File + +SOURCE=.\Property.rc +# End Source File +# Begin Source File + +SOURCE=.\PropPage.cpp +# End Source File +# Begin Source File + +SOURCE=.\PropPage_adv.cpp +# End Source File +# Begin Source File + +SOURCE=.\REG.CPP +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" +# Begin Source File + +SOURCE=.\aboutprp.h +# End Source File +# Begin Source File + +SOURCE=.\Encoder.h +# End Source File +# Begin Source File + +SOURCE=.\iaudioprops.h +# End Source File +# Begin Source File + +SOURCE=..\include\lame.h +# End Source File +# Begin Source File + +SOURCE=.\Mpegac.h +# End Source File +# Begin Source File + +SOURCE=.\PropPage.h +# End Source File +# Begin Source File + +SOURCE=.\PropPage_adv.h +# End Source File +# Begin Source File + +SOURCE=.\reg.h +# End Source File +# Begin Source File + +SOURCE=.\resource.h +# End Source File +# Begin Source File + +SOURCE=.\uids.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\elogo.ico +# End Source File +# End Group +# Begin Source File + +SOURCE=.\README +# End Source File +# End Target +# End Project diff --git a/lame-3.97/dshow/dshow.dsw b/lame-3.97/dshow/dshow.dsw new file mode 100644 index 0000000..49d2e4f --- /dev/null +++ b/lame-3.97/dshow/dshow.dsw @@ -0,0 +1,59 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "LAME DShow"=.\dshow.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "libmp3lame"=..\libmp3lame\libmp3lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "mpglib"=..\mpglib\mpglib_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/dshow/elogo.ico b/lame-3.97/dshow/elogo.ico new file mode 100644 index 0000000..1eae73d --- /dev/null +++ b/lame-3.97/dshow/elogo.ico Binary files differ diff --git a/lame-3.97/dshow/iaudioprops.h b/lame-3.97/dshow/iaudioprops.h new file mode 100644 index 0000000..1532245 --- /dev/null +++ b/lame-3.97/dshow/iaudioprops.h @@ -0,0 +1,263 @@ +/* + * LAME MP3 encoder for DirectShow + * Interface definition + * + * Copyright (c) 2000-2005 Marie Orlova, Peter Gubanov, Vitaly Ivanov, Elecard Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +// A custom interface to allow the user to modify audio +// encoder properties +#ifndef __IAUDIOPROPERTIES__ +#define __IAUDIOPROPERTIES__ +#ifdef __cplusplus +extern "C" { +#endif + // {ca7e9ef0-1cbe-11d3-8d29-00a0c94bbfee} + DEFINE_GUID(IID_IAudioEncoderProperties, + 0xca7e9ef0, 0x1cbe, 0x11d3, 0x8d, 0x29, 0x00, 0xa0, 0xc9, 0x4b, 0xbf, 0xee); + // + // Configuring MPEG audio encoder parameters with unspecified + // input stream type may lead to misbehaviour and confusing + // results. In most cases the specified parameters will be + // overridden by defaults for the input media type. + // To archive proper results use this interface on the + // audio encoder filter with input pin connected to the valid + // source. + // + DECLARE_INTERFACE_(IAudioEncoderProperties, IUnknown) + { + // Is PES output enabled? Return TRUE or FALSE + STDMETHOD(get_PESOutputEnabled) (THIS_ + DWORD *dwEnabled + ) PURE; + // Enable/disable PES output + STDMETHOD(set_PESOutputEnabled) (THIS_ + DWORD dwEnabled + ) PURE; + // Get target compression bitrate in Kbits/s + STDMETHOD(get_Bitrate) (THIS_ + DWORD *dwBitrate + ) PURE; + // Set target compression bitrate in Kbits/s + // Not all numbers available! See spec for details! + STDMETHOD(set_Bitrate) (THIS_ + DWORD dwBitrate + ) PURE; + // Get variable bitrate flag + STDMETHOD(get_Variable) (THIS_ + DWORD *dwVariable + ) PURE; + // Set variable bitrate flag + STDMETHOD(set_Variable) (THIS_ + DWORD dwVariable + ) PURE; + // Get variable bitrate in Kbits/s + STDMETHOD(get_VariableMin) (THIS_ + DWORD *dwmin + ) PURE; + // Set variable bitrate in Kbits/s + // Not all numbers available! See spec for details! + STDMETHOD(set_VariableMin) (THIS_ + DWORD dwmin + ) PURE; + // Get variable bitrate in Kbits/s + STDMETHOD(get_VariableMax) (THIS_ + DWORD *dwmax + ) PURE; + // Set variable bitrate in Kbits/s + // Not all numbers available! See spec for details! + STDMETHOD(set_VariableMax) (THIS_ + DWORD dwmax + ) PURE; + // Get compression quality + STDMETHOD(get_Quality) (THIS_ + DWORD *dwQuality + ) PURE; + // Set compression quality + // Not all numbers available! See spec for details! + STDMETHOD(set_Quality) (THIS_ + DWORD dwQuality + ) PURE; + // Get VBR quality + STDMETHOD(get_VariableQ) (THIS_ + DWORD *dwVBRq + ) PURE; + // Set VBR quality + // Not all numbers available! See spec for details! + STDMETHOD(set_VariableQ) (THIS_ + DWORD dwVBRq + ) PURE; + // Get source sample rate. Return E_FAIL if input pin + // in not connected. + STDMETHOD(get_SourceSampleRate) (THIS_ + DWORD *dwSampleRate + ) PURE; + // Get source number of channels. Return E_FAIL if + // input pin is not connected. + STDMETHOD(get_SourceChannels) (THIS_ + DWORD *dwChannels + ) PURE; + // Get sample rate for compressed audio bitstream + STDMETHOD(get_SampleRate) (THIS_ + DWORD *dwSampleRate + ) PURE; + // Set sample rate. See genaudio spec for details + STDMETHOD(set_SampleRate) (THIS_ + DWORD dwSampleRate + ) PURE; + // Get channel mode. See genaudio.h for details + STDMETHOD(get_ChannelMode) (THIS_ + DWORD *dwChannelMode + ) PURE; + // Set channel mode + STDMETHOD(set_ChannelMode) (THIS_ + DWORD dwChannelMode + ) PURE; + // Is CRC enabled? + STDMETHOD(get_CRCFlag) (THIS_ + DWORD *dwFlag + ) PURE; + // Enable/disable CRC + STDMETHOD(set_CRCFlag) (THIS_ + DWORD dwFlag + ) PURE; + // Force mono + STDMETHOD(get_ForceMono) (THIS_ + DWORD *dwFlag + ) PURE; + // Force mono + STDMETHOD(set_ForceMono) (THIS_ + DWORD dwFlag + ) PURE; + // Set duration + STDMETHOD(get_SetDuration) (THIS_ + DWORD *dwFlag + ) PURE; + // Set duration + STDMETHOD(set_SetDuration) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'original' flag + STDMETHOD(get_OriginalFlag) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_OriginalFlag) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'copyright' flag + STDMETHOD(get_CopyrightFlag) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_CopyrightFlag) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Enforce VBR Minimum bitrate' flag + STDMETHOD(get_EnforceVBRmin) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_EnforceVBRmin) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Voice' flag + STDMETHOD(get_VoiceMode) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_VoiceMode) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Keep All Frequencies' flag + STDMETHOD(get_KeepAllFreq) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_KeepAllFreq) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Strict ISO complience' flag + STDMETHOD(get_StrictISO) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_StrictISO) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'Disable short block' flag + STDMETHOD(get_NoShortBlock) (THIS_ + DWORD *dwDisable + ) PURE; + STDMETHOD(set_NoShortBlock) (THIS_ + DWORD dwDisable + ) PURE; + // Control 'Xing VBR Tag' flag + STDMETHOD(get_XingTag) (THIS_ + DWORD *dwXingTag + ) PURE; + STDMETHOD(set_XingTag) (THIS_ + DWORD dwXingTag + ) PURE; + // Control 'Forced mid/ side stereo' flag + STDMETHOD(get_ForceMS) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_ForceMS) (THIS_ + DWORD dwFlag + ) PURE; + // Control 'ModeFixed' flag + STDMETHOD(get_ModeFixed) (THIS_ + DWORD *dwFlag + ) PURE; + STDMETHOD(set_ModeFixed) (THIS_ + DWORD dwFlag + ) PURE; + + //Receive the block of encoder + //configuration parametres + STDMETHOD(get_ParameterBlockSize) (THIS_ + BYTE *pcBlock, DWORD *pdwSize + ) PURE; + // Set encoder configuration parametres + STDMETHOD(set_ParameterBlockSize) (THIS_ + BYTE *pcBlock, DWORD dwSize + ) PURE; + // Set default audio encoder parameters depending + // on current input stream type + STDMETHOD(DefaultAudioEncoderProperties) (THIS_ + ) PURE; + // By default the modified properties are not saved to + // registry immediately, so the filter needs to be + // forced to do this. Omitting this steps may lead to + // misbehavior and confusing results. + STDMETHOD(LoadAudioEncoderPropertiesFromRegistry) (THIS_ + ) PURE; + STDMETHOD(SaveAudioEncoderPropertiesToRegistry) (THIS_ + ) PURE; + // Determine, whether the filter can be configured. If this + // functions returs E_FAIL, input format hasn't been + // specified and filter behavior unpredicated. If S_OK, + // the filter could be configured with correct values. + STDMETHOD(InputTypeDefined) (THIS_ + ) PURE; + // Reconnects output pin (crucial for Fraunhofer MPEG Layer-3 Decoder) + STDMETHOD(ApplyChanges) (THIS_ + ) PURE; + }; +#ifdef __cplusplus +} +#endif +#endif // __IAUDIOPROPERTIES__ + + + diff --git a/lame-3.97/dshow/resource.h b/lame-3.97/dshow/resource.h new file mode 100644 index 0000000..06b219b --- /dev/null +++ b/lame-3.97/dshow/resource.h @@ -0,0 +1,57 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by Property.rc +// +#define IDS_AUDIO_PROPS_TITLE 3 +#define IDS_AUDIO_ADVANCED_TITLE 4 +#define IDS_ABOUT 5 +#define IDD_AUDIOENCPROPS 100 +#define IDD_ADVPROPS 102 +#define IDD_ABOUT 105 +#define IDI_ICON2 106 +#define IDC_COMBO_CBR 1004 +#define IDC_CHECK_COPYRIGHT 1007 +#define IDC_CHECK_ORIGINAL 1008 +#define IDC_CHECK_CRC 1009 +#define IDC_CHECK_PES 1010 +#define IDC_COMBO_VBRMIN 1013 +#define IDC_TITLE_TEXT 1016 +#define IDC_RADIO_CBR 1019 +#define IDC_RADIO_VBR 1020 +#define IDC_SLIDER_QUALITY 1021 +#define IDC_TEXT_QUALITY 1023 +#define IDC_COMBO_VBRMAX 1024 +#define IDC_COMBO_SAMPLE_RATE 1025 +#define IDC_COMBO_VBRq 1026 +#define IDC_RADIO_STEREO 1027 +#define IDC_RADIO_JSTEREO 1028 +#define IDC_RADIO_DUAL 1029 +#define IDC_RADIO_MONO 1030 +#define IDC_CHECK_ENFORCE_MIN 1031 +#define IDC_CHECK_VOICE 1032 +#define IDC_CHECK_KEEP_ALL_FREQ 1033 +#define IDC_CHECK_STRICT_ISO 1034 +#define IDC_CHECK_DISABLE_SHORT_BLOCK 1035 +#define IDC_CHECK_XING_TAG 1036 +#define IDC_CHECK_FORCE_MS 1037 +#define IDC_CHECK_MODE_FIXED 1038 +#define IDC_RICHEDIT_LAME 1039 +#define IDC_EDIT_TEXT 1044 +#define IDC_LAME_LA 1044 +#define IDC_FORCE_MONO 1045 +#define IDC_LAME_VER 1046 +#define IDC_LAME_URL 1047 +#define IDC_SET_DURATION 1048 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 107 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1049 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/lame-3.97/frontend/.svn/all-wcprops b/lame-3.97/frontend/.svn/all-wcprops new file mode 100644 index 0000000..a63a21d --- /dev/null +++ b/lame-3.97/frontend/.svn/all-wcprops @@ -0,0 +1,197 @@ +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/328/monitor/trunk/lame-3.97/frontend +END +portableio.c +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/portableio.c +END +brhist.h +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/brhist.h +END +get_audio.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/get_audio.c +END +lame_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/lame_vc6.dsp +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/328/monitor/trunk/lame-3.97/frontend/Makefile.in +END +console.c +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/console.c +END +portableio.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/portableio.h +END +get_audio.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/get_audio.h +END +depcomp +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/depcomp +END +console.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/console.h +END +mp3x_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/mp3x_vc6.dsp +END +lame_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/lame_vc7.vcproj +END +mp3x.c +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/mp3x.c +END +lametime.c +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/lametime.c +END +lametime.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/lametime.h +END +gpkplotting.c +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/gpkplotting.c +END +timestatus.c +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/timestatus.c +END +rtp.c +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/rtp.c +END +timestatus.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/timestatus.h +END +gpkplotting.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/gpkplotting.h +END +rtp.h +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/rtp.h +END +parse.c +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/parse.c +END +parse.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/parse.h +END +gtkanal.c +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/gtkanal.c +END +main.c +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/main.c +END +mp3rtp.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/mp3rtp.c +END +gtkanal.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/gtkanal.h +END +mp3x_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/mp3x_vc7.vcproj +END +amiga_mpega.c +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/amiga_mpega.c +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/Makefile.am +END +main.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/frontend/main.h +END +brhist.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/frontend/brhist.c +END diff --git a/lame-3.97/frontend/.svn/entries b/lame-3.97/frontend/.svn/entries new file mode 100644 index 0000000..dea30c9 --- /dev/null +++ b/lame-3.97/frontend/.svn/entries @@ -0,0 +1,1116 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/frontend +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +portableio.c +file + + + + +2012-01-23T14:07:03.948484Z +beb683368a0a366457fc7afb5ac47942 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +11079 + +brhist.h +file + + + + +2012-01-23T14:07:03.949489Z +a19526e2ff8274c1f1fd5c8c1d4fc5bb +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1926 + +get_audio.c +file + + + + +2012-01-23T14:07:03.949489Z +18746ec4303e67010f5df73d01fdf73c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +47434 + +lame_vc6.dsp +file + + + + +2012-01-23T14:07:03.949489Z +2a53fae8e58447092eab46284e3b84ef +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +7203 + +Makefile.in +file + + + + +2012-01-23T14:07:03.950488Z +13e3025292126f9ef36793532da46d75 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +23205 + +console.c +file + + + + +2012-01-23T14:07:03.950488Z +302e385e73f33c4747f0cb48516d8a4c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4729 + +portableio.h +file + + + + +2012-01-23T14:07:03.954495Z +c595b438aecc6553d6f4037d80f89392 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3664 + +get_audio.h +file + + + + +2012-01-23T14:07:03.954495Z +5be94bc1d966b297434f0d44bd63477a +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3114 + +depcomp +file + + + + +2012-01-23T14:07:03.954495Z +d7d8db17e074dcabf513d766b728993d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15936 + +console.h +file + + + + +2012-01-23T14:07:03.955489Z +41038d903d254018642e5731721859a0 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +942 + +mp3x_vc6.dsp +file + + + + +2012-01-23T14:07:03.955489Z +05ed4862f5e41650c44747bb25829226 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +6733 + +lame_vc7.vcproj +file + + + + +2012-01-23T14:07:03.955489Z +84472652ccfd3543bd04c851de08b350 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +32099 + +mp3x.c +file + + + + +2012-01-23T14:07:03.956486Z +c360147cf4327dd61b5bb9bc6160f44d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1238 + +lametime.c +file + + + + +2012-01-23T14:07:03.956486Z +cfec55d61293c58cb8308aa5d4adf9dc +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3623 + +lametime.h +file + + + + +2012-01-23T14:07:03.960483Z +fbc601f8e24fe686e5f80280f2b733ed +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1190 + +timestatus.c +file + + + + +2012-01-23T14:07:03.960483Z +24471a330edad0dd0f5dd996b17ccd56 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +7626 + +gpkplotting.c +file + + + + +2012-01-23T14:07:03.956486Z +f434a0b2c0494597b1d60b2640a5c23d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9271 + +rtp.c +file + + + + +2012-01-23T14:07:03.961487Z +88e8bbf31f57d5956e3fa35be52c5e16 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +10364 + +timestatus.h +file + + + + +2012-01-23T14:07:03.961487Z +ed09e7ba5859dbdb031427d4eb0623b8 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1338 + +gpkplotting.h +file + + + + +2012-01-23T14:07:03.961487Z +6f9ea3acc7b638382041eb917d7dc5f7 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1924 + +rtp.h +file + + + + +2012-01-23T14:07:03.962486Z +ab93d2db8904c4d4d773e59afa1cda49 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1088 + +parse.c +file + + + + +2012-01-23T14:07:03.962486Z +3dfab50f88b5c00bad6d77918fd492e5 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +78245 + +parse.h +file + + + + +2012-01-23T14:07:03.964538Z +bca06e7804fd171fd2cc162fa59dd606 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +518 + +gtkanal.c +file + + + + +2012-01-23T14:07:03.965501Z +06116691d2595b3718b74f0f4dc2af39 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +52240 + +main.c +file + + + + +2012-01-23T14:07:03.965501Z +77f57171a256389079f2649f7d8550a9 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +24366 + +mp3rtp.c +file + + + + +2012-01-23T14:07:03.965501Z +7663fd8eb6ae407a953b6fbf7b3ee4b1 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +6939 + +gtkanal.h +file + + + + +2012-01-23T14:07:03.966488Z +456b00f5b162b65d2bdeb1e9d7aa3e03 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +869 + +mp3x_vc7.vcproj +file + + + + +2012-01-23T14:07:03.966488Z +8860ed47b5f1a92d06ee6905506acdd3 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +34290 + +amiga_mpega.c +file + + + + +2012-01-23T14:07:03.966488Z +f439a75a2146139d8e49d49462e2cd40 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3296 + +Makefile.am +file + + + + +2012-01-23T14:07:03.967490Z +21d401b27b50708044f111c2a54dbd2e +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1862 + +main.h +file + + + + +2012-01-23T14:07:03.967490Z +b71767ec6348614fba5ff1f92f658568 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2048 + +brhist.c +file + + + + +2012-01-23T14:07:03.967490Z +0b9da46e29073f35cc48cca47c3f06c7 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +18477 + diff --git a/lame-3.97/frontend/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/frontend/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/brhist.h.svn-base b/lame-3.97/frontend/.svn/prop-base/brhist.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/brhist.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/console.h.svn-base b/lame-3.97/frontend/.svn/prop-base/console.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/console.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/get_audio.h.svn-base b/lame-3.97/frontend/.svn/prop-base/get_audio.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/get_audio.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/gpkplotting.h.svn-base b/lame-3.97/frontend/.svn/prop-base/gpkplotting.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/gpkplotting.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/gtkanal.h.svn-base b/lame-3.97/frontend/.svn/prop-base/gtkanal.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/gtkanal.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/lametime.h.svn-base b/lame-3.97/frontend/.svn/prop-base/lametime.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/lametime.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/main.h.svn-base b/lame-3.97/frontend/.svn/prop-base/main.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/main.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/parse.h.svn-base b/lame-3.97/frontend/.svn/prop-base/parse.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/parse.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/portableio.h.svn-base b/lame-3.97/frontend/.svn/prop-base/portableio.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/portableio.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/rtp.h.svn-base b/lame-3.97/frontend/.svn/prop-base/rtp.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/rtp.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/prop-base/timestatus.h.svn-base b/lame-3.97/frontend/.svn/prop-base/timestatus.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/frontend/.svn/prop-base/timestatus.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/frontend/.svn/text-base/Makefile.am.svn-base b/lame-3.97/frontend/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..922f29a --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,81 @@ +## $Id: Makefile.am,v 1.25 2005/09/04 19:02:11 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +bin_PROGRAMS = @WITH_FRONTEND@ @WITH_MP3RTP@ @WITH_MP3X@ +EXTRA_PROGRAMS = lame$(EXEEXT) mp3rtp$(EXEEXT) mp3x$(EXEEXT) + +brhist_sources = brhist.c brhist.h + +EXTRA_DIST = \ + $(brhist_sources) \ + console.c \ + console.h \ + lame_vc6.dsp \ + lame_vc7.vcproj \ + mp3x_vc6.dsp \ + mp3x_vc7.vcproj \ + amiga_mpega.c + +DEFS = @DEFS@ @CONFIG_DEFS@ + +common_sources = \ + get_audio.c \ + lametime.c \ + parse.c \ + portableio.c \ + timestatus.c + +noinst_HEADERS = get_audio.h \ + gtkanal.h \ + gpkplotting.h \ + lametime.h \ + main.h \ + parse.h \ + portableio.h \ + timestatus.h + +## EXTRA_lame__EXEEXT__SOURCES = $(brhist_sources) +## EXTRA_mp3rtp__EXEEXT__SOURCES = $(brhist_sources) +## EXTRA_mp3x__EXEEXT__SOURCES = $(brhist_sources) + +if WITH_BRHIST +lame_SOURCES = main.c $(common_sources) $(brhist_sources) +mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) \ + $(brhist_sources) +mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c \ + $(common_sources) $(brhist_sources) +else +lame_SOURCES = main.c $(common_sources) +mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) +mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources) +endif + +CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ +LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ -static + +INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir) + +LDADD = @LDADD@ \ + $(top_builddir)/libmp3lame/libmp3lame.la \ + @FRONTEND_LDADD@ + +mp3x_LDADD = $(LDADD) @GTK_LIBS@ + +CLEANFILES = lclint.txt $(EXTRA_PROGRAMS) + +LCLINTFLAGS= \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +lclint.txt: ${lame_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${lame_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt diff --git a/lame-3.97/frontend/.svn/text-base/Makefile.in.svn-base b/lame-3.97/frontend/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..9f06ea8 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,626 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global depcomp +bin_PROGRAMS = @WITH_FRONTEND@ @WITH_MP3RTP@ @WITH_MP3X@ +EXTRA_PROGRAMS = lame$(EXEEXT) mp3rtp$(EXEEXT) mp3x$(EXEEXT) +subdir = frontend +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am__lame_SOURCES_DIST = main.c get_audio.c lametime.c parse.c \ + portableio.c timestatus.c brhist.c brhist.h +am__objects_1 = get_audio$U.$(OBJEXT) lametime$U.$(OBJEXT) \ + parse$U.$(OBJEXT) portableio$U.$(OBJEXT) \ + timestatus$U.$(OBJEXT) +am__objects_2 = brhist$U.$(OBJEXT) +@WITH_BRHIST_FALSE@am_lame_OBJECTS = main$U.$(OBJEXT) $(am__objects_1) +@WITH_BRHIST_TRUE@am_lame_OBJECTS = main$U.$(OBJEXT) $(am__objects_1) \ +@WITH_BRHIST_TRUE@ $(am__objects_2) +lame_OBJECTS = $(am_lame_OBJECTS) +lame_LDADD = $(LDADD) +lame_DEPENDENCIES = $(top_builddir)/libmp3lame/libmp3lame.la +am__mp3rtp_SOURCES_DIST = mp3rtp.c rtp.c rtp.h get_audio.c lametime.c \ + parse.c portableio.c timestatus.c brhist.c brhist.h +@WITH_BRHIST_FALSE@am_mp3rtp_OBJECTS = mp3rtp$U.$(OBJEXT) \ +@WITH_BRHIST_FALSE@ rtp$U.$(OBJEXT) $(am__objects_1) +@WITH_BRHIST_TRUE@am_mp3rtp_OBJECTS = mp3rtp$U.$(OBJEXT) \ +@WITH_BRHIST_TRUE@ rtp$U.$(OBJEXT) $(am__objects_1) \ +@WITH_BRHIST_TRUE@ $(am__objects_2) +mp3rtp_OBJECTS = $(am_mp3rtp_OBJECTS) +mp3rtp_LDADD = $(LDADD) +mp3rtp_DEPENDENCIES = $(top_builddir)/libmp3lame/libmp3lame.la +am__mp3x_SOURCES_DIST = mp3x.c gtkanal.c gpkplotting.c get_audio.c \ + lametime.c parse.c portableio.c timestatus.c brhist.c brhist.h +@WITH_BRHIST_FALSE@am_mp3x_OBJECTS = mp3x$U.$(OBJEXT) \ +@WITH_BRHIST_FALSE@ gtkanal$U.$(OBJEXT) gpkplotting$U.$(OBJEXT) \ +@WITH_BRHIST_FALSE@ $(am__objects_1) +@WITH_BRHIST_TRUE@am_mp3x_OBJECTS = mp3x$U.$(OBJEXT) \ +@WITH_BRHIST_TRUE@ gtkanal$U.$(OBJEXT) gpkplotting$U.$(OBJEXT) \ +@WITH_BRHIST_TRUE@ $(am__objects_1) $(am__objects_2) +mp3x_OBJECTS = $(am_mp3x_OBJECTS) +am__DEPENDENCIES_1 = $(top_builddir)/libmp3lame/libmp3lame.la +mp3x_DEPENDENCIES = $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(lame_SOURCES) $(mp3rtp_SOURCES) $(mp3x_SOURCES) +DIST_SOURCES = $(am__lame_SOURCES_DIST) $(am__mp3rtp_SOURCES_DIST) \ + $(am__mp3x_SOURCES_DIST) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ \ + $(top_builddir)/libmp3lame/libmp3lame.la \ + @FRONTEND_LDADD@ + +LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ -static +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +brhist_sources = brhist.c brhist.h +EXTRA_DIST = \ + $(brhist_sources) \ + console.c \ + console.h \ + lame_vc6.dsp \ + lame_vc7.vcproj \ + mp3x_vc6.dsp \ + mp3x_vc7.vcproj \ + amiga_mpega.c + +common_sources = \ + get_audio.c \ + lametime.c \ + parse.c \ + portableio.c \ + timestatus.c + +noinst_HEADERS = get_audio.h \ + gtkanal.h \ + gpkplotting.h \ + lametime.h \ + main.h \ + parse.h \ + portableio.h \ + timestatus.h + +@WITH_BRHIST_FALSE@lame_SOURCES = main.c $(common_sources) +@WITH_BRHIST_TRUE@lame_SOURCES = main.c $(common_sources) $(brhist_sources) +@WITH_BRHIST_FALSE@mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) +@WITH_BRHIST_TRUE@mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) \ +@WITH_BRHIST_TRUE@ $(brhist_sources) + +@WITH_BRHIST_FALSE@mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources) +@WITH_BRHIST_TRUE@mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c \ +@WITH_BRHIST_TRUE@ $(common_sources) $(brhist_sources) + +mp3x_LDADD = $(LDADD) @GTK_LIBS@ +CLEANFILES = lclint.txt $(EXTRA_PROGRAMS) +LCLINTFLAGS = \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign frontend/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign frontend/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +lame$(EXEEXT): $(lame_OBJECTS) $(lame_DEPENDENCIES) + @rm -f lame$(EXEEXT) + $(LINK) $(lame_LDFLAGS) $(lame_OBJECTS) $(lame_LDADD) $(LIBS) +mp3rtp$(EXEEXT): $(mp3rtp_OBJECTS) $(mp3rtp_DEPENDENCIES) + @rm -f mp3rtp$(EXEEXT) + $(LINK) $(mp3rtp_LDFLAGS) $(mp3rtp_OBJECTS) $(mp3rtp_LDADD) $(LIBS) +mp3x$(EXEEXT): $(mp3x_OBJECTS) $(mp3x_DEPENDENCIES) + @rm -f mp3x$(EXEEXT) + $(LINK) $(mp3x_LDFLAGS) $(mp3x_OBJECTS) $(mp3x_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brhist$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_audio$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpkplotting$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkanal$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lametime$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp3rtp$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp3x$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portableio$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtp$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timestatus$U.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +brhist_.c: brhist.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/brhist.c; then echo $(srcdir)/brhist.c; else echo brhist.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +get_audio_.c: get_audio.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/get_audio.c; then echo $(srcdir)/get_audio.c; else echo get_audio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +gpkplotting_.c: gpkplotting.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gpkplotting.c; then echo $(srcdir)/gpkplotting.c; else echo gpkplotting.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +gtkanal_.c: gtkanal.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gtkanal.c; then echo $(srcdir)/gtkanal.c; else echo gtkanal.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +lametime_.c: lametime.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lametime.c; then echo $(srcdir)/lametime.c; else echo lametime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +main_.c: main.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/main.c; then echo $(srcdir)/main.c; else echo main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +mp3rtp_.c: mp3rtp.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mp3rtp.c; then echo $(srcdir)/mp3rtp.c; else echo mp3rtp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +mp3x_.c: mp3x.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mp3x.c; then echo $(srcdir)/mp3x.c; else echo mp3x.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +parse_.c: parse.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/parse.c; then echo $(srcdir)/parse.c; else echo parse.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +portableio_.c: portableio.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/portableio.c; then echo $(srcdir)/portableio.c; else echo portableio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +rtp_.c: rtp.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rtp.c; then echo $(srcdir)/rtp.c; else echo rtp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +timestatus_.c: timestatus.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/timestatus.c; then echo $(srcdir)/timestatus.c; else echo timestatus.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +brhist_.$(OBJEXT) brhist_.lo get_audio_.$(OBJEXT) get_audio_.lo \ +gpkplotting_.$(OBJEXT) gpkplotting_.lo gtkanal_.$(OBJEXT) gtkanal_.lo \ +lametime_.$(OBJEXT) lametime_.lo main_.$(OBJEXT) main_.lo \ +mp3rtp_.$(OBJEXT) mp3rtp_.lo mp3x_.$(OBJEXT) mp3x_.lo parse_.$(OBJEXT) \ +parse_.lo portableio_.$(OBJEXT) portableio_.lo rtp_.$(OBJEXT) rtp_.lo \ +timestatus_.$(OBJEXT) timestatus_.lo : $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am + + +# end global section + +lclint.txt: ${lame_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${lame_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/frontend/.svn/text-base/amiga_mpega.c.svn-base b/lame-3.97/frontend/.svn/text-base/amiga_mpega.c.svn-base new file mode 100644 index 0000000..94653ba --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/amiga_mpega.c.svn-base @@ -0,0 +1,133 @@ +/* MPGLIB replacement using mpega.library (AmigaOS) + * Written by Thomas Wenzel and Sigbj�rn (CISC) Skj�ret. + * + * Big thanks to St�phane Tavernard for mpega.library. + * + */ + +/* $Id: amiga_mpega.c,v 1.2 2001/02/05 00:34:37 cisc Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef AMIGA_MPEGA + +#define __USE_SYSBASE +#include "lame.h" +#include +#include + +/* We need a small workaround here so GCC doesn't fail upon redefinition. :P */ +#define FLOAT _FLOAT +#include +#include +#undef _FLOAT + +#ifndef __GNUC__ +#include +#endif + +struct Library *MPEGABase=NULL; +MPEGA_STREAM *mstream=NULL; +MPEGA_CTRL mctrl; + +static const int smpls[2][4]={ +/* Layer x I II III */ + {0,384,1152,1152}, /* MPEG-1 */ + {0,384,1152, 576} /* MPEG-2(.5) */ +}; + + +#ifndef __GNUC__ +static int break_cleanup(void) +{ + /* Dummy break function to make atexit() work. :P */ + return 1; +} +#endif + +static void exit_cleanup(void) +{ + if(mstream) { + MPEGA_close(mstream); + mstream = NULL; + } + if(MPEGABase) { + CloseLibrary(MPEGABase); + MPEGABase = NULL; + } +} + + +int lame_decode_initfile(const char *fullname, mp3data_struct *mp3data) +{ + mctrl.bs_access = NULL; + + mctrl.layer_1_2.mono.quality = 2; + mctrl.layer_1_2.stereo.quality = 2; + mctrl.layer_1_2.mono.freq_div = 1; + mctrl.layer_1_2.stereo.freq_div = 1; + mctrl.layer_1_2.mono.freq_max = 48000; + mctrl.layer_1_2.stereo.freq_max = 48000; + mctrl.layer_3.mono.quality = 2; + mctrl.layer_3.stereo.quality = 2; + mctrl.layer_3.mono.freq_div = 1; + mctrl.layer_3.stereo.freq_div = 1; + mctrl.layer_3.mono.freq_max = 48000; + mctrl.layer_3.stereo.freq_max = 48000; + mctrl.layer_1_2.force_mono = 0; + mctrl.layer_3.force_mono = 0; + + MPEGABase = OpenLibrary("mpega.library", 2); + if(!MPEGABase) { + fprintf(stderr, "Unable to open mpega.library v2\n"); + exit(1); + } +#ifndef __GNUC__ + onbreak(break_cleanup); +#endif + atexit(exit_cleanup); + + mp3data->header_parsed = 0; + mstream=MPEGA_open((char *)fullname, &mctrl); + if(!mstream) return (-1); + + mp3data->header_parsed = 1; + mp3data->stereo = mstream->dec_channels; + mp3data->samplerate = mstream->dec_frequency; + mp3data->bitrate = mstream->bitrate; + mp3data->nsamp = (float)mstream->ms_duration/1000 * mstream->dec_frequency; + mp3data->mode = mstream->mode; + mp3data->mode_ext = 0; /* mpega.library doesn't supply this info! :( */ + mp3data->framesize = smpls[mstream->norm-1][mstream->layer]; + + return 0; +} + +int lame_decode_fromfile(FILE *fd, short pcm_l[], short pcm_r[], mp3data_struct *mp3data) +{ + int outsize=0; + WORD *b[MPEGA_MAX_CHANNELS]; + + b[0]=pcm_l; + b[1]=pcm_r; + + mp3data->header_parsed = 0; + while ((outsize == 0) || (outsize == MPEGA_ERR_BADFRAME)) /* Skip bad frames */ + outsize = MPEGA_decode_frame(mstream, b); + + if (outsize < 0) return (-1); + + mp3data->header_parsed = 1; + mp3data->stereo = mstream->dec_channels; + mp3data->samplerate = mstream->dec_frequency; + mp3data->bitrate = mstream->bitrate; + mp3data->mode = mstream->mode; + mp3data->mode_ext = 0; /* mpega.library doesn't supply this info! :( */ + mp3data->framesize = smpls[mstream->norm-1][mstream->layer]; + + return outsize; +} + +#endif /* AMIGA_MPEGA */ diff --git a/lame-3.97/frontend/.svn/text-base/brhist.c.svn-base b/lame-3.97/frontend/.svn/text-base/brhist.c.svn-base new file mode 100644 index 0000000..3120f5f --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/brhist.c.svn-base @@ -0,0 +1,614 @@ +/* + * Bitrate histogram source file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: brhist.c,v 1.46.2.1 2005/12/18 18:49:28 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef BRHIST + +/* basic #define's */ + +#ifndef BRHIST_WIDTH +# define BRHIST_WIDTH 14 +#endif +#ifndef BRHIST_RES +# define BRHIST_RES 14 +#endif + + +/* #includes */ + +#ifdef STDC_HEADERS +# include +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr(), *strrchr(); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + + +#if defined(HAVE_NCURSES_TERMCAP_H) +# include +#elif defined(HAVE_TERMCAP_H) +# include +#elif defined(HAVE_TERMCAP) +# include +# if !defined(__bsdi__) +# include +# endif +#endif + +#include "brhist.h" + +#ifdef WITH_DMALLOC +#include +#endif + + +/* Structure holding all data related to the Console I/O + * may be this should be a more global frontend structure. So it + * makes sense to print all files instead with + * printf ( "blah\n") with printf ( "blah%s\n", Console_IO.str_clreoln ); + */ + +Console_IO_t Console_IO; + +static struct { + int vbr_bitrate_min_index; + int vbr_bitrate_max_index; + int kbps[BRHIST_WIDTH]; + int hist_printed_lines; + char bar_asterisk[512 + 1]; /* buffer filled up with a lot of '*' to print a bar */ + char bar_percent[512 + 1]; /* buffer filled up with a lot of '%' to print a bar */ + char bar_coded[512 + 1]; /* buffer filled up with a lot of ' ' to print a bar */ + char bar_space[512 + 1]; /* buffer filled up with a lot of ' ' to print a bar */ +} brhist; + +static int +calculate_index(const int *const array, const int len, const int value) +{ + int i; + + for (i = 0; i < len; i++) + if (array[i] == value) + return i; + return -1; +} + +int +brhist_init(const lame_global_flags * gf, const int bitrate_kbps_min, + const int bitrate_kbps_max) +{ +#ifdef HAVE_TERMCAP + char term_buff[2048]; /* see 1) */ + const char *term_name; + char *tp; + char tc[10]; + int val; +#endif + + /* setup basics of brhist I/O channels */ + Console_IO.disp_width = 80; + Console_IO.disp_height = 25; + brhist.hist_printed_lines = 0; + Console_IO.Console_fp = stderr; + Console_IO.Error_fp = stderr; + Console_IO.Report_fp = stderr; + + setvbuf(Console_IO.Console_fp, Console_IO.Console_buff, _IOFBF, + sizeof(Console_IO.Console_buff)); +/* setvbuf ( Console_IO.Error_fp , NULL , _IONBF, 0 ); */ + +#if defined(_WIN32) && !defined(__CYGWIN__) + Console_IO.Console_Handle = GetStdHandle(STD_ERROR_HANDLE); +#endif + + strcpy(Console_IO.str_up, "\033[A"); + +#ifndef RH_HIST + /* some internal checks */ + if (bitrate_kbps_min > bitrate_kbps_max) { + fprintf(Console_IO.Error_fp, + "lame internal error: VBR min %d kbps > VBR max %d kbps.\n", + bitrate_kbps_min, bitrate_kbps_max); + return -1; + } + if (bitrate_kbps_min < 8 || bitrate_kbps_max > 320) { + fprintf(Console_IO.Error_fp, + "lame internal error: VBR min %d kbps or VBR max %d kbps out of range.\n", + bitrate_kbps_min, bitrate_kbps_max); + return -1; + } +#endif + + /* initialize histogramming data structure */ + lame_bitrate_kbps(gf, brhist.kbps); + brhist.vbr_bitrate_min_index = + calculate_index(brhist.kbps, BRHIST_WIDTH, bitrate_kbps_min); + brhist.vbr_bitrate_max_index = + calculate_index(brhist.kbps, BRHIST_WIDTH, bitrate_kbps_max); + + if (brhist.vbr_bitrate_min_index >= BRHIST_WIDTH || + brhist.vbr_bitrate_max_index >= BRHIST_WIDTH) { + fprintf(Console_IO.Error_fp, + "lame internal error: VBR min %d kbps or VBR max %d kbps not allowed.\n", + bitrate_kbps_min, bitrate_kbps_max); + return -1; + } + + memset(brhist.bar_asterisk, '*', sizeof(brhist.bar_asterisk) - 1); + memset(brhist.bar_percent, '%', sizeof(brhist.bar_percent) - 1); + memset(brhist.bar_space, '-', sizeof(brhist.bar_space) - 1); + memset(brhist.bar_coded, '-', sizeof(brhist.bar_space) - 1); + +#ifdef HAVE_TERMCAP + /* try to catch additional information about special console sequences */ + + if ((term_name = getenv("TERM")) == NULL) { + fprintf(Console_IO.Error_fp, + "LAME: Can't get \"TERM\" environment string.\n"); + return -1; + } + if (tgetent(term_buff, term_name) != 1) { + fprintf(Console_IO.Error_fp, + "LAME: Can't find termcap entry for terminal \"%s\"\n", + term_name); + return -1; + } + + val = tgetnum("co"); + if (val >= 40 && val <= 512) + Console_IO.disp_width = val; + val = tgetnum("li"); + if (val >= 16 && val <= 256) + Console_IO.disp_height = val; + + *(tp = tc) = '\0'; + tp = tgetstr("up", &tp); + if (tp != NULL) + strcpy(Console_IO.str_up, tp); + + *(tp = tc) = '\0'; + tp = tgetstr("ce", &tp); + if (tp != NULL) + strcpy(Console_IO.str_clreoln, tp); + + *(tp = tc) = '\0'; + tp = tgetstr("md", &tp); + if (tp != NULL) + strcpy(Console_IO.str_emph, tp); + + *(tp = tc) = '\0'; + tp = tgetstr("me", &tp); + if (tp != NULL) + strcpy(Console_IO.str_norm, tp); + +#endif /* HAVE_TERMCAP */ + + return 0; +} + +static int +digits(unsigned number) +{ + int ret = 1; + + if (number >= 100000000) { + ret += 8; + number /= 100000000; + } + if (number >= 10000) { + ret += 4; + number /= 10000; + } + if (number >= 100) { + ret += 2; + number /= 100; + } + if (number >= 10) { + ret += 1; + } + + return ret; +} + + +static void +brhist_disp_line(int i, int br_hist_TOT, int br_hist_LR, int full, int frames) +{ + char brppt[14]; /* [%] and max. 10 characters for kbps */ + int barlen_TOT; + int barlen_LR; + int ppt = 0; + int res = digits(frames) + 3 + 4 + 1; + + if (full != 0) { + /* some problems when br_hist_TOT \approx br_hist_LR: You can't see that there are still MS frames */ + barlen_TOT = (br_hist_TOT * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + barlen_LR = (br_hist_LR * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + } + else { + barlen_TOT = barlen_LR = 0; + } + + if (frames > 0) + ppt = (1000 * br_hist_TOT + frames / 2) / frames; /* round nearest */ + + sprintf(brppt, " [%*i]", digits(frames), br_hist_TOT); + + if (Console_IO.str_clreoln[0]) /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "\n%3d%s %.*s%.*s%s", + brhist.kbps[i], brppt, + barlen_LR, brhist.bar_percent, + barlen_TOT - barlen_LR, brhist.bar_asterisk, + Console_IO.str_clreoln); + else + fprintf(Console_IO.Console_fp, "\n%3d%s %.*s%.*s%*s", + brhist.kbps[i], brppt, + barlen_LR, brhist.bar_percent, + barlen_TOT - barlen_LR, brhist.bar_asterisk, + Console_IO.disp_width - res - barlen_TOT, ""); + + brhist.hist_printed_lines++; +} + + +#ifdef RH_HIST +static void +progress_line(const lame_global_flags * gf, int full, int frames) +{ + char rst[20] = "\0"; + int barlen_TOT = 0, barlen_COD = 0, barlen_RST = 0; + int res = 1; + float df = 0; + unsigned int hour, min, sec; + int fsize = lame_get_framesize(gf); + int srate = lame_get_out_samplerate(gf); + + if (full < frames) { + full = frames; + } + if (srate > 0) { + df = full - frames; + df *= fsize; + df /= srate; + } + hour = df / 3600; + df -= hour * 3600; + min = df / 60; + df -= min * 60; + sec = df; + if (full != 0) { + if (hour > 0) { + sprintf(rst, "%*u:%02u:%02u", digits(hour), hour, min, sec); + res += digits(hour) + 1 + 5; + } + else { + sprintf(rst, "%02u:%02u", min, sec); + res += 5; + } + /* some problems when br_hist_TOT \approx br_hist_LR: You can't see that there are still MS frames */ + barlen_TOT = (full * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + barlen_COD = (frames * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + barlen_RST = barlen_TOT - barlen_COD; + if (barlen_RST == 0) { + sprintf(rst, "%.*s", res - 1, brhist.bar_coded); + } + } + else { + barlen_TOT = barlen_COD = barlen_RST = 0; + } + if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "\n%.*s%s%.*s%s", + barlen_COD, brhist.bar_coded, + rst, barlen_RST, brhist.bar_space, Console_IO.str_clreoln); + } + else { + fprintf(Console_IO.Console_fp, "\n%.*s%s%.*s%*s", + barlen_COD, brhist.bar_coded, + rst, barlen_RST, brhist.bar_space, + Console_IO.disp_width - res - barlen_TOT, ""); + } + brhist.hist_printed_lines++; +} + + +static int +stats_value(double x) +{ + if (x > 0.0) { + fprintf(Console_IO.Console_fp, " %5.1f", x); + return 6; + } + /* + else { + fprintf( Console_IO.Console_fp, " " ); + return 6; + } + */ + return 0; +} + +static int +stats_head(double x, const char *txt) +{ + if (x > 0.0) { + fprintf(Console_IO.Console_fp, txt); + return 6; + } + /* + else { + fprintf( Console_IO.Console_fp, " " ); + return 6; + } + */ + return 0; +} + + +static void +stats_line(double *stat) +{ + int n = 1; + fprintf(Console_IO.Console_fp, "\n kbps "); + n += 12; + n += stats_head(stat[1], " mono"); + n += stats_head(stat[2], " IS "); + n += stats_head(stat[3], " LR "); + n += stats_head(stat[4], " MS "); + fprintf(Console_IO.Console_fp, " %% "); + n += 6; + n += stats_head(stat[5], " long "); + n += stats_head(stat[6], "switch"); + n += stats_head(stat[7], " short"); + n += stats_head(stat[8], " mixed"); + n += fprintf(Console_IO.Console_fp, " %%"); + if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "%s", Console_IO.str_clreoln); + } + else { + fprintf(Console_IO.Console_fp, "%*s", Console_IO.disp_width - n, ""); + } + brhist.hist_printed_lines++; + + n = 1; + fprintf(Console_IO.Console_fp, "\n %5.1f ", stat[0]); + n += 12; + n += stats_value(stat[1]); + n += stats_value(stat[2]); + n += stats_value(stat[3]); + n += stats_value(stat[4]); + fprintf(Console_IO.Console_fp, " "); + n += 6; + n += stats_value(stat[5]); + n += stats_value(stat[6]); + n += stats_value(stat[7]); + n += stats_value(stat[8]); + if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "%s", Console_IO.str_clreoln); + } + else { + fprintf(Console_IO.Console_fp, "%*s", Console_IO.disp_width - n, ""); + } + brhist.hist_printed_lines++; +} +#endif + +/* Yes, not very good */ +#define LR 0 +#define MS 2 + +void +brhist_disp(const lame_global_flags * gf) +{ + int i, lines = 0; + int br_hist[BRHIST_WIDTH]; /* how often a frame size was used */ + int br_sm_hist[BRHIST_WIDTH][4]; /* how often a special frame size/stereo mode commbination was used */ + int st_mode[4]; + int bl_type[6]; + int frames; /* total number of encoded frames */ + int most_often; /* usage count of the most often used frame size, but not smaller than Console_IO.disp_width-BRHIST_RES (makes this sense?) and 1 */ + double sum = 0.; +#ifdef RH_HIST + double stat[9] = { 0 }; + int st_frames = 0; +#endif + + brhist.hist_printed_lines = 0; /* printed number of lines for the brhist functionality, used to skip back the right number of lines */ + + lame_bitrate_stereo_mode_hist(gf, br_sm_hist); + lame_bitrate_hist(gf, br_hist); + lame_stereo_mode_hist(gf, st_mode); + lame_block_type_hist(gf, bl_type); + + frames = most_often = 0; + for (i = 0; i < BRHIST_WIDTH; i++) { + frames += br_hist[i]; + sum += br_hist[i] * brhist.kbps[i]; + if (most_often < br_hist[i]) + most_often = br_hist[i]; + if (br_hist[i]) + ++lines; + } + + for (i = 0; i < BRHIST_WIDTH; i++) { + int show = br_hist[i]; +#ifdef RH_HIST + show = show && (lines > 1); +#endif + if (show + || (i >= brhist.vbr_bitrate_min_index + && i <= brhist.vbr_bitrate_max_index)) + brhist_disp_line(i, br_hist[i], br_sm_hist[i][LR], most_often, + frames); + } +#ifdef RH_HIST + for (i = 0; i < 4; i++) { + st_frames += st_mode[i]; + } + if (frames > 0) { + stat[0] = sum / frames; + stat[1] = 100. * (frames - st_frames) / frames; + } + if (st_frames > 0) { + stat[2] = 0.0; + stat[3] = 100. * st_mode[LR] / st_frames; + stat[4] = 100. * st_mode[MS] / st_frames; + } + if (bl_type[5] > 0) { + stat[5] = 100. * bl_type[0] / bl_type[5]; + stat[6] = 100. * (bl_type[1] + bl_type[3]) / bl_type[5]; + stat[7] = 100. * bl_type[2] / bl_type[5]; + stat[8] = 100. * bl_type[4] / bl_type[5]; + } + progress_line(gf, lame_get_totalframes(gf), frames); + stats_line(stat); +#endif + fputs("\r", Console_IO.Console_fp); + fflush(Console_IO.Console_fp); /* fflush is ALSO needed for Windows! */ +} + +void +brhist_jump_back(void) +{ +#if defined(_WIN32) && !defined(__CYGWIN__) + if (GetFileType(Console_IO.Console_Handle) != FILE_TYPE_PIPE) { + COORD Pos; + CONSOLE_SCREEN_BUFFER_INFO CSBI; + + GetConsoleScreenBufferInfo(Console_IO.Console_Handle, &CSBI); + Pos.Y = CSBI.dwCursorPosition.Y - brhist.hist_printed_lines; + Pos.X = 0; + SetConsoleCursorPosition(Console_IO.Console_Handle, Pos); + } +#else + while (brhist.hist_printed_lines-- > 0) + fputs(Console_IO.str_up, Console_IO.Console_fp); +#endif +} + + +void +brhist_disp_total(const lame_global_flags * gf) +{ +#ifndef RH_HIST + + int i; + int br_hist[BRHIST_WIDTH]; + int st_mode[4]; + int bl_type[6]; + int st_frames = 0; + int br_frames = 0; + double sum = 0.; + + lame_stereo_mode_hist(gf, st_mode); + lame_bitrate_hist(gf, br_hist); + lame_block_type_hist(gf, bl_type); + + for (i = 0; i < BRHIST_WIDTH; i++) { + br_frames += br_hist[i]; + sum += br_hist[i] * brhist.kbps[i]; + } + + for (i = 0; i < 4; i++) { + st_frames += st_mode[i]; + } + + if (0 == br_frames) + return; + + fprintf(Console_IO.Console_fp, "\naverage: %5.1f kbps", sum / br_frames); + + /* I'm very unhappy because this is only printed out in VBR modes */ + + if (st_frames > 0) { + if (st_mode[LR] > 0) + fprintf(Console_IO.Console_fp, " LR: %d (%#5.4g%%)", st_mode[LR], + 100. * st_mode[LR] / st_frames); + else + fprintf(Console_IO.Console_fp, " "); + if (st_mode[MS] > 0) + fprintf(Console_IO.Console_fp, " MS: %d (%#5.4g%%)", st_mode[MS], + 100. * st_mode[MS] / st_frames); + } + fprintf(Console_IO.Console_fp, "\n"); + + if (bl_type[5] > 0) { + extern int silent; + if (silent <= -5 && silent > -10) { + fprintf(Console_IO.Console_fp, "block type"); + fprintf(Console_IO.Console_fp, " long: %#4.3f", + 100. * bl_type[0] / bl_type[5]); + fprintf(Console_IO.Console_fp, " start: %#4.3f", + 100. * bl_type[1] / bl_type[5]); + fprintf(Console_IO.Console_fp, " short: %#4.3f", + 100. * bl_type[2] / bl_type[5]); + fprintf(Console_IO.Console_fp, " stop: %#4.3f", + 100. * bl_type[3] / bl_type[5]); + fprintf(Console_IO.Console_fp, " mixed: %#4.3f", + 100. * bl_type[4] / bl_type[5]); + fprintf(Console_IO.Console_fp, " (%%)\n"); + } + else if (silent <= -10) { + fprintf(Console_IO.Console_fp, + "block types granules percent\n"); + fprintf(Console_IO.Console_fp, " long: % 10d % 8.3f%%\n", + bl_type[0], 100. * bl_type[0] / bl_type[5]); + fprintf(Console_IO.Console_fp, " start: % 10d % 8.3f%%\n", + bl_type[1], 100. * bl_type[1] / bl_type[5]); + fprintf(Console_IO.Console_fp, " short: % 10d % 8.3f%%\n", + bl_type[2], 100. * bl_type[2] / bl_type[5]); + fprintf(Console_IO.Console_fp, " stop: % 10d % 8.3f%%\n", + bl_type[3], 100. * bl_type[3] / bl_type[5]); + fprintf(Console_IO.Console_fp, " mixed: % 10d % 8.3f%%\n", + bl_type[4], 100. * bl_type[4] / bl_type[5]); + } + } +#else + (void) gf; +#endif + + fflush(Console_IO.Console_fp); +} + +/* + * 1) + * + * Taken from Termcap_Manual.html: + * + * With the Unix version of termcap, you must allocate space for the description yourself and pass + * the address of the space as the argument buffer. There is no way you can tell how much space is + * needed, so the convention is to allocate a buffer 2048 characters long and assume that is + * enough. (Formerly the convention was to allocate 1024 characters and assume that was enough. + * But one day, for one kind of terminal, that was not enough.) + */ + +#endif /* ifdef BRHIST */ diff --git a/lame-3.97/frontend/.svn/text-base/brhist.h.svn-base b/lame-3.97/frontend/.svn/text-base/brhist.h.svn-base new file mode 100644 index 0000000..bf98434 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/brhist.h.svn-base @@ -0,0 +1,56 @@ +/* + * Bitrate histogram include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_BRHIST_H +#define LAME_BRHIST_H + +#if defined(_WIN32) && !defined(__CYGWIN__) +# include +#endif +#include "lame.h" + +int brhist_init ( const lame_global_flags *gf, const int bitrate_kbps_min, const int bitrate_kbps_max ); +void brhist_disp ( const lame_global_flags *gf ); +void brhist_disp_total ( const lame_global_flags *gf ); +void brhist_jump_back ( void ); + +typedef struct { + FILE* Console_fp; /* filepointer to stream reporting information */ + FILE* Error_fp; /* filepointer to stream fatal error reporting information */ + FILE* Report_fp; /* filepointer to stream reports (normally a text file or /dev/null) */ +#if defined(_WIN32) && !defined(__CYGWIN__) + HANDLE Console_Handle; +#endif + int disp_width; + int disp_height; + char str_up [10]; + char str_clreoln [10]; + char str_emph [10]; + char str_norm [10]; + char Console_buff [1024]; +} Console_IO_t; + +extern Console_IO_t Console_IO; + +#define RH_HIST + +#endif /* LAME_BRHIST_H */ + diff --git a/lame-3.97/frontend/.svn/text-base/console.c.svn-base b/lame-3.97/frontend/.svn/text-base/console.c.svn-base new file mode 100644 index 0000000..13db5e1 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/console.c.svn-base @@ -0,0 +1,187 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef STDC_HEADERS +# include +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include "console.h" + +#if defined(HAVE_TERMCAP) +#include +#include +#if defined(HAVE_TERMCAP_H) +# include +#elif defined(HAVE_NCURSES_TERMCAP_H) +# include +#endif +#endif + +#ifdef WITH_DMALLOC +#include +#endif + +#define CLASS_ID 0x434F4E53 +#define REPORT_BUFF_SIZE 1024 + +/* + * Taken from Termcap_Manual.html: + * + * With the Unix version of termcap, you must allocate space for the description yourself and pass + * the address of the space as the argument buffer. There is no way you can tell how much space is + * needed, so the convention is to allocate a buffer 2048 characters long and assume that is + * enough. (Formerly the convention was to allocate 1024 characters and assume that was enough. + * But one day, for one kind of terminal, that was not enough.) + */ + +Console_IO_t* open_console ( int debug ) +{ + Console_IO_t* const mfp = calloc ( 1, sizeof (*mfp) ); +#ifdef TERMCAP_AVAILABLE + const char* term_name; + char term_buff [2048]; + char* tp; + char tc [10]; + int val; +#endif + + /* setup basics of brhist I/O channels */ + mfp -> disp_width = 80; + mfp -> disp_height = 25; + mfp -> Console_fp = stderr; + mfp -> Error_fp = stderr; + mfp -> Report_fp = debug ? fopen ( "/tmp/lame_reports", "a" ) : NULL; + + mfp -> Console_buff = calloc ( 1, REPORT_BUFF_SIZE ); + setvbuf ( mfp -> Console_fp, mfp -> Console_buff, _IOFBF, REPORT_BUFF_SIZE ); +/* setvbuf ( mfp -> Error_fp , NULL , _IONBF, 0 ); */ + +#if defined(_WIN32) && !defined(__CYGWIN__) + mfp -> Console_Handle = GetStdHandle (STD_ERROR_HANDLE); +#endif + + strcpy ( mfp -> str_up, "\033[A" ); + +#ifdef TERMCAP_AVAILABLE + /* try to catch additional information about special console sequences */ + + if ((term_name = getenv("TERM")) == NULL) { + fprintf ( mfp -> Error_fp, "LAME: Can't get \"TERM\" environment string.\n" ); + return -1; + } + if ( tgetent (term_buff, term_name) != 1 ) { + fprintf ( mfp -> Error_fp, "LAME: Can't find termcap entry for terminal \"%s\"\n", term_name ); + return -1; + } + + val = tgetnum ("co"); + if ( val >= 40 && val <= 512 ) + mfp -> disp_width = val; + val = tgetnum ("li"); + if ( val >= 16 && val <= 256 ) + mfp -> disp_height = val; + + *(tp = tc) = '\0'; + tp = tgetstr ("up", &tp); + if (tp != NULL) + strcpy ( mfp -> str_up, tp ); + + *(tp = tc) = '\0'; + tp = tgetstr ("ce", &tp); + if (tp != NULL) + strcpy ( mfp -> str_clreoln, tp ); + + *(tp = tc) = '\0'; + tp = tgetstr ("md", &tp); + if (tp != NULL) + strcpy ( mfp -> str_emph, tp ); + + *(tp = tc) = '\0'; + tp = tgetstr ("me", &tp); + if (tp != NULL) + strcpy ( mfp -> str_norm, tp ); + +#endif /* TERMCAP_AVAILABLE */ + + return mfp; +} + +/* printf for console */ + +int Console_printf ( Console_IO_t* const mfp, const char* const format, ... ) +{ + va_list args; + int ret; + + va_start ( args, format ); + ret = vfprintf ( mfp -> Console_fp, s, args ); + va_end ( args ); + + return ret; +} + +/* printf for errors */ + +int Error_printf ( Console_IO_t* const mfp, const char* const format, ... ) +{ + va_list args; + int ret; + + va_start ( args, format ); + ret = vfprintf ( mfp -> Error_fp, s, args ); + va_end ( args ); + + flush ( mfp -> Error_fp ); + return ret; +} + +/* printf for additional reporting information */ + +int Report_printf ( Console_IO_t* const mfp, const char* const format, ... ) +{ + va_list args; + int ret; + + if ( mfp -> Report_fp != NULL ) { + va_start ( args, format ); + ret = vfprintf ( mfp -> Report_fp, s, args ); + va_end ( args ); + + return ret; + } + + return 0; +} + + +int close_console ( Console_IO_t* const mfp ) +{ + if ( mfp == NULL || mfp -> ClassID != CLASS_ID || mfp -> Console_buff == NULL ) + return -1; + + fflush ( mfp -> Console_fp ); + setvbuf ( mfp -> Console_fp, NULL, _IONBF, (size_t)0 ); + + memset ( mfp -> Console_buff, 0x55, REPORT_BUFF_SIZE ); + free ( mfp -> Console_buff ); + + memset ( mfp, 0x55, sizeof (*mfp) ); + free ( mfp ); + + return 0; +} + +/* end of console.c */ + diff --git a/lame-3.97/frontend/.svn/text-base/console.h.svn-base b/lame-3.97/frontend/.svn/text-base/console.h.svn-base new file mode 100644 index 0000000..7982894 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/console.h.svn-base @@ -0,0 +1,37 @@ +/* + * frontend/console.h + * + * This + * + * + */ + +#ifndef LAME_CONSOLE_H +#define LAME_CONSOLE_H + +#if defined(_WIN32) && !defined(__CYGWIN__) +# include +#endif + +typedef struct { + unsigned long ClassID; + unsigned long ClassProt; + FILE* Console_fp; /* filepointer to stream reporting information */ + FILE* Error_fp; /* filepointer to stream fatal error reporting information */ + FILE* Report_fp; /* filepointer to stream reports (normally a text file or /dev/null) */ + char* Console_buff; +#if defined(_WIN32) && !defined(__CYGWIN__) + HANDLE Console_Handle; +#endif + int disp_width; + int disp_height; + char str_up [10]; + char str_clreoln [10]; + char str_emph [10]; + char str_norm [10]; +} Console_IO_t; + +#endif /* LAME_CONSOLE_H */ + +/* end of console.h */ + diff --git a/lame-3.97/frontend/.svn/text-base/depcomp.svn-base b/lame-3.97/frontend/.svn/text-base/depcomp.svn-base new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/depcomp.svn-base @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/frontend/.svn/text-base/get_audio.c.svn-base b/lame-3.97/frontend/.svn/text-base/get_audio.c.svn-base new file mode 100644 index 0000000..917fbaa --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/get_audio.c.svn-base @@ -0,0 +1,1611 @@ +/* + * Get Audio routines source file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: get_audio.c,v 1.102 2005/05/25 14:17:51 takehiro Exp $ */ + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef HAVE_LIMITS_H +# include +#endif + +#include + +#ifdef STDC_HEADERS +# include +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr(), *strrchr(); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + + +#define MAX_U_32_NUM 0xFFFFFFFF + + +#include +#include + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include +#endif + +#include "lame.h" +#include "main.h" +#include "get_audio.h" +#include "portableio.h" +#include "timestatus.h" +#include "lametime.h" + +#ifdef WITH_DMALLOC +#include +#endif + + +/* global data for get_audio.c. */ +int count_samples_carefully; +int pcmbitwidth; +int pcmswapbytes = 0; +unsigned int num_samples_read; +FILE *musicin; + + +#ifdef AMIGA_MPEGA +int lame_decode_initfile(const char *fullname, + mp3data_struct * const mp3data); +#else +int lame_decode_initfile(FILE * fd, mp3data_struct * mp3data); +#endif + +/* read mp3 file until mpglib returns one frame of PCM data */ +int lame_decode_fromfile(FILE * fd, short int pcm_l[], short int pcm_r[], + mp3data_struct * mp3data); + + +static int read_samples_pcm(FILE * musicin, int sample_buffer[2304], + int frame_size, int samples_to_read); +static int read_samples_mp3(lame_global_flags * const gfp, FILE * const musicin, + short int mpg123pcm[2][1152], int num_chan); +void CloseSndFile(sound_file_format input, FILE * musicin); +FILE *OpenSndFile(lame_global_flags * gfp, char *); + + +/* Replacement for forward fseek(,,SEEK_CUR), because fseek() fails on pipes */ + + +static int +fskip(FILE * fp, long offset, int whence) +{ +#ifndef PIPE_BUF + char buffer[4096]; +#else + char buffer[PIPE_BUF]; +#endif + int read; + + if (0 == fseek(fp, offset, whence)) + return 0; + + if (whence != SEEK_CUR || offset < 0) { + if( silent < 10 ) { + fprintf(stderr, + "fskip problem: Mostly the return status of functions is not evaluate so it is more secure to polute .\n"); + } + return -1; + } + + while (offset > 0) { + read = offset > sizeof(buffer) ? sizeof(buffer) : offset; + if ((read = fread(buffer, 1, read, fp)) <= 0) + return -1; + offset -= read; + } + + return 0; +} + + +FILE * +init_outfile(char *outPath, int decode) +{ + FILE *outf; +#ifdef __riscos__ + char *p; +#endif + + /* open the output file */ + if (0 == strcmp(outPath, "-")) { + lame_set_stream_binary_mode(outf = stdout); + } + else { + if ((outf = fopen(outPath, "wb+")) == NULL) + return NULL; +#ifdef __riscos__ + /* Assign correct file type */ + for (p = outPath; *p; p++) /* ugly, ugly to modify a string */ + switch (*p) { + case '.': + *p = '/'; + break; + case '/': + *p = '.'; + break; + } + SetFiletype(outPath, decode ? 0xFB1 /*WAV*/ : 0x1AD /*AMPEG*/); +#endif + } + return outf; +} + + + + + + +void +init_infile(lame_global_flags * gfp, char *inPath) +{ + /* open the input file */ + count_samples_carefully = 0; + num_samples_read=0; + pcmbitwidth=in_bitwidth; + pcmswapbytes=swapbytes; + musicin = OpenSndFile(gfp, inPath); +} + +void +close_infile(void) +{ + CloseSndFile(input_format, musicin); +} + + +void +SwapBytesInWords(short *ptr, int short_words) +{ /* Some speedy code */ + unsigned long val; + unsigned long *p = (unsigned long *) ptr; + +#ifndef lint +# if defined(CHAR_BIT) +# if CHAR_BIT != 8 +# error CHAR_BIT != 8 +# endif +# else +# error can not determine number of bits in a char +# endif +#endif /* lint */ + + assert(sizeof(short) == 2); + + +#if defined(SIZEOF_UNSIGNED_LONG) && SIZEOF_UNSIGNED_LONG == 4 + for (; short_words >= 2; short_words -= 2, p++) { + val = *p; + *p = ((val << 8) & 0xFF00FF00) | ((val >> 8) & 0x00FF00FF); + } + ptr = (short *) p; + for (; short_words >= 1; short_words -= 1, ptr++) { + val = *ptr; + *ptr = ((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF); + } +#elif defined(SIZEOF_UNSIGNED_LONG) && SIZEOF_UNSIGNED_LONG == 8 + for (; short_words >= 4; short_words -= 4, p++) { + val = *p; + *p = + ((val << 8) & 0xFF00FF00FF00FF00) | ((val >> 8) & + 0x00FF00FF00FF00FF); + } + ptr = (short *) p; + for (; short_words >= 1; short_words -= 1, ptr++) { + val = *ptr; + *ptr = ((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF); + } +#else +# ifdef SIZEOF_UNSIGNED_LONG +# warning Using unoptimized SwapBytesInWords(). +# endif + for (; short_words >= 1; short_words -= 1, ptr++) { + val = *ptr; + *ptr = ((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF); + } +#endif + + assert(short_words == 0); +} + + + +static int +get_audio_common( lame_global_flags * const gfp, + int buffer[2][1152], short buffer16[2][1152] ); + +/************************************************************************ +* +* get_audio() +* +* PURPOSE: reads a frame of audio data from a file to the buffer, +* aligns the data for future processing, and separates the +* left and right channels +* +************************************************************************/ +int +get_audio( lame_global_flags * const gfp, int buffer[2][1152] ) +{ + return( get_audio_common( gfp, buffer, NULL ) ); +} + +/* + get_audio16 - behave as the original get_audio function, with a limited + 16 bit per sample output +*/ +int +get_audio16( lame_global_flags * const gfp, short buffer[2][1152] ) +{ + return( get_audio_common( gfp, NULL, buffer ) ); +} + +/************************************************************************ + get_audio_common - central functionality of get_audio* + in: gfp + buffer output to the int buffer or 16-bit buffer + out: buffer int output (if buffer != NULL) + buffer16 16-bit output (if buffer == NULL) +returns: samples read +note: either buffer or buffer16 must be allocated upon call +*/ +static int +get_audio_common( lame_global_flags * const gfp, + int buffer[2][1152], short buffer16[2][1152] ) +{ + int num_channels = lame_get_num_channels( gfp ); + int insamp[2 * 1152]; + short buf_tmp16[2][1152]; + int samples_read; + int framesize; + int samples_to_read; + unsigned int remaining, tmp_num_samples; + int i; + int *p; + + /* + * NOTE: LAME can now handle arbritray size input data packets, + * so there is no reason to read the input data in chuncks of + * size "framesize". EXCEPT: the LAME graphical frame analyzer + * will get out of sync if we read more than framesize worth of data. + */ + + samples_to_read = framesize = lame_get_framesize(gfp); + assert(framesize <= 1152); + + /* get num_samples */ + tmp_num_samples = lame_get_num_samples( gfp ); + + /* if this flag has been set, then we are carefull to read + * exactly num_samples and no more. This is useful for .wav and .aiff + * files which have id3 or other tags at the end. Note that if you + * are using LIBSNDFILE, this is not necessary + */ + if (count_samples_carefully) { + remaining = tmp_num_samples - Min(tmp_num_samples, num_samples_read); + if (remaining < framesize && 0 != tmp_num_samples) + /* in case the input is a FIFO (at least it's reproducible with + a FIFO) tmp_num_samples may be 0 and therefore remaining + would be 0, but we need to read some samples, so don't + change samples_to_read to the wrong value in this case */ + samples_to_read = remaining; + } + + switch (input_format) { + case sf_mp1: + case sf_mp2: + case sf_mp3: + if( buffer != NULL ) + samples_read = read_samples_mp3( gfp, musicin, + buf_tmp16, num_channels ); + else + samples_read = read_samples_mp3( gfp, musicin, + buffer16, num_channels ); + break; + default: + samples_read = + read_samples_pcm(musicin, insamp, num_channels * framesize, + num_channels * samples_to_read); + p = insamp + samples_read; + samples_read /= num_channels; + if( buffer != NULL ) { /* output to int buffer */ + if( num_channels == 2 ) { + for( i = samples_read; --i >= 0; ) { + buffer[1][i] = *--p; + buffer[0][i] = *--p; + } + } else if( num_channels == 1 ) { + memset( buffer[1], 0, samples_read * sizeof(int) ); + for( i = samples_read; --i >= 0; ) { + buffer[0][i] = *--p; + } + } else + assert(0); + } else { /* convert from int; output to 16-bit buffer */ + if( num_channels == 2 ) { + for( i = samples_read; --i >= 0; ) { + buffer16[1][i] = *--p >> (8 * sizeof(int) - 16); + buffer16[0][i] = *--p >> (8 * sizeof(int) - 16); + } + } else if( num_channels == 1 ) { + memset( buffer16[1], 0, samples_read * sizeof(short) ); + for( i = samples_read; --i >= 0; ) { + buffer16[0][i] = *--p >> (8 * sizeof(int) - 16); + } + } else + assert(0); + } + } + + /* LAME mp3 output 16bit - convert to int, if necessary */ + if( input_format == sf_mp1 || input_format == sf_mp2 || + input_format == sf_mp3) { + if( buffer != NULL ) { + for( i = samples_read; --i >= 0; ) + buffer[0][i] = buf_tmp16[0][i] << (8 * sizeof(int) - 16); + if( num_channels == 2 ) { + for( i = samples_read; --i >= 0; ) + buffer[1][i] = buf_tmp16[1][i] << (8 * sizeof(int) - 16); + } else if( num_channels == 1 ) { + memset( buffer[1], 0, samples_read * sizeof(int) ); + } else + assert(0); + } + } + + + /* if num_samples = MAX_U_32_NUM, then it is considered infinitely long. + Don't count the samples */ + if ( tmp_num_samples != MAX_U_32_NUM ) + num_samples_read += samples_read; + + return samples_read; +} + + + +int +read_samples_mp3(lame_global_flags * const gfp, + FILE * const musicin, short int mpg123pcm[2][1152], int stereo) +{ + int out; +#if defined(AMIGA_MPEGA) || defined(HAVE_MPGLIB) + static const char type_name[] = "MP3 file"; + + out = + lame_decode_fromfile(musicin, mpg123pcm[0], mpg123pcm[1], + &mp3input_data); + /* + * out < 0: error, probably EOF + * out = 0: not possible with lame_decode_fromfile() ??? + * out > 0: number of output samples + */ + if (out < 0) { + memset(mpg123pcm, 0, sizeof(**mpg123pcm) * 2 * 1152); + return 0; + } + + if ( lame_get_num_channels( gfp ) != mp3input_data.stereo ) + if( silent < 10 ) { + fprintf(stderr, + "Error: number of channels has changed in %s - not supported\n", + type_name); + } + if ( lame_get_in_samplerate( gfp ) != mp3input_data.samplerate ) + if( silent < 10 ) { + fprintf(stderr, + "Error: sample frequency has changed in %s - not supported\n", + type_name); + } + +#else + out = -1; +#endif + return out; +} + + +int +WriteWaveHeader(FILE * const fp, const int pcmbytes, + const int freq, const int channels, const int bits) +{ + int bytes = (bits + 7) / 8; + + /* quick and dirty, but documented */ + fwrite("RIFF", 1, 4, fp); /* label */ + Write32BitsLowHigh(fp, pcmbytes + 44 - 8); /* length in bytes without header */ + fwrite("WAVEfmt ", 2, 4, fp); /* 2 labels */ + Write32BitsLowHigh(fp, 2 + 2 + 4 + 4 + 2 + 2); /* length of PCM format declaration area */ + Write16BitsLowHigh(fp, 1); /* is PCM? */ + Write16BitsLowHigh(fp, channels); /* number of channels */ + Write32BitsLowHigh(fp, freq); /* sample frequency in [Hz] */ + Write32BitsLowHigh(fp, freq * channels * bytes); /* bytes per second */ + Write16BitsLowHigh(fp, channels * bytes); /* bytes per sample time */ + Write16BitsLowHigh(fp, bits); /* bits per sample */ + fwrite("data", 1, 4, fp); /* label */ + Write32BitsLowHigh(fp, pcmbytes); /* length in bytes of raw PCM data */ + + return ferror(fp) ? -1 : 0; +} + + + + +#if defined(LIBSNDFILE) + +/* +** Copyright (C) 1999 Albert Faber +** + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + + + + + +void +CloseSndFile(sound_file_format input, FILE * musicin) +{ + SNDFILE *gs_pSndFileIn = (SNDFILE *) musicin; + if (input == sf_mp1 || input == sf_mp2 || input == sf_mp3) { +#ifndef AMIGA_MPEGA + if (fclose(musicin) != 0) { + if( silent < 10 ) { + fprintf(stderr, "Could not close audio input file\n"); + } + exit(2); + } +#endif + } + else { + if (gs_pSndFileIn) { + if (sf_close(gs_pSndFileIn) != 0) { + if( silent < 10 ) { + fprintf(stderr, "Could not close sound file \n"); + } + exit(2); + } + } + } +} + + + +FILE * +OpenSndFile(lame_global_flags * gfp, char *inPath) +{ + char *lpszFileName = inPath; + FILE *musicin; + SNDFILE *gs_pSndFileIn; + SF_INFO gs_wfInfo; + + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { +#ifdef AMIGA_MPEGA + if (-1 == lame_decode_initfile(lpszFileName, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + lpszFileName); + } + exit(1); + } +#endif +#ifdef HAVE_MPGLIB + if ((musicin = fopen(lpszFileName, "rb")) == NULL) { + if( silent < 10 ) { + fprintf(stderr, "Could not find \"%s\".\n", lpszFileName); + } + exit(1); + } + if (-1 == lame_decode_initfile(musicin, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + lpszFileName); + } + exit(1); + } +#endif + + if( -1 == lame_set_num_channels( gfp, mp3input_data.stereo ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + mp3input_data.stereo ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, mp3input_data.samplerate ); + (void) lame_set_num_samples( gfp, mp3input_data.nsamp ); + } + else if (input_format == sf_ogg) { + if( silent < 10 ) { + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + } + exit(1); + } + else { + + /* Try to open the sound file */ + /* set some defaults incase input is raw PCM */ + gs_wfInfo.seekable = (input_format != sf_raw); /* if user specified -r, set to not seekable */ + gs_wfInfo.samplerate = lame_get_in_samplerate( gfp ); + gs_wfInfo.pcmbitwidth = in_bitwidth; + gs_wfInfo.channels = lame_get_num_channels( gfp ); + + if (in_bitwidth == 8) { + if (in_signed) + gs_wfInfo.format = SF_FORMAT_RAW_S8; + else + gs_wfInfo.format = SF_FORMAT_RAW_U8; + + } else { + if (!in_signed) { + fputs("Unsigned input only supported with bitwidth 8\n", stderr); + exit(1); + } + if (in_endian != order_unknown) { + if (in_endian == order_littleEndian) + gs_wfInfo.format = SF_FORMAT_RAW_LE; + else + gs_wfInfo.format = SF_FORMAT_RAW_BE; + } else { +#ifndef WORDS_BIGENDIAN + /* little endian */ + if (swapbytes) + gs_wfInfo.format = SF_FORMAT_RAW_BE; + else + gs_wfInfo.format = SF_FORMAT_RAW_LE; +#else + if (swapbytes) + gs_wfInfo.format = SF_FORMAT_RAW_LE; + else + gs_wfInfo.format = SF_FORMAT_RAW_BE; +#endif + } + } + + gs_pSndFileIn = sf_open_read(lpszFileName, &gs_wfInfo); + musicin = (SNDFILE *) gs_pSndFileIn; + + /* Check result */ + if (gs_pSndFileIn == NULL) { + sf_perror(gs_pSndFileIn); + if( silent < 10 ) { + fprintf(stderr, "Could not open sound file \"%s\".\n", + lpszFileName); + } + exit(1); + } + + if ((gs_wfInfo.format == SF_FORMAT_RAW_LE) || + (gs_wfInfo.format == SF_FORMAT_RAW_BE) || + (gs_wfInfo.format == SF_FORMAT_RAW_S8) || + (gs_wfInfo.format == SF_FORMAT_RAW_U8)) + input_format = sf_raw; + +#ifdef _DEBUG_SND_FILE + DEBUGF("\n\nSF_INFO structure\n"); + DEBUGF("samplerate :%d\n", gs_wfInfo.samplerate); + DEBUGF("samples :%d\n", gs_wfInfo.samples); + DEBUGF("channels :%d\n", gs_wfInfo.channels); + DEBUGF("pcmbitwidth :%d\n", gs_wfInfo.pcmbitwidth); + DEBUGF("format :"); + + /* new formats from sbellon@sbellon.de 1/2000 */ + + switch (gs_wfInfo.format & SF_FORMAT_TYPEMASK) { + case SF_FORMAT_WAV: + DEBUGF("Microsoft WAV format (big endian). "); + break; + case SF_FORMAT_AIFF: + DEBUGF("Apple/SGI AIFF format (little endian). "); + break; + case SF_FORMAT_AU: + DEBUGF("Sun/NeXT AU format (big endian). "); + break; + case SF_FORMAT_AULE: + DEBUGF("DEC AU format (little endian). "); + break; + case SF_FORMAT_RAW: + DEBUGF("RAW PCM data. "); + break; + case SF_FORMAT_PAF: + DEBUGF("Ensoniq PARIS file format. "); + break; + case SF_FORMAT_SVX: + DEBUGF("Amiga IFF / SVX8 / SV16 format. "); + break; + case SF_FORMAT_NIST: + DEBUGF("Sphere NIST format. "); + break; + default: + assert(0); + break; + } + + switch (gs_wfInfo.format & SF_FORMAT_SUBMASK) { + case SF_FORMAT_PCM: + DEBUGF("PCM data in 8, 16, 24 or 32 bits."); + break; + case SF_FORMAT_FLOAT: + DEBUGF("32 bit Intel x86 floats."); + break; + case SF_FORMAT_ULAW: + DEBUGF("U-Law encoded."); + break; + case SF_FORMAT_ALAW: + DEBUGF("A-Law encoded."); + break; + case SF_FORMAT_IMA_ADPCM: + DEBUGF("IMA ADPCM."); + break; + case SF_FORMAT_MS_ADPCM: + DEBUGF("Microsoft ADPCM."); + break; + case SF_FORMAT_PCM_BE: + DEBUGF("Big endian PCM data."); + break; + case SF_FORMAT_PCM_LE: + DEBUGF("Little endian PCM data."); + break; + case SF_FORMAT_PCM_S8: + DEBUGF("Signed 8 bit PCM."); + break; + case SF_FORMAT_PCM_U8: + DEBUGF("Unsigned 8 bit PCM."); + break; + case SF_FORMAT_SVX_FIB: + DEBUGF("SVX Fibonacci Delta encoding."); + break; + case SF_FORMAT_SVX_EXP: + DEBUGF("SVX Exponential Delta encoding."); + break; + default: + assert(0); + break; + } + + DEBUGF("\n"); + DEBUGF("pcmbitwidth :%d\n", gs_wfInfo.pcmbitwidth); + DEBUGF("sections :%d\n", gs_wfInfo.sections); + DEBUGF("seekable :\n", gs_wfInfo.seekable); +#endif + + (void) lame_set_num_samples( gfp, gs_wfInfo.samples ); + if( -1 == lame_set_num_channels( gfp, gs_wfInfo.channels ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + gs_wfInfo.channels ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, gs_wfInfo.samplerate ); + pcmbitwidth = gs_wfInfo.pcmbitwidth; + } + + if (lame_get_num_samples( gfp ) == MAX_U_32_NUM) { + /* try to figure out num_samples */ + double flen = lame_get_file_size( lpszFileName ); + + if (flen >= 0) { + /* try file size, assume 2 bytes per sample */ + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { + if (mp3input_data.bitrate>0) { + double totalseconds = + (flen * 8.0 / (1000.0 * mp3input_data.bitrate)); + unsigned long tmp_num_samples = + totalseconds * lame_get_in_samplerate( gfp ); + + (void) lame_set_num_samples( gfp, tmp_num_samples ); + mp3input_data.nsamp = tmp_num_samples; + } + } + else { + lame_set_num_samples( gfp, + flen / (2 * lame_get_num_channels( gfp )) ); + } + } + } + + + return musicin; +} + + +/************************************************************************ +* +* read_samples() +* +* PURPOSE: reads the PCM samples from a file to the buffer +* +* SEMANTICS: +* Reads #samples_read# number of shorts from #musicin# filepointer +* into #sample_buffer[]#. Returns the number of samples read. +* +************************************************************************/ + +static int +read_samples_pcm(FILE * const musicin, int sample_buffer[2304], + int frame_size /* unused */ , int samples_to_read) +{ + int i; + int samples_read; + + samples_read = + sf_read_int((SNDFILE *) musicin, sample_buffer, samples_to_read); + + switch (pcmbitwidth) { + case 8: + for (i = 0; i < samples_read; i++) + sample_buffer[i] <<= (8 * sizeof(int) - 8); + break; + case 16: + for (i = 0; i < samples_read; i++) + sample_buffer[i] <<= (8 * sizeof(int) - 16); + break; + case 24: + for (i = 0; i < samples_read; i++) + sample_buffer[i] <<= (8 * sizeof(int) - 24); + break; + case 32: + break; + default: + if( silent < 10 ) { + fprintf(stderr, "Only 8, 16, 24 and 32 bit input files supported \n"); + } + exit(1); + } + + return samples_read; +} + + +#else /* defined(LIBSNDFILE) */ + +/************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + * + * OLD ISO/LAME routines follow. Used if you dont have LIBSNDFILE + * or for stdin/stdout support + * + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************/ + + + +/************************************************************************ +unpack_read_samples - read and unpack signed low-to-high byte or unsigned + single byte input. (used for read_samples function) + Output integers are stored in the native byte order + (little or big endian). -jd + in: samples_to_read + bytes_per_sample + swap_order - set for high-to-low byte order input stream + i/o: pcm_in + out: sample_buffer (must be allocated up to samples_to_read upon call) +returns: number of samples read +*/ +static int +unpack_read_samples( const int samples_to_read, const int bytes_per_sample, + const int swap_order, int *sample_buffer, FILE *pcm_in ) +{ + int samples_read; + int i; + int *op; /* output pointer */ + unsigned char *ip = (unsigned char *) sample_buffer; /* input pointer */ + const int b = sizeof(int) * 8; + +#define GA_URS_IFLOOP( ga_urs_bps ) \ + if( bytes_per_sample == ga_urs_bps ) \ + for( i = samples_read * bytes_per_sample; (i -= bytes_per_sample) >=0;) + + + samples_read = fread( sample_buffer, bytes_per_sample, + samples_to_read, pcm_in); + op = sample_buffer + samples_read; + + GA_URS_IFLOOP( 1 ) + *--op = (ip[i] ^ 0x80)<<(b-8) | 0x7f<<(b-16);/* convert from unsigned*/ + if( swap_order == 0 ) { + GA_URS_IFLOOP( 2 ) + *--op = ip[i]<<(b-16) | ip[i+1]<<(b-8); + GA_URS_IFLOOP( 3 ) + *--op = ip[i]<<(b-24) | ip[i+1]<<(b-16) | ip[i+2]<<(b-8); + GA_URS_IFLOOP( 4 ) + *--op = ip[i]<<(b-32) | ip[i+1]<<(b-24) | ip[i+2]<<(b-16) | ip[i+3] << (b-8); + } else { + GA_URS_IFLOOP( 2 ) + *--op = ip[i]<<(b-8) | ip[i+1]<<(b-16); + GA_URS_IFLOOP( 3 ) + *--op = ip[i]<<(b-8) | ip[i+1]<<(b-16) | ip[i+2]<<(b-24); + GA_URS_IFLOOP( 4 ) + *--op = ip[i]<<(b-8) | ip[i+1]<<(b-16) | ip[i+2]<<(b-24) | ip[i+3]<<(b-32); + } +#undef GA_URS_IFLOOP + return( samples_read ); +} + + + +/************************************************************************ +* +* read_samples() +* +* PURPOSE: reads the PCM samples from a file to the buffer +* +* SEMANTICS: +* Reads #samples_read# number of shorts from #musicin# filepointer +* into #sample_buffer[]#. Returns the number of samples read. +* +************************************************************************/ + +int +read_samples_pcm(FILE * musicin, int sample_buffer[2304], int frame_size, + int samples_to_read) +{ + int samples_read; + int iswav = (input_format == sf_wave); + int hi_lo_order; /* byte order of input stream */ + + if( (32 == pcmbitwidth) || (24 == pcmbitwidth) || (16 == pcmbitwidth) ) { + /* assume only recognized wav files are */ + /* in little endian byte order */ + hi_lo_order = (!iswav == !pcmswapbytes); + samples_read = unpack_read_samples(samples_to_read, pcmbitwidth/8, + hi_lo_order,sample_buffer, musicin ); + + } else if( 8 == pcmbitwidth ) { + samples_read = unpack_read_samples( samples_to_read, 1, 0, + sample_buffer, musicin ); + } else { + if( silent < 10 ) { + fprintf(stderr, "Only 8, 16, 24 and 32 bit input files supported \n"); + } + exit(1); + } + if (ferror(musicin)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading input file\n"); + } + exit(1); + } + + return samples_read; +} + + + +/* AIFF Definitions */ + +#define IFF_ID_FORM 0x464f524d /* "FORM" */ +#define IFF_ID_AIFF 0x41494646 /* "AIFF" */ +#define IFF_ID_AIFC 0x41494643 /* "AIFC" */ +#define IFF_ID_COMM 0x434f4d4d /* "COMM" */ +#define IFF_ID_SSND 0x53534e44 /* "SSND" */ +#define IFF_ID_MPEG 0x4d504547 /* "MPEG" */ + +#define IFF_ID_NONE 0x4e4f4e45 /* "NONE" */ /* AIFF-C data format */ +#define IFF_ID_2CBE 0x74776f73 /* "twos" */ /* AIFF-C data format */ +#define IFF_ID_2CLE 0x736f7774 /* "sowt" */ /* AIFF-C data format */ + +#define WAV_ID_RIFF 0x52494646 /* "RIFF" */ +#define WAV_ID_WAVE 0x57415645 /* "WAVE" */ +#define WAV_ID_FMT 0x666d7420 /* "fmt " */ +#define WAV_ID_DATA 0x64617461 /* "data" */ + + + + +/***************************************************************************** + * + * Read Microsoft Wave headers + * + * By the time we get here the first 32-bits of the file have already been + * read, and we're pretty sure that we're looking at a WAV file. + * + *****************************************************************************/ + +static int +parse_wave_header(lame_global_flags * gfp, FILE * sf) +{ + int format_tag = 0; + int channels = 0; + int block_align = 0; + int bits_per_sample = 0; + int samples_per_sec = 0; + int avg_bytes_per_sec = 0; + + + int is_wav = 0; + long data_length = 0, file_length, subSize = 0; + int loop_sanity = 0; + + file_length = Read32BitsHighLow(sf); + + if (Read32BitsHighLow(sf) != WAV_ID_WAVE) + return 0; + + for (loop_sanity = 0; loop_sanity < 20; ++loop_sanity) { + int type = Read32BitsHighLow(sf); + + if (type == WAV_ID_FMT) { + subSize = Read32BitsLowHigh(sf); + if (subSize < 16) { + /*DEBUGF( + "'fmt' chunk too short (only %ld bytes)!", subSize); */ + return 0; + } + + format_tag = Read16BitsLowHigh(sf); + subSize -= 2; + channels = Read16BitsLowHigh(sf); + subSize -= 2; + samples_per_sec = Read32BitsLowHigh(sf); + subSize -= 4; + avg_bytes_per_sec = Read32BitsLowHigh(sf); + subSize -= 4; + block_align = Read16BitsLowHigh(sf); + subSize -= 2; + bits_per_sample = Read16BitsLowHigh(sf); + subSize -= 2; + + /* DEBUGF(" skipping %d bytes\n", subSize); */ + + if (subSize > 0) { + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + }; + + } + else if (type == WAV_ID_DATA) { + subSize = Read32BitsLowHigh(sf); + data_length = subSize; + is_wav = 1; + /* We've found the audio data. Read no further! */ + break; + + } + else { + subSize = Read32BitsLowHigh(sf); + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + } + } + + if (format_tag != 1) { + return 0; /* oh no! non-supported format */ + } + + + if (is_wav) { + /* make sure the header is sane */ + if( -1 == lame_set_num_channels( gfp, channels ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + channels ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, samples_per_sec ); + pcmbitwidth = bits_per_sample; + (void) lame_set_num_samples( gfp, + data_length / (channels * ((bits_per_sample+7) / 8)) ); + } + return is_wav; +} + + + +/************************************************************************ +* aiff_check2 +* +* PURPOSE: Checks AIFF header information to make sure it is valid. +* returns 0 on success, 1 on errors +************************************************************************/ + +int +aiff_check2(const char *file_name, IFF_AIFF * const pcm_aiff_data) +{ + if (pcm_aiff_data->sampleType != IFF_ID_SSND) { + if( silent < 10 ) { + fprintf(stderr, "Sound data is not PCM in '%s'\n", file_name); + } + return 1; + } + if (pcm_aiff_data->sampleSize != sizeof(short) * CHAR_BIT) { + if( silent < 10 ) { + fprintf(stderr, "Sound data is not %i bits in '%s'\n", + sizeof(short) * CHAR_BIT, file_name); + } + return 1; + } + if (pcm_aiff_data->numChannels != 1 && pcm_aiff_data->numChannels != 2) { + if( silent < 10 ) { + fprintf(stderr, "Sound data is not mono or stereo in '%s'\n", + file_name); + } + return 1; + } + if (pcm_aiff_data->blkAlgn.blockSize != 0) { + if( silent < 10 ) { + fprintf(stderr, "Block size is not 0 bytes in '%s'\n", file_name); + } + return 1; + } + /* A bug, since we correctly skip the offset earlier in the code. + if (pcm_aiff_data->blkAlgn.offset != 0) { + fprintf(stderr, "Block offset is not 0 bytes in '%s'\n", file_name); + return 1; + } */ + + return 0; +} + +/***************************************************************************** + * + * Read Audio Interchange File Format (AIFF) headers. + * + * By the time we get here the first 32 bits of the file have already been + * read, and we're pretty sure that we're looking at an AIFF file. + * + *****************************************************************************/ + +static int +parse_aiff_header(lame_global_flags * gfp, FILE * sf) +{ + int is_aiff = 0; + long chunkSize = 0, subSize = 0, typeID = 0, dataType = 0; + IFF_AIFF aiff_info; + + memset(&aiff_info, 0, sizeof(aiff_info)); + chunkSize = Read32BitsHighLow(sf); + + typeID = Read32BitsHighLow(sf); + if ((typeID != IFF_ID_AIFF)&&(typeID != IFF_ID_AIFC)) + return 0; + + while (chunkSize > 0) { + int type = Read32BitsHighLow(sf); + chunkSize -= 4; + + /* DEBUGF( + "found chunk type %08x '%4.4s'\n", type, (char*)&type); */ + + /* don't use a switch here to make it easier to use 'break' for SSND */ + if (type == IFF_ID_COMM) { + subSize = Read32BitsHighLow(sf); + chunkSize -= subSize; + + aiff_info.numChannels = Read16BitsHighLow(sf); + subSize -= 2; + aiff_info.numSampleFrames = Read32BitsHighLow(sf); + subSize -= 4; + aiff_info.sampleSize = Read16BitsHighLow(sf); + subSize -= 2; + aiff_info.sampleRate = ReadIeeeExtendedHighLow(sf); + subSize -= 10; + + if (typeID == IFF_ID_AIFC) { + dataType = Read32BitsHighLow(sf); + subSize -= 4; + + if ((dataType != IFF_ID_2CLE) && + (dataType != IFF_ID_2CBE) && + (dataType != IFF_ID_NONE)) + return 0; + + if (aiff_info.sampleSize == 16) + pcmswapbytes = (!swapbytes == (dataType == IFF_ID_2CLE)); + } + + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + } + else if (type == IFF_ID_SSND) { + subSize = Read32BitsHighLow(sf); + chunkSize -= subSize; + + aiff_info.blkAlgn.offset = Read32BitsHighLow(sf); + subSize -= 4; + aiff_info.blkAlgn.blockSize = Read32BitsHighLow(sf); + subSize -= 4; + + if (fskip(sf, (long) aiff_info.blkAlgn.offset, SEEK_CUR) != 0) + return 0; + + aiff_info.sampleType = IFF_ID_SSND; + is_aiff = 1; + + /* We've found the audio data. Read no further! */ + break; + + } + else { + subSize = Read32BitsHighLow(sf); + chunkSize -= subSize; + + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + } + } + + /* DEBUGF("Parsed AIFF %d\n", is_aiff); */ + if (is_aiff) { + /* make sure the header is sane */ + if (0 != aiff_check2("name" /*???????????? */ , &aiff_info)) + return 0; + if( -1 == lame_set_num_channels( gfp, aiff_info.numChannels ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + aiff_info.numChannels ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, (int)aiff_info.sampleRate ); + pcmbitwidth = aiff_info.sampleSize; + (void) lame_set_num_samples( gfp, aiff_info.numSampleFrames ); + } + return is_aiff; +} + + + +/************************************************************************ +* +* parse_file_header +* +* PURPOSE: Read the header from a bytestream. Try to determine whether +* it's a WAV file or AIFF without rewinding, since rewind +* doesn't work on pipes and there's a good chance we're reading +* from stdin (otherwise we'd probably be using libsndfile). +* +* When this function returns, the file offset will be positioned at the +* beginning of the sound data. +* +************************************************************************/ + +void +parse_file_header(lame_global_flags * gfp, FILE * sf) +{ + + int type = Read32BitsHighLow(sf); + /* + DEBUGF( + "First word of input stream: %08x '%4.4s'\n", type, (char*) &type); + */ + count_samples_carefully = 0; + input_format = sf_raw; + + if (type == WAV_ID_RIFF) { + /* It's probably a WAV file */ + if (parse_wave_header(gfp, sf)) { + input_format = sf_wave; + count_samples_carefully = 1; + } else { + if( silent < 10 ) { + fprintf( stderr, "Warning: corrupt or unsupported WAVE format\n"); + } + } + } + else if (type == IFF_ID_FORM) { + /* It's probably an AIFF file */ + if (parse_aiff_header(gfp, sf)) { + input_format = sf_aiff; + count_samples_carefully = 1; + } + } + if (input_format == sf_raw) { + /* + ** Assume it's raw PCM. Since the audio data is assumed to begin + ** at byte zero, this will unfortunately require seeking. + */ + if (fseek(sf, 0L, SEEK_SET) != 0) { + /* ignore errors */ + } + input_format = sf_raw; + } +} + + + +void +CloseSndFile(sound_file_format input, FILE * musicin) +{ + if (fclose(musicin) != 0) { + if( silent < 10 ) { + fprintf(stderr, "Could not close audio input file\n"); + } + exit(2); + } +} + + + + + +FILE * +OpenSndFile(lame_global_flags * gfp, char *inPath) +{ + FILE *musicin; + + /* set the defaults from info incase we cannot determine them from file */ + lame_set_num_samples( gfp, MAX_U_32_NUM ); + + + if (!strcmp(inPath, "-")) { + lame_set_stream_binary_mode(musicin = stdin); /* Read from standard input. */ + } + else { + if ((musicin = fopen(inPath, "rb")) == NULL) { + if( silent < 10 ) { + fprintf(stderr, "Could not find \"%s\".\n", inPath); + } + exit(1); + } + } + + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { +#ifdef AMIGA_MPEGA + if (-1 == lame_decode_initfile(inPath, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + inPath); + } + exit(1); + } +#endif +#ifdef HAVE_MPGLIB + if (-1 == lame_decode_initfile(musicin, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + inPath); + } + exit(1); + } +#endif + if( -1 == lame_set_num_channels( gfp, mp3input_data.stereo ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + mp3input_data.stereo ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, mp3input_data.samplerate ); + (void) lame_set_num_samples( gfp, mp3input_data.nsamp ); + } + else if (input_format == sf_ogg) { + if( silent < 10 ) { + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + } + exit(1); + } + else { + if (input_format != sf_raw) { + parse_file_header(gfp, musicin); + } + + if (input_format == sf_raw) { + /* assume raw PCM */ + if( silent < 10 ) { + fprintf(stderr, "Assuming raw pcm input file"); + if (swapbytes) + fprintf(stderr, " : Forcing byte-swapping\n"); + else + fprintf(stderr, "\n"); + } + pcmswapbytes = swapbytes; + } + } + + + if (lame_get_num_samples( gfp ) == MAX_U_32_NUM && musicin != stdin) { + + double flen = lame_get_file_size(inPath); /* try to figure out num_samples */ + if (flen >= 0) { + /* try file size, assume 2 bytes per sample */ + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { + + if (mp3input_data.bitrate > 0) { + double totalseconds = + (flen * 8.0 / (1000.0 * mp3input_data.bitrate)); + unsigned long tmp_num_samples = + (unsigned long) (totalseconds * lame_get_in_samplerate( gfp )); + + (void) lame_set_num_samples( gfp, tmp_num_samples ); + mp3input_data.nsamp = tmp_num_samples; + } + } + else { + (void) lame_set_num_samples( gfp, + (unsigned long)(flen / (2 * lame_get_num_channels( gfp ))) ); + } + } + } + return musicin; +} +#endif /* defined(LIBSNDFILE) */ + + + + + +#if defined(HAVE_MPGLIB) +static int +check_aid(const unsigned char *header) +{ + return 0 == memcmp(header, "AiD\1", 4); +} + +/* + * Please check this and don't kill me if there's a bug + * This is a (nearly?) complete header analysis for a MPEG-1/2/2.5 Layer I, II or III + * data stream + */ + +static int +is_syncword_mp123(const void *const headerptr) +{ + const unsigned char *const p = headerptr; + static const char abl2[16] = + { 0, 7, 7, 7, 0, 7, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8 }; + + if ((p[0] & 0xFF) != 0xFF) + return 0; /* first 8 bits must be '1' */ + if ((p[1] & 0xE0) != 0xE0) + return 0; /* next 3 bits are also */ + if ((p[1] & 0x18) == 0x08) + return 0; /* no MPEG-1, -2 or -2.5 */ + if ((p[1] & 0x06) == 0x00) + return 0; /* no Layer I, II and III */ +#ifndef USE_LAYER_1 + if ((p[1] & 0x06) == 0x03*2) + return 0; /* layer1 is not supported */ +#endif +#ifndef USE_LAYER_2 + if ((p[1] & 0x06) == 0x02*2) + return 0; /* layer1 is not supported */ +#endif + if (!(((p[1] & 0x06) == 0x03*2 && input_format == sf_mp1) + || ((p[1] & 0x06) == 0x02*2 && input_format == sf_mp2) + || ((p[1] & 0x06) == 0x01*2 && input_format == sf_mp3))) + return 0; /* imcompatible layer with input file format */ + if ((p[2] & 0xF0) == 0xF0) + return 0; /* bad bitrate */ + if ((p[2] & 0x0C) == 0x0C) + return 0; /* no sample frequency with (32,44.1,48)/(1,2,4) */ + if ((p[1] & 0x18) == 0x18 && (p[1] & 0x06) == 0x04 + && abl2[p[2] >> 4] & (1 << (p[3] >> 6))) + return 0; + if ((p[3] & 3) == 2) + return 0; /* reserved enphasis mode */ + return 1; +} + +int +lame_decode_initfile(FILE * fd, mp3data_struct * mp3data) +{ + /* VBRTAGDATA pTagData; */ + /* int xing_header,len2,num_frames; */ + unsigned char buf[100]; + int ret; + int len, aid_header; + short int pcm_l[1152], pcm_r[1152]; + int freeformat = 0; + + memset(mp3data, 0, sizeof(mp3data_struct)); + lame_decode_init(); + + len = 4; + if (fread(buf, 1, len, fd) != len) + return -1; /* failed */ + if (buf[0] == 'I' && buf[1] == 'D' && buf[2] == '3') { + if( silent < 10 ) { + fprintf(stderr, "ID3v2 found. " + "Be aware that the ID3 tag is currently lost when transcoding.\n"); + } + len = 6; + if (fread(&buf, 1, len, fd) != len) + return -1; /* failed */ + buf[2] &= 127; buf[3] &= 127; buf[4] &= 127; buf[5] &= 127; + len = (((((buf[2] << 7) + buf[3]) << 7) + buf[4]) << 7) + buf[5]; + fskip(fd, len, SEEK_CUR); + len = 4; + if (fread(&buf, 1, len, fd) != len) + return -1; /* failed */ + } + aid_header = check_aid(buf); + if (aid_header) { + if (fread(&buf, 1, 2, fd) != 2) + return -1; /* failed */ + aid_header = (unsigned char) buf[0] + 256 * (unsigned char) buf[1]; + if( silent < 10 ) { + fprintf(stderr, "Album ID found. length=%i \n", aid_header); + } + /* skip rest of AID, except for 6 bytes we have already read */ + fskip(fd, aid_header - 6, SEEK_CUR); + + /* read 4 more bytes to set up buffer for MP3 header check */ + if (fread(&buf, 1, len, fd) != len) + return -1; /* failed */ + } + len = 4; + while (!is_syncword_mp123(buf)) { + int i; + for (i = 0; i < len - 1; i++) + buf[i] = buf[i + 1]; + if (fread(buf + len - 1, 1, 1, fd) != 1) + return -1; /* failed */ + } + + if ((buf[2] & 0xf0)==0) { + if( silent < 10 ) { + fprintf(stderr,"Input file is freeformat.\n"); + } + freeformat = 1; + } + /* now parse the current buffer looking for MP3 headers. */ + /* (as of 11/00: mpglib modified so that for the first frame where */ + /* headers are parsed, no data will be decoded. */ + /* However, for freeformat, we need to decode an entire frame, */ + /* so mp3data->bitrate will be 0 until we have decoded the first */ + /* frame. Cannot decode first frame here because we are not */ + /* yet prepared to handle the output. */ + ret = lame_decode1_headersB(buf, len, pcm_l, pcm_r, mp3data,&enc_delay,&enc_padding); + if (-1 == ret) + return -1; + + /* repeat until we decode a valid mp3 header. */ + while (!mp3data->header_parsed) { + len = fread(buf, 1, sizeof(buf), fd); + if (len != sizeof(buf)) + return -1; + ret = lame_decode1_headersB(buf, len, pcm_l, pcm_r, mp3data,&enc_delay,&enc_padding); + if (-1 == ret) + return -1; + } + + if (mp3data->bitrate==0 && !freeformat) { + if( silent < 10 ) { + fprintf(stderr, "fail to sync...\n"); + } + return lame_decode_initfile(fd, mp3data); + } + + if (mp3data->totalframes > 0) { + /* mpglib found a Xing VBR header and computed nsamp & totalframes */ + } + else { + /* set as unknown. Later, we will take a guess based on file size + * ant bitrate */ + mp3data->nsamp = MAX_U_32_NUM; + } + + + /* + fprintf(stderr,"ret = %i NEED_MORE=%i \n",ret,MP3_NEED_MORE); + fprintf(stderr,"stereo = %i \n",mp.fr.stereo); + fprintf(stderr,"samp = %i \n",freqs[mp.fr.sampling_frequency]); + fprintf(stderr,"framesize = %i \n",framesize); + fprintf(stderr,"bitrate = %i \n",mp3data->bitrate); + fprintf(stderr,"num frames = %ui \n",num_frames); + fprintf(stderr,"num samp = %ui \n",mp3data->nsamp); + fprintf(stderr,"mode = %i \n",mp.fr.mode); + */ + + return 0; +} + +/* +For lame_decode_fromfile: return code + -1 error + n number of samples output. either 576 or 1152 depending on MP3 file. + + +For lame_decode1_headers(): return code + -1 error + 0 ok, but need more data before outputing any samples + n number of samples output. either 576 or 1152 depending on MP3 file. +*/ +int +lame_decode_fromfile(FILE * fd, short pcm_l[], short pcm_r[], + mp3data_struct * mp3data) +{ + int ret = 0, len=0; + unsigned char buf[1024]; + + /* first see if we still have data buffered in the decoder: */ + ret = lame_decode1_headers(buf, len, pcm_l, pcm_r, mp3data); + if (ret!=0) return ret; + + + /* read until we get a valid output frame */ + while (1) { + len = fread(buf, 1, 1024, fd); + if (len == 0) { + /* we are done reading the file, but check for buffered data */ + ret = lame_decode1_headers(buf, len, pcm_l, pcm_r, mp3data); + if (ret<=0) { + lame_decode_exit(); /* release mp3decoder memory */ + return -1; /* done with file */ + } + break; + } + + ret = lame_decode1_headers(buf, len, pcm_l, pcm_r, mp3data); + if (ret == -1) { + lame_decode_exit(); /* release mp3decoder memory */ + return -1; + } + if (ret >0) break; + } + return ret; +} +#endif /* defined(HAVE_MPGLIB) */ + +/* end of get_audio.c */ + diff --git a/lame-3.97/frontend/.svn/text-base/get_audio.h.svn-base b/lame-3.97/frontend/.svn/text-base/get_audio.h.svn-base new file mode 100644 index 0000000..e092be5 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/get_audio.h.svn-base @@ -0,0 +1,107 @@ +/* + * Get Audio routines include file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifndef LAME_GET_AUDIO_H +#define LAME_GET_AUDIO_H +#include "lame.h" +#include + +typedef enum sound_file_format_e { + sf_unknown, + sf_raw, + sf_wave, + sf_aiff, + sf_mp1, /* MPEG Layer 1, aka mpg */ + sf_mp2, /* MPEG Layer 2 */ + sf_mp3, /* MPEG Layer 3 */ + sf_ogg +} sound_file_format; + + + + +FILE *init_outfile ( char *outPath, int decode ); +void init_infile(lame_global_flags *, char *inPath); +void close_infile(void); +int get_audio(lame_global_flags * const gfp, int buffer[2][1152]); +int get_audio16(lame_global_flags * const gfp, short buffer[2][1152]); +int WriteWaveHeader(FILE * const fp, const int pcmbytes, + const int freq, const int channels, const int bits); + + + +/* the simple lame decoder */ +/* After calling lame_init(), lame_init_params() and + * init_infile(), call this routine to read the input MP3 file + * and output .wav data to the specified file pointer + * lame_decoder will ignore the first 528 samples, since these samples + * represent the mpglib decoding delay (and are all 0). + *skip = number of additional + * samples to skip, to (for example) compensate for the encoder delay, + * only used when decoding mp3 +*/ +int lame_decoder(lame_global_flags *gfp,FILE *outf,int skip, char *inPath, char *outPath); + + + +void SwapBytesInWords( short *loc, int words ); + + + +#ifdef LIBSNDFILE + +#include "sndfile.h" + + +#else +/***************************************************************** + * LAME/ISO built in audio file I/O routines + *******************************************************************/ +#include "portableio.h" + + +typedef struct blockAlign_struct { + unsigned long offset; + unsigned long blockSize; +} blockAlign; + +typedef struct IFF_AIFF_struct { + short numChannels; + unsigned long numSampleFrames; + short sampleSize; + double sampleRate; + unsigned long sampleType; + blockAlign blkAlgn; +} IFF_AIFF; + +extern int aiff_read_headers(FILE*, IFF_AIFF*); +extern int aiff_seek_to_sound_data(FILE*); +extern int aiff_write_headers(FILE*, IFF_AIFF*); +extern int parse_wavheader(void); +extern int parse_aiff(const char fn[]); +extern void aiff_check(const char*, IFF_AIFF*, int*); + + + +#endif /* ifdef LIBSNDFILE */ +#endif /* ifndef LAME_GET_AUDIO_H */ + diff --git a/lame-3.97/frontend/.svn/text-base/gpkplotting.c.svn-base b/lame-3.97/frontend/.svn/text-base/gpkplotting.c.svn-base new file mode 100644 index 0000000..734ecf1 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/gpkplotting.c.svn-base @@ -0,0 +1,339 @@ +/* + * GTK plotting routines source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: gpkplotting.c,v 1.9 2004/06/06 15:31:54 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "gpkplotting.h" + +#ifdef STDC_HEADERS +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef WITH_DMALLOC +#include +#endif + +static gint num_plotwindows = 0; +static gint max_plotwindows = 10; +static GdkPixmap *pixmaps[10]; +static GtkWidget *pixmapboxes[10]; + + + + +/* compute a gdkcolor */ +void setcolor(GtkWidget *widget, GdkColor *color, gint red,gint green,gint blue) +{ + + /* colors in GdkColor are taken from 0 to 65535, not 0 to 255. */ + color->red = red * (65535/255); + color->green = green * (65535/255); + color->blue = blue * (65535/255); + color->pixel = (gulong)(color->red*65536 + color->green*256 + color->blue); + /* find closest in colormap, if needed */ + gdk_color_alloc(gtk_widget_get_colormap(widget),color); +} + + +void gpk_redraw(GdkPixmap *pixmap, GtkWidget *pixmapbox) +{ + /* redraw the entire pixmap */ + gdk_draw_pixmap(pixmapbox->window, + pixmapbox->style->fg_gc[GTK_WIDGET_STATE (pixmapbox)], + pixmap,0,0,0,0, + pixmapbox->allocation.width, + pixmapbox->allocation.height); +} + + +static GdkPixmap **findpixmap(GtkWidget *widget) +{ + int i; + for (i=0; i=num_plotwindows) { + g_print("findpixmap(): bad argument widget \n"); + return NULL; + } + return &pixmaps[i]; +} + +void gpk_graph_draw(GtkWidget *widget, /* plot on this widged */ + int n, /* number of data points */ + gdouble *xcord, gdouble *ycord, /* data */ + gdouble xmn,gdouble ymn, /* coordinates of corners */ + gdouble xmx,gdouble ymx, + int clear, /* clear old plot first */ + char *title, /* add a title (only if clear=1) */ + GdkColor *color) +{ + GdkPixmap **ppixmap; + GdkPoint *points; + int i; + gint16 width,height; + GdkFont *fixed_font; + GdkGC *gc; + + gc = gdk_gc_new(widget->window); + gdk_gc_set_foreground(gc, color); + + + + if ((ppixmap=findpixmap(widget))) { + width = widget->allocation.width; + height = widget->allocation.height; + + + if (clear) { + /* white background */ + gdk_draw_rectangle (*ppixmap, + widget->style->white_gc, + TRUE,0, 0,width,height); + /* title */ +#ifdef _WIN32 + fixed_font = gdk_font_load ("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*"); +#else + fixed_font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1"); +#endif + + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,10,title,strlen(title)); + } + + + points = g_malloc(n*sizeof(GdkPoint)); + for (i=0; iwindow); + gdk_gc_set_foreground(gc, color); + + + if ((ppixmap=findpixmap(widget))) { + width = widget->allocation.width; + height = widget->allocation.height; + + + for (i=0; i<2 ; i++) { + points[i].x =.5+ ((xcord[i]-xmn)*(width-1)/(xmx-xmn)); + points[i].y =.5+ ((ycord[i]-ymx)*(height-1)/(ymn-ymx)); + } + width=points[1].x-points[0].x + 1; + height=points[1].y-points[0].y + 1; + gdk_draw_rectangle(*ppixmap,gc,TRUE, + points[0].x,points[0].y,width,height); + gpk_redraw(*ppixmap,widget); + } + gdk_gc_destroy(gc); +} + + + +void gpk_bargraph_draw(GtkWidget *widget, /* plot on this widged */ + int n, /* number of data points */ + gdouble *xcord, gdouble *ycord, /* data */ + gdouble xmn,gdouble ymn, /* coordinates of corners */ + gdouble xmx,gdouble ymx, + int clear, /* clear old plot first */ + char *title, /* add a title (only if clear=1) */ + int barwidth, /* bar width. 0=compute based on window size */ + GdkColor *color) +{ + GdkPixmap **ppixmap; + GdkPoint points[2]; + int i; + gint16 width,height,x,y,barheight; + GdkFont *fixed_font; + GdkGC *gc; + int titleSplit; + + + gc = gdk_gc_new(widget->window); + gdk_gc_set_foreground(gc, color); + + + if ((ppixmap=findpixmap(widget))) { + width = widget->allocation.width; + height = widget->allocation.height; + + + if (clear) { + /* white background */ + gdk_draw_rectangle (*ppixmap, + widget->style->white_gc, + TRUE,0, 0,width,height); + /* title */ +#ifdef _WIN32 + fixed_font = gdk_font_load ("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*"); +#else + fixed_font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1"); +#endif + + titleSplit = strcspn(title, "\n"); + + if (titleSplit && (titleSplit != strlen(title))) { + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,10, title, titleSplit); + + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,22, title+titleSplit+1, (strlen(title)-titleSplit)-1); + + + } else { + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,10,title,strlen(title)); + } + } + + + for (i=0; i 5 ? 5 : barwidth; + barwidth = barwidth < 1 ? 1 : barwidth; + barheight = height-1 - y; + /* gdk_draw_lines(*ppixmap,gc,points,2); */ + gdk_draw_rectangle(*ppixmap,gc,TRUE,x,y,barwidth,barheight); + + } + gpk_redraw(*ppixmap,widget); + } + gdk_gc_destroy(gc); +} + + + + + +/* Create a new backing pixmap of the appropriate size */ +static gint +configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer data) +{ + GdkPixmap **ppixmap; + if ((ppixmap=findpixmap(widget))){ + if (*ppixmap) gdk_pixmap_unref(*ppixmap); + *ppixmap = gdk_pixmap_new(widget->window, + widget->allocation.width, + widget->allocation.height, + -1); + gdk_draw_rectangle (*ppixmap, + widget->style->white_gc, + TRUE, + 0, 0, + widget->allocation.width, + widget->allocation.height); + } + return TRUE; +} + + + +/* Redraw the screen from the backing pixmap */ +static gint +expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer data) +{ + GdkPixmap **ppixmap; + if ((ppixmap=findpixmap(widget))){ + gdk_draw_pixmap(widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + *ppixmap, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + } + + return FALSE; +} + + + + + +GtkWidget *gpk_plot_new(int width, int height) +{ + GtkWidget *pixmapbox; + + pixmapbox = gtk_drawing_area_new(); + gtk_drawing_area_size(GTK_DRAWING_AREA(pixmapbox),width,height); + gtk_signal_connect (GTK_OBJECT (pixmapbox), "expose_event", + (GtkSignalFunc) expose_event, NULL); + gtk_signal_connect (GTK_OBJECT(pixmapbox),"configure_event", + (GtkSignalFunc) configure_event, NULL); + gtk_widget_set_events (pixmapbox, GDK_EXPOSURE_MASK); + + if (num_plotwindows < max_plotwindows) { + pixmapboxes[num_plotwindows] = pixmapbox; + pixmaps[num_plotwindows] = NULL; + num_plotwindows ++; + } else { + g_print("gtk_plotarea_new(): exceeded maximum of 10 plotarea windows\n"); + } + + return pixmapbox; +} + + diff --git a/lame-3.97/frontend/.svn/text-base/gpkplotting.h.svn-base b/lame-3.97/frontend/.svn/text-base/gpkplotting.h.svn-base new file mode 100644 index 0000000..33573da --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/gpkplotting.h.svn-base @@ -0,0 +1,53 @@ +/* + * GTK plotting routines include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_GPKPLOTTING_H +#define LAME_GPKPLOTTING_H + +#include + +/* allocate a graphing widget */ +GtkWidget *gpk_plot_new(int width,int height); + +/* graph a function in the graphing widged */ +void gpk_graph_draw(GtkWidget *widget, + int n, gdouble *xcord, gdouble *ycord, + gdouble xmn, gdouble ymn,gdouble xmx,gdouble ymx, + int clear, char * title,GdkColor *color); + +/* draw a rectangle in the graphing widget */ +void gpk_rectangle_draw(GtkWidget *widget, /* plot on this widged */ + gdouble xcord[2], gdouble ycord[2], /* corners */ + gdouble xmn,gdouble ymn, /* coordinates of corners */ + gdouble xmx,gdouble ymx, + GdkColor *color); /* color to use */ + +/* make a bar graph in the graphing widged */ +void gpk_bargraph_draw(GtkWidget *widget, + int n, gdouble *xcord, gdouble *ycord, + gdouble xmn, gdouble ymn,gdouble xmx,gdouble ymx, + int clear, char * title, int bwidth,GdkColor *color); + +/* set forground color */ +void setcolor(GtkWidget *widget, GdkColor *color,int red,int green,int blue); + +#endif + diff --git a/lame-3.97/frontend/.svn/text-base/gtkanal.c.svn-base b/lame-3.97/frontend/.svn/text-base/gtkanal.c.svn-base new file mode 100644 index 0000000..36a7fab --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/gtkanal.c.svn-base @@ -0,0 +1,1589 @@ +/* + * GTK plotting routines source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: gtkanal.c,v 1.35 2005/01/13 18:20:43 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include "main.h" +#include "lame.h" +#include "lame-analysis.h" +#include "get_audio.h" +#include "gtkanal.h" +#include "gpkplotting.h" + +/* this file should be removed. The few data items accessed in 'gfc' + should be made accessable by writing a lame_set_variable() function */ +#include "util.h" + +#ifdef WITH_DMALLOC +#include +#endif + + + +#ifdef _WIN32 +# include +# define msleep(t) Sleep(t) +#else +# include +# define msleep(t) usleep((t) * 1000) +#endif + + + + +/*! Stringify \a x. */ +#define STR(x) #x +/*! Stringify \a x, perform macro expansion. */ +#define XSTR(x) STR(x) + +#define MP3X_MAJOR_VERSION 0 /* Major version number */ +#define MP3X_MINOR_VERSION 82 /* Minor version number */ +#define MP3X_ALPHA_VERSION 0 /* Set number if this is an alpha version, otherwise zero */ +#define MP3X_BETA_VERSION 0 /* Set number if this is a beta version, otherwise zero */ + + +plotting_data *pinfo; +plotting_data *pplot; +plotting_data Pinfo[NUMPINFO]; + + +/* global variables for the state of the system */ +static gint idle_keepgoing; /* processing of frames is ON */ +static gint idle_count_max; /* number of frames to process before plotting */ +static gint idle_count; /* pause & plot when idle_count=idel_count_max */ +static gint idle_end=0; /* process all frames, stop at last frame */ +static gint idle_back = 0; /* set when we are displaying the old data */ +static int mp3done = 0; /* last frame has been read */ +static GtkWidget *frameprogress; /* progress bar */ +static GtkWidget *framecounter; /* progress counter */ + +static int subblock_draw[3] = { 1, 1, 1 }; + +/* main window */ +GtkWidget *window; +/* Backing pixmap for drawing areas */ +GtkWidget *pcmbox; /* PCM data plotted here */ +GtkWidget *winbox; /* mpg123 synthesis data plotted here */ +GtkWidget *enerbox[2]; /* spectrum, gr=0,1 plotted here */ +GtkWidget *mdctbox[2]; /* mdct coefficients gr=0,1 plotted here */ +GtkWidget *sfbbox[2]; /* scalefactors gr=0,1 plotted here */ +GtkWidget *headerbox; /* mpg123 header info shown here */ + + +struct gtkinfostruct { + int filetype; /* input file type 0=WAV, 1=MP3 */ + int msflag; /* toggle between L&R vs M&S PCM data display */ + int chflag; /* toggle between L & R channels */ + int kbflag; /* toggle between wave # and barks */ + int flag123; /* show mpg123 frame info, OR ISO encoder frame info */ + double avebits; /* running average bits per frame */ + int approxbits; /* (approx) bits per frame */ + int maxbits; /* max bits per frame used so far*/ + int totemph; /* total of frames with de-emphasis */ + int totms; /* total frames with ms_stereo */ + int totis; /* total frames with i_stereo */ + int totshort; /* total granules with short blocks */ + int totmix; /* total granules with mixed blocks */ + int totpreflag; /* total granules with preflag */ + int pupdate; /* plot while processing, or only when needed */ + int sfblines; /* plot scalefactor bands in MDCT plot */ + int difference; /* plot original - decoded instead of orig vs. decoded */ + int totalframes; +} gtkinfo; + + +static lame_global_flags *gfp; +lame_internal_flags *gfc; + +/********************************************************************** + * read one frame and encode it + **********************************************************************/ +int gtkmakeframe(void) +{ + int iread = 0; + static int init=0; + static int mpglag; + static short int Buffer[2][1152]; + short int mpg123pcm[2][1152]; + int ch,j; + int mp3count = 0; + int mp3out = 0; + int channels_out; + char mp3buffer[LAME_MAXMP3BUFFER]; + extern plotting_data *mpg123_pinfo; + static int frameNum=0; + int framesize = lame_get_framesize(gfp); + + channels_out = (lame_get_mode(gfp)==MONO) ? 1 : 2; + + pinfo->frameNum = frameNum; + pinfo->sampfreq = lame_get_out_samplerate ( gfp ); + pinfo->framesize= framesize; + pinfo->stereo = channels_out; + + /* If the analsys code is enabled, lame will writes data into gfc->pinfo, + * and mpg123 will write data into mpg123_pinfo. Set these so + * the libraries put this data in the right place: */ + gfc->pinfo = pinfo; + mpg123_pinfo = pinfo; + + if (input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) { + iread = get_audio16(gfp,Buffer); + + + /* add a delay of framesize-DECDELAY, which will make the total delay + * exactly one frame, so we can sync MP3 output with WAV input */ + for ( ch = 0; ch < channels_out; ch++ ) { + for ( j = 0; j < framesize-DECDELAY; j++ ) + pinfo->pcmdata2[ch][j] = pinfo->pcmdata2[ch][j+framesize]; + for ( j = 0; j < framesize; j++ ) /*rescale from int to short int */ + pinfo->pcmdata2[ch][j+framesize-DECDELAY] = Buffer[ch][j]; + } + + pinfo->frameNum123 = frameNum-1; + ++frameNum; + + }else { + + /* feed data to encoder until encoder produces some output */ + while (lame_get_frameNum(gfp) == pinfo->frameNum) { + + if (!init) { + init=1; + mpglag=1; + lame_decode_init(); + } + + iread = get_audio16(gfp,Buffer); + if (iread > framesize) { + /* NOTE: frame analyzer requires that we encode one frame + * for each pass through this loop. If lame_encode_buffer() + * is feed data too quickly, it will sometimes encode multiple frames + * breaking this loop. + */ + fprintf(stderr,"Warning: get_audio is returning too much data.\n"); + } + if (0==iread) break; /* eof */ + + mp3count=lame_encode_buffer(gfp,Buffer[0],Buffer[1],iread, + mp3buffer,(int)sizeof(mp3buffer)); + + assert( !(mp3count > 0 && lame_get_frameNum(gfp) == pinfo->frameNum)); + /* not possible to produce mp3 data without encoding at least + * one frame of data which would increment frameNum */ + } + frameNum = lame_get_frameNum(gfp); /* use the internal MP3 frame counter */ + + + /* decode one frame of output */ + mp3out=lame_decode1(mp3buffer,mp3count,mpg123pcm[0],mpg123pcm[1]); /* re-synthesis to pcm */ + /* mp3out = 0: need more data to decode */ + /* mp3out = -1: error. Lets assume 0 pcm output */ + /* mp3out = number of samples output */ + if (mp3out>0) assert(mp3out==pinfo->framesize); + if (mp3out!=0) { + /* decoded output is for frame pinfo->frameNum123 + * add a delay of framesize-DECDELAY, which will make the total delay + * exactly one frame */ + pinfo->frameNum123=pinfo->frameNum-mpglag; + for ( ch = 0; ch < pinfo->stereo; ch++ ) { + for ( j = 0; j < pinfo->framesize-DECDELAY; j++ ) + pinfo->pcmdata2[ch][j] = pinfo->pcmdata2[ch][j+pinfo->framesize]; + for ( j = 0; j < pinfo->framesize; j++ ) { + pinfo->pcmdata2[ch][j+pinfo->framesize-DECDELAY] = + (mp3out==-1) ? 0 : mpg123pcm[ch][j]; + } + } + }else{ + if (mpglag == MAXMPGLAG) { + fprintf(stderr,"READ_AHEAD set too low - not enough frame buffering.\n" + "MP3x display of input and output PCM data out of sync.\n"); + fflush(stderr); + } + else mpglag++; + pinfo->frameNum123=-1; /* no frame output */ + } + } + return iread; +} + + +void plot_frame(void) +{ + int i,j,n,ch,gr; + gdouble *xcord,*ycord; + gdouble xmx,xmn,ymx,ymn; + double *data,*data2,*data3; + char title2[80]; + char label[80],label2[80]; + char *title; + plotting_data *pplot1; + plotting_data *pplot2 = NULL; + + double en,samp; + int sampindex,version=0; + int barthick; + static int firstcall=1; + static GdkColor *barcolor,*color,*grcolor[2]; + static GdkColor yellow,gray,cyan,magenta,orange,pink,red,green,blue,black,oncolor,offcolor; + int blocktype[2][2]; + int headbits; + int mode_gr = 2; + + /* find the frame where mpg123 produced output coming from input frame + * pinfo. i.e.: out_frame + out_frame_lag = input_frame */ + for (i=1; i<=MAXMPGLAG; i++ ) { + if ((pplot-i)->frameNum123 == pplot->frameNum ) { + pplot2 = pplot-i; + break; + } + } + if (i > MAXMPGLAG) { + fprintf(stderr,"input/output pcm syncing problem. should not happen!\n"); + pplot2=pplot-1; + } + + + /* however, the PCM data is delayed by 528 samples in the encoder filterbanks. + * We added another 1152-528 delay to this so the PCM data is *exactly* one + * frame behind the header & MDCT information */ + pplot1 =pplot2 +1; /* back one frame for header info, MDCT */ + + /* allocate these GC's only once */ + if (firstcall) { + firstcall=0; + /* grcolor[0] = &magenta; */ + grcolor[0] = &blue; + grcolor[1] = &green; + barcolor = &gray; + + setcolor(headerbox,&oncolor,255,0,0); + setcolor(headerbox,&offcolor,175,175,175); + setcolor(pcmbox,&red,255,0,0); + setcolor(pcmbox,&pink,255,0,255); + setcolor(pcmbox,&magenta,255,0,100); + setcolor(pcmbox,&orange,255,127,0); + setcolor(pcmbox,&cyan,0,255,255); + setcolor(pcmbox,&green,0,255,0); + setcolor(pcmbox,&blue,0,0,255); + setcolor(pcmbox,&black,0,0,0); + setcolor(pcmbox,&gray,100,100,100); + setcolor(pcmbox,&yellow,255,255,0); + + } + + /******************************************************************* + * frame header info + *******************************************************************/ + if (pplot1->sampfreq) + samp=pplot1->sampfreq; + else samp=1; + sampindex = SmpFrqIndex((long)samp, &version); + + ch = gtkinfo.chflag; + + headbits = 32 + ((pplot1->stereo==2) ? 256 : 136); + gtkinfo.approxbits = (pplot1->bitrate*1000*1152.0/samp) - headbits; + sprintf(title2,"%3.1fkHz %ikbs ",samp/1000,pplot1->bitrate); + gtk_text_freeze (GTK_TEXT(headerbox)); + gtk_text_backward_delete(GTK_TEXT(headerbox), + gtk_text_get_length(GTK_TEXT(headerbox))); + gtk_text_set_point(GTK_TEXT(headerbox),0); + gtk_text_insert(GTK_TEXT(headerbox),NULL,&oncolor,NULL,title2, -1); + title = " mono "; + if (2==pplot1->stereo) title = pplot1->js ? " js " : " s "; + gtk_text_insert (GTK_TEXT(headerbox), NULL, &oncolor, NULL,title, -1); + color = pplot1->ms_stereo ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"ms ", -1); + color = pplot1->i_stereo ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"is ", -1); + + color = pplot1->crc ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"crc ", -1); + color = pplot1->padding ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"pad ", -1); + + color = pplot1->emph ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"em ", -1); + + sprintf(title2,"bv=%i,%i ",pplot1->big_values[0][ch],pplot1->big_values[1][ch]); + gtk_text_insert (GTK_TEXT(headerbox), NULL, &black, NULL,title2, -1); + + color = pplot1->scfsi[ch] ? &oncolor : &offcolor ; + sprintf(title2,"scfsi=%i ",pplot1->scfsi[ch]); + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,title2, -1); + if (gtkinfo.filetype) + sprintf(title2," mdb=%i %i/NA",pplot1->maindata,pplot1->totbits); + else + sprintf(title2," mdb=%i %i/%i", + pplot1->maindata,pplot1->totbits,pplot1->totbits+pplot->resvsize); + gtk_text_insert (GTK_TEXT(headerbox), NULL, &oncolor, NULL,title2, -1); + gtk_text_thaw (GTK_TEXT(headerbox)); + + + + /******************************************************************* + * block type + *******************************************************************/ + for (gr = 0 ; gr < mode_gr ; gr ++) + if (gtkinfo.flag123) + blocktype[gr][ch]=pplot1->mpg123blocktype[gr][ch]; + else blocktype[gr][ch]=pplot->blocktype[gr][ch]; + + + /******************************************************************* + * draw the PCM data * + *******************************************************************/ + n = 1600; /* PCM frame + FFT window: 224 + 1152 + 224 */ + xcord = g_malloc(n*sizeof(gdouble)); + ycord = g_malloc(n*sizeof(gdouble)); + + + if (gtkinfo.msflag) + title=ch ? "Side Channel" : "Mid Channel"; + else + title=ch ? "Right Channel" : "Left Channel"; + + sprintf(title2,"%s mask_ratio=%3.2f %3.2f ener_ratio=%3.2f %3.2f", + title, + pplot->ms_ratio[0],pplot->ms_ratio[1], + pplot->ms_ener_ratio[0],pplot->ms_ener_ratio[1]); + + + ymn = -32767 ; + ymx = 32767; + xmn = 0; + xmx = 1600-1; + + /* 0 ... 224 draw in black, connecting to 224 pixel + * 1375 .. 1599 draw in black connecting to 1375 pixel + * 224 ... 1375 MP3 frame. draw in blue + */ + + /* draw the title */ + gpk_graph_draw(pcmbox,0,xcord,ycord,xmn,ymn,xmx,ymx,1,title2, + &black); + + + /* draw some hash marks dividing the frames */ + ycord[0] = ymx*.8; ycord[1] = ymn*.8; + for (gr=0 ; gr<=2; gr++) { + xcord[0] = 223.5 + gr*576; xcord[1] = 223.5 +gr*576; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + for (gr = 0 ; gr < mode_gr ; gr++) { + if (blocktype[gr][ch]==2) + for (i=1 ; i<=2; i++) { + xcord[0] = 223.5+gr*576 + i*192; + xcord[1] = 223.5+gr*576 + i*192; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + } + /* bars representing FFT windows */ + xcord[0] = 0; ycord[0] = ymn+3000; + xcord[1] = 1024-1; ycord[1] = ymn+1000; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,grcolor[0]); + xcord[0] = 576; ycord[0] = ymn+2000; + xcord[1] = 576+1024-1; ycord[1] = ymn; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,grcolor[1]); + + + /* plot PCM data */ + for (i=0; ipcmdata[0][i]-pplot->pcmdata[1][i]) : + .5*(pplot->pcmdata[0][i]+pplot->pcmdata[1][i]); + else + ycord[i]=pplot->pcmdata[ch][i]; + } + + /* skip plot if we are doing an mp3 file */ + if (!gtkinfo.filetype) { + gpk_graph_draw(pcmbox,n,xcord,ycord,xmn,ymn,xmx,ymx,0,title2,&black); + } + + + /*******************************************************************/ + /* draw the PCM re-synthesis data */ + /*******************************************************************/ + n = 1152; + /* + sprintf(title2,"Re-synthesis mask_ratio=%3.2f %3.2f ener_ratio=%3.2f %3.2f", + pplot->ms_ratio[0],pplot->ms_ratio[1], + pplot->ms_ener_ratio[0],pplot->ms_ener_ratio[1]); + */ + title="Re-synthesis"; + if (gtkinfo.difference) + title="Re-synthesis difference (amplified 20db)"; + + + ymn = -32767 ; + ymx = 32767; + xmn = 0; + xmx = 1600-1; + gpk_graph_draw(winbox,0,xcord,ycord, + xmn,ymn,xmx,ymx,1,title,&black); + /* draw some hash marks dividing the frames */ + ycord[0] = ymx*.8; ycord[1] = ymn*.8; + for (gr=0 ; gr<=2; gr++) { + xcord[0] = 223.5 + gr*576; xcord[1] = 223.5 +gr*576; + gpk_rectangle_draw(winbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + for (gr = 0 ; gr < 2 ; gr++) { + if (blocktype[gr][ch]==2) + for (i=1 ; i<=2; i++) { + xcord[0] = 223.5+gr*576 + i*192; + xcord[1] = 223.5+gr*576 + i*192; + gpk_rectangle_draw(winbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + } + + /* this piece of PCM data from previous frame */ + n = 224; + for (j=1152-n,i=0; ipcmdata2[0][j]- + pplot1->pcmdata2[1][j]) : + .5*(pplot1->pcmdata2[0][j]+pplot1->pcmdata2[1][j]); + else + ycord[i]=pplot1->pcmdata2[ch][j]; + } + + /* this piece of PCM data from current frame */ + n = 1152; + for (i=0; ipcmdata2[0][i]-pplot2->pcmdata2[1][i]) : + .5*(pplot2->pcmdata2[0][i]+pplot2->pcmdata2[1][i]); + else + ycord[i+224]=pplot2->pcmdata2[ch][i]; + } + + n=1152+224; + if (gtkinfo.difference) { + for (i=0; ipcmdata[0][i]-pplot->pcmdata[1][i]) : + .5*(pplot->pcmdata[0][i]+pplot->pcmdata[1][i]); + else + ycord[i] -= pplot->pcmdata[ch][i]; + } + ycord[i] *= 100; + } + + + gpk_graph_draw(winbox,n,xcord,ycord, + xmn,ymn,xmx,ymx,0,title,&black); + + + + + + /*******************************************************************/ + /* draw the MDCT energy spectrum */ + /*******************************************************************/ + for (gr = 0 ; gr < mode_gr ; gr ++) { + int bits,bits2; + char *blockname=""; + switch (blocktype[gr][ch]) { + case 0: blockname = "normal"; break; + case 1: blockname = "start"; break; + case 2: blockname = "short"; break; + case 3: blockname = "end"; break; + } + strcpy(label,blockname); + if (pplot1->mixed[gr][ch]) strcat(label,"(mixed)"); + + + + + n = 576; + if (gtkinfo.flag123) { + data = pplot1->mpg123xr[gr][0]; + data2 = pplot1->mpg123xr[gr][1]; + }else{ + data = pplot->xr[gr][0]; + data2 = pplot->xr[gr][1]; + } + + + xmn = 0; + xmx = n-1; + ymn=0; + ymx=11; + + /* draw title, erase old plot */ + if (gtkinfo.flag123) { + bits=pplot1->mainbits[gr][ch]; + bits2=pplot1->sfbits[gr][ch]; + }else{ + bits=pplot->LAMEmainbits[gr][ch]; + bits2=pplot->LAMEsfbits[gr][ch]; + } + sprintf(title2,"MDCT%1i(%s) bits=%i/%i ",gr,label,bits,bits2); + gpk_bargraph_draw(mdctbox[gr],0,xcord,ycord, + xmn,ymn,xmx,ymx,1,title2,0,barcolor); + + /* draw some hash marks showing scalefactor bands */ + if (gtkinfo.sfblines) { + int fac,nsfb, *scalefac; + if (blocktype[gr][ch]==SHORT_TYPE) { + nsfb=SBMAX_s; + i = nsfb-7; + fac=3; + scalefac = gfc->scalefac_band.s; + }else{ + nsfb=SBMAX_l; + i = nsfb-10; + fac=1; + scalefac = gfc->scalefac_band.l; + } + for ( ; iframeNum,gr,i, +10*log10(data[i]*data[i]), +10*log10(.33*(data[i-1]*data[i-1] + data[i]*data[i] + data[i+1]*data[i+1])) +); +#endif + + ymx=(ycord[i] > ymx) ? ycord[i] : ymx; + ymn=(ycord[i] < ymn) ? ycord[i] : ymn; + } + /* print the min/max + sprintf(title2,"MDCT%1i %5.2f %5.2f bits=%i",gr,ymn,ymx, + pplot1->mainbits[gr][ch]); + */ + if (gtkinfo.flag123) bits=pplot1->mainbits[gr][ch]; + else bits=pplot->LAMEmainbits[gr][ch]; + + + sprintf(title2,"MDCT%1i(%s) bits=%i ",gr,label,bits); + + xmn = 0; + xmx = n-1; + ymn=0; + ymx=11; + gpk_bargraph_draw(mdctbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,0,title2,0,barcolor); + } + + + + + /******************************************************************* + * draw the psy model energy spectrum (k space) + * l3psy.c computes pe, en, thm for THIS granule. + *******************************************************************/ + if (gtkinfo.kbflag){ + for (gr = 0 ; gr < mode_gr ; gr ++) { + n = HBLKSIZE; /* only show half the spectrum */ + + data = &pplot->energy[gr][ch][0]; + + ymn=9e20; + ymx=-9e20; + for (i=0; i ymx) ? ycord[i] : ymx; + ymn=(ycord[i] < ymn) ? ycord[i] : ymn; + } + for (en=0 , j=0; jenergy[gr][ch][j]; + + sprintf(title2,"FFT%1i pe=%5.2fK en=%5.2e ",gr, + pplot->pe[gr][ch]/1000,en); + + ymn = 3; + ymx = 15; + xmn = 1; + xmx = n; + gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,1,title2,0,barcolor); + + } + }else{ + /******************************************************************* + * draw the psy model energy spectrum (scalefactor bands) + *******************************************************************/ + for (gr = 0 ; gr < mode_gr ; gr ++) { + + if (blocktype[gr][ch]==2) { + n = 3*SBMAX_s; + data = &pplot->en_s[gr][ch][0]; + data2 = &pplot->thr_s[gr][ch][0]; + data3 = &pplot->xfsf_s[gr][ch][0]; + } else { + n = SBMAX_l; + data = &pplot->en[gr][ch][0]; + data2 = &pplot->thr[gr][ch][0]; + data3 = &pplot->xfsf[gr][ch][0]; + } + ymn=9e20; + ymx=-9e20; + for (i=0; i ymx) ? ycord[i] : ymx; + ymn=(ycord[i] < ymn) ? ycord[i] : ymn; + */ + } + + + + /* en = max energy difference amoung the 3 short FFTs for this granule */ + en = pplot->ers[gr][ch]; + if (en>999) en=999; + sprintf(title2,"FFT%1i pe=%5.2fK/%3.1f \nnoise ovr_b:%i/max:%3.1f/ovr:%3.1f/tot:%3.1f/ssd:%i",gr, + pplot->pe[gr][ch]/1000,en,pplot->over[gr][ch], + pplot->max_noise[gr][ch], + pplot->over_noise[gr][ch], + pplot->tot_noise[gr][ch], + pplot->over_SSD[gr][ch]); + + barthick=3; + if (blocktype[gr][ch]==SHORT_TYPE) barthick=2; + if (!(subblock_draw[0] && subblock_draw[1] && subblock_draw[2])) + barthick=3; + + ymn = 3; + ymx = 15; + xmn = 1; + xmx = n+1; /* a little extra because of the bar thickness */ + gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,1,title2,barthick,barcolor); + + for (i=0; isfb_s[gr][ch]; + else data = pplot->LAMEsfb_s[gr][ch]; + } else { + n = SBMAX_l; + if (gtkinfo.flag123) data = pplot1->sfb[gr][ch]; + else data = pplot->LAMEsfb[gr][ch]; + } + + ymn=-1; + ymx=10; + for (i=0; i ymx-2) ? ycord[i]+2 : ymx; + ymn=(ycord[i] < ymn) ? ycord[i]-1 : ymn; + } + + if (blocktype[gr][ch]==2) { + sprintf(label2, + "SFB scale=%i preflag=%i %i%i%i", + pplot1->scalefac_scale[gr][ch], + pplot1->preflag[gr][ch], + pplot1->sub_gain[gr][ch][0], + pplot1->sub_gain[gr][ch][1], + pplot1->sub_gain[gr][ch][2]); + }else{ + sprintf(label2,"SFB scale=%i preflag=%i",pplot1->scalefac_scale[gr][ch], + pplot1->preflag[gr][ch]); + } + + if (gtkinfo.flag123) ggain = (pplot1->qss[gr][ch]); + else ggain = (pplot->LAMEqss[gr][ch]); + + sprintf(title2," ggain=%i",ggain); + strcat(label2,title2); + + xmn = 1; + xmx = n+1; + gpk_bargraph_draw(sfbbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,1,label2,0,grcolor[gr]); + + ycord[0] = ycord[1] = 0; + xcord[0] = 1; + xcord[1] = n+1; + gpk_rectangle_draw(sfbbox[gr],xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + + + } + + +} + + + +static void update_progress(void) +{ + char label[80]; + + int tf = lame_get_totalframes(gfp); + if (gtkinfo.totalframes>0) tf=gtkinfo.totalframes; + + sprintf(label,"Frame:%4i/%4i %6.2fs", + pplot->frameNum,(int)tf-1, pplot->frametime); + gtk_progress_set_value (GTK_PROGRESS (frameprogress), (gdouble) pplot->frameNum); + gtk_label_set_text(GTK_LABEL(framecounter),label); +} + + + +static void analyze(void) +{ + if ( idle_keepgoing) { + idle_count = 0; + idle_count_max=0; + idle_keepgoing=0; + idle_end=0; + } + plot_frame(); + update_progress(); +} + +static void plotclick( GtkWidget *widget, gpointer data ) +{ analyze(); } + + + + +static int frameadv1(GtkWidget *widget, gpointer data ) +{ + int i; + if (idle_keepgoing ){ + if (idle_back) { + /* frame displayed is the old frame. to advance, just swap in new frame */ + idle_back--; + pplot = &Pinfo[READ_AHEAD+idle_back]; + }else{ + /* advance the frame by reading in a new frame */ + pplot = &Pinfo[READ_AHEAD]; + if (mp3done) { + /* dont try to read any more frames, and quit if "finish MP3" was selected */ + /* if (idle_finish) gtk_main_quit(); */ + idle_count_max=0; + idle_end=0; + } else { + /* read in the next frame */ + for (i=NUMPINFO-1 ; i>0 ; i--) + memcpy(&Pinfo[i],&Pinfo[i-1],sizeof(plotting_data)); + pinfo = &Pinfo[0]; + pinfo->num_samples = gtkmakeframe(); + if (pinfo->num_samples==0 && gtkinfo.totalframes==0) + /* allow an extra frame to flush decoder buffers */ + gtkinfo.totalframes = pinfo->frameNum +2; + + if (pinfo->sampfreq) + pinfo->frametime = (pinfo->frameNum)*1152.0/pinfo->sampfreq; + else pinfo->frametime=0; + + /* eof? + if (!pinfo->num_samples) if (idle_finish) gtk_main_quit(); + */ + + pinfo->totbits = 0; + { int gr,ch; + for (gr = 0 ; gr < 2 ; gr ++) + for (ch = 0 ; ch < 2 ; ch ++) { + gtkinfo.totshort += (pinfo->mpg123blocktype[gr][ch]==2); + gtkinfo.totmix += !(pinfo->mixed[gr][ch]==0); + gtkinfo.totpreflag += (pinfo->preflag[gr][ch]==1); + pinfo->totbits += pinfo->mainbits[gr][ch]; + } + } + if (pinfo->frameNum > 0) /* start averaging at second frame */ + gtkinfo.avebits = (gtkinfo.avebits*((pinfo->frameNum)-1) + + pinfo->totbits ) /(pinfo->frameNum); + + gtkinfo.maxbits=MAX(gtkinfo.maxbits,pinfo->totbits); + gtkinfo.totemph += !(pinfo->emph==0); + gtkinfo.totms += !(pinfo->ms_stereo==0); + gtkinfo.totis += !(pinfo->i_stereo==0); + + if (gtkinfo.totalframes>0) + if (pplot->frameNum >= gtkinfo.totalframes-1) mp3done=1; + } + } + + idle_count++; + if (gtkinfo.pupdate) plot_frame(); + update_progress(); + if ((idle_count>=idle_count_max) && (! idle_end)) analyze(); + } else { + /*no processing to do, sleep in order to not monopolize CPU*/ + msleep(10); + } + return 1; +} + + +static void frameadv( GtkWidget *widget, gpointer data ) +{ + int adv; + + if (!strcmp((char *) data,"-1")) { + /* ignore if we've already gone back as far as possible */ + if (pplot->frameNum==0 || (idle_back==NUMBACK)) return; + idle_back++; + pplot = &Pinfo[READ_AHEAD+idle_back]; + analyze(); + return; + } + + + adv = 1; + if (!strcmp((char *) data,"1")) adv = 1; + if (!strcmp((char *) data,"10")) adv = 10; + if (!strcmp((char *) data,"100")) adv = 100; + if (!strcmp((char *) data,"finish")) idle_end = 1; + + + if (idle_keepgoing) { + /* already running - que up additional frame advance requests */ + idle_count_max += adv; + } + else { + /* turn on idleing */ + idle_count_max = adv; + idle_count = 0; + idle_keepgoing = 1; + } +} + + + + +/* another callback */ +static void delete_event( GtkWidget *widget, + GdkEvent *event, + gpointer data ) +{ + /* set MP3 done flag in case the File/Quit menu item has been selected */ + mp3done=1; + + gtk_main_quit (); +} + + + + + + + +static void channel_option (GtkWidget *widget, gpointer data) +{ + long option; + option = (long) data; + switch (option) { + case 1: + gtkinfo.msflag=0; + gtkinfo.chflag=0; + break; + case 2: + gtkinfo.msflag=0; + gtkinfo.chflag=1; + break; + case 3: + gtkinfo.msflag=1; + gtkinfo.chflag=0; + break; + case 4: + gtkinfo.msflag=1; + gtkinfo.chflag=1; + } + analyze(); +} +static void spec_option (GtkWidget *widget, gpointer data) +{ + long option; + option = (long) data; + switch (option) { + case 1: + gtkinfo.kbflag=0; + break; + case 2: + gtkinfo.kbflag=1; + break; + case 3: + gtkinfo.flag123=0; + break; + case 4: + gtkinfo.flag123=1; + break; + case 5: + gtkinfo.pupdate=1; + break; + case 6: + gtkinfo.pupdate=0; + break; + case 7: + gtkinfo.sfblines = !gtkinfo.sfblines; + break; + case 8: + gtkinfo.difference = !gtkinfo.difference; + break; + } + analyze(); +} + +static gint key_press_event (GtkWidget *widget, GdkEventKey *event) +{ + /* is a switch() statement in lame forbidden? */ + if (event->keyval == '1') { + subblock_draw[0] = 1; + subblock_draw[1] = 0; + subblock_draw[2] = 0; + analyze(); + } + else if (event->keyval == '2') { + subblock_draw[0] = 0; + subblock_draw[1] = 1; + subblock_draw[2] = 0; + analyze(); + } + else if (event->keyval == '3') { + subblock_draw[0] = 0; + subblock_draw[1] = 0; + subblock_draw[2] = 1; + analyze(); + } + else if (event->keyval == '0') { + subblock_draw[0] = 1; + subblock_draw[1] = 1; + subblock_draw[2] = 1; + analyze(); + } + /* analyze(); */ /* dont redraw entire window for every key! */ + return 0; +} + + +/*! Get the mp3x version string. */ +/*! + \param void + \return a pointer to a string which describes the version of mp3x. +*/ +const char* get_mp3x_version ( void ) +{ +#if MP3X_ALPHA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION) + " (alpha " XSTR(MP3X_ALPHA_VERSION) ", " __DATE__ " " __TIME__ ")"; +#elif MP3X_BETA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION) + " (beta " XSTR(MP3X_BETA_VERSION) ", " __DATE__ ")"; +#else + static /*@observer@*/ const char *const str = + XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION); +#endif + + return str; +} + + +static void text_window (GtkWidget *widget, gpointer data) +{ + long option; + GtkWidget *hbox,*vbox,*button,*box; + GtkWidget *textwindow,*vscrollbar; + char text[256]; + + option = (long) data; + + textwindow = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_signal_connect_object (GTK_OBJECT (window), "delete_event", + GTK_SIGNAL_FUNC(gtk_widget_destroy), + GTK_OBJECT (textwindow)); + + gtk_container_set_border_width (GTK_CONTAINER (textwindow), 0); + vbox = gtk_vbox_new(FALSE,0); + hbox = gtk_hbox_new(FALSE,0); + + button = gtk_button_new_with_label ("close"); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC(gtk_widget_destroy), + GTK_OBJECT (textwindow)); + + box = gtk_text_new (NULL, NULL); + gtk_text_set_editable (GTK_TEXT (box), FALSE); + vscrollbar = gtk_vscrollbar_new (GTK_TEXT(box)->vadj); + + + switch (option) { + case 0: + gtk_window_set_title (GTK_WINDOW (textwindow), "Documentation"); + gtk_widget_set_usize(box,450,500); + gtk_text_set_word_wrap(GTK_TEXT(box),TRUE); + /* text should be moved outside this function, may be in a separate file */ + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "Frame header information: "\ + "First the bitrate, sampling frequency and mono, stereo or jstereo "\ + "indicators are displayed . If the bitstream is jstereo, then mid/side "\ + "stereo or intensity stereo may be on (indicated in red). If "\ + "de-emphasis is used, this is also indicated in red. The mdb value is "\ + "main_data_begin. The encoded data starts this many bytes *before* the "\ + "frame header. A large value of mdb means the bitstream has saved some "\ + "bits into the reservoir, which it may allocate for some future frame. "\ + "The two numbers after mdb are the size (in bits) used to encode the "\ + "MDCT coefficients for this frame, followed byt the size of the bit "\ + "resevoir before encoding this frame. The maximum frame size and a "\ + "running average are given in the Stats pull down menu. A large "\ + "maximum frame size indicates the bitstream has made use of the bit "\ + "reservoir. \n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "PCM data (top graph): "\ + "The PCM data is plotted in black. The layer3 frame is divided into 2 "\ + "granules of 576 samples (marked with yellow vertical lines). In the "\ + "case of normal, start and stop blocks, the MDCT coefficients for each "\ + "granule are computed using a 1152 sample window centered over the "\ + "granule. In the case of short blocks, the granule is further divided "\ + "into 3 blocks of 192 samples (also marked with yellow vertical lines)."\ + "The MDCT coefficients for these blocks are computed using 384 sample "\ + "windows centered over the 192 sample window. (This info not available "\ + "when analyzing .mp3 files.) For the psycho-acoustic model, a windowed "\ + "FFT is computed for each granule. The range of these windows "\ + "is denoted by the blue and green bars.\n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "PCM re-synthesis data (second graph): "\ + "Same as the PCM window described above. The data displayed is the "\ + "result of encoding and then decoding the original sample. \n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "MDCT windows: "\ + "Shows the energy in the MDCT spectrum for granule 0 (left window) "\ + "and granule 1 (right window). The text also shows the blocktype "\ + "used, the number of bits used to encode the coefficients and the "\ + "number of extra bits allocated from the reservoir. The MDCT pull down "\ + "window will toggle between the original unquantized MDCT coefficients "\ + "and the compressed (quantized) coefficients.\n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "FFT window: "\ + "The gray bars show the energy in the FFT spectrum used by the "\ + "psycho-acoustic model. Granule 0 is in the left window, granule 1 in "\ + "the right window. The green and blue bars show how much distortion is "\ + "allowable, as computed by the psycho-acoustic model. The red bars show "\ + "the actual distortion after encoding. There is one FFT for each "\ + "granule, computed with a 1024 Hann window centered over the "\ + "appropriate granule. (the range of this 1024 sample window is shown "\ + "by the blue and green bars in the PCM data window). The Spectrum pull "\ + "down window will toggle between showing the energy in equally spaced "\ + "frequency domain and the scale factor bands used by layer3. Finally, "\ + "the perceptual entropy, total energy and number of scalefactor bands "\ + "with audible distortion is shown. (This info not available when "\ + "analyzing .mp3 files.)",-1); + + break; + case 1: + /* Set the about box information */ + gtk_window_set_title (GTK_WINDOW (textwindow), "About"); + gtk_widget_set_usize(box,350,260); + + sprintf(text,"LAME version %s \n%s\n\n",get_lame_version(),get_lame_url()); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + + sprintf(text,"psycho-acoustic model: GPSYCHO version %s\n",get_psy_version()); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + + sprintf(text,"frame analyzer: MP3x version %s\n\n",get_mp3x_version()); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "decoder: mpg123/mpglib .59q \nMichael Hipp (www.mpg123.de)\n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "Encoder, decoder & psy-models based on ISO\ndemonstration source. ",-1); + break; + + case 2: + gtk_window_set_title (GTK_WINDOW (textwindow), "Statistics"); + gtk_widget_set_usize(box,350,260); + sprintf(text,"frames processed so far: %i \n",Pinfo[0].frameNum+1); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"granules processed so far: %i \n\n",4*(Pinfo[0].frameNum+1)); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"mean bits/frame (approximate): %i\n", + gtkinfo.approxbits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"mean bits/frame (from LAME): %i\n", + 4*Pinfo[0].mean_bits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"bitsize of largest frame: %i \n",gtkinfo.maxbits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"average bits/frame: %3.1f \n\n",gtkinfo.avebits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"ms_stereo frames: %i \n",gtkinfo.totms); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"i_stereo frames: %i \n",gtkinfo.totis); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"de-emphasis frames: %i \n",gtkinfo.totemph); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"short block granules: %i \n",gtkinfo.totshort); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"mixed block granules: %i \n",gtkinfo.totmix); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"preflag granules: %i \n",gtkinfo.totpreflag); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + break; + } + + + + gtk_widget_show (vscrollbar); + gtk_widget_show (box); + gtk_widget_show (vbox); + gtk_widget_show (hbox); + gtk_widget_show (button); + + gtk_box_pack_start (GTK_BOX(hbox), box, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vscrollbar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (textwindow), vbox); + gtk_widget_show(textwindow); + +} + + + + +/* #include */ + + +/* This is the GtkItemFactoryEntry structure used to generate new menus. + Item 1: The menu path. The letter after the underscore indicates an + accelerator key once the menu is open. + Item 2: The accelerator key for the entry + Item 3: The callback function. + Item 4: The callback action. This changes the parameters with + which the function is called. The default is 0. + Item 5: The item type, used to define what kind of an item it is. + Here are the possible values: + + NULL -> "" + "" -> "" + "" -> create a title item + "<Item>" -> create a simple item + "<CheckItem>" -> create a check item + "<ToggleItem>" -> create a toggle item + "<RadioItem>" -> create a radio item + <path> -> path of a radio item to link against + "<Separator>" -> create a separator + "<Branch>" -> create an item to hold sub items + "<LastBranch>" -> create a right justified branch +*/ + + +#define C(chr) "<control>" #chr +#define func(name) (GtkItemFactoryCallback) (name) + +static const GtkItemFactoryEntry menu_items [] = { + { "/_File" , NULL, NULL , 0, "<Branch>" }, +#if 0 + { "/File/_New" , C(N), func(print_hello) , 0, NULL }, + { "/File/_Open" , C(O), func(print_hello) , 0, NULL }, + { "/File/_Save" , C(S), func(print_hello) , 0, NULL }, + { "/File/Save _As" , NULL, NULL , 0, NULL }, + { "/File/sep1" , NULL, NULL , 0, "<Separator>" }, + { "/File/Quit" , C(Q), func(gtk_main_quit) , 0, NULL }, +#endif + { "/File/_Quit" , C(Q), func(delete_event) , 0, NULL }, + + { "/_Plotting" , NULL, NULL , 0, "<Branch>" }, + { "/Plotting/_While advancing" , NULL, func(spec_option) , 5, NULL }, + { "/Plotting/_After advancing" , NULL, func(spec_option) , 6, NULL }, + { "/Plotting/Toggle SFB lines" , NULL, func(spec_option) , 7, NULL }, + { "/Plotting/Toggle orig-diff" , NULL, func(spec_option) , 8, NULL }, + + { "/_Channel" , NULL, NULL , 0, "<Branch>" }, + { "/Channel/show _Left" , NULL, func(channel_option), 1, NULL }, + { "/Channel/show _Right" , NULL, func(channel_option), 2, NULL }, + { "/Channel/show _Mid" , NULL, func(channel_option), 3, NULL }, + { "/Channel/show _Side" , NULL, func(channel_option), 4, NULL }, + + { "/_Spectrum" , NULL, NULL , 0, "<Branch>" }, + { "/Spectrum/_Scalefactor bands", NULL, func(spec_option) , 1, NULL }, + { "/Spectrum/_Wave number" , NULL, func(spec_option) , 2, NULL }, + + { "/_MDCT" , NULL, NULL , 0, "<Branch>" }, + { "/MDCT/_Original" , NULL, func(spec_option) , 3, NULL }, + { "/MDCT/_Compressed" , NULL, func(spec_option) , 4, NULL }, + { "/MDCT/_Toggle SFB lines" , NULL, func(spec_option) , 7, NULL }, + + { "/_Stats" , NULL, NULL , 0, "<Branch>" }, + { "/Stats/_Show" , NULL, func(text_window) , 2, NULL }, + + { "/_Help" , NULL, NULL , 0, "<LastBranch>" }, + { "/_Help/_Documentation" , NULL, func(text_window) , 0, NULL }, + { "/_Help/_About" , NULL, func(text_window) , 1, NULL }, +}; + +#undef C +#undef func + + +static void get_main_menu(GtkWidget *windows, GtkWidget ** menubar) { + unsigned int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); + GtkItemFactory *item_factory; + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new(); + + /* This function initializes the item factory. + Param 1: The type of menu - can be GTK_TYPE_MENU_BAR, GTK_TYPE_MENU, + or GTK_TYPE_OPTION_MENU. + Param 2: The path of the menu. + Param 3: A pointer to a gtk_accel_group. The item factory sets up + the accelerator table while generating menus. + */ + + item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", + accel_group); + + /* This function generates the menu items. Pass the item factory, + the number of items in the array, the array itself, and any + callback data for the the menu items. */ + gtk_item_factory_create_items(item_factory, nmenu_items, (GtkItemFactoryEntry*)menu_items, NULL); + + /* Attach the new accelerator group to the window. */ + gtk_accel_group_attach (accel_group, GTK_OBJECT (windows)); + + if (menubar) + /* Finally, return the actual menu bar created by the item factory. */ + *menubar = gtk_item_factory_get_widget(item_factory, "<main>"); +} + + + + + + + + + + + + + + + + +int gtkcontrol(lame_global_flags *gfp2,char *inPath) +{ + /* GtkWidget is the storage type for widgets */ + GtkWidget *button; + GtkAdjustment *adj; + GtkWidget *mbox; /* main box */ + GtkWidget *box1; /* frame control buttons go */ + GtkWidget *box2; /* frame counters */ + GtkWidget *box3; /* frame header info */ + GtkWidget *table; /* table for all the plotting areas */ + GtkWidget *menubar; + + gint tableops,graphx,graphy; + char frameinfo[80]; + + graphx = 600; /* minimum allowed size of pixmap */ + graphy = 95; + + gfp=gfp2; + gfc=gfp->internal_flags; + + /* set some global defaults/variables */ + gtkinfo.filetype = (input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3); + gtkinfo.msflag=0; + gtkinfo.chflag=0; + gtkinfo.kbflag=0; + gtkinfo.flag123 = (input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3); /* MP3 file=use mpg123 output */ + gtkinfo.pupdate=0; + gtkinfo.avebits = 0; + gtkinfo.maxbits = 0; + gtkinfo.approxbits = 0; + gtkinfo.totemph = 0; + gtkinfo.totms = 0; + gtkinfo.totis = 0; + gtkinfo.totshort = 0; + gtkinfo.totmix = 0; + gtkinfo.sfblines= 1; + gtkinfo.difference= 0; + gtkinfo.totalframes = 0; + + memset((char *) Pinfo, 0, sizeof(Pinfo)); + pplot = &Pinfo[READ_AHEAD]; + + strcpy(frameinfo,"MP3x: "); + strncat(frameinfo,inPath,70); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), frameinfo); + gtk_signal_connect (GTK_OBJECT (window), "delete_event", + GTK_SIGNAL_FUNC (delete_event), NULL); + + gtk_signal_connect_object (GTK_OBJECT (window), "key_press_event", + GTK_SIGNAL_FUNC(key_press_event), + GTK_OBJECT (window)); + + gtk_container_set_border_width (GTK_CONTAINER (window), 0); + + + mbox = gtk_vbox_new(FALSE, 0); + + + /* layout of mbox */ + box1 = gtk_hbox_new(FALSE, 0); + box2 = gtk_hbox_new(FALSE, 0); + box3 = gtk_hbox_new(FALSE, 0); + table = gtk_table_new (5, 2, FALSE); + tableops = GTK_FILL | GTK_EXPAND | GTK_SHRINK; + get_main_menu(window, &menubar); + + gtk_box_pack_start(GTK_BOX(mbox), menubar, FALSE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (mbox), box1, FALSE, TRUE, 0); + gtk_box_pack_end(GTK_BOX (mbox),box2, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX (mbox),box3, FALSE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (mbox), table, TRUE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (window), mbox); + + + /*********************************************************************/ + /* stuff in box3 frame header info */ + /*********************************************************************/ + /* + headerbox = gtk_label_new(" "); + gtk_label_set_justify(GTK_LABEL(headerbox),GTK_JUSTIFY_LEFT); + */ + headerbox = gtk_text_new (NULL, NULL); + gtk_text_set_editable (GTK_TEXT (headerbox), FALSE); + gtk_widget_set_usize(headerbox,200,20); + gtk_widget_show (headerbox); + gtk_box_pack_start(GTK_BOX (box3),headerbox, TRUE, TRUE, 0); + + + + /*********************************************************************/ + /* stuff in box2 frame counters */ + /*********************************************************************/ + framecounter = gtk_label_new(""); + gtk_widget_show(framecounter); + gtk_box_pack_start(GTK_BOX (box2),framecounter, FALSE, TRUE, 0); + + adj = (GtkAdjustment *) gtk_adjustment_new (0, 0,(gint) lame_get_totalframes(gfp)-1, 0, 0, 0); + frameprogress = gtk_progress_bar_new_with_adjustment (adj); + /* Set the format of the string that can be displayed in the + * trough of the progress bar: + * %p - percentage + * %v - value + * %l - lower range value + * %u - upper range value */ + gtk_progress_set_format_string (GTK_PROGRESS (frameprogress), "%p%%"); + gtk_progress_set_value (GTK_PROGRESS (frameprogress), (gdouble) 0); + gtk_progress_set_show_text (GTK_PROGRESS (frameprogress),TRUE); + gtk_widget_show (frameprogress); + gtk_box_pack_end (GTK_BOX (box2), frameprogress, FALSE, TRUE, 0); + + + + /*********************************************************************/ + /* stuff in box1 buttons along bottom */ + /*********************************************************************/ + button = gtk_button_new_with_label ("-1"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "-1"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("+1"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "1"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("+10"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "10"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("+100"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "100"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("last frame"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "finish"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("stop/plot"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (plotclick), NULL); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + + /*********************************************************************/ + /* stuff in table. all the plotting windows */ + /*********************************************************************/ + pcmbox = gpk_plot_new(graphx,graphy); + gtk_table_attach (GTK_TABLE(table),pcmbox,0,2,0,1,tableops,tableops,2,2 ); + gtk_widget_show (pcmbox); + + winbox = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),winbox,0,2,1,2,tableops,tableops,2,2); + gtk_widget_show (winbox); + + + mdctbox[0] = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),mdctbox[0],0,1,2,3,tableops,tableops,2,2); + gtk_widget_show (mdctbox[0]); + + mdctbox[1] = gpk_plot_new(graphy,graphy); + gtk_table_attach (GTK_TABLE(table),mdctbox[1],1,2,2,3,tableops,tableops,2,2); + gtk_widget_show (mdctbox[1]); + + enerbox[0] = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),enerbox[0],0,1,3,4,tableops,tableops,2,2); + gtk_widget_show (enerbox[0]); + + enerbox[1] = gpk_plot_new(graphy,graphy); + gtk_table_attach (GTK_TABLE(table),enerbox[1],1,2,3,4,tableops,tableops,2,2); + gtk_widget_show (enerbox[1]); + + sfbbox[0] = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),sfbbox[0],0,1,4,5,tableops,tableops,2,2); + gtk_widget_show (sfbbox[0]); + + sfbbox[1] = gpk_plot_new(graphy,graphy); + gtk_table_attach (GTK_TABLE(table),sfbbox[1],1,2,4,5,tableops,tableops,2,2); + gtk_widget_show (sfbbox[1]); + + + + + gtk_idle_add((GtkFunction) frameadv1, NULL); + gtk_widget_show(menubar); + gtk_widget_show(box2); + gtk_widget_show(box3); + gtk_widget_show(table); + gtk_widget_show(box1); + gtk_widget_show (mbox); + gtk_widget_show (window); /* show smallest allowed window */ + + /* make window bigger. */ + /* now the user will be able to shrink it, if desired */ + /* gtk_widget_set_usize(mbox,500,500); */ + /* gtk_widget_show (window); */ /* show smallest allowed window */ + + + + idle_keepgoing=1; /* processing of frames is ON */ + idle_count_max=READ_AHEAD+1; /* number of frames to process before plotting */ + idle_count=0; /* pause & plot when idle_count=idle_count_max */ + + gtk_main (); + assert(mp3done); + return(0); +} + + diff --git a/lame-3.97/frontend/.svn/text-base/gtkanal.h.svn-base b/lame-3.97/frontend/.svn/text-base/gtkanal.h.svn-base new file mode 100644 index 0000000..995ee4a --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/gtkanal.h.svn-base @@ -0,0 +1,26 @@ +/* + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_GTKCONTROL_H +#define LAME_GTKCONTROL_H + + +int gtkcontrol(lame_global_flags *gfp2,char *inPath); + +#endif + diff --git a/lame-3.97/frontend/.svn/text-base/lame_vc6.dsp.svn-base b/lame-3.97/frontend/.svn/text-base/lame_vc6.dsp.svn-base new file mode 100644 index 0000000..9a3c1f8 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/lame_vc6.dsp.svn-base @@ -0,0 +1,177 @@ +# Microsoft Developer Studio Project File - Name="lame" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=LAME - WIN32 DEBUG +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "lame_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "lame_vc6.mak" CFG="LAME - WIN32 DEBUG" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "lame - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "lame - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "lame - Win32 Release NASM" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "lame - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I ".." /I "../mpglib" /I "../libmp3lame" /I "../include" /I "../" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../output/lame.exe" + +!ELSEIF "$(CFG)" == "lame - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /ZI /Od /I "../" /I "../mpglib" /I "../libmp3lame" /I "../include" /D "_DEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../output/lame.exe" /pdbtype:sept + +!ELSEIF "$(CFG)" == "lame - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "lame___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "lame___Win32_Release_NASM" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_NASM" +# PROP Intermediate_Dir "Release_NASM" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I ".." /I "../mpglib" /I "../libmp3lame" /I "../include" /I "../" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I ".." /I "../mpglib" /I "../libmp3lame" /I "../include" /I "../" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /D "HAVE_NASM" /D "MMX_choose_table" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../output/lame.exe" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../output/lame.exe" + +!ENDIF + +# Begin Target + +# Name "lame - Win32 Release" +# Name "lame - Win32 Debug" +# Name "lame - Win32 Release NASM" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\brhist.c +# End Source File +# Begin Source File + +SOURCE=.\get_audio.c +# End Source File +# Begin Source File + +SOURCE=.\lametime.c +# End Source File +# Begin Source File + +SOURCE=.\main.c +# End Source File +# Begin Source File + +SOURCE=.\parse.c +# End Source File +# Begin Source File + +SOURCE=.\portableio.c +# End Source File +# Begin Source File + +SOURCE=.\timestatus.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\brhist.h +# End Source File +# Begin Source File + +SOURCE=.\get_audio.h +# End Source File +# Begin Source File + +SOURCE=.\lametime.h +# End Source File +# Begin Source File + +SOURCE=.\main.h +# End Source File +# Begin Source File + +SOURCE=.\parse.h +# End Source File +# Begin Source File + +SOURCE=.\portableio.h +# End Source File +# Begin Source File + +SOURCE=.\timestatus.h +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/frontend/.svn/text-base/lame_vc7.vcproj.svn-base b/lame-3.97/frontend/.svn/text-base/lame_vc7.vcproj.svn-base new file mode 100644 index 0000000..641ef1c --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/lame_vc7.vcproj.svn-base @@ -0,0 +1,1140 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="lame" + ProjectGUID="{AFE3050F-F561-46A8-AEE0-0C6475EB38D7}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release NASM|Win32" + OutputDirectory=".\Release_NASM" + IntermediateDirectory=".\Release_NASM" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H;HAVE_NASM;MMX_choose_table" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release_NASM/lame_vc6.pch" + AssemblerListingLocation=".\Release_NASM/" + ObjectFile=".\Release_NASM/" + ProgramDataBaseFileName=".\Release_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release_NASM/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release_NASM/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> + <File + RelativePath="brhist.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="get_audio.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="lametime.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="main.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="parse.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="portableio.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="timestatus.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl"> + <File + RelativePath="brhist.h"> + </File> + <File + RelativePath="get_audio.h"> + </File> + <File + RelativePath="lametime.h"> + </File> + <File + RelativePath="main.h"> + </File> + <File + RelativePath="parse.h"> + </File> + <File + RelativePath="portableio.h"> + </File> + <File + RelativePath="timestatus.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/frontend/.svn/text-base/lametime.c.svn-base b/lame-3.97/frontend/.svn/text-base/lametime.c.svn-base new file mode 100644 index 0000000..9c5af7f --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/lametime.c.svn-base @@ -0,0 +1,162 @@ +/* + * Lame time routines source file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: lametime.c,v 1.15 2003/05/09 14:06:41 aleidinger Exp $ */ + +/* + * name: GetCPUTime ( void ) + * + * description: returns CPU time used by the process + * input: none + * output: time in seconds + * known bugs: may not work in SMP and RPC + * conforming: ANSI C + * + * There is some old difficult to read code at the end of this file. + * Can someone integrate this into this function (if useful)? + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <stdio.h> +#include <time.h> + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#include "lametime.h" + +#if !defined(CLOCKS_PER_SEC) +# warning Your system does not define CLOCKS_PER_SEC, guessing one... +# define CLOCKS_PER_SEC 1000000 +#endif + + +double GetCPUTime ( void ) +{ + clock_t t; + +#if defined(_MSC_VER) || defined(__BORLANDC__) + t = clock (); +#else + t = clock (); +#endif + return t / (double) CLOCKS_PER_SEC; +} + + +/* + * name: GetRealTime ( void ) + * + * description: returns real (human) time elapsed relative to a fixed time (mostly 1970-01-01 00:00:00) + * input: none + * output: time in seconds + * known bugs: bad precision with time() + */ + +#if defined(__unix__) || defined(SVR4) || defined(BSD) + +# include <sys/time.h> +# include <unistd.h> + +double GetRealTime ( void ) /* conforming: SVr4, BSD 4.3 */ +{ + struct timeval t; + + if ( 0 != gettimeofday (&t, NULL) ) + assert (0); + return t.tv_sec + 1.e-6 * t.tv_usec; +} + +#elif defined(WIN16) || defined(WIN32) + +# include <stdio.h> +# include <sys/types.h> +# include <sys/timeb.h> + +double GetRealTime ( void ) /* conforming: Win 95, Win NT */ +{ + struct timeb t; + + ftime ( &t ); + return t.time + 1.e-3 * t.millitm; +} + +#else + +double GetRealTime ( void ) /* conforming: SVr4, SVID, POSIX, X/OPEN, BSD 4.3 */ +{ /* BUT NOT GUARANTEED BY ANSI */ + time_t t; + + t = time (NULL); + return (double) t; +} + +#endif + + +#if defined(_WIN32) || defined(__CYGWIN__) +# include <io.h> +# include <fcntl.h> +#else +# include <unistd.h> +#endif + +int lame_set_stream_binary_mode ( FILE* const fp ) +{ +#if defined __EMX__ + _fsetmode ( fp, "b" ); +#elif defined __BORLANDC__ + setmode (_fileno(fp), O_BINARY ); +#elif defined __CYGWIN__ + setmode ( fileno(fp), _O_BINARY ); +#elif defined _WIN32 + _setmode (_fileno(fp), _O_BINARY ); +#endif + return 0; +} + + +#if defined(__riscos__) +# include <kernel.h> +# include <sys/swis.h> +#elif defined(_WIN32) +# include <sys/types.h> +# include <sys/stat.h> +#else +# include <sys/stat.h> +#endif + +off_t lame_get_file_size ( const char* const filename ) +{ + struct stat sb; + + if ( 0 == stat ( filename, &sb ) ) + return sb.st_size; + return (off_t) -1; +} + +/* End of lametime.c */ + diff --git a/lame-3.97/frontend/.svn/text-base/lametime.h.svn-base b/lame-3.97/frontend/.svn/text-base/lametime.h.svn-base new file mode 100644 index 0000000..acc8366 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/lametime.h.svn-base @@ -0,0 +1,36 @@ +/* + * Lame time routines include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_LAMETIME_H +#define LAME_LAMETIME_H + +#include <sys/types.h> +#include "lame.h" + +extern double GetCPUTime ( void ); +extern double GetRealTime ( void ); + +extern int lame_set_stream_binary_mode ( FILE* const fp ); +extern off_t lame_get_file_size ( const char* const filename ); + +#endif /* LAME_LAMETIME_H */ + + diff --git a/lame-3.97/frontend/.svn/text-base/main.c.svn-base b/lame-3.97/frontend/.svn/text-base/main.c.svn-base new file mode 100644 index 0000000..7fe3643 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/main.c.svn-base @@ -0,0 +1,815 @@ +/* + * Command line frontend program + * + * Copyright (c) 1999 Mark Taylor + * 2000 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: main.c,v 1.92.2.1 2005/12/18 18:49:29 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <stdio.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr(), *strrchr(); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef HAVE_FCNTL_H +# include <fcntl.h> +#endif + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include <unistd.h> +#endif + +#if defined(_WIN32) +# include <windows.h> +#endif + + +/* + main.c is example code for how to use libmp3lame.a. To use this library, + you only need the library and lame.h. All other .h files are private + to the library. +*/ +#include "lame.h" + +#include "brhist.h" +#include "parse.h" +#include "main.h" +#include "get_audio.h" +#include "portableio.h" +#include "timestatus.h" + +/* PLL 14/04/2000 */ +#if macintosh +#include <console.h> +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + + + +/************************************************************************ +* +* main +* +* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO +* psychoacoustic model. +* +************************************************************************/ + +int +parse_args_from_string(lame_global_flags * const gfp, const char *p, + char *inPath, char *outPath) +{ /* Quick & very Dirty */ + char *q; + char *f; + char *r[128]; + int c = 0; + int ret; + + if (p == NULL || *p == '\0') + return 0; + + f = q = malloc(strlen(p) + 1); + strcpy(q, p); + + r[c++] = "lhama"; + while (1) { + r[c++] = q; + while (*q != ' ' && *q != '\0') + q++; + if (*q == '\0') + break; + *q++ = '\0'; + } + r[c] = NULL; + + ret = parse_args(gfp, c, r, inPath, outPath, NULL, NULL); + free(f); + return ret; +} + + + + + +FILE * +init_files(lame_global_flags * gf, char *inPath, char *outPath) +{ + FILE *outf; + /* Mostly it is not useful to use the same input and output name. + This test is very easy and buggy and don't recognize different names + assigning the same file + */ + if (0 != strcmp("-", outPath) && 0 == strcmp(inPath, outPath)) { + fprintf(stderr, "Input file and Output file are the same. Abort.\n"); + return NULL; + } + + /* open the wav/aiff/raw pcm or mp3 input file. This call will + * open the file, try to parse the headers and + * set gf.samplerate, gf.num_channels, gf.num_samples. + * if you want to do your own file input, skip this call and set + * samplerate, num_channels and num_samples yourself. + */ + init_infile(gf, inPath); + if ((outf = init_outfile(outPath, lame_get_decode_only(gf))) == NULL) { + fprintf(stderr, "Can't init outfile '%s'\n", outPath); + return NULL; + } + + return outf; +} + + + + + + +/* the simple lame decoder */ +/* After calling lame_init(), lame_init_params() and + * init_infile(), call this routine to read the input MP3 file + * and output .wav data to the specified file pointer*/ +/* lame_decoder will ignore the first 528 samples, since these samples + * represent the mpglib delay (and are all 0). skip = number of additional + * samples to skip, to (for example) compensate for the encoder delay */ + +int +lame_decoder(lame_global_flags * gfp, FILE * outf, int skip, char *inPath, + char *outPath) +{ + short int Buffer[2][1152]; + int iread; + double wavsize; + int i; + void (*WriteFunction) (FILE * fp, char *p, int n); + int tmp_num_channels = lame_get_num_channels( gfp ); + + + + if (silent < 10) fprintf(stderr, "\rinput: %s%s(%g kHz, %i channel%s, ", + strcmp(inPath, "-") ? inPath : "<stdin>", + strlen(inPath) > 26 ? "\n\t" : " ", + lame_get_in_samplerate( gfp ) / 1.e3, + tmp_num_channels, tmp_num_channels != 1 ? "s" : ""); + + switch (input_format) { + case sf_mp3: + if (skip==0) { + if (enc_delay>-1) skip = enc_delay + 528+1; + else skip=lame_get_encoder_delay(gfp)+528+1; + }else{ + /* user specified a value of skip. just add for decoder */ + skip += 528+1; /* mp3 decoder has a 528 sample delay, plus user supplied "skip" */ + } + + if (silent < 10) fprintf(stderr, "MPEG-%u%s Layer %s", 2 - lame_get_version(gfp), + lame_get_out_samplerate( gfp ) < 16000 ? ".5" : "", "III"); + break; + case sf_mp2: + skip += 240 + 1; + if (silent < 10) fprintf(stderr, "MPEG-%u%s Layer %s", 2 - lame_get_version(gfp), + lame_get_out_samplerate( gfp ) < 16000 ? ".5" : "", "II"); + break; + case sf_mp1: + skip += 240 + 1; + if (silent < 10) fprintf(stderr, "MPEG-%u%s Layer %s", 2 - lame_get_version(gfp), + lame_get_out_samplerate( gfp ) < 16000 ? ".5" : "", "I"); + break; + case sf_raw: + if (silent < 10) fprintf(stderr, "raw PCM data"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + break; + case sf_wave: + if (silent < 10) fprintf(stderr, "Microsoft WAVE"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + break; + case sf_aiff: + if (silent < 10) fprintf(stderr, "SGI/Apple AIFF"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + break; + default: + if (silent < 10) fprintf(stderr, "unknown"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + assert(0); + break; + } + + if (silent < 10) { + fprintf(stderr, ")\noutput: %s%s(16 bit, Microsoft WAVE)\n", + strcmp(outPath, "-") ? outPath : "<stdout>", + strlen(outPath) > 45 ? "\n\t" : " "); + + if (skip > 0) + fprintf(stderr, + "skipping initial %i samples (encoder+decoder delay)\n", + skip); + } + + if ( 0 == disable_wav_header ) + WriteWaveHeader(outf, 0x7FFFFFFF, lame_get_in_samplerate( gfp ), + tmp_num_channels, + 16); + /* unknown size, so write maximum 32 bit signed value */ + + wavsize = -skip; + WriteFunction = swapbytes ? WriteBytesSwapped : WriteBytes; + mp3input_data.totalframes = mp3input_data.nsamp / mp3input_data.framesize; + + assert(tmp_num_channels >= 1 && tmp_num_channels <= 2); + + do { + iread = get_audio16(gfp, Buffer); /* read in 'iread' samples */ + mp3input_data.framenum += iread / mp3input_data.framesize; + wavsize += iread; + + if (silent <= 0) + decoder_progress(gfp, &mp3input_data); + + skip -= (i = skip < iread ? skip : iread); /* 'i' samples are to skip in this frame */ + + for (; i < iread; i++) { + if ( disable_wav_header ) { + WriteFunction(outf, (char *) &Buffer[0][i], sizeof(short)); + if (tmp_num_channels == 2) + WriteFunction(outf, (char *) &Buffer[1][i], sizeof(short)); + } + else { + Write16BitsLowHigh(outf, Buffer[0][i]); + if (tmp_num_channels == 2) + Write16BitsLowHigh(outf, Buffer[1][i]); + } + } + } while (iread); + + i = (16 / 8) * tmp_num_channels; + assert(i > 0); + if (wavsize <= 0) { + if (silent < 10) fprintf(stderr, "WAVE file contains 0 PCM samples\n"); + wavsize = 0; + } + else if (wavsize > 0xFFFFFFD0 / i) { + if (silent < 10) fprintf(stderr, + "Very huge WAVE file, can't set filesize accordingly\n"); + wavsize = 0xFFFFFFD0; + } + else { + wavsize *= i; + } + + if ( 0 == disable_wav_header ) + if (!fseek(outf, 0l, SEEK_SET)) /* if outf is seekable, rewind and adjust length */ + WriteWaveHeader(outf, (int)wavsize, lame_get_in_samplerate( gfp ), + tmp_num_channels, 16); + fclose(outf); + + if (silent <= 0) + decoder_progress_finish(gfp); + return 0; +} + + + + + + + + + + + + + + + + +int +lame_encoder(lame_global_flags * gf, FILE * outf, int nogap, char *inPath, + char *outPath) +{ + unsigned char mp3buffer[LAME_MAXMP3BUFFER]; + int Buffer[2][1152]; + int iread, imp3; + static const char *mode_names[2][4] = { + {"stereo", "j-stereo", "dual-ch", "single-ch"}, + {"stereo", "force-ms", "dual-ch", "single-ch"} + }; + int frames; + + if (silent < 10) { + lame_print_config(gf); /* print useful information about options being used */ + + fprintf(stderr, "Encoding %s%s to %s\n", + strcmp(inPath, "-") ? inPath : "<stdin>", + strlen(inPath) + strlen(outPath) < 66 ? "" : "\n ", + strcmp(outPath, "-") ? outPath : "<stdout>"); + + fprintf(stderr, + "Encoding as %g kHz ", 1.e-3 * lame_get_out_samplerate(gf)); + + { + const char *appendix = ""; + + switch (lame_get_VBR(gf)) { + case vbr_mt: + case vbr_rh: + case vbr_mtrh: + appendix = "ca. "; + fprintf(stderr, "VBR(q=%i)", lame_get_VBR_q(gf)); + break; + case vbr_abr: + fprintf(stderr, "average %d kbps", + lame_get_VBR_mean_bitrate_kbps(gf)); + break; + default: + fprintf(stderr, "%3d kbps", lame_get_brate(gf)); + break; + } + fprintf(stderr, " %s MPEG-%u%s Layer III (%s%gx) qval=%i\n", + mode_names[lame_get_force_ms(gf)][lame_get_mode(gf)], + 2 - lame_get_version(gf), + lame_get_out_samplerate(gf) < 16000 ? ".5" : "", + appendix, + 0.1 * (int) (10. * lame_get_compression_ratio(gf) + 0.5), + lame_get_quality(gf)); + } + + if (silent <= -10) + lame_print_internals(gf); + + fflush(stderr); + } + + + /* encode until we hit eof */ + do { + /* read in 'iread' samples */ + iread = get_audio(gf, Buffer); + frames = lame_get_frameNum(gf); + + + /********************** status display *****************************/ + if (silent <= 0) { + if (update_interval > 0) { + timestatus_klemm(gf); + } + else { + if (0 == frames % 50) { +#ifdef BRHIST + brhist_jump_back(); +#endif + timestatus(lame_get_out_samplerate(gf), + frames, + lame_get_totalframes(gf), + lame_get_framesize(gf)); +#ifdef BRHIST + if (brhist) + brhist_disp(gf); +#endif + } + } + } + + /* encode */ + imp3 = lame_encode_buffer_int(gf, Buffer[0], Buffer[1], iread, + mp3buffer, sizeof(mp3buffer)); + + /* was our output buffer big enough? */ + if (imp3 < 0) { + if (imp3 == -1) + fprintf(stderr, "mp3 buffer is not big enough... \n"); + else + fprintf(stderr, "mp3 internal error: error code=%i\n", imp3); + return 1; + } + + if (fwrite(mp3buffer, 1, imp3, outf) != imp3) { + fprintf(stderr, "Error writing mp3 output \n"); + return 1; + } + + } while (iread); + + if (nogap) + imp3 = lame_encode_flush_nogap(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ + else + imp3 = lame_encode_flush(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ + + if (imp3 < 0) { + if (imp3 == -1) + fprintf(stderr, "mp3 buffer is not big enough... \n"); + else + fprintf(stderr, "mp3 internal error: error code=%i\n", imp3); + return 1; + + } + + if (silent <= 0) { +#ifdef BRHIST + brhist_jump_back(); +#endif + frames = lame_get_frameNum(gf); + timestatus(lame_get_out_samplerate(gf), + frames, lame_get_totalframes(gf), lame_get_framesize(gf)); +#ifdef BRHIST + if (brhist) { + brhist_disp(gf); + } + brhist_disp_total(gf); +#endif + timestatus_finish(); + } + + fwrite(mp3buffer, 1, imp3, outf); + + return 0; +} + + + + + + +void +brhist_init_package(lame_global_flags * gf) +{ +#ifdef BRHIST + if (brhist) { + if (brhist_init + (gf, lame_get_VBR_min_bitrate_kbps(gf), + lame_get_VBR_max_bitrate_kbps(gf))) { + /* fail to initialize */ + brhist = 0; + } + } + else { + brhist_init(gf, 128, 128); /* Dirty hack */ + } +#endif +} + + + + +void parse_nogap_filenames(int nogapout, char *inPath, char *outPath, char *outdir) { + + char *slasher; + int n; + + strcpy(outPath,outdir); + if (!nogapout) { + strncpy(outPath, inPath, PATH_MAX + 1 - 4); + n=strlen(outPath); + /* nuke old extension, if one */ + if (outPath[n-3] == 'w' + && outPath[n-2] == 'a' + && outPath[n-1] == 'v' + && outPath[n-4] == '.') { + outPath[n-3] = 'm'; + outPath[n-2] = 'p'; + outPath[n-1] = '3'; + } else { + outPath[n+0] = '.'; + outPath[n+1] = 'm'; + outPath[n+2] = 'p'; + outPath[n+3] = '3'; + outPath[n+4] = 0; + } + } else { + slasher = inPath; + slasher += PATH_MAX + 1 - 4; + + /* backseek to last dir delemiter */ + while (*slasher != '/' && *slasher != '\\' && slasher != inPath + && *slasher != ':') + { + slasher--; + } + + /* skip one foward if needed */ + if (slasher != inPath + && (outPath[strlen(outPath)-1] == '/' + || + outPath[strlen(outPath)-1] == '\\' + || + outPath[strlen(outPath)-1] == ':')) + slasher++; + else if (slasher == inPath + && (outPath[strlen(outPath)-1] != '/' + && + outPath[strlen(outPath)-1] != '\\' + && + outPath[strlen(outPath)-1] != ':')) +#ifdef _WIN32 + strcat(outPath, "\\"); +#elif __OS2__ + strcat(outPath, "\\"); +#else + strcat(outPath, "/"); +#endif + + strncat(outPath, slasher, PATH_MAX + 1 - 4); + n=strlen(outPath); + /* nuke old extension */ + if (outPath[n-3] == 'w' + && outPath[n-2] == 'a' + && outPath[n-1] == 'v' + && outPath[n-4] == '.') { + outPath[n-3] = 'm'; + outPath[n-2] = 'p'; + outPath[n-1] = '3'; + } else { + outPath[n+0] = '.'; + outPath[n+1] = 'm'; + outPath[n+2] = 'p'; + outPath[n+3] = '3'; + outPath[n+4] = 0; + } + } +} + + + + +void print_lame_tag_leading_info(lame_global_flags *gf) { + if(lame_get_bWriteVbrTag(gf)) + printf("Writing LAME Tag..."); +} + +void print_trailing_info(lame_global_flags *gf) +{ + if (lame_get_bWriteVbrTag(gf)) + printf("done\n"); + + if (lame_get_findReplayGain(gf) ) { + int RadioGain = lame_get_RadioGain(gf); + printf("ReplayGain: %s%.1fdB\n", RadioGain > 0 ? "+" : "", ((float)RadioGain) / 10.0); + if (RadioGain > 0x1FE || RadioGain < -0x1FE) + printf("WARNING: ReplayGain exceeds the -51dB to +51dB range. Such a result is too\n" + " high to be stored in the header.\n" ); + } + + /* if (the user requested printing info about clipping) and (decoding + on the fly has actually been performed) */ + if(print_clipping_info && lame_get_decode_on_the_fly(gf)) { + float noclipGainChange = (float)lame_get_noclipGainChange(gf) / 10.0; + float noclipScale = lame_get_noclipScale(gf); + + if (noclipGainChange > 0.0) { /* clipping occurs */ + printf("WARNING: clipping occurs at the current gain. Set your decoder to decrease\n" + " the gain by at least %.1fdB or encode again ", noclipGainChange); + + /* advice the user on the scale factor */ + if (noclipScale > 0) { + printf("using --scale %.2f\n", noclipScale); + printf(" or less (the value under --scale is approximate).\n" ); + } + else { + /* the user specified his own scale factor. We could suggest + * the scale factor of (32767.0/gfp->PeakSample)*(gfp->scale) + * but it's usually very inaccurate. So we'd rather advice him to + * disable scaling first and see our suggestion on the scale factor then. */ + printf("using --scale <arg>\n" + " (For a suggestion on the optimal value of <arg> encode\n" + " with --scale 1 first)\n" ); + } + + } + else { /* no clipping */ + if (noclipGainChange > -0.1) + printf("\nThe waveform does not clip and is less than 0.1dB away from full scale.\n" ); + else + printf("\nThe waveform does not clip and is at least %.1fdB away from full scale.\n", -noclipGainChange); + } + } + +} + + + + + +int +main(int argc, char **argv) +{ + int ret; + lame_global_flags *gf; + char outPath[PATH_MAX + 1]; + char nogapdir[PATH_MAX + 1]; + char inPath[PATH_MAX + 1]; + + /* support for "nogap" encoding of up to 200 .wav files */ +#define MAX_NOGAP 200 + int nogapout = 0; + int max_nogap = MAX_NOGAP; + char *nogap_inPath[MAX_NOGAP]; + + int i; + FILE *outf; + +#if macintosh + argc = ccommand(&argv); +#endif + +#if defined(_WIN32) + /* set affinity back to all CPUs. Fix for EAC/lame on SMP systems from + "Todd Richmond" <todd.richmond@openwave.com> */ + typedef BOOL (WINAPI *SPAMFunc)(HANDLE, DWORD); + SPAMFunc func; + SYSTEM_INFO si; + + if ((func = (SPAMFunc)GetProcAddress(GetModuleHandle("KERNEL32.DLL"), + "SetProcessAffinityMask")) != NULL) { + GetSystemInfo(&si); + func(GetCurrentProcess(), si.dwActiveProcessorMask); + } +#endif + + +#ifdef __EMX__ + /* This gives wildcard expansion on Non-POSIX shells with OS/2 */ + _wildcard(&argc, &argv); +#endif + + for (i = 0; i < max_nogap; ++i) { + nogap_inPath[i] = malloc(PATH_MAX + 1); + } + + memset(inPath, 0, sizeof(inPath)); + + /* initialize libmp3lame */ + input_format = sf_unknown; + if (NULL == (gf = lame_init())) { + fprintf(stderr, "fatal error during initialization\n"); + return 1; + } + if (argc <= 1) { + usage(stderr, argv[0]); /* no command-line args, print usage, exit */ + return 1; + } + + /* parse the command line arguments, setting various flags in the + * struct 'gf'. If you want to parse your own arguments, + * or call libmp3lame from a program which uses a GUI to set arguments, + * skip this call and set the values of interest in the gf struct. + * (see the file API and lame.h for documentation about these parameters) + */ + parse_args_from_string(gf, getenv("LAMEOPT"), inPath, outPath); + ret = parse_args(gf, argc, argv, inPath, outPath, nogap_inPath, &max_nogap); + if (ret < 0) + return ret == -2 ? 0 : 1; + + if (update_interval < 0.) + update_interval = 2.; + + if (outPath[0] != '\0' && max_nogap>0) { + strncpy(nogapdir, outPath, PATH_MAX + 1); + nogapout = 1; + } + + /* initialize input file. This also sets samplerate and as much + other data on the input file as available in the headers */ + if (max_nogap > 0) { + /* for nogap encoding of multiple input files, it is not possible to + * specify the output file name, only an optional output directory. */ + parse_nogap_filenames(nogapout,nogap_inPath[0],outPath,nogapdir); + outf = init_files(gf, nogap_inPath[0], outPath); + } + else { + outf = init_files(gf, inPath, outPath); + } + if (outf == NULL) { + return -1; + } + + /* Now that all the options are set, lame needs to analyze them and + * set some more internal options and check for problems + */ + i = lame_init_params(gf); + if (i < 0) { + if (i == -1) { + display_bitrates(stderr); + } + fprintf(stderr, "fatal error during initialization\n"); + return i; + } + + if (silent > 0 +#ifndef RH_HIST + || lame_get_VBR(gf) == vbr_off +#endif + ) { + brhist = 0; /* turn off VBR histogram */ + } + + + if (lame_get_decode_only(gf)) { + /* decode an mp3 file to a .wav */ + if (mp3_delay_set) + lame_decoder(gf, outf, mp3_delay, inPath, outPath); + else + lame_decoder(gf, outf, 0, inPath, outPath); + + } + else { + if (max_nogap > 0) { + /* + * encode multiple input files using nogap option + */ + for (i = 0; i < max_nogap; ++i) { + int use_flush_nogap = (i != (max_nogap - 1)); + if (i > 0) { + parse_nogap_filenames(nogapout,nogap_inPath[i],outPath,nogapdir); + /* note: if init_files changes anything, like + samplerate, num_channels, etc, we are screwed */ + outf = init_files(gf, nogap_inPath[i], outPath); + } + brhist_init_package(gf); + lame_set_nogap_total(gf, max_nogap); + lame_set_nogap_currentindex(gf, i); + ret = + lame_encoder(gf, outf, use_flush_nogap, nogap_inPath[i], + outPath); + + if (silent<=0) print_lame_tag_leading_info(gf); + lame_mp3_tags_fid(gf, outf); /* add VBR tags to mp3 file */ + + if (silent<=0) print_trailing_info(gf); + + fclose(outf); /* close the output file */ + close_infile(); /* close the input file */ + + /* reinitialize bitstream for next encoding. this is normally done + * by lame_init_params(), but we cannot call that routine twice */ + if (use_flush_nogap) + lame_init_bitstream(gf); + } + lame_close(gf); + + } + else { + /* + * encode a single input file + */ + brhist_init_package(gf); + ret = lame_encoder(gf, outf, 0, inPath, outPath); + + if (silent<=0) print_lame_tag_leading_info(gf); + lame_mp3_tags_fid(gf, outf); /* add VBR tags to mp3 file */ + + if (silent<=0) print_trailing_info(gf); + + fclose(outf); /* close the output file */ + close_infile(); /* close the input file */ + lame_close(gf); + } + } + return ret; +} + + + diff --git a/lame-3.97/frontend/.svn/text-base/main.h.svn-base b/lame-3.97/frontend/.svn/text-base/main.h.svn-base new file mode 100644 index 0000000..f36bf46 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/main.h.svn-base @@ -0,0 +1,61 @@ +/* + * Command line frontend program + * + * Copyright (c) 1999 Mark Taylor + * 2000 Takehiro TOMIANGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifdef HAVE_LIMITS_H +# include <limits.h> +#endif + +#include "get_audio.h" + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + + +/* GLOBAL VARIABLES used by parse.c and main.c. + instantiated in parce.c. ugly, ugly */ +extern sound_file_format input_format; +extern int swapbytes; /* force byte swapping default=0*/ +extern int silent; +extern int brhist; + +extern int mp3_delay; /* for decoder only */ +extern int mp3_delay_set; /* for decoder only */ +extern int enc_delay; /* if decoder finds a Xing header */ +extern int enc_padding; /* if decoder finds a Xing header */ +extern float update_interval; /* to use Frank's time status display */ +extern int disable_wav_header; /* for decoder only */ +extern mp3data_struct mp3input_data; /* used by MP3 */ +extern int print_clipping_info; /* print info whether waveform clips */ +extern int in_signed; +extern int in_unsigned; +#define order_littleEndian 0 +#define order_bigEndian 1 +#define order_unknown 2 +extern int in_endian; +extern int in_bitwidth; + +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#define Max(A, B) ((A) > (B) ? (A) : (B)) + + diff --git a/lame-3.97/frontend/.svn/text-base/mp3rtp.c.svn-base b/lame-3.97/frontend/.svn/text-base/mp3rtp.c.svn-base new file mode 100644 index 0000000..0b0509f --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/mp3rtp.c.svn-base @@ -0,0 +1,251 @@ +/* $Id: mp3rtp.c,v 1.22 2004/12/31 11:26:25 takehiro Exp $ */ + +/* Still under work ..., need a client for test, where can I get one? */ + +/* + * experimental translation: + * + * gcc -I..\include -I..\libmp3lame -o mp3rtp mp3rtp.c ../libmp3lame/libmp3lame.a lametime.c get_audio.c portableio.c ieeefloat.c timestatus.c parse.c rtp.c -lm + * + * wavrec -t 14400 -s 44100 -S /proc/self/fd/1 | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3 + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include <time.h> + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +#include "lame.h" +#include "main.h" +#include "parse.h" +#include "lametime.h" +#include "timestatus.h" +#include "get_audio.h" +#include "rtp.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* + * Encode (via LAME) to mp3 with RTP streaming of the output. + * + * Author: Felix von Leitner <leitner@vim.org> + * + * mp3rtp ip[:port[:ttl]] [lame encoding options] infile outfile + * + * examples: + * arecord -b 16 -s 22050 -w | ./mp3rtp 224.17.23.42:5004:2 -b 56 - /dev/null + * arecord -b 16 -s 44100 -w | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3 + * + */ + +struct rtpheader RTPheader; +struct sockaddr_in rtpsi; +int rtpsocket; + +void rtp_output ( const char* mp3buffer, const int mp3size ) +{ + sendrtp (rtpsocket, &rtpsi, &RTPheader, mp3buffer, mp3size); + RTPheader.timestamp += 5; + RTPheader.b.sequence++; +} + +#if 0 +struct rtpheader RTPheader; +SOCKET rtpsocket; + +void rtp_output (char *mp3buffer, int mp3size) +{ + rtp_send (rtpsocket, &RTPheader,mp3buffer,mp3size) ; + RTPheader.timestamp+=5; + RTPheader.b.sequence++; +} +#endif + + + + +unsigned int maxvalue ( int Buffer [2] [1152] ) +{ + unsigned int max = 0; + int i; + + for ( i = 0; i < 1152; i++ ) { + if ( abs (Buffer[0][i]) > max ) max = abs (Buffer[0][i]); + if ( abs (Buffer[1][i]) > max ) max = abs (Buffer[1][i]); + } + + return max; +} + +void levelmessage ( unsigned int maxvalue ) +{ + char buff[] = "| . | . | . | . | . | . | . | . | . | . | \r"; + static int max = 0; + static int tmp = 0; + + buff [tmp] = '+'; + tmp = (maxvalue*61 + 16384) / (32767 + 16384/61); + if (tmp > sizeof(buff)-2) + tmp = sizeof(buff)-2; + if (max < tmp) + max = tmp; + buff [max] = 'x'; + buff [tmp] = '#'; + fwrite ( buff, 1, sizeof(buff)-1, stderr ); +} + + +/************************************************************************ +* +* main +* +* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO +* psychoacoustic model. +* +************************************************************************/ + +int main ( int argc, char **argv ) +{ + unsigned char mp3buffer [LAME_MAXMP3BUFFER]; + char inPath [PATH_MAX + 1]; + char outPath [PATH_MAX + 1]; + int Buffer [2] [1152]; + + lame_global_flags *gf; + + int ret; + int wavsamples; + int mp3bytes; + FILE* outf; + + char ip [16]; + unsigned port = 5004; + unsigned ttl = 2; + char dummy; + + if ( argc <= 2 ) { + fprintf ( stderr, +"Encode (via LAME) to mp3 with RTP streaming of the output\n" +"\n" +" mp3rtp ip[:port[:ttl]] [lame encoding options] infile outfile\n" +"\n" +" examples:\n" +" arecord -b 16 -s 22050 -w | ./mp3rtp 224.17.23.42:5004:2 -b 56 - /dev/null\n" +" arecord -b 16 -s 44100 -w | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3\n" +"\n" ); + + return 1; + } + + switch (sscanf ( argv[1], "%11[.0-9]:%u:%u%c", ip, &port, &ttl, &dummy )) { + case 1: + case 2: + case 3: + break; + default: + fprintf (stderr, "Illegal destination selector '%s', must be ip[:port[:ttl]]\n", argv[1] ); + return -1; + } + + rtpsocket = makesocket ( ip, port, ttl, &rtpsi ); + srand ( getpid () ^ time (NULL) ); + initrtp ( &RTPheader ); + + /* initialize encoder */ + gf=lame_init(); + + /* Remove the argumets that are rtp related, and then + * parse the command line arguments, setting various flags in the + * struct pointed to by 'gf'. If you want to parse your own arguments, + * or call libmp3lame from a program which uses a GUI to set arguments, + * skip this call and set the values of interest in the gf struct. + * (see lame.h for documentation about these parameters) + */ + + argv[1] = argv[0]; + parse_args(gf, argc - 1, argv + 1, inPath, outPath,NULL,NULL); + + /* open the output file. Filename parsed into gf.inPath */ + if ( 0 == strcmp ( outPath, "-" ) ) { + lame_set_stream_binary_mode (outf = stdout); + } + else { + if ((outf = fopen (outPath, "wb+")) == NULL) { + fprintf (stderr, "Could not create \"%s\".\n", outPath); + return 1; + } + } + + + /* open the wav/aiff/raw pcm or mp3 input file. This call will + * open the file with name gf.inFile, try to parse the headers and + * set gf.samplerate, gf.num_channels, gf.num_samples. + * if you want to do your own file input, skip this call and set + * these values yourself. + */ + init_infile(gf,inPath); + + + /* Now that all the options are set, lame needs to analyze them and + * set some more options + */ + ret = lame_init_params(gf); + if ( ret < 0 ) { + if (ret == -1) display_bitrates (stderr); + fprintf (stderr, "fatal error during initialization\n"); + return -1; + } + + lame_print_config(gf); /* print useful information about options being used */ + + if (update_interval < 0.) + update_interval = 2.; + + /* encode until we hit EOF */ + while ( (wavsamples = get_audio(gf, Buffer)) > 0 ) { /* read in 'wavsamples' samples */ + levelmessage ( maxvalue (Buffer) ); + mp3bytes = lame_encode_buffer_int(gf, /* encode the frame */ + Buffer[0], Buffer[1], wavsamples, + mp3buffer, sizeof (mp3buffer) ); + + rtp_output ( mp3buffer, mp3bytes ); /* write MP3 output to RTP port */ + fwrite ( mp3buffer, 1, mp3bytes, outf ); /* write the MP3 output to file */ + } + + mp3bytes = lame_encode_flush(gf, /* may return one or more mp3 frame */ + mp3buffer, sizeof (mp3buffer) ); + rtp_output ( mp3buffer, mp3bytes ); /* write MP3 output to RTP port */ + fwrite ( mp3buffer, 1, mp3bytes, outf ); /* write the MP3 output to file */ + + lame_mp3_tags_fid(gf, outf ); /* add VBR tags to mp3 file */ + + lame_close(gf); + fclose(outf); + close_infile(); /* close the sound input file */ + + return 0; +} + +/* end of mp3rtp.c */ diff --git a/lame-3.97/frontend/.svn/text-base/mp3x.c.svn-base b/lame-3.97/frontend/.svn/text-base/mp3x.c.svn-base new file mode 100644 index 0000000..b9b2083 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/mp3x.c.svn-base @@ -0,0 +1,66 @@ +/* $Id: mp3x.c,v 1.19 2005/03/13 17:01:54 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "lame.h" + +#include <stdio.h> + +#include "lame-analysis.h" +#include <gtk/gtk.h> +#include "parse.h" +#include "get_audio.h" +#include "gtkanal.h" +#include "lametime.h" + +#include "main.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + + + +/************************************************************************ +* +* main +* +* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO +* psychoacoustic model. +* +************************************************************************/ +int main(int argc, char **argv) +{ + char mp3buffer[LAME_MAXMP3BUFFER]; + lame_global_flags *gf; + char outPath[PATH_MAX + 1]; + char inPath[PATH_MAX + 1]; + int ret; + + gf=lame_init(); + if(argc <=1 ) { + usage(stderr, argv[0]); /* no command-line args */ + return -1; + } + ret = parse_args(gf,argc, argv, inPath, outPath,NULL,NULL); + if (ret < 0) + return ret == -2 ? 0 : 1; + + (void) lame_set_analysis( gf, 1 ); + + init_infile(gf,inPath); + lame_init_params(gf); + lame_print_config(gf); + + + gtk_init (&argc, &argv); + gtkcontrol(gf,inPath); + + lame_encode_finish(gf,mp3buffer,sizeof(mp3buffer)); + close_infile(); + return 0; +} + diff --git a/lame-3.97/frontend/.svn/text-base/mp3x_vc6.dsp.svn-base b/lame-3.97/frontend/.svn/text-base/mp3x_vc6.dsp.svn-base new file mode 100644 index 0000000..6b60aaa --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/mp3x_vc6.dsp.svn-base @@ -0,0 +1,172 @@ +# Microsoft Developer Studio Project File - Name="MP3x" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=MP3x - Win32 Debug GTK +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mp3x_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mp3x_vc6.mak" CFG="MP3x - Win32 Debug GTK" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "MP3x - Win32 Debug GTK" (based on "Win32 (x86) Console Application") +!MESSAGE "MP3x - Win32 Release GTK" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "MP3x - Win32 Debug GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "MP3x___Win32_Debug_GTK" +# PROP BASE Intermediate_Dir "MP3x___Win32_Debug_GTK" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "MP3x___Win32_Debug_GTK" +# PROP Intermediate_Dir "MP3x___Win32_Debug_GTK" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /ZI /Od /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_GTK" /D "HAVE_MPGLIB" /D "LAMESNDFILE" /D "BRHIST" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /Gm /ZI /Od /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "_MBCS" /D "HAVE_GTK" /D "LAMESNDFILE" /D "BRHIST" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /debug /machine:I386 /out:"../output/mp3x.exe" /pdbtype:sept /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" +# ADD LINK32 glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /debug /machine:I386 /out:"../output/mp3x.exe" /pdbtype:sept /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" + +!ELSEIF "$(CFG)" == "MP3x - Win32 Release GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "MP3x___Win32_Release_GTK" +# PROP BASE Intermediate_Dir "MP3x___Win32_Release_GTK" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "MP3x___Win32_Release_GTK" +# PROP Intermediate_Dir "MP3x___Win32_Release_GTK" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /O2 /I "./WinGTK/gtk-plus" /I "./WinGTK/glib-1.2" /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "NDEBUG" /D "LAMEPARSE" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_GTK" /D "HAVE_MPGLIB" /D "LAMESNDFILE" /D "BRHIST" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /I "./WinGTK/gtk-plus" /I "./WinGTK/glib-1.2" /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "NDEBUG" /D "LAMEPARSE" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_GTK" /D "HAVE_MPGLIB" /D "LAMESNDFILE" /D "BRHIST" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 glib-1.3.lib glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /profile /map /machine:I386 /out:"../output/mp3x.exe" /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" +# ADD LINK32 glib-2.0.lib glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /profile /map /machine:I386 /out:"../output/mp3x.exe" /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" + +!ENDIF + +# Begin Target + +# Name "MP3x - Win32 Debug GTK" +# Name "MP3x - Win32 Release GTK" +# Begin Group "Source" + +# PROP Default_Filter "c" +# Begin Source File + +SOURCE=..\frontend\brhist.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\get_audio.c +# End Source File +# Begin Source File + +SOURCE=.\gpkplotting.c +# End Source File +# Begin Source File + +SOURCE=.\gtkanal.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\lametime.c +# End Source File +# Begin Source File + +SOURCE=.\mp3x.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\parse.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\portableio.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\timestatus.c +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=..\frontend\brhist.h +# End Source File +# Begin Source File + +SOURCE=..\configMS.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\get_audio.h +# End Source File +# Begin Source File + +SOURCE=.\gpkplotting.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\lametime.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\parse.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\portableio.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\timestatus.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\README.WINGTK +# End Source File +# End Target +# End Project diff --git a/lame-3.97/frontend/.svn/text-base/mp3x_vc7.vcproj.svn-base b/lame-3.97/frontend/.svn/text-base/mp3x_vc7.vcproj.svn-base new file mode 100644 index 0000000..7485b74 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/mp3x_vc7.vcproj.svn-base @@ -0,0 +1,1142 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="MP3x" + ProjectGUID="{EB18C685-0074-4892-840C-E5248B16CFFD}" + RootNamespace="MP3x" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release GTK|Win32" + OutputDirectory=".\MP3x___Win32_Release_GTK" + IntermediateDirectory=".\MP3x___Win32_Release_GTK" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="./WinGTK/gtk-plus,./WinGTK/glib-1.2,./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="NDEBUG;LAMEPARSE;WIN32;_CONSOLE;HAVE_GTK;HAVE_MPGLIB;LAMESNDFILE;BRHIST;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\MP3x___Win32_Release_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Release_GTK/" + ObjectFile=".\MP3x___Win32_Release_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Release_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateMapFile="TRUE" + MapFileName=".\MP3x___Win32_Release_GTK/mp3x.map" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Release_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug GTK|Win32" + OutputDirectory=".\MP3x___Win32_Debug_GTK" + IntermediateDirectory=".\MP3x___Win32_Debug_GTK" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source" + Filter="c"> + <File + RelativePath="brhist.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="get_audio.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="gpkplotting.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="gtkanal.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="lametime.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="mp3x.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="parse.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="portableio.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="timestatus.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Include" + Filter="h"> + <File + RelativePath="brhist.h"> + </File> + <File + RelativePath="..\configMS.h"> + </File> + <File + RelativePath="get_audio.h"> + </File> + <File + RelativePath="gpkplotting.h"> + </File> + <File + RelativePath="lametime.h"> + </File> + <File + RelativePath="parse.h"> + </File> + <File + RelativePath="portableio.h"> + </File> + <File + RelativePath="timestatus.h"> + </File> + </Filter> + <File + RelativePath="..\README.WINGTK"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/frontend/.svn/text-base/parse.c.svn-base b/lame-3.97/frontend/.svn/text-base/parse.c.svn-base new file mode 100644 index 0000000..2934865 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/parse.c.svn-base @@ -0,0 +1,2005 @@ +/* + * Command line parsing related functions + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: parse.c,v 1.211.2.3 2006/02/02 21:04:30 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <ctype.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef __OS2__ +#include <os2.h> +#define PRTYC_IDLE 1 +#define PRTYC_REGULAR 2 +#define PRTYD_MINIMUM -31 +#define PRTYD_MAXIMUM 31 +#endif + +#ifdef HAVE_LIMITS_H +# include <limits.h> +#endif + +#include "lame.h" +#include "set_get.h" + +#include "brhist.h" +#include "parse.h" +#include "main.h" +#include "get_audio.h" +#include "version.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +#if defined DEBUG || _DEBUG +#define INTERNAL_OPTS 1 +#else +#define INTERNAL_OPTS LAME_ALPHA_VERSION +#endif + +#if (INTERNAL_OPTS!=0) +#define DEV_HELP(a) a +#else +#define DEV_HELP(a) +#endif + + + +/* GLOBAL VARIABLES. set by parse_args() */ +/* we need to clean this up */ +sound_file_format input_format; +int swapbytes; /* force byte swapping default=0*/ +int silent; /* Verbosity */ +int ignore_tag_errors; /* Ignore errors in values passed for tags */ +int brhist; +float update_interval; /* to use Frank's time status display */ +int mp3_delay; /* to adjust the number of samples truncated + during decode */ +int mp3_delay_set; /* user specified the value of the mp3 encoder + delay to assume for decoding */ + +int enc_delay; +int enc_padding; +int disable_wav_header; +mp3data_struct mp3input_data; /* used by MP3 */ +int print_clipping_info; /* print info whether waveform clips */ + +int in_signed=1; +int in_unsigned=0; +int in_endian=order_littleEndian; +int in_bitwidth=16; + + + +/** + * Long Filename support for the WIN32 platform + * + */ +#ifdef WIN32 +#include <winbase.h> +static void +dosToLongFileName( char *fn ) +{ + const int MSIZE = PATH_MAX + 1 - 4; /* we wanna add ".mp3" later */ + WIN32_FIND_DATAA lpFindFileData; + HANDLE h = FindFirstFileA( fn, &lpFindFileData ); + if ( h != INVALID_HANDLE_VALUE ) { + int a; + char *q, *p; + FindClose( h ); + for ( a = 0; a < MSIZE; a++ ) { + if ( '\0' == lpFindFileData.cFileName[a] ) break; + } + if ( a >= MSIZE || a == 0 ) return; + q = strrchr( fn, '\\' ); + p = strrchr( fn, '/' ); + if ( p-q > 0 ) q = p; + if ( q == NULL ) q = strrchr(fn,':'); + if ( q == NULL ) strncpy( fn, lpFindFileData.cFileName, a ); + else { + a += q-fn +1; + if ( a >= MSIZE ) return; + strncpy( ++q, lpFindFileData.cFileName, MSIZE-a ); + } + } +} +#endif +#if defined(WIN32) +#include <windows.h> +BOOL SetPriorityClassMacro(DWORD p) +{ + HANDLE op = OpenProcess(PROCESS_ALL_ACCESS,TRUE,GetCurrentProcessId()); + return SetPriorityClass(op,p); +} + +static void setWin32Priority( lame_global_flags* gfp, int Priority ) +{ + switch (Priority) { + case 0: + case 1: + SetPriorityClassMacro(IDLE_PRIORITY_CLASS); + printf("==> Priority set to Low.\n"); + break; + default: + case 2: + SetPriorityClassMacro(NORMAL_PRIORITY_CLASS); + printf("==> Priority set to Normal.\n"); + break; + case 3: + case 4: + SetPriorityClassMacro(HIGH_PRIORITY_CLASS); + printf("==> Priority set to High.\n"); + break; + } +} +#endif + + +#if defined(__OS2__) +/* OS/2 priority functions */ +static int setOS2Priority( lame_global_flags* gfp, int Priority ) +{ + int rc; + + switch(Priority) { + + case 0: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_IDLE, /* select priority class (idle, regular, etc) */ + 0, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 0 (Low priority).\n"); + break; + + case 1: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_IDLE, /* select priority class (idle, regular, etc) */ + PRTYD_MAXIMUM, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 1 (Medium priority).\n"); + break; + + case 2: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ + PRTYD_MINIMUM, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 2 (Regular priority).\n"); + break; + + case 3: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ + 0, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 3 (High priority).\n"); + break; + + case 4: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ + PRTYD_MAXIMUM, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 4 (Maximum priority). I hope you enjoy it :)\n"); + break; + + default: + printf("==> Invalid priority specified! Assuming idle priority.\n"); + } + + + return 0; +} +#endif + + +/************************************************************************ +* +* license +* +* PURPOSE: Writes version and license to the file specified by fp +* +************************************************************************/ + +static int lame_version_print ( FILE* const fp ) +{ + const char * b = get_lame_os_bitness (); + const char * v = get_lame_version (); + const char * u = get_lame_url (); + const int lenb = strlen (b); + const int lenv = strlen (v); + const int lenu = strlen (u); + const int lw = 80; /* line width of terminal in characters */ + const int sw = 16; /* static width of text */ + + if (lw >= lenb+lenv+lenu+sw || lw < lenu+2) + /* text fits in 80 chars per line, or line even too small for url */ + if( lenb > 0 ) + fprintf ( fp, "LAME %s version %s (%s)\n\n", b, v, u ); + else + fprintf ( fp, "LAME version %s (%s)\n\n", v, u ); + else + /* text too long, wrap url into next line, right aligned */ + if( lenb > 0 ) + fprintf ( fp, "LAME %s version %s\n%*s(%s)\n\n", b, v, lw-2-lenu, "", u ); + else + fprintf ( fp, "LAME version %s\n%*s(%s)\n\n", v, lw-2-lenu, "", u ); + + if (LAME_ALPHA_VERSION) + fprintf ( fp, "warning: alpha versions should be used for testing only\n\n"); + + + return 0; +} + +static int print_license ( FILE* const fp ) /* print version & license */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "Can I use LAME in my commercial program?\n" + "\n" + "Yes, you can, under the restrictions of the LGPL. In particular, you\n" + "can include a compiled version of the LAME library (for example,\n" + "lame.dll) with a commercial program. Some notable requirements of\n" + "the LGPL:\n" + "\n" ); + fprintf ( fp, + "1. In your program, you cannot include any source code from LAME, with\n" + " the exception of files whose only purpose is to describe the library\n" + " interface (such as lame.h).\n" + "\n" ); + fprintf ( fp, + "2. Any modifications of LAME must be released under the LGPL.\n" + " The LAME project (www.mp3dev.org) would appreciate being\n" + " notified of any modifications.\n" + "\n" ); + fprintf ( fp, + "3. You must give prominent notice that your program is:\n" + " A. using LAME (including version number)\n" + " B. LAME is under the LGPL\n" + " C. Provide a copy of the LGPL. (the file COPYING contains the LGPL)\n" + " D. Provide a copy of LAME source, or a pointer where the LAME\n" + " source can be obtained (such as www.mp3dev.org)\n" + " An example of prominent notice would be an \"About the LAME encoding engine\"\n" + " button in some pull down menu within the executable of your program.\n" + "\n" ); + fprintf ( fp, + "4. If you determine that distribution of LAME requires a patent license,\n" + " you must obtain such license.\n" + "\n" + "\n" ); + fprintf ( fp, + "*** IMPORTANT NOTE ***\n" + "\n" + "The decoding functions provided in LAME use the mpglib decoding engine which\n" + "is under the GPL. They may not be used by any program not released under the\n" + "GPL unless you obtain such permission from the MPG123 project (www.mpg123.de).\n" + "\n" ); + return 0; +} + + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes command line syntax to the file specified by fp +* +************************************************************************/ + +int usage ( FILE* const fp, const char* ProgramName ) /* print general syntax */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "usage: %s [options] <infile> [outfile]\n" + "\n" + " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" + "\n" + "Try:\n" + " \"%s --help\" for general usage information\n" + " or:\n" + " \"%s --preset help\" for information on suggested predefined settings\n" + " or:\n" + " \"%s --longhelp\"\n" + " or \"%s -?\" for a complete options list\n\n", + ProgramName, ProgramName, ProgramName, ProgramName, ProgramName ); + return 0; +} + + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes command line syntax to the file specified by fp +* but only the most important ones, to fit on a vt100 terminal +* +************************************************************************/ + +int short_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName ) /* print short syntax help */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "usage: %s [options] <infile> [outfile]\n" + "\n" + " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" + "\n" + "RECOMMENDED:\n" + " lame -V2 input.wav output.mp3\n" + "\n", ProgramName ); + fprintf ( fp, + "OPTIONS:\n" + " -b bitrate set the bitrate, default 128 kbps\n" + " -h higher quality, but a little slower. Recommended.\n" + " -f fast mode (lower quality)\n" + " -V n quality setting for VBR. default n=%i\n" + " 0=high quality,bigger files. 9=smaller files\n" + , lame_get_VBR_q(gfp) ); + fprintf ( fp, + " --preset type type must be \"medium\", \"standard\", \"extreme\", \"insane\",\n" + " or a value for an average desired bitrate and depending\n" + " on the value specified, appropriate quality settings will\n" + " be used.\n" + " \"--preset help\" gives more info on these\n" + "\n" ); + fprintf ( fp, +#if defined(WIN32) + " --priority type sets the process priority\n" + " 0,1 = Low priority\n" + " 2 = normal priority\n" + " 3,4 = High priority\n" + "\n" +#endif +#if defined(__OS2__) + " --priority type sets the process priority\n" + " 0 = Low priority\n" + " 1 = Medium priority\n" + " 2 = Regular priority\n" + " 3 = High priority\n" + " 4 = Maximum priority\n" + "\n" +#endif + " --longhelp full list of options\n" + "\n" ); + + return 0; +} + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes command line syntax to the file specified by fp +* +************************************************************************/ + +static void wait_for ( FILE* const fp, int lessmode ) +{ + if ( lessmode ) { + fflush ( fp ); + getchar (); + } else { + fprintf ( fp, "\n" ); + } + fprintf ( fp, "\n" ); +} + +int long_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName, int lessmode ) /* print long syntax help */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "usage: %s [options] <infile> [outfile]\n" + "\n" + " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" + "\n" + "RECOMMENDED:\n" + " lame -V2 input.wav output.mp3\n" + "\n", ProgramName ); + fprintf ( fp, + "OPTIONS:\n" + " Input options:\n" + " -r input is raw pcm\n" + " -x force byte-swapping of input\n" + " -s sfreq sampling frequency of input file (kHz) - default 44.1 kHz\n" + " --bitwidth w input bit width is w (default 16)\n" + " --scale <arg> scale input (multiply PCM data) by <arg>\n" + " --scale-l <arg> scale channel 0 (left) input (multiply PCM data) by <arg>\n" + " --scale-r <arg> scale channel 1 (right) input (multiply PCM data) by <arg>\n" +#ifdef LIBSNDFILE + " --signed input is signed (default)\n" + " --unsigned input is unsigned\n" + " --little-endian input is little-endian (default from host)\n" + " --big-endian input is big-endian (default from host)\n" +#endif + ); + fprintf ( fp, +#if (defined HAVE_MPGLIB || defined AMIGA_MPEGA) + " --mp1input input file is a MPEG Layer I file\n" + " --mp2input input file is a MPEG Layer II file\n" + " --mp3input input file is a MPEG Layer III file\n" +#endif + " --nogap <file1> <file2> <...>\n" + " gapless encoding for a set of contiguous files\n" + " --nogapout <dir>\n" + " output dir for gapless encoding (must precede --nogap)\n" + " --nogaptags allow the use of VBR tags in gapless encoding" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " Operational options:\n" + " -a downmix from stereo to mono file for mono encoding\n" + " -m <mode> (j)oint, (s)imple, (f)orce, (d)dual-mono, (m)ono\n" + " default is (j) or (s) depending on bitrate\n" + " joint = joins the best possible of MS and LR stereo\n" + " simple = force LR stereo on all frames\n" + " force = force MS stereo on all frames.\n" + " --preset type type must be \"medium\", \"standard\", \"extreme\", \"insane\",\n" + " or a value for an average desired bitrate and depending\n" + " on the value specified, appropriate quality settings will\n" + " be used.\n" + " \"--preset help\" gives more info on these\n" + " --comp <arg> choose bitrate to achive a compression ratio of <arg>\n" + ); + fprintf ( fp, + " --replaygain-fast compute RG fast but slightly inaccurately (default)\n" +#ifdef DECODE_ON_THE_FLY + " --replaygain-accurate compute RG more accurately and find the peak sample\n" +#endif + " --noreplaygain disable ReplayGain analysis\n" +#ifdef DECODE_ON_THE_FLY + " --clipdetect enable --replaygain-accurate and print a message whether\n" + " clipping occurs and how far the waveform is from full scale\n" +#endif + ); + fprintf ( fp, + " --freeformat produce a free format bitstream\n" + " --decode input=mp3 file, output=wav\n" + " -t disable writing wav header when using --decode\n" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " Verbosity:\n" + " --disptime <arg>print progress report every arg seconds\n" + " -S don't print progress report, VBR histograms\n" + " --nohist disable VBR histogram display\n" + " --silent don't print anything on screen\n" + " --quiet don't print anything on screen\n" + " --brief print more useful information\n" + " --verbose print a lot of useful information\n" + "\n" ); + fprintf ( fp, + " Noise shaping & psycho acoustic algorithms:\n" + " -q <arg> <arg> = 0...9. Default -q 5 \n" + " -q 0: Highest quality, very slow \n" + " -q 9: Poor quality, but fast \n" + " -h Same as -q 2. Recommended.\n" + " -f Same as -q 7. Fast, ok quality\n" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " CBR (constant bitrate, the default) options:\n" + " -b <bitrate> set the bitrate in kbps, default 128 kbps\n" + " --cbr enforce use of constant bitrate\n" + "\n" + " ABR options:\n" + " --abr <bitrate> specify average bitrate desired (instead of quality)\n" + "\n" ); + fprintf ( fp, + " VBR options:\n" + " -v use variable bitrate (VBR) (--vbr-old)\n" + " --vbr-old use old variable bitrate (VBR) routine\n" + " --vbr-new use new variable bitrate (VBR) routine\n" + " -V n quality setting for VBR. default n=%i\n" + " 0=high quality,bigger files. 9=smaller files\n" + , lame_get_VBR_q(gfp) ); + fprintf ( fp, + " -b <bitrate> specify minimum allowed bitrate, default 32 kbps\n" + " -B <bitrate> specify maximum allowed bitrate, default 320 kbps\n" + " -F strictly enforce the -b option, for use with players that\n" + " do not support low bitrate mp3\n" + " -t disable writing LAME Tag\n" + " -T enable and force writing LAME Tag\n" + ); + + wait_for ( fp, lessmode ); +DEV_HELP( + fprintf ( fp, + " ATH related:\n" + " --noath turns ATH down to a flat noise floor\n" + " --athshort ignore GPSYCHO for short blocks, use ATH only\n" + " --athonly ignore GPSYCHO completely, use ATH only\n" + " --athtype n selects between different ATH types [0-4]\n" + " --athlower x lowers ATH by x dB\n" + ); + fprintf ( fp, + " --athaa-type n ATH auto adjust: 0 'no' else 'loudness based'\n" +/** OBSOLETE " --athaa-loudapprox n n=1 total energy or n=2 equal loudness curve\n"*/ + " --athaa-sensitivity x activation offset in -/+ dB for ATH auto-adjustment\n" + "\n" ); +) + fprintf ( fp, + " PSY related:\n" + " --short use short blocks when appropriate\n" + " --noshort do not use short blocks\n" + " --allshort use only short blocks\n" +DEV_HELP( " --cwlimit <freq> compute tonality up to freq (in kHz) default 8.8717\n" ) + ); + fprintf ( fp, + " --notemp disable temporal masking effect\n" + " --nssafejoint M/S switching criterion\n" + " --nsmsfix <arg> M/S switching tuning [effective 0-3.5]\n" + " --interch x adjust inter-channel masking ratio\n" + " --ns-bass x adjust masking for sfbs 0 - 6 (long) 0 - 5 (short)\n" + " --ns-alto x adjust masking for sfbs 7 - 13 (long) 6 - 10 (short)\n" + " --ns-treble x adjust masking for sfbs 14 - 21 (long) 11 - 12 (short)\n" + ); + fprintf ( fp, + " --ns-sfb21 x change ns-treble by x dB for sfb21\n" +DEV_HELP( + " --shortthreshold x,y short block switching threshold,\n" + " x for L/R/M channel, y for S channel\n" + " Noise Shaping related:\n" + " --substep n use pseudo substep noise shaping method types 0-2\n" + ) + ); + + wait_for ( fp, lessmode ); + + fprintf ( fp, + " experimental switches:\n" + " -X n[,m] selects between different noise measurements\n" + " n for long block, m for short. if m is omitted, m = n\n" + " -Y lets LAME ignore noise in sfb21, like in CBR\n" + " -Z [n] currently no effects\n" + ); + + wait_for ( fp, lessmode ); + + fprintf ( fp, + " MP3 header/stream options:\n" + " -e <emp> de-emphasis n/5/c (obsolete)\n" + " -c mark as copyright\n" + " -o mark as non-original\n" + " -p error protection. adds 16 bit checksum to every frame\n" + " (the checksum is computed correctly)\n" + " --nores disable the bit reservoir\n" + " --strictly-enforce-ISO comply as much as possible to ISO MPEG spec\n" + "\n" ); + fprintf ( fp, + " Filter options:\n" + " -k keep ALL frequencies (disables all filters),\n" + " Can cause ringing and twinkling\n" + " --lowpass <freq> frequency(kHz), lowpass filter cutoff above freq\n" + " --lowpass-width <freq> frequency(kHz) - default 15%% of lowpass freq\n" + " --highpass <freq> frequency(kHz), highpass filter cutoff below freq\n" + " --highpass-width <freq> frequency(kHz) - default 15%% of highpass freq\n" + ); + fprintf ( fp, + " --resample <sfreq> sampling frequency of output file(kHz)- default=automatic\n" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " ID3 tag options:\n" + " --tt <title> audio/song title (max 30 chars for version 1 tag)\n" + " --ta <artist> audio/song artist (max 30 chars for version 1 tag)\n" + " --tl <album> audio/song album (max 30 chars for version 1 tag)\n" + " --ty <year> audio/song year of issue (1 to 9999)\n" + " --tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1)\n" + " --tn <track> audio/song track number (1 to 255, creates v1.1 tag)\n" + " --tg <genre> audio/song genre (name or number in list)\n" + ); + fprintf ( fp, + " --add-id3v2 force addition of version 2 tag\n" + " --id3v1-only add only a version 1 tag\n" + " --id3v2-only add only a version 2 tag\n" + " --space-id3v1 pad version 1 tag with spaces instead of nulls\n" + " --pad-id3v2 pad version 2 tag with extra 128 bytes\n" + " --genre-list print alphabetically sorted ID3 genre list and exit\n" + " --ignore-tag-errors ignore errors in values passed for tags\n" + "\n" ); + fprintf ( fp, + " Note: A version 2 tag will NOT be added unless one of the input fields\n" + " won't fit in a version 1 tag (e.g. the title string is longer than 30\n" + " characters), or the '--add-id3v2' or '--id3v2-only' options are used,\n" + " or output is redirected to stdout.\n" +#if defined(WIN32) + "\n\nMS-Windows-specific options:\n" + " --priority <type> sets the process priority:\n" + " 0,1 = Low priority (IDLE_PRIORITY_CLASS)\n" + " 2 = normal priority (NORMAL_PRIORITY_CLASS, default)\n" + " 3,4 = High priority (HIGH_PRIORITY_CLASS))\n" + " Note: Calling '--priority' without a parameter will select priority 0.\n" +#endif +#if defined(__OS2__) + "\n\nOS/2-specific options:\n" + " --priority <type> sets the process priority:\n" + " 0 = Low priority (IDLE, delta = 0)\n" + " 1 = Medium priority (IDLE, delta = +31)\n" + " 2 = Regular priority (REGULAR, delta = -31)\n" + " 3 = High priority (REGULAR, delta = 0)\n" + " 4 = Maximum priority (REGULAR, delta = +31)\n" + " Note: Calling '--priority' without a parameter will select priority 0.\n" +#endif + + ); + +#if defined(HAVE_NASM) + wait_for ( fp, lessmode ); + fprintf ( fp, + " Platform specific:\n" + " --noasm <instructions> disable assembly optimizations for mmx/3dnow/sse\n" + ); + wait_for ( fp, lessmode ); +#endif + + display_bitrates ( fp ); + + return 0; +} + +static void display_bitrate ( FILE* const fp, const char* const version, const int d, const int indx ) +{ + int i; + + fprintf ( fp, + "\nMPEG-%-3s layer III sample frequencies (kHz): %2d %2d %g\n" + "bitrates (kbps):", + version, 32/d, 48/d, 44.1/d ); + for (i = 1; i <= 14; i++ ) /* 14 numbers are printed, not 15, and it was a bug of me */ + fprintf ( fp, " %2i", bitrate_table [indx] [i] ); + fprintf ( fp, "\n" ); +} + +int display_bitrates ( FILE* const fp ) +{ + display_bitrate ( fp, "1" , 1, 1 ); + display_bitrate ( fp, "2" , 2, 0 ); + display_bitrate ( fp, "2.5", 4, 0 ); + fprintf ( fp, "\n" ); + fflush ( fp ); + return 0; +} + + +/* note: for presets it would be better to externalize them in a file. + suggestion: lame --preset <file-name> ... + or: lame --preset my-setting ... and my-setting is defined in lame.ini + */ + +/* +Note from GB on 08/25/2002: +I am merging --presets and --alt-presets. Old presets are now aliases for +corresponding abr values from old alt-presets. This way we now have a +unified preset system, and I hope than more people will use the new tuned +presets instead of the old unmaintained ones. +*/ + + + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes presetting info to #stdout# +* +************************************************************************/ + + +static void presets_longinfo_dm ( FILE* msgfp ) +{ + fprintf ( msgfp, + "\n" + "The --preset switches are designed to provide the highest possible quality.\n" + "\n" + "They have for the most part been subject to and tuned via rigorous double blind\n" + "listening tests to verify and achieve this objective.\n" + "\n" + ); + fprintf ( msgfp, + "These are continually updated to coincide with the latest developments that\n" + "occur and as a result should provide you with nearly the best quality\n" + "currently possible from LAME.\n" + "\n" + ); + fprintf ( msgfp, + "To activate these presets:\n" + "\n" + " For VBR modes (generally highest quality):\n" + "\n" + ); + fprintf ( msgfp, + " \"--preset medium\" This preset should provide near transparency\n" + " to most people on most music.\n" + "\n" + " \"--preset standard\" This preset should generally be transparent\n" + " to most people on most music and is already\n" + " quite high in quality.\n" + "\n" + ); + fprintf ( msgfp, + " \"--preset extreme\" If you have extremely good hearing and similar\n" + " equipment, this preset will generally provide\n" + " slightly higher quality than the \"standard\"\n" + " mode.\n" + "\n" + ); + fprintf ( msgfp, + " For CBR 320kbps (highest quality possible from the --preset switches):\n" + "\n" + " \"--preset insane\" This preset will usually be overkill for most\n" + " people and most situations, but if you must\n" + " have the absolute highest quality with no\n" + " regard to filesize, this is the way to go.\n" + "\n" + ); + fprintf ( msgfp, + " For ABR modes (high quality per given bitrate but not as high as VBR):\n" + "\n" + " \"--preset <kbps>\" Using this preset will usually give you good\n" + " quality at a specified bitrate. Depending on the\n" + " bitrate entered, this preset will determine the\n" + ); + fprintf ( msgfp, + " optimal settings for that particular situation.\n" + " While this approach works, it is not nearly as\n" + " flexible as VBR, and usually will not attain the\n" + " same level of quality as VBR at higher bitrates.\n" + "\n" + ); + fprintf ( msgfp, + "The following options are also available for the corresponding profiles:\n" + "\n" + " <fast> standard\n" + " <fast> extreme\n" + " insane\n" + " <cbr> (ABR Mode) - The ABR Mode is implied. To use it,\n" + " simply specify a bitrate. For example:\n" + " \"--preset 185\" activates this\n" + " preset and uses 185 as an average kbps.\n" + "\n" + ); + fprintf ( msgfp, + " \"fast\" - Enables the new fast VBR for a particular profile. The\n" + " disadvantage to the speed switch is that often times the\n" + " bitrate will be slightly higher than with the normal mode\n" + " and quality may be slightly lower also.\n" + "\n" + ); + fprintf ( msgfp, + " \"cbr\" - If you use the ABR mode (read above) with a significant\n" + " bitrate such as 80, 96, 112, 128, 160, 192, 224, 256, 320,\n" + " you can use the \"cbr\" option to force CBR mode encoding\n" + " instead of the standard abr mode. ABR does provide higher\n" + " quality but CBR may be useful in situations such as when\n" + " streaming an mp3 over the internet may be important.\n" + "\n" + ); + fprintf ( msgfp, + " For example:\n" + "\n" + " \"--preset fast standard <input file> <output file>\"\n" + " or \"--preset cbr 192 <input file> <output file>\"\n" + " or \"--preset 172 <input file> <output file>\"\n" + " or \"--preset extreme <input file> <output file>\"\n" + "\n" + "\n" + ); + fprintf ( msgfp, + "A few aliases are available for ABR mode:\n" + "phone => 16kbps/mono phon+/lw/mw-eu/sw => 24kbps/mono\n" + "mw-us => 40kbps/mono voice => 56kbps/mono\n" + "fm/radio/tape => 112kbps hifi => 160kbps\n" + "cd => 192kbps studio => 256kbps\n"); +} + + +extern void lame_set_msfix( lame_t gfp, double msfix ); + + + +static int presets_set( lame_t gfp, int fast, int cbr, const char* preset_name, const char* ProgramName ) +{ + int mono = 0; + + if ((strcmp(preset_name, "help") == 0) && (fast < 1) + && (cbr < 1)) { + lame_version_print ( stdout ); + presets_longinfo_dm( stdout ); + return -1; + } + + + + /*aliases for compatibility with old presets */ + + if (strcmp(preset_name, "phone") == 0) { + preset_name = "16"; + mono = 1; + } + if ( (strcmp(preset_name, "phon+") == 0) || + (strcmp(preset_name, "lw") == 0) || + (strcmp(preset_name, "mw-eu") == 0) || + (strcmp(preset_name, "sw") == 0)) { + preset_name = "24"; + mono = 1; + } + if (strcmp(preset_name, "mw-us") == 0) { + preset_name = "40"; + mono = 1; + } + if (strcmp(preset_name, "voice") == 0) { + preset_name = "56"; + mono = 1; + } + if (strcmp(preset_name, "fm") == 0) { + preset_name = "112"; + } + if ( (strcmp(preset_name, "radio") == 0) || + (strcmp(preset_name, "tape") == 0)) { + preset_name = "112"; + } + if (strcmp(preset_name, "hifi") == 0) { + preset_name = "160"; + } + if (strcmp(preset_name, "cd") == 0) { + preset_name = "192"; + } + if (strcmp(preset_name, "studio") == 0) { + preset_name = "256"; + } + + if (strcmp(preset_name, "medium") == 0) { + lame_set_VBR_q(gfp, 4); + if (fast > 0) { + lame_set_VBR(gfp, vbr_mtrh); + } else { + lame_set_VBR(gfp, vbr_rh); + } + return 0; + } + + if (strcmp(preset_name, "standard") == 0) { + lame_set_VBR_q(gfp, 2); + if (fast > 0) { + lame_set_VBR(gfp, vbr_mtrh); + } else { + lame_set_VBR(gfp, vbr_rh); + } + return 0; + } + + else if (strcmp(preset_name, "extreme") == 0){ + lame_set_VBR_q(gfp, 0); + if (fast > 0) { + lame_set_VBR(gfp, vbr_mtrh); + } else { + lame_set_VBR(gfp, vbr_rh); + } + return 0; + } + + else if (((strcmp(preset_name, "insane") == 0) || + (strcmp(preset_name, "320" ) == 0)) && (fast < 1)) { + + lame_set_preset(gfp, INSANE); + + return 0; + } + + /* Generic ABR Preset */ + if (((atoi(preset_name)) > 0) && (fast < 1)) { + if ((atoi(preset_name)) >= 8 && (atoi(preset_name)) <= 320){ + lame_set_preset(gfp, atoi(preset_name)); + + if (cbr == 1 ) + lame_set_VBR(gfp, vbr_off); + + if (mono == 1 ) { + lame_set_mode(gfp, MONO); + } + + return 0; + + } + else { + lame_version_print ( stderr ); + fprintf(stderr,"Error: The bitrate specified is out of the valid range for this preset\n" + "\n" + "When using this mode you must enter a value between \"32\" and \"320\"\n" + "\n" + "For further information try: \"%s --preset help\"\n" + + , ProgramName + ); + return -1; + } + } + + lame_version_print ( stderr ); + fprintf(stderr,"Error: You did not enter a valid profile and/or options with --preset\n" + "\n" + "Available profiles are:\n" + "\n" + " <fast> medium\n" + " <fast> standard\n" + " <fast> extreme\n" + " insane\n" + " <cbr> (ABR Mode) - The ABR Mode is implied. To use it,\n" + " simply specify a bitrate. For example:\n" + " \"--preset 185\" activates this\n" + " preset and uses 185 as an average kbps.\n" + "\n" + ); + fprintf ( stderr, + " Some examples:\n" + "\n" + " or \"%s --preset fast standard <input file> <output file>\"\n" + " or \"%s --preset cbr 192 <input file> <output file>\"\n" + " or \"%s --preset 172 <input file> <output file>\"\n" + " or \"%s --preset extreme <input file> <output file>\"\n" + "\n" + "For further information try: \"%s --preset help\"\n" + + , ProgramName, ProgramName, ProgramName, ProgramName, ProgramName + ); + return -1; +} + +static void genre_list_handler (int num,const char *name, void* cookie) +{ + printf ("%3d %s\n", num, name); +} + + +/************************************************************************ +* +* parse_args +* +* PURPOSE: Sets encoding parameters to the specifications of the +* command line. Default settings are used for parameters +* not specified in the command line. +* +* If the input file is in WAVE or AIFF format, the sampling frequency is read +* from the AIFF header. +* +* The input and output filenames are read into #inpath# and #outpath#. +* +************************************************************************/ + +/* would use real "strcasecmp" but it isn't portable */ +static int local_strcasecmp ( const char* s1, const char* s2 ) +{ + unsigned char c1; + unsigned char c2; + + do { + c1 = tolower(*s1); + c2 = tolower(*s2); + if (!c1) { + break; + } + ++s1; + ++s2; + } while (c1 == c2); + return c1 - c2; +} + + + +/* LAME is a simple frontend which just uses the file extension */ +/* to determine the file type. Trying to analyze the file */ +/* contents is well beyond the scope of LAME and should not be added. */ +static int filename_to_type ( const char* FileName ) +{ + int len = strlen (FileName); + + if ( len < 4 ) return sf_unknown; + + FileName += len-4; + if ( 0 == local_strcasecmp ( FileName, ".mpg" ) ) return sf_mp1; + if ( 0 == local_strcasecmp ( FileName, ".mp1" ) ) return sf_mp1; + if ( 0 == local_strcasecmp ( FileName, ".mp2" ) ) return sf_mp2; + if ( 0 == local_strcasecmp ( FileName, ".mp3" ) ) return sf_mp3; + if ( 0 == local_strcasecmp ( FileName, ".wav" ) ) return sf_wave; + if ( 0 == local_strcasecmp ( FileName, ".aif" ) ) return sf_aiff; + if ( 0 == local_strcasecmp ( FileName, ".raw" ) ) return sf_raw; + return sf_unknown; +} + +static int resample_rate ( double freq ) +{ + if (freq >= 1.e3) freq *= 1.e-3; + + switch ( (int)freq ) { + case 8: return 8000; + case 11: return 11025; + case 12: return 12000; + case 16: return 16000; + case 22: return 22050; + case 24: return 24000; + case 32: return 32000; + case 44: return 44100; + case 48: return 48000; + default: fprintf(stderr,"Illegal resample frequency: %.3f kHz\n", freq ); + return 0; + } +} + +/* Ugly, NOT final version */ + +#define T_IF(str) if ( 0 == local_strcasecmp (token,str) ) { +#define T_ELIF(str) } else if ( 0 == local_strcasecmp (token,str) ) { +#define T_ELIF_INTERNAL(str) } else if (INTERNAL_OPTS && (0 == local_strcasecmp (token,str)) ) { +#define T_ELIF2(str1,str2) } else if ( 0 == local_strcasecmp (token,str1) || 0 == local_strcasecmp (token,str2) ) { +#define T_ELSE } else { +#define T_END } + +int parse_args ( lame_global_flags* gfp, int argc, char** argv, +char* const inPath, char* const outPath, char **nogap_inPath, int *num_nogap) +{ + int err; + int input_file=0; /* set to 1 if we parse an input file name */ + int i; + int autoconvert = 0; + double val; + int nogap=0; + int nogap_tags=0; /* set to 1 to use VBR tags in NOGAP mode */ + const char* ProgramName = argv[0]; + int count_nogap=0; + int noreplaygain=0; /* is RG explicitly disabled by the user */ + + inPath [0] = '\0'; + outPath[0] = '\0'; + /* turn on display options. user settings may turn them off below */ + silent = 0; + ignore_tag_errors = 0; + brhist = 1; + enc_padding=-1; + enc_delay=-1; + mp3_delay = 0; + mp3_delay_set=0; + print_clipping_info = 0; + disable_wav_header=0; + id3tag_init (gfp); + + /* process args */ + for ( i = 0, err = 0; ++i < argc && !err; ) { + char c; + char* token; + char* arg; + char* nextArg; + int argUsed; + + token = argv[i]; + if ( *token++ == '-' ) { + argUsed = 0; + nextArg = i+1 < argc ? argv[i+1] : ""; + + if (! *token) { /* The user wants to use stdin and/or stdout. */ + input_file = 1; + if (inPath [0] == '\0') + strncpy (inPath, argv[i], PATH_MAX + 1); + else + if (outPath[0] == '\0') + strncpy (outPath, argv[i], PATH_MAX + 1); + } + if (*token == '-') { /* GNU style */ + token++; + + T_IF ("resample") + argUsed = 1; + (void) lame_set_out_samplerate( gfp, + resample_rate ( atof (nextArg) ) ); + + T_ELIF ("vbr-old") + lame_set_VBR(gfp,vbr_rh); + + T_ELIF ("vbr-new") + lame_set_VBR(gfp,vbr_mtrh); + + T_ELIF ("vbr-mtrh") + lame_set_VBR(gfp,vbr_mtrh); + + T_ELIF ("cbr") + lame_set_VBR(gfp,vbr_off); + + T_ELIF ("abr") + argUsed=1; + lame_set_VBR(gfp,vbr_abr); + lame_set_VBR_mean_bitrate_kbps(gfp,atoi(nextArg)); + /* values larger than 8000 are bps (like Fraunhofer), so it's strange to get 320000 bps MP3 when specifying 8000 bps MP3 */ + if ( lame_get_VBR_mean_bitrate_kbps(gfp) >= 8000 ) + lame_set_VBR_mean_bitrate_kbps(gfp,( lame_get_VBR_mean_bitrate_kbps(gfp) + 500 ) / 1000); + + lame_set_VBR_mean_bitrate_kbps(gfp,Min(lame_get_VBR_mean_bitrate_kbps(gfp), 320)); + lame_set_VBR_mean_bitrate_kbps(gfp,Max(lame_get_VBR_mean_bitrate_kbps(gfp),8)); + + T_ELIF ("r3mix") + lame_set_preset(gfp, R3MIX); + + T_ELIF ("bitwidth") + argUsed=1; + in_bitwidth=atoi(nextArg); + + T_ELIF ("signed") + in_signed=1; + + T_ELIF ("unsigned") + in_signed=0; + + T_ELIF ("little-endian") + in_endian=order_littleEndian; + + T_ELIF ("big-endian") + in_endian=order_bigEndian; + + T_ELIF ("mp1input") + input_format=sf_mp1; + + T_ELIF ("mp2input") + input_format=sf_mp2; + + T_ELIF ("mp3input") + input_format=sf_mp3; + + T_ELIF ("ogginput") + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + return -1; + + T_ELIF ("phone") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --phone is deprecated, use --preset phone instead!"); + + T_ELIF ("voice") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --voice is deprecated, use --preset voice instead!"); + + T_ELIF ("radio") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --radio is deprecated, use --preset radio instead!"); + + T_ELIF ("tape") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --tape is deprecated, use --preset tape instead!"); + + T_ELIF ("cd") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --cd is deprecated, use --preset cd instead!"); + + T_ELIF ("studio") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --studio is deprecated, use --preset studio instead!"); + + T_ELIF ("noshort") + (void) lame_set_no_short_blocks( gfp, 1 ); + + T_ELIF ("short") + (void) lame_set_no_short_blocks( gfp, 0 ); + + T_ELIF ("allshort") + (void) lame_set_force_short_blocks( gfp, 1 ); + + + T_ELIF ("decode") + (void) lame_set_decode_only( gfp, 1 ); + + T_ELIF ("decode-mp3delay") + mp3_delay = atoi( nextArg ); + mp3_delay_set=1; + argUsed=1; + + T_ELIF ("nores") + lame_set_disable_reservoir(gfp,1); + + T_ELIF ("strictly-enforce-ISO") + lame_set_strict_ISO(gfp,1); + + T_ELIF ("scale") + argUsed=1; + (void) lame_set_scale( gfp, atof(nextArg) ); + + T_ELIF ("scale-l") + argUsed=1; + (void) lame_set_scale_left( gfp, atof(nextArg) ); + + T_ELIF ("scale-r") + argUsed=1; + (void) lame_set_scale_right( gfp, atof(nextArg) ); + + T_ELIF ("noasm") + argUsed=1; + if (!strcmp(nextArg, "mmx")) + (void) lame_set_asm_optimizations( gfp, MMX, 0 ); + if (!strcmp(nextArg, "3dnow")) + (void) lame_set_asm_optimizations( gfp, AMD_3DNOW, 0 ); + if (!strcmp(nextArg, "sse")) + (void) lame_set_asm_optimizations( gfp, SSE, 0 ); + + T_ELIF ("freeformat") + lame_set_free_format(gfp,1); + + T_ELIF ("replaygain-fast") + lame_set_findReplayGain(gfp,1); + +#ifdef DECODE_ON_THE_FLY + T_ELIF ("replaygain-accurate") + lame_set_decode_on_the_fly(gfp,1); + lame_set_findReplayGain(gfp,1); +#endif + + T_ELIF ("noreplaygain") + noreplaygain = 1; + lame_set_findReplayGain(gfp,0); + + +#ifdef DECODE_ON_THE_FLY + T_ELIF ("clipdetect") + print_clipping_info = 1; + lame_set_decode_on_the_fly(gfp,1); +#endif + + T_ELIF ("nohist") + brhist = 0; + +#if defined(__OS2__) || defined(WIN32) + T_ELIF ("priority") + char *endptr; + int priority = (int)strtol(nextArg, &endptr, 10); + if (endptr != nextArg) { + argUsed=1; + } +# if defined(__OS2__) + setOS2Priority(gfp, priority); +# else /* WIN32 */ + setWin32Priority(gfp, priority); +# endif +#endif + + /* options for ID3 tag */ + T_ELIF ("tt") + argUsed=1; + id3tag_set_title(gfp, nextArg); + + T_ELIF ("ta") + argUsed=1; + id3tag_set_artist(gfp, nextArg); + + T_ELIF ("tl") + argUsed=1; + id3tag_set_album(gfp, nextArg); + + T_ELIF ("ty") + argUsed=1; + id3tag_set_year(gfp, nextArg); + + T_ELIF ("tc") + argUsed=1; + id3tag_set_comment(gfp, nextArg); + + T_ELIF ("tn") + argUsed=1; + if( 0 == ignore_tag_errors ) { + if (nextArg && *nextArg) { + int num = atoi(nextArg); + + if ( num < 0 || num > 255 ) { + if( silent < 10 ) { + fprintf(stderr, "The track number has to be between 0 and 255.\n"); + } + return -1; + } + } + } + id3tag_set_track(gfp, nextArg); + + T_ELIF ("tg") + argUsed=1; + if ( id3tag_set_genre(gfp, nextArg) ) { + if ( ignore_tag_errors ) { + if( silent < 10 ) { + fprintf(stderr, "Unknown genre: '%s'. Setting to 'Other'\n", nextArg); + } + id3tag_set_genre(gfp, "other"); + } else { + fprintf(stderr, "Unknown genre: '%s'. Specify genre name or number\n", nextArg); + return -1; + } + } + + T_ELIF ("add-id3v2") + id3tag_add_v2(gfp); + + T_ELIF ("id3v1-only") + id3tag_v1_only(gfp); + + T_ELIF ("id3v2-only") + id3tag_v2_only(gfp); + + T_ELIF ("space-id3v1") + id3tag_space_v1(gfp); + + T_ELIF ("pad-id3v2") + id3tag_pad_v2(gfp); + + T_ELIF ("genre-list") + id3tag_genre_list(genre_list_handler, NULL); + return -2; + + T_ELIF ("lowpass") + val = atof( nextArg ); + argUsed = 1; + /* useful are 0.001 kHz...50 kHz, 50 Hz...50000 Hz */ + if ( val < 0.001 || val > 50000. ) { + fprintf(stderr,"Must specify lowpass with --lowpass freq, freq >= 0.001 kHz\n"); + return -1; + } + lame_set_lowpassfreq(gfp,(int)(val * (val < 50. ? 1.e3 : 1.e0 ) + 0.5)); + + T_ELIF ("lowpass-width") + argUsed=1; + val = 1000.0 * atof( nextArg ) + 0.5; + if (val < 0) { + fprintf(stderr,"Must specify lowpass width with --lowpass-width freq, freq >= 0 kHz\n"); + return -1; + } + lame_set_lowpasswidth(gfp,(int)val); + + T_ELIF ("highpass") + val = atof( nextArg ); + argUsed=1; + /* useful are 0.001 kHz...16 kHz, 16 Hz...50000 Hz */ + if ( val < 0.001 || val > 50000. ) { + fprintf(stderr,"Must specify highpass with --highpass freq, freq >= 0.001 kHz\n"); + return -1; + } + lame_set_highpassfreq(gfp, (int)(val * (val < 16. ? 1.e3 : 1.e0 ) + 0.5)); + + T_ELIF ("highpass-width") + argUsed=1; + val = 1000.0 * atof( nextArg ) + 0.5; + if (val < 0) { + fprintf(stderr,"Must specify highpass width with --highpass-width freq, freq >= 0 kHz\n"); + return -1; + } + lame_set_highpasswidth(gfp,(int)val); + + T_ELIF ("comp") + argUsed=1; + val = atof( nextArg ); + if (val < 1.0 ) { + fprintf(stderr,"Must specify compression ratio >= 1.0\n"); + return -1; + } + lame_set_compression_ratio(gfp,val); + + T_ELIF ("notemp") + (void) lame_set_useTemporal( gfp, 0 ); + + T_ELIF ("interch") + argUsed=1; + (void) lame_set_interChRatio( gfp, atof(nextArg ) ); + + T_ELIF ("temporal-masking") + argUsed = 1; + (void) lame_set_useTemporal( gfp, atoi(nextArg)?1:0 ); + + T_ELIF ("nspsytune") + lame_set_psy_model(gfp, PSY_NSPSYTUNE); + + T_ELIF ("nssafejoint") + lame_set_exp_nspsytune(gfp,lame_get_exp_nspsytune(gfp) | 2); + + T_ELIF ("nsmsfix") + argUsed=1; + (void) lame_set_msfix( gfp, atof(nextArg) ); + + T_ELIF ("ns-bass") + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 2)); + } + + T_ELIF ("ns-alto") + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 8)); + } + + T_ELIF ("ns-treble") + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 14)); + } + + T_ELIF ("ns-sfb21") + /* to be compatible with Naoki's original code, + * ns-sfb21 specifies how to change ns-treble for sfb21 */ + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 20)); + } + + T_ELIF ("nspsytune2") + { + FILE *fp = fopen( nextArg, "r" ); + if (fp == NULL) { + fprintf(stderr,"nspsytune2 : error opening %s\n",nextArg); + abort(); + } + lame_set_exp_nspsytune2_pointer(gfp,0,fp); + } + /* nspsytune2 implies nspsytune */ + argUsed=1; + lame_set_psy_model(gfp, PSY_NSPSYTUNE); + lame_set_experimentalZ(gfp,1); + lame_set_experimentalX(gfp,1); + + /* some more GNU-ish options could be added + * brief => few messages on screen (name, status report) + * o/output file => specifies output filename + * O => stdout + * i/input file => specifies input filename + * I => stdin + */ + T_ELIF2 ("quiet", "silent") + silent = 10; /* on a scale from 1 to 10 be very silent */ + + T_ELIF ("brief") + silent = -5; /* print few info on screen */ + + T_ELIF ("verbose") + silent = -10; /* print a lot on screen */ + T_ELIF ("ignore-tag-errors") + ignore_tag_errors = 1; + + T_ELIF2 ("version", "license") + print_license ( stdout ); + return -2; + + T_ELIF2 ("help", "usage") + short_help ( gfp, stdout, ProgramName ); + return -2; + + T_ELIF ("longhelp") + long_help ( gfp, stdout, ProgramName, 0 /* lessmode=NO */ ); + return -2; + + T_ELIF ("?") +#ifdef __unix__ + FILE* fp = popen ("less -Mqc", "w"); + long_help ( gfp, fp, ProgramName, 0 /* lessmode=NO */ ); + pclose (fp); +#else + long_help ( gfp, stdout, ProgramName, 1 /* lessmode=YES */ ); +#endif + return -2; + + T_ELIF2 ("preset", "alt-preset") + argUsed = 1; + { + int fast = 0, cbr = 0; + + while ((strcmp(nextArg, "fast") == 0) || + (strcmp(nextArg, "cbr") == 0)) { + + if ((strcmp(nextArg, "fast") == 0) && (fast < 1)) + fast = 1; + if ((strcmp(nextArg, "cbr") == 0) && (cbr < 1)) + cbr = 1; + + argUsed++; + nextArg = i+argUsed < argc ? argv[i+argUsed] : ""; + } + + if (presets_set ( gfp, fast, cbr, nextArg, ProgramName ) < 0) + return -1; + } + + T_ELIF ("disptime") + argUsed = 1; + update_interval = atof (nextArg); + + T_ELIF ("nogaptags") + nogap_tags=1; + + T_ELIF ("nogapout") + strcpy(outPath, nextArg); + argUsed = 1; + + T_ELIF ("nogap") + nogap=1; + + + T_ELIF_INTERNAL ("tune") /*without helptext*/ + argUsed=1; + {extern void lame_set_tune(lame_t, float); + lame_set_tune(gfp,atof(nextArg));} + + T_ELIF_INTERNAL ("psymodel") /*without helptext*/ /* 1 gpsycho, 2 nspsytune */ + argUsed=1; + lame_set_psy_model(gfp,atoi(nextArg)); + + T_ELIF_INTERNAL ("ms-sparsing") /*without helptext*/ + argUsed=1; + lame_set_ms_sparsing(gfp,atoi(nextArg)); + + T_ELIF_INTERNAL ("ms-sparse-low") /*without helptext*/ + argUsed=1; + lame_set_ms_sparse_low(gfp,atof(nextArg)); + + T_ELIF_INTERNAL ("ms-sparse-high") /*without helptext*/ + argUsed=1; + lame_set_ms_sparse_high(gfp,atof(nextArg)); + + T_ELIF_INTERNAL ("shortthreshold") + { + float x,y; + int n = sscanf(nextArg, "%f,%f", &x, &y); + if (n == 1) { + y = x; + } + argUsed=1; + (void) lame_set_short_threshold( gfp, x, y); + } + + T_ELIF_INTERNAL ("maskingadjust") /*without helptext*/ + argUsed=1; + (void) lame_set_maskingadjust( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("maskingadjustshort") /*without helptext*/ + argUsed=1; + (void) lame_set_maskingadjust_short( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("athcurve") /*without helptext*/ + argUsed=1; + (void) lame_set_ATHcurve( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("no-preset-tune") /*without helptext*/ + (void) lame_set_preset_notune( gfp, 0 ); + + T_ELIF_INTERNAL ("substep") + argUsed=1; + (void) lame_set_substep( gfp, atoi(nextArg) ); + + T_ELIF_INTERNAL ("sbgain") /*without helptext*/ + argUsed=1; + (void) lame_set_subblock_gain( gfp, atoi(nextArg) ); + + T_ELIF_INTERNAL ("sfscale") /*without helptext*/ + (void) lame_set_sfscale( gfp, 1 ); + + T_ELIF_INTERNAL ("noath") + (void) lame_set_noATH( gfp, 1 ); + + T_ELIF_INTERNAL ("athonly") + (void) lame_set_ATHonly( gfp, 1 ); + + T_ELIF_INTERNAL ("athshort") + (void) lame_set_ATHshort( gfp, 1 ); + + T_ELIF_INTERNAL ("athlower") + argUsed=1; + (void) lame_set_ATHlower( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("athtype") + argUsed=1; + (void) lame_set_ATHtype( gfp, atoi( nextArg ) ); + + T_ELIF_INTERNAL ("athaa-type") /* switch for developing, no DOCU */ + argUsed=1; /* once was 1:Gaby, 2:Robert, 3:Jon, else:off */ + lame_set_athaa_type( gfp, atoi(nextArg) );/* now: 0:off else:Jon */ + + T_ELIF ("athaa-sensitivity") + argUsed=1; + lame_set_athaa_sensitivity( gfp, atof(nextArg) ); + + T_ELIF_INTERNAL ("cwlimit") + val = atof (nextArg); + argUsed=1; + /* useful are 0.001 kHz...50 kHz, 50 Hz...50000 Hz */ + { + int my_cwlimit = (int)(val * ( val <= 50. ? 1.e3 : 1.e0 )); + lame_set_cwlimit( gfp, my_cwlimit ); + if ( my_cwlimit <= 0 ) { + fprintf( stderr, + "Must specify cwlimit with --cwlimit freq, freq >= 0.001 kHz\n" ); + return -1; + } + } + + + T_ELSE + fprintf(stderr,"%s: unrec option --%s\n", ProgramName, token); + + T_END + + i += argUsed; + + } else { + while ( (c = *token++) != '\0' ) { + arg = *token ? token : nextArg; + switch (c) { + case 'm': + argUsed = 1; + + switch ( *arg ) { + case 's': (void) lame_set_mode( gfp, STEREO ); + break; + case 'd': (void) lame_set_mode( gfp, DUAL_CHANNEL ); + break; + case 'f': lame_set_force_ms(gfp,1); + /* FALLTHROUGH */ + case 'j': (void) lame_set_mode( gfp, JOINT_STEREO ); + break; + case 'm': (void) lame_set_mode( gfp, MONO ); + break; + case 'a': (void) lame_set_mode( gfp, JOINT_STEREO ); + break; + default : fprintf(stderr,"%s: -m mode must be s/d/j/f/m not %s\n", ProgramName, arg); + err = 1; + break; + } + break; + + case 'V': argUsed = 1; + /* to change VBR default look in lame.h */ + if (lame_get_VBR(gfp) == vbr_off) lame_set_VBR(gfp,vbr_default); + lame_set_VBR_q(gfp,atoi(arg)); + if (lame_get_VBR_q(gfp) <0) lame_set_VBR_q(gfp,0); + if (lame_get_VBR_q(gfp) >9) lame_set_VBR_q(gfp,9); + break; + case 'v': + /* to change VBR default look in lame.h */ + if (lame_get_VBR(gfp) == vbr_off) + lame_set_VBR(gfp,vbr_default); + break; + + case 'q': argUsed = 1; + { + int tmp_quality = atoi( arg ); + + /* XXX should we move this into lame_set_quality()? */ + if( tmp_quality < 0 ) tmp_quality = 0; + if( tmp_quality > 9 ) tmp_quality = 9; + + (void) lame_set_quality( gfp, tmp_quality ); + } + break; + case 'f': + (void) lame_set_quality( gfp, 7 ); + break; + case 'h': + (void) lame_set_quality( gfp, 2 ); + break; + + case 's': + argUsed = 1; + val = atof( arg ); + (void) lame_set_in_samplerate( gfp, + (int)(val * ( val <= 192 ? 1.e3 : 1.e0 ) + 0.5) ); + break; + case 'b': + argUsed = 1; + lame_set_brate(gfp,atoi(arg)); + lame_set_VBR_min_bitrate_kbps(gfp,lame_get_brate(gfp)); + break; + case 'B': + argUsed = 1; + lame_set_VBR_max_bitrate_kbps(gfp,atoi(arg)); + break; + case 'F': + lame_set_VBR_hard_min(gfp,1); + break; + case 't': /* dont write VBR tag */ + (void) lame_set_bWriteVbrTag( gfp, 0 ); + disable_wav_header=1; + break; + case 'T': /* do write VBR tag */ + (void) lame_set_bWriteVbrTag( gfp, 1 ); + nogap_tags=1; + disable_wav_header=0; + break; + case 'r': /* force raw pcm input file */ +#if defined(LIBSNDFILE) + fprintf(stderr,"WARNING: libsndfile may ignore -r and perform fseek's on the input.\n" + "Compile without libsndfile if this is a problem.\n"); +#endif + input_format=sf_raw; + break; + case 'x': /* force byte swapping */ + swapbytes=1; + break; + case 'p': /* (jo) error_protection: add crc16 information to stream */ + lame_set_error_protection(gfp,1); + break; + case 'a': /* autoconvert input file from stereo to mono - for mono mp3 encoding */ + autoconvert=1; + (void) lame_set_mode( gfp, MONO ); + break; + case 'k': + lame_set_lowpassfreq(gfp,-1); + lame_set_highpassfreq(gfp,-1); + break; + case 'd': + fprintf(stderr,"WARNING: -d is obsolete.\n"); + /*(void) lame_set_allow_diff_short( gfp, 1 );*/ + break; + case 'S': + silent = 10; + break; + case 'X': + { + int x, y; + int n = sscanf(arg, "%d,%d", &x, &y); + if (n == 1) { + y = x; + } + argUsed = 1; + lame_set_quant_comp(gfp, x); + lame_set_quant_comp_short(gfp, y); + } + break; + case 'Y': + lame_set_experimentalY(gfp,1); + break; + case 'Z': + { + int n = 1; + argUsed = sscanf(arg, "%d", &n); + lame_set_experimentalZ(gfp, n); + break; + } + case 'e': + argUsed = 1; + + switch (*arg) { + case 'n': lame_set_emphasis( gfp, 0 ); break; + case '5': lame_set_emphasis( gfp, 1 ); break; + case 'c': lame_set_emphasis( gfp, 3 ); break; + default : fprintf(stderr,"%s: -e emp must be n/5/c not %s\n", ProgramName, arg ); + err = 1; + break; + } + break; + case 'c': + lame_set_copyright(gfp,1); + break; + case 'o': + lame_set_original(gfp,0); + break; + + case '?': + long_help ( gfp, stderr, ProgramName, 0 /* LESSMODE=NO */); + return -1; + + default: + fprintf(stderr,"%s: unrec option %c\n", ProgramName, c); + err = 1; + break; + } + if (argUsed) { + if(arg == token) token = ""; /* no more from token */ + else ++i; /* skip arg we used */ + arg = ""; argUsed = 0; + } + } + } + } else { + if (nogap) { + if ((num_nogap != NULL) && (count_nogap < *num_nogap)) { + strncpy(nogap_inPath[count_nogap++], argv[i], PATH_MAX + 1); + input_file=1; + } else { + /* sorry, calling program did not allocate enough space */ + fprintf(stderr,"Error: 'nogap option'. Calling program does not allow nogap option, or\nyou have exceeded maximum number of input files for the nogap option\n"); + *num_nogap=-1; + return -1; + } + }else{ + /* normal options: inputfile [outputfile], and + either one can be a '-' for stdin/stdout */ + if (inPath [0] == '\0') { + strncpy(inPath , argv[i], PATH_MAX + 1); + input_file=1; + } else { + if (outPath[0] == '\0') + strncpy(outPath, argv[i], PATH_MAX + 1); + else { + fprintf(stderr,"%s: excess arg %s\n", ProgramName, argv[i]); + err = 1; + } + } + } + } + } /* loop over args */ + + if ( err || !input_file ) { + usage ( stderr, ProgramName ); + return -1; + } + + if ( inPath[0] == '-' ) + silent = (silent <= 1 ? 1 : silent); +#ifdef WIN32 + else + dosToLongFileName( inPath ); +#endif + + if ( outPath[0] == '\0' && count_nogap == 0) { + if ( inPath[0] == '-' ) { + /* if input is stdin, default output is stdout */ + strcpy(outPath,"-"); + } else { + strncpy(outPath, inPath, PATH_MAX + 1 - 4); + if ( lame_get_decode_only( gfp ) ) { + strncat (outPath, ".wav", 4 ); + } else { + strncat (outPath, ".mp3", 4 ); + } + } + } + + /* RG is enabled by default */ + if (!noreplaygain) + lame_set_findReplayGain(gfp,1); + + /* disable VBR tags with nogap unless the VBR tags are forced */ + if (nogap && lame_get_bWriteVbrTag(gfp) && nogap_tags==0) { + fprintf(stderr,"Note: Disabling VBR Xing/Info tag since it interferes with --nogap\n"); + lame_set_bWriteVbrTag( gfp, 0 ); + } + + /* some file options not allowed with stdout */ + if (outPath[0]=='-') { + (void) lame_set_bWriteVbrTag( gfp, 0 ); /* turn off VBR tag */ + } + + /* if user did not explicitly specify input is mp3, check file name */ + if (input_format == sf_unknown) + input_format = filename_to_type ( inPath ); + +#if !(defined HAVE_MPGLIB || defined AMIGA_MPEGA) + if ( input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) { + fprintf(stderr,"Error: libmp3lame not compiled with mpg123 *decoding* support \n"); + return -1; + } +#endif + + + if (( input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) && + print_clipping_info ){ + + fprintf(stderr, "\nError: input cannot be MPEG when --clipdetect is used\n" + "\n--clipdetect requires decoding of MPEG *output* on the fly which\n" + "cannot be performed simultaneously with decoding MPEG *input*.\n" + "\nUse a plain .wav file as input with --clipdetect.\n"); + + return -1; + } + + + if (( input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) && + lame_get_decode_on_the_fly( gfp ) ){ + + fprintf(stderr, "\nError: input cannot be MPEG when --replaygain-accurate is used\n" + "\n--replaygain-accurate requires decoding of MPEG *output* on the fly which\n" + "cannot be performed simultaneously with decoding MPEG *input*.\n" + "\nUse a plain .wav file as input with --replaygain-accurate.\n"); + + return -1; + } + + + if ( input_format == sf_ogg ) { + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + return -1; + } + /* default guess for number of channels */ + if (autoconvert) + (void) lame_set_num_channels( gfp, 2 ); + else if( MONO == lame_get_mode( gfp ) ) + (void) lame_set_num_channels( gfp, 1 ); + else + (void) lame_set_num_channels( gfp, 2 ); + + if ( lame_get_free_format(gfp) ) { + if ( lame_get_brate(gfp) < 8 || lame_get_brate(gfp) > 640 ) { + fprintf(stderr,"For free format, specify a bitrate between 8 and 640 kbps\n"); + fprintf(stderr,"with the -b <bitrate> option\n"); + return -1; + } + } + if (num_nogap!=NULL) *num_nogap=count_nogap; + return 0; +} + +/* end of parse.c */ + + diff --git a/lame-3.97/frontend/.svn/text-base/parse.h.svn-base b/lame-3.97/frontend/.svn/text-base/parse.h.svn-base new file mode 100644 index 0000000..1622843 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/parse.h.svn-base @@ -0,0 +1,10 @@ + +int usage ( FILE* const fp, const char* ProgramName ); +int short_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName ); +int long_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName, int lessmode ); +int display_bitrates ( FILE* const fp ); + +int parse_args(lame_global_flags* gfp, int argc, char** argv, char * const inPath, char * const outPath, char * nogap_inPath[], int *max_nogap); + +/* end of parse.h */ + diff --git a/lame-3.97/frontend/.svn/text-base/portableio.c.svn-base b/lame-3.97/frontend/.svn/text-base/portableio.c.svn-base new file mode 100644 index 0000000..d24e54f --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/portableio.c.svn-base @@ -0,0 +1,477 @@ +/* Copyright (C) 1988-1991 Apple Computer, Inc. + * All Rights Reserved. + * + * Warranty Information + * Even though Apple has reviewed this software, Apple makes no warranty + * or representation, either express or implied, with respect to this + * software, its quality, accuracy, merchantability, or fitness for a + * particular purpose. As a result, this software is provided "as is," + * and you, its user, are assuming the entire risk as to its quality + * and accuracy. + * + * This code may be used and freely distributed as long as it includes + * this copyright notice and the warranty information. + * + * + * Motorola processors (Macintosh, Sun, Sparc, MIPS, etc) + * pack bytes from high to low (they are big-endian). + * Use the HighLow routines to match the native format + * of these machines. + * + * Intel-like machines (PCs, Sequent) + * pack bytes from low to high (the are little-endian). + * Use the LowHigh routines to match the native format + * of these machines. + * + * These routines have been tested on the following machines: + * Apple Macintosh, MPW 3.1 C compiler + * Apple Macintosh, THINK C compiler + * Silicon Graphics IRIS, MIPS compiler + * Cray X/MP and Y/MP + * Digital Equipment VAX + * + * + * Implemented by Malcolm Slaney and Ken Turkowski. + * + * Malcolm Slaney contributions during 1988-1990 include big- and little- + * endian file I/O, conversion to and from Motorola's extended 80-bit + * floating-point format, and conversions to and from IEEE single- + * precision floating-point format. + * + * In 1991, Ken Turkowski implemented the conversions to and from + * IEEE double-precision format, added more precision to the extended + * conversions, and accommodated conversions involving +/- infinity, + * NaN's, and denormalized numbers. + * + * $Id: portableio.c,v 1.11 2001/01/07 23:47:38 markt Exp $ + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdio.h> +#if defined(__riscos__) && defined(FPA10) +#include "ymath.h" +#else +#include <math.h> +#endif +#include "portableio.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/**************************************************************** + * Big/little-endian independent I/O routines. + ****************************************************************/ + +/* + * It is a hoax to call this code portable-IO: + * + * - It doesn't work on machines with CHAR_BIT != 8 + * - it also don't test this error condition + * - otherwise it tries to handle CHAR_BIT != 8 by things like + * masking 'putc(i&0xff,fp)' + * - It doesn't handle EOF in any way + * - it only works with ints with 32 or more bits + * - It is a collection of initial buggy code with patching the known errors + * instead of CORRECTING them! + * For that see comments on the old Read16BitsHighLow() + */ + +#ifdef KLEMM_36 + +signed int ReadByte ( FILE* fp ) +{ + int result = getc (fp); + return result == EOF ? 0 : (signed char) (result & 0xFF); +} + +unsigned int ReadByteUnsigned ( FILE* fp ) +{ + int result = getc (fp); + return result == EOF ? 0 : (unsigned char) (result & 0xFF); +} + +#else + +int +ReadByte(FILE *fp) +{ + int result; + + result = getc(fp) & 0xff; + if (result & 0x80) + result = result - 0x100; + return result; +} + +#endif + +#ifdef KLEMM_36 + +int Read16BitsLowHigh ( FILE* fp ) +{ + int low = ReadByteUnsigned (fp); + int high = ReadByte (fp); + + return (high << 8) | low; +} + +#else +int +Read16BitsLowHigh(FILE *fp) +{ + int first, second, result; + + first = 0xff & getc(fp); + second = 0xff & getc(fp); + + result = (second << 8) + first; +#ifndef THINK_C42 + if (result & 0x8000) + result = result - 0x10000; +#endif /* THINK_C */ + return(result); +} +#endif + + +#ifdef KLEMM_36 + +int Read16BitsHighLow ( FILE* fp ) +{ + int high = ReadByte (fp); + int low = ReadByteUnsigned (fp); + + return (high << 8) | low; +} + +#else +int +Read16BitsHighLow(FILE *fp) +{ + int first, second, result; + + /* Reads the High bits, the value is -128...127 + * (which gave after upscaling the -32768...+32512 + * Why this value is not converted to signed char? + */ + first = 0xff & getc(fp); + /* Reads the Lows bits, the value is 0...255 + * This is correct. This value gives an additional offset + * for the High bits + */ + second = 0xff & getc(fp); + + /* This is right */ + result = (first << 8) + second; + + /* Now we are starting to correct the nasty bug of the first instruction + * The value of the high bits is wrong. Always. So we must correct this + * value. This seems to be not necessary for THINK_C42. This is either + * a 16 bit compiler with 16 bit ints (where this bug is hidden and 0x10000 + * is not in the scope of an int) or it is not a C compiler, but only a + * C like compiler. In the first case the '#ifndef THINK_C42' is wrong + * because it's not a property of the THINK_C42 compiler, but of all compilers + * with sizeof(int)*CHAR_BIT < 18. + * Another nasty thing is that the rest of the code doesn't work for 16 bit ints, + * so this patch don't solve the 16 bit problem. + */ +#ifndef THINK_C42 + if (result & 0x8000) + result = result - 0x10000; +#endif /* THINK_C */ + return(result); +} +#endif + +void +Write8Bits(FILE *fp, int i) +{ + putc(i&0xff,fp); +} + + +void +Write16BitsLowHigh(FILE *fp, int i) +{ + putc(i&0xff,fp); + putc((i>>8)&0xff,fp); +} + + +void +Write16BitsHighLow(FILE *fp, int i) +{ + putc((i>>8)&0xff,fp); + putc(i&0xff,fp); +} + +#ifdef KLEMM_36 + +int Read24BitsHighLow ( FILE* fp ) +{ + int high = ReadByte (fp); + int med = ReadByteUnsigned (fp); + int low = ReadByteUnsigned (fp); + + return (high << 16) | (med << 8) | low; +} + +#else +int +Read24BitsHighLow(FILE *fp) +{ + int first, second, third; + int result; + + first = 0xff & getc(fp); + second = 0xff & getc(fp); + third = 0xff & getc(fp); + + result = (first << 16) + (second << 8) + third; + if (result & 0x800000) + result = result - 0x1000000; + return(result); +} +#endif + +#define Read32BitsLowHigh(f) Read32Bits(f) + +#ifdef KLEMM_36 + +int Read32Bits ( FILE* fp ) +{ + int low = ReadByteUnsigned (fp); + int medl = ReadByteUnsigned (fp); + int medh = ReadByteUnsigned (fp); + int high = ReadByte (fp); + + return (high << 24) | (medh << 16) | (medl << 8) | low; +} + +#else + +int +Read32Bits(FILE *fp) +{ + int first, second, result; + + first = 0xffff & Read16BitsLowHigh(fp); + second = 0xffff & Read16BitsLowHigh(fp); + + result = (second << 16) + first; +#ifdef CRAY + if (result & 0x80000000) + result = result - 0x100000000; +#endif /* CRAY */ + return(result); +} +#endif + + +#ifdef KLEMM_36 + +int Read32BitsHighLow ( FILE* fp ) +{ + int high = ReadByte (fp); + int medh = ReadByteUnsigned (fp); + int medl = ReadByteUnsigned (fp); + int low = ReadByteUnsigned (fp); + + return (high << 24) | (medh << 16) | (medl << 8) | low; +} + +#else + +int +Read32BitsHighLow(FILE *fp) +{ + int first, second, result; + + first = 0xffff & Read16BitsHighLow(fp); + second = 0xffff & Read16BitsHighLow(fp); + + result = (first << 16) + second; +#ifdef CRAY + if (result & 0x80000000) + result = result - 0x100000000; +#endif + return(result); +} + +#endif + +void +Write32Bits(FILE *fp, int i) +{ + Write16BitsLowHigh(fp,(int)(i&0xffffL)); + Write16BitsLowHigh(fp,(int)((i>>16)&0xffffL)); +} + + +void +Write32BitsLowHigh(FILE *fp, int i) +{ + Write16BitsLowHigh(fp,(int)(i&0xffffL)); + Write16BitsLowHigh(fp,(int)((i>>16)&0xffffL)); +} + + +void +Write32BitsHighLow(FILE *fp, int i) +{ + Write16BitsHighLow(fp,(int)((i>>16)&0xffffL)); + Write16BitsHighLow(fp,(int)(i&0xffffL)); +} + +#ifdef KLEMM_36 +void ReadBytes (FILE *fp, char *p, int n) +{ + memset ( p, 0, n ); + fread ( p, 1, n, fp ); +} +#else +void ReadBytes(FILE *fp, char *p, int n) +{ + /* What about fread? */ + + while (!feof(fp) & (n-- > 0)) + *p++ = getc(fp); +} +#endif + +void ReadBytesSwapped(FILE *fp, char *p, int n) +{ + register char *q = p; + + /* What about fread? */ + + while (!feof(fp) & (n-- > 0)) + *q++ = getc(fp); + + /* If not all bytes could be read, the resorting is different + * from the normal resorting. Is this intention or another bug? + */ + for (q--; p < q; p++, q--){ + n = *p; + *p = *q; + *q = n; + } +} + +#ifdef KLEMM_36 +void WriteBytes(FILE *fp, char *p, int n) +{ + /* return n == */ + fwrite ( p, 1, n, fp ); +} +#else +void WriteBytes(FILE *fp, char *p, int n) +{ + /* No error condition checking */ + while (n-- > 0) + putc(*p++, fp); +} +#endif +#ifdef KLEMM_36 +void WriteBytesSwapped(FILE *fp, char *p, int n) +{ + p += n; + while ( n-- > 0 ) + putc ( *--p, fp ); +} +#else +void WriteBytesSwapped(FILE *fp, char *p, int n) +{ + p += n-1; + while (n-- > 0) + putc(*p--, fp); +} +#endif + + + +/**************************************************************** + * The following two routines make up for deficiencies in many + * compilers to convert properly between unsigned integers and + * floating-point. Some compilers which have this bug are the + * THINK_C compiler for the Macintosh and the C compiler for the + * Silicon Graphics MIPS-based Iris. + ****************************************************************/ + +#ifdef applec /* The Apple C compiler works */ +# define FloatToUnsigned(f) ((unsigned long)(f)) +# define UnsignedToFloat(u) ((double)(u)) +#else /* applec */ +# define FloatToUnsigned(f) ((unsigned long)(((long)((f) - 2147483648.0)) + 2147483647L + 1)) +# define UnsignedToFloat(u) (((double)((long)((u) - 2147483647L - 1))) + 2147483648.0) +#endif /* applec */ +/**************************************************************** + * Extended precision IEEE floating-point conversion routines + ****************************************************************/ + +double +ConvertFromIeeeExtended(char* bytes) +{ + double f; + long expon; + unsigned long hiMant, loMant; + +#ifdef TEST +printf("ConvertFromIEEEExtended(%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx\r", + (long)bytes[0], (long)bytes[1], (long)bytes[2], (long)bytes[3], + (long)bytes[4], (long)bytes[5], (long)bytes[6], + (long)bytes[7], (long)bytes[8], (long)bytes[9]); +#endif + + expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF); + hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24) + | ((unsigned long)(bytes[3] & 0xFF) << 16) + | ((unsigned long)(bytes[4] & 0xFF) << 8) + | ((unsigned long)(bytes[5] & 0xFF)); + loMant = ((unsigned long)(bytes[6] & 0xFF) << 24) + | ((unsigned long)(bytes[7] & 0xFF) << 16) + | ((unsigned long)(bytes[8] & 0xFF) << 8) + | ((unsigned long)(bytes[9] & 0xFF)); + + /* This case should also be called if the number is below the smallest + * positive double variable */ + if (expon == 0 && hiMant == 0 && loMant == 0) { + f = 0; + } + else { + /* This case should also be called if the number is too large to fit into + * a double variable */ + + if (expon == 0x7FFF) { /* Infinity or NaN */ + f = HUGE_VAL; + } + else { + expon -= 16383; + f = ldexp(UnsignedToFloat(hiMant), (int) (expon -= 31)); + f += ldexp(UnsignedToFloat(loMant), (int) (expon -= 32)); + } + } + + if (bytes[0] & 0x80) + return -f; + else + return f; +} + + + + + +double +ReadIeeeExtendedHighLow(FILE *fp) +{ + char bytes [10]; + + ReadBytes ( fp, bytes, 10 ); + return ConvertFromIeeeExtended ( bytes ); +} + diff --git a/lame-3.97/frontend/.svn/text-base/portableio.h.svn-base b/lame-3.97/frontend/.svn/text-base/portableio.h.svn-base new file mode 100644 index 0000000..75afab3 --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/portableio.h.svn-base @@ -0,0 +1,92 @@ +#ifndef LAME_PORTABLEIO_H +#define LAME_PORTABLEIO_H +/* Copyright (C) 1988-1991 Apple Computer, Inc. + * All Rights Reserved. + * + * Warranty Information + * Even though Apple has reviewed this software, Apple makes no warranty + * or representation, either express or implied, with respect to this + * software, its quality, accuracy, merchantability, or fitness for a + * particular purpose. As a result, this software is provided "as is," + * and you, its user, are assuming the entire risk as to its quality + * and accuracy. + * + * This code may be used and freely distributed as long as it includes + * this copyright notice and the warranty information. + * + * Machine-independent I/O routines for 8-, 16-, 24-, and 32-bit integers. + * + * Motorola processors (Macintosh, Sun, Sparc, MIPS, etc) + * pack bytes from high to low (they are big-endian). + * Use the HighLow routines to match the native format + * of these machines. + * + * Intel-like machines (PCs, Sequent) + * pack bytes from low to high (the are little-endian). + * Use the LowHigh routines to match the native format + * of these machines. + * + * These routines have been tested on the following machines: + * Apple Macintosh, MPW 3.1 C compiler + * Apple Macintosh, THINK C compiler + * Silicon Graphics IRIS, MIPS compiler + * Cray X/MP and Y/MP + * Digital Equipment VAX + * + * + * Implemented by Malcolm Slaney and Ken Turkowski. + * + * Malcolm Slaney contributions during 1988-1990 include big- and little- + * endian file I/O, conversion to and from Motorola's extended 80-bit + * floating-point format, and conversions to and from IEEE single- + * precision floating-point format. + * + * In 1991, Ken Turkowski implemented the conversions to and from + * IEEE double-precision format, added more precision to the extended + * conversions, and accommodated conversions involving +/- infinity, + * NaN's, and denormalized numbers. + * + * $Id: portableio.h,v 1.3 2002/12/08 17:02:17 takehiro Exp $ + */ + +#include <stdio.h> + +#ifndef __cplusplus +# define CLINK +#else +# define CLINK "C" +#endif + +extern CLINK int ReadByte(FILE *fp); +extern CLINK int Read16BitsLowHigh(FILE *fp); +extern CLINK int Read16BitsHighLow(FILE *fp); +extern CLINK void Write8Bits(FILE *fp, int i); +extern CLINK void Write16BitsLowHigh(FILE *fp, int i); +extern CLINK void Write16BitsHighLow(FILE *fp, int i); +extern CLINK int Read24BitsHighLow(FILE *fp); +extern CLINK int Read32Bits(FILE *fp); +extern CLINK int Read32BitsHighLow(FILE *fp); +extern CLINK void Write32Bits(FILE *fp, int i); +extern CLINK void Write32BitsLowHigh(FILE *fp, int i); +extern CLINK void Write32BitsHighLow(FILE *fp, int i); +extern CLINK void ReadBytes(FILE *fp, char *p, int n); +extern CLINK void ReadBytesSwapped(FILE *fp, char *p, int n); +extern CLINK void WriteBytes(FILE *fp, char *p, int n); +extern CLINK void WriteBytesSwapped(FILE *fp, char *p, int n); +extern CLINK double ReadIeeeFloatHighLow(FILE *fp); +extern CLINK double ReadIeeeFloatLowHigh(FILE *fp); +extern CLINK double ReadIeeeDoubleHighLow(FILE *fp); +extern CLINK double ReadIeeeDoubleLowHigh(FILE *fp); +extern CLINK double ReadIeeeExtendedHighLow(FILE *fp); +extern CLINK double ReadIeeeExtendedLowHigh(FILE *fp); +extern CLINK void WriteIeeeFloatLowHigh(FILE *fp, double num); +extern CLINK void WriteIeeeFloatHighLow(FILE *fp, double num); +extern CLINK void WriteIeeeDoubleLowHigh(FILE *fp, double num); +extern CLINK void WriteIeeeDoubleHighLow(FILE *fp, double num); +extern CLINK void WriteIeeeExtendedLowHigh(FILE *fp, double num); +extern CLINK void WriteIeeeExtendedHighLow(FILE *fp, double num); + +#define Read32BitsLowHigh(f) Read32Bits(f) +#define WriteString(f,s) fwrite(s,strlen(s),sizeof(char),f) +#endif + diff --git a/lame-3.97/frontend/.svn/text-base/rtp.c.svn-base b/lame-3.97/frontend/.svn/text-base/rtp.c.svn-base new file mode 100644 index 0000000..141f61d --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/rtp.c.svn-base @@ -0,0 +1,415 @@ +/* $Id: rtp.c,v 1.12 2003/11/29 11:16:55 aleidinger Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifndef __GNUC__ +# if HAVE_ALLOCA_H +# include <alloca.h> +# else +# ifdef _AIX +#pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +#include <stdio.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +struct rtpbits { + int sequence:16; /* sequence number: random */ + int pt:7; /* payload type: 14 for MPEG audio */ + int m:1; /* marker: 0 */ + int cc:4; /* number of CSRC identifiers: 0 */ + int x:1; /* number of extension headers: 0 */ + int p:1; /* is there padding appended: 0 */ + int v:2; /* version: 2 */ +}; + +struct rtpheader { /* in network byte order */ + struct rtpbits b; + int timestamp; /* start: random */ + int ssrc; /* random */ + int iAudioHeader; /* =0?! */ +}; + +void +initrtp (struct rtpheader *foo) +{ + foo->b.v = 2; + foo->b.p = 0; + foo->b.x = 0; + foo->b.cc = 0; + foo->b.m = 0; + foo->b.pt = 14; /* MPEG Audio */ +#ifdef FEFE + foo->b.sequence = 42; + foo->timestamp = 0; +#else + foo->b.sequence = rand () & 65535; + foo->timestamp = rand (); +#endif + foo->ssrc = rand (); + foo->iAudioHeader = 0; +} + +int +sendrtp (int fd, struct sockaddr_in *sSockAddr, struct rtpheader *foo, + const void *data, int len) +{ + char *buf = alloca (len + sizeof (struct rtpheader)); + int *cast = (int *) foo; + int *outcast = (int *) buf; + outcast[0] = htonl (cast[0]); + outcast[1] = htonl (cast[1]); + outcast[2] = htonl (cast[2]); + outcast[3] = htonl (cast[3]); + memmove (buf + sizeof (struct rtpheader), data, len); + return sendto (fd, buf, len + sizeof (*foo), 0, + (struct sockaddr *) sSockAddr, sizeof (*sSockAddr)); +/* return write(fd,buf,len+sizeof(*foo))==len+sizeof(*foo); */ +} + +/* create a sender socket. */ +int +makesocket (char *szAddr, unsigned short port, unsigned char TTL, + struct sockaddr_in *sSockAddr) +{ + int iRet, iLoop = 1; + struct sockaddr_in sin; + unsigned char cTtl = TTL; + char cLoop = 0; + unsigned int tempaddr; + + int iSocket = socket (AF_INET, SOCK_DGRAM, 0); + if (iSocket < 0) { + fprintf (stderr, "socket() failed.\n"); + exit (1); + } + + tempaddr = inet_addr (szAddr); + sSockAddr->sin_family = sin.sin_family = AF_INET; + sSockAddr->sin_port = sin.sin_port = htons (port); + sSockAddr->sin_addr.s_addr = tempaddr; + + iRet = setsockopt (iSocket, SOL_SOCKET, SO_REUSEADDR, &iLoop, sizeof (int)); + if (iRet < 0) { + fprintf (stderr, "setsockopt SO_REUSEADDR failed\n"); + exit (1); + } + + if ((ntohl (tempaddr) >> 28) == 0xe) { + /* only set multicast parameters for multicast destination IPs */ + iRet = + setsockopt (iSocket, IPPROTO_IP, IP_MULTICAST_TTL, &cTtl, + sizeof (char)); + if (iRet < 0) { + fprintf (stderr, + "setsockopt IP_MULTICAST_TTL failed. multicast in kernel?\n"); + exit (1); + } + + cLoop = 1; /* !? */ + iRet = setsockopt (iSocket, IPPROTO_IP, IP_MULTICAST_LOOP, + &cLoop, sizeof (char)); + if (iRet < 0) { + fprintf (stderr, + "setsockopt IP_MULTICAST_LOOP failed. multicast in kernel?\n"); + exit (1); + } + } + + return iSocket; +} + + + + +#if 0 +/* */ +/* code contributed by Anonymous source. Supposed to be much better */ +/* then original code, but only seems to run on windows with MSVC. */ +/* and I cannot test it */ +/* */ +#include <stdlib.h> +#include <string.h> +#include <netinet/in.h> +#include <unistd.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <arpa/inet.h> + +struct rtpbits { + int sequence:16; /* sequence number: random */ + int pt:7; /* payload type: 14 for MPEG audio */ + int m:1; /* marker: 0 */ + int cc:4; /* number of CSRC identifiers: 0 */ + int x:1; /* number of extension headers: 0 */ + int p:1; /* is there padding appended: 0 */ + int v:2; /* version: 2 */ +}; + +struct rtpheader { /* in network byte order */ + struct rtpbits b; + int timestamp; /* start: random */ + int ssrc; /* random */ + int iAudioHeader; /* =0?! */ +}; + +void +rtp_initialization +( + struct rtpheader *foo +) +{ + foo->b.v=2; + foo->b.p=0; + foo->b.x=0; + foo->b.cc=0; + foo->b.m=0; + foo->b.pt=14; /* MPEG Audio */ +#ifdef FEFE + foo->b.sequence=42; + foo->timestamp=0; +#else + foo->b.sequence=rand() & 65535; + foo->timestamp=rand(); +#endif + foo->ssrc=rand(); + foo->iAudioHeader=0; +} + +int +rtp_send +( + SOCKET s, + struct rtpheader *foo, + void *data, + int len +) +{ + char *buffer=malloc(len+sizeof(struct rtpheader)); + int *cast=(int *)foo; + int *outcast=(int *)buffer; + int count, size ; + + outcast[0]=htonl(cast[0]); + outcast[1]=htonl(cast[1]); + outcast[2]=htonl(cast[2]); + outcast[3]=htonl(cast[3]); + memmove (buffer+sizeof(struct rtpheader),data,len); +/* return sendto (fd,buf,len+sizeof(*foo),0,(struct sockaddr *)sSockAddr,sizeof(*sSockAddr)); */ +/* return write(fd,buf,len+sizeof(*foo))==len+sizeof(*foo); */ + size = len + sizeof (*foo) ; + count = send (s, buffer, size, 0) ; + free (buffer) ; + + return count != size ; +} + +/* create a sender socket. */ +int +rtp_socket +( + SOCKET *ps, + char *address, + unsigned short port, + int TTL +) +{ +/* int iRet ; */ + int iLoop = 1 ; +/* struct sockaddr_in sin ; */ + char cTTL = (char)TTL ; + char cLoop=0 ; +/* unsigned int tempaddr ; */ + BOOL True = TRUE ; + INT error ; + char *c = "" ; + UINT ip ; + PHOSTENT host ; + SOCKET s ; + SOCKADDR_IN source, dest ; +#if 0 + int s = socket (AF_INET, SOCK_DGRAM, 0) ; + if (s < 0) + { + fprintf(stderr,"socket() failed.\n"); + exit(1); + } + + tempaddr=inet_addr(address); + sSockAddr->sin_family = sin.sin_family = AF_INET; + sSockAddr->sin_port = sin.sin_port = htons(port); + sSockAddr->sin_addr.s_addr = tempaddr; + + iRet = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &iLoop, +sizeof(int)); + if (iRet < 0) + { + fprintf(stderr,"setsockopt SO_REUSEADDR failed\n"); + exit(1); + } + + if ((ntohl(tempaddr) >> 28) == 0xe) + { + /* only set multicast parameters for multicast destination IPs */ + iRet = setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL, &cTTL, +sizeof(char)); + if (iRet < 0) { + fprintf(stderr,"setsockopt IP_MULTICAST_TTL failed. multicast in kernel?\n"); + exit(1); + } + + cLoop = 1; /* !? */ + iRet = setsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, + &cLoop, sizeof(char)); + if (iRet < 0) + { + fprintf(stderr,"setsockopt IP_MULTICAST_LOOP failed. multicast in kernel?\n"); + exit(1); + } + } +#endif + source.sin_family = AF_INET ; + source.sin_addr.s_addr = htonl (INADDR_ANY) ; + source.sin_port = htons (0) ; + + dest.sin_family = AF_INET; + dest.sin_addr.s_addr = inet_addr (address) ; + + if (!strcmp (address, "255.255.255.255")) + { + } + else if (dest.sin_addr.s_addr == INADDR_NONE) + { + host = gethostbyname (address) ; + + if (host) + { + dest.sin_addr = *(PIN_ADDR) host->h_addr ; + } + else + { + printf ("Unknown host %s\r\n", address) ; + return 1 ; + } + } + + dest.sin_port = htons ((u_short) port) ; + + ip = ntohl (dest.sin_addr.s_addr) ; + + if (IN_CLASSA(ip)) c = "class A" ; + if (IN_CLASSB(ip)) c = "class B" ; + if (IN_CLASSC(ip)) c = "class C" ; + if (IN_CLASSD(ip)) c = "class D" ; + if (ip == INADDR_LOOPBACK) c = "loopback" ; + if (ip == INADDR_BROADCAST) c = "broadcast" ; + + s = socket (AF_INET, SOCK_DGRAM, PF_UNSPEC) ; + + if (s == INVALID_SOCKET) + { + error = WSAGetLastError () ; + printf ("socket () error %d\r\n", error) ; + return error ; + } + + error = setsockopt (s, SOL_SOCKET, SO_REUSEADDR, (const char *) &True, +sizeof (BOOL)) ; + + error = bind (s, (struct sockaddr *) &source, sizeof (source)) ; + + if (error == SOCKET_ERROR) + { + error = WSAGetLastError () ; + printf ("bind () error %d\r\n", error) ; + closesocket (s) ; + return error ; + } + + if (ip == INADDR_BROADCAST) + { + printf ("broadcast %s:%u %s\r\n", inet_ntoa (dest.sin_addr), ntohs +(dest.sin_port), c) ; + + error = setsockopt (s, SOL_SOCKET, SO_BROADCAST, (const char *) +&True, sizeof (BOOL)) ; + + if (error == SOCKET_ERROR) + { + error = WSAGetLastError () ; + printf ("setsockopt (%u, SOL_SOCKET, SO_BROADCAST, ...) error %d\r\n", s, error) ; + closesocket (s) ; + return error ; + } + } + + if (IN_CLASSD(ip)) + { + printf ("multicast %s:%u %s\r\n", inet_ntoa (dest.sin_addr), ntohs (dest.sin_port), c) ; + +/* error = setsockopt (s, IPPROTO_IP, IP_MULTICAST_TTL, (const char *) &TTL, sizeof (int)) ; */ + error = setsockopt (s, IPPROTO_IP, 3, (const char *) &TTL, sizeof (int)) ; + + if (error == SOCKET_ERROR) + { + error = WSAGetLastError () ; + printf ("setsockopt (%u, IPPROTO_IP, IP_MULTICAST_TTL, ...) error %d\r\n", s, error) ; + closesocket (s) ; + return error ; + } + } + + error = connect (s, (PSOCKADDR) &dest, sizeof (SOCKADDR_IN)) ; + + if (error == SOCKET_ERROR) + { + printf ("connect: error %d\n", WSAGetLastError ()) ; + closesocket (s) ; + return error ; + } + + *ps = s ; + + return 0 ; +} + + + +#endif + diff --git a/lame-3.97/frontend/.svn/text-base/rtp.h.svn-base b/lame-3.97/frontend/.svn/text-base/rtp.h.svn-base new file mode 100644 index 0000000..8e04efe --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/rtp.h.svn-base @@ -0,0 +1,47 @@ +#ifndef LAME_RTP_H +#define LAME_RTP_H + +#include <sys/socket.h> +#include <netinet/in.h> + +struct rtpbits { + int sequence:16; /* sequence number: random */ + int pt:7; /* payload type: 14 for MPEG audio */ + int m:1; /* marker: 0 */ + int cc:4; /* number of CSRC identifiers: 0 */ + int x:1; /* number of extension headers: 0 */ + int p:1; /* is there padding appended: 0 */ + int v:2; /* version: 2 */ +}; + +struct rtpheader { /* in network byte order */ + struct rtpbits b; + int timestamp; /* start: random */ + int ssrc; /* random */ + int iAudioHeader; /* =0?! */ +}; + +void initrtp(struct rtpheader *foo); +int sendrtp(int fd, struct sockaddr_in *sSockAddr, struct rtpheader *foo, const void *data, int len); +int makesocket(char *szAddr,unsigned short port,unsigned char TTL,struct sockaddr_in *sSockAddr); +void rtp_output(const char *mp3buffer,int mp3size); + +#if 0 +int rtp_send ( + SOCKET s, + struct rtpheader *foo, + void *data, + int len +) ; + +int rtp_socket ( + SOCKET *ps, + char *Address, + unsigned short port, + int TTL +) ; +#endif + + +#endif + diff --git a/lame-3.97/frontend/.svn/text-base/timestatus.c.svn-base b/lame-3.97/frontend/.svn/text-base/timestatus.c.svn-base new file mode 100644 index 0000000..104a05f --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/timestatus.c.svn-base @@ -0,0 +1,245 @@ +/* + * time status related function source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: timestatus.c,v 1.40 2005/02/25 01:21:54 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + + +/* Hope it works now, otherwise complain or flame ;-) + */ + + +#if 1 +# define SPEED_CHAR "x" /* character x */ +# define SPEED_MULT 1. +#else +# define SPEED_CHAR "%%" +# define SPEED_MULT 100. +#endif + +#include <assert.h> +#include <time.h> + +#include "lame.h" +#include "main.h" +#include "lametime.h" +#include "timestatus.h" + +#if defined(BRHIST) +# include "brhist.h" +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +typedef struct { + double last_time; /* result of last call to clock */ + double elapsed_time; /* total time */ + double estimated_time; /* estimated total duration time [s] */ + double speed_index; /* speed relative to realtime coding [100%] */ +} timestatus_t; + +/* + * Calculates from the input (see below) the following values: + * - total estimated time + * - a speed index + */ + +static void +ts_calc_times(timestatus_t * const tstime, /* tstime->elapsed_time: elapsed time */ + const int sample_freq, /* sample frequency [Hz/kHz] */ + const int frameNum, /* Number of the current Frame */ + const int totalframes, /* total umber of Frames */ + const int framesize) +{ /* Size of a frame [bps/kbps] */ + assert(sample_freq >= 8000 && sample_freq <= 48000); + + if (frameNum > 0 && tstime->elapsed_time > 0) { + tstime->estimated_time = tstime->elapsed_time * totalframes / frameNum; + tstime->speed_index = framesize * frameNum / (sample_freq * tstime->elapsed_time); + } + else { + tstime->estimated_time = 0.; + tstime->speed_index = 0.; + } +} + +/* Decomposes a given number of seconds into a easy to read hh:mm:ss format + * padded with an additional character + */ + +static void +ts_time_decompose(const unsigned long time_in_sec, const char padded_char) +{ + const unsigned long hour = time_in_sec / 3600; + const unsigned int min = time_in_sec / 60 % 60; + const unsigned int sec = time_in_sec % 60; + + if (hour == 0) + fprintf(stderr, " %2u:%02u%c", min, sec, padded_char); + else if (hour < 100) + fprintf(stderr, "%2lu:%02u:%02u%c", hour, min, sec, padded_char); + else + fprintf(stderr, "%6lu h%c", hour, padded_char); +} + +void +timestatus(int samp_rate, int frameNum, int totalframes, int framesize) +{ + static timestatus_t real_time; + static timestatus_t proc_time; + int percent; + static int init = 0; /* What happens here? A work around instead of a bug fix ??? */ + double tmx, delta; + + if (totalframes < frameNum) { + totalframes = frameNum; + } + if (frameNum == 0) { + real_time.last_time = GetRealTime(); + proc_time.last_time = GetCPUTime(); + real_time.elapsed_time = 0; + proc_time.elapsed_time = 0; + } + + /* we need rollover protection for GetCPUTime, and maybe GetRealTime(): */ + tmx = GetRealTime(); + delta = tmx - real_time.last_time; + if (delta < 0) + delta = 0; /* ignore, clock has rolled over */ + real_time.elapsed_time += delta; + real_time.last_time = tmx; + + + tmx = GetCPUTime(); + delta = tmx - proc_time.last_time; + if (delta < 0) + delta = 0; /* ignore, clock has rolled over */ + proc_time.elapsed_time += delta; + proc_time.last_time = tmx; + + if (frameNum == 0 && init == 0) { + fprintf(stderr, + "\r" + " Frame | CPU time/estim | REAL time/estim | play/CPU | ETA \n" + " 0/ ( 0%%)| 0:00/ : | 0:00/ : | " SPEED_CHAR + "| : \r" + /* , Console_IO.str_clreoln, Console_IO.str_clreoln */ ); + init = 1; + return; + } + /* reset init counter for next time we are called with frameNum==0 */ + if (frameNum > 0) + init = 0; + + ts_calc_times(&real_time, samp_rate, frameNum, totalframes, framesize); + ts_calc_times(&proc_time, samp_rate, frameNum, totalframes, framesize); + + if (frameNum < totalframes) { + percent = (int) (100. * frameNum / totalframes + 0.5); + } + else { + percent = 100; + } + + fprintf(stderr, "\r%6i/%-6i", frameNum, totalframes); + fprintf(stderr, percent < 100 ? " (%2d%%)|" : "(%3.3d%%)|", percent); + ts_time_decompose((unsigned long) proc_time.elapsed_time, '/'); + ts_time_decompose((unsigned long) proc_time.estimated_time, '|'); + ts_time_decompose((unsigned long) real_time.elapsed_time, '/'); + ts_time_decompose((unsigned long) real_time.estimated_time, '|'); + fprintf(stderr, proc_time.speed_index <= 1. ? + "%9.4f" SPEED_CHAR "|" : "%#9.5g" SPEED_CHAR "|", SPEED_MULT * proc_time.speed_index); + ts_time_decompose((unsigned long) (real_time.estimated_time - real_time.elapsed_time), ' '); + fflush(stderr); +} + +void +timestatus_finish(void) +{ + fprintf(stderr, "\n"); + fflush(stderr); +} + +void +timestatus_klemm(const lame_global_flags * const gfp) +{ + static double last_time = 0.; + + if (silent <= 0) + if (lame_get_frameNum(gfp) == 0 || + lame_get_frameNum(gfp) == 9 || + GetRealTime() - last_time >= update_interval || GetRealTime() - last_time < 0) { +#ifdef BRHIST + brhist_jump_back(); +#endif + timestatus(lame_get_out_samplerate(gfp), + lame_get_frameNum(gfp), lame_get_totalframes(gfp), lame_get_framesize(gfp)); +#ifdef BRHIST + if (brhist) { + brhist_disp(gfp); + } +#endif + last_time = GetRealTime(); /* from now! disp_time seconds */ + } +} + +/* these functions are used in get_audio.c */ + +void +decoder_progress(const lame_global_flags * const gfp, const mp3data_struct * const mp3data) +{ + static int last; + fprintf(stderr, "\rFrame#%6i/%-6i %3i kbps", + mp3data->framenum, mp3data->totalframes, mp3data->bitrate); + + /* Programmed with a single frame hold delay */ + /* Attention: static data */ + + /* MP2 Playback is still buggy. */ + /* "'00' subbands 4-31 in intensity_stereo, bound==4" */ + /* is this really intensity_stereo or is it MS stereo? */ + + if (mp3data->mode == JOINT_STEREO) { + int curr = mp3data->mode_ext; + fprintf(stderr, " %s %c", + curr & 2 ? last & 2 ? " MS " : "LMSR" : last & 2 ? "LMSR" : "L R", + curr & 1 ? last & 1 ? 'I' : 'i' : last & 1 ? 'i' : ' '); + last = curr; + } + else { + fprintf(stderr, " "); + last = 0; + } +/* fprintf ( stderr, "%s", Console_IO.str_clreoln ); */ + fprintf(stderr, " \b\b\b\b\b\b\b\b"); + fflush(stderr); +} + +void +decoder_progress_finish(const lame_global_flags * const gfp) +{ + fprintf(stderr, "\n"); +} diff --git a/lame-3.97/frontend/.svn/text-base/timestatus.h.svn-base b/lame-3.97/frontend/.svn/text-base/timestatus.h.svn-base new file mode 100644 index 0000000..7cba9dc --- /dev/null +++ b/lame-3.97/frontend/.svn/text-base/timestatus.h.svn-base @@ -0,0 +1,36 @@ +/* + * time status related function include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_TIMESTATUS_H +#define LAME_TIMESTATUS_H +void timestatus_klemm(const lame_global_flags * const gfp); + +void timestatus ( const int samp_rate, + const int frameNum, + const int totalframes, + const int framesize); +void timestatus_finish(void); + +void decoder_progress(const lame_global_flags * const gfp,const mp3data_struct * const); +void decoder_progress_finish(const lame_global_flags * const gfp); + +#endif /* LAME_TIMESTATUS_H */ + diff --git a/lame-3.97/frontend/Makefile.am b/lame-3.97/frontend/Makefile.am new file mode 100644 index 0000000..922f29a --- /dev/null +++ b/lame-3.97/frontend/Makefile.am @@ -0,0 +1,81 @@ +## $Id: Makefile.am,v 1.25 2005/09/04 19:02:11 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +bin_PROGRAMS = @WITH_FRONTEND@ @WITH_MP3RTP@ @WITH_MP3X@ +EXTRA_PROGRAMS = lame$(EXEEXT) mp3rtp$(EXEEXT) mp3x$(EXEEXT) + +brhist_sources = brhist.c brhist.h + +EXTRA_DIST = \ + $(brhist_sources) \ + console.c \ + console.h \ + lame_vc6.dsp \ + lame_vc7.vcproj \ + mp3x_vc6.dsp \ + mp3x_vc7.vcproj \ + amiga_mpega.c + +DEFS = @DEFS@ @CONFIG_DEFS@ + +common_sources = \ + get_audio.c \ + lametime.c \ + parse.c \ + portableio.c \ + timestatus.c + +noinst_HEADERS = get_audio.h \ + gtkanal.h \ + gpkplotting.h \ + lametime.h \ + main.h \ + parse.h \ + portableio.h \ + timestatus.h + +## EXTRA_lame__EXEEXT__SOURCES = $(brhist_sources) +## EXTRA_mp3rtp__EXEEXT__SOURCES = $(brhist_sources) +## EXTRA_mp3x__EXEEXT__SOURCES = $(brhist_sources) + +if WITH_BRHIST +lame_SOURCES = main.c $(common_sources) $(brhist_sources) +mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) \ + $(brhist_sources) +mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c \ + $(common_sources) $(brhist_sources) +else +lame_SOURCES = main.c $(common_sources) +mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) +mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources) +endif + +CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ +LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ -static + +INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir) + +LDADD = @LDADD@ \ + $(top_builddir)/libmp3lame/libmp3lame.la \ + @FRONTEND_LDADD@ + +mp3x_LDADD = $(LDADD) @GTK_LIBS@ + +CLEANFILES = lclint.txt $(EXTRA_PROGRAMS) + +LCLINTFLAGS= \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +lclint.txt: ${lame_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${lame_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt diff --git a/lame-3.97/frontend/Makefile.in b/lame-3.97/frontend/Makefile.in new file mode 100644 index 0000000..9f06ea8 --- /dev/null +++ b/lame-3.97/frontend/Makefile.in @@ -0,0 +1,626 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global depcomp +bin_PROGRAMS = @WITH_FRONTEND@ @WITH_MP3RTP@ @WITH_MP3X@ +EXTRA_PROGRAMS = lame$(EXEEXT) mp3rtp$(EXEEXT) mp3x$(EXEEXT) +subdir = frontend +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am__lame_SOURCES_DIST = main.c get_audio.c lametime.c parse.c \ + portableio.c timestatus.c brhist.c brhist.h +am__objects_1 = get_audio$U.$(OBJEXT) lametime$U.$(OBJEXT) \ + parse$U.$(OBJEXT) portableio$U.$(OBJEXT) \ + timestatus$U.$(OBJEXT) +am__objects_2 = brhist$U.$(OBJEXT) +@WITH_BRHIST_FALSE@am_lame_OBJECTS = main$U.$(OBJEXT) $(am__objects_1) +@WITH_BRHIST_TRUE@am_lame_OBJECTS = main$U.$(OBJEXT) $(am__objects_1) \ +@WITH_BRHIST_TRUE@ $(am__objects_2) +lame_OBJECTS = $(am_lame_OBJECTS) +lame_LDADD = $(LDADD) +lame_DEPENDENCIES = $(top_builddir)/libmp3lame/libmp3lame.la +am__mp3rtp_SOURCES_DIST = mp3rtp.c rtp.c rtp.h get_audio.c lametime.c \ + parse.c portableio.c timestatus.c brhist.c brhist.h +@WITH_BRHIST_FALSE@am_mp3rtp_OBJECTS = mp3rtp$U.$(OBJEXT) \ +@WITH_BRHIST_FALSE@ rtp$U.$(OBJEXT) $(am__objects_1) +@WITH_BRHIST_TRUE@am_mp3rtp_OBJECTS = mp3rtp$U.$(OBJEXT) \ +@WITH_BRHIST_TRUE@ rtp$U.$(OBJEXT) $(am__objects_1) \ +@WITH_BRHIST_TRUE@ $(am__objects_2) +mp3rtp_OBJECTS = $(am_mp3rtp_OBJECTS) +mp3rtp_LDADD = $(LDADD) +mp3rtp_DEPENDENCIES = $(top_builddir)/libmp3lame/libmp3lame.la +am__mp3x_SOURCES_DIST = mp3x.c gtkanal.c gpkplotting.c get_audio.c \ + lametime.c parse.c portableio.c timestatus.c brhist.c brhist.h +@WITH_BRHIST_FALSE@am_mp3x_OBJECTS = mp3x$U.$(OBJEXT) \ +@WITH_BRHIST_FALSE@ gtkanal$U.$(OBJEXT) gpkplotting$U.$(OBJEXT) \ +@WITH_BRHIST_FALSE@ $(am__objects_1) +@WITH_BRHIST_TRUE@am_mp3x_OBJECTS = mp3x$U.$(OBJEXT) \ +@WITH_BRHIST_TRUE@ gtkanal$U.$(OBJEXT) gpkplotting$U.$(OBJEXT) \ +@WITH_BRHIST_TRUE@ $(am__objects_1) $(am__objects_2) +mp3x_OBJECTS = $(am_mp3x_OBJECTS) +am__DEPENDENCIES_1 = $(top_builddir)/libmp3lame/libmp3lame.la +mp3x_DEPENDENCIES = $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(lame_SOURCES) $(mp3rtp_SOURCES) $(mp3x_SOURCES) +DIST_SOURCES = $(am__lame_SOURCES_DIST) $(am__mp3rtp_SOURCES_DIST) \ + $(am__mp3x_SOURCES_DIST) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ @GTK_CFLAGS@ @FRONTEND_CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = -I$(top_srcdir)/libmp3lame -I$(top_srcdir)/include -I$(top_builddir) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ \ + $(top_builddir)/libmp3lame/libmp3lame.la \ + @FRONTEND_LDADD@ + +LDFLAGS = @LDFLAGS@ @FRONTEND_LDFLAGS@ -static +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +brhist_sources = brhist.c brhist.h +EXTRA_DIST = \ + $(brhist_sources) \ + console.c \ + console.h \ + lame_vc6.dsp \ + lame_vc7.vcproj \ + mp3x_vc6.dsp \ + mp3x_vc7.vcproj \ + amiga_mpega.c + +common_sources = \ + get_audio.c \ + lametime.c \ + parse.c \ + portableio.c \ + timestatus.c + +noinst_HEADERS = get_audio.h \ + gtkanal.h \ + gpkplotting.h \ + lametime.h \ + main.h \ + parse.h \ + portableio.h \ + timestatus.h + +@WITH_BRHIST_FALSE@lame_SOURCES = main.c $(common_sources) +@WITH_BRHIST_TRUE@lame_SOURCES = main.c $(common_sources) $(brhist_sources) +@WITH_BRHIST_FALSE@mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) +@WITH_BRHIST_TRUE@mp3rtp_SOURCES = mp3rtp.c rtp.c rtp.h $(common_sources) \ +@WITH_BRHIST_TRUE@ $(brhist_sources) + +@WITH_BRHIST_FALSE@mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c $(common_sources) +@WITH_BRHIST_TRUE@mp3x_SOURCES = mp3x.c gtkanal.c gpkplotting.c \ +@WITH_BRHIST_TRUE@ $(common_sources) $(brhist_sources) + +mp3x_LDADD = $(LDADD) @GTK_LIBS@ +CLEANFILES = lclint.txt $(EXTRA_PROGRAMS) +LCLINTFLAGS = \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign frontend/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign frontend/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +lame$(EXEEXT): $(lame_OBJECTS) $(lame_DEPENDENCIES) + @rm -f lame$(EXEEXT) + $(LINK) $(lame_LDFLAGS) $(lame_OBJECTS) $(lame_LDADD) $(LIBS) +mp3rtp$(EXEEXT): $(mp3rtp_OBJECTS) $(mp3rtp_DEPENDENCIES) + @rm -f mp3rtp$(EXEEXT) + $(LINK) $(mp3rtp_LDFLAGS) $(mp3rtp_OBJECTS) $(mp3rtp_LDADD) $(LIBS) +mp3x$(EXEEXT): $(mp3x_OBJECTS) $(mp3x_DEPENDENCIES) + @rm -f mp3x$(EXEEXT) + $(LINK) $(mp3x_LDFLAGS) $(mp3x_OBJECTS) $(mp3x_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/brhist$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_audio$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpkplotting$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkanal$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lametime$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp3rtp$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mp3x$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portableio$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtp$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timestatus$U.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +brhist_.c: brhist.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/brhist.c; then echo $(srcdir)/brhist.c; else echo brhist.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +get_audio_.c: get_audio.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/get_audio.c; then echo $(srcdir)/get_audio.c; else echo get_audio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +gpkplotting_.c: gpkplotting.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gpkplotting.c; then echo $(srcdir)/gpkplotting.c; else echo gpkplotting.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +gtkanal_.c: gtkanal.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gtkanal.c; then echo $(srcdir)/gtkanal.c; else echo gtkanal.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +lametime_.c: lametime.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lametime.c; then echo $(srcdir)/lametime.c; else echo lametime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +main_.c: main.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/main.c; then echo $(srcdir)/main.c; else echo main.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +mp3rtp_.c: mp3rtp.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mp3rtp.c; then echo $(srcdir)/mp3rtp.c; else echo mp3rtp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +mp3x_.c: mp3x.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mp3x.c; then echo $(srcdir)/mp3x.c; else echo mp3x.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +parse_.c: parse.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/parse.c; then echo $(srcdir)/parse.c; else echo parse.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +portableio_.c: portableio.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/portableio.c; then echo $(srcdir)/portableio.c; else echo portableio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +rtp_.c: rtp.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/rtp.c; then echo $(srcdir)/rtp.c; else echo rtp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +timestatus_.c: timestatus.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/timestatus.c; then echo $(srcdir)/timestatus.c; else echo timestatus.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +brhist_.$(OBJEXT) brhist_.lo get_audio_.$(OBJEXT) get_audio_.lo \ +gpkplotting_.$(OBJEXT) gpkplotting_.lo gtkanal_.$(OBJEXT) gtkanal_.lo \ +lametime_.$(OBJEXT) lametime_.lo main_.$(OBJEXT) main_.lo \ +mp3rtp_.$(OBJEXT) mp3rtp_.lo mp3x_.$(OBJEXT) mp3x_.lo parse_.$(OBJEXT) \ +parse_.lo portableio_.$(OBJEXT) portableio_.lo rtp_.$(OBJEXT) rtp_.lo \ +timestatus_.$(OBJEXT) timestatus_.lo : $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am + + +# end global section + +lclint.txt: ${lame_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${lame_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/frontend/amiga_mpega.c b/lame-3.97/frontend/amiga_mpega.c new file mode 100644 index 0000000..94653ba --- /dev/null +++ b/lame-3.97/frontend/amiga_mpega.c @@ -0,0 +1,133 @@ +/* MPGLIB replacement using mpega.library (AmigaOS) + * Written by Thomas Wenzel and Sigbj�rn (CISC) Skj�ret. + * + * Big thanks to St�phane Tavernard for mpega.library. + * + */ + +/* $Id: amiga_mpega.c,v 1.2 2001/02/05 00:34:37 cisc Exp $ */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef AMIGA_MPEGA + +#define __USE_SYSBASE +#include "lame.h" +#include <stdio.h> +#include <stdlib.h> + +/* We need a small workaround here so GCC doesn't fail upon redefinition. :P */ +#define FLOAT _FLOAT +#include <proto/exec.h> +#include <proto/mpega.h> +#undef _FLOAT + +#ifndef __GNUC__ +#include <dos.h> +#endif + +struct Library *MPEGABase=NULL; +MPEGA_STREAM *mstream=NULL; +MPEGA_CTRL mctrl; + +static const int smpls[2][4]={ +/* Layer x I II III */ + {0,384,1152,1152}, /* MPEG-1 */ + {0,384,1152, 576} /* MPEG-2(.5) */ +}; + + +#ifndef __GNUC__ +static int break_cleanup(void) +{ + /* Dummy break function to make atexit() work. :P */ + return 1; +} +#endif + +static void exit_cleanup(void) +{ + if(mstream) { + MPEGA_close(mstream); + mstream = NULL; + } + if(MPEGABase) { + CloseLibrary(MPEGABase); + MPEGABase = NULL; + } +} + + +int lame_decode_initfile(const char *fullname, mp3data_struct *mp3data) +{ + mctrl.bs_access = NULL; + + mctrl.layer_1_2.mono.quality = 2; + mctrl.layer_1_2.stereo.quality = 2; + mctrl.layer_1_2.mono.freq_div = 1; + mctrl.layer_1_2.stereo.freq_div = 1; + mctrl.layer_1_2.mono.freq_max = 48000; + mctrl.layer_1_2.stereo.freq_max = 48000; + mctrl.layer_3.mono.quality = 2; + mctrl.layer_3.stereo.quality = 2; + mctrl.layer_3.mono.freq_div = 1; + mctrl.layer_3.stereo.freq_div = 1; + mctrl.layer_3.mono.freq_max = 48000; + mctrl.layer_3.stereo.freq_max = 48000; + mctrl.layer_1_2.force_mono = 0; + mctrl.layer_3.force_mono = 0; + + MPEGABase = OpenLibrary("mpega.library", 2); + if(!MPEGABase) { + fprintf(stderr, "Unable to open mpega.library v2\n"); + exit(1); + } +#ifndef __GNUC__ + onbreak(break_cleanup); +#endif + atexit(exit_cleanup); + + mp3data->header_parsed = 0; + mstream=MPEGA_open((char *)fullname, &mctrl); + if(!mstream) return (-1); + + mp3data->header_parsed = 1; + mp3data->stereo = mstream->dec_channels; + mp3data->samplerate = mstream->dec_frequency; + mp3data->bitrate = mstream->bitrate; + mp3data->nsamp = (float)mstream->ms_duration/1000 * mstream->dec_frequency; + mp3data->mode = mstream->mode; + mp3data->mode_ext = 0; /* mpega.library doesn't supply this info! :( */ + mp3data->framesize = smpls[mstream->norm-1][mstream->layer]; + + return 0; +} + +int lame_decode_fromfile(FILE *fd, short pcm_l[], short pcm_r[], mp3data_struct *mp3data) +{ + int outsize=0; + WORD *b[MPEGA_MAX_CHANNELS]; + + b[0]=pcm_l; + b[1]=pcm_r; + + mp3data->header_parsed = 0; + while ((outsize == 0) || (outsize == MPEGA_ERR_BADFRAME)) /* Skip bad frames */ + outsize = MPEGA_decode_frame(mstream, b); + + if (outsize < 0) return (-1); + + mp3data->header_parsed = 1; + mp3data->stereo = mstream->dec_channels; + mp3data->samplerate = mstream->dec_frequency; + mp3data->bitrate = mstream->bitrate; + mp3data->mode = mstream->mode; + mp3data->mode_ext = 0; /* mpega.library doesn't supply this info! :( */ + mp3data->framesize = smpls[mstream->norm-1][mstream->layer]; + + return outsize; +} + +#endif /* AMIGA_MPEGA */ diff --git a/lame-3.97/frontend/brhist.c b/lame-3.97/frontend/brhist.c new file mode 100644 index 0000000..3120f5f --- /dev/null +++ b/lame-3.97/frontend/brhist.c @@ -0,0 +1,614 @@ +/* + * Bitrate histogram source file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: brhist.c,v 1.46.2.1 2005/12/18 18:49:28 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef BRHIST + +/* basic #define's */ + +#ifndef BRHIST_WIDTH +# define BRHIST_WIDTH 14 +#endif +#ifndef BRHIST_RES +# define BRHIST_RES 14 +#endif + + +/* #includes */ + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr(), *strrchr(); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + + +#if defined(HAVE_NCURSES_TERMCAP_H) +# include <ncurses/termcap.h> +#elif defined(HAVE_TERMCAP_H) +# include <termcap.h> +#elif defined(HAVE_TERMCAP) +# include <curses.h> +# if !defined(__bsdi__) +# include <term.h> +# endif +#endif + +#include "brhist.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +/* Structure holding all data related to the Console I/O + * may be this should be a more global frontend structure. So it + * makes sense to print all files instead with + * printf ( "blah\n") with printf ( "blah%s\n", Console_IO.str_clreoln ); + */ + +Console_IO_t Console_IO; + +static struct { + int vbr_bitrate_min_index; + int vbr_bitrate_max_index; + int kbps[BRHIST_WIDTH]; + int hist_printed_lines; + char bar_asterisk[512 + 1]; /* buffer filled up with a lot of '*' to print a bar */ + char bar_percent[512 + 1]; /* buffer filled up with a lot of '%' to print a bar */ + char bar_coded[512 + 1]; /* buffer filled up with a lot of ' ' to print a bar */ + char bar_space[512 + 1]; /* buffer filled up with a lot of ' ' to print a bar */ +} brhist; + +static int +calculate_index(const int *const array, const int len, const int value) +{ + int i; + + for (i = 0; i < len; i++) + if (array[i] == value) + return i; + return -1; +} + +int +brhist_init(const lame_global_flags * gf, const int bitrate_kbps_min, + const int bitrate_kbps_max) +{ +#ifdef HAVE_TERMCAP + char term_buff[2048]; /* see 1) */ + const char *term_name; + char *tp; + char tc[10]; + int val; +#endif + + /* setup basics of brhist I/O channels */ + Console_IO.disp_width = 80; + Console_IO.disp_height = 25; + brhist.hist_printed_lines = 0; + Console_IO.Console_fp = stderr; + Console_IO.Error_fp = stderr; + Console_IO.Report_fp = stderr; + + setvbuf(Console_IO.Console_fp, Console_IO.Console_buff, _IOFBF, + sizeof(Console_IO.Console_buff)); +/* setvbuf ( Console_IO.Error_fp , NULL , _IONBF, 0 ); */ + +#if defined(_WIN32) && !defined(__CYGWIN__) + Console_IO.Console_Handle = GetStdHandle(STD_ERROR_HANDLE); +#endif + + strcpy(Console_IO.str_up, "\033[A"); + +#ifndef RH_HIST + /* some internal checks */ + if (bitrate_kbps_min > bitrate_kbps_max) { + fprintf(Console_IO.Error_fp, + "lame internal error: VBR min %d kbps > VBR max %d kbps.\n", + bitrate_kbps_min, bitrate_kbps_max); + return -1; + } + if (bitrate_kbps_min < 8 || bitrate_kbps_max > 320) { + fprintf(Console_IO.Error_fp, + "lame internal error: VBR min %d kbps or VBR max %d kbps out of range.\n", + bitrate_kbps_min, bitrate_kbps_max); + return -1; + } +#endif + + /* initialize histogramming data structure */ + lame_bitrate_kbps(gf, brhist.kbps); + brhist.vbr_bitrate_min_index = + calculate_index(brhist.kbps, BRHIST_WIDTH, bitrate_kbps_min); + brhist.vbr_bitrate_max_index = + calculate_index(brhist.kbps, BRHIST_WIDTH, bitrate_kbps_max); + + if (brhist.vbr_bitrate_min_index >= BRHIST_WIDTH || + brhist.vbr_bitrate_max_index >= BRHIST_WIDTH) { + fprintf(Console_IO.Error_fp, + "lame internal error: VBR min %d kbps or VBR max %d kbps not allowed.\n", + bitrate_kbps_min, bitrate_kbps_max); + return -1; + } + + memset(brhist.bar_asterisk, '*', sizeof(brhist.bar_asterisk) - 1); + memset(brhist.bar_percent, '%', sizeof(brhist.bar_percent) - 1); + memset(brhist.bar_space, '-', sizeof(brhist.bar_space) - 1); + memset(brhist.bar_coded, '-', sizeof(brhist.bar_space) - 1); + +#ifdef HAVE_TERMCAP + /* try to catch additional information about special console sequences */ + + if ((term_name = getenv("TERM")) == NULL) { + fprintf(Console_IO.Error_fp, + "LAME: Can't get \"TERM\" environment string.\n"); + return -1; + } + if (tgetent(term_buff, term_name) != 1) { + fprintf(Console_IO.Error_fp, + "LAME: Can't find termcap entry for terminal \"%s\"\n", + term_name); + return -1; + } + + val = tgetnum("co"); + if (val >= 40 && val <= 512) + Console_IO.disp_width = val; + val = tgetnum("li"); + if (val >= 16 && val <= 256) + Console_IO.disp_height = val; + + *(tp = tc) = '\0'; + tp = tgetstr("up", &tp); + if (tp != NULL) + strcpy(Console_IO.str_up, tp); + + *(tp = tc) = '\0'; + tp = tgetstr("ce", &tp); + if (tp != NULL) + strcpy(Console_IO.str_clreoln, tp); + + *(tp = tc) = '\0'; + tp = tgetstr("md", &tp); + if (tp != NULL) + strcpy(Console_IO.str_emph, tp); + + *(tp = tc) = '\0'; + tp = tgetstr("me", &tp); + if (tp != NULL) + strcpy(Console_IO.str_norm, tp); + +#endif /* HAVE_TERMCAP */ + + return 0; +} + +static int +digits(unsigned number) +{ + int ret = 1; + + if (number >= 100000000) { + ret += 8; + number /= 100000000; + } + if (number >= 10000) { + ret += 4; + number /= 10000; + } + if (number >= 100) { + ret += 2; + number /= 100; + } + if (number >= 10) { + ret += 1; + } + + return ret; +} + + +static void +brhist_disp_line(int i, int br_hist_TOT, int br_hist_LR, int full, int frames) +{ + char brppt[14]; /* [%] and max. 10 characters for kbps */ + int barlen_TOT; + int barlen_LR; + int ppt = 0; + int res = digits(frames) + 3 + 4 + 1; + + if (full != 0) { + /* some problems when br_hist_TOT \approx br_hist_LR: You can't see that there are still MS frames */ + barlen_TOT = (br_hist_TOT * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + barlen_LR = (br_hist_LR * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + } + else { + barlen_TOT = barlen_LR = 0; + } + + if (frames > 0) + ppt = (1000 * br_hist_TOT + frames / 2) / frames; /* round nearest */ + + sprintf(brppt, " [%*i]", digits(frames), br_hist_TOT); + + if (Console_IO.str_clreoln[0]) /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "\n%3d%s %.*s%.*s%s", + brhist.kbps[i], brppt, + barlen_LR, brhist.bar_percent, + barlen_TOT - barlen_LR, brhist.bar_asterisk, + Console_IO.str_clreoln); + else + fprintf(Console_IO.Console_fp, "\n%3d%s %.*s%.*s%*s", + brhist.kbps[i], brppt, + barlen_LR, brhist.bar_percent, + barlen_TOT - barlen_LR, brhist.bar_asterisk, + Console_IO.disp_width - res - barlen_TOT, ""); + + brhist.hist_printed_lines++; +} + + +#ifdef RH_HIST +static void +progress_line(const lame_global_flags * gf, int full, int frames) +{ + char rst[20] = "\0"; + int barlen_TOT = 0, barlen_COD = 0, barlen_RST = 0; + int res = 1; + float df = 0; + unsigned int hour, min, sec; + int fsize = lame_get_framesize(gf); + int srate = lame_get_out_samplerate(gf); + + if (full < frames) { + full = frames; + } + if (srate > 0) { + df = full - frames; + df *= fsize; + df /= srate; + } + hour = df / 3600; + df -= hour * 3600; + min = df / 60; + df -= min * 60; + sec = df; + if (full != 0) { + if (hour > 0) { + sprintf(rst, "%*u:%02u:%02u", digits(hour), hour, min, sec); + res += digits(hour) + 1 + 5; + } + else { + sprintf(rst, "%02u:%02u", min, sec); + res += 5; + } + /* some problems when br_hist_TOT \approx br_hist_LR: You can't see that there are still MS frames */ + barlen_TOT = (full * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + barlen_COD = (frames * (Console_IO.disp_width - res) + full - 1) / full; /* round up */ + barlen_RST = barlen_TOT - barlen_COD; + if (barlen_RST == 0) { + sprintf(rst, "%.*s", res - 1, brhist.bar_coded); + } + } + else { + barlen_TOT = barlen_COD = barlen_RST = 0; + } + if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "\n%.*s%s%.*s%s", + barlen_COD, brhist.bar_coded, + rst, barlen_RST, brhist.bar_space, Console_IO.str_clreoln); + } + else { + fprintf(Console_IO.Console_fp, "\n%.*s%s%.*s%*s", + barlen_COD, brhist.bar_coded, + rst, barlen_RST, brhist.bar_space, + Console_IO.disp_width - res - barlen_TOT, ""); + } + brhist.hist_printed_lines++; +} + + +static int +stats_value(double x) +{ + if (x > 0.0) { + fprintf(Console_IO.Console_fp, " %5.1f", x); + return 6; + } + /* + else { + fprintf( Console_IO.Console_fp, " " ); + return 6; + } + */ + return 0; +} + +static int +stats_head(double x, const char *txt) +{ + if (x > 0.0) { + fprintf(Console_IO.Console_fp, txt); + return 6; + } + /* + else { + fprintf( Console_IO.Console_fp, " " ); + return 6; + } + */ + return 0; +} + + +static void +stats_line(double *stat) +{ + int n = 1; + fprintf(Console_IO.Console_fp, "\n kbps "); + n += 12; + n += stats_head(stat[1], " mono"); + n += stats_head(stat[2], " IS "); + n += stats_head(stat[3], " LR "); + n += stats_head(stat[4], " MS "); + fprintf(Console_IO.Console_fp, " %% "); + n += 6; + n += stats_head(stat[5], " long "); + n += stats_head(stat[6], "switch"); + n += stats_head(stat[7], " short"); + n += stats_head(stat[8], " mixed"); + n += fprintf(Console_IO.Console_fp, " %%"); + if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "%s", Console_IO.str_clreoln); + } + else { + fprintf(Console_IO.Console_fp, "%*s", Console_IO.disp_width - n, ""); + } + brhist.hist_printed_lines++; + + n = 1; + fprintf(Console_IO.Console_fp, "\n %5.1f ", stat[0]); + n += 12; + n += stats_value(stat[1]); + n += stats_value(stat[2]); + n += stats_value(stat[3]); + n += stats_value(stat[4]); + fprintf(Console_IO.Console_fp, " "); + n += 6; + n += stats_value(stat[5]); + n += stats_value(stat[6]); + n += stats_value(stat[7]); + n += stats_value(stat[8]); + if (Console_IO.str_clreoln[0]) { /* ClearEndOfLine available */ + fprintf(Console_IO.Console_fp, "%s", Console_IO.str_clreoln); + } + else { + fprintf(Console_IO.Console_fp, "%*s", Console_IO.disp_width - n, ""); + } + brhist.hist_printed_lines++; +} +#endif + +/* Yes, not very good */ +#define LR 0 +#define MS 2 + +void +brhist_disp(const lame_global_flags * gf) +{ + int i, lines = 0; + int br_hist[BRHIST_WIDTH]; /* how often a frame size was used */ + int br_sm_hist[BRHIST_WIDTH][4]; /* how often a special frame size/stereo mode commbination was used */ + int st_mode[4]; + int bl_type[6]; + int frames; /* total number of encoded frames */ + int most_often; /* usage count of the most often used frame size, but not smaller than Console_IO.disp_width-BRHIST_RES (makes this sense?) and 1 */ + double sum = 0.; +#ifdef RH_HIST + double stat[9] = { 0 }; + int st_frames = 0; +#endif + + brhist.hist_printed_lines = 0; /* printed number of lines for the brhist functionality, used to skip back the right number of lines */ + + lame_bitrate_stereo_mode_hist(gf, br_sm_hist); + lame_bitrate_hist(gf, br_hist); + lame_stereo_mode_hist(gf, st_mode); + lame_block_type_hist(gf, bl_type); + + frames = most_often = 0; + for (i = 0; i < BRHIST_WIDTH; i++) { + frames += br_hist[i]; + sum += br_hist[i] * brhist.kbps[i]; + if (most_often < br_hist[i]) + most_often = br_hist[i]; + if (br_hist[i]) + ++lines; + } + + for (i = 0; i < BRHIST_WIDTH; i++) { + int show = br_hist[i]; +#ifdef RH_HIST + show = show && (lines > 1); +#endif + if (show + || (i >= brhist.vbr_bitrate_min_index + && i <= brhist.vbr_bitrate_max_index)) + brhist_disp_line(i, br_hist[i], br_sm_hist[i][LR], most_often, + frames); + } +#ifdef RH_HIST + for (i = 0; i < 4; i++) { + st_frames += st_mode[i]; + } + if (frames > 0) { + stat[0] = sum / frames; + stat[1] = 100. * (frames - st_frames) / frames; + } + if (st_frames > 0) { + stat[2] = 0.0; + stat[3] = 100. * st_mode[LR] / st_frames; + stat[4] = 100. * st_mode[MS] / st_frames; + } + if (bl_type[5] > 0) { + stat[5] = 100. * bl_type[0] / bl_type[5]; + stat[6] = 100. * (bl_type[1] + bl_type[3]) / bl_type[5]; + stat[7] = 100. * bl_type[2] / bl_type[5]; + stat[8] = 100. * bl_type[4] / bl_type[5]; + } + progress_line(gf, lame_get_totalframes(gf), frames); + stats_line(stat); +#endif + fputs("\r", Console_IO.Console_fp); + fflush(Console_IO.Console_fp); /* fflush is ALSO needed for Windows! */ +} + +void +brhist_jump_back(void) +{ +#if defined(_WIN32) && !defined(__CYGWIN__) + if (GetFileType(Console_IO.Console_Handle) != FILE_TYPE_PIPE) { + COORD Pos; + CONSOLE_SCREEN_BUFFER_INFO CSBI; + + GetConsoleScreenBufferInfo(Console_IO.Console_Handle, &CSBI); + Pos.Y = CSBI.dwCursorPosition.Y - brhist.hist_printed_lines; + Pos.X = 0; + SetConsoleCursorPosition(Console_IO.Console_Handle, Pos); + } +#else + while (brhist.hist_printed_lines-- > 0) + fputs(Console_IO.str_up, Console_IO.Console_fp); +#endif +} + + +void +brhist_disp_total(const lame_global_flags * gf) +{ +#ifndef RH_HIST + + int i; + int br_hist[BRHIST_WIDTH]; + int st_mode[4]; + int bl_type[6]; + int st_frames = 0; + int br_frames = 0; + double sum = 0.; + + lame_stereo_mode_hist(gf, st_mode); + lame_bitrate_hist(gf, br_hist); + lame_block_type_hist(gf, bl_type); + + for (i = 0; i < BRHIST_WIDTH; i++) { + br_frames += br_hist[i]; + sum += br_hist[i] * brhist.kbps[i]; + } + + for (i = 0; i < 4; i++) { + st_frames += st_mode[i]; + } + + if (0 == br_frames) + return; + + fprintf(Console_IO.Console_fp, "\naverage: %5.1f kbps", sum / br_frames); + + /* I'm very unhappy because this is only printed out in VBR modes */ + + if (st_frames > 0) { + if (st_mode[LR] > 0) + fprintf(Console_IO.Console_fp, " LR: %d (%#5.4g%%)", st_mode[LR], + 100. * st_mode[LR] / st_frames); + else + fprintf(Console_IO.Console_fp, " "); + if (st_mode[MS] > 0) + fprintf(Console_IO.Console_fp, " MS: %d (%#5.4g%%)", st_mode[MS], + 100. * st_mode[MS] / st_frames); + } + fprintf(Console_IO.Console_fp, "\n"); + + if (bl_type[5] > 0) { + extern int silent; + if (silent <= -5 && silent > -10) { + fprintf(Console_IO.Console_fp, "block type"); + fprintf(Console_IO.Console_fp, " long: %#4.3f", + 100. * bl_type[0] / bl_type[5]); + fprintf(Console_IO.Console_fp, " start: %#4.3f", + 100. * bl_type[1] / bl_type[5]); + fprintf(Console_IO.Console_fp, " short: %#4.3f", + 100. * bl_type[2] / bl_type[5]); + fprintf(Console_IO.Console_fp, " stop: %#4.3f", + 100. * bl_type[3] / bl_type[5]); + fprintf(Console_IO.Console_fp, " mixed: %#4.3f", + 100. * bl_type[4] / bl_type[5]); + fprintf(Console_IO.Console_fp, " (%%)\n"); + } + else if (silent <= -10) { + fprintf(Console_IO.Console_fp, + "block types granules percent\n"); + fprintf(Console_IO.Console_fp, " long: % 10d % 8.3f%%\n", + bl_type[0], 100. * bl_type[0] / bl_type[5]); + fprintf(Console_IO.Console_fp, " start: % 10d % 8.3f%%\n", + bl_type[1], 100. * bl_type[1] / bl_type[5]); + fprintf(Console_IO.Console_fp, " short: % 10d % 8.3f%%\n", + bl_type[2], 100. * bl_type[2] / bl_type[5]); + fprintf(Console_IO.Console_fp, " stop: % 10d % 8.3f%%\n", + bl_type[3], 100. * bl_type[3] / bl_type[5]); + fprintf(Console_IO.Console_fp, " mixed: % 10d % 8.3f%%\n", + bl_type[4], 100. * bl_type[4] / bl_type[5]); + } + } +#else + (void) gf; +#endif + + fflush(Console_IO.Console_fp); +} + +/* + * 1) + * + * Taken from Termcap_Manual.html: + * + * With the Unix version of termcap, you must allocate space for the description yourself and pass + * the address of the space as the argument buffer. There is no way you can tell how much space is + * needed, so the convention is to allocate a buffer 2048 characters long and assume that is + * enough. (Formerly the convention was to allocate 1024 characters and assume that was enough. + * But one day, for one kind of terminal, that was not enough.) + */ + +#endif /* ifdef BRHIST */ diff --git a/lame-3.97/frontend/brhist.h b/lame-3.97/frontend/brhist.h new file mode 100644 index 0000000..bf98434 --- /dev/null +++ b/lame-3.97/frontend/brhist.h @@ -0,0 +1,56 @@ +/* + * Bitrate histogram include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_BRHIST_H +#define LAME_BRHIST_H + +#if defined(_WIN32) && !defined(__CYGWIN__) +# include <windows.h> +#endif +#include "lame.h" + +int brhist_init ( const lame_global_flags *gf, const int bitrate_kbps_min, const int bitrate_kbps_max ); +void brhist_disp ( const lame_global_flags *gf ); +void brhist_disp_total ( const lame_global_flags *gf ); +void brhist_jump_back ( void ); + +typedef struct { + FILE* Console_fp; /* filepointer to stream reporting information */ + FILE* Error_fp; /* filepointer to stream fatal error reporting information */ + FILE* Report_fp; /* filepointer to stream reports (normally a text file or /dev/null) */ +#if defined(_WIN32) && !defined(__CYGWIN__) + HANDLE Console_Handle; +#endif + int disp_width; + int disp_height; + char str_up [10]; + char str_clreoln [10]; + char str_emph [10]; + char str_norm [10]; + char Console_buff [1024]; +} Console_IO_t; + +extern Console_IO_t Console_IO; + +#define RH_HIST + +#endif /* LAME_BRHIST_H */ + diff --git a/lame-3.97/frontend/console.c b/lame-3.97/frontend/console.c new file mode 100644 index 0000000..13db5e1 --- /dev/null +++ b/lame-3.97/frontend/console.c @@ -0,0 +1,187 @@ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include "console.h" + +#if defined(HAVE_TERMCAP) +#include <curses.h> +#include <term.h> +#if defined(HAVE_TERMCAP_H) +# include <termcap.h> +#elif defined(HAVE_NCURSES_TERMCAP_H) +# include <ncurses/termcap.h> +#endif +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#define CLASS_ID 0x434F4E53 +#define REPORT_BUFF_SIZE 1024 + +/* + * Taken from Termcap_Manual.html: + * + * With the Unix version of termcap, you must allocate space for the description yourself and pass + * the address of the space as the argument buffer. There is no way you can tell how much space is + * needed, so the convention is to allocate a buffer 2048 characters long and assume that is + * enough. (Formerly the convention was to allocate 1024 characters and assume that was enough. + * But one day, for one kind of terminal, that was not enough.) + */ + +Console_IO_t* open_console ( int debug ) +{ + Console_IO_t* const mfp = calloc ( 1, sizeof (*mfp) ); +#ifdef TERMCAP_AVAILABLE + const char* term_name; + char term_buff [2048]; + char* tp; + char tc [10]; + int val; +#endif + + /* setup basics of brhist I/O channels */ + mfp -> disp_width = 80; + mfp -> disp_height = 25; + mfp -> Console_fp = stderr; + mfp -> Error_fp = stderr; + mfp -> Report_fp = debug ? fopen ( "/tmp/lame_reports", "a" ) : NULL; + + mfp -> Console_buff = calloc ( 1, REPORT_BUFF_SIZE ); + setvbuf ( mfp -> Console_fp, mfp -> Console_buff, _IOFBF, REPORT_BUFF_SIZE ); +/* setvbuf ( mfp -> Error_fp , NULL , _IONBF, 0 ); */ + +#if defined(_WIN32) && !defined(__CYGWIN__) + mfp -> Console_Handle = GetStdHandle (STD_ERROR_HANDLE); +#endif + + strcpy ( mfp -> str_up, "\033[A" ); + +#ifdef TERMCAP_AVAILABLE + /* try to catch additional information about special console sequences */ + + if ((term_name = getenv("TERM")) == NULL) { + fprintf ( mfp -> Error_fp, "LAME: Can't get \"TERM\" environment string.\n" ); + return -1; + } + if ( tgetent (term_buff, term_name) != 1 ) { + fprintf ( mfp -> Error_fp, "LAME: Can't find termcap entry for terminal \"%s\"\n", term_name ); + return -1; + } + + val = tgetnum ("co"); + if ( val >= 40 && val <= 512 ) + mfp -> disp_width = val; + val = tgetnum ("li"); + if ( val >= 16 && val <= 256 ) + mfp -> disp_height = val; + + *(tp = tc) = '\0'; + tp = tgetstr ("up", &tp); + if (tp != NULL) + strcpy ( mfp -> str_up, tp ); + + *(tp = tc) = '\0'; + tp = tgetstr ("ce", &tp); + if (tp != NULL) + strcpy ( mfp -> str_clreoln, tp ); + + *(tp = tc) = '\0'; + tp = tgetstr ("md", &tp); + if (tp != NULL) + strcpy ( mfp -> str_emph, tp ); + + *(tp = tc) = '\0'; + tp = tgetstr ("me", &tp); + if (tp != NULL) + strcpy ( mfp -> str_norm, tp ); + +#endif /* TERMCAP_AVAILABLE */ + + return mfp; +} + +/* printf for console */ + +int Console_printf ( Console_IO_t* const mfp, const char* const format, ... ) +{ + va_list args; + int ret; + + va_start ( args, format ); + ret = vfprintf ( mfp -> Console_fp, s, args ); + va_end ( args ); + + return ret; +} + +/* printf for errors */ + +int Error_printf ( Console_IO_t* const mfp, const char* const format, ... ) +{ + va_list args; + int ret; + + va_start ( args, format ); + ret = vfprintf ( mfp -> Error_fp, s, args ); + va_end ( args ); + + flush ( mfp -> Error_fp ); + return ret; +} + +/* printf for additional reporting information */ + +int Report_printf ( Console_IO_t* const mfp, const char* const format, ... ) +{ + va_list args; + int ret; + + if ( mfp -> Report_fp != NULL ) { + va_start ( args, format ); + ret = vfprintf ( mfp -> Report_fp, s, args ); + va_end ( args ); + + return ret; + } + + return 0; +} + + +int close_console ( Console_IO_t* const mfp ) +{ + if ( mfp == NULL || mfp -> ClassID != CLASS_ID || mfp -> Console_buff == NULL ) + return -1; + + fflush ( mfp -> Console_fp ); + setvbuf ( mfp -> Console_fp, NULL, _IONBF, (size_t)0 ); + + memset ( mfp -> Console_buff, 0x55, REPORT_BUFF_SIZE ); + free ( mfp -> Console_buff ); + + memset ( mfp, 0x55, sizeof (*mfp) ); + free ( mfp ); + + return 0; +} + +/* end of console.c */ + diff --git a/lame-3.97/frontend/console.h b/lame-3.97/frontend/console.h new file mode 100644 index 0000000..7982894 --- /dev/null +++ b/lame-3.97/frontend/console.h @@ -0,0 +1,37 @@ +/* + * frontend/console.h + * + * This + * + * + */ + +#ifndef LAME_CONSOLE_H +#define LAME_CONSOLE_H + +#if defined(_WIN32) && !defined(__CYGWIN__) +# include <windows.h> +#endif + +typedef struct { + unsigned long ClassID; + unsigned long ClassProt; + FILE* Console_fp; /* filepointer to stream reporting information */ + FILE* Error_fp; /* filepointer to stream fatal error reporting information */ + FILE* Report_fp; /* filepointer to stream reports (normally a text file or /dev/null) */ + char* Console_buff; +#if defined(_WIN32) && !defined(__CYGWIN__) + HANDLE Console_Handle; +#endif + int disp_width; + int disp_height; + char str_up [10]; + char str_clreoln [10]; + char str_emph [10]; + char str_norm [10]; +} Console_IO_t; + +#endif /* LAME_CONSOLE_H */ + +/* end of console.h */ + diff --git a/lame-3.97/frontend/depcomp b/lame-3.97/frontend/depcomp new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/frontend/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/frontend/get_audio.c b/lame-3.97/frontend/get_audio.c new file mode 100644 index 0000000..917fbaa --- /dev/null +++ b/lame-3.97/frontend/get_audio.c @@ -0,0 +1,1611 @@ +/* + * Get Audio routines source file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: get_audio.c,v 1.102 2005/05/25 14:17:51 takehiro Exp $ */ + + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> + +#ifdef HAVE_LIMITS_H +# include <limits.h> +#endif + +#include <stdio.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr(), *strrchr(); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + + +#define MAX_U_32_NUM 0xFFFFFFFF + + +#include <math.h> +#include <sys/stat.h> + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include <unistd.h> +#endif + +#include "lame.h" +#include "main.h" +#include "get_audio.h" +#include "portableio.h" +#include "timestatus.h" +#include "lametime.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +/* global data for get_audio.c. */ +int count_samples_carefully; +int pcmbitwidth; +int pcmswapbytes = 0; +unsigned int num_samples_read; +FILE *musicin; + + +#ifdef AMIGA_MPEGA +int lame_decode_initfile(const char *fullname, + mp3data_struct * const mp3data); +#else +int lame_decode_initfile(FILE * fd, mp3data_struct * mp3data); +#endif + +/* read mp3 file until mpglib returns one frame of PCM data */ +int lame_decode_fromfile(FILE * fd, short int pcm_l[], short int pcm_r[], + mp3data_struct * mp3data); + + +static int read_samples_pcm(FILE * musicin, int sample_buffer[2304], + int frame_size, int samples_to_read); +static int read_samples_mp3(lame_global_flags * const gfp, FILE * const musicin, + short int mpg123pcm[2][1152], int num_chan); +void CloseSndFile(sound_file_format input, FILE * musicin); +FILE *OpenSndFile(lame_global_flags * gfp, char *); + + +/* Replacement for forward fseek(,,SEEK_CUR), because fseek() fails on pipes */ + + +static int +fskip(FILE * fp, long offset, int whence) +{ +#ifndef PIPE_BUF + char buffer[4096]; +#else + char buffer[PIPE_BUF]; +#endif + int read; + + if (0 == fseek(fp, offset, whence)) + return 0; + + if (whence != SEEK_CUR || offset < 0) { + if( silent < 10 ) { + fprintf(stderr, + "fskip problem: Mostly the return status of functions is not evaluate so it is more secure to polute <stderr>.\n"); + } + return -1; + } + + while (offset > 0) { + read = offset > sizeof(buffer) ? sizeof(buffer) : offset; + if ((read = fread(buffer, 1, read, fp)) <= 0) + return -1; + offset -= read; + } + + return 0; +} + + +FILE * +init_outfile(char *outPath, int decode) +{ + FILE *outf; +#ifdef __riscos__ + char *p; +#endif + + /* open the output file */ + if (0 == strcmp(outPath, "-")) { + lame_set_stream_binary_mode(outf = stdout); + } + else { + if ((outf = fopen(outPath, "wb+")) == NULL) + return NULL; +#ifdef __riscos__ + /* Assign correct file type */ + for (p = outPath; *p; p++) /* ugly, ugly to modify a string */ + switch (*p) { + case '.': + *p = '/'; + break; + case '/': + *p = '.'; + break; + } + SetFiletype(outPath, decode ? 0xFB1 /*WAV*/ : 0x1AD /*AMPEG*/); +#endif + } + return outf; +} + + + + + + +void +init_infile(lame_global_flags * gfp, char *inPath) +{ + /* open the input file */ + count_samples_carefully = 0; + num_samples_read=0; + pcmbitwidth=in_bitwidth; + pcmswapbytes=swapbytes; + musicin = OpenSndFile(gfp, inPath); +} + +void +close_infile(void) +{ + CloseSndFile(input_format, musicin); +} + + +void +SwapBytesInWords(short *ptr, int short_words) +{ /* Some speedy code */ + unsigned long val; + unsigned long *p = (unsigned long *) ptr; + +#ifndef lint +# if defined(CHAR_BIT) +# if CHAR_BIT != 8 +# error CHAR_BIT != 8 +# endif +# else +# error can not determine number of bits in a char +# endif +#endif /* lint */ + + assert(sizeof(short) == 2); + + +#if defined(SIZEOF_UNSIGNED_LONG) && SIZEOF_UNSIGNED_LONG == 4 + for (; short_words >= 2; short_words -= 2, p++) { + val = *p; + *p = ((val << 8) & 0xFF00FF00) | ((val >> 8) & 0x00FF00FF); + } + ptr = (short *) p; + for (; short_words >= 1; short_words -= 1, ptr++) { + val = *ptr; + *ptr = ((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF); + } +#elif defined(SIZEOF_UNSIGNED_LONG) && SIZEOF_UNSIGNED_LONG == 8 + for (; short_words >= 4; short_words -= 4, p++) { + val = *p; + *p = + ((val << 8) & 0xFF00FF00FF00FF00) | ((val >> 8) & + 0x00FF00FF00FF00FF); + } + ptr = (short *) p; + for (; short_words >= 1; short_words -= 1, ptr++) { + val = *ptr; + *ptr = ((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF); + } +#else +# ifdef SIZEOF_UNSIGNED_LONG +# warning Using unoptimized SwapBytesInWords(). +# endif + for (; short_words >= 1; short_words -= 1, ptr++) { + val = *ptr; + *ptr = ((val << 8) & 0xFF00) | ((val >> 8) & 0x00FF); + } +#endif + + assert(short_words == 0); +} + + + +static int +get_audio_common( lame_global_flags * const gfp, + int buffer[2][1152], short buffer16[2][1152] ); + +/************************************************************************ +* +* get_audio() +* +* PURPOSE: reads a frame of audio data from a file to the buffer, +* aligns the data for future processing, and separates the +* left and right channels +* +************************************************************************/ +int +get_audio( lame_global_flags * const gfp, int buffer[2][1152] ) +{ + return( get_audio_common( gfp, buffer, NULL ) ); +} + +/* + get_audio16 - behave as the original get_audio function, with a limited + 16 bit per sample output +*/ +int +get_audio16( lame_global_flags * const gfp, short buffer[2][1152] ) +{ + return( get_audio_common( gfp, NULL, buffer ) ); +} + +/************************************************************************ + get_audio_common - central functionality of get_audio* + in: gfp + buffer output to the int buffer or 16-bit buffer + out: buffer int output (if buffer != NULL) + buffer16 16-bit output (if buffer == NULL) +returns: samples read +note: either buffer or buffer16 must be allocated upon call +*/ +static int +get_audio_common( lame_global_flags * const gfp, + int buffer[2][1152], short buffer16[2][1152] ) +{ + int num_channels = lame_get_num_channels( gfp ); + int insamp[2 * 1152]; + short buf_tmp16[2][1152]; + int samples_read; + int framesize; + int samples_to_read; + unsigned int remaining, tmp_num_samples; + int i; + int *p; + + /* + * NOTE: LAME can now handle arbritray size input data packets, + * so there is no reason to read the input data in chuncks of + * size "framesize". EXCEPT: the LAME graphical frame analyzer + * will get out of sync if we read more than framesize worth of data. + */ + + samples_to_read = framesize = lame_get_framesize(gfp); + assert(framesize <= 1152); + + /* get num_samples */ + tmp_num_samples = lame_get_num_samples( gfp ); + + /* if this flag has been set, then we are carefull to read + * exactly num_samples and no more. This is useful for .wav and .aiff + * files which have id3 or other tags at the end. Note that if you + * are using LIBSNDFILE, this is not necessary + */ + if (count_samples_carefully) { + remaining = tmp_num_samples - Min(tmp_num_samples, num_samples_read); + if (remaining < framesize && 0 != tmp_num_samples) + /* in case the input is a FIFO (at least it's reproducible with + a FIFO) tmp_num_samples may be 0 and therefore remaining + would be 0, but we need to read some samples, so don't + change samples_to_read to the wrong value in this case */ + samples_to_read = remaining; + } + + switch (input_format) { + case sf_mp1: + case sf_mp2: + case sf_mp3: + if( buffer != NULL ) + samples_read = read_samples_mp3( gfp, musicin, + buf_tmp16, num_channels ); + else + samples_read = read_samples_mp3( gfp, musicin, + buffer16, num_channels ); + break; + default: + samples_read = + read_samples_pcm(musicin, insamp, num_channels * framesize, + num_channels * samples_to_read); + p = insamp + samples_read; + samples_read /= num_channels; + if( buffer != NULL ) { /* output to int buffer */ + if( num_channels == 2 ) { + for( i = samples_read; --i >= 0; ) { + buffer[1][i] = *--p; + buffer[0][i] = *--p; + } + } else if( num_channels == 1 ) { + memset( buffer[1], 0, samples_read * sizeof(int) ); + for( i = samples_read; --i >= 0; ) { + buffer[0][i] = *--p; + } + } else + assert(0); + } else { /* convert from int; output to 16-bit buffer */ + if( num_channels == 2 ) { + for( i = samples_read; --i >= 0; ) { + buffer16[1][i] = *--p >> (8 * sizeof(int) - 16); + buffer16[0][i] = *--p >> (8 * sizeof(int) - 16); + } + } else if( num_channels == 1 ) { + memset( buffer16[1], 0, samples_read * sizeof(short) ); + for( i = samples_read; --i >= 0; ) { + buffer16[0][i] = *--p >> (8 * sizeof(int) - 16); + } + } else + assert(0); + } + } + + /* LAME mp3 output 16bit - convert to int, if necessary */ + if( input_format == sf_mp1 || input_format == sf_mp2 || + input_format == sf_mp3) { + if( buffer != NULL ) { + for( i = samples_read; --i >= 0; ) + buffer[0][i] = buf_tmp16[0][i] << (8 * sizeof(int) - 16); + if( num_channels == 2 ) { + for( i = samples_read; --i >= 0; ) + buffer[1][i] = buf_tmp16[1][i] << (8 * sizeof(int) - 16); + } else if( num_channels == 1 ) { + memset( buffer[1], 0, samples_read * sizeof(int) ); + } else + assert(0); + } + } + + + /* if num_samples = MAX_U_32_NUM, then it is considered infinitely long. + Don't count the samples */ + if ( tmp_num_samples != MAX_U_32_NUM ) + num_samples_read += samples_read; + + return samples_read; +} + + + +int +read_samples_mp3(lame_global_flags * const gfp, + FILE * const musicin, short int mpg123pcm[2][1152], int stereo) +{ + int out; +#if defined(AMIGA_MPEGA) || defined(HAVE_MPGLIB) + static const char type_name[] = "MP3 file"; + + out = + lame_decode_fromfile(musicin, mpg123pcm[0], mpg123pcm[1], + &mp3input_data); + /* + * out < 0: error, probably EOF + * out = 0: not possible with lame_decode_fromfile() ??? + * out > 0: number of output samples + */ + if (out < 0) { + memset(mpg123pcm, 0, sizeof(**mpg123pcm) * 2 * 1152); + return 0; + } + + if ( lame_get_num_channels( gfp ) != mp3input_data.stereo ) + if( silent < 10 ) { + fprintf(stderr, + "Error: number of channels has changed in %s - not supported\n", + type_name); + } + if ( lame_get_in_samplerate( gfp ) != mp3input_data.samplerate ) + if( silent < 10 ) { + fprintf(stderr, + "Error: sample frequency has changed in %s - not supported\n", + type_name); + } + +#else + out = -1; +#endif + return out; +} + + +int +WriteWaveHeader(FILE * const fp, const int pcmbytes, + const int freq, const int channels, const int bits) +{ + int bytes = (bits + 7) / 8; + + /* quick and dirty, but documented */ + fwrite("RIFF", 1, 4, fp); /* label */ + Write32BitsLowHigh(fp, pcmbytes + 44 - 8); /* length in bytes without header */ + fwrite("WAVEfmt ", 2, 4, fp); /* 2 labels */ + Write32BitsLowHigh(fp, 2 + 2 + 4 + 4 + 2 + 2); /* length of PCM format declaration area */ + Write16BitsLowHigh(fp, 1); /* is PCM? */ + Write16BitsLowHigh(fp, channels); /* number of channels */ + Write32BitsLowHigh(fp, freq); /* sample frequency in [Hz] */ + Write32BitsLowHigh(fp, freq * channels * bytes); /* bytes per second */ + Write16BitsLowHigh(fp, channels * bytes); /* bytes per sample time */ + Write16BitsLowHigh(fp, bits); /* bits per sample */ + fwrite("data", 1, 4, fp); /* label */ + Write32BitsLowHigh(fp, pcmbytes); /* length in bytes of raw PCM data */ + + return ferror(fp) ? -1 : 0; +} + + + + +#if defined(LIBSNDFILE) + +/* +** Copyright (C) 1999 Albert Faber +** + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + + + + + +void +CloseSndFile(sound_file_format input, FILE * musicin) +{ + SNDFILE *gs_pSndFileIn = (SNDFILE *) musicin; + if (input == sf_mp1 || input == sf_mp2 || input == sf_mp3) { +#ifndef AMIGA_MPEGA + if (fclose(musicin) != 0) { + if( silent < 10 ) { + fprintf(stderr, "Could not close audio input file\n"); + } + exit(2); + } +#endif + } + else { + if (gs_pSndFileIn) { + if (sf_close(gs_pSndFileIn) != 0) { + if( silent < 10 ) { + fprintf(stderr, "Could not close sound file \n"); + } + exit(2); + } + } + } +} + + + +FILE * +OpenSndFile(lame_global_flags * gfp, char *inPath) +{ + char *lpszFileName = inPath; + FILE *musicin; + SNDFILE *gs_pSndFileIn; + SF_INFO gs_wfInfo; + + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { +#ifdef AMIGA_MPEGA + if (-1 == lame_decode_initfile(lpszFileName, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + lpszFileName); + } + exit(1); + } +#endif +#ifdef HAVE_MPGLIB + if ((musicin = fopen(lpszFileName, "rb")) == NULL) { + if( silent < 10 ) { + fprintf(stderr, "Could not find \"%s\".\n", lpszFileName); + } + exit(1); + } + if (-1 == lame_decode_initfile(musicin, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + lpszFileName); + } + exit(1); + } +#endif + + if( -1 == lame_set_num_channels( gfp, mp3input_data.stereo ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + mp3input_data.stereo ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, mp3input_data.samplerate ); + (void) lame_set_num_samples( gfp, mp3input_data.nsamp ); + } + else if (input_format == sf_ogg) { + if( silent < 10 ) { + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + } + exit(1); + } + else { + + /* Try to open the sound file */ + /* set some defaults incase input is raw PCM */ + gs_wfInfo.seekable = (input_format != sf_raw); /* if user specified -r, set to not seekable */ + gs_wfInfo.samplerate = lame_get_in_samplerate( gfp ); + gs_wfInfo.pcmbitwidth = in_bitwidth; + gs_wfInfo.channels = lame_get_num_channels( gfp ); + + if (in_bitwidth == 8) { + if (in_signed) + gs_wfInfo.format = SF_FORMAT_RAW_S8; + else + gs_wfInfo.format = SF_FORMAT_RAW_U8; + + } else { + if (!in_signed) { + fputs("Unsigned input only supported with bitwidth 8\n", stderr); + exit(1); + } + if (in_endian != order_unknown) { + if (in_endian == order_littleEndian) + gs_wfInfo.format = SF_FORMAT_RAW_LE; + else + gs_wfInfo.format = SF_FORMAT_RAW_BE; + } else { +#ifndef WORDS_BIGENDIAN + /* little endian */ + if (swapbytes) + gs_wfInfo.format = SF_FORMAT_RAW_BE; + else + gs_wfInfo.format = SF_FORMAT_RAW_LE; +#else + if (swapbytes) + gs_wfInfo.format = SF_FORMAT_RAW_LE; + else + gs_wfInfo.format = SF_FORMAT_RAW_BE; +#endif + } + } + + gs_pSndFileIn = sf_open_read(lpszFileName, &gs_wfInfo); + musicin = (SNDFILE *) gs_pSndFileIn; + + /* Check result */ + if (gs_pSndFileIn == NULL) { + sf_perror(gs_pSndFileIn); + if( silent < 10 ) { + fprintf(stderr, "Could not open sound file \"%s\".\n", + lpszFileName); + } + exit(1); + } + + if ((gs_wfInfo.format == SF_FORMAT_RAW_LE) || + (gs_wfInfo.format == SF_FORMAT_RAW_BE) || + (gs_wfInfo.format == SF_FORMAT_RAW_S8) || + (gs_wfInfo.format == SF_FORMAT_RAW_U8)) + input_format = sf_raw; + +#ifdef _DEBUG_SND_FILE + DEBUGF("\n\nSF_INFO structure\n"); + DEBUGF("samplerate :%d\n", gs_wfInfo.samplerate); + DEBUGF("samples :%d\n", gs_wfInfo.samples); + DEBUGF("channels :%d\n", gs_wfInfo.channels); + DEBUGF("pcmbitwidth :%d\n", gs_wfInfo.pcmbitwidth); + DEBUGF("format :"); + + /* new formats from sbellon@sbellon.de 1/2000 */ + + switch (gs_wfInfo.format & SF_FORMAT_TYPEMASK) { + case SF_FORMAT_WAV: + DEBUGF("Microsoft WAV format (big endian). "); + break; + case SF_FORMAT_AIFF: + DEBUGF("Apple/SGI AIFF format (little endian). "); + break; + case SF_FORMAT_AU: + DEBUGF("Sun/NeXT AU format (big endian). "); + break; + case SF_FORMAT_AULE: + DEBUGF("DEC AU format (little endian). "); + break; + case SF_FORMAT_RAW: + DEBUGF("RAW PCM data. "); + break; + case SF_FORMAT_PAF: + DEBUGF("Ensoniq PARIS file format. "); + break; + case SF_FORMAT_SVX: + DEBUGF("Amiga IFF / SVX8 / SV16 format. "); + break; + case SF_FORMAT_NIST: + DEBUGF("Sphere NIST format. "); + break; + default: + assert(0); + break; + } + + switch (gs_wfInfo.format & SF_FORMAT_SUBMASK) { + case SF_FORMAT_PCM: + DEBUGF("PCM data in 8, 16, 24 or 32 bits."); + break; + case SF_FORMAT_FLOAT: + DEBUGF("32 bit Intel x86 floats."); + break; + case SF_FORMAT_ULAW: + DEBUGF("U-Law encoded."); + break; + case SF_FORMAT_ALAW: + DEBUGF("A-Law encoded."); + break; + case SF_FORMAT_IMA_ADPCM: + DEBUGF("IMA ADPCM."); + break; + case SF_FORMAT_MS_ADPCM: + DEBUGF("Microsoft ADPCM."); + break; + case SF_FORMAT_PCM_BE: + DEBUGF("Big endian PCM data."); + break; + case SF_FORMAT_PCM_LE: + DEBUGF("Little endian PCM data."); + break; + case SF_FORMAT_PCM_S8: + DEBUGF("Signed 8 bit PCM."); + break; + case SF_FORMAT_PCM_U8: + DEBUGF("Unsigned 8 bit PCM."); + break; + case SF_FORMAT_SVX_FIB: + DEBUGF("SVX Fibonacci Delta encoding."); + break; + case SF_FORMAT_SVX_EXP: + DEBUGF("SVX Exponential Delta encoding."); + break; + default: + assert(0); + break; + } + + DEBUGF("\n"); + DEBUGF("pcmbitwidth :%d\n", gs_wfInfo.pcmbitwidth); + DEBUGF("sections :%d\n", gs_wfInfo.sections); + DEBUGF("seekable :\n", gs_wfInfo.seekable); +#endif + + (void) lame_set_num_samples( gfp, gs_wfInfo.samples ); + if( -1 == lame_set_num_channels( gfp, gs_wfInfo.channels ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + gs_wfInfo.channels ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, gs_wfInfo.samplerate ); + pcmbitwidth = gs_wfInfo.pcmbitwidth; + } + + if (lame_get_num_samples( gfp ) == MAX_U_32_NUM) { + /* try to figure out num_samples */ + double flen = lame_get_file_size( lpszFileName ); + + if (flen >= 0) { + /* try file size, assume 2 bytes per sample */ + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { + if (mp3input_data.bitrate>0) { + double totalseconds = + (flen * 8.0 / (1000.0 * mp3input_data.bitrate)); + unsigned long tmp_num_samples = + totalseconds * lame_get_in_samplerate( gfp ); + + (void) lame_set_num_samples( gfp, tmp_num_samples ); + mp3input_data.nsamp = tmp_num_samples; + } + } + else { + lame_set_num_samples( gfp, + flen / (2 * lame_get_num_channels( gfp )) ); + } + } + } + + + return musicin; +} + + +/************************************************************************ +* +* read_samples() +* +* PURPOSE: reads the PCM samples from a file to the buffer +* +* SEMANTICS: +* Reads #samples_read# number of shorts from #musicin# filepointer +* into #sample_buffer[]#. Returns the number of samples read. +* +************************************************************************/ + +static int +read_samples_pcm(FILE * const musicin, int sample_buffer[2304], + int frame_size /* unused */ , int samples_to_read) +{ + int i; + int samples_read; + + samples_read = + sf_read_int((SNDFILE *) musicin, sample_buffer, samples_to_read); + + switch (pcmbitwidth) { + case 8: + for (i = 0; i < samples_read; i++) + sample_buffer[i] <<= (8 * sizeof(int) - 8); + break; + case 16: + for (i = 0; i < samples_read; i++) + sample_buffer[i] <<= (8 * sizeof(int) - 16); + break; + case 24: + for (i = 0; i < samples_read; i++) + sample_buffer[i] <<= (8 * sizeof(int) - 24); + break; + case 32: + break; + default: + if( silent < 10 ) { + fprintf(stderr, "Only 8, 16, 24 and 32 bit input files supported \n"); + } + exit(1); + } + + return samples_read; +} + + +#else /* defined(LIBSNDFILE) */ + +/************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + * + * OLD ISO/LAME routines follow. Used if you dont have LIBSNDFILE + * or for stdin/stdout support + * + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************ + ************************************************************************/ + + + +/************************************************************************ +unpack_read_samples - read and unpack signed low-to-high byte or unsigned + single byte input. (used for read_samples function) + Output integers are stored in the native byte order + (little or big endian). -jd + in: samples_to_read + bytes_per_sample + swap_order - set for high-to-low byte order input stream + i/o: pcm_in + out: sample_buffer (must be allocated up to samples_to_read upon call) +returns: number of samples read +*/ +static int +unpack_read_samples( const int samples_to_read, const int bytes_per_sample, + const int swap_order, int *sample_buffer, FILE *pcm_in ) +{ + int samples_read; + int i; + int *op; /* output pointer */ + unsigned char *ip = (unsigned char *) sample_buffer; /* input pointer */ + const int b = sizeof(int) * 8; + +#define GA_URS_IFLOOP( ga_urs_bps ) \ + if( bytes_per_sample == ga_urs_bps ) \ + for( i = samples_read * bytes_per_sample; (i -= bytes_per_sample) >=0;) + + + samples_read = fread( sample_buffer, bytes_per_sample, + samples_to_read, pcm_in); + op = sample_buffer + samples_read; + + GA_URS_IFLOOP( 1 ) + *--op = (ip[i] ^ 0x80)<<(b-8) | 0x7f<<(b-16);/* convert from unsigned*/ + if( swap_order == 0 ) { + GA_URS_IFLOOP( 2 ) + *--op = ip[i]<<(b-16) | ip[i+1]<<(b-8); + GA_URS_IFLOOP( 3 ) + *--op = ip[i]<<(b-24) | ip[i+1]<<(b-16) | ip[i+2]<<(b-8); + GA_URS_IFLOOP( 4 ) + *--op = ip[i]<<(b-32) | ip[i+1]<<(b-24) | ip[i+2]<<(b-16) | ip[i+3] << (b-8); + } else { + GA_URS_IFLOOP( 2 ) + *--op = ip[i]<<(b-8) | ip[i+1]<<(b-16); + GA_URS_IFLOOP( 3 ) + *--op = ip[i]<<(b-8) | ip[i+1]<<(b-16) | ip[i+2]<<(b-24); + GA_URS_IFLOOP( 4 ) + *--op = ip[i]<<(b-8) | ip[i+1]<<(b-16) | ip[i+2]<<(b-24) | ip[i+3]<<(b-32); + } +#undef GA_URS_IFLOOP + return( samples_read ); +} + + + +/************************************************************************ +* +* read_samples() +* +* PURPOSE: reads the PCM samples from a file to the buffer +* +* SEMANTICS: +* Reads #samples_read# number of shorts from #musicin# filepointer +* into #sample_buffer[]#. Returns the number of samples read. +* +************************************************************************/ + +int +read_samples_pcm(FILE * musicin, int sample_buffer[2304], int frame_size, + int samples_to_read) +{ + int samples_read; + int iswav = (input_format == sf_wave); + int hi_lo_order; /* byte order of input stream */ + + if( (32 == pcmbitwidth) || (24 == pcmbitwidth) || (16 == pcmbitwidth) ) { + /* assume only recognized wav files are */ + /* in little endian byte order */ + hi_lo_order = (!iswav == !pcmswapbytes); + samples_read = unpack_read_samples(samples_to_read, pcmbitwidth/8, + hi_lo_order,sample_buffer, musicin ); + + } else if( 8 == pcmbitwidth ) { + samples_read = unpack_read_samples( samples_to_read, 1, 0, + sample_buffer, musicin ); + } else { + if( silent < 10 ) { + fprintf(stderr, "Only 8, 16, 24 and 32 bit input files supported \n"); + } + exit(1); + } + if (ferror(musicin)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading input file\n"); + } + exit(1); + } + + return samples_read; +} + + + +/* AIFF Definitions */ + +#define IFF_ID_FORM 0x464f524d /* "FORM" */ +#define IFF_ID_AIFF 0x41494646 /* "AIFF" */ +#define IFF_ID_AIFC 0x41494643 /* "AIFC" */ +#define IFF_ID_COMM 0x434f4d4d /* "COMM" */ +#define IFF_ID_SSND 0x53534e44 /* "SSND" */ +#define IFF_ID_MPEG 0x4d504547 /* "MPEG" */ + +#define IFF_ID_NONE 0x4e4f4e45 /* "NONE" */ /* AIFF-C data format */ +#define IFF_ID_2CBE 0x74776f73 /* "twos" */ /* AIFF-C data format */ +#define IFF_ID_2CLE 0x736f7774 /* "sowt" */ /* AIFF-C data format */ + +#define WAV_ID_RIFF 0x52494646 /* "RIFF" */ +#define WAV_ID_WAVE 0x57415645 /* "WAVE" */ +#define WAV_ID_FMT 0x666d7420 /* "fmt " */ +#define WAV_ID_DATA 0x64617461 /* "data" */ + + + + +/***************************************************************************** + * + * Read Microsoft Wave headers + * + * By the time we get here the first 32-bits of the file have already been + * read, and we're pretty sure that we're looking at a WAV file. + * + *****************************************************************************/ + +static int +parse_wave_header(lame_global_flags * gfp, FILE * sf) +{ + int format_tag = 0; + int channels = 0; + int block_align = 0; + int bits_per_sample = 0; + int samples_per_sec = 0; + int avg_bytes_per_sec = 0; + + + int is_wav = 0; + long data_length = 0, file_length, subSize = 0; + int loop_sanity = 0; + + file_length = Read32BitsHighLow(sf); + + if (Read32BitsHighLow(sf) != WAV_ID_WAVE) + return 0; + + for (loop_sanity = 0; loop_sanity < 20; ++loop_sanity) { + int type = Read32BitsHighLow(sf); + + if (type == WAV_ID_FMT) { + subSize = Read32BitsLowHigh(sf); + if (subSize < 16) { + /*DEBUGF( + "'fmt' chunk too short (only %ld bytes)!", subSize); */ + return 0; + } + + format_tag = Read16BitsLowHigh(sf); + subSize -= 2; + channels = Read16BitsLowHigh(sf); + subSize -= 2; + samples_per_sec = Read32BitsLowHigh(sf); + subSize -= 4; + avg_bytes_per_sec = Read32BitsLowHigh(sf); + subSize -= 4; + block_align = Read16BitsLowHigh(sf); + subSize -= 2; + bits_per_sample = Read16BitsLowHigh(sf); + subSize -= 2; + + /* DEBUGF(" skipping %d bytes\n", subSize); */ + + if (subSize > 0) { + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + }; + + } + else if (type == WAV_ID_DATA) { + subSize = Read32BitsLowHigh(sf); + data_length = subSize; + is_wav = 1; + /* We've found the audio data. Read no further! */ + break; + + } + else { + subSize = Read32BitsLowHigh(sf); + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + } + } + + if (format_tag != 1) { + return 0; /* oh no! non-supported format */ + } + + + if (is_wav) { + /* make sure the header is sane */ + if( -1 == lame_set_num_channels( gfp, channels ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + channels ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, samples_per_sec ); + pcmbitwidth = bits_per_sample; + (void) lame_set_num_samples( gfp, + data_length / (channels * ((bits_per_sample+7) / 8)) ); + } + return is_wav; +} + + + +/************************************************************************ +* aiff_check2 +* +* PURPOSE: Checks AIFF header information to make sure it is valid. +* returns 0 on success, 1 on errors +************************************************************************/ + +int +aiff_check2(const char *file_name, IFF_AIFF * const pcm_aiff_data) +{ + if (pcm_aiff_data->sampleType != IFF_ID_SSND) { + if( silent < 10 ) { + fprintf(stderr, "Sound data is not PCM in '%s'\n", file_name); + } + return 1; + } + if (pcm_aiff_data->sampleSize != sizeof(short) * CHAR_BIT) { + if( silent < 10 ) { + fprintf(stderr, "Sound data is not %i bits in '%s'\n", + sizeof(short) * CHAR_BIT, file_name); + } + return 1; + } + if (pcm_aiff_data->numChannels != 1 && pcm_aiff_data->numChannels != 2) { + if( silent < 10 ) { + fprintf(stderr, "Sound data is not mono or stereo in '%s'\n", + file_name); + } + return 1; + } + if (pcm_aiff_data->blkAlgn.blockSize != 0) { + if( silent < 10 ) { + fprintf(stderr, "Block size is not 0 bytes in '%s'\n", file_name); + } + return 1; + } + /* A bug, since we correctly skip the offset earlier in the code. + if (pcm_aiff_data->blkAlgn.offset != 0) { + fprintf(stderr, "Block offset is not 0 bytes in '%s'\n", file_name); + return 1; + } */ + + return 0; +} + +/***************************************************************************** + * + * Read Audio Interchange File Format (AIFF) headers. + * + * By the time we get here the first 32 bits of the file have already been + * read, and we're pretty sure that we're looking at an AIFF file. + * + *****************************************************************************/ + +static int +parse_aiff_header(lame_global_flags * gfp, FILE * sf) +{ + int is_aiff = 0; + long chunkSize = 0, subSize = 0, typeID = 0, dataType = 0; + IFF_AIFF aiff_info; + + memset(&aiff_info, 0, sizeof(aiff_info)); + chunkSize = Read32BitsHighLow(sf); + + typeID = Read32BitsHighLow(sf); + if ((typeID != IFF_ID_AIFF)&&(typeID != IFF_ID_AIFC)) + return 0; + + while (chunkSize > 0) { + int type = Read32BitsHighLow(sf); + chunkSize -= 4; + + /* DEBUGF( + "found chunk type %08x '%4.4s'\n", type, (char*)&type); */ + + /* don't use a switch here to make it easier to use 'break' for SSND */ + if (type == IFF_ID_COMM) { + subSize = Read32BitsHighLow(sf); + chunkSize -= subSize; + + aiff_info.numChannels = Read16BitsHighLow(sf); + subSize -= 2; + aiff_info.numSampleFrames = Read32BitsHighLow(sf); + subSize -= 4; + aiff_info.sampleSize = Read16BitsHighLow(sf); + subSize -= 2; + aiff_info.sampleRate = ReadIeeeExtendedHighLow(sf); + subSize -= 10; + + if (typeID == IFF_ID_AIFC) { + dataType = Read32BitsHighLow(sf); + subSize -= 4; + + if ((dataType != IFF_ID_2CLE) && + (dataType != IFF_ID_2CBE) && + (dataType != IFF_ID_NONE)) + return 0; + + if (aiff_info.sampleSize == 16) + pcmswapbytes = (!swapbytes == (dataType == IFF_ID_2CLE)); + } + + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + } + else if (type == IFF_ID_SSND) { + subSize = Read32BitsHighLow(sf); + chunkSize -= subSize; + + aiff_info.blkAlgn.offset = Read32BitsHighLow(sf); + subSize -= 4; + aiff_info.blkAlgn.blockSize = Read32BitsHighLow(sf); + subSize -= 4; + + if (fskip(sf, (long) aiff_info.blkAlgn.offset, SEEK_CUR) != 0) + return 0; + + aiff_info.sampleType = IFF_ID_SSND; + is_aiff = 1; + + /* We've found the audio data. Read no further! */ + break; + + } + else { + subSize = Read32BitsHighLow(sf); + chunkSize -= subSize; + + if (fskip(sf, (long) subSize, SEEK_CUR) != 0) + return 0; + } + } + + /* DEBUGF("Parsed AIFF %d\n", is_aiff); */ + if (is_aiff) { + /* make sure the header is sane */ + if (0 != aiff_check2("name" /*???????????? */ , &aiff_info)) + return 0; + if( -1 == lame_set_num_channels( gfp, aiff_info.numChannels ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + aiff_info.numChannels ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, (int)aiff_info.sampleRate ); + pcmbitwidth = aiff_info.sampleSize; + (void) lame_set_num_samples( gfp, aiff_info.numSampleFrames ); + } + return is_aiff; +} + + + +/************************************************************************ +* +* parse_file_header +* +* PURPOSE: Read the header from a bytestream. Try to determine whether +* it's a WAV file or AIFF without rewinding, since rewind +* doesn't work on pipes and there's a good chance we're reading +* from stdin (otherwise we'd probably be using libsndfile). +* +* When this function returns, the file offset will be positioned at the +* beginning of the sound data. +* +************************************************************************/ + +void +parse_file_header(lame_global_flags * gfp, FILE * sf) +{ + + int type = Read32BitsHighLow(sf); + /* + DEBUGF( + "First word of input stream: %08x '%4.4s'\n", type, (char*) &type); + */ + count_samples_carefully = 0; + input_format = sf_raw; + + if (type == WAV_ID_RIFF) { + /* It's probably a WAV file */ + if (parse_wave_header(gfp, sf)) { + input_format = sf_wave; + count_samples_carefully = 1; + } else { + if( silent < 10 ) { + fprintf( stderr, "Warning: corrupt or unsupported WAVE format\n"); + } + } + } + else if (type == IFF_ID_FORM) { + /* It's probably an AIFF file */ + if (parse_aiff_header(gfp, sf)) { + input_format = sf_aiff; + count_samples_carefully = 1; + } + } + if (input_format == sf_raw) { + /* + ** Assume it's raw PCM. Since the audio data is assumed to begin + ** at byte zero, this will unfortunately require seeking. + */ + if (fseek(sf, 0L, SEEK_SET) != 0) { + /* ignore errors */ + } + input_format = sf_raw; + } +} + + + +void +CloseSndFile(sound_file_format input, FILE * musicin) +{ + if (fclose(musicin) != 0) { + if( silent < 10 ) { + fprintf(stderr, "Could not close audio input file\n"); + } + exit(2); + } +} + + + + + +FILE * +OpenSndFile(lame_global_flags * gfp, char *inPath) +{ + FILE *musicin; + + /* set the defaults from info incase we cannot determine them from file */ + lame_set_num_samples( gfp, MAX_U_32_NUM ); + + + if (!strcmp(inPath, "-")) { + lame_set_stream_binary_mode(musicin = stdin); /* Read from standard input. */ + } + else { + if ((musicin = fopen(inPath, "rb")) == NULL) { + if( silent < 10 ) { + fprintf(stderr, "Could not find \"%s\".\n", inPath); + } + exit(1); + } + } + + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { +#ifdef AMIGA_MPEGA + if (-1 == lame_decode_initfile(inPath, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + inPath); + } + exit(1); + } +#endif +#ifdef HAVE_MPGLIB + if (-1 == lame_decode_initfile(musicin, &mp3input_data)) { + if( silent < 10 ) { + fprintf(stderr, "Error reading headers in mp3 input file %s.\n", + inPath); + } + exit(1); + } +#endif + if( -1 == lame_set_num_channels( gfp, mp3input_data.stereo ) ) { + if( silent < 10 ) { + fprintf( stderr, + "Unsupported number of channels: %ud\n", + mp3input_data.stereo ); + } + exit( 1 ); + } + (void) lame_set_in_samplerate( gfp, mp3input_data.samplerate ); + (void) lame_set_num_samples( gfp, mp3input_data.nsamp ); + } + else if (input_format == sf_ogg) { + if( silent < 10 ) { + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + } + exit(1); + } + else { + if (input_format != sf_raw) { + parse_file_header(gfp, musicin); + } + + if (input_format == sf_raw) { + /* assume raw PCM */ + if( silent < 10 ) { + fprintf(stderr, "Assuming raw pcm input file"); + if (swapbytes) + fprintf(stderr, " : Forcing byte-swapping\n"); + else + fprintf(stderr, "\n"); + } + pcmswapbytes = swapbytes; + } + } + + + if (lame_get_num_samples( gfp ) == MAX_U_32_NUM && musicin != stdin) { + + double flen = lame_get_file_size(inPath); /* try to figure out num_samples */ + if (flen >= 0) { + /* try file size, assume 2 bytes per sample */ + if (input_format == sf_mp1 || + input_format == sf_mp2 || input_format == sf_mp3) { + + if (mp3input_data.bitrate > 0) { + double totalseconds = + (flen * 8.0 / (1000.0 * mp3input_data.bitrate)); + unsigned long tmp_num_samples = + (unsigned long) (totalseconds * lame_get_in_samplerate( gfp )); + + (void) lame_set_num_samples( gfp, tmp_num_samples ); + mp3input_data.nsamp = tmp_num_samples; + } + } + else { + (void) lame_set_num_samples( gfp, + (unsigned long)(flen / (2 * lame_get_num_channels( gfp ))) ); + } + } + } + return musicin; +} +#endif /* defined(LIBSNDFILE) */ + + + + + +#if defined(HAVE_MPGLIB) +static int +check_aid(const unsigned char *header) +{ + return 0 == memcmp(header, "AiD\1", 4); +} + +/* + * Please check this and don't kill me if there's a bug + * This is a (nearly?) complete header analysis for a MPEG-1/2/2.5 Layer I, II or III + * data stream + */ + +static int +is_syncword_mp123(const void *const headerptr) +{ + const unsigned char *const p = headerptr; + static const char abl2[16] = + { 0, 7, 7, 7, 0, 7, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8 }; + + if ((p[0] & 0xFF) != 0xFF) + return 0; /* first 8 bits must be '1' */ + if ((p[1] & 0xE0) != 0xE0) + return 0; /* next 3 bits are also */ + if ((p[1] & 0x18) == 0x08) + return 0; /* no MPEG-1, -2 or -2.5 */ + if ((p[1] & 0x06) == 0x00) + return 0; /* no Layer I, II and III */ +#ifndef USE_LAYER_1 + if ((p[1] & 0x06) == 0x03*2) + return 0; /* layer1 is not supported */ +#endif +#ifndef USE_LAYER_2 + if ((p[1] & 0x06) == 0x02*2) + return 0; /* layer1 is not supported */ +#endif + if (!(((p[1] & 0x06) == 0x03*2 && input_format == sf_mp1) + || ((p[1] & 0x06) == 0x02*2 && input_format == sf_mp2) + || ((p[1] & 0x06) == 0x01*2 && input_format == sf_mp3))) + return 0; /* imcompatible layer with input file format */ + if ((p[2] & 0xF0) == 0xF0) + return 0; /* bad bitrate */ + if ((p[2] & 0x0C) == 0x0C) + return 0; /* no sample frequency with (32,44.1,48)/(1,2,4) */ + if ((p[1] & 0x18) == 0x18 && (p[1] & 0x06) == 0x04 + && abl2[p[2] >> 4] & (1 << (p[3] >> 6))) + return 0; + if ((p[3] & 3) == 2) + return 0; /* reserved enphasis mode */ + return 1; +} + +int +lame_decode_initfile(FILE * fd, mp3data_struct * mp3data) +{ + /* VBRTAGDATA pTagData; */ + /* int xing_header,len2,num_frames; */ + unsigned char buf[100]; + int ret; + int len, aid_header; + short int pcm_l[1152], pcm_r[1152]; + int freeformat = 0; + + memset(mp3data, 0, sizeof(mp3data_struct)); + lame_decode_init(); + + len = 4; + if (fread(buf, 1, len, fd) != len) + return -1; /* failed */ + if (buf[0] == 'I' && buf[1] == 'D' && buf[2] == '3') { + if( silent < 10 ) { + fprintf(stderr, "ID3v2 found. " + "Be aware that the ID3 tag is currently lost when transcoding.\n"); + } + len = 6; + if (fread(&buf, 1, len, fd) != len) + return -1; /* failed */ + buf[2] &= 127; buf[3] &= 127; buf[4] &= 127; buf[5] &= 127; + len = (((((buf[2] << 7) + buf[3]) << 7) + buf[4]) << 7) + buf[5]; + fskip(fd, len, SEEK_CUR); + len = 4; + if (fread(&buf, 1, len, fd) != len) + return -1; /* failed */ + } + aid_header = check_aid(buf); + if (aid_header) { + if (fread(&buf, 1, 2, fd) != 2) + return -1; /* failed */ + aid_header = (unsigned char) buf[0] + 256 * (unsigned char) buf[1]; + if( silent < 10 ) { + fprintf(stderr, "Album ID found. length=%i \n", aid_header); + } + /* skip rest of AID, except for 6 bytes we have already read */ + fskip(fd, aid_header - 6, SEEK_CUR); + + /* read 4 more bytes to set up buffer for MP3 header check */ + if (fread(&buf, 1, len, fd) != len) + return -1; /* failed */ + } + len = 4; + while (!is_syncword_mp123(buf)) { + int i; + for (i = 0; i < len - 1; i++) + buf[i] = buf[i + 1]; + if (fread(buf + len - 1, 1, 1, fd) != 1) + return -1; /* failed */ + } + + if ((buf[2] & 0xf0)==0) { + if( silent < 10 ) { + fprintf(stderr,"Input file is freeformat.\n"); + } + freeformat = 1; + } + /* now parse the current buffer looking for MP3 headers. */ + /* (as of 11/00: mpglib modified so that for the first frame where */ + /* headers are parsed, no data will be decoded. */ + /* However, for freeformat, we need to decode an entire frame, */ + /* so mp3data->bitrate will be 0 until we have decoded the first */ + /* frame. Cannot decode first frame here because we are not */ + /* yet prepared to handle the output. */ + ret = lame_decode1_headersB(buf, len, pcm_l, pcm_r, mp3data,&enc_delay,&enc_padding); + if (-1 == ret) + return -1; + + /* repeat until we decode a valid mp3 header. */ + while (!mp3data->header_parsed) { + len = fread(buf, 1, sizeof(buf), fd); + if (len != sizeof(buf)) + return -1; + ret = lame_decode1_headersB(buf, len, pcm_l, pcm_r, mp3data,&enc_delay,&enc_padding); + if (-1 == ret) + return -1; + } + + if (mp3data->bitrate==0 && !freeformat) { + if( silent < 10 ) { + fprintf(stderr, "fail to sync...\n"); + } + return lame_decode_initfile(fd, mp3data); + } + + if (mp3data->totalframes > 0) { + /* mpglib found a Xing VBR header and computed nsamp & totalframes */ + } + else { + /* set as unknown. Later, we will take a guess based on file size + * ant bitrate */ + mp3data->nsamp = MAX_U_32_NUM; + } + + + /* + fprintf(stderr,"ret = %i NEED_MORE=%i \n",ret,MP3_NEED_MORE); + fprintf(stderr,"stereo = %i \n",mp.fr.stereo); + fprintf(stderr,"samp = %i \n",freqs[mp.fr.sampling_frequency]); + fprintf(stderr,"framesize = %i \n",framesize); + fprintf(stderr,"bitrate = %i \n",mp3data->bitrate); + fprintf(stderr,"num frames = %ui \n",num_frames); + fprintf(stderr,"num samp = %ui \n",mp3data->nsamp); + fprintf(stderr,"mode = %i \n",mp.fr.mode); + */ + + return 0; +} + +/* +For lame_decode_fromfile: return code + -1 error + n number of samples output. either 576 or 1152 depending on MP3 file. + + +For lame_decode1_headers(): return code + -1 error + 0 ok, but need more data before outputing any samples + n number of samples output. either 576 or 1152 depending on MP3 file. +*/ +int +lame_decode_fromfile(FILE * fd, short pcm_l[], short pcm_r[], + mp3data_struct * mp3data) +{ + int ret = 0, len=0; + unsigned char buf[1024]; + + /* first see if we still have data buffered in the decoder: */ + ret = lame_decode1_headers(buf, len, pcm_l, pcm_r, mp3data); + if (ret!=0) return ret; + + + /* read until we get a valid output frame */ + while (1) { + len = fread(buf, 1, 1024, fd); + if (len == 0) { + /* we are done reading the file, but check for buffered data */ + ret = lame_decode1_headers(buf, len, pcm_l, pcm_r, mp3data); + if (ret<=0) { + lame_decode_exit(); /* release mp3decoder memory */ + return -1; /* done with file */ + } + break; + } + + ret = lame_decode1_headers(buf, len, pcm_l, pcm_r, mp3data); + if (ret == -1) { + lame_decode_exit(); /* release mp3decoder memory */ + return -1; + } + if (ret >0) break; + } + return ret; +} +#endif /* defined(HAVE_MPGLIB) */ + +/* end of get_audio.c */ + diff --git a/lame-3.97/frontend/get_audio.h b/lame-3.97/frontend/get_audio.h new file mode 100644 index 0000000..e092be5 --- /dev/null +++ b/lame-3.97/frontend/get_audio.h @@ -0,0 +1,107 @@ +/* + * Get Audio routines include file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifndef LAME_GET_AUDIO_H +#define LAME_GET_AUDIO_H +#include "lame.h" +#include <stdio.h> + +typedef enum sound_file_format_e { + sf_unknown, + sf_raw, + sf_wave, + sf_aiff, + sf_mp1, /* MPEG Layer 1, aka mpg */ + sf_mp2, /* MPEG Layer 2 */ + sf_mp3, /* MPEG Layer 3 */ + sf_ogg +} sound_file_format; + + + + +FILE *init_outfile ( char *outPath, int decode ); +void init_infile(lame_global_flags *, char *inPath); +void close_infile(void); +int get_audio(lame_global_flags * const gfp, int buffer[2][1152]); +int get_audio16(lame_global_flags * const gfp, short buffer[2][1152]); +int WriteWaveHeader(FILE * const fp, const int pcmbytes, + const int freq, const int channels, const int bits); + + + +/* the simple lame decoder */ +/* After calling lame_init(), lame_init_params() and + * init_infile(), call this routine to read the input MP3 file + * and output .wav data to the specified file pointer + * lame_decoder will ignore the first 528 samples, since these samples + * represent the mpglib decoding delay (and are all 0). + *skip = number of additional + * samples to skip, to (for example) compensate for the encoder delay, + * only used when decoding mp3 +*/ +int lame_decoder(lame_global_flags *gfp,FILE *outf,int skip, char *inPath, char *outPath); + + + +void SwapBytesInWords( short *loc, int words ); + + + +#ifdef LIBSNDFILE + +#include "sndfile.h" + + +#else +/***************************************************************** + * LAME/ISO built in audio file I/O routines + *******************************************************************/ +#include "portableio.h" + + +typedef struct blockAlign_struct { + unsigned long offset; + unsigned long blockSize; +} blockAlign; + +typedef struct IFF_AIFF_struct { + short numChannels; + unsigned long numSampleFrames; + short sampleSize; + double sampleRate; + unsigned long sampleType; + blockAlign blkAlgn; +} IFF_AIFF; + +extern int aiff_read_headers(FILE*, IFF_AIFF*); +extern int aiff_seek_to_sound_data(FILE*); +extern int aiff_write_headers(FILE*, IFF_AIFF*); +extern int parse_wavheader(void); +extern int parse_aiff(const char fn[]); +extern void aiff_check(const char*, IFF_AIFF*, int*); + + + +#endif /* ifdef LIBSNDFILE */ +#endif /* ifndef LAME_GET_AUDIO_H */ + diff --git a/lame-3.97/frontend/gpkplotting.c b/lame-3.97/frontend/gpkplotting.c new file mode 100644 index 0000000..734ecf1 --- /dev/null +++ b/lame-3.97/frontend/gpkplotting.c @@ -0,0 +1,339 @@ +/* + * GTK plotting routines source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: gpkplotting.c,v 1.9 2004/06/06 15:31:54 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "gpkplotting.h" + +#ifdef STDC_HEADERS +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +static gint num_plotwindows = 0; +static gint max_plotwindows = 10; +static GdkPixmap *pixmaps[10]; +static GtkWidget *pixmapboxes[10]; + + + + +/* compute a gdkcolor */ +void setcolor(GtkWidget *widget, GdkColor *color, gint red,gint green,gint blue) +{ + + /* colors in GdkColor are taken from 0 to 65535, not 0 to 255. */ + color->red = red * (65535/255); + color->green = green * (65535/255); + color->blue = blue * (65535/255); + color->pixel = (gulong)(color->red*65536 + color->green*256 + color->blue); + /* find closest in colormap, if needed */ + gdk_color_alloc(gtk_widget_get_colormap(widget),color); +} + + +void gpk_redraw(GdkPixmap *pixmap, GtkWidget *pixmapbox) +{ + /* redraw the entire pixmap */ + gdk_draw_pixmap(pixmapbox->window, + pixmapbox->style->fg_gc[GTK_WIDGET_STATE (pixmapbox)], + pixmap,0,0,0,0, + pixmapbox->allocation.width, + pixmapbox->allocation.height); +} + + +static GdkPixmap **findpixmap(GtkWidget *widget) +{ + int i; + for (i=0; i<num_plotwindows && widget != pixmapboxes[i] ; i++); + if (i>=num_plotwindows) { + g_print("findpixmap(): bad argument widget \n"); + return NULL; + } + return &pixmaps[i]; +} + +void gpk_graph_draw(GtkWidget *widget, /* plot on this widged */ + int n, /* number of data points */ + gdouble *xcord, gdouble *ycord, /* data */ + gdouble xmn,gdouble ymn, /* coordinates of corners */ + gdouble xmx,gdouble ymx, + int clear, /* clear old plot first */ + char *title, /* add a title (only if clear=1) */ + GdkColor *color) +{ + GdkPixmap **ppixmap; + GdkPoint *points; + int i; + gint16 width,height; + GdkFont *fixed_font; + GdkGC *gc; + + gc = gdk_gc_new(widget->window); + gdk_gc_set_foreground(gc, color); + + + + if ((ppixmap=findpixmap(widget))) { + width = widget->allocation.width; + height = widget->allocation.height; + + + if (clear) { + /* white background */ + gdk_draw_rectangle (*ppixmap, + widget->style->white_gc, + TRUE,0, 0,width,height); + /* title */ +#ifdef _WIN32 + fixed_font = gdk_font_load ("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*"); +#else + fixed_font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1"); +#endif + + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,10,title,strlen(title)); + } + + + points = g_malloc(n*sizeof(GdkPoint)); + for (i=0; i<n ; i++) { + points[i].x =.5+ ((xcord[i]-xmn)*(width-1)/(xmx-xmn)); + points[i].y =.5+ ((ycord[i]-ymx)*(height-1)/(ymn-ymx)); + } + gdk_draw_lines(*ppixmap,gc,points,n); + g_free(points); + gpk_redraw(*ppixmap,widget); + } + gdk_gc_destroy(gc); +} + + + +void gpk_rectangle_draw(GtkWidget *widget, /* plot on this widged */ + gdouble *xcord, gdouble *ycord, /* corners */ + gdouble xmn,gdouble ymn, /* coordinates of corners */ + gdouble xmx,gdouble ymx, + GdkColor *color) +{ + GdkPixmap **ppixmap; + GdkPoint points[2]; + int i; + gint16 width,height; + GdkGC *gc; + + + gc = gdk_gc_new(widget->window); + gdk_gc_set_foreground(gc, color); + + + if ((ppixmap=findpixmap(widget))) { + width = widget->allocation.width; + height = widget->allocation.height; + + + for (i=0; i<2 ; i++) { + points[i].x =.5+ ((xcord[i]-xmn)*(width-1)/(xmx-xmn)); + points[i].y =.5+ ((ycord[i]-ymx)*(height-1)/(ymn-ymx)); + } + width=points[1].x-points[0].x + 1; + height=points[1].y-points[0].y + 1; + gdk_draw_rectangle(*ppixmap,gc,TRUE, + points[0].x,points[0].y,width,height); + gpk_redraw(*ppixmap,widget); + } + gdk_gc_destroy(gc); +} + + + +void gpk_bargraph_draw(GtkWidget *widget, /* plot on this widged */ + int n, /* number of data points */ + gdouble *xcord, gdouble *ycord, /* data */ + gdouble xmn,gdouble ymn, /* coordinates of corners */ + gdouble xmx,gdouble ymx, + int clear, /* clear old plot first */ + char *title, /* add a title (only if clear=1) */ + int barwidth, /* bar width. 0=compute based on window size */ + GdkColor *color) +{ + GdkPixmap **ppixmap; + GdkPoint points[2]; + int i; + gint16 width,height,x,y,barheight; + GdkFont *fixed_font; + GdkGC *gc; + int titleSplit; + + + gc = gdk_gc_new(widget->window); + gdk_gc_set_foreground(gc, color); + + + if ((ppixmap=findpixmap(widget))) { + width = widget->allocation.width; + height = widget->allocation.height; + + + if (clear) { + /* white background */ + gdk_draw_rectangle (*ppixmap, + widget->style->white_gc, + TRUE,0, 0,width,height); + /* title */ +#ifdef _WIN32 + fixed_font = gdk_font_load ("-misc-fixed-large-r-*-*-*-100-*-*-*-*-*-*"); +#else + fixed_font = gdk_font_load ("-misc-fixed-medium-r-*-*-*-100-*-*-*-*-iso8859-1"); +#endif + + titleSplit = strcspn(title, "\n"); + + if (titleSplit && (titleSplit != strlen(title))) { + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,10, title, titleSplit); + + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,22, title+titleSplit+1, (strlen(title)-titleSplit)-1); + + + } else { + gdk_draw_text (*ppixmap,fixed_font, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + 0,10,title,strlen(title)); + } + } + + + for (i=0; i<n ; i++) { + points[1].x =.5+ ((xcord[i]-xmn)*(width-1)/(xmx-xmn)); + points[1].y =.5+ ((ycord[i]-ymx)*(height-1)/(ymn-ymx)); + points[0].x = points[1].x; + points[0].y = height-1; + + x = .5+ ((xcord[i]-xmn)*(width-1)/(xmx-xmn)); + y = .5+((ycord[i]-ymx)*(height-1)/(ymn-ymx)); + if (!barwidth) barwidth = (width/(n+1))-1; + barwidth = barwidth > 5 ? 5 : barwidth; + barwidth = barwidth < 1 ? 1 : barwidth; + barheight = height-1 - y; + /* gdk_draw_lines(*ppixmap,gc,points,2); */ + gdk_draw_rectangle(*ppixmap,gc,TRUE,x,y,barwidth,barheight); + + } + gpk_redraw(*ppixmap,widget); + } + gdk_gc_destroy(gc); +} + + + + + +/* Create a new backing pixmap of the appropriate size */ +static gint +configure_event (GtkWidget *widget, GdkEventConfigure *event, gpointer data) +{ + GdkPixmap **ppixmap; + if ((ppixmap=findpixmap(widget))){ + if (*ppixmap) gdk_pixmap_unref(*ppixmap); + *ppixmap = gdk_pixmap_new(widget->window, + widget->allocation.width, + widget->allocation.height, + -1); + gdk_draw_rectangle (*ppixmap, + widget->style->white_gc, + TRUE, + 0, 0, + widget->allocation.width, + widget->allocation.height); + } + return TRUE; +} + + + +/* Redraw the screen from the backing pixmap */ +static gint +expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer data) +{ + GdkPixmap **ppixmap; + if ((ppixmap=findpixmap(widget))){ + gdk_draw_pixmap(widget->window, + widget->style->fg_gc[GTK_WIDGET_STATE (widget)], + *ppixmap, + event->area.x, event->area.y, + event->area.x, event->area.y, + event->area.width, event->area.height); + } + + return FALSE; +} + + + + + +GtkWidget *gpk_plot_new(int width, int height) +{ + GtkWidget *pixmapbox; + + pixmapbox = gtk_drawing_area_new(); + gtk_drawing_area_size(GTK_DRAWING_AREA(pixmapbox),width,height); + gtk_signal_connect (GTK_OBJECT (pixmapbox), "expose_event", + (GtkSignalFunc) expose_event, NULL); + gtk_signal_connect (GTK_OBJECT(pixmapbox),"configure_event", + (GtkSignalFunc) configure_event, NULL); + gtk_widget_set_events (pixmapbox, GDK_EXPOSURE_MASK); + + if (num_plotwindows < max_plotwindows) { + pixmapboxes[num_plotwindows] = pixmapbox; + pixmaps[num_plotwindows] = NULL; + num_plotwindows ++; + } else { + g_print("gtk_plotarea_new(): exceeded maximum of 10 plotarea windows\n"); + } + + return pixmapbox; +} + + diff --git a/lame-3.97/frontend/gpkplotting.h b/lame-3.97/frontend/gpkplotting.h new file mode 100644 index 0000000..33573da --- /dev/null +++ b/lame-3.97/frontend/gpkplotting.h @@ -0,0 +1,53 @@ +/* + * GTK plotting routines include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_GPKPLOTTING_H +#define LAME_GPKPLOTTING_H + +#include <gtk/gtk.h> + +/* allocate a graphing widget */ +GtkWidget *gpk_plot_new(int width,int height); + +/* graph a function in the graphing widged */ +void gpk_graph_draw(GtkWidget *widget, + int n, gdouble *xcord, gdouble *ycord, + gdouble xmn, gdouble ymn,gdouble xmx,gdouble ymx, + int clear, char * title,GdkColor *color); + +/* draw a rectangle in the graphing widget */ +void gpk_rectangle_draw(GtkWidget *widget, /* plot on this widged */ + gdouble xcord[2], gdouble ycord[2], /* corners */ + gdouble xmn,gdouble ymn, /* coordinates of corners */ + gdouble xmx,gdouble ymx, + GdkColor *color); /* color to use */ + +/* make a bar graph in the graphing widged */ +void gpk_bargraph_draw(GtkWidget *widget, + int n, gdouble *xcord, gdouble *ycord, + gdouble xmn, gdouble ymn,gdouble xmx,gdouble ymx, + int clear, char * title, int bwidth,GdkColor *color); + +/* set forground color */ +void setcolor(GtkWidget *widget, GdkColor *color,int red,int green,int blue); + +#endif + diff --git a/lame-3.97/frontend/gtkanal.c b/lame-3.97/frontend/gtkanal.c new file mode 100644 index 0000000..36a7fab --- /dev/null +++ b/lame-3.97/frontend/gtkanal.c @@ -0,0 +1,1589 @@ +/* + * GTK plotting routines source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: gtkanal.c,v 1.35 2005/01/13 18:20:43 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <math.h> +#include <gtk/gtk.h> +#include <assert.h> +#include "main.h" +#include "lame.h" +#include "lame-analysis.h" +#include "get_audio.h" +#include "gtkanal.h" +#include "gpkplotting.h" + +/* this file should be removed. The few data items accessed in 'gfc' + should be made accessable by writing a lame_set_variable() function */ +#include "util.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + + +#ifdef _WIN32 +# include <windows.h> +# define msleep(t) Sleep(t) +#else +# include <unistd.h> +# define msleep(t) usleep((t) * 1000) +#endif + + + + +/*! Stringify \a x. */ +#define STR(x) #x +/*! Stringify \a x, perform macro expansion. */ +#define XSTR(x) STR(x) + +#define MP3X_MAJOR_VERSION 0 /* Major version number */ +#define MP3X_MINOR_VERSION 82 /* Minor version number */ +#define MP3X_ALPHA_VERSION 0 /* Set number if this is an alpha version, otherwise zero */ +#define MP3X_BETA_VERSION 0 /* Set number if this is a beta version, otherwise zero */ + + +plotting_data *pinfo; +plotting_data *pplot; +plotting_data Pinfo[NUMPINFO]; + + +/* global variables for the state of the system */ +static gint idle_keepgoing; /* processing of frames is ON */ +static gint idle_count_max; /* number of frames to process before plotting */ +static gint idle_count; /* pause & plot when idle_count=idel_count_max */ +static gint idle_end=0; /* process all frames, stop at last frame */ +static gint idle_back = 0; /* set when we are displaying the old data */ +static int mp3done = 0; /* last frame has been read */ +static GtkWidget *frameprogress; /* progress bar */ +static GtkWidget *framecounter; /* progress counter */ + +static int subblock_draw[3] = { 1, 1, 1 }; + +/* main window */ +GtkWidget *window; +/* Backing pixmap for drawing areas */ +GtkWidget *pcmbox; /* PCM data plotted here */ +GtkWidget *winbox; /* mpg123 synthesis data plotted here */ +GtkWidget *enerbox[2]; /* spectrum, gr=0,1 plotted here */ +GtkWidget *mdctbox[2]; /* mdct coefficients gr=0,1 plotted here */ +GtkWidget *sfbbox[2]; /* scalefactors gr=0,1 plotted here */ +GtkWidget *headerbox; /* mpg123 header info shown here */ + + +struct gtkinfostruct { + int filetype; /* input file type 0=WAV, 1=MP3 */ + int msflag; /* toggle between L&R vs M&S PCM data display */ + int chflag; /* toggle between L & R channels */ + int kbflag; /* toggle between wave # and barks */ + int flag123; /* show mpg123 frame info, OR ISO encoder frame info */ + double avebits; /* running average bits per frame */ + int approxbits; /* (approx) bits per frame */ + int maxbits; /* max bits per frame used so far*/ + int totemph; /* total of frames with de-emphasis */ + int totms; /* total frames with ms_stereo */ + int totis; /* total frames with i_stereo */ + int totshort; /* total granules with short blocks */ + int totmix; /* total granules with mixed blocks */ + int totpreflag; /* total granules with preflag */ + int pupdate; /* plot while processing, or only when needed */ + int sfblines; /* plot scalefactor bands in MDCT plot */ + int difference; /* plot original - decoded instead of orig vs. decoded */ + int totalframes; +} gtkinfo; + + +static lame_global_flags *gfp; +lame_internal_flags *gfc; + +/********************************************************************** + * read one frame and encode it + **********************************************************************/ +int gtkmakeframe(void) +{ + int iread = 0; + static int init=0; + static int mpglag; + static short int Buffer[2][1152]; + short int mpg123pcm[2][1152]; + int ch,j; + int mp3count = 0; + int mp3out = 0; + int channels_out; + char mp3buffer[LAME_MAXMP3BUFFER]; + extern plotting_data *mpg123_pinfo; + static int frameNum=0; + int framesize = lame_get_framesize(gfp); + + channels_out = (lame_get_mode(gfp)==MONO) ? 1 : 2; + + pinfo->frameNum = frameNum; + pinfo->sampfreq = lame_get_out_samplerate ( gfp ); + pinfo->framesize= framesize; + pinfo->stereo = channels_out; + + /* If the analsys code is enabled, lame will writes data into gfc->pinfo, + * and mpg123 will write data into mpg123_pinfo. Set these so + * the libraries put this data in the right place: */ + gfc->pinfo = pinfo; + mpg123_pinfo = pinfo; + + if (input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) { + iread = get_audio16(gfp,Buffer); + + + /* add a delay of framesize-DECDELAY, which will make the total delay + * exactly one frame, so we can sync MP3 output with WAV input */ + for ( ch = 0; ch < channels_out; ch++ ) { + for ( j = 0; j < framesize-DECDELAY; j++ ) + pinfo->pcmdata2[ch][j] = pinfo->pcmdata2[ch][j+framesize]; + for ( j = 0; j < framesize; j++ ) /*rescale from int to short int */ + pinfo->pcmdata2[ch][j+framesize-DECDELAY] = Buffer[ch][j]; + } + + pinfo->frameNum123 = frameNum-1; + ++frameNum; + + }else { + + /* feed data to encoder until encoder produces some output */ + while (lame_get_frameNum(gfp) == pinfo->frameNum) { + + if (!init) { + init=1; + mpglag=1; + lame_decode_init(); + } + + iread = get_audio16(gfp,Buffer); + if (iread > framesize) { + /* NOTE: frame analyzer requires that we encode one frame + * for each pass through this loop. If lame_encode_buffer() + * is feed data too quickly, it will sometimes encode multiple frames + * breaking this loop. + */ + fprintf(stderr,"Warning: get_audio is returning too much data.\n"); + } + if (0==iread) break; /* eof */ + + mp3count=lame_encode_buffer(gfp,Buffer[0],Buffer[1],iread, + mp3buffer,(int)sizeof(mp3buffer)); + + assert( !(mp3count > 0 && lame_get_frameNum(gfp) == pinfo->frameNum)); + /* not possible to produce mp3 data without encoding at least + * one frame of data which would increment frameNum */ + } + frameNum = lame_get_frameNum(gfp); /* use the internal MP3 frame counter */ + + + /* decode one frame of output */ + mp3out=lame_decode1(mp3buffer,mp3count,mpg123pcm[0],mpg123pcm[1]); /* re-synthesis to pcm */ + /* mp3out = 0: need more data to decode */ + /* mp3out = -1: error. Lets assume 0 pcm output */ + /* mp3out = number of samples output */ + if (mp3out>0) assert(mp3out==pinfo->framesize); + if (mp3out!=0) { + /* decoded output is for frame pinfo->frameNum123 + * add a delay of framesize-DECDELAY, which will make the total delay + * exactly one frame */ + pinfo->frameNum123=pinfo->frameNum-mpglag; + for ( ch = 0; ch < pinfo->stereo; ch++ ) { + for ( j = 0; j < pinfo->framesize-DECDELAY; j++ ) + pinfo->pcmdata2[ch][j] = pinfo->pcmdata2[ch][j+pinfo->framesize]; + for ( j = 0; j < pinfo->framesize; j++ ) { + pinfo->pcmdata2[ch][j+pinfo->framesize-DECDELAY] = + (mp3out==-1) ? 0 : mpg123pcm[ch][j]; + } + } + }else{ + if (mpglag == MAXMPGLAG) { + fprintf(stderr,"READ_AHEAD set too low - not enough frame buffering.\n" + "MP3x display of input and output PCM data out of sync.\n"); + fflush(stderr); + } + else mpglag++; + pinfo->frameNum123=-1; /* no frame output */ + } + } + return iread; +} + + +void plot_frame(void) +{ + int i,j,n,ch,gr; + gdouble *xcord,*ycord; + gdouble xmx,xmn,ymx,ymn; + double *data,*data2,*data3; + char title2[80]; + char label[80],label2[80]; + char *title; + plotting_data *pplot1; + plotting_data *pplot2 = NULL; + + double en,samp; + int sampindex,version=0; + int barthick; + static int firstcall=1; + static GdkColor *barcolor,*color,*grcolor[2]; + static GdkColor yellow,gray,cyan,magenta,orange,pink,red,green,blue,black,oncolor,offcolor; + int blocktype[2][2]; + int headbits; + int mode_gr = 2; + + /* find the frame where mpg123 produced output coming from input frame + * pinfo. i.e.: out_frame + out_frame_lag = input_frame */ + for (i=1; i<=MAXMPGLAG; i++ ) { + if ((pplot-i)->frameNum123 == pplot->frameNum ) { + pplot2 = pplot-i; + break; + } + } + if (i > MAXMPGLAG) { + fprintf(stderr,"input/output pcm syncing problem. should not happen!\n"); + pplot2=pplot-1; + } + + + /* however, the PCM data is delayed by 528 samples in the encoder filterbanks. + * We added another 1152-528 delay to this so the PCM data is *exactly* one + * frame behind the header & MDCT information */ + pplot1 =pplot2 +1; /* back one frame for header info, MDCT */ + + /* allocate these GC's only once */ + if (firstcall) { + firstcall=0; + /* grcolor[0] = &magenta; */ + grcolor[0] = &blue; + grcolor[1] = &green; + barcolor = &gray; + + setcolor(headerbox,&oncolor,255,0,0); + setcolor(headerbox,&offcolor,175,175,175); + setcolor(pcmbox,&red,255,0,0); + setcolor(pcmbox,&pink,255,0,255); + setcolor(pcmbox,&magenta,255,0,100); + setcolor(pcmbox,&orange,255,127,0); + setcolor(pcmbox,&cyan,0,255,255); + setcolor(pcmbox,&green,0,255,0); + setcolor(pcmbox,&blue,0,0,255); + setcolor(pcmbox,&black,0,0,0); + setcolor(pcmbox,&gray,100,100,100); + setcolor(pcmbox,&yellow,255,255,0); + + } + + /******************************************************************* + * frame header info + *******************************************************************/ + if (pplot1->sampfreq) + samp=pplot1->sampfreq; + else samp=1; + sampindex = SmpFrqIndex((long)samp, &version); + + ch = gtkinfo.chflag; + + headbits = 32 + ((pplot1->stereo==2) ? 256 : 136); + gtkinfo.approxbits = (pplot1->bitrate*1000*1152.0/samp) - headbits; + sprintf(title2,"%3.1fkHz %ikbs ",samp/1000,pplot1->bitrate); + gtk_text_freeze (GTK_TEXT(headerbox)); + gtk_text_backward_delete(GTK_TEXT(headerbox), + gtk_text_get_length(GTK_TEXT(headerbox))); + gtk_text_set_point(GTK_TEXT(headerbox),0); + gtk_text_insert(GTK_TEXT(headerbox),NULL,&oncolor,NULL,title2, -1); + title = " mono "; + if (2==pplot1->stereo) title = pplot1->js ? " js " : " s "; + gtk_text_insert (GTK_TEXT(headerbox), NULL, &oncolor, NULL,title, -1); + color = pplot1->ms_stereo ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"ms ", -1); + color = pplot1->i_stereo ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"is ", -1); + + color = pplot1->crc ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"crc ", -1); + color = pplot1->padding ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"pad ", -1); + + color = pplot1->emph ? &oncolor : &offcolor ; + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,"em ", -1); + + sprintf(title2,"bv=%i,%i ",pplot1->big_values[0][ch],pplot1->big_values[1][ch]); + gtk_text_insert (GTK_TEXT(headerbox), NULL, &black, NULL,title2, -1); + + color = pplot1->scfsi[ch] ? &oncolor : &offcolor ; + sprintf(title2,"scfsi=%i ",pplot1->scfsi[ch]); + gtk_text_insert (GTK_TEXT(headerbox), NULL, color, NULL,title2, -1); + if (gtkinfo.filetype) + sprintf(title2," mdb=%i %i/NA",pplot1->maindata,pplot1->totbits); + else + sprintf(title2," mdb=%i %i/%i", + pplot1->maindata,pplot1->totbits,pplot1->totbits+pplot->resvsize); + gtk_text_insert (GTK_TEXT(headerbox), NULL, &oncolor, NULL,title2, -1); + gtk_text_thaw (GTK_TEXT(headerbox)); + + + + /******************************************************************* + * block type + *******************************************************************/ + for (gr = 0 ; gr < mode_gr ; gr ++) + if (gtkinfo.flag123) + blocktype[gr][ch]=pplot1->mpg123blocktype[gr][ch]; + else blocktype[gr][ch]=pplot->blocktype[gr][ch]; + + + /******************************************************************* + * draw the PCM data * + *******************************************************************/ + n = 1600; /* PCM frame + FFT window: 224 + 1152 + 224 */ + xcord = g_malloc(n*sizeof(gdouble)); + ycord = g_malloc(n*sizeof(gdouble)); + + + if (gtkinfo.msflag) + title=ch ? "Side Channel" : "Mid Channel"; + else + title=ch ? "Right Channel" : "Left Channel"; + + sprintf(title2,"%s mask_ratio=%3.2f %3.2f ener_ratio=%3.2f %3.2f", + title, + pplot->ms_ratio[0],pplot->ms_ratio[1], + pplot->ms_ener_ratio[0],pplot->ms_ener_ratio[1]); + + + ymn = -32767 ; + ymx = 32767; + xmn = 0; + xmx = 1600-1; + + /* 0 ... 224 draw in black, connecting to 224 pixel + * 1375 .. 1599 draw in black connecting to 1375 pixel + * 224 ... 1375 MP3 frame. draw in blue + */ + + /* draw the title */ + gpk_graph_draw(pcmbox,0,xcord,ycord,xmn,ymn,xmx,ymx,1,title2, + &black); + + + /* draw some hash marks dividing the frames */ + ycord[0] = ymx*.8; ycord[1] = ymn*.8; + for (gr=0 ; gr<=2; gr++) { + xcord[0] = 223.5 + gr*576; xcord[1] = 223.5 +gr*576; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + for (gr = 0 ; gr < mode_gr ; gr++) { + if (blocktype[gr][ch]==2) + for (i=1 ; i<=2; i++) { + xcord[0] = 223.5+gr*576 + i*192; + xcord[1] = 223.5+gr*576 + i*192; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + } + /* bars representing FFT windows */ + xcord[0] = 0; ycord[0] = ymn+3000; + xcord[1] = 1024-1; ycord[1] = ymn+1000; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,grcolor[0]); + xcord[0] = 576; ycord[0] = ymn+2000; + xcord[1] = 576+1024-1; ycord[1] = ymn; + gpk_rectangle_draw(pcmbox,xcord,ycord,xmn,ymn,xmx,ymx,grcolor[1]); + + + /* plot PCM data */ + for (i=0; i<n; i++) { + xcord[i] = i; + if (gtkinfo.msflag) + ycord[i] = ch ? .5*(pplot->pcmdata[0][i]-pplot->pcmdata[1][i]) : + .5*(pplot->pcmdata[0][i]+pplot->pcmdata[1][i]); + else + ycord[i]=pplot->pcmdata[ch][i]; + } + + /* skip plot if we are doing an mp3 file */ + if (!gtkinfo.filetype) { + gpk_graph_draw(pcmbox,n,xcord,ycord,xmn,ymn,xmx,ymx,0,title2,&black); + } + + + /*******************************************************************/ + /* draw the PCM re-synthesis data */ + /*******************************************************************/ + n = 1152; + /* + sprintf(title2,"Re-synthesis mask_ratio=%3.2f %3.2f ener_ratio=%3.2f %3.2f", + pplot->ms_ratio[0],pplot->ms_ratio[1], + pplot->ms_ener_ratio[0],pplot->ms_ener_ratio[1]); + */ + title="Re-synthesis"; + if (gtkinfo.difference) + title="Re-synthesis difference (amplified 20db)"; + + + ymn = -32767 ; + ymx = 32767; + xmn = 0; + xmx = 1600-1; + gpk_graph_draw(winbox,0,xcord,ycord, + xmn,ymn,xmx,ymx,1,title,&black); + /* draw some hash marks dividing the frames */ + ycord[0] = ymx*.8; ycord[1] = ymn*.8; + for (gr=0 ; gr<=2; gr++) { + xcord[0] = 223.5 + gr*576; xcord[1] = 223.5 +gr*576; + gpk_rectangle_draw(winbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + for (gr = 0 ; gr < 2 ; gr++) { + if (blocktype[gr][ch]==2) + for (i=1 ; i<=2; i++) { + xcord[0] = 223.5+gr*576 + i*192; + xcord[1] = 223.5+gr*576 + i*192; + gpk_rectangle_draw(winbox,xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + } + + /* this piece of PCM data from previous frame */ + n = 224; + for (j=1152-n,i=0; i<n; i++,j++) { + xcord[i] = i; + if (gtkinfo.msflag) + ycord[i] = ch ? .5*(pplot1->pcmdata2[0][j]- + pplot1->pcmdata2[1][j]) : + .5*(pplot1->pcmdata2[0][j]+pplot1->pcmdata2[1][j]); + else + ycord[i]=pplot1->pcmdata2[ch][j]; + } + + /* this piece of PCM data from current frame */ + n = 1152; + for (i=0; i<n; i++) { + xcord[i+224] = i+224; + if (gtkinfo.msflag) + ycord[i+224] = ch ? .5*(pplot2->pcmdata2[0][i]-pplot2->pcmdata2[1][i]) : + .5*(pplot2->pcmdata2[0][i]+pplot2->pcmdata2[1][i]); + else + ycord[i+224]=pplot2->pcmdata2[ch][i]; + } + + n=1152+224; + if (gtkinfo.difference) { + for (i=0; i<n; i++) { + if (gtkinfo.msflag) + ycord[i] -= ch ? .5*(pplot->pcmdata[0][i]-pplot->pcmdata[1][i]) : + .5*(pplot->pcmdata[0][i]+pplot->pcmdata[1][i]); + else + ycord[i] -= pplot->pcmdata[ch][i]; + } + ycord[i] *= 100; + } + + + gpk_graph_draw(winbox,n,xcord,ycord, + xmn,ymn,xmx,ymx,0,title,&black); + + + + + + /*******************************************************************/ + /* draw the MDCT energy spectrum */ + /*******************************************************************/ + for (gr = 0 ; gr < mode_gr ; gr ++) { + int bits,bits2; + char *blockname=""; + switch (blocktype[gr][ch]) { + case 0: blockname = "normal"; break; + case 1: blockname = "start"; break; + case 2: blockname = "short"; break; + case 3: blockname = "end"; break; + } + strcpy(label,blockname); + if (pplot1->mixed[gr][ch]) strcat(label,"(mixed)"); + + + + + n = 576; + if (gtkinfo.flag123) { + data = pplot1->mpg123xr[gr][0]; + data2 = pplot1->mpg123xr[gr][1]; + }else{ + data = pplot->xr[gr][0]; + data2 = pplot->xr[gr][1]; + } + + + xmn = 0; + xmx = n-1; + ymn=0; + ymx=11; + + /* draw title, erase old plot */ + if (gtkinfo.flag123) { + bits=pplot1->mainbits[gr][ch]; + bits2=pplot1->sfbits[gr][ch]; + }else{ + bits=pplot->LAMEmainbits[gr][ch]; + bits2=pplot->LAMEsfbits[gr][ch]; + } + sprintf(title2,"MDCT%1i(%s) bits=%i/%i ",gr,label,bits,bits2); + gpk_bargraph_draw(mdctbox[gr],0,xcord,ycord, + xmn,ymn,xmx,ymx,1,title2,0,barcolor); + + /* draw some hash marks showing scalefactor bands */ + if (gtkinfo.sfblines) { + int fac,nsfb, *scalefac; + if (blocktype[gr][ch]==SHORT_TYPE) { + nsfb=SBMAX_s; + i = nsfb-7; + fac=3; + scalefac = gfc->scalefac_band.s; + }else{ + nsfb=SBMAX_l; + i = nsfb-10; + fac=1; + scalefac = gfc->scalefac_band.l; + } + for ( ; i<nsfb; i++) { + ycord[0] = .8*ymx; ycord[1] = ymn; + xcord[0] = fac*scalefac[i]; + xcord[1] = xcord[0]; + gpk_rectangle_draw(mdctbox[gr],xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + } + } + + + + ymn=9e20; + ymx=-9e20; + for (i=0; i<n; i++) { + double coeff; + xcord[i] = i; + if (gtkinfo.msflag){ + coeff = ch ? .5*(data[i]-data2[i]) : .5*(data[i]+data2[i]) ; + }else{ + coeff = ch ? data2[i] : data[i]; + } + if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) + coeff = 0; + ycord[i]=coeff*coeff*1e10; + ycord[i] = log10( MAX( ycord[i],(double) 1)); + +#if 0 + if (ch==0) + if (i==26) + if (data[i]!=0) + printf("%i %i i=%i mdct: (db) %f %f \n",pplot->frameNum,gr,i, +10*log10(data[i]*data[i]), +10*log10(.33*(data[i-1]*data[i-1] + data[i]*data[i] + data[i+1]*data[i+1])) +); +#endif + + ymx=(ycord[i] > ymx) ? ycord[i] : ymx; + ymn=(ycord[i] < ymn) ? ycord[i] : ymn; + } + /* print the min/max + sprintf(title2,"MDCT%1i %5.2f %5.2f bits=%i",gr,ymn,ymx, + pplot1->mainbits[gr][ch]); + */ + if (gtkinfo.flag123) bits=pplot1->mainbits[gr][ch]; + else bits=pplot->LAMEmainbits[gr][ch]; + + + sprintf(title2,"MDCT%1i(%s) bits=%i ",gr,label,bits); + + xmn = 0; + xmx = n-1; + ymn=0; + ymx=11; + gpk_bargraph_draw(mdctbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,0,title2,0,barcolor); + } + + + + + /******************************************************************* + * draw the psy model energy spectrum (k space) + * l3psy.c computes pe, en, thm for THIS granule. + *******************************************************************/ + if (gtkinfo.kbflag){ + for (gr = 0 ; gr < mode_gr ; gr ++) { + n = HBLKSIZE; /* only show half the spectrum */ + + data = &pplot->energy[gr][ch][0]; + + ymn=9e20; + ymx=-9e20; + for (i=0; i<n; i++) { + xcord[i] = i+1; + if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) + ycord[i] = 0; + else + ycord[i] = log10( MAX( data[i],(double) 1)); + ymx=(ycord[i] > ymx) ? ycord[i] : ymx; + ymn=(ycord[i] < ymn) ? ycord[i] : ymn; + } + for (en=0 , j=0; j<BLKSIZE ; j++) + en += pplot->energy[gr][ch][j]; + + sprintf(title2,"FFT%1i pe=%5.2fK en=%5.2e ",gr, + pplot->pe[gr][ch]/1000,en); + + ymn = 3; + ymx = 15; + xmn = 1; + xmx = n; + gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,1,title2,0,barcolor); + + } + }else{ + /******************************************************************* + * draw the psy model energy spectrum (scalefactor bands) + *******************************************************************/ + for (gr = 0 ; gr < mode_gr ; gr ++) { + + if (blocktype[gr][ch]==2) { + n = 3*SBMAX_s; + data = &pplot->en_s[gr][ch][0]; + data2 = &pplot->thr_s[gr][ch][0]; + data3 = &pplot->xfsf_s[gr][ch][0]; + } else { + n = SBMAX_l; + data = &pplot->en[gr][ch][0]; + data2 = &pplot->thr[gr][ch][0]; + data3 = &pplot->xfsf[gr][ch][0]; + } + ymn=9e20; + ymx=-9e20; + for (i=0; i<n; i++) { + xcord[i] = i+1; + if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) + ycord[i] = 0; + else + ycord[i] = log10( MAX( data[i],(double) 1)); + /* + ymx=(ycord[i] > ymx) ? ycord[i] : ymx; + ymn=(ycord[i] < ymn) ? ycord[i] : ymn; + */ + } + + + + /* en = max energy difference amoung the 3 short FFTs for this granule */ + en = pplot->ers[gr][ch]; + if (en>999) en=999; + sprintf(title2,"FFT%1i pe=%5.2fK/%3.1f \nnoise ovr_b:%i/max:%3.1f/ovr:%3.1f/tot:%3.1f/ssd:%i",gr, + pplot->pe[gr][ch]/1000,en,pplot->over[gr][ch], + pplot->max_noise[gr][ch], + pplot->over_noise[gr][ch], + pplot->tot_noise[gr][ch], + pplot->over_SSD[gr][ch]); + + barthick=3; + if (blocktype[gr][ch]==SHORT_TYPE) barthick=2; + if (!(subblock_draw[0] && subblock_draw[1] && subblock_draw[2])) + barthick=3; + + ymn = 3; + ymx = 15; + xmn = 1; + xmx = n+1; /* a little extra because of the bar thickness */ + gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,1,title2,barthick,barcolor); + + for (i=0; i<n; i++) { + xcord[i] = i+1 + .20; + if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) + ycord[i] = 0; + else + ycord[i] = log10( MAX( data2[i], (double) 1)); + } + + gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,0,title2,barthick,grcolor[gr]); + + for (i=0; i<n; i++) { + xcord[i] = i+1 + .40; + if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) + ycord[i] = 0; + else + ycord[i] = log10( MAX( data3[i], (double) 1)); + } + gpk_bargraph_draw(enerbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,0,title2,barthick,&red); + + } + } + + /******************************************************************* + * draw scalefactors + *******************************************************************/ + for (gr = 0 ; gr < mode_gr ; gr ++) { + int ggain; + if (blocktype[gr][ch]==2) { + n = 3*SBMAX_s; + if (gtkinfo.flag123) data = pplot1->sfb_s[gr][ch]; + else data = pplot->LAMEsfb_s[gr][ch]; + } else { + n = SBMAX_l; + if (gtkinfo.flag123) data = pplot1->sfb[gr][ch]; + else data = pplot->LAMEsfb[gr][ch]; + } + + ymn=-1; + ymx=10; + for (i=0; i<n; i++) { + xcord[i] = i+1; + if (blocktype[gr][ch]==SHORT_TYPE && !subblock_draw[i % 3]) + ycord[i] = 0; + else + ycord[i] = -data[i]; + + ymx=(ycord[i] > ymx-2) ? ycord[i]+2 : ymx; + ymn=(ycord[i] < ymn) ? ycord[i]-1 : ymn; + } + + if (blocktype[gr][ch]==2) { + sprintf(label2, + "SFB scale=%i preflag=%i %i%i%i", + pplot1->scalefac_scale[gr][ch], + pplot1->preflag[gr][ch], + pplot1->sub_gain[gr][ch][0], + pplot1->sub_gain[gr][ch][1], + pplot1->sub_gain[gr][ch][2]); + }else{ + sprintf(label2,"SFB scale=%i preflag=%i",pplot1->scalefac_scale[gr][ch], + pplot1->preflag[gr][ch]); + } + + if (gtkinfo.flag123) ggain = (pplot1->qss[gr][ch]); + else ggain = (pplot->LAMEqss[gr][ch]); + + sprintf(title2," ggain=%i",ggain); + strcat(label2,title2); + + xmn = 1; + xmx = n+1; + gpk_bargraph_draw(sfbbox[gr],n,xcord,ycord, + xmn,ymn,xmx,ymx,1,label2,0,grcolor[gr]); + + ycord[0] = ycord[1] = 0; + xcord[0] = 1; + xcord[1] = n+1; + gpk_rectangle_draw(sfbbox[gr],xcord,ycord,xmn,ymn,xmx,ymx,&yellow); + + + } + + +} + + + +static void update_progress(void) +{ + char label[80]; + + int tf = lame_get_totalframes(gfp); + if (gtkinfo.totalframes>0) tf=gtkinfo.totalframes; + + sprintf(label,"Frame:%4i/%4i %6.2fs", + pplot->frameNum,(int)tf-1, pplot->frametime); + gtk_progress_set_value (GTK_PROGRESS (frameprogress), (gdouble) pplot->frameNum); + gtk_label_set_text(GTK_LABEL(framecounter),label); +} + + + +static void analyze(void) +{ + if ( idle_keepgoing) { + idle_count = 0; + idle_count_max=0; + idle_keepgoing=0; + idle_end=0; + } + plot_frame(); + update_progress(); +} + +static void plotclick( GtkWidget *widget, gpointer data ) +{ analyze(); } + + + + +static int frameadv1(GtkWidget *widget, gpointer data ) +{ + int i; + if (idle_keepgoing ){ + if (idle_back) { + /* frame displayed is the old frame. to advance, just swap in new frame */ + idle_back--; + pplot = &Pinfo[READ_AHEAD+idle_back]; + }else{ + /* advance the frame by reading in a new frame */ + pplot = &Pinfo[READ_AHEAD]; + if (mp3done) { + /* dont try to read any more frames, and quit if "finish MP3" was selected */ + /* if (idle_finish) gtk_main_quit(); */ + idle_count_max=0; + idle_end=0; + } else { + /* read in the next frame */ + for (i=NUMPINFO-1 ; i>0 ; i--) + memcpy(&Pinfo[i],&Pinfo[i-1],sizeof(plotting_data)); + pinfo = &Pinfo[0]; + pinfo->num_samples = gtkmakeframe(); + if (pinfo->num_samples==0 && gtkinfo.totalframes==0) + /* allow an extra frame to flush decoder buffers */ + gtkinfo.totalframes = pinfo->frameNum +2; + + if (pinfo->sampfreq) + pinfo->frametime = (pinfo->frameNum)*1152.0/pinfo->sampfreq; + else pinfo->frametime=0; + + /* eof? + if (!pinfo->num_samples) if (idle_finish) gtk_main_quit(); + */ + + pinfo->totbits = 0; + { int gr,ch; + for (gr = 0 ; gr < 2 ; gr ++) + for (ch = 0 ; ch < 2 ; ch ++) { + gtkinfo.totshort += (pinfo->mpg123blocktype[gr][ch]==2); + gtkinfo.totmix += !(pinfo->mixed[gr][ch]==0); + gtkinfo.totpreflag += (pinfo->preflag[gr][ch]==1); + pinfo->totbits += pinfo->mainbits[gr][ch]; + } + } + if (pinfo->frameNum > 0) /* start averaging at second frame */ + gtkinfo.avebits = (gtkinfo.avebits*((pinfo->frameNum)-1) + + pinfo->totbits ) /(pinfo->frameNum); + + gtkinfo.maxbits=MAX(gtkinfo.maxbits,pinfo->totbits); + gtkinfo.totemph += !(pinfo->emph==0); + gtkinfo.totms += !(pinfo->ms_stereo==0); + gtkinfo.totis += !(pinfo->i_stereo==0); + + if (gtkinfo.totalframes>0) + if (pplot->frameNum >= gtkinfo.totalframes-1) mp3done=1; + } + } + + idle_count++; + if (gtkinfo.pupdate) plot_frame(); + update_progress(); + if ((idle_count>=idle_count_max) && (! idle_end)) analyze(); + } else { + /*no processing to do, sleep in order to not monopolize CPU*/ + msleep(10); + } + return 1; +} + + +static void frameadv( GtkWidget *widget, gpointer data ) +{ + int adv; + + if (!strcmp((char *) data,"-1")) { + /* ignore if we've already gone back as far as possible */ + if (pplot->frameNum==0 || (idle_back==NUMBACK)) return; + idle_back++; + pplot = &Pinfo[READ_AHEAD+idle_back]; + analyze(); + return; + } + + + adv = 1; + if (!strcmp((char *) data,"1")) adv = 1; + if (!strcmp((char *) data,"10")) adv = 10; + if (!strcmp((char *) data,"100")) adv = 100; + if (!strcmp((char *) data,"finish")) idle_end = 1; + + + if (idle_keepgoing) { + /* already running - que up additional frame advance requests */ + idle_count_max += adv; + } + else { + /* turn on idleing */ + idle_count_max = adv; + idle_count = 0; + idle_keepgoing = 1; + } +} + + + + +/* another callback */ +static void delete_event( GtkWidget *widget, + GdkEvent *event, + gpointer data ) +{ + /* set MP3 done flag in case the File/Quit menu item has been selected */ + mp3done=1; + + gtk_main_quit (); +} + + + + + + + +static void channel_option (GtkWidget *widget, gpointer data) +{ + long option; + option = (long) data; + switch (option) { + case 1: + gtkinfo.msflag=0; + gtkinfo.chflag=0; + break; + case 2: + gtkinfo.msflag=0; + gtkinfo.chflag=1; + break; + case 3: + gtkinfo.msflag=1; + gtkinfo.chflag=0; + break; + case 4: + gtkinfo.msflag=1; + gtkinfo.chflag=1; + } + analyze(); +} +static void spec_option (GtkWidget *widget, gpointer data) +{ + long option; + option = (long) data; + switch (option) { + case 1: + gtkinfo.kbflag=0; + break; + case 2: + gtkinfo.kbflag=1; + break; + case 3: + gtkinfo.flag123=0; + break; + case 4: + gtkinfo.flag123=1; + break; + case 5: + gtkinfo.pupdate=1; + break; + case 6: + gtkinfo.pupdate=0; + break; + case 7: + gtkinfo.sfblines = !gtkinfo.sfblines; + break; + case 8: + gtkinfo.difference = !gtkinfo.difference; + break; + } + analyze(); +} + +static gint key_press_event (GtkWidget *widget, GdkEventKey *event) +{ + /* is a switch() statement in lame forbidden? */ + if (event->keyval == '1') { + subblock_draw[0] = 1; + subblock_draw[1] = 0; + subblock_draw[2] = 0; + analyze(); + } + else if (event->keyval == '2') { + subblock_draw[0] = 0; + subblock_draw[1] = 1; + subblock_draw[2] = 0; + analyze(); + } + else if (event->keyval == '3') { + subblock_draw[0] = 0; + subblock_draw[1] = 0; + subblock_draw[2] = 1; + analyze(); + } + else if (event->keyval == '0') { + subblock_draw[0] = 1; + subblock_draw[1] = 1; + subblock_draw[2] = 1; + analyze(); + } + /* analyze(); */ /* dont redraw entire window for every key! */ + return 0; +} + + +/*! Get the mp3x version string. */ +/*! + \param void + \return a pointer to a string which describes the version of mp3x. +*/ +const char* get_mp3x_version ( void ) +{ +#if MP3X_ALPHA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION) + " (alpha " XSTR(MP3X_ALPHA_VERSION) ", " __DATE__ " " __TIME__ ")"; +#elif MP3X_BETA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION) + " (beta " XSTR(MP3X_BETA_VERSION) ", " __DATE__ ")"; +#else + static /*@observer@*/ const char *const str = + XSTR(MP3X_MAJOR_VERSION) "." XSTR(MP3X_MINOR_VERSION); +#endif + + return str; +} + + +static void text_window (GtkWidget *widget, gpointer data) +{ + long option; + GtkWidget *hbox,*vbox,*button,*box; + GtkWidget *textwindow,*vscrollbar; + char text[256]; + + option = (long) data; + + textwindow = gtk_window_new(GTK_WINDOW_DIALOG); + gtk_signal_connect_object (GTK_OBJECT (window), "delete_event", + GTK_SIGNAL_FUNC(gtk_widget_destroy), + GTK_OBJECT (textwindow)); + + gtk_container_set_border_width (GTK_CONTAINER (textwindow), 0); + vbox = gtk_vbox_new(FALSE,0); + hbox = gtk_hbox_new(FALSE,0); + + button = gtk_button_new_with_label ("close"); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC(gtk_widget_destroy), + GTK_OBJECT (textwindow)); + + box = gtk_text_new (NULL, NULL); + gtk_text_set_editable (GTK_TEXT (box), FALSE); + vscrollbar = gtk_vscrollbar_new (GTK_TEXT(box)->vadj); + + + switch (option) { + case 0: + gtk_window_set_title (GTK_WINDOW (textwindow), "Documentation"); + gtk_widget_set_usize(box,450,500); + gtk_text_set_word_wrap(GTK_TEXT(box),TRUE); + /* text should be moved outside this function, may be in a separate file */ + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "Frame header information: "\ + "First the bitrate, sampling frequency and mono, stereo or jstereo "\ + "indicators are displayed . If the bitstream is jstereo, then mid/side "\ + "stereo or intensity stereo may be on (indicated in red). If "\ + "de-emphasis is used, this is also indicated in red. The mdb value is "\ + "main_data_begin. The encoded data starts this many bytes *before* the "\ + "frame header. A large value of mdb means the bitstream has saved some "\ + "bits into the reservoir, which it may allocate for some future frame. "\ + "The two numbers after mdb are the size (in bits) used to encode the "\ + "MDCT coefficients for this frame, followed byt the size of the bit "\ + "resevoir before encoding this frame. The maximum frame size and a "\ + "running average are given in the Stats pull down menu. A large "\ + "maximum frame size indicates the bitstream has made use of the bit "\ + "reservoir. \n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "PCM data (top graph): "\ + "The PCM data is plotted in black. The layer3 frame is divided into 2 "\ + "granules of 576 samples (marked with yellow vertical lines). In the "\ + "case of normal, start and stop blocks, the MDCT coefficients for each "\ + "granule are computed using a 1152 sample window centered over the "\ + "granule. In the case of short blocks, the granule is further divided "\ + "into 3 blocks of 192 samples (also marked with yellow vertical lines)."\ + "The MDCT coefficients for these blocks are computed using 384 sample "\ + "windows centered over the 192 sample window. (This info not available "\ + "when analyzing .mp3 files.) For the psycho-acoustic model, a windowed "\ + "FFT is computed for each granule. The range of these windows "\ + "is denoted by the blue and green bars.\n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "PCM re-synthesis data (second graph): "\ + "Same as the PCM window described above. The data displayed is the "\ + "result of encoding and then decoding the original sample. \n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "MDCT windows: "\ + "Shows the energy in the MDCT spectrum for granule 0 (left window) "\ + "and granule 1 (right window). The text also shows the blocktype "\ + "used, the number of bits used to encode the coefficients and the "\ + "number of extra bits allocated from the reservoir. The MDCT pull down "\ + "window will toggle between the original unquantized MDCT coefficients "\ + "and the compressed (quantized) coefficients.\n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "FFT window: "\ + "The gray bars show the energy in the FFT spectrum used by the "\ + "psycho-acoustic model. Granule 0 is in the left window, granule 1 in "\ + "the right window. The green and blue bars show how much distortion is "\ + "allowable, as computed by the psycho-acoustic model. The red bars show "\ + "the actual distortion after encoding. There is one FFT for each "\ + "granule, computed with a 1024 Hann window centered over the "\ + "appropriate granule. (the range of this 1024 sample window is shown "\ + "by the blue and green bars in the PCM data window). The Spectrum pull "\ + "down window will toggle between showing the energy in equally spaced "\ + "frequency domain and the scale factor bands used by layer3. Finally, "\ + "the perceptual entropy, total energy and number of scalefactor bands "\ + "with audible distortion is shown. (This info not available when "\ + "analyzing .mp3 files.)",-1); + + break; + case 1: + /* Set the about box information */ + gtk_window_set_title (GTK_WINDOW (textwindow), "About"); + gtk_widget_set_usize(box,350,260); + + sprintf(text,"LAME version %s \n%s\n\n",get_lame_version(),get_lame_url()); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + + sprintf(text,"psycho-acoustic model: GPSYCHO version %s\n",get_psy_version()); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + + sprintf(text,"frame analyzer: MP3x version %s\n\n",get_mp3x_version()); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "decoder: mpg123/mpglib .59q \nMichael Hipp (www.mpg123.de)\n\n",-1); + + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL, + "Encoder, decoder & psy-models based on ISO\ndemonstration source. ",-1); + break; + + case 2: + gtk_window_set_title (GTK_WINDOW (textwindow), "Statistics"); + gtk_widget_set_usize(box,350,260); + sprintf(text,"frames processed so far: %i \n",Pinfo[0].frameNum+1); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"granules processed so far: %i \n\n",4*(Pinfo[0].frameNum+1)); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"mean bits/frame (approximate): %i\n", + gtkinfo.approxbits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"mean bits/frame (from LAME): %i\n", + 4*Pinfo[0].mean_bits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"bitsize of largest frame: %i \n",gtkinfo.maxbits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"average bits/frame: %3.1f \n\n",gtkinfo.avebits); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"ms_stereo frames: %i \n",gtkinfo.totms); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"i_stereo frames: %i \n",gtkinfo.totis); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"de-emphasis frames: %i \n",gtkinfo.totemph); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"short block granules: %i \n",gtkinfo.totshort); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"mixed block granules: %i \n",gtkinfo.totmix); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + sprintf(text,"preflag granules: %i \n",gtkinfo.totpreflag); + gtk_text_insert(GTK_TEXT(box),NULL,NULL,NULL,text,-1); + break; + } + + + + gtk_widget_show (vscrollbar); + gtk_widget_show (box); + gtk_widget_show (vbox); + gtk_widget_show (hbox); + gtk_widget_show (button); + + gtk_box_pack_start (GTK_BOX(hbox), box, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vscrollbar, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (vbox), button, FALSE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (textwindow), vbox); + gtk_widget_show(textwindow); + +} + + + + +/* #include <strings.h>*/ + + +/* This is the GtkItemFactoryEntry structure used to generate new menus. + Item 1: The menu path. The letter after the underscore indicates an + accelerator key once the menu is open. + Item 2: The accelerator key for the entry + Item 3: The callback function. + Item 4: The callback action. This changes the parameters with + which the function is called. The default is 0. + Item 5: The item type, used to define what kind of an item it is. + Here are the possible values: + + NULL -> "<Item>" + "" -> "<Item>" + "<Title>" -> create a title item + "<Item>" -> create a simple item + "<CheckItem>" -> create a check item + "<ToggleItem>" -> create a toggle item + "<RadioItem>" -> create a radio item + <path> -> path of a radio item to link against + "<Separator>" -> create a separator + "<Branch>" -> create an item to hold sub items + "<LastBranch>" -> create a right justified branch +*/ + + +#define C(chr) "<control>" #chr +#define func(name) (GtkItemFactoryCallback) (name) + +static const GtkItemFactoryEntry menu_items [] = { + { "/_File" , NULL, NULL , 0, "<Branch>" }, +#if 0 + { "/File/_New" , C(N), func(print_hello) , 0, NULL }, + { "/File/_Open" , C(O), func(print_hello) , 0, NULL }, + { "/File/_Save" , C(S), func(print_hello) , 0, NULL }, + { "/File/Save _As" , NULL, NULL , 0, NULL }, + { "/File/sep1" , NULL, NULL , 0, "<Separator>" }, + { "/File/Quit" , C(Q), func(gtk_main_quit) , 0, NULL }, +#endif + { "/File/_Quit" , C(Q), func(delete_event) , 0, NULL }, + + { "/_Plotting" , NULL, NULL , 0, "<Branch>" }, + { "/Plotting/_While advancing" , NULL, func(spec_option) , 5, NULL }, + { "/Plotting/_After advancing" , NULL, func(spec_option) , 6, NULL }, + { "/Plotting/Toggle SFB lines" , NULL, func(spec_option) , 7, NULL }, + { "/Plotting/Toggle orig-diff" , NULL, func(spec_option) , 8, NULL }, + + { "/_Channel" , NULL, NULL , 0, "<Branch>" }, + { "/Channel/show _Left" , NULL, func(channel_option), 1, NULL }, + { "/Channel/show _Right" , NULL, func(channel_option), 2, NULL }, + { "/Channel/show _Mid" , NULL, func(channel_option), 3, NULL }, + { "/Channel/show _Side" , NULL, func(channel_option), 4, NULL }, + + { "/_Spectrum" , NULL, NULL , 0, "<Branch>" }, + { "/Spectrum/_Scalefactor bands", NULL, func(spec_option) , 1, NULL }, + { "/Spectrum/_Wave number" , NULL, func(spec_option) , 2, NULL }, + + { "/_MDCT" , NULL, NULL , 0, "<Branch>" }, + { "/MDCT/_Original" , NULL, func(spec_option) , 3, NULL }, + { "/MDCT/_Compressed" , NULL, func(spec_option) , 4, NULL }, + { "/MDCT/_Toggle SFB lines" , NULL, func(spec_option) , 7, NULL }, + + { "/_Stats" , NULL, NULL , 0, "<Branch>" }, + { "/Stats/_Show" , NULL, func(text_window) , 2, NULL }, + + { "/_Help" , NULL, NULL , 0, "<LastBranch>" }, + { "/_Help/_Documentation" , NULL, func(text_window) , 0, NULL }, + { "/_Help/_About" , NULL, func(text_window) , 1, NULL }, +}; + +#undef C +#undef func + + +static void get_main_menu(GtkWidget *windows, GtkWidget ** menubar) { + unsigned int nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]); + GtkItemFactory *item_factory; + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new(); + + /* This function initializes the item factory. + Param 1: The type of menu - can be GTK_TYPE_MENU_BAR, GTK_TYPE_MENU, + or GTK_TYPE_OPTION_MENU. + Param 2: The path of the menu. + Param 3: A pointer to a gtk_accel_group. The item factory sets up + the accelerator table while generating menus. + */ + + item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<main>", + accel_group); + + /* This function generates the menu items. Pass the item factory, + the number of items in the array, the array itself, and any + callback data for the the menu items. */ + gtk_item_factory_create_items(item_factory, nmenu_items, (GtkItemFactoryEntry*)menu_items, NULL); + + /* Attach the new accelerator group to the window. */ + gtk_accel_group_attach (accel_group, GTK_OBJECT (windows)); + + if (menubar) + /* Finally, return the actual menu bar created by the item factory. */ + *menubar = gtk_item_factory_get_widget(item_factory, "<main>"); +} + + + + + + + + + + + + + + + + +int gtkcontrol(lame_global_flags *gfp2,char *inPath) +{ + /* GtkWidget is the storage type for widgets */ + GtkWidget *button; + GtkAdjustment *adj; + GtkWidget *mbox; /* main box */ + GtkWidget *box1; /* frame control buttons go */ + GtkWidget *box2; /* frame counters */ + GtkWidget *box3; /* frame header info */ + GtkWidget *table; /* table for all the plotting areas */ + GtkWidget *menubar; + + gint tableops,graphx,graphy; + char frameinfo[80]; + + graphx = 600; /* minimum allowed size of pixmap */ + graphy = 95; + + gfp=gfp2; + gfc=gfp->internal_flags; + + /* set some global defaults/variables */ + gtkinfo.filetype = (input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3); + gtkinfo.msflag=0; + gtkinfo.chflag=0; + gtkinfo.kbflag=0; + gtkinfo.flag123 = (input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3); /* MP3 file=use mpg123 output */ + gtkinfo.pupdate=0; + gtkinfo.avebits = 0; + gtkinfo.maxbits = 0; + gtkinfo.approxbits = 0; + gtkinfo.totemph = 0; + gtkinfo.totms = 0; + gtkinfo.totis = 0; + gtkinfo.totshort = 0; + gtkinfo.totmix = 0; + gtkinfo.sfblines= 1; + gtkinfo.difference= 0; + gtkinfo.totalframes = 0; + + memset((char *) Pinfo, 0, sizeof(Pinfo)); + pplot = &Pinfo[READ_AHEAD]; + + strcpy(frameinfo,"MP3x: "); + strncat(frameinfo,inPath,70); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), frameinfo); + gtk_signal_connect (GTK_OBJECT (window), "delete_event", + GTK_SIGNAL_FUNC (delete_event), NULL); + + gtk_signal_connect_object (GTK_OBJECT (window), "key_press_event", + GTK_SIGNAL_FUNC(key_press_event), + GTK_OBJECT (window)); + + gtk_container_set_border_width (GTK_CONTAINER (window), 0); + + + mbox = gtk_vbox_new(FALSE, 0); + + + /* layout of mbox */ + box1 = gtk_hbox_new(FALSE, 0); + box2 = gtk_hbox_new(FALSE, 0); + box3 = gtk_hbox_new(FALSE, 0); + table = gtk_table_new (5, 2, FALSE); + tableops = GTK_FILL | GTK_EXPAND | GTK_SHRINK; + get_main_menu(window, &menubar); + + gtk_box_pack_start(GTK_BOX(mbox), menubar, FALSE, TRUE, 0); + gtk_box_pack_end (GTK_BOX (mbox), box1, FALSE, TRUE, 0); + gtk_box_pack_end(GTK_BOX (mbox),box2, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX (mbox),box3, FALSE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (mbox), table, TRUE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (window), mbox); + + + /*********************************************************************/ + /* stuff in box3 frame header info */ + /*********************************************************************/ + /* + headerbox = gtk_label_new(" "); + gtk_label_set_justify(GTK_LABEL(headerbox),GTK_JUSTIFY_LEFT); + */ + headerbox = gtk_text_new (NULL, NULL); + gtk_text_set_editable (GTK_TEXT (headerbox), FALSE); + gtk_widget_set_usize(headerbox,200,20); + gtk_widget_show (headerbox); + gtk_box_pack_start(GTK_BOX (box3),headerbox, TRUE, TRUE, 0); + + + + /*********************************************************************/ + /* stuff in box2 frame counters */ + /*********************************************************************/ + framecounter = gtk_label_new(""); + gtk_widget_show(framecounter); + gtk_box_pack_start(GTK_BOX (box2),framecounter, FALSE, TRUE, 0); + + adj = (GtkAdjustment *) gtk_adjustment_new (0, 0,(gint) lame_get_totalframes(gfp)-1, 0, 0, 0); + frameprogress = gtk_progress_bar_new_with_adjustment (adj); + /* Set the format of the string that can be displayed in the + * trough of the progress bar: + * %p - percentage + * %v - value + * %l - lower range value + * %u - upper range value */ + gtk_progress_set_format_string (GTK_PROGRESS (frameprogress), "%p%%"); + gtk_progress_set_value (GTK_PROGRESS (frameprogress), (gdouble) 0); + gtk_progress_set_show_text (GTK_PROGRESS (frameprogress),TRUE); + gtk_widget_show (frameprogress); + gtk_box_pack_end (GTK_BOX (box2), frameprogress, FALSE, TRUE, 0); + + + + /*********************************************************************/ + /* stuff in box1 buttons along bottom */ + /*********************************************************************/ + button = gtk_button_new_with_label ("-1"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "-1"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("+1"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "1"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("+10"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "10"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("+100"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "100"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("last frame"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (frameadv), (gpointer) "finish"); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = gtk_button_new_with_label ("stop/plot"); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (plotclick), NULL); + gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + + /*********************************************************************/ + /* stuff in table. all the plotting windows */ + /*********************************************************************/ + pcmbox = gpk_plot_new(graphx,graphy); + gtk_table_attach (GTK_TABLE(table),pcmbox,0,2,0,1,tableops,tableops,2,2 ); + gtk_widget_show (pcmbox); + + winbox = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),winbox,0,2,1,2,tableops,tableops,2,2); + gtk_widget_show (winbox); + + + mdctbox[0] = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),mdctbox[0],0,1,2,3,tableops,tableops,2,2); + gtk_widget_show (mdctbox[0]); + + mdctbox[1] = gpk_plot_new(graphy,graphy); + gtk_table_attach (GTK_TABLE(table),mdctbox[1],1,2,2,3,tableops,tableops,2,2); + gtk_widget_show (mdctbox[1]); + + enerbox[0] = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),enerbox[0],0,1,3,4,tableops,tableops,2,2); + gtk_widget_show (enerbox[0]); + + enerbox[1] = gpk_plot_new(graphy,graphy); + gtk_table_attach (GTK_TABLE(table),enerbox[1],1,2,3,4,tableops,tableops,2,2); + gtk_widget_show (enerbox[1]); + + sfbbox[0] = gpk_plot_new(graphy,graphy); + gtk_table_attach(GTK_TABLE(table),sfbbox[0],0,1,4,5,tableops,tableops,2,2); + gtk_widget_show (sfbbox[0]); + + sfbbox[1] = gpk_plot_new(graphy,graphy); + gtk_table_attach (GTK_TABLE(table),sfbbox[1],1,2,4,5,tableops,tableops,2,2); + gtk_widget_show (sfbbox[1]); + + + + + gtk_idle_add((GtkFunction) frameadv1, NULL); + gtk_widget_show(menubar); + gtk_widget_show(box2); + gtk_widget_show(box3); + gtk_widget_show(table); + gtk_widget_show(box1); + gtk_widget_show (mbox); + gtk_widget_show (window); /* show smallest allowed window */ + + /* make window bigger. */ + /* now the user will be able to shrink it, if desired */ + /* gtk_widget_set_usize(mbox,500,500); */ + /* gtk_widget_show (window); */ /* show smallest allowed window */ + + + + idle_keepgoing=1; /* processing of frames is ON */ + idle_count_max=READ_AHEAD+1; /* number of frames to process before plotting */ + idle_count=0; /* pause & plot when idle_count=idle_count_max */ + + gtk_main (); + assert(mp3done); + return(0); +} + + diff --git a/lame-3.97/frontend/gtkanal.h b/lame-3.97/frontend/gtkanal.h new file mode 100644 index 0000000..995ee4a --- /dev/null +++ b/lame-3.97/frontend/gtkanal.h @@ -0,0 +1,26 @@ +/* + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_GTKCONTROL_H +#define LAME_GTKCONTROL_H + + +int gtkcontrol(lame_global_flags *gfp2,char *inPath); + +#endif + diff --git a/lame-3.97/frontend/lame_vc6.dsp b/lame-3.97/frontend/lame_vc6.dsp new file mode 100644 index 0000000..9a3c1f8 --- /dev/null +++ b/lame-3.97/frontend/lame_vc6.dsp @@ -0,0 +1,177 @@ +# Microsoft Developer Studio Project File - Name="lame" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=LAME - WIN32 DEBUG +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "lame_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "lame_vc6.mak" CFG="LAME - WIN32 DEBUG" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "lame - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "lame - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "lame - Win32 Release NASM" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "lame - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I ".." /I "../mpglib" /I "../libmp3lame" /I "../include" /I "../" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../output/lame.exe" + +!ELSEIF "$(CFG)" == "lame - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /ZI /Od /I "../" /I "../mpglib" /I "../libmp3lame" /I "../include" /D "_DEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /YX /FD /GZ /c +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../output/lame.exe" /pdbtype:sept + +!ELSEIF "$(CFG)" == "lame - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "lame___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "lame___Win32_Release_NASM" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_NASM" +# PROP Intermediate_Dir "Release_NASM" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I ".." /I "../mpglib" /I "../libmp3lame" /I "../include" /I "../" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I ".." /I "../mpglib" /I "../libmp3lame" /I "../include" /I "../" /D "NDEBUG" /D "WIN32" /D "_WIN32" /D "_CONSOLE" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /D "HAVE_NASM" /D "MMX_choose_table" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../output/lame.exe" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../output/lame.exe" + +!ENDIF + +# Begin Target + +# Name "lame - Win32 Release" +# Name "lame - Win32 Debug" +# Name "lame - Win32 Release NASM" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\brhist.c +# End Source File +# Begin Source File + +SOURCE=.\get_audio.c +# End Source File +# Begin Source File + +SOURCE=.\lametime.c +# End Source File +# Begin Source File + +SOURCE=.\main.c +# End Source File +# Begin Source File + +SOURCE=.\parse.c +# End Source File +# Begin Source File + +SOURCE=.\portableio.c +# End Source File +# Begin Source File + +SOURCE=.\timestatus.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\brhist.h +# End Source File +# Begin Source File + +SOURCE=.\get_audio.h +# End Source File +# Begin Source File + +SOURCE=.\lametime.h +# End Source File +# Begin Source File + +SOURCE=.\main.h +# End Source File +# Begin Source File + +SOURCE=.\parse.h +# End Source File +# Begin Source File + +SOURCE=.\portableio.h +# End Source File +# Begin Source File + +SOURCE=.\timestatus.h +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/frontend/lame_vc7.vcproj b/lame-3.97/frontend/lame_vc7.vcproj new file mode 100644 index 0000000..641ef1c --- /dev/null +++ b/lame-3.97/frontend/lame_vc7.vcproj @@ -0,0 +1,1140 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="lame" + ProjectGUID="{AFE3050F-F561-46A8-AEE0-0C6475EB38D7}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release NASM|Win32" + OutputDirectory=".\Release_NASM" + IntermediateDirectory=".\Release_NASM" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H;HAVE_NASM;MMX_choose_table" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release_NASM/lame_vc6.pch" + AssemblerListingLocation=".\Release_NASM/" + ObjectFile=".\Release_NASM/" + ProgramDataBaseFileName=".\Release_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release_NASM/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release_NASM/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../libmp3lame,../include" + PreprocessorDefinitions="_DEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + BasicRuntimeChecks="3" + RuntimeLibrary="5" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Debug/lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\Debug/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Debug/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="..,../mpglib,../libmp3lame,../include,../" + PreprocessorDefinitions="NDEBUG;WIN32;_WIN32;_CONSOLE;_WINDOWS;HAVE_MPGLIB;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + UsePrecompiledHeader="2" + PrecompiledHeaderFile=".\Release/lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + OutputFile="../output/lame.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + ProgramDatabaseFile=".\Release/lame.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\Release/lame_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1036"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source Files" + Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> + <File + RelativePath="brhist.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="get_audio.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="lametime.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="main.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="parse.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="portableio.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="timestatus.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + BasicRuntimeChecks="3"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl"> + <File + RelativePath="brhist.h"> + </File> + <File + RelativePath="get_audio.h"> + </File> + <File + RelativePath="lametime.h"> + </File> + <File + RelativePath="main.h"> + </File> + <File + RelativePath="parse.h"> + </File> + <File + RelativePath="portableio.h"> + </File> + <File + RelativePath="timestatus.h"> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/frontend/lametime.c b/lame-3.97/frontend/lametime.c new file mode 100644 index 0000000..9c5af7f --- /dev/null +++ b/lame-3.97/frontend/lametime.c @@ -0,0 +1,162 @@ +/* + * Lame time routines source file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: lametime.c,v 1.15 2003/05/09 14:06:41 aleidinger Exp $ */ + +/* + * name: GetCPUTime ( void ) + * + * description: returns CPU time used by the process + * input: none + * output: time in seconds + * known bugs: may not work in SMP and RPC + * conforming: ANSI C + * + * There is some old difficult to read code at the end of this file. + * Can someone integrate this into this function (if useful)? + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <stdio.h> +#include <time.h> + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#include "lametime.h" + +#if !defined(CLOCKS_PER_SEC) +# warning Your system does not define CLOCKS_PER_SEC, guessing one... +# define CLOCKS_PER_SEC 1000000 +#endif + + +double GetCPUTime ( void ) +{ + clock_t t; + +#if defined(_MSC_VER) || defined(__BORLANDC__) + t = clock (); +#else + t = clock (); +#endif + return t / (double) CLOCKS_PER_SEC; +} + + +/* + * name: GetRealTime ( void ) + * + * description: returns real (human) time elapsed relative to a fixed time (mostly 1970-01-01 00:00:00) + * input: none + * output: time in seconds + * known bugs: bad precision with time() + */ + +#if defined(__unix__) || defined(SVR4) || defined(BSD) + +# include <sys/time.h> +# include <unistd.h> + +double GetRealTime ( void ) /* conforming: SVr4, BSD 4.3 */ +{ + struct timeval t; + + if ( 0 != gettimeofday (&t, NULL) ) + assert (0); + return t.tv_sec + 1.e-6 * t.tv_usec; +} + +#elif defined(WIN16) || defined(WIN32) + +# include <stdio.h> +# include <sys/types.h> +# include <sys/timeb.h> + +double GetRealTime ( void ) /* conforming: Win 95, Win NT */ +{ + struct timeb t; + + ftime ( &t ); + return t.time + 1.e-3 * t.millitm; +} + +#else + +double GetRealTime ( void ) /* conforming: SVr4, SVID, POSIX, X/OPEN, BSD 4.3 */ +{ /* BUT NOT GUARANTEED BY ANSI */ + time_t t; + + t = time (NULL); + return (double) t; +} + +#endif + + +#if defined(_WIN32) || defined(__CYGWIN__) +# include <io.h> +# include <fcntl.h> +#else +# include <unistd.h> +#endif + +int lame_set_stream_binary_mode ( FILE* const fp ) +{ +#if defined __EMX__ + _fsetmode ( fp, "b" ); +#elif defined __BORLANDC__ + setmode (_fileno(fp), O_BINARY ); +#elif defined __CYGWIN__ + setmode ( fileno(fp), _O_BINARY ); +#elif defined _WIN32 + _setmode (_fileno(fp), _O_BINARY ); +#endif + return 0; +} + + +#if defined(__riscos__) +# include <kernel.h> +# include <sys/swis.h> +#elif defined(_WIN32) +# include <sys/types.h> +# include <sys/stat.h> +#else +# include <sys/stat.h> +#endif + +off_t lame_get_file_size ( const char* const filename ) +{ + struct stat sb; + + if ( 0 == stat ( filename, &sb ) ) + return sb.st_size; + return (off_t) -1; +} + +/* End of lametime.c */ + diff --git a/lame-3.97/frontend/lametime.h b/lame-3.97/frontend/lametime.h new file mode 100644 index 0000000..acc8366 --- /dev/null +++ b/lame-3.97/frontend/lametime.h @@ -0,0 +1,36 @@ +/* + * Lame time routines include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_LAMETIME_H +#define LAME_LAMETIME_H + +#include <sys/types.h> +#include "lame.h" + +extern double GetCPUTime ( void ); +extern double GetRealTime ( void ); + +extern int lame_set_stream_binary_mode ( FILE* const fp ); +extern off_t lame_get_file_size ( const char* const filename ); + +#endif /* LAME_LAMETIME_H */ + + diff --git a/lame-3.97/frontend/main.c b/lame-3.97/frontend/main.c new file mode 100644 index 0000000..7fe3643 --- /dev/null +++ b/lame-3.97/frontend/main.c @@ -0,0 +1,815 @@ +/* + * Command line frontend program + * + * Copyright (c) 1999 Mark Taylor + * 2000 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: main.c,v 1.92.2.1 2005/12/18 18:49:29 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <stdio.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr(), *strrchr(); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef HAVE_FCNTL_H +# include <fcntl.h> +#endif + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include <unistd.h> +#endif + +#if defined(_WIN32) +# include <windows.h> +#endif + + +/* + main.c is example code for how to use libmp3lame.a. To use this library, + you only need the library and lame.h. All other .h files are private + to the library. +*/ +#include "lame.h" + +#include "brhist.h" +#include "parse.h" +#include "main.h" +#include "get_audio.h" +#include "portableio.h" +#include "timestatus.h" + +/* PLL 14/04/2000 */ +#if macintosh +#include <console.h> +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + + + +/************************************************************************ +* +* main +* +* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO +* psychoacoustic model. +* +************************************************************************/ + +int +parse_args_from_string(lame_global_flags * const gfp, const char *p, + char *inPath, char *outPath) +{ /* Quick & very Dirty */ + char *q; + char *f; + char *r[128]; + int c = 0; + int ret; + + if (p == NULL || *p == '\0') + return 0; + + f = q = malloc(strlen(p) + 1); + strcpy(q, p); + + r[c++] = "lhama"; + while (1) { + r[c++] = q; + while (*q != ' ' && *q != '\0') + q++; + if (*q == '\0') + break; + *q++ = '\0'; + } + r[c] = NULL; + + ret = parse_args(gfp, c, r, inPath, outPath, NULL, NULL); + free(f); + return ret; +} + + + + + +FILE * +init_files(lame_global_flags * gf, char *inPath, char *outPath) +{ + FILE *outf; + /* Mostly it is not useful to use the same input and output name. + This test is very easy and buggy and don't recognize different names + assigning the same file + */ + if (0 != strcmp("-", outPath) && 0 == strcmp(inPath, outPath)) { + fprintf(stderr, "Input file and Output file are the same. Abort.\n"); + return NULL; + } + + /* open the wav/aiff/raw pcm or mp3 input file. This call will + * open the file, try to parse the headers and + * set gf.samplerate, gf.num_channels, gf.num_samples. + * if you want to do your own file input, skip this call and set + * samplerate, num_channels and num_samples yourself. + */ + init_infile(gf, inPath); + if ((outf = init_outfile(outPath, lame_get_decode_only(gf))) == NULL) { + fprintf(stderr, "Can't init outfile '%s'\n", outPath); + return NULL; + } + + return outf; +} + + + + + + +/* the simple lame decoder */ +/* After calling lame_init(), lame_init_params() and + * init_infile(), call this routine to read the input MP3 file + * and output .wav data to the specified file pointer*/ +/* lame_decoder will ignore the first 528 samples, since these samples + * represent the mpglib delay (and are all 0). skip = number of additional + * samples to skip, to (for example) compensate for the encoder delay */ + +int +lame_decoder(lame_global_flags * gfp, FILE * outf, int skip, char *inPath, + char *outPath) +{ + short int Buffer[2][1152]; + int iread; + double wavsize; + int i; + void (*WriteFunction) (FILE * fp, char *p, int n); + int tmp_num_channels = lame_get_num_channels( gfp ); + + + + if (silent < 10) fprintf(stderr, "\rinput: %s%s(%g kHz, %i channel%s, ", + strcmp(inPath, "-") ? inPath : "<stdin>", + strlen(inPath) > 26 ? "\n\t" : " ", + lame_get_in_samplerate( gfp ) / 1.e3, + tmp_num_channels, tmp_num_channels != 1 ? "s" : ""); + + switch (input_format) { + case sf_mp3: + if (skip==0) { + if (enc_delay>-1) skip = enc_delay + 528+1; + else skip=lame_get_encoder_delay(gfp)+528+1; + }else{ + /* user specified a value of skip. just add for decoder */ + skip += 528+1; /* mp3 decoder has a 528 sample delay, plus user supplied "skip" */ + } + + if (silent < 10) fprintf(stderr, "MPEG-%u%s Layer %s", 2 - lame_get_version(gfp), + lame_get_out_samplerate( gfp ) < 16000 ? ".5" : "", "III"); + break; + case sf_mp2: + skip += 240 + 1; + if (silent < 10) fprintf(stderr, "MPEG-%u%s Layer %s", 2 - lame_get_version(gfp), + lame_get_out_samplerate( gfp ) < 16000 ? ".5" : "", "II"); + break; + case sf_mp1: + skip += 240 + 1; + if (silent < 10) fprintf(stderr, "MPEG-%u%s Layer %s", 2 - lame_get_version(gfp), + lame_get_out_samplerate( gfp ) < 16000 ? ".5" : "", "I"); + break; + case sf_raw: + if (silent < 10) fprintf(stderr, "raw PCM data"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + break; + case sf_wave: + if (silent < 10) fprintf(stderr, "Microsoft WAVE"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + break; + case sf_aiff: + if (silent < 10) fprintf(stderr, "SGI/Apple AIFF"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + break; + default: + if (silent < 10) fprintf(stderr, "unknown"); + mp3input_data.nsamp = lame_get_num_samples( gfp ); + mp3input_data.framesize = 1152; + skip = 0; /* other formats have no delay *//* is += 0 not better ??? */ + assert(0); + break; + } + + if (silent < 10) { + fprintf(stderr, ")\noutput: %s%s(16 bit, Microsoft WAVE)\n", + strcmp(outPath, "-") ? outPath : "<stdout>", + strlen(outPath) > 45 ? "\n\t" : " "); + + if (skip > 0) + fprintf(stderr, + "skipping initial %i samples (encoder+decoder delay)\n", + skip); + } + + if ( 0 == disable_wav_header ) + WriteWaveHeader(outf, 0x7FFFFFFF, lame_get_in_samplerate( gfp ), + tmp_num_channels, + 16); + /* unknown size, so write maximum 32 bit signed value */ + + wavsize = -skip; + WriteFunction = swapbytes ? WriteBytesSwapped : WriteBytes; + mp3input_data.totalframes = mp3input_data.nsamp / mp3input_data.framesize; + + assert(tmp_num_channels >= 1 && tmp_num_channels <= 2); + + do { + iread = get_audio16(gfp, Buffer); /* read in 'iread' samples */ + mp3input_data.framenum += iread / mp3input_data.framesize; + wavsize += iread; + + if (silent <= 0) + decoder_progress(gfp, &mp3input_data); + + skip -= (i = skip < iread ? skip : iread); /* 'i' samples are to skip in this frame */ + + for (; i < iread; i++) { + if ( disable_wav_header ) { + WriteFunction(outf, (char *) &Buffer[0][i], sizeof(short)); + if (tmp_num_channels == 2) + WriteFunction(outf, (char *) &Buffer[1][i], sizeof(short)); + } + else { + Write16BitsLowHigh(outf, Buffer[0][i]); + if (tmp_num_channels == 2) + Write16BitsLowHigh(outf, Buffer[1][i]); + } + } + } while (iread); + + i = (16 / 8) * tmp_num_channels; + assert(i > 0); + if (wavsize <= 0) { + if (silent < 10) fprintf(stderr, "WAVE file contains 0 PCM samples\n"); + wavsize = 0; + } + else if (wavsize > 0xFFFFFFD0 / i) { + if (silent < 10) fprintf(stderr, + "Very huge WAVE file, can't set filesize accordingly\n"); + wavsize = 0xFFFFFFD0; + } + else { + wavsize *= i; + } + + if ( 0 == disable_wav_header ) + if (!fseek(outf, 0l, SEEK_SET)) /* if outf is seekable, rewind and adjust length */ + WriteWaveHeader(outf, (int)wavsize, lame_get_in_samplerate( gfp ), + tmp_num_channels, 16); + fclose(outf); + + if (silent <= 0) + decoder_progress_finish(gfp); + return 0; +} + + + + + + + + + + + + + + + + +int +lame_encoder(lame_global_flags * gf, FILE * outf, int nogap, char *inPath, + char *outPath) +{ + unsigned char mp3buffer[LAME_MAXMP3BUFFER]; + int Buffer[2][1152]; + int iread, imp3; + static const char *mode_names[2][4] = { + {"stereo", "j-stereo", "dual-ch", "single-ch"}, + {"stereo", "force-ms", "dual-ch", "single-ch"} + }; + int frames; + + if (silent < 10) { + lame_print_config(gf); /* print useful information about options being used */ + + fprintf(stderr, "Encoding %s%s to %s\n", + strcmp(inPath, "-") ? inPath : "<stdin>", + strlen(inPath) + strlen(outPath) < 66 ? "" : "\n ", + strcmp(outPath, "-") ? outPath : "<stdout>"); + + fprintf(stderr, + "Encoding as %g kHz ", 1.e-3 * lame_get_out_samplerate(gf)); + + { + const char *appendix = ""; + + switch (lame_get_VBR(gf)) { + case vbr_mt: + case vbr_rh: + case vbr_mtrh: + appendix = "ca. "; + fprintf(stderr, "VBR(q=%i)", lame_get_VBR_q(gf)); + break; + case vbr_abr: + fprintf(stderr, "average %d kbps", + lame_get_VBR_mean_bitrate_kbps(gf)); + break; + default: + fprintf(stderr, "%3d kbps", lame_get_brate(gf)); + break; + } + fprintf(stderr, " %s MPEG-%u%s Layer III (%s%gx) qval=%i\n", + mode_names[lame_get_force_ms(gf)][lame_get_mode(gf)], + 2 - lame_get_version(gf), + lame_get_out_samplerate(gf) < 16000 ? ".5" : "", + appendix, + 0.1 * (int) (10. * lame_get_compression_ratio(gf) + 0.5), + lame_get_quality(gf)); + } + + if (silent <= -10) + lame_print_internals(gf); + + fflush(stderr); + } + + + /* encode until we hit eof */ + do { + /* read in 'iread' samples */ + iread = get_audio(gf, Buffer); + frames = lame_get_frameNum(gf); + + + /********************** status display *****************************/ + if (silent <= 0) { + if (update_interval > 0) { + timestatus_klemm(gf); + } + else { + if (0 == frames % 50) { +#ifdef BRHIST + brhist_jump_back(); +#endif + timestatus(lame_get_out_samplerate(gf), + frames, + lame_get_totalframes(gf), + lame_get_framesize(gf)); +#ifdef BRHIST + if (brhist) + brhist_disp(gf); +#endif + } + } + } + + /* encode */ + imp3 = lame_encode_buffer_int(gf, Buffer[0], Buffer[1], iread, + mp3buffer, sizeof(mp3buffer)); + + /* was our output buffer big enough? */ + if (imp3 < 0) { + if (imp3 == -1) + fprintf(stderr, "mp3 buffer is not big enough... \n"); + else + fprintf(stderr, "mp3 internal error: error code=%i\n", imp3); + return 1; + } + + if (fwrite(mp3buffer, 1, imp3, outf) != imp3) { + fprintf(stderr, "Error writing mp3 output \n"); + return 1; + } + + } while (iread); + + if (nogap) + imp3 = lame_encode_flush_nogap(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ + else + imp3 = lame_encode_flush(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ + + if (imp3 < 0) { + if (imp3 == -1) + fprintf(stderr, "mp3 buffer is not big enough... \n"); + else + fprintf(stderr, "mp3 internal error: error code=%i\n", imp3); + return 1; + + } + + if (silent <= 0) { +#ifdef BRHIST + brhist_jump_back(); +#endif + frames = lame_get_frameNum(gf); + timestatus(lame_get_out_samplerate(gf), + frames, lame_get_totalframes(gf), lame_get_framesize(gf)); +#ifdef BRHIST + if (brhist) { + brhist_disp(gf); + } + brhist_disp_total(gf); +#endif + timestatus_finish(); + } + + fwrite(mp3buffer, 1, imp3, outf); + + return 0; +} + + + + + + +void +brhist_init_package(lame_global_flags * gf) +{ +#ifdef BRHIST + if (brhist) { + if (brhist_init + (gf, lame_get_VBR_min_bitrate_kbps(gf), + lame_get_VBR_max_bitrate_kbps(gf))) { + /* fail to initialize */ + brhist = 0; + } + } + else { + brhist_init(gf, 128, 128); /* Dirty hack */ + } +#endif +} + + + + +void parse_nogap_filenames(int nogapout, char *inPath, char *outPath, char *outdir) { + + char *slasher; + int n; + + strcpy(outPath,outdir); + if (!nogapout) { + strncpy(outPath, inPath, PATH_MAX + 1 - 4); + n=strlen(outPath); + /* nuke old extension, if one */ + if (outPath[n-3] == 'w' + && outPath[n-2] == 'a' + && outPath[n-1] == 'v' + && outPath[n-4] == '.') { + outPath[n-3] = 'm'; + outPath[n-2] = 'p'; + outPath[n-1] = '3'; + } else { + outPath[n+0] = '.'; + outPath[n+1] = 'm'; + outPath[n+2] = 'p'; + outPath[n+3] = '3'; + outPath[n+4] = 0; + } + } else { + slasher = inPath; + slasher += PATH_MAX + 1 - 4; + + /* backseek to last dir delemiter */ + while (*slasher != '/' && *slasher != '\\' && slasher != inPath + && *slasher != ':') + { + slasher--; + } + + /* skip one foward if needed */ + if (slasher != inPath + && (outPath[strlen(outPath)-1] == '/' + || + outPath[strlen(outPath)-1] == '\\' + || + outPath[strlen(outPath)-1] == ':')) + slasher++; + else if (slasher == inPath + && (outPath[strlen(outPath)-1] != '/' + && + outPath[strlen(outPath)-1] != '\\' + && + outPath[strlen(outPath)-1] != ':')) +#ifdef _WIN32 + strcat(outPath, "\\"); +#elif __OS2__ + strcat(outPath, "\\"); +#else + strcat(outPath, "/"); +#endif + + strncat(outPath, slasher, PATH_MAX + 1 - 4); + n=strlen(outPath); + /* nuke old extension */ + if (outPath[n-3] == 'w' + && outPath[n-2] == 'a' + && outPath[n-1] == 'v' + && outPath[n-4] == '.') { + outPath[n-3] = 'm'; + outPath[n-2] = 'p'; + outPath[n-1] = '3'; + } else { + outPath[n+0] = '.'; + outPath[n+1] = 'm'; + outPath[n+2] = 'p'; + outPath[n+3] = '3'; + outPath[n+4] = 0; + } + } +} + + + + +void print_lame_tag_leading_info(lame_global_flags *gf) { + if(lame_get_bWriteVbrTag(gf)) + printf("Writing LAME Tag..."); +} + +void print_trailing_info(lame_global_flags *gf) +{ + if (lame_get_bWriteVbrTag(gf)) + printf("done\n"); + + if (lame_get_findReplayGain(gf) ) { + int RadioGain = lame_get_RadioGain(gf); + printf("ReplayGain: %s%.1fdB\n", RadioGain > 0 ? "+" : "", ((float)RadioGain) / 10.0); + if (RadioGain > 0x1FE || RadioGain < -0x1FE) + printf("WARNING: ReplayGain exceeds the -51dB to +51dB range. Such a result is too\n" + " high to be stored in the header.\n" ); + } + + /* if (the user requested printing info about clipping) and (decoding + on the fly has actually been performed) */ + if(print_clipping_info && lame_get_decode_on_the_fly(gf)) { + float noclipGainChange = (float)lame_get_noclipGainChange(gf) / 10.0; + float noclipScale = lame_get_noclipScale(gf); + + if (noclipGainChange > 0.0) { /* clipping occurs */ + printf("WARNING: clipping occurs at the current gain. Set your decoder to decrease\n" + " the gain by at least %.1fdB or encode again ", noclipGainChange); + + /* advice the user on the scale factor */ + if (noclipScale > 0) { + printf("using --scale %.2f\n", noclipScale); + printf(" or less (the value under --scale is approximate).\n" ); + } + else { + /* the user specified his own scale factor. We could suggest + * the scale factor of (32767.0/gfp->PeakSample)*(gfp->scale) + * but it's usually very inaccurate. So we'd rather advice him to + * disable scaling first and see our suggestion on the scale factor then. */ + printf("using --scale <arg>\n" + " (For a suggestion on the optimal value of <arg> encode\n" + " with --scale 1 first)\n" ); + } + + } + else { /* no clipping */ + if (noclipGainChange > -0.1) + printf("\nThe waveform does not clip and is less than 0.1dB away from full scale.\n" ); + else + printf("\nThe waveform does not clip and is at least %.1fdB away from full scale.\n", -noclipGainChange); + } + } + +} + + + + + +int +main(int argc, char **argv) +{ + int ret; + lame_global_flags *gf; + char outPath[PATH_MAX + 1]; + char nogapdir[PATH_MAX + 1]; + char inPath[PATH_MAX + 1]; + + /* support for "nogap" encoding of up to 200 .wav files */ +#define MAX_NOGAP 200 + int nogapout = 0; + int max_nogap = MAX_NOGAP; + char *nogap_inPath[MAX_NOGAP]; + + int i; + FILE *outf; + +#if macintosh + argc = ccommand(&argv); +#endif + +#if defined(_WIN32) + /* set affinity back to all CPUs. Fix for EAC/lame on SMP systems from + "Todd Richmond" <todd.richmond@openwave.com> */ + typedef BOOL (WINAPI *SPAMFunc)(HANDLE, DWORD); + SPAMFunc func; + SYSTEM_INFO si; + + if ((func = (SPAMFunc)GetProcAddress(GetModuleHandle("KERNEL32.DLL"), + "SetProcessAffinityMask")) != NULL) { + GetSystemInfo(&si); + func(GetCurrentProcess(), si.dwActiveProcessorMask); + } +#endif + + +#ifdef __EMX__ + /* This gives wildcard expansion on Non-POSIX shells with OS/2 */ + _wildcard(&argc, &argv); +#endif + + for (i = 0; i < max_nogap; ++i) { + nogap_inPath[i] = malloc(PATH_MAX + 1); + } + + memset(inPath, 0, sizeof(inPath)); + + /* initialize libmp3lame */ + input_format = sf_unknown; + if (NULL == (gf = lame_init())) { + fprintf(stderr, "fatal error during initialization\n"); + return 1; + } + if (argc <= 1) { + usage(stderr, argv[0]); /* no command-line args, print usage, exit */ + return 1; + } + + /* parse the command line arguments, setting various flags in the + * struct 'gf'. If you want to parse your own arguments, + * or call libmp3lame from a program which uses a GUI to set arguments, + * skip this call and set the values of interest in the gf struct. + * (see the file API and lame.h for documentation about these parameters) + */ + parse_args_from_string(gf, getenv("LAMEOPT"), inPath, outPath); + ret = parse_args(gf, argc, argv, inPath, outPath, nogap_inPath, &max_nogap); + if (ret < 0) + return ret == -2 ? 0 : 1; + + if (update_interval < 0.) + update_interval = 2.; + + if (outPath[0] != '\0' && max_nogap>0) { + strncpy(nogapdir, outPath, PATH_MAX + 1); + nogapout = 1; + } + + /* initialize input file. This also sets samplerate and as much + other data on the input file as available in the headers */ + if (max_nogap > 0) { + /* for nogap encoding of multiple input files, it is not possible to + * specify the output file name, only an optional output directory. */ + parse_nogap_filenames(nogapout,nogap_inPath[0],outPath,nogapdir); + outf = init_files(gf, nogap_inPath[0], outPath); + } + else { + outf = init_files(gf, inPath, outPath); + } + if (outf == NULL) { + return -1; + } + + /* Now that all the options are set, lame needs to analyze them and + * set some more internal options and check for problems + */ + i = lame_init_params(gf); + if (i < 0) { + if (i == -1) { + display_bitrates(stderr); + } + fprintf(stderr, "fatal error during initialization\n"); + return i; + } + + if (silent > 0 +#ifndef RH_HIST + || lame_get_VBR(gf) == vbr_off +#endif + ) { + brhist = 0; /* turn off VBR histogram */ + } + + + if (lame_get_decode_only(gf)) { + /* decode an mp3 file to a .wav */ + if (mp3_delay_set) + lame_decoder(gf, outf, mp3_delay, inPath, outPath); + else + lame_decoder(gf, outf, 0, inPath, outPath); + + } + else { + if (max_nogap > 0) { + /* + * encode multiple input files using nogap option + */ + for (i = 0; i < max_nogap; ++i) { + int use_flush_nogap = (i != (max_nogap - 1)); + if (i > 0) { + parse_nogap_filenames(nogapout,nogap_inPath[i],outPath,nogapdir); + /* note: if init_files changes anything, like + samplerate, num_channels, etc, we are screwed */ + outf = init_files(gf, nogap_inPath[i], outPath); + } + brhist_init_package(gf); + lame_set_nogap_total(gf, max_nogap); + lame_set_nogap_currentindex(gf, i); + ret = + lame_encoder(gf, outf, use_flush_nogap, nogap_inPath[i], + outPath); + + if (silent<=0) print_lame_tag_leading_info(gf); + lame_mp3_tags_fid(gf, outf); /* add VBR tags to mp3 file */ + + if (silent<=0) print_trailing_info(gf); + + fclose(outf); /* close the output file */ + close_infile(); /* close the input file */ + + /* reinitialize bitstream for next encoding. this is normally done + * by lame_init_params(), but we cannot call that routine twice */ + if (use_flush_nogap) + lame_init_bitstream(gf); + } + lame_close(gf); + + } + else { + /* + * encode a single input file + */ + brhist_init_package(gf); + ret = lame_encoder(gf, outf, 0, inPath, outPath); + + if (silent<=0) print_lame_tag_leading_info(gf); + lame_mp3_tags_fid(gf, outf); /* add VBR tags to mp3 file */ + + if (silent<=0) print_trailing_info(gf); + + fclose(outf); /* close the output file */ + close_infile(); /* close the input file */ + lame_close(gf); + } + } + return ret; +} + + + diff --git a/lame-3.97/frontend/main.h b/lame-3.97/frontend/main.h new file mode 100644 index 0000000..f36bf46 --- /dev/null +++ b/lame-3.97/frontend/main.h @@ -0,0 +1,61 @@ +/* + * Command line frontend program + * + * Copyright (c) 1999 Mark Taylor + * 2000 Takehiro TOMIANGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifdef HAVE_LIMITS_H +# include <limits.h> +#endif + +#include "get_audio.h" + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + + +/* GLOBAL VARIABLES used by parse.c and main.c. + instantiated in parce.c. ugly, ugly */ +extern sound_file_format input_format; +extern int swapbytes; /* force byte swapping default=0*/ +extern int silent; +extern int brhist; + +extern int mp3_delay; /* for decoder only */ +extern int mp3_delay_set; /* for decoder only */ +extern int enc_delay; /* if decoder finds a Xing header */ +extern int enc_padding; /* if decoder finds a Xing header */ +extern float update_interval; /* to use Frank's time status display */ +extern int disable_wav_header; /* for decoder only */ +extern mp3data_struct mp3input_data; /* used by MP3 */ +extern int print_clipping_info; /* print info whether waveform clips */ +extern int in_signed; +extern int in_unsigned; +#define order_littleEndian 0 +#define order_bigEndian 1 +#define order_unknown 2 +extern int in_endian; +extern int in_bitwidth; + +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#define Max(A, B) ((A) > (B) ? (A) : (B)) + + diff --git a/lame-3.97/frontend/mp3rtp.c b/lame-3.97/frontend/mp3rtp.c new file mode 100644 index 0000000..0b0509f --- /dev/null +++ b/lame-3.97/frontend/mp3rtp.c @@ -0,0 +1,251 @@ +/* $Id: mp3rtp.c,v 1.22 2004/12/31 11:26:25 takehiro Exp $ */ + +/* Still under work ..., need a client for test, where can I get one? */ + +/* + * experimental translation: + * + * gcc -I..\include -I..\libmp3lame -o mp3rtp mp3rtp.c ../libmp3lame/libmp3lame.a lametime.c get_audio.c portableio.c ieeefloat.c timestatus.c parse.c rtp.c -lm + * + * wavrec -t 14400 -s 44100 -S /proc/self/fd/1 | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3 + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include <time.h> + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +#include "lame.h" +#include "main.h" +#include "parse.h" +#include "lametime.h" +#include "timestatus.h" +#include "get_audio.h" +#include "rtp.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* + * Encode (via LAME) to mp3 with RTP streaming of the output. + * + * Author: Felix von Leitner <leitner@vim.org> + * + * mp3rtp ip[:port[:ttl]] [lame encoding options] infile outfile + * + * examples: + * arecord -b 16 -s 22050 -w | ./mp3rtp 224.17.23.42:5004:2 -b 56 - /dev/null + * arecord -b 16 -s 44100 -w | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3 + * + */ + +struct rtpheader RTPheader; +struct sockaddr_in rtpsi; +int rtpsocket; + +void rtp_output ( const char* mp3buffer, const int mp3size ) +{ + sendrtp (rtpsocket, &rtpsi, &RTPheader, mp3buffer, mp3size); + RTPheader.timestamp += 5; + RTPheader.b.sequence++; +} + +#if 0 +struct rtpheader RTPheader; +SOCKET rtpsocket; + +void rtp_output (char *mp3buffer, int mp3size) +{ + rtp_send (rtpsocket, &RTPheader,mp3buffer,mp3size) ; + RTPheader.timestamp+=5; + RTPheader.b.sequence++; +} +#endif + + + + +unsigned int maxvalue ( int Buffer [2] [1152] ) +{ + unsigned int max = 0; + int i; + + for ( i = 0; i < 1152; i++ ) { + if ( abs (Buffer[0][i]) > max ) max = abs (Buffer[0][i]); + if ( abs (Buffer[1][i]) > max ) max = abs (Buffer[1][i]); + } + + return max; +} + +void levelmessage ( unsigned int maxvalue ) +{ + char buff[] = "| . | . | . | . | . | . | . | . | . | . | \r"; + static int max = 0; + static int tmp = 0; + + buff [tmp] = '+'; + tmp = (maxvalue*61 + 16384) / (32767 + 16384/61); + if (tmp > sizeof(buff)-2) + tmp = sizeof(buff)-2; + if (max < tmp) + max = tmp; + buff [max] = 'x'; + buff [tmp] = '#'; + fwrite ( buff, 1, sizeof(buff)-1, stderr ); +} + + +/************************************************************************ +* +* main +* +* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO +* psychoacoustic model. +* +************************************************************************/ + +int main ( int argc, char **argv ) +{ + unsigned char mp3buffer [LAME_MAXMP3BUFFER]; + char inPath [PATH_MAX + 1]; + char outPath [PATH_MAX + 1]; + int Buffer [2] [1152]; + + lame_global_flags *gf; + + int ret; + int wavsamples; + int mp3bytes; + FILE* outf; + + char ip [16]; + unsigned port = 5004; + unsigned ttl = 2; + char dummy; + + if ( argc <= 2 ) { + fprintf ( stderr, +"Encode (via LAME) to mp3 with RTP streaming of the output\n" +"\n" +" mp3rtp ip[:port[:ttl]] [lame encoding options] infile outfile\n" +"\n" +" examples:\n" +" arecord -b 16 -s 22050 -w | ./mp3rtp 224.17.23.42:5004:2 -b 56 - /dev/null\n" +" arecord -b 16 -s 44100 -w | ./mp3rtp 10.1.1.42 -V2 -b128 -B256 - my_mp3file.mp3\n" +"\n" ); + + return 1; + } + + switch (sscanf ( argv[1], "%11[.0-9]:%u:%u%c", ip, &port, &ttl, &dummy )) { + case 1: + case 2: + case 3: + break; + default: + fprintf (stderr, "Illegal destination selector '%s', must be ip[:port[:ttl]]\n", argv[1] ); + return -1; + } + + rtpsocket = makesocket ( ip, port, ttl, &rtpsi ); + srand ( getpid () ^ time (NULL) ); + initrtp ( &RTPheader ); + + /* initialize encoder */ + gf=lame_init(); + + /* Remove the argumets that are rtp related, and then + * parse the command line arguments, setting various flags in the + * struct pointed to by 'gf'. If you want to parse your own arguments, + * or call libmp3lame from a program which uses a GUI to set arguments, + * skip this call and set the values of interest in the gf struct. + * (see lame.h for documentation about these parameters) + */ + + argv[1] = argv[0]; + parse_args(gf, argc - 1, argv + 1, inPath, outPath,NULL,NULL); + + /* open the output file. Filename parsed into gf.inPath */ + if ( 0 == strcmp ( outPath, "-" ) ) { + lame_set_stream_binary_mode (outf = stdout); + } + else { + if ((outf = fopen (outPath, "wb+")) == NULL) { + fprintf (stderr, "Could not create \"%s\".\n", outPath); + return 1; + } + } + + + /* open the wav/aiff/raw pcm or mp3 input file. This call will + * open the file with name gf.inFile, try to parse the headers and + * set gf.samplerate, gf.num_channels, gf.num_samples. + * if you want to do your own file input, skip this call and set + * these values yourself. + */ + init_infile(gf,inPath); + + + /* Now that all the options are set, lame needs to analyze them and + * set some more options + */ + ret = lame_init_params(gf); + if ( ret < 0 ) { + if (ret == -1) display_bitrates (stderr); + fprintf (stderr, "fatal error during initialization\n"); + return -1; + } + + lame_print_config(gf); /* print useful information about options being used */ + + if (update_interval < 0.) + update_interval = 2.; + + /* encode until we hit EOF */ + while ( (wavsamples = get_audio(gf, Buffer)) > 0 ) { /* read in 'wavsamples' samples */ + levelmessage ( maxvalue (Buffer) ); + mp3bytes = lame_encode_buffer_int(gf, /* encode the frame */ + Buffer[0], Buffer[1], wavsamples, + mp3buffer, sizeof (mp3buffer) ); + + rtp_output ( mp3buffer, mp3bytes ); /* write MP3 output to RTP port */ + fwrite ( mp3buffer, 1, mp3bytes, outf ); /* write the MP3 output to file */ + } + + mp3bytes = lame_encode_flush(gf, /* may return one or more mp3 frame */ + mp3buffer, sizeof (mp3buffer) ); + rtp_output ( mp3buffer, mp3bytes ); /* write MP3 output to RTP port */ + fwrite ( mp3buffer, 1, mp3bytes, outf ); /* write the MP3 output to file */ + + lame_mp3_tags_fid(gf, outf ); /* add VBR tags to mp3 file */ + + lame_close(gf); + fclose(outf); + close_infile(); /* close the sound input file */ + + return 0; +} + +/* end of mp3rtp.c */ diff --git a/lame-3.97/frontend/mp3x.c b/lame-3.97/frontend/mp3x.c new file mode 100644 index 0000000..b9b2083 --- /dev/null +++ b/lame-3.97/frontend/mp3x.c @@ -0,0 +1,66 @@ +/* $Id: mp3x.c,v 1.19 2005/03/13 17:01:54 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "lame.h" + +#include <stdio.h> + +#include "lame-analysis.h" +#include <gtk/gtk.h> +#include "parse.h" +#include "get_audio.h" +#include "gtkanal.h" +#include "lametime.h" + +#include "main.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + + + +/************************************************************************ +* +* main +* +* PURPOSE: MPEG-1,2 Layer III encoder with GPSYCHO +* psychoacoustic model. +* +************************************************************************/ +int main(int argc, char **argv) +{ + char mp3buffer[LAME_MAXMP3BUFFER]; + lame_global_flags *gf; + char outPath[PATH_MAX + 1]; + char inPath[PATH_MAX + 1]; + int ret; + + gf=lame_init(); + if(argc <=1 ) { + usage(stderr, argv[0]); /* no command-line args */ + return -1; + } + ret = parse_args(gf,argc, argv, inPath, outPath,NULL,NULL); + if (ret < 0) + return ret == -2 ? 0 : 1; + + (void) lame_set_analysis( gf, 1 ); + + init_infile(gf,inPath); + lame_init_params(gf); + lame_print_config(gf); + + + gtk_init (&argc, &argv); + gtkcontrol(gf,inPath); + + lame_encode_finish(gf,mp3buffer,sizeof(mp3buffer)); + close_infile(); + return 0; +} + diff --git a/lame-3.97/frontend/mp3x_vc6.dsp b/lame-3.97/frontend/mp3x_vc6.dsp new file mode 100644 index 0000000..6b60aaa --- /dev/null +++ b/lame-3.97/frontend/mp3x_vc6.dsp @@ -0,0 +1,172 @@ +# Microsoft Developer Studio Project File - Name="MP3x" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=MP3x - Win32 Debug GTK +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mp3x_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mp3x_vc6.mak" CFG="MP3x - Win32 Debug GTK" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "MP3x - Win32 Debug GTK" (based on "Win32 (x86) Console Application") +!MESSAGE "MP3x - Win32 Release GTK" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "MP3x - Win32 Debug GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "MP3x___Win32_Debug_GTK" +# PROP BASE Intermediate_Dir "MP3x___Win32_Debug_GTK" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "MP3x___Win32_Debug_GTK" +# PROP Intermediate_Dir "MP3x___Win32_Debug_GTK" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /ZI /Od /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_GTK" /D "HAVE_MPGLIB" /D "LAMESNDFILE" /D "BRHIST" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /Gm /ZI /Od /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "_MBCS" /D "HAVE_GTK" /D "LAMESNDFILE" /D "BRHIST" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "HAVE_MPGLIB" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /debug /machine:I386 /out:"../output/mp3x.exe" /pdbtype:sept /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" +# ADD LINK32 glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /debug /machine:I386 /out:"../output/mp3x.exe" /pdbtype:sept /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" + +!ELSEIF "$(CFG)" == "MP3x - Win32 Release GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "MP3x___Win32_Release_GTK" +# PROP BASE Intermediate_Dir "MP3x___Win32_Release_GTK" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "MP3x___Win32_Release_GTK" +# PROP Intermediate_Dir "MP3x___Win32_Release_GTK" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /O2 /I "./WinGTK/gtk-plus" /I "./WinGTK/glib-1.2" /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "NDEBUG" /D "LAMEPARSE" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_GTK" /D "HAVE_MPGLIB" /D "LAMESNDFILE" /D "BRHIST" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /I "./WinGTK/gtk-plus" /I "./WinGTK/glib-1.2" /I "./WinGtk/src/gtk+" /I "./WinGtk/src/glib" /I "./WinGtk/src/gtk+/gdk" /I "../include" /I "../libmp3lame" /I "../mp3x" /I "../frontend" /I ".." /D "NDEBUG" /D "LAMEPARSE" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HAVE_GTK" /D "HAVE_MPGLIB" /D "LAMESNDFILE" /D "BRHIST" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 glib-1.3.lib glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /profile /map /machine:I386 /out:"../output/mp3x.exe" /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" +# ADD LINK32 glib-2.0.lib glib-2.0.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib /nologo /subsystem:console /profile /map /machine:I386 /out:"../output/mp3x.exe" /libpath:"./WinGtk/src/gtk+/gtk" /libpath:"./WinGtk/src/gtk+/gdk" /libpath:"./WinGtk/src/glib" + +!ENDIF + +# Begin Target + +# Name "MP3x - Win32 Debug GTK" +# Name "MP3x - Win32 Release GTK" +# Begin Group "Source" + +# PROP Default_Filter "c" +# Begin Source File + +SOURCE=..\frontend\brhist.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\get_audio.c +# End Source File +# Begin Source File + +SOURCE=.\gpkplotting.c +# End Source File +# Begin Source File + +SOURCE=.\gtkanal.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\lametime.c +# End Source File +# Begin Source File + +SOURCE=.\mp3x.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\parse.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\portableio.c +# End Source File +# Begin Source File + +SOURCE=..\frontend\timestatus.c +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=..\frontend\brhist.h +# End Source File +# Begin Source File + +SOURCE=..\configMS.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\get_audio.h +# End Source File +# Begin Source File + +SOURCE=.\gpkplotting.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\lametime.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\parse.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\portableio.h +# End Source File +# Begin Source File + +SOURCE=..\frontend\timestatus.h +# End Source File +# End Group +# Begin Source File + +SOURCE=..\README.WINGTK +# End Source File +# End Target +# End Project diff --git a/lame-3.97/frontend/mp3x_vc7.vcproj b/lame-3.97/frontend/mp3x_vc7.vcproj new file mode 100644 index 0000000..7485b74 --- /dev/null +++ b/lame-3.97/frontend/mp3x_vc7.vcproj @@ -0,0 +1,1142 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="MP3x" + ProjectGUID="{EB18C685-0074-4892-840C-E5248B16CFFD}" + RootNamespace="MP3x" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release GTK|Win32" + OutputDirectory=".\MP3x___Win32_Release_GTK" + IntermediateDirectory=".\MP3x___Win32_Release_GTK" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + InlineFunctionExpansion="1" + AdditionalIncludeDirectories="./WinGTK/gtk-plus,./WinGTK/glib-1.2,./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="NDEBUG;LAMEPARSE;WIN32;_CONSOLE;HAVE_GTK;HAVE_MPGLIB;LAMESNDFILE;BRHIST;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\MP3x___Win32_Release_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Release_GTK/" + ObjectFile=".\MP3x___Win32_Release_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Release_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateMapFile="TRUE" + MapFileName=".\MP3x___Win32_Release_GTK/mp3x.map" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Release_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug GTK|Win32" + OutputDirectory=".\MP3x___Win32_Debug_GTK" + IntermediateDirectory=".\MP3x___Win32_Debug_GTK" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="1" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE" + CharacterSet="2"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="./WinGtk/src/gtk+,./WinGtk/src/glib,./WinGtk/src/gtk+/gdk,../include,../libmp3lame,../mp3x,../frontend,.." + PreprocessorDefinitions="HAVE_GTK;LAMESNDFILE;BRHIST;_DEBUG;WIN32;_CONSOLE;HAVE_MPGLIB;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\MP3x___Win32_Debug_GTK/mp3x_vc6.pch" + AssemblerListingLocation=".\MP3x___Win32_Debug_GTK/" + ObjectFile=".\MP3x___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\MP3x___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="glib-2.0.lib odbc32.lib odbccp32.lib gdk.lib gtk.lib" + OutputFile="../output/mp3x.exe" + LinkIncremental="1" + SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="./WinGtk/src/gtk+/gtk,./WinGtk/src/gtk+/gdk,./WinGtk/src/glib" + GenerateDebugInformation="TRUE" + ProgramDatabaseFile=".\MP3x___Win32_Debug_GTK/mp3x.pdb" + SubSystem="1" + TargetMachine="1"/> + <Tool + Name="VCMIDLTool" + TypeLibraryName=".\MP3x___Win32_Debug_GTK/mp3x_vc6.tlb" + HeaderFileName=""/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="_DEBUG" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCWebDeploymentTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source" + Filter="c"> + <File + RelativePath="brhist.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="get_audio.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="gpkplotting.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="gtkanal.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="lametime.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="mp3x.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="parse.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="portableio.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="timestatus.c"> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Include" + Filter="h"> + <File + RelativePath="brhist.h"> + </File> + <File + RelativePath="..\configMS.h"> + </File> + <File + RelativePath="get_audio.h"> + </File> + <File + RelativePath="gpkplotting.h"> + </File> + <File + RelativePath="lametime.h"> + </File> + <File + RelativePath="parse.h"> + </File> + <File + RelativePath="portableio.h"> + </File> + <File + RelativePath="timestatus.h"> + </File> + </Filter> + <File + RelativePath="..\README.WINGTK"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/frontend/parse.c b/lame-3.97/frontend/parse.c new file mode 100644 index 0000000..2934865 --- /dev/null +++ b/lame-3.97/frontend/parse.c @@ -0,0 +1,2005 @@ +/* + * Command line parsing related functions + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: parse.c,v 1.211.2.3 2006/02/02 21:04:30 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <ctype.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef __OS2__ +#include <os2.h> +#define PRTYC_IDLE 1 +#define PRTYC_REGULAR 2 +#define PRTYD_MINIMUM -31 +#define PRTYD_MAXIMUM 31 +#endif + +#ifdef HAVE_LIMITS_H +# include <limits.h> +#endif + +#include "lame.h" +#include "set_get.h" + +#include "brhist.h" +#include "parse.h" +#include "main.h" +#include "get_audio.h" +#include "version.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +#if defined DEBUG || _DEBUG +#define INTERNAL_OPTS 1 +#else +#define INTERNAL_OPTS LAME_ALPHA_VERSION +#endif + +#if (INTERNAL_OPTS!=0) +#define DEV_HELP(a) a +#else +#define DEV_HELP(a) +#endif + + + +/* GLOBAL VARIABLES. set by parse_args() */ +/* we need to clean this up */ +sound_file_format input_format; +int swapbytes; /* force byte swapping default=0*/ +int silent; /* Verbosity */ +int ignore_tag_errors; /* Ignore errors in values passed for tags */ +int brhist; +float update_interval; /* to use Frank's time status display */ +int mp3_delay; /* to adjust the number of samples truncated + during decode */ +int mp3_delay_set; /* user specified the value of the mp3 encoder + delay to assume for decoding */ + +int enc_delay; +int enc_padding; +int disable_wav_header; +mp3data_struct mp3input_data; /* used by MP3 */ +int print_clipping_info; /* print info whether waveform clips */ + +int in_signed=1; +int in_unsigned=0; +int in_endian=order_littleEndian; +int in_bitwidth=16; + + + +/** + * Long Filename support for the WIN32 platform + * + */ +#ifdef WIN32 +#include <winbase.h> +static void +dosToLongFileName( char *fn ) +{ + const int MSIZE = PATH_MAX + 1 - 4; /* we wanna add ".mp3" later */ + WIN32_FIND_DATAA lpFindFileData; + HANDLE h = FindFirstFileA( fn, &lpFindFileData ); + if ( h != INVALID_HANDLE_VALUE ) { + int a; + char *q, *p; + FindClose( h ); + for ( a = 0; a < MSIZE; a++ ) { + if ( '\0' == lpFindFileData.cFileName[a] ) break; + } + if ( a >= MSIZE || a == 0 ) return; + q = strrchr( fn, '\\' ); + p = strrchr( fn, '/' ); + if ( p-q > 0 ) q = p; + if ( q == NULL ) q = strrchr(fn,':'); + if ( q == NULL ) strncpy( fn, lpFindFileData.cFileName, a ); + else { + a += q-fn +1; + if ( a >= MSIZE ) return; + strncpy( ++q, lpFindFileData.cFileName, MSIZE-a ); + } + } +} +#endif +#if defined(WIN32) +#include <windows.h> +BOOL SetPriorityClassMacro(DWORD p) +{ + HANDLE op = OpenProcess(PROCESS_ALL_ACCESS,TRUE,GetCurrentProcessId()); + return SetPriorityClass(op,p); +} + +static void setWin32Priority( lame_global_flags* gfp, int Priority ) +{ + switch (Priority) { + case 0: + case 1: + SetPriorityClassMacro(IDLE_PRIORITY_CLASS); + printf("==> Priority set to Low.\n"); + break; + default: + case 2: + SetPriorityClassMacro(NORMAL_PRIORITY_CLASS); + printf("==> Priority set to Normal.\n"); + break; + case 3: + case 4: + SetPriorityClassMacro(HIGH_PRIORITY_CLASS); + printf("==> Priority set to High.\n"); + break; + } +} +#endif + + +#if defined(__OS2__) +/* OS/2 priority functions */ +static int setOS2Priority( lame_global_flags* gfp, int Priority ) +{ + int rc; + + switch(Priority) { + + case 0: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_IDLE, /* select priority class (idle, regular, etc) */ + 0, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 0 (Low priority).\n"); + break; + + case 1: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_IDLE, /* select priority class (idle, regular, etc) */ + PRTYD_MAXIMUM, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 1 (Medium priority).\n"); + break; + + case 2: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ + PRTYD_MINIMUM, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 2 (Regular priority).\n"); + break; + + case 3: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ + 0, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 3 (High priority).\n"); + break; + + case 4: + rc = DosSetPriority( + 0, /* Scope: only one process */ + PRTYC_REGULAR, /* select priority class (idle, regular, etc) */ + PRTYD_MAXIMUM, /* set delta */ + 0); /* Assume current process */ + printf("==> Priority set to 4 (Maximum priority). I hope you enjoy it :)\n"); + break; + + default: + printf("==> Invalid priority specified! Assuming idle priority.\n"); + } + + + return 0; +} +#endif + + +/************************************************************************ +* +* license +* +* PURPOSE: Writes version and license to the file specified by fp +* +************************************************************************/ + +static int lame_version_print ( FILE* const fp ) +{ + const char * b = get_lame_os_bitness (); + const char * v = get_lame_version (); + const char * u = get_lame_url (); + const int lenb = strlen (b); + const int lenv = strlen (v); + const int lenu = strlen (u); + const int lw = 80; /* line width of terminal in characters */ + const int sw = 16; /* static width of text */ + + if (lw >= lenb+lenv+lenu+sw || lw < lenu+2) + /* text fits in 80 chars per line, or line even too small for url */ + if( lenb > 0 ) + fprintf ( fp, "LAME %s version %s (%s)\n\n", b, v, u ); + else + fprintf ( fp, "LAME version %s (%s)\n\n", v, u ); + else + /* text too long, wrap url into next line, right aligned */ + if( lenb > 0 ) + fprintf ( fp, "LAME %s version %s\n%*s(%s)\n\n", b, v, lw-2-lenu, "", u ); + else + fprintf ( fp, "LAME version %s\n%*s(%s)\n\n", v, lw-2-lenu, "", u ); + + if (LAME_ALPHA_VERSION) + fprintf ( fp, "warning: alpha versions should be used for testing only\n\n"); + + + return 0; +} + +static int print_license ( FILE* const fp ) /* print version & license */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "Can I use LAME in my commercial program?\n" + "\n" + "Yes, you can, under the restrictions of the LGPL. In particular, you\n" + "can include a compiled version of the LAME library (for example,\n" + "lame.dll) with a commercial program. Some notable requirements of\n" + "the LGPL:\n" + "\n" ); + fprintf ( fp, + "1. In your program, you cannot include any source code from LAME, with\n" + " the exception of files whose only purpose is to describe the library\n" + " interface (such as lame.h).\n" + "\n" ); + fprintf ( fp, + "2. Any modifications of LAME must be released under the LGPL.\n" + " The LAME project (www.mp3dev.org) would appreciate being\n" + " notified of any modifications.\n" + "\n" ); + fprintf ( fp, + "3. You must give prominent notice that your program is:\n" + " A. using LAME (including version number)\n" + " B. LAME is under the LGPL\n" + " C. Provide a copy of the LGPL. (the file COPYING contains the LGPL)\n" + " D. Provide a copy of LAME source, or a pointer where the LAME\n" + " source can be obtained (such as www.mp3dev.org)\n" + " An example of prominent notice would be an \"About the LAME encoding engine\"\n" + " button in some pull down menu within the executable of your program.\n" + "\n" ); + fprintf ( fp, + "4. If you determine that distribution of LAME requires a patent license,\n" + " you must obtain such license.\n" + "\n" + "\n" ); + fprintf ( fp, + "*** IMPORTANT NOTE ***\n" + "\n" + "The decoding functions provided in LAME use the mpglib decoding engine which\n" + "is under the GPL. They may not be used by any program not released under the\n" + "GPL unless you obtain such permission from the MPG123 project (www.mpg123.de).\n" + "\n" ); + return 0; +} + + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes command line syntax to the file specified by fp +* +************************************************************************/ + +int usage ( FILE* const fp, const char* ProgramName ) /* print general syntax */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "usage: %s [options] <infile> [outfile]\n" + "\n" + " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" + "\n" + "Try:\n" + " \"%s --help\" for general usage information\n" + " or:\n" + " \"%s --preset help\" for information on suggested predefined settings\n" + " or:\n" + " \"%s --longhelp\"\n" + " or \"%s -?\" for a complete options list\n\n", + ProgramName, ProgramName, ProgramName, ProgramName, ProgramName ); + return 0; +} + + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes command line syntax to the file specified by fp +* but only the most important ones, to fit on a vt100 terminal +* +************************************************************************/ + +int short_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName ) /* print short syntax help */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "usage: %s [options] <infile> [outfile]\n" + "\n" + " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" + "\n" + "RECOMMENDED:\n" + " lame -V2 input.wav output.mp3\n" + "\n", ProgramName ); + fprintf ( fp, + "OPTIONS:\n" + " -b bitrate set the bitrate, default 128 kbps\n" + " -h higher quality, but a little slower. Recommended.\n" + " -f fast mode (lower quality)\n" + " -V n quality setting for VBR. default n=%i\n" + " 0=high quality,bigger files. 9=smaller files\n" + , lame_get_VBR_q(gfp) ); + fprintf ( fp, + " --preset type type must be \"medium\", \"standard\", \"extreme\", \"insane\",\n" + " or a value for an average desired bitrate and depending\n" + " on the value specified, appropriate quality settings will\n" + " be used.\n" + " \"--preset help\" gives more info on these\n" + "\n" ); + fprintf ( fp, +#if defined(WIN32) + " --priority type sets the process priority\n" + " 0,1 = Low priority\n" + " 2 = normal priority\n" + " 3,4 = High priority\n" + "\n" +#endif +#if defined(__OS2__) + " --priority type sets the process priority\n" + " 0 = Low priority\n" + " 1 = Medium priority\n" + " 2 = Regular priority\n" + " 3 = High priority\n" + " 4 = Maximum priority\n" + "\n" +#endif + " --longhelp full list of options\n" + "\n" ); + + return 0; +} + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes command line syntax to the file specified by fp +* +************************************************************************/ + +static void wait_for ( FILE* const fp, int lessmode ) +{ + if ( lessmode ) { + fflush ( fp ); + getchar (); + } else { + fprintf ( fp, "\n" ); + } + fprintf ( fp, "\n" ); +} + +int long_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName, int lessmode ) /* print long syntax help */ +{ + lame_version_print ( fp ); + fprintf ( fp, + "usage: %s [options] <infile> [outfile]\n" + "\n" + " <infile> and/or <outfile> can be \"-\", which means stdin/stdout.\n" + "\n" + "RECOMMENDED:\n" + " lame -V2 input.wav output.mp3\n" + "\n", ProgramName ); + fprintf ( fp, + "OPTIONS:\n" + " Input options:\n" + " -r input is raw pcm\n" + " -x force byte-swapping of input\n" + " -s sfreq sampling frequency of input file (kHz) - default 44.1 kHz\n" + " --bitwidth w input bit width is w (default 16)\n" + " --scale <arg> scale input (multiply PCM data) by <arg>\n" + " --scale-l <arg> scale channel 0 (left) input (multiply PCM data) by <arg>\n" + " --scale-r <arg> scale channel 1 (right) input (multiply PCM data) by <arg>\n" +#ifdef LIBSNDFILE + " --signed input is signed (default)\n" + " --unsigned input is unsigned\n" + " --little-endian input is little-endian (default from host)\n" + " --big-endian input is big-endian (default from host)\n" +#endif + ); + fprintf ( fp, +#if (defined HAVE_MPGLIB || defined AMIGA_MPEGA) + " --mp1input input file is a MPEG Layer I file\n" + " --mp2input input file is a MPEG Layer II file\n" + " --mp3input input file is a MPEG Layer III file\n" +#endif + " --nogap <file1> <file2> <...>\n" + " gapless encoding for a set of contiguous files\n" + " --nogapout <dir>\n" + " output dir for gapless encoding (must precede --nogap)\n" + " --nogaptags allow the use of VBR tags in gapless encoding" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " Operational options:\n" + " -a downmix from stereo to mono file for mono encoding\n" + " -m <mode> (j)oint, (s)imple, (f)orce, (d)dual-mono, (m)ono\n" + " default is (j) or (s) depending on bitrate\n" + " joint = joins the best possible of MS and LR stereo\n" + " simple = force LR stereo on all frames\n" + " force = force MS stereo on all frames.\n" + " --preset type type must be \"medium\", \"standard\", \"extreme\", \"insane\",\n" + " or a value for an average desired bitrate and depending\n" + " on the value specified, appropriate quality settings will\n" + " be used.\n" + " \"--preset help\" gives more info on these\n" + " --comp <arg> choose bitrate to achive a compression ratio of <arg>\n" + ); + fprintf ( fp, + " --replaygain-fast compute RG fast but slightly inaccurately (default)\n" +#ifdef DECODE_ON_THE_FLY + " --replaygain-accurate compute RG more accurately and find the peak sample\n" +#endif + " --noreplaygain disable ReplayGain analysis\n" +#ifdef DECODE_ON_THE_FLY + " --clipdetect enable --replaygain-accurate and print a message whether\n" + " clipping occurs and how far the waveform is from full scale\n" +#endif + ); + fprintf ( fp, + " --freeformat produce a free format bitstream\n" + " --decode input=mp3 file, output=wav\n" + " -t disable writing wav header when using --decode\n" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " Verbosity:\n" + " --disptime <arg>print progress report every arg seconds\n" + " -S don't print progress report, VBR histograms\n" + " --nohist disable VBR histogram display\n" + " --silent don't print anything on screen\n" + " --quiet don't print anything on screen\n" + " --brief print more useful information\n" + " --verbose print a lot of useful information\n" + "\n" ); + fprintf ( fp, + " Noise shaping & psycho acoustic algorithms:\n" + " -q <arg> <arg> = 0...9. Default -q 5 \n" + " -q 0: Highest quality, very slow \n" + " -q 9: Poor quality, but fast \n" + " -h Same as -q 2. Recommended.\n" + " -f Same as -q 7. Fast, ok quality\n" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " CBR (constant bitrate, the default) options:\n" + " -b <bitrate> set the bitrate in kbps, default 128 kbps\n" + " --cbr enforce use of constant bitrate\n" + "\n" + " ABR options:\n" + " --abr <bitrate> specify average bitrate desired (instead of quality)\n" + "\n" ); + fprintf ( fp, + " VBR options:\n" + " -v use variable bitrate (VBR) (--vbr-old)\n" + " --vbr-old use old variable bitrate (VBR) routine\n" + " --vbr-new use new variable bitrate (VBR) routine\n" + " -V n quality setting for VBR. default n=%i\n" + " 0=high quality,bigger files. 9=smaller files\n" + , lame_get_VBR_q(gfp) ); + fprintf ( fp, + " -b <bitrate> specify minimum allowed bitrate, default 32 kbps\n" + " -B <bitrate> specify maximum allowed bitrate, default 320 kbps\n" + " -F strictly enforce the -b option, for use with players that\n" + " do not support low bitrate mp3\n" + " -t disable writing LAME Tag\n" + " -T enable and force writing LAME Tag\n" + ); + + wait_for ( fp, lessmode ); +DEV_HELP( + fprintf ( fp, + " ATH related:\n" + " --noath turns ATH down to a flat noise floor\n" + " --athshort ignore GPSYCHO for short blocks, use ATH only\n" + " --athonly ignore GPSYCHO completely, use ATH only\n" + " --athtype n selects between different ATH types [0-4]\n" + " --athlower x lowers ATH by x dB\n" + ); + fprintf ( fp, + " --athaa-type n ATH auto adjust: 0 'no' else 'loudness based'\n" +/** OBSOLETE " --athaa-loudapprox n n=1 total energy or n=2 equal loudness curve\n"*/ + " --athaa-sensitivity x activation offset in -/+ dB for ATH auto-adjustment\n" + "\n" ); +) + fprintf ( fp, + " PSY related:\n" + " --short use short blocks when appropriate\n" + " --noshort do not use short blocks\n" + " --allshort use only short blocks\n" +DEV_HELP( " --cwlimit <freq> compute tonality up to freq (in kHz) default 8.8717\n" ) + ); + fprintf ( fp, + " --notemp disable temporal masking effect\n" + " --nssafejoint M/S switching criterion\n" + " --nsmsfix <arg> M/S switching tuning [effective 0-3.5]\n" + " --interch x adjust inter-channel masking ratio\n" + " --ns-bass x adjust masking for sfbs 0 - 6 (long) 0 - 5 (short)\n" + " --ns-alto x adjust masking for sfbs 7 - 13 (long) 6 - 10 (short)\n" + " --ns-treble x adjust masking for sfbs 14 - 21 (long) 11 - 12 (short)\n" + ); + fprintf ( fp, + " --ns-sfb21 x change ns-treble by x dB for sfb21\n" +DEV_HELP( + " --shortthreshold x,y short block switching threshold,\n" + " x for L/R/M channel, y for S channel\n" + " Noise Shaping related:\n" + " --substep n use pseudo substep noise shaping method types 0-2\n" + ) + ); + + wait_for ( fp, lessmode ); + + fprintf ( fp, + " experimental switches:\n" + " -X n[,m] selects between different noise measurements\n" + " n for long block, m for short. if m is omitted, m = n\n" + " -Y lets LAME ignore noise in sfb21, like in CBR\n" + " -Z [n] currently no effects\n" + ); + + wait_for ( fp, lessmode ); + + fprintf ( fp, + " MP3 header/stream options:\n" + " -e <emp> de-emphasis n/5/c (obsolete)\n" + " -c mark as copyright\n" + " -o mark as non-original\n" + " -p error protection. adds 16 bit checksum to every frame\n" + " (the checksum is computed correctly)\n" + " --nores disable the bit reservoir\n" + " --strictly-enforce-ISO comply as much as possible to ISO MPEG spec\n" + "\n" ); + fprintf ( fp, + " Filter options:\n" + " -k keep ALL frequencies (disables all filters),\n" + " Can cause ringing and twinkling\n" + " --lowpass <freq> frequency(kHz), lowpass filter cutoff above freq\n" + " --lowpass-width <freq> frequency(kHz) - default 15%% of lowpass freq\n" + " --highpass <freq> frequency(kHz), highpass filter cutoff below freq\n" + " --highpass-width <freq> frequency(kHz) - default 15%% of highpass freq\n" + ); + fprintf ( fp, + " --resample <sfreq> sampling frequency of output file(kHz)- default=automatic\n" + ); + + wait_for ( fp, lessmode ); + fprintf ( fp, + " ID3 tag options:\n" + " --tt <title> audio/song title (max 30 chars for version 1 tag)\n" + " --ta <artist> audio/song artist (max 30 chars for version 1 tag)\n" + " --tl <album> audio/song album (max 30 chars for version 1 tag)\n" + " --ty <year> audio/song year of issue (1 to 9999)\n" + " --tc <comment> user-defined text (max 30 chars for v1 tag, 28 for v1.1)\n" + " --tn <track> audio/song track number (1 to 255, creates v1.1 tag)\n" + " --tg <genre> audio/song genre (name or number in list)\n" + ); + fprintf ( fp, + " --add-id3v2 force addition of version 2 tag\n" + " --id3v1-only add only a version 1 tag\n" + " --id3v2-only add only a version 2 tag\n" + " --space-id3v1 pad version 1 tag with spaces instead of nulls\n" + " --pad-id3v2 pad version 2 tag with extra 128 bytes\n" + " --genre-list print alphabetically sorted ID3 genre list and exit\n" + " --ignore-tag-errors ignore errors in values passed for tags\n" + "\n" ); + fprintf ( fp, + " Note: A version 2 tag will NOT be added unless one of the input fields\n" + " won't fit in a version 1 tag (e.g. the title string is longer than 30\n" + " characters), or the '--add-id3v2' or '--id3v2-only' options are used,\n" + " or output is redirected to stdout.\n" +#if defined(WIN32) + "\n\nMS-Windows-specific options:\n" + " --priority <type> sets the process priority:\n" + " 0,1 = Low priority (IDLE_PRIORITY_CLASS)\n" + " 2 = normal priority (NORMAL_PRIORITY_CLASS, default)\n" + " 3,4 = High priority (HIGH_PRIORITY_CLASS))\n" + " Note: Calling '--priority' without a parameter will select priority 0.\n" +#endif +#if defined(__OS2__) + "\n\nOS/2-specific options:\n" + " --priority <type> sets the process priority:\n" + " 0 = Low priority (IDLE, delta = 0)\n" + " 1 = Medium priority (IDLE, delta = +31)\n" + " 2 = Regular priority (REGULAR, delta = -31)\n" + " 3 = High priority (REGULAR, delta = 0)\n" + " 4 = Maximum priority (REGULAR, delta = +31)\n" + " Note: Calling '--priority' without a parameter will select priority 0.\n" +#endif + + ); + +#if defined(HAVE_NASM) + wait_for ( fp, lessmode ); + fprintf ( fp, + " Platform specific:\n" + " --noasm <instructions> disable assembly optimizations for mmx/3dnow/sse\n" + ); + wait_for ( fp, lessmode ); +#endif + + display_bitrates ( fp ); + + return 0; +} + +static void display_bitrate ( FILE* const fp, const char* const version, const int d, const int indx ) +{ + int i; + + fprintf ( fp, + "\nMPEG-%-3s layer III sample frequencies (kHz): %2d %2d %g\n" + "bitrates (kbps):", + version, 32/d, 48/d, 44.1/d ); + for (i = 1; i <= 14; i++ ) /* 14 numbers are printed, not 15, and it was a bug of me */ + fprintf ( fp, " %2i", bitrate_table [indx] [i] ); + fprintf ( fp, "\n" ); +} + +int display_bitrates ( FILE* const fp ) +{ + display_bitrate ( fp, "1" , 1, 1 ); + display_bitrate ( fp, "2" , 2, 0 ); + display_bitrate ( fp, "2.5", 4, 0 ); + fprintf ( fp, "\n" ); + fflush ( fp ); + return 0; +} + + +/* note: for presets it would be better to externalize them in a file. + suggestion: lame --preset <file-name> ... + or: lame --preset my-setting ... and my-setting is defined in lame.ini + */ + +/* +Note from GB on 08/25/2002: +I am merging --presets and --alt-presets. Old presets are now aliases for +corresponding abr values from old alt-presets. This way we now have a +unified preset system, and I hope than more people will use the new tuned +presets instead of the old unmaintained ones. +*/ + + + +/************************************************************************ +* +* usage +* +* PURPOSE: Writes presetting info to #stdout# +* +************************************************************************/ + + +static void presets_longinfo_dm ( FILE* msgfp ) +{ + fprintf ( msgfp, + "\n" + "The --preset switches are designed to provide the highest possible quality.\n" + "\n" + "They have for the most part been subject to and tuned via rigorous double blind\n" + "listening tests to verify and achieve this objective.\n" + "\n" + ); + fprintf ( msgfp, + "These are continually updated to coincide with the latest developments that\n" + "occur and as a result should provide you with nearly the best quality\n" + "currently possible from LAME.\n" + "\n" + ); + fprintf ( msgfp, + "To activate these presets:\n" + "\n" + " For VBR modes (generally highest quality):\n" + "\n" + ); + fprintf ( msgfp, + " \"--preset medium\" This preset should provide near transparency\n" + " to most people on most music.\n" + "\n" + " \"--preset standard\" This preset should generally be transparent\n" + " to most people on most music and is already\n" + " quite high in quality.\n" + "\n" + ); + fprintf ( msgfp, + " \"--preset extreme\" If you have extremely good hearing and similar\n" + " equipment, this preset will generally provide\n" + " slightly higher quality than the \"standard\"\n" + " mode.\n" + "\n" + ); + fprintf ( msgfp, + " For CBR 320kbps (highest quality possible from the --preset switches):\n" + "\n" + " \"--preset insane\" This preset will usually be overkill for most\n" + " people and most situations, but if you must\n" + " have the absolute highest quality with no\n" + " regard to filesize, this is the way to go.\n" + "\n" + ); + fprintf ( msgfp, + " For ABR modes (high quality per given bitrate but not as high as VBR):\n" + "\n" + " \"--preset <kbps>\" Using this preset will usually give you good\n" + " quality at a specified bitrate. Depending on the\n" + " bitrate entered, this preset will determine the\n" + ); + fprintf ( msgfp, + " optimal settings for that particular situation.\n" + " While this approach works, it is not nearly as\n" + " flexible as VBR, and usually will not attain the\n" + " same level of quality as VBR at higher bitrates.\n" + "\n" + ); + fprintf ( msgfp, + "The following options are also available for the corresponding profiles:\n" + "\n" + " <fast> standard\n" + " <fast> extreme\n" + " insane\n" + " <cbr> (ABR Mode) - The ABR Mode is implied. To use it,\n" + " simply specify a bitrate. For example:\n" + " \"--preset 185\" activates this\n" + " preset and uses 185 as an average kbps.\n" + "\n" + ); + fprintf ( msgfp, + " \"fast\" - Enables the new fast VBR for a particular profile. The\n" + " disadvantage to the speed switch is that often times the\n" + " bitrate will be slightly higher than with the normal mode\n" + " and quality may be slightly lower also.\n" + "\n" + ); + fprintf ( msgfp, + " \"cbr\" - If you use the ABR mode (read above) with a significant\n" + " bitrate such as 80, 96, 112, 128, 160, 192, 224, 256, 320,\n" + " you can use the \"cbr\" option to force CBR mode encoding\n" + " instead of the standard abr mode. ABR does provide higher\n" + " quality but CBR may be useful in situations such as when\n" + " streaming an mp3 over the internet may be important.\n" + "\n" + ); + fprintf ( msgfp, + " For example:\n" + "\n" + " \"--preset fast standard <input file> <output file>\"\n" + " or \"--preset cbr 192 <input file> <output file>\"\n" + " or \"--preset 172 <input file> <output file>\"\n" + " or \"--preset extreme <input file> <output file>\"\n" + "\n" + "\n" + ); + fprintf ( msgfp, + "A few aliases are available for ABR mode:\n" + "phone => 16kbps/mono phon+/lw/mw-eu/sw => 24kbps/mono\n" + "mw-us => 40kbps/mono voice => 56kbps/mono\n" + "fm/radio/tape => 112kbps hifi => 160kbps\n" + "cd => 192kbps studio => 256kbps\n"); +} + + +extern void lame_set_msfix( lame_t gfp, double msfix ); + + + +static int presets_set( lame_t gfp, int fast, int cbr, const char* preset_name, const char* ProgramName ) +{ + int mono = 0; + + if ((strcmp(preset_name, "help") == 0) && (fast < 1) + && (cbr < 1)) { + lame_version_print ( stdout ); + presets_longinfo_dm( stdout ); + return -1; + } + + + + /*aliases for compatibility with old presets */ + + if (strcmp(preset_name, "phone") == 0) { + preset_name = "16"; + mono = 1; + } + if ( (strcmp(preset_name, "phon+") == 0) || + (strcmp(preset_name, "lw") == 0) || + (strcmp(preset_name, "mw-eu") == 0) || + (strcmp(preset_name, "sw") == 0)) { + preset_name = "24"; + mono = 1; + } + if (strcmp(preset_name, "mw-us") == 0) { + preset_name = "40"; + mono = 1; + } + if (strcmp(preset_name, "voice") == 0) { + preset_name = "56"; + mono = 1; + } + if (strcmp(preset_name, "fm") == 0) { + preset_name = "112"; + } + if ( (strcmp(preset_name, "radio") == 0) || + (strcmp(preset_name, "tape") == 0)) { + preset_name = "112"; + } + if (strcmp(preset_name, "hifi") == 0) { + preset_name = "160"; + } + if (strcmp(preset_name, "cd") == 0) { + preset_name = "192"; + } + if (strcmp(preset_name, "studio") == 0) { + preset_name = "256"; + } + + if (strcmp(preset_name, "medium") == 0) { + lame_set_VBR_q(gfp, 4); + if (fast > 0) { + lame_set_VBR(gfp, vbr_mtrh); + } else { + lame_set_VBR(gfp, vbr_rh); + } + return 0; + } + + if (strcmp(preset_name, "standard") == 0) { + lame_set_VBR_q(gfp, 2); + if (fast > 0) { + lame_set_VBR(gfp, vbr_mtrh); + } else { + lame_set_VBR(gfp, vbr_rh); + } + return 0; + } + + else if (strcmp(preset_name, "extreme") == 0){ + lame_set_VBR_q(gfp, 0); + if (fast > 0) { + lame_set_VBR(gfp, vbr_mtrh); + } else { + lame_set_VBR(gfp, vbr_rh); + } + return 0; + } + + else if (((strcmp(preset_name, "insane") == 0) || + (strcmp(preset_name, "320" ) == 0)) && (fast < 1)) { + + lame_set_preset(gfp, INSANE); + + return 0; + } + + /* Generic ABR Preset */ + if (((atoi(preset_name)) > 0) && (fast < 1)) { + if ((atoi(preset_name)) >= 8 && (atoi(preset_name)) <= 320){ + lame_set_preset(gfp, atoi(preset_name)); + + if (cbr == 1 ) + lame_set_VBR(gfp, vbr_off); + + if (mono == 1 ) { + lame_set_mode(gfp, MONO); + } + + return 0; + + } + else { + lame_version_print ( stderr ); + fprintf(stderr,"Error: The bitrate specified is out of the valid range for this preset\n" + "\n" + "When using this mode you must enter a value between \"32\" and \"320\"\n" + "\n" + "For further information try: \"%s --preset help\"\n" + + , ProgramName + ); + return -1; + } + } + + lame_version_print ( stderr ); + fprintf(stderr,"Error: You did not enter a valid profile and/or options with --preset\n" + "\n" + "Available profiles are:\n" + "\n" + " <fast> medium\n" + " <fast> standard\n" + " <fast> extreme\n" + " insane\n" + " <cbr> (ABR Mode) - The ABR Mode is implied. To use it,\n" + " simply specify a bitrate. For example:\n" + " \"--preset 185\" activates this\n" + " preset and uses 185 as an average kbps.\n" + "\n" + ); + fprintf ( stderr, + " Some examples:\n" + "\n" + " or \"%s --preset fast standard <input file> <output file>\"\n" + " or \"%s --preset cbr 192 <input file> <output file>\"\n" + " or \"%s --preset 172 <input file> <output file>\"\n" + " or \"%s --preset extreme <input file> <output file>\"\n" + "\n" + "For further information try: \"%s --preset help\"\n" + + , ProgramName, ProgramName, ProgramName, ProgramName, ProgramName + ); + return -1; +} + +static void genre_list_handler (int num,const char *name, void* cookie) +{ + printf ("%3d %s\n", num, name); +} + + +/************************************************************************ +* +* parse_args +* +* PURPOSE: Sets encoding parameters to the specifications of the +* command line. Default settings are used for parameters +* not specified in the command line. +* +* If the input file is in WAVE or AIFF format, the sampling frequency is read +* from the AIFF header. +* +* The input and output filenames are read into #inpath# and #outpath#. +* +************************************************************************/ + +/* would use real "strcasecmp" but it isn't portable */ +static int local_strcasecmp ( const char* s1, const char* s2 ) +{ + unsigned char c1; + unsigned char c2; + + do { + c1 = tolower(*s1); + c2 = tolower(*s2); + if (!c1) { + break; + } + ++s1; + ++s2; + } while (c1 == c2); + return c1 - c2; +} + + + +/* LAME is a simple frontend which just uses the file extension */ +/* to determine the file type. Trying to analyze the file */ +/* contents is well beyond the scope of LAME and should not be added. */ +static int filename_to_type ( const char* FileName ) +{ + int len = strlen (FileName); + + if ( len < 4 ) return sf_unknown; + + FileName += len-4; + if ( 0 == local_strcasecmp ( FileName, ".mpg" ) ) return sf_mp1; + if ( 0 == local_strcasecmp ( FileName, ".mp1" ) ) return sf_mp1; + if ( 0 == local_strcasecmp ( FileName, ".mp2" ) ) return sf_mp2; + if ( 0 == local_strcasecmp ( FileName, ".mp3" ) ) return sf_mp3; + if ( 0 == local_strcasecmp ( FileName, ".wav" ) ) return sf_wave; + if ( 0 == local_strcasecmp ( FileName, ".aif" ) ) return sf_aiff; + if ( 0 == local_strcasecmp ( FileName, ".raw" ) ) return sf_raw; + return sf_unknown; +} + +static int resample_rate ( double freq ) +{ + if (freq >= 1.e3) freq *= 1.e-3; + + switch ( (int)freq ) { + case 8: return 8000; + case 11: return 11025; + case 12: return 12000; + case 16: return 16000; + case 22: return 22050; + case 24: return 24000; + case 32: return 32000; + case 44: return 44100; + case 48: return 48000; + default: fprintf(stderr,"Illegal resample frequency: %.3f kHz\n", freq ); + return 0; + } +} + +/* Ugly, NOT final version */ + +#define T_IF(str) if ( 0 == local_strcasecmp (token,str) ) { +#define T_ELIF(str) } else if ( 0 == local_strcasecmp (token,str) ) { +#define T_ELIF_INTERNAL(str) } else if (INTERNAL_OPTS && (0 == local_strcasecmp (token,str)) ) { +#define T_ELIF2(str1,str2) } else if ( 0 == local_strcasecmp (token,str1) || 0 == local_strcasecmp (token,str2) ) { +#define T_ELSE } else { +#define T_END } + +int parse_args ( lame_global_flags* gfp, int argc, char** argv, +char* const inPath, char* const outPath, char **nogap_inPath, int *num_nogap) +{ + int err; + int input_file=0; /* set to 1 if we parse an input file name */ + int i; + int autoconvert = 0; + double val; + int nogap=0; + int nogap_tags=0; /* set to 1 to use VBR tags in NOGAP mode */ + const char* ProgramName = argv[0]; + int count_nogap=0; + int noreplaygain=0; /* is RG explicitly disabled by the user */ + + inPath [0] = '\0'; + outPath[0] = '\0'; + /* turn on display options. user settings may turn them off below */ + silent = 0; + ignore_tag_errors = 0; + brhist = 1; + enc_padding=-1; + enc_delay=-1; + mp3_delay = 0; + mp3_delay_set=0; + print_clipping_info = 0; + disable_wav_header=0; + id3tag_init (gfp); + + /* process args */ + for ( i = 0, err = 0; ++i < argc && !err; ) { + char c; + char* token; + char* arg; + char* nextArg; + int argUsed; + + token = argv[i]; + if ( *token++ == '-' ) { + argUsed = 0; + nextArg = i+1 < argc ? argv[i+1] : ""; + + if (! *token) { /* The user wants to use stdin and/or stdout. */ + input_file = 1; + if (inPath [0] == '\0') + strncpy (inPath, argv[i], PATH_MAX + 1); + else + if (outPath[0] == '\0') + strncpy (outPath, argv[i], PATH_MAX + 1); + } + if (*token == '-') { /* GNU style */ + token++; + + T_IF ("resample") + argUsed = 1; + (void) lame_set_out_samplerate( gfp, + resample_rate ( atof (nextArg) ) ); + + T_ELIF ("vbr-old") + lame_set_VBR(gfp,vbr_rh); + + T_ELIF ("vbr-new") + lame_set_VBR(gfp,vbr_mtrh); + + T_ELIF ("vbr-mtrh") + lame_set_VBR(gfp,vbr_mtrh); + + T_ELIF ("cbr") + lame_set_VBR(gfp,vbr_off); + + T_ELIF ("abr") + argUsed=1; + lame_set_VBR(gfp,vbr_abr); + lame_set_VBR_mean_bitrate_kbps(gfp,atoi(nextArg)); + /* values larger than 8000 are bps (like Fraunhofer), so it's strange to get 320000 bps MP3 when specifying 8000 bps MP3 */ + if ( lame_get_VBR_mean_bitrate_kbps(gfp) >= 8000 ) + lame_set_VBR_mean_bitrate_kbps(gfp,( lame_get_VBR_mean_bitrate_kbps(gfp) + 500 ) / 1000); + + lame_set_VBR_mean_bitrate_kbps(gfp,Min(lame_get_VBR_mean_bitrate_kbps(gfp), 320)); + lame_set_VBR_mean_bitrate_kbps(gfp,Max(lame_get_VBR_mean_bitrate_kbps(gfp),8)); + + T_ELIF ("r3mix") + lame_set_preset(gfp, R3MIX); + + T_ELIF ("bitwidth") + argUsed=1; + in_bitwidth=atoi(nextArg); + + T_ELIF ("signed") + in_signed=1; + + T_ELIF ("unsigned") + in_signed=0; + + T_ELIF ("little-endian") + in_endian=order_littleEndian; + + T_ELIF ("big-endian") + in_endian=order_bigEndian; + + T_ELIF ("mp1input") + input_format=sf_mp1; + + T_ELIF ("mp2input") + input_format=sf_mp2; + + T_ELIF ("mp3input") + input_format=sf_mp3; + + T_ELIF ("ogginput") + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + return -1; + + T_ELIF ("phone") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --phone is deprecated, use --preset phone instead!"); + + T_ELIF ("voice") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --voice is deprecated, use --preset voice instead!"); + + T_ELIF ("radio") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --radio is deprecated, use --preset radio instead!"); + + T_ELIF ("tape") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --tape is deprecated, use --preset tape instead!"); + + T_ELIF ("cd") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --cd is deprecated, use --preset cd instead!"); + + T_ELIF ("studio") + if (presets_set( gfp, 0, 0, token, ProgramName ) < 0) + return -1; + fprintf(stderr, "Warning: --studio is deprecated, use --preset studio instead!"); + + T_ELIF ("noshort") + (void) lame_set_no_short_blocks( gfp, 1 ); + + T_ELIF ("short") + (void) lame_set_no_short_blocks( gfp, 0 ); + + T_ELIF ("allshort") + (void) lame_set_force_short_blocks( gfp, 1 ); + + + T_ELIF ("decode") + (void) lame_set_decode_only( gfp, 1 ); + + T_ELIF ("decode-mp3delay") + mp3_delay = atoi( nextArg ); + mp3_delay_set=1; + argUsed=1; + + T_ELIF ("nores") + lame_set_disable_reservoir(gfp,1); + + T_ELIF ("strictly-enforce-ISO") + lame_set_strict_ISO(gfp,1); + + T_ELIF ("scale") + argUsed=1; + (void) lame_set_scale( gfp, atof(nextArg) ); + + T_ELIF ("scale-l") + argUsed=1; + (void) lame_set_scale_left( gfp, atof(nextArg) ); + + T_ELIF ("scale-r") + argUsed=1; + (void) lame_set_scale_right( gfp, atof(nextArg) ); + + T_ELIF ("noasm") + argUsed=1; + if (!strcmp(nextArg, "mmx")) + (void) lame_set_asm_optimizations( gfp, MMX, 0 ); + if (!strcmp(nextArg, "3dnow")) + (void) lame_set_asm_optimizations( gfp, AMD_3DNOW, 0 ); + if (!strcmp(nextArg, "sse")) + (void) lame_set_asm_optimizations( gfp, SSE, 0 ); + + T_ELIF ("freeformat") + lame_set_free_format(gfp,1); + + T_ELIF ("replaygain-fast") + lame_set_findReplayGain(gfp,1); + +#ifdef DECODE_ON_THE_FLY + T_ELIF ("replaygain-accurate") + lame_set_decode_on_the_fly(gfp,1); + lame_set_findReplayGain(gfp,1); +#endif + + T_ELIF ("noreplaygain") + noreplaygain = 1; + lame_set_findReplayGain(gfp,0); + + +#ifdef DECODE_ON_THE_FLY + T_ELIF ("clipdetect") + print_clipping_info = 1; + lame_set_decode_on_the_fly(gfp,1); +#endif + + T_ELIF ("nohist") + brhist = 0; + +#if defined(__OS2__) || defined(WIN32) + T_ELIF ("priority") + char *endptr; + int priority = (int)strtol(nextArg, &endptr, 10); + if (endptr != nextArg) { + argUsed=1; + } +# if defined(__OS2__) + setOS2Priority(gfp, priority); +# else /* WIN32 */ + setWin32Priority(gfp, priority); +# endif +#endif + + /* options for ID3 tag */ + T_ELIF ("tt") + argUsed=1; + id3tag_set_title(gfp, nextArg); + + T_ELIF ("ta") + argUsed=1; + id3tag_set_artist(gfp, nextArg); + + T_ELIF ("tl") + argUsed=1; + id3tag_set_album(gfp, nextArg); + + T_ELIF ("ty") + argUsed=1; + id3tag_set_year(gfp, nextArg); + + T_ELIF ("tc") + argUsed=1; + id3tag_set_comment(gfp, nextArg); + + T_ELIF ("tn") + argUsed=1; + if( 0 == ignore_tag_errors ) { + if (nextArg && *nextArg) { + int num = atoi(nextArg); + + if ( num < 0 || num > 255 ) { + if( silent < 10 ) { + fprintf(stderr, "The track number has to be between 0 and 255.\n"); + } + return -1; + } + } + } + id3tag_set_track(gfp, nextArg); + + T_ELIF ("tg") + argUsed=1; + if ( id3tag_set_genre(gfp, nextArg) ) { + if ( ignore_tag_errors ) { + if( silent < 10 ) { + fprintf(stderr, "Unknown genre: '%s'. Setting to 'Other'\n", nextArg); + } + id3tag_set_genre(gfp, "other"); + } else { + fprintf(stderr, "Unknown genre: '%s'. Specify genre name or number\n", nextArg); + return -1; + } + } + + T_ELIF ("add-id3v2") + id3tag_add_v2(gfp); + + T_ELIF ("id3v1-only") + id3tag_v1_only(gfp); + + T_ELIF ("id3v2-only") + id3tag_v2_only(gfp); + + T_ELIF ("space-id3v1") + id3tag_space_v1(gfp); + + T_ELIF ("pad-id3v2") + id3tag_pad_v2(gfp); + + T_ELIF ("genre-list") + id3tag_genre_list(genre_list_handler, NULL); + return -2; + + T_ELIF ("lowpass") + val = atof( nextArg ); + argUsed = 1; + /* useful are 0.001 kHz...50 kHz, 50 Hz...50000 Hz */ + if ( val < 0.001 || val > 50000. ) { + fprintf(stderr,"Must specify lowpass with --lowpass freq, freq >= 0.001 kHz\n"); + return -1; + } + lame_set_lowpassfreq(gfp,(int)(val * (val < 50. ? 1.e3 : 1.e0 ) + 0.5)); + + T_ELIF ("lowpass-width") + argUsed=1; + val = 1000.0 * atof( nextArg ) + 0.5; + if (val < 0) { + fprintf(stderr,"Must specify lowpass width with --lowpass-width freq, freq >= 0 kHz\n"); + return -1; + } + lame_set_lowpasswidth(gfp,(int)val); + + T_ELIF ("highpass") + val = atof( nextArg ); + argUsed=1; + /* useful are 0.001 kHz...16 kHz, 16 Hz...50000 Hz */ + if ( val < 0.001 || val > 50000. ) { + fprintf(stderr,"Must specify highpass with --highpass freq, freq >= 0.001 kHz\n"); + return -1; + } + lame_set_highpassfreq(gfp, (int)(val * (val < 16. ? 1.e3 : 1.e0 ) + 0.5)); + + T_ELIF ("highpass-width") + argUsed=1; + val = 1000.0 * atof( nextArg ) + 0.5; + if (val < 0) { + fprintf(stderr,"Must specify highpass width with --highpass-width freq, freq >= 0 kHz\n"); + return -1; + } + lame_set_highpasswidth(gfp,(int)val); + + T_ELIF ("comp") + argUsed=1; + val = atof( nextArg ); + if (val < 1.0 ) { + fprintf(stderr,"Must specify compression ratio >= 1.0\n"); + return -1; + } + lame_set_compression_ratio(gfp,val); + + T_ELIF ("notemp") + (void) lame_set_useTemporal( gfp, 0 ); + + T_ELIF ("interch") + argUsed=1; + (void) lame_set_interChRatio( gfp, atof(nextArg ) ); + + T_ELIF ("temporal-masking") + argUsed = 1; + (void) lame_set_useTemporal( gfp, atoi(nextArg)?1:0 ); + + T_ELIF ("nspsytune") + lame_set_psy_model(gfp, PSY_NSPSYTUNE); + + T_ELIF ("nssafejoint") + lame_set_exp_nspsytune(gfp,lame_get_exp_nspsytune(gfp) | 2); + + T_ELIF ("nsmsfix") + argUsed=1; + (void) lame_set_msfix( gfp, atof(nextArg) ); + + T_ELIF ("ns-bass") + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 2)); + } + + T_ELIF ("ns-alto") + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 8)); + } + + T_ELIF ("ns-treble") + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 14)); + } + + T_ELIF ("ns-sfb21") + /* to be compatible with Naoki's original code, + * ns-sfb21 specifies how to change ns-treble for sfb21 */ + argUsed=1; + { + double d; + int k; + d = atof( nextArg ); + k = (int)(d * 4); + if (k < -32) k = -32; + if (k > 31) k = 31; + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 20)); + } + + T_ELIF ("nspsytune2") + { + FILE *fp = fopen( nextArg, "r" ); + if (fp == NULL) { + fprintf(stderr,"nspsytune2 : error opening %s\n",nextArg); + abort(); + } + lame_set_exp_nspsytune2_pointer(gfp,0,fp); + } + /* nspsytune2 implies nspsytune */ + argUsed=1; + lame_set_psy_model(gfp, PSY_NSPSYTUNE); + lame_set_experimentalZ(gfp,1); + lame_set_experimentalX(gfp,1); + + /* some more GNU-ish options could be added + * brief => few messages on screen (name, status report) + * o/output file => specifies output filename + * O => stdout + * i/input file => specifies input filename + * I => stdin + */ + T_ELIF2 ("quiet", "silent") + silent = 10; /* on a scale from 1 to 10 be very silent */ + + T_ELIF ("brief") + silent = -5; /* print few info on screen */ + + T_ELIF ("verbose") + silent = -10; /* print a lot on screen */ + T_ELIF ("ignore-tag-errors") + ignore_tag_errors = 1; + + T_ELIF2 ("version", "license") + print_license ( stdout ); + return -2; + + T_ELIF2 ("help", "usage") + short_help ( gfp, stdout, ProgramName ); + return -2; + + T_ELIF ("longhelp") + long_help ( gfp, stdout, ProgramName, 0 /* lessmode=NO */ ); + return -2; + + T_ELIF ("?") +#ifdef __unix__ + FILE* fp = popen ("less -Mqc", "w"); + long_help ( gfp, fp, ProgramName, 0 /* lessmode=NO */ ); + pclose (fp); +#else + long_help ( gfp, stdout, ProgramName, 1 /* lessmode=YES */ ); +#endif + return -2; + + T_ELIF2 ("preset", "alt-preset") + argUsed = 1; + { + int fast = 0, cbr = 0; + + while ((strcmp(nextArg, "fast") == 0) || + (strcmp(nextArg, "cbr") == 0)) { + + if ((strcmp(nextArg, "fast") == 0) && (fast < 1)) + fast = 1; + if ((strcmp(nextArg, "cbr") == 0) && (cbr < 1)) + cbr = 1; + + argUsed++; + nextArg = i+argUsed < argc ? argv[i+argUsed] : ""; + } + + if (presets_set ( gfp, fast, cbr, nextArg, ProgramName ) < 0) + return -1; + } + + T_ELIF ("disptime") + argUsed = 1; + update_interval = atof (nextArg); + + T_ELIF ("nogaptags") + nogap_tags=1; + + T_ELIF ("nogapout") + strcpy(outPath, nextArg); + argUsed = 1; + + T_ELIF ("nogap") + nogap=1; + + + T_ELIF_INTERNAL ("tune") /*without helptext*/ + argUsed=1; + {extern void lame_set_tune(lame_t, float); + lame_set_tune(gfp,atof(nextArg));} + + T_ELIF_INTERNAL ("psymodel") /*without helptext*/ /* 1 gpsycho, 2 nspsytune */ + argUsed=1; + lame_set_psy_model(gfp,atoi(nextArg)); + + T_ELIF_INTERNAL ("ms-sparsing") /*without helptext*/ + argUsed=1; + lame_set_ms_sparsing(gfp,atoi(nextArg)); + + T_ELIF_INTERNAL ("ms-sparse-low") /*without helptext*/ + argUsed=1; + lame_set_ms_sparse_low(gfp,atof(nextArg)); + + T_ELIF_INTERNAL ("ms-sparse-high") /*without helptext*/ + argUsed=1; + lame_set_ms_sparse_high(gfp,atof(nextArg)); + + T_ELIF_INTERNAL ("shortthreshold") + { + float x,y; + int n = sscanf(nextArg, "%f,%f", &x, &y); + if (n == 1) { + y = x; + } + argUsed=1; + (void) lame_set_short_threshold( gfp, x, y); + } + + T_ELIF_INTERNAL ("maskingadjust") /*without helptext*/ + argUsed=1; + (void) lame_set_maskingadjust( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("maskingadjustshort") /*without helptext*/ + argUsed=1; + (void) lame_set_maskingadjust_short( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("athcurve") /*without helptext*/ + argUsed=1; + (void) lame_set_ATHcurve( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("no-preset-tune") /*without helptext*/ + (void) lame_set_preset_notune( gfp, 0 ); + + T_ELIF_INTERNAL ("substep") + argUsed=1; + (void) lame_set_substep( gfp, atoi(nextArg) ); + + T_ELIF_INTERNAL ("sbgain") /*without helptext*/ + argUsed=1; + (void) lame_set_subblock_gain( gfp, atoi(nextArg) ); + + T_ELIF_INTERNAL ("sfscale") /*without helptext*/ + (void) lame_set_sfscale( gfp, 1 ); + + T_ELIF_INTERNAL ("noath") + (void) lame_set_noATH( gfp, 1 ); + + T_ELIF_INTERNAL ("athonly") + (void) lame_set_ATHonly( gfp, 1 ); + + T_ELIF_INTERNAL ("athshort") + (void) lame_set_ATHshort( gfp, 1 ); + + T_ELIF_INTERNAL ("athlower") + argUsed=1; + (void) lame_set_ATHlower( gfp, atof( nextArg ) ); + + T_ELIF_INTERNAL ("athtype") + argUsed=1; + (void) lame_set_ATHtype( gfp, atoi( nextArg ) ); + + T_ELIF_INTERNAL ("athaa-type") /* switch for developing, no DOCU */ + argUsed=1; /* once was 1:Gaby, 2:Robert, 3:Jon, else:off */ + lame_set_athaa_type( gfp, atoi(nextArg) );/* now: 0:off else:Jon */ + + T_ELIF ("athaa-sensitivity") + argUsed=1; + lame_set_athaa_sensitivity( gfp, atof(nextArg) ); + + T_ELIF_INTERNAL ("cwlimit") + val = atof (nextArg); + argUsed=1; + /* useful are 0.001 kHz...50 kHz, 50 Hz...50000 Hz */ + { + int my_cwlimit = (int)(val * ( val <= 50. ? 1.e3 : 1.e0 )); + lame_set_cwlimit( gfp, my_cwlimit ); + if ( my_cwlimit <= 0 ) { + fprintf( stderr, + "Must specify cwlimit with --cwlimit freq, freq >= 0.001 kHz\n" ); + return -1; + } + } + + + T_ELSE + fprintf(stderr,"%s: unrec option --%s\n", ProgramName, token); + + T_END + + i += argUsed; + + } else { + while ( (c = *token++) != '\0' ) { + arg = *token ? token : nextArg; + switch (c) { + case 'm': + argUsed = 1; + + switch ( *arg ) { + case 's': (void) lame_set_mode( gfp, STEREO ); + break; + case 'd': (void) lame_set_mode( gfp, DUAL_CHANNEL ); + break; + case 'f': lame_set_force_ms(gfp,1); + /* FALLTHROUGH */ + case 'j': (void) lame_set_mode( gfp, JOINT_STEREO ); + break; + case 'm': (void) lame_set_mode( gfp, MONO ); + break; + case 'a': (void) lame_set_mode( gfp, JOINT_STEREO ); + break; + default : fprintf(stderr,"%s: -m mode must be s/d/j/f/m not %s\n", ProgramName, arg); + err = 1; + break; + } + break; + + case 'V': argUsed = 1; + /* to change VBR default look in lame.h */ + if (lame_get_VBR(gfp) == vbr_off) lame_set_VBR(gfp,vbr_default); + lame_set_VBR_q(gfp,atoi(arg)); + if (lame_get_VBR_q(gfp) <0) lame_set_VBR_q(gfp,0); + if (lame_get_VBR_q(gfp) >9) lame_set_VBR_q(gfp,9); + break; + case 'v': + /* to change VBR default look in lame.h */ + if (lame_get_VBR(gfp) == vbr_off) + lame_set_VBR(gfp,vbr_default); + break; + + case 'q': argUsed = 1; + { + int tmp_quality = atoi( arg ); + + /* XXX should we move this into lame_set_quality()? */ + if( tmp_quality < 0 ) tmp_quality = 0; + if( tmp_quality > 9 ) tmp_quality = 9; + + (void) lame_set_quality( gfp, tmp_quality ); + } + break; + case 'f': + (void) lame_set_quality( gfp, 7 ); + break; + case 'h': + (void) lame_set_quality( gfp, 2 ); + break; + + case 's': + argUsed = 1; + val = atof( arg ); + (void) lame_set_in_samplerate( gfp, + (int)(val * ( val <= 192 ? 1.e3 : 1.e0 ) + 0.5) ); + break; + case 'b': + argUsed = 1; + lame_set_brate(gfp,atoi(arg)); + lame_set_VBR_min_bitrate_kbps(gfp,lame_get_brate(gfp)); + break; + case 'B': + argUsed = 1; + lame_set_VBR_max_bitrate_kbps(gfp,atoi(arg)); + break; + case 'F': + lame_set_VBR_hard_min(gfp,1); + break; + case 't': /* dont write VBR tag */ + (void) lame_set_bWriteVbrTag( gfp, 0 ); + disable_wav_header=1; + break; + case 'T': /* do write VBR tag */ + (void) lame_set_bWriteVbrTag( gfp, 1 ); + nogap_tags=1; + disable_wav_header=0; + break; + case 'r': /* force raw pcm input file */ +#if defined(LIBSNDFILE) + fprintf(stderr,"WARNING: libsndfile may ignore -r and perform fseek's on the input.\n" + "Compile without libsndfile if this is a problem.\n"); +#endif + input_format=sf_raw; + break; + case 'x': /* force byte swapping */ + swapbytes=1; + break; + case 'p': /* (jo) error_protection: add crc16 information to stream */ + lame_set_error_protection(gfp,1); + break; + case 'a': /* autoconvert input file from stereo to mono - for mono mp3 encoding */ + autoconvert=1; + (void) lame_set_mode( gfp, MONO ); + break; + case 'k': + lame_set_lowpassfreq(gfp,-1); + lame_set_highpassfreq(gfp,-1); + break; + case 'd': + fprintf(stderr,"WARNING: -d is obsolete.\n"); + /*(void) lame_set_allow_diff_short( gfp, 1 );*/ + break; + case 'S': + silent = 10; + break; + case 'X': + { + int x, y; + int n = sscanf(arg, "%d,%d", &x, &y); + if (n == 1) { + y = x; + } + argUsed = 1; + lame_set_quant_comp(gfp, x); + lame_set_quant_comp_short(gfp, y); + } + break; + case 'Y': + lame_set_experimentalY(gfp,1); + break; + case 'Z': + { + int n = 1; + argUsed = sscanf(arg, "%d", &n); + lame_set_experimentalZ(gfp, n); + break; + } + case 'e': + argUsed = 1; + + switch (*arg) { + case 'n': lame_set_emphasis( gfp, 0 ); break; + case '5': lame_set_emphasis( gfp, 1 ); break; + case 'c': lame_set_emphasis( gfp, 3 ); break; + default : fprintf(stderr,"%s: -e emp must be n/5/c not %s\n", ProgramName, arg ); + err = 1; + break; + } + break; + case 'c': + lame_set_copyright(gfp,1); + break; + case 'o': + lame_set_original(gfp,0); + break; + + case '?': + long_help ( gfp, stderr, ProgramName, 0 /* LESSMODE=NO */); + return -1; + + default: + fprintf(stderr,"%s: unrec option %c\n", ProgramName, c); + err = 1; + break; + } + if (argUsed) { + if(arg == token) token = ""; /* no more from token */ + else ++i; /* skip arg we used */ + arg = ""; argUsed = 0; + } + } + } + } else { + if (nogap) { + if ((num_nogap != NULL) && (count_nogap < *num_nogap)) { + strncpy(nogap_inPath[count_nogap++], argv[i], PATH_MAX + 1); + input_file=1; + } else { + /* sorry, calling program did not allocate enough space */ + fprintf(stderr,"Error: 'nogap option'. Calling program does not allow nogap option, or\nyou have exceeded maximum number of input files for the nogap option\n"); + *num_nogap=-1; + return -1; + } + }else{ + /* normal options: inputfile [outputfile], and + either one can be a '-' for stdin/stdout */ + if (inPath [0] == '\0') { + strncpy(inPath , argv[i], PATH_MAX + 1); + input_file=1; + } else { + if (outPath[0] == '\0') + strncpy(outPath, argv[i], PATH_MAX + 1); + else { + fprintf(stderr,"%s: excess arg %s\n", ProgramName, argv[i]); + err = 1; + } + } + } + } + } /* loop over args */ + + if ( err || !input_file ) { + usage ( stderr, ProgramName ); + return -1; + } + + if ( inPath[0] == '-' ) + silent = (silent <= 1 ? 1 : silent); +#ifdef WIN32 + else + dosToLongFileName( inPath ); +#endif + + if ( outPath[0] == '\0' && count_nogap == 0) { + if ( inPath[0] == '-' ) { + /* if input is stdin, default output is stdout */ + strcpy(outPath,"-"); + } else { + strncpy(outPath, inPath, PATH_MAX + 1 - 4); + if ( lame_get_decode_only( gfp ) ) { + strncat (outPath, ".wav", 4 ); + } else { + strncat (outPath, ".mp3", 4 ); + } + } + } + + /* RG is enabled by default */ + if (!noreplaygain) + lame_set_findReplayGain(gfp,1); + + /* disable VBR tags with nogap unless the VBR tags are forced */ + if (nogap && lame_get_bWriteVbrTag(gfp) && nogap_tags==0) { + fprintf(stderr,"Note: Disabling VBR Xing/Info tag since it interferes with --nogap\n"); + lame_set_bWriteVbrTag( gfp, 0 ); + } + + /* some file options not allowed with stdout */ + if (outPath[0]=='-') { + (void) lame_set_bWriteVbrTag( gfp, 0 ); /* turn off VBR tag */ + } + + /* if user did not explicitly specify input is mp3, check file name */ + if (input_format == sf_unknown) + input_format = filename_to_type ( inPath ); + +#if !(defined HAVE_MPGLIB || defined AMIGA_MPEGA) + if ( input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) { + fprintf(stderr,"Error: libmp3lame not compiled with mpg123 *decoding* support \n"); + return -1; + } +#endif + + + if (( input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) && + print_clipping_info ){ + + fprintf(stderr, "\nError: input cannot be MPEG when --clipdetect is used\n" + "\n--clipdetect requires decoding of MPEG *output* on the fly which\n" + "cannot be performed simultaneously with decoding MPEG *input*.\n" + "\nUse a plain .wav file as input with --clipdetect.\n"); + + return -1; + } + + + if (( input_format == sf_mp1 || + input_format == sf_mp2 || + input_format == sf_mp3) && + lame_get_decode_on_the_fly( gfp ) ){ + + fprintf(stderr, "\nError: input cannot be MPEG when --replaygain-accurate is used\n" + "\n--replaygain-accurate requires decoding of MPEG *output* on the fly which\n" + "cannot be performed simultaneously with decoding MPEG *input*.\n" + "\nUse a plain .wav file as input with --replaygain-accurate.\n"); + + return -1; + } + + + if ( input_format == sf_ogg ) { + fprintf(stderr, "sorry, vorbis support in LAME is deprecated.\n"); + return -1; + } + /* default guess for number of channels */ + if (autoconvert) + (void) lame_set_num_channels( gfp, 2 ); + else if( MONO == lame_get_mode( gfp ) ) + (void) lame_set_num_channels( gfp, 1 ); + else + (void) lame_set_num_channels( gfp, 2 ); + + if ( lame_get_free_format(gfp) ) { + if ( lame_get_brate(gfp) < 8 || lame_get_brate(gfp) > 640 ) { + fprintf(stderr,"For free format, specify a bitrate between 8 and 640 kbps\n"); + fprintf(stderr,"with the -b <bitrate> option\n"); + return -1; + } + } + if (num_nogap!=NULL) *num_nogap=count_nogap; + return 0; +} + +/* end of parse.c */ + + diff --git a/lame-3.97/frontend/parse.h b/lame-3.97/frontend/parse.h new file mode 100644 index 0000000..1622843 --- /dev/null +++ b/lame-3.97/frontend/parse.h @@ -0,0 +1,10 @@ + +int usage ( FILE* const fp, const char* ProgramName ); +int short_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName ); +int long_help ( const lame_global_flags* gfp, FILE* const fp, const char* ProgramName, int lessmode ); +int display_bitrates ( FILE* const fp ); + +int parse_args(lame_global_flags* gfp, int argc, char** argv, char * const inPath, char * const outPath, char * nogap_inPath[], int *max_nogap); + +/* end of parse.h */ + diff --git a/lame-3.97/frontend/portableio.c b/lame-3.97/frontend/portableio.c new file mode 100644 index 0000000..d24e54f --- /dev/null +++ b/lame-3.97/frontend/portableio.c @@ -0,0 +1,477 @@ +/* Copyright (C) 1988-1991 Apple Computer, Inc. + * All Rights Reserved. + * + * Warranty Information + * Even though Apple has reviewed this software, Apple makes no warranty + * or representation, either express or implied, with respect to this + * software, its quality, accuracy, merchantability, or fitness for a + * particular purpose. As a result, this software is provided "as is," + * and you, its user, are assuming the entire risk as to its quality + * and accuracy. + * + * This code may be used and freely distributed as long as it includes + * this copyright notice and the warranty information. + * + * + * Motorola processors (Macintosh, Sun, Sparc, MIPS, etc) + * pack bytes from high to low (they are big-endian). + * Use the HighLow routines to match the native format + * of these machines. + * + * Intel-like machines (PCs, Sequent) + * pack bytes from low to high (the are little-endian). + * Use the LowHigh routines to match the native format + * of these machines. + * + * These routines have been tested on the following machines: + * Apple Macintosh, MPW 3.1 C compiler + * Apple Macintosh, THINK C compiler + * Silicon Graphics IRIS, MIPS compiler + * Cray X/MP and Y/MP + * Digital Equipment VAX + * + * + * Implemented by Malcolm Slaney and Ken Turkowski. + * + * Malcolm Slaney contributions during 1988-1990 include big- and little- + * endian file I/O, conversion to and from Motorola's extended 80-bit + * floating-point format, and conversions to and from IEEE single- + * precision floating-point format. + * + * In 1991, Ken Turkowski implemented the conversions to and from + * IEEE double-precision format, added more precision to the extended + * conversions, and accommodated conversions involving +/- infinity, + * NaN's, and denormalized numbers. + * + * $Id: portableio.c,v 1.11 2001/01/07 23:47:38 markt Exp $ + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <stdio.h> +#if defined(__riscos__) && defined(FPA10) +#include "ymath.h" +#else +#include <math.h> +#endif +#include "portableio.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/**************************************************************** + * Big/little-endian independent I/O routines. + ****************************************************************/ + +/* + * It is a hoax to call this code portable-IO: + * + * - It doesn't work on machines with CHAR_BIT != 8 + * - it also don't test this error condition + * - otherwise it tries to handle CHAR_BIT != 8 by things like + * masking 'putc(i&0xff,fp)' + * - It doesn't handle EOF in any way + * - it only works with ints with 32 or more bits + * - It is a collection of initial buggy code with patching the known errors + * instead of CORRECTING them! + * For that see comments on the old Read16BitsHighLow() + */ + +#ifdef KLEMM_36 + +signed int ReadByte ( FILE* fp ) +{ + int result = getc (fp); + return result == EOF ? 0 : (signed char) (result & 0xFF); +} + +unsigned int ReadByteUnsigned ( FILE* fp ) +{ + int result = getc (fp); + return result == EOF ? 0 : (unsigned char) (result & 0xFF); +} + +#else + +int +ReadByte(FILE *fp) +{ + int result; + + result = getc(fp) & 0xff; + if (result & 0x80) + result = result - 0x100; + return result; +} + +#endif + +#ifdef KLEMM_36 + +int Read16BitsLowHigh ( FILE* fp ) +{ + int low = ReadByteUnsigned (fp); + int high = ReadByte (fp); + + return (high << 8) | low; +} + +#else +int +Read16BitsLowHigh(FILE *fp) +{ + int first, second, result; + + first = 0xff & getc(fp); + second = 0xff & getc(fp); + + result = (second << 8) + first; +#ifndef THINK_C42 + if (result & 0x8000) + result = result - 0x10000; +#endif /* THINK_C */ + return(result); +} +#endif + + +#ifdef KLEMM_36 + +int Read16BitsHighLow ( FILE* fp ) +{ + int high = ReadByte (fp); + int low = ReadByteUnsigned (fp); + + return (high << 8) | low; +} + +#else +int +Read16BitsHighLow(FILE *fp) +{ + int first, second, result; + + /* Reads the High bits, the value is -128...127 + * (which gave after upscaling the -32768...+32512 + * Why this value is not converted to signed char? + */ + first = 0xff & getc(fp); + /* Reads the Lows bits, the value is 0...255 + * This is correct. This value gives an additional offset + * for the High bits + */ + second = 0xff & getc(fp); + + /* This is right */ + result = (first << 8) + second; + + /* Now we are starting to correct the nasty bug of the first instruction + * The value of the high bits is wrong. Always. So we must correct this + * value. This seems to be not necessary for THINK_C42. This is either + * a 16 bit compiler with 16 bit ints (where this bug is hidden and 0x10000 + * is not in the scope of an int) or it is not a C compiler, but only a + * C like compiler. In the first case the '#ifndef THINK_C42' is wrong + * because it's not a property of the THINK_C42 compiler, but of all compilers + * with sizeof(int)*CHAR_BIT < 18. + * Another nasty thing is that the rest of the code doesn't work for 16 bit ints, + * so this patch don't solve the 16 bit problem. + */ +#ifndef THINK_C42 + if (result & 0x8000) + result = result - 0x10000; +#endif /* THINK_C */ + return(result); +} +#endif + +void +Write8Bits(FILE *fp, int i) +{ + putc(i&0xff,fp); +} + + +void +Write16BitsLowHigh(FILE *fp, int i) +{ + putc(i&0xff,fp); + putc((i>>8)&0xff,fp); +} + + +void +Write16BitsHighLow(FILE *fp, int i) +{ + putc((i>>8)&0xff,fp); + putc(i&0xff,fp); +} + +#ifdef KLEMM_36 + +int Read24BitsHighLow ( FILE* fp ) +{ + int high = ReadByte (fp); + int med = ReadByteUnsigned (fp); + int low = ReadByteUnsigned (fp); + + return (high << 16) | (med << 8) | low; +} + +#else +int +Read24BitsHighLow(FILE *fp) +{ + int first, second, third; + int result; + + first = 0xff & getc(fp); + second = 0xff & getc(fp); + third = 0xff & getc(fp); + + result = (first << 16) + (second << 8) + third; + if (result & 0x800000) + result = result - 0x1000000; + return(result); +} +#endif + +#define Read32BitsLowHigh(f) Read32Bits(f) + +#ifdef KLEMM_36 + +int Read32Bits ( FILE* fp ) +{ + int low = ReadByteUnsigned (fp); + int medl = ReadByteUnsigned (fp); + int medh = ReadByteUnsigned (fp); + int high = ReadByte (fp); + + return (high << 24) | (medh << 16) | (medl << 8) | low; +} + +#else + +int +Read32Bits(FILE *fp) +{ + int first, second, result; + + first = 0xffff & Read16BitsLowHigh(fp); + second = 0xffff & Read16BitsLowHigh(fp); + + result = (second << 16) + first; +#ifdef CRAY + if (result & 0x80000000) + result = result - 0x100000000; +#endif /* CRAY */ + return(result); +} +#endif + + +#ifdef KLEMM_36 + +int Read32BitsHighLow ( FILE* fp ) +{ + int high = ReadByte (fp); + int medh = ReadByteUnsigned (fp); + int medl = ReadByteUnsigned (fp); + int low = ReadByteUnsigned (fp); + + return (high << 24) | (medh << 16) | (medl << 8) | low; +} + +#else + +int +Read32BitsHighLow(FILE *fp) +{ + int first, second, result; + + first = 0xffff & Read16BitsHighLow(fp); + second = 0xffff & Read16BitsHighLow(fp); + + result = (first << 16) + second; +#ifdef CRAY + if (result & 0x80000000) + result = result - 0x100000000; +#endif + return(result); +} + +#endif + +void +Write32Bits(FILE *fp, int i) +{ + Write16BitsLowHigh(fp,(int)(i&0xffffL)); + Write16BitsLowHigh(fp,(int)((i>>16)&0xffffL)); +} + + +void +Write32BitsLowHigh(FILE *fp, int i) +{ + Write16BitsLowHigh(fp,(int)(i&0xffffL)); + Write16BitsLowHigh(fp,(int)((i>>16)&0xffffL)); +} + + +void +Write32BitsHighLow(FILE *fp, int i) +{ + Write16BitsHighLow(fp,(int)((i>>16)&0xffffL)); + Write16BitsHighLow(fp,(int)(i&0xffffL)); +} + +#ifdef KLEMM_36 +void ReadBytes (FILE *fp, char *p, int n) +{ + memset ( p, 0, n ); + fread ( p, 1, n, fp ); +} +#else +void ReadBytes(FILE *fp, char *p, int n) +{ + /* What about fread? */ + + while (!feof(fp) & (n-- > 0)) + *p++ = getc(fp); +} +#endif + +void ReadBytesSwapped(FILE *fp, char *p, int n) +{ + register char *q = p; + + /* What about fread? */ + + while (!feof(fp) & (n-- > 0)) + *q++ = getc(fp); + + /* If not all bytes could be read, the resorting is different + * from the normal resorting. Is this intention or another bug? + */ + for (q--; p < q; p++, q--){ + n = *p; + *p = *q; + *q = n; + } +} + +#ifdef KLEMM_36 +void WriteBytes(FILE *fp, char *p, int n) +{ + /* return n == */ + fwrite ( p, 1, n, fp ); +} +#else +void WriteBytes(FILE *fp, char *p, int n) +{ + /* No error condition checking */ + while (n-- > 0) + putc(*p++, fp); +} +#endif +#ifdef KLEMM_36 +void WriteBytesSwapped(FILE *fp, char *p, int n) +{ + p += n; + while ( n-- > 0 ) + putc ( *--p, fp ); +} +#else +void WriteBytesSwapped(FILE *fp, char *p, int n) +{ + p += n-1; + while (n-- > 0) + putc(*p--, fp); +} +#endif + + + +/**************************************************************** + * The following two routines make up for deficiencies in many + * compilers to convert properly between unsigned integers and + * floating-point. Some compilers which have this bug are the + * THINK_C compiler for the Macintosh and the C compiler for the + * Silicon Graphics MIPS-based Iris. + ****************************************************************/ + +#ifdef applec /* The Apple C compiler works */ +# define FloatToUnsigned(f) ((unsigned long)(f)) +# define UnsignedToFloat(u) ((double)(u)) +#else /* applec */ +# define FloatToUnsigned(f) ((unsigned long)(((long)((f) - 2147483648.0)) + 2147483647L + 1)) +# define UnsignedToFloat(u) (((double)((long)((u) - 2147483647L - 1))) + 2147483648.0) +#endif /* applec */ +/**************************************************************** + * Extended precision IEEE floating-point conversion routines + ****************************************************************/ + +double +ConvertFromIeeeExtended(char* bytes) +{ + double f; + long expon; + unsigned long hiMant, loMant; + +#ifdef TEST +printf("ConvertFromIEEEExtended(%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx,%lx\r", + (long)bytes[0], (long)bytes[1], (long)bytes[2], (long)bytes[3], + (long)bytes[4], (long)bytes[5], (long)bytes[6], + (long)bytes[7], (long)bytes[8], (long)bytes[9]); +#endif + + expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF); + hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24) + | ((unsigned long)(bytes[3] & 0xFF) << 16) + | ((unsigned long)(bytes[4] & 0xFF) << 8) + | ((unsigned long)(bytes[5] & 0xFF)); + loMant = ((unsigned long)(bytes[6] & 0xFF) << 24) + | ((unsigned long)(bytes[7] & 0xFF) << 16) + | ((unsigned long)(bytes[8] & 0xFF) << 8) + | ((unsigned long)(bytes[9] & 0xFF)); + + /* This case should also be called if the number is below the smallest + * positive double variable */ + if (expon == 0 && hiMant == 0 && loMant == 0) { + f = 0; + } + else { + /* This case should also be called if the number is too large to fit into + * a double variable */ + + if (expon == 0x7FFF) { /* Infinity or NaN */ + f = HUGE_VAL; + } + else { + expon -= 16383; + f = ldexp(UnsignedToFloat(hiMant), (int) (expon -= 31)); + f += ldexp(UnsignedToFloat(loMant), (int) (expon -= 32)); + } + } + + if (bytes[0] & 0x80) + return -f; + else + return f; +} + + + + + +double +ReadIeeeExtendedHighLow(FILE *fp) +{ + char bytes [10]; + + ReadBytes ( fp, bytes, 10 ); + return ConvertFromIeeeExtended ( bytes ); +} + diff --git a/lame-3.97/frontend/portableio.h b/lame-3.97/frontend/portableio.h new file mode 100644 index 0000000..75afab3 --- /dev/null +++ b/lame-3.97/frontend/portableio.h @@ -0,0 +1,92 @@ +#ifndef LAME_PORTABLEIO_H +#define LAME_PORTABLEIO_H +/* Copyright (C) 1988-1991 Apple Computer, Inc. + * All Rights Reserved. + * + * Warranty Information + * Even though Apple has reviewed this software, Apple makes no warranty + * or representation, either express or implied, with respect to this + * software, its quality, accuracy, merchantability, or fitness for a + * particular purpose. As a result, this software is provided "as is," + * and you, its user, are assuming the entire risk as to its quality + * and accuracy. + * + * This code may be used and freely distributed as long as it includes + * this copyright notice and the warranty information. + * + * Machine-independent I/O routines for 8-, 16-, 24-, and 32-bit integers. + * + * Motorola processors (Macintosh, Sun, Sparc, MIPS, etc) + * pack bytes from high to low (they are big-endian). + * Use the HighLow routines to match the native format + * of these machines. + * + * Intel-like machines (PCs, Sequent) + * pack bytes from low to high (the are little-endian). + * Use the LowHigh routines to match the native format + * of these machines. + * + * These routines have been tested on the following machines: + * Apple Macintosh, MPW 3.1 C compiler + * Apple Macintosh, THINK C compiler + * Silicon Graphics IRIS, MIPS compiler + * Cray X/MP and Y/MP + * Digital Equipment VAX + * + * + * Implemented by Malcolm Slaney and Ken Turkowski. + * + * Malcolm Slaney contributions during 1988-1990 include big- and little- + * endian file I/O, conversion to and from Motorola's extended 80-bit + * floating-point format, and conversions to and from IEEE single- + * precision floating-point format. + * + * In 1991, Ken Turkowski implemented the conversions to and from + * IEEE double-precision format, added more precision to the extended + * conversions, and accommodated conversions involving +/- infinity, + * NaN's, and denormalized numbers. + * + * $Id: portableio.h,v 1.3 2002/12/08 17:02:17 takehiro Exp $ + */ + +#include <stdio.h> + +#ifndef __cplusplus +# define CLINK +#else +# define CLINK "C" +#endif + +extern CLINK int ReadByte(FILE *fp); +extern CLINK int Read16BitsLowHigh(FILE *fp); +extern CLINK int Read16BitsHighLow(FILE *fp); +extern CLINK void Write8Bits(FILE *fp, int i); +extern CLINK void Write16BitsLowHigh(FILE *fp, int i); +extern CLINK void Write16BitsHighLow(FILE *fp, int i); +extern CLINK int Read24BitsHighLow(FILE *fp); +extern CLINK int Read32Bits(FILE *fp); +extern CLINK int Read32BitsHighLow(FILE *fp); +extern CLINK void Write32Bits(FILE *fp, int i); +extern CLINK void Write32BitsLowHigh(FILE *fp, int i); +extern CLINK void Write32BitsHighLow(FILE *fp, int i); +extern CLINK void ReadBytes(FILE *fp, char *p, int n); +extern CLINK void ReadBytesSwapped(FILE *fp, char *p, int n); +extern CLINK void WriteBytes(FILE *fp, char *p, int n); +extern CLINK void WriteBytesSwapped(FILE *fp, char *p, int n); +extern CLINK double ReadIeeeFloatHighLow(FILE *fp); +extern CLINK double ReadIeeeFloatLowHigh(FILE *fp); +extern CLINK double ReadIeeeDoubleHighLow(FILE *fp); +extern CLINK double ReadIeeeDoubleLowHigh(FILE *fp); +extern CLINK double ReadIeeeExtendedHighLow(FILE *fp); +extern CLINK double ReadIeeeExtendedLowHigh(FILE *fp); +extern CLINK void WriteIeeeFloatLowHigh(FILE *fp, double num); +extern CLINK void WriteIeeeFloatHighLow(FILE *fp, double num); +extern CLINK void WriteIeeeDoubleLowHigh(FILE *fp, double num); +extern CLINK void WriteIeeeDoubleHighLow(FILE *fp, double num); +extern CLINK void WriteIeeeExtendedLowHigh(FILE *fp, double num); +extern CLINK void WriteIeeeExtendedHighLow(FILE *fp, double num); + +#define Read32BitsLowHigh(f) Read32Bits(f) +#define WriteString(f,s) fwrite(s,strlen(s),sizeof(char),f) +#endif + diff --git a/lame-3.97/frontend/rtp.c b/lame-3.97/frontend/rtp.c new file mode 100644 index 0000000..141f61d --- /dev/null +++ b/lame-3.97/frontend/rtp.c @@ -0,0 +1,415 @@ +/* $Id: rtp.c,v 1.12 2003/11/29 11:16:55 aleidinger Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifndef __GNUC__ +# if HAVE_ALLOCA_H +# include <alloca.h> +# else +# ifdef _AIX +#pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +#include <stdio.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +struct rtpbits { + int sequence:16; /* sequence number: random */ + int pt:7; /* payload type: 14 for MPEG audio */ + int m:1; /* marker: 0 */ + int cc:4; /* number of CSRC identifiers: 0 */ + int x:1; /* number of extension headers: 0 */ + int p:1; /* is there padding appended: 0 */ + int v:2; /* version: 2 */ +}; + +struct rtpheader { /* in network byte order */ + struct rtpbits b; + int timestamp; /* start: random */ + int ssrc; /* random */ + int iAudioHeader; /* =0?! */ +}; + +void +initrtp (struct rtpheader *foo) +{ + foo->b.v = 2; + foo->b.p = 0; + foo->b.x = 0; + foo->b.cc = 0; + foo->b.m = 0; + foo->b.pt = 14; /* MPEG Audio */ +#ifdef FEFE + foo->b.sequence = 42; + foo->timestamp = 0; +#else + foo->b.sequence = rand () & 65535; + foo->timestamp = rand (); +#endif + foo->ssrc = rand (); + foo->iAudioHeader = 0; +} + +int +sendrtp (int fd, struct sockaddr_in *sSockAddr, struct rtpheader *foo, + const void *data, int len) +{ + char *buf = alloca (len + sizeof (struct rtpheader)); + int *cast = (int *) foo; + int *outcast = (int *) buf; + outcast[0] = htonl (cast[0]); + outcast[1] = htonl (cast[1]); + outcast[2] = htonl (cast[2]); + outcast[3] = htonl (cast[3]); + memmove (buf + sizeof (struct rtpheader), data, len); + return sendto (fd, buf, len + sizeof (*foo), 0, + (struct sockaddr *) sSockAddr, sizeof (*sSockAddr)); +/* return write(fd,buf,len+sizeof(*foo))==len+sizeof(*foo); */ +} + +/* create a sender socket. */ +int +makesocket (char *szAddr, unsigned short port, unsigned char TTL, + struct sockaddr_in *sSockAddr) +{ + int iRet, iLoop = 1; + struct sockaddr_in sin; + unsigned char cTtl = TTL; + char cLoop = 0; + unsigned int tempaddr; + + int iSocket = socket (AF_INET, SOCK_DGRAM, 0); + if (iSocket < 0) { + fprintf (stderr, "socket() failed.\n"); + exit (1); + } + + tempaddr = inet_addr (szAddr); + sSockAddr->sin_family = sin.sin_family = AF_INET; + sSockAddr->sin_port = sin.sin_port = htons (port); + sSockAddr->sin_addr.s_addr = tempaddr; + + iRet = setsockopt (iSocket, SOL_SOCKET, SO_REUSEADDR, &iLoop, sizeof (int)); + if (iRet < 0) { + fprintf (stderr, "setsockopt SO_REUSEADDR failed\n"); + exit (1); + } + + if ((ntohl (tempaddr) >> 28) == 0xe) { + /* only set multicast parameters for multicast destination IPs */ + iRet = + setsockopt (iSocket, IPPROTO_IP, IP_MULTICAST_TTL, &cTtl, + sizeof (char)); + if (iRet < 0) { + fprintf (stderr, + "setsockopt IP_MULTICAST_TTL failed. multicast in kernel?\n"); + exit (1); + } + + cLoop = 1; /* !? */ + iRet = setsockopt (iSocket, IPPROTO_IP, IP_MULTICAST_LOOP, + &cLoop, sizeof (char)); + if (iRet < 0) { + fprintf (stderr, + "setsockopt IP_MULTICAST_LOOP failed. multicast in kernel?\n"); + exit (1); + } + } + + return iSocket; +} + + + + +#if 0 +/* */ +/* code contributed by Anonymous source. Supposed to be much better */ +/* then original code, but only seems to run on windows with MSVC. */ +/* and I cannot test it */ +/* */ +#include <stdlib.h> +#include <string.h> +#include <netinet/in.h> +#include <unistd.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <arpa/inet.h> + +struct rtpbits { + int sequence:16; /* sequence number: random */ + int pt:7; /* payload type: 14 for MPEG audio */ + int m:1; /* marker: 0 */ + int cc:4; /* number of CSRC identifiers: 0 */ + int x:1; /* number of extension headers: 0 */ + int p:1; /* is there padding appended: 0 */ + int v:2; /* version: 2 */ +}; + +struct rtpheader { /* in network byte order */ + struct rtpbits b; + int timestamp; /* start: random */ + int ssrc; /* random */ + int iAudioHeader; /* =0?! */ +}; + +void +rtp_initialization +( + struct rtpheader *foo +) +{ + foo->b.v=2; + foo->b.p=0; + foo->b.x=0; + foo->b.cc=0; + foo->b.m=0; + foo->b.pt=14; /* MPEG Audio */ +#ifdef FEFE + foo->b.sequence=42; + foo->timestamp=0; +#else + foo->b.sequence=rand() & 65535; + foo->timestamp=rand(); +#endif + foo->ssrc=rand(); + foo->iAudioHeader=0; +} + +int +rtp_send +( + SOCKET s, + struct rtpheader *foo, + void *data, + int len +) +{ + char *buffer=malloc(len+sizeof(struct rtpheader)); + int *cast=(int *)foo; + int *outcast=(int *)buffer; + int count, size ; + + outcast[0]=htonl(cast[0]); + outcast[1]=htonl(cast[1]); + outcast[2]=htonl(cast[2]); + outcast[3]=htonl(cast[3]); + memmove (buffer+sizeof(struct rtpheader),data,len); +/* return sendto (fd,buf,len+sizeof(*foo),0,(struct sockaddr *)sSockAddr,sizeof(*sSockAddr)); */ +/* return write(fd,buf,len+sizeof(*foo))==len+sizeof(*foo); */ + size = len + sizeof (*foo) ; + count = send (s, buffer, size, 0) ; + free (buffer) ; + + return count != size ; +} + +/* create a sender socket. */ +int +rtp_socket +( + SOCKET *ps, + char *address, + unsigned short port, + int TTL +) +{ +/* int iRet ; */ + int iLoop = 1 ; +/* struct sockaddr_in sin ; */ + char cTTL = (char)TTL ; + char cLoop=0 ; +/* unsigned int tempaddr ; */ + BOOL True = TRUE ; + INT error ; + char *c = "" ; + UINT ip ; + PHOSTENT host ; + SOCKET s ; + SOCKADDR_IN source, dest ; +#if 0 + int s = socket (AF_INET, SOCK_DGRAM, 0) ; + if (s < 0) + { + fprintf(stderr,"socket() failed.\n"); + exit(1); + } + + tempaddr=inet_addr(address); + sSockAddr->sin_family = sin.sin_family = AF_INET; + sSockAddr->sin_port = sin.sin_port = htons(port); + sSockAddr->sin_addr.s_addr = tempaddr; + + iRet = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &iLoop, +sizeof(int)); + if (iRet < 0) + { + fprintf(stderr,"setsockopt SO_REUSEADDR failed\n"); + exit(1); + } + + if ((ntohl(tempaddr) >> 28) == 0xe) + { + /* only set multicast parameters for multicast destination IPs */ + iRet = setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL, &cTTL, +sizeof(char)); + if (iRet < 0) { + fprintf(stderr,"setsockopt IP_MULTICAST_TTL failed. multicast in kernel?\n"); + exit(1); + } + + cLoop = 1; /* !? */ + iRet = setsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, + &cLoop, sizeof(char)); + if (iRet < 0) + { + fprintf(stderr,"setsockopt IP_MULTICAST_LOOP failed. multicast in kernel?\n"); + exit(1); + } + } +#endif + source.sin_family = AF_INET ; + source.sin_addr.s_addr = htonl (INADDR_ANY) ; + source.sin_port = htons (0) ; + + dest.sin_family = AF_INET; + dest.sin_addr.s_addr = inet_addr (address) ; + + if (!strcmp (address, "255.255.255.255")) + { + } + else if (dest.sin_addr.s_addr == INADDR_NONE) + { + host = gethostbyname (address) ; + + if (host) + { + dest.sin_addr = *(PIN_ADDR) host->h_addr ; + } + else + { + printf ("Unknown host %s\r\n", address) ; + return 1 ; + } + } + + dest.sin_port = htons ((u_short) port) ; + + ip = ntohl (dest.sin_addr.s_addr) ; + + if (IN_CLASSA(ip)) c = "class A" ; + if (IN_CLASSB(ip)) c = "class B" ; + if (IN_CLASSC(ip)) c = "class C" ; + if (IN_CLASSD(ip)) c = "class D" ; + if (ip == INADDR_LOOPBACK) c = "loopback" ; + if (ip == INADDR_BROADCAST) c = "broadcast" ; + + s = socket (AF_INET, SOCK_DGRAM, PF_UNSPEC) ; + + if (s == INVALID_SOCKET) + { + error = WSAGetLastError () ; + printf ("socket () error %d\r\n", error) ; + return error ; + } + + error = setsockopt (s, SOL_SOCKET, SO_REUSEADDR, (const char *) &True, +sizeof (BOOL)) ; + + error = bind (s, (struct sockaddr *) &source, sizeof (source)) ; + + if (error == SOCKET_ERROR) + { + error = WSAGetLastError () ; + printf ("bind () error %d\r\n", error) ; + closesocket (s) ; + return error ; + } + + if (ip == INADDR_BROADCAST) + { + printf ("broadcast %s:%u %s\r\n", inet_ntoa (dest.sin_addr), ntohs +(dest.sin_port), c) ; + + error = setsockopt (s, SOL_SOCKET, SO_BROADCAST, (const char *) +&True, sizeof (BOOL)) ; + + if (error == SOCKET_ERROR) + { + error = WSAGetLastError () ; + printf ("setsockopt (%u, SOL_SOCKET, SO_BROADCAST, ...) error %d\r\n", s, error) ; + closesocket (s) ; + return error ; + } + } + + if (IN_CLASSD(ip)) + { + printf ("multicast %s:%u %s\r\n", inet_ntoa (dest.sin_addr), ntohs (dest.sin_port), c) ; + +/* error = setsockopt (s, IPPROTO_IP, IP_MULTICAST_TTL, (const char *) &TTL, sizeof (int)) ; */ + error = setsockopt (s, IPPROTO_IP, 3, (const char *) &TTL, sizeof (int)) ; + + if (error == SOCKET_ERROR) + { + error = WSAGetLastError () ; + printf ("setsockopt (%u, IPPROTO_IP, IP_MULTICAST_TTL, ...) error %d\r\n", s, error) ; + closesocket (s) ; + return error ; + } + } + + error = connect (s, (PSOCKADDR) &dest, sizeof (SOCKADDR_IN)) ; + + if (error == SOCKET_ERROR) + { + printf ("connect: error %d\n", WSAGetLastError ()) ; + closesocket (s) ; + return error ; + } + + *ps = s ; + + return 0 ; +} + + + +#endif + diff --git a/lame-3.97/frontend/rtp.h b/lame-3.97/frontend/rtp.h new file mode 100644 index 0000000..8e04efe --- /dev/null +++ b/lame-3.97/frontend/rtp.h @@ -0,0 +1,47 @@ +#ifndef LAME_RTP_H +#define LAME_RTP_H + +#include <sys/socket.h> +#include <netinet/in.h> + +struct rtpbits { + int sequence:16; /* sequence number: random */ + int pt:7; /* payload type: 14 for MPEG audio */ + int m:1; /* marker: 0 */ + int cc:4; /* number of CSRC identifiers: 0 */ + int x:1; /* number of extension headers: 0 */ + int p:1; /* is there padding appended: 0 */ + int v:2; /* version: 2 */ +}; + +struct rtpheader { /* in network byte order */ + struct rtpbits b; + int timestamp; /* start: random */ + int ssrc; /* random */ + int iAudioHeader; /* =0?! */ +}; + +void initrtp(struct rtpheader *foo); +int sendrtp(int fd, struct sockaddr_in *sSockAddr, struct rtpheader *foo, const void *data, int len); +int makesocket(char *szAddr,unsigned short port,unsigned char TTL,struct sockaddr_in *sSockAddr); +void rtp_output(const char *mp3buffer,int mp3size); + +#if 0 +int rtp_send ( + SOCKET s, + struct rtpheader *foo, + void *data, + int len +) ; + +int rtp_socket ( + SOCKET *ps, + char *Address, + unsigned short port, + int TTL +) ; +#endif + + +#endif + diff --git a/lame-3.97/frontend/timestatus.c b/lame-3.97/frontend/timestatus.c new file mode 100644 index 0000000..104a05f --- /dev/null +++ b/lame-3.97/frontend/timestatus.c @@ -0,0 +1,245 @@ +/* + * time status related function source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: timestatus.c,v 1.40 2005/02/25 01:21:54 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + + +/* Hope it works now, otherwise complain or flame ;-) + */ + + +#if 1 +# define SPEED_CHAR "x" /* character x */ +# define SPEED_MULT 1. +#else +# define SPEED_CHAR "%%" +# define SPEED_MULT 100. +#endif + +#include <assert.h> +#include <time.h> + +#include "lame.h" +#include "main.h" +#include "lametime.h" +#include "timestatus.h" + +#if defined(BRHIST) +# include "brhist.h" +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +typedef struct { + double last_time; /* result of last call to clock */ + double elapsed_time; /* total time */ + double estimated_time; /* estimated total duration time [s] */ + double speed_index; /* speed relative to realtime coding [100%] */ +} timestatus_t; + +/* + * Calculates from the input (see below) the following values: + * - total estimated time + * - a speed index + */ + +static void +ts_calc_times(timestatus_t * const tstime, /* tstime->elapsed_time: elapsed time */ + const int sample_freq, /* sample frequency [Hz/kHz] */ + const int frameNum, /* Number of the current Frame */ + const int totalframes, /* total umber of Frames */ + const int framesize) +{ /* Size of a frame [bps/kbps] */ + assert(sample_freq >= 8000 && sample_freq <= 48000); + + if (frameNum > 0 && tstime->elapsed_time > 0) { + tstime->estimated_time = tstime->elapsed_time * totalframes / frameNum; + tstime->speed_index = framesize * frameNum / (sample_freq * tstime->elapsed_time); + } + else { + tstime->estimated_time = 0.; + tstime->speed_index = 0.; + } +} + +/* Decomposes a given number of seconds into a easy to read hh:mm:ss format + * padded with an additional character + */ + +static void +ts_time_decompose(const unsigned long time_in_sec, const char padded_char) +{ + const unsigned long hour = time_in_sec / 3600; + const unsigned int min = time_in_sec / 60 % 60; + const unsigned int sec = time_in_sec % 60; + + if (hour == 0) + fprintf(stderr, " %2u:%02u%c", min, sec, padded_char); + else if (hour < 100) + fprintf(stderr, "%2lu:%02u:%02u%c", hour, min, sec, padded_char); + else + fprintf(stderr, "%6lu h%c", hour, padded_char); +} + +void +timestatus(int samp_rate, int frameNum, int totalframes, int framesize) +{ + static timestatus_t real_time; + static timestatus_t proc_time; + int percent; + static int init = 0; /* What happens here? A work around instead of a bug fix ??? */ + double tmx, delta; + + if (totalframes < frameNum) { + totalframes = frameNum; + } + if (frameNum == 0) { + real_time.last_time = GetRealTime(); + proc_time.last_time = GetCPUTime(); + real_time.elapsed_time = 0; + proc_time.elapsed_time = 0; + } + + /* we need rollover protection for GetCPUTime, and maybe GetRealTime(): */ + tmx = GetRealTime(); + delta = tmx - real_time.last_time; + if (delta < 0) + delta = 0; /* ignore, clock has rolled over */ + real_time.elapsed_time += delta; + real_time.last_time = tmx; + + + tmx = GetCPUTime(); + delta = tmx - proc_time.last_time; + if (delta < 0) + delta = 0; /* ignore, clock has rolled over */ + proc_time.elapsed_time += delta; + proc_time.last_time = tmx; + + if (frameNum == 0 && init == 0) { + fprintf(stderr, + "\r" + " Frame | CPU time/estim | REAL time/estim | play/CPU | ETA \n" + " 0/ ( 0%%)| 0:00/ : | 0:00/ : | " SPEED_CHAR + "| : \r" + /* , Console_IO.str_clreoln, Console_IO.str_clreoln */ ); + init = 1; + return; + } + /* reset init counter for next time we are called with frameNum==0 */ + if (frameNum > 0) + init = 0; + + ts_calc_times(&real_time, samp_rate, frameNum, totalframes, framesize); + ts_calc_times(&proc_time, samp_rate, frameNum, totalframes, framesize); + + if (frameNum < totalframes) { + percent = (int) (100. * frameNum / totalframes + 0.5); + } + else { + percent = 100; + } + + fprintf(stderr, "\r%6i/%-6i", frameNum, totalframes); + fprintf(stderr, percent < 100 ? " (%2d%%)|" : "(%3.3d%%)|", percent); + ts_time_decompose((unsigned long) proc_time.elapsed_time, '/'); + ts_time_decompose((unsigned long) proc_time.estimated_time, '|'); + ts_time_decompose((unsigned long) real_time.elapsed_time, '/'); + ts_time_decompose((unsigned long) real_time.estimated_time, '|'); + fprintf(stderr, proc_time.speed_index <= 1. ? + "%9.4f" SPEED_CHAR "|" : "%#9.5g" SPEED_CHAR "|", SPEED_MULT * proc_time.speed_index); + ts_time_decompose((unsigned long) (real_time.estimated_time - real_time.elapsed_time), ' '); + fflush(stderr); +} + +void +timestatus_finish(void) +{ + fprintf(stderr, "\n"); + fflush(stderr); +} + +void +timestatus_klemm(const lame_global_flags * const gfp) +{ + static double last_time = 0.; + + if (silent <= 0) + if (lame_get_frameNum(gfp) == 0 || + lame_get_frameNum(gfp) == 9 || + GetRealTime() - last_time >= update_interval || GetRealTime() - last_time < 0) { +#ifdef BRHIST + brhist_jump_back(); +#endif + timestatus(lame_get_out_samplerate(gfp), + lame_get_frameNum(gfp), lame_get_totalframes(gfp), lame_get_framesize(gfp)); +#ifdef BRHIST + if (brhist) { + brhist_disp(gfp); + } +#endif + last_time = GetRealTime(); /* from now! disp_time seconds */ + } +} + +/* these functions are used in get_audio.c */ + +void +decoder_progress(const lame_global_flags * const gfp, const mp3data_struct * const mp3data) +{ + static int last; + fprintf(stderr, "\rFrame#%6i/%-6i %3i kbps", + mp3data->framenum, mp3data->totalframes, mp3data->bitrate); + + /* Programmed with a single frame hold delay */ + /* Attention: static data */ + + /* MP2 Playback is still buggy. */ + /* "'00' subbands 4-31 in intensity_stereo, bound==4" */ + /* is this really intensity_stereo or is it MS stereo? */ + + if (mp3data->mode == JOINT_STEREO) { + int curr = mp3data->mode_ext; + fprintf(stderr, " %s %c", + curr & 2 ? last & 2 ? " MS " : "LMSR" : last & 2 ? "LMSR" : "L R", + curr & 1 ? last & 1 ? 'I' : 'i' : last & 1 ? 'i' : ' '); + last = curr; + } + else { + fprintf(stderr, " "); + last = 0; + } +/* fprintf ( stderr, "%s", Console_IO.str_clreoln ); */ + fprintf(stderr, " \b\b\b\b\b\b\b\b"); + fflush(stderr); +} + +void +decoder_progress_finish(const lame_global_flags * const gfp) +{ + fprintf(stderr, "\n"); +} diff --git a/lame-3.97/frontend/timestatus.h b/lame-3.97/frontend/timestatus.h new file mode 100644 index 0000000..7cba9dc --- /dev/null +++ b/lame-3.97/frontend/timestatus.h @@ -0,0 +1,36 @@ +/* + * time status related function include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_TIMESTATUS_H +#define LAME_TIMESTATUS_H +void timestatus_klemm(const lame_global_flags * const gfp); + +void timestatus ( const int samp_rate, + const int frameNum, + const int totalframes, + const int framesize); +void timestatus_finish(void); + +void decoder_progress(const lame_global_flags * const gfp,const mp3data_struct * const); +void decoder_progress_finish(const lame_global_flags * const gfp); + +#endif /* LAME_TIMESTATUS_H */ + diff --git a/lame-3.97/include/.svn/all-wcprops b/lame-3.97/include/.svn/all-wcprops new file mode 100644 index 0000000..07510c5 --- /dev/null +++ b/lame-3.97/include/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/328/monitor/trunk/lame-3.97/include +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/328/monitor/trunk/lame-3.97/include/Makefile.in +END +lame.h +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/lame-3.97/include/lame.h +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/include/Makefile.am +END diff --git a/lame-3.97/include/.svn/entries b/lame-3.97/include/.svn/entries new file mode 100644 index 0000000..946de46 --- /dev/null +++ b/lame-3.97/include/.svn/entries @@ -0,0 +1,130 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/include +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Makefile.in +file + + + + +2012-01-23T14:07:04.613530Z +111a926110ab5519a8e256f68dd13c28 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +12526 + +lame.h +file + + + + +2012-01-23T14:07:04.617486Z +66dd11c83c0a618d4c18968f4d440b88 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +40525 + +Makefile.am +file + + + + +2012-01-23T14:07:04.617486Z +9380a4c372a0b2e5814b86060f1329e1 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +135 + diff --git a/lame-3.97/include/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/include/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/include/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/include/.svn/prop-base/lame.h.svn-base b/lame-3.97/include/.svn/prop-base/lame.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/include/.svn/prop-base/lame.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/include/.svn/text-base/Makefile.am.svn-base b/lame-3.97/include/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..ce02e8b --- /dev/null +++ b/lame-3.97/include/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,6 @@ +## $Id: Makefile.am,v 1.2 2001/01/15 15:16:08 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +pkginclude_HEADERS = lame.h + diff --git a/lame-3.97/include/.svn/text-base/Makefile.in.svn-base b/lame-3.97/include/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..6a438aa --- /dev/null +++ b/lame-3.97/include/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,425 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global +subdir = include +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(pkginclude_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +pkginclude_HEADERS = lame.h +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(mkdir_p) "$(DESTDIR)$(pkgincludedir)" + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/include/.svn/text-base/lame.h.svn-base b/lame-3.97/include/.svn/text-base/lame.h.svn-base new file mode 100644 index 0000000..1252d54 --- /dev/null +++ b/lame-3.97/include/.svn/text-base/lame.h.svn-base @@ -0,0 +1,1110 @@ +/* + * Interface to MP3 LAME encoding engine + * + * Copyright (c) 1999 Mark Taylor + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* $Id: lame.h,v 1.154 2004/04/11 15:39:53 glessard Exp $ */ + +#ifndef LAME_LAME_H +#define LAME_LAME_H + +#include <stdio.h> +#include <stdarg.h> + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(WIN32) +#undef CDECL +#define CDECL _cdecl +#else +#define CDECL +#endif + + +typedef enum vbr_mode_e { + vbr_off=0, + vbr_mt, /* obsolete, same as vbr_mtrh */ + vbr_rh, + vbr_abr, + vbr_mtrh, + vbr_max_indicator, /* Don't use this! It's used for sanity checks. */ + vbr_default=vbr_rh /* change this to change the default VBR mode of LAME */ +} vbr_mode; + + +/* MPEG modes */ +typedef enum MPEG_mode_e { + STEREO = 0, + JOINT_STEREO, + DUAL_CHANNEL, /* LAME doesn't supports this! */ + MONO, + NOT_SET, + MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} MPEG_mode; + +/* Padding types */ +typedef enum Padding_type_e { + PAD_NO = 0, + PAD_ALL, + PAD_ADJUST, + PAD_MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} Padding_type; + + + +/*presets*/ +typedef enum preset_mode_e { + /*values from 8 to 320 should be reserved for abr bitrates*/ + /*for abr I'd suggest to directly use the targeted bitrate as a value*/ + ABR_8 = 8, + ABR_320 = 320, + + V9 = 410, /*Vx to match Lame and VBR_xx to match FhG*/ + VBR_10 = 410, + V8 = 420, + VBR_20 = 420, + V7 = 430, + VBR_30 = 430, + V6 = 440, + VBR_40 = 440, + V5 = 450, + VBR_50 = 450, + V4 = 460, + VBR_60 = 460, + V3 = 470, + VBR_70 = 470, + V2 = 480, + VBR_80 = 480, + V1 = 490, + VBR_90 = 490, + V0 = 500, + VBR_100 = 500, + + + + /*still there for compatibility*/ + R3MIX = 1000, + STANDARD = 1001, + EXTREME = 1002, + INSANE = 1003, + STANDARD_FAST = 1004, + EXTREME_FAST = 1005, + MEDIUM = 1006, + MEDIUM_FAST = 1007 +} preset_mode; + + +/*asm optimizations*/ +typedef enum asm_optimizations_e { + MMX = 1, + AMD_3DNOW = 2, + SSE = 3 +} asm_optimizations; + + +/* psychoacoustic model */ +typedef enum Psy_model_e { + PSY_GPSYCHO = 1, + PSY_NSPSYTUNE = 2 +} Psy_model; + + +struct lame_global_struct; +typedef struct lame_global_struct lame_global_flags; +typedef lame_global_flags *lame_t; + + + + +/*********************************************************************** + * + * The LAME API + * These functions should be called, in this order, for each + * MP3 file to be encoded. See the file "API" for more documentation + * + ***********************************************************************/ + + +/* + * REQUIRED: + * initialize the encoder. sets default for all encoder parameters, + * returns NULL if some malloc()'s failed + * otherwise returns pointer to structure needed for all future + * API calls. + */ +lame_global_flags * CDECL lame_init(void); +/* obsolete version */ +int CDECL lame_init_old(lame_global_flags *); + + +/* + * OPTIONAL: + * set as needed to override defaults + */ + +/******************************************************************** + * input stream description + ***********************************************************************/ +/* number of samples. default = 2^32-1 */ +int CDECL lame_set_num_samples(lame_global_flags *, unsigned long); +unsigned long CDECL lame_get_num_samples(const lame_global_flags *); + +/* input sample rate in Hz. default = 44100hz */ +int CDECL lame_set_in_samplerate(lame_global_flags *, int); +int CDECL lame_get_in_samplerate(const lame_global_flags *); + +/* number of channels in input stream. default=2 */ +int CDECL lame_set_num_channels(lame_global_flags *, int); +int CDECL lame_get_num_channels(const lame_global_flags *); + +/* + scale the input by this amount before encoding. default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale(lame_global_flags *, float); +float CDECL lame_get_scale(const lame_global_flags *); + +/* + scale the channel 0 (left) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_left(lame_global_flags *, float); +float CDECL lame_get_scale_left(const lame_global_flags *); + +/* + scale the channel 1 (right) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_right(lame_global_flags *, float); +float CDECL lame_get_scale_right(const lame_global_flags *); + +/* + output sample rate in Hz. default = 0, which means LAME picks best value + based on the amount of compression. MPEG only allows: + MPEG1 32, 44.1, 48khz + MPEG2 16, 22.05, 24 + MPEG2.5 8, 11.025, 12 + (not used by decoding routines) +*/ +int CDECL lame_set_out_samplerate(lame_global_flags *, int); +int CDECL lame_get_out_samplerate(const lame_global_flags *); + + +/******************************************************************** + * general control parameters + ***********************************************************************/ +/* 1=cause LAME to collect data for an MP3 frame analyzer. default=0 */ +int CDECL lame_set_analysis(lame_global_flags *, int); +int CDECL lame_get_analysis(const lame_global_flags *); + +/* + 1 = write a Xing VBR header frame. + default = 1 + this variable must have been added by a Hungarian notation Windows programmer :-) +*/ +int CDECL lame_set_bWriteVbrTag(lame_global_flags *, int); +int CDECL lame_get_bWriteVbrTag(const lame_global_flags *); + +/* 1=decode only. use lame/mpglib to convert mp3/ogg to wav. default=0 */ +int CDECL lame_set_decode_only(lame_global_flags *, int); +int CDECL lame_get_decode_only(const lame_global_flags *); + +/* 1=encode a Vorbis .ogg file. default=0 */ +/* DEPRECATED */ +int CDECL lame_set_ogg(lame_global_flags *, int); +int CDECL lame_get_ogg(const lame_global_flags *); + +/* + internal algorithm selection. True quality is determined by the bitrate + but this variable will effect quality by selecting expensive or cheap algorithms. + quality=0..9. 0=best (very slow). 9=worst. + recommended: 2 near-best quality, not too slow + 5 good quality, fast + 7 ok quality, really fast +*/ +int CDECL lame_set_quality(lame_global_flags *, int); +int CDECL lame_get_quality(const lame_global_flags *); + +/* + mode = 0,1,2,3 = stereo, jstereo, dual channel (not supported), mono + default: lame picks based on compression ration and input channels +*/ +int CDECL lame_set_mode(lame_global_flags *, MPEG_mode); +MPEG_mode CDECL lame_get_mode(const lame_global_flags *); + +/* + mode_automs. Use a M/S mode with a switching threshold based on + compression ratio + DEPRECATED +*/ +int CDECL lame_set_mode_automs(lame_global_flags *, int); +int CDECL lame_get_mode_automs(const lame_global_flags *); + +/* + force_ms. Force M/S for all frames. For testing only. + default = 0 (disabled) +*/ +int CDECL lame_set_force_ms(lame_global_flags *, int); +int CDECL lame_get_force_ms(const lame_global_flags *); + +/* use free_format? default = 0 (disabled) */ +int CDECL lame_set_free_format(lame_global_flags *, int); +int CDECL lame_get_free_format(const lame_global_flags *); + +/* perform ReplayGain analysis? default = 0 (disabled) */ +int CDECL lame_set_findReplayGain(lame_global_flags *, int); +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* decode on the fly. Search for the peak sample. If the ReplayGain + * analysis is enabled then perform the analysis on the decoded data + * stream. default = 0 (disabled) + * NOTE: if this option is set the build-in decoder should not be used */ +int CDECL lame_set_decode_on_the_fly(lame_global_flags *, int); +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_input(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_input(const lame_global_flags *); + +/* DEPRECATED: now does the same as + lame_set_decode_on_the_fly() && lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_decode(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_decode(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_decode_on_the_fly() + default = 0 (disabled) */ +int CDECL lame_set_findPeakSample(lame_global_flags *, int); +int CDECL lame_get_findPeakSample(const lame_global_flags *); + +/* counters for gapless encoding */ +int CDECL lame_set_nogap_total(lame_global_flags*, int); +int CDECL lame_get_nogap_total(const lame_global_flags*); + +int CDECL lame_set_nogap_currentindex(lame_global_flags* , int); +int CDECL lame_get_nogap_currentindex(const lame_global_flags*); + + +/* + * OPTIONAL: + * Set printf like error/debug/message reporting functions. + * The second argument has to be a pointer to a function which looks like + * void my_debugf(const char *format, va_list ap) + * { + * (void) vfprintf(stdout, format, ap); + * } + * If you use NULL as the value of the pointer in the set function, the + * lame buildin function will be used (prints to stderr). + * To quiet any output you have to replace the body of the example function + * with just "return;" and use it in the set function. + */ +int CDECL lame_set_errorf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_debugf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_msgf (lame_global_flags *, + void (*func)(const char *, va_list)); + + + +/* set one of brate compression ratio. default is compression ratio of 11. */ +int CDECL lame_set_brate(lame_global_flags *, int); +int CDECL lame_get_brate(const lame_global_flags *); +int CDECL lame_set_compression_ratio(lame_global_flags *, float); +float CDECL lame_get_compression_ratio(const lame_global_flags *); + + +int CDECL lame_set_preset( lame_global_flags* gfp, int ); +int CDECL lame_set_asm_optimizations( lame_global_flags* gfp, int, int ); + + + +/******************************************************************** + * frame params + ***********************************************************************/ +/* mark as copyright. default=0 */ +int CDECL lame_set_copyright(lame_global_flags *, int); +int CDECL lame_get_copyright(const lame_global_flags *); + +/* mark as original. default=1 */ +int CDECL lame_set_original(lame_global_flags *, int); +int CDECL lame_get_original(const lame_global_flags *); + +/* error_protection. Use 2 bytes from each frame for CRC checksum. default=0 */ +int CDECL lame_set_error_protection(lame_global_flags *, int); +int CDECL lame_get_error_protection(const lame_global_flags *); + +/* padding_type. 0=pad no frames 1=pad all frames 2=adjust padding(default) */ +int CDECL lame_set_padding_type(lame_global_flags *, Padding_type); +Padding_type CDECL lame_get_padding_type(const lame_global_flags *); + +/* MP3 'private extension' bit Meaningless. default=0 */ +int CDECL lame_set_extension(lame_global_flags *, int); +int CDECL lame_get_extension(const lame_global_flags *); + +/* enforce strict ISO compliance. default=0 */ +int CDECL lame_set_strict_ISO(lame_global_flags *, int); +int CDECL lame_get_strict_ISO(const lame_global_flags *); + + +/******************************************************************** + * quantization/noise shaping + ***********************************************************************/ + +/* disable the bit reservoir. For testing only. default=0 */ +int CDECL lame_set_disable_reservoir(lame_global_flags *, int); +int CDECL lame_get_disable_reservoir(const lame_global_flags *); + +/* select a different "best quantization" function. default=0 */ +int CDECL lame_set_quant_comp(lame_global_flags *, int); +int CDECL lame_get_quant_comp(const lame_global_flags *); +int CDECL lame_set_quant_comp_short(lame_global_flags *, int); +int CDECL lame_get_quant_comp_short(const lame_global_flags *); + +int CDECL lame_set_experimentalX(lame_global_flags *, int); /* compatibility*/ +int CDECL lame_get_experimentalX(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalY(lame_global_flags *, int); +int CDECL lame_get_experimentalY(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalZ(lame_global_flags *, int); +int CDECL lame_get_experimentalZ(const lame_global_flags *); + +/* Naoki's psycho acoustic model. default=0 */ +int CDECL lame_set_exp_nspsytune(lame_global_flags *, int); +int CDECL lame_get_exp_nspsytune(const lame_global_flags *); + +void CDECL lame_set_msfix(lame_global_flags *, double); +float CDECL lame_get_msfix(const lame_global_flags *); + +int lame_set_exp_nspsytune2_int( lame_global_flags*, int, int); +float lame_set_exp_nspsytune2_real( lame_global_flags*, int, float); +void * lame_set_exp_nspsytune2_pointer( lame_global_flags*, int, void *); + +/******************************************************************** + * VBR control + ***********************************************************************/ +/* Types of VBR. default = vbr_off = CBR */ +int CDECL lame_set_VBR(lame_global_flags *, vbr_mode); +vbr_mode CDECL lame_get_VBR(const lame_global_flags *); + +/* VBR quality level. 0=highest 9=lowest */ +int CDECL lame_set_VBR_q(lame_global_flags *, int); +int CDECL lame_get_VBR_q(const lame_global_flags *); + +/* Ignored except for VBR=vbr_abr (ABR mode) */ +int CDECL lame_set_VBR_mean_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_mean_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_min_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_min_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_max_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_max_bitrate_kbps(const lame_global_flags *); + +/* + 1=strictly enforce VBR_min_bitrate. Normally it will be violated for + analog silence +*/ +int CDECL lame_set_VBR_hard_min(lame_global_flags *, int); +int CDECL lame_get_VBR_hard_min(const lame_global_flags *); + +/* for preset */ +int CDECL lame_set_preset_expopts(lame_global_flags *, int); + + +/******************************************************************** + * Filtering control + ***********************************************************************/ +/* freq in Hz to apply lowpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_lowpassfreq(lame_global_flags *, int); +int CDECL lame_get_lowpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_lowpasswidth(lame_global_flags *, int); +int CDECL lame_get_lowpasswidth(const lame_global_flags *); + +/* freq in Hz to apply highpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_highpassfreq(lame_global_flags *, int); +int CDECL lame_get_highpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_highpasswidth(lame_global_flags *, int); +int CDECL lame_get_highpasswidth(const lame_global_flags *); + + +/******************************************************************** + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + ***********************************************************************/ + +/* only use ATH for masking */ +int CDECL lame_set_ATHonly(lame_global_flags *, int); +int CDECL lame_get_ATHonly(const lame_global_flags *); + +/* only use ATH for short blocks */ +int CDECL lame_set_ATHshort(lame_global_flags *, int); +int CDECL lame_get_ATHshort(const lame_global_flags *); + +/* disable ATH */ +int CDECL lame_set_noATH(lame_global_flags *, int); +int CDECL lame_get_noATH(const lame_global_flags *); + +/* select ATH formula */ +int CDECL lame_set_ATHtype(lame_global_flags *, int); +int CDECL lame_get_ATHtype(const lame_global_flags *); + +/* lower ATH by this many db */ +int CDECL lame_set_ATHlower(lame_global_flags *, float); +float CDECL lame_get_ATHlower(const lame_global_flags *); + +/* select ATH adaptive adjustment type */ +int CDECL lame_set_athaa_type( lame_global_flags *, int); +int CDECL lame_get_athaa_type( const lame_global_flags *); + +/* select the loudness approximation used by the ATH adaptive auto-leveling */ +int CDECL lame_set_athaa_loudapprox( lame_global_flags *, int); +int CDECL lame_get_athaa_loudapprox( const lame_global_flags *); + +/* adjust (in dB) the point below which adaptive ATH level adjustment occurs */ +int CDECL lame_set_athaa_sensitivity( lame_global_flags *, float); +float CDECL lame_get_athaa_sensitivity( const lame_global_flags* ); + +/* predictability limit (ISO tonality formula) */ +int CDECL lame_set_cwlimit(lame_global_flags *, int); +int CDECL lame_get_cwlimit(const lame_global_flags *); + +/* + allow blocktypes to differ between channels? + default: 0 for jstereo, 1 for stereo +*/ +int CDECL lame_set_allow_diff_short(lame_global_flags *, int); +int CDECL lame_get_allow_diff_short(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_useTemporal(lame_global_flags *, int); +int CDECL lame_get_useTemporal(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_interChRatio(lame_global_flags *, float); +float CDECL lame_get_interChRatio(const lame_global_flags *); + +/* disable short blocks */ +int CDECL lame_set_no_short_blocks(lame_global_flags *, int); +int CDECL lame_get_no_short_blocks(const lame_global_flags *); + +/* force short blocks */ +int CDECL lame_set_force_short_blocks(lame_global_flags *, int); +int CDECL lame_get_force_short_blocks(const lame_global_flags *); + +/* Input PCM is emphased PCM (for instance from one of the rarely + emphased CDs), it is STRONGLY not recommended to use this, because + psycho does not take it into account, and last but not least many decoders + ignore these bits */ +int CDECL lame_set_emphasis(lame_global_flags *, int); +int CDECL lame_get_emphasis(const lame_global_flags *); + + + +/************************************************************************/ +/* internal variables, cannot be set... */ +/* provided because they may be of use to calling application */ +/************************************************************************/ +/* version 0=MPEG-2 1=MPEG-1 (2=MPEG-2.5) */ +int CDECL lame_get_version(const lame_global_flags *); + +/* encoder delay */ +int CDECL lame_get_encoder_delay(const lame_global_flags *); + +/* + padding appended to the input to make sure decoder can fully decode + all input. Note that this value can only be calculated during the + call to lame_encoder_flush(). Before lame_encoder_flush() has + been called, the value of encoder_padding = 0. +*/ +int CDECL lame_get_encoder_padding(const lame_global_flags *); + +/* size of MPEG frame */ +int CDECL lame_get_framesize(const lame_global_flags *); + +/* number of PCM samples buffered, but not yet encoded to mp3 data. */ +int CDECL lame_get_mf_samples_to_encode( const lame_global_flags* gfp ); + +/* + size (bytes) of mp3 data buffered, but not yet encoded. + this is the number of bytes which would be output by a call to + lame_encode_flush_nogap. NOTE: lame_encode_flush() will return + more bytes than this because it will encode the reamining buffered + PCM samples before flushing the mp3 buffers. +*/ +int CDECL lame_get_size_mp3buffer( const lame_global_flags* gfp ); + +/* number of frames encoded so far */ +int CDECL lame_get_frameNum(const lame_global_flags *); + +/* + lame's estimate of the total number of frames to be encoded + only valid if calling program set num_samples +*/ +int CDECL lame_get_totalframes(const lame_global_flags *); + +/* RadioGain value. Multiplied by 10 and rounded to the nearest. */ +int CDECL lame_get_RadioGain(const lame_global_flags *); + +/* AudiophileGain value. Multipled by 10 and rounded to the nearest. */ +int CDECL lame_get_AudiophileGain(const lame_global_flags *); + +/* the peak sample */ +float CDECL lame_get_PeakSample(const lame_global_flags *); + +/* is decoding on the fly performed */ +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* is ReplayGain analysis performed */ +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* Gain change required for preventing clipping. The value is correct only if + peak sample searching was enabled. If negative then the waveform + already does not clip. The value is multiplied by 10 and rounded up. */ +int CDECL lame_get_noclipGainChange(const lame_global_flags *); + +/* user-specified scale factor required for preventing clipping. Value is + correct only if peak sample searching was enabled and no user-specified + scaling was performed. If negative then either the waveform already does + not clip or the value cannot be determined */ +float CDECL lame_get_noclipScale(const lame_global_flags *); + + + + + + + +/* + * REQUIRED: + * sets more internal configuration based on data provided above. + * returns -1 if something failed. + */ +int CDECL lame_init_params(lame_global_flags * const ); + + +/* + * OPTIONAL: + * get the version number, in a string. of the form: + * "3.63 (beta)" or just "3.63". + */ +const char* CDECL get_lame_version ( void ); +const char* CDECL get_lame_short_version ( void ); +const char* CDECL get_lame_very_short_version ( void ); +const char* CDECL get_psy_version ( void ); +const char* CDECL get_lame_url ( void ); + +/* + * OPTIONAL: + * get the version numbers in numerical form. + */ +typedef struct { + /* generic LAME version */ + int major; + int minor; + int alpha; /* 0 if not an alpha version */ + int beta; /* 0 if not a beta version */ + + /* version of the psy model */ + int psy_major; + int psy_minor; + int psy_alpha; /* 0 if not an alpha version */ + int psy_beta; /* 0 if not a beta version */ + + /* compile time features */ + const char *features; /* Don't make assumptions about the contents! */ +} lame_version_t; +void CDECL get_lame_version_numerical ( lame_version_t *const ); + + +/* + * OPTIONAL: + * print internal lame configuration to message handler + */ +void CDECL lame_print_config(const lame_global_flags* gfp); + +void CDECL lame_print_internals( const lame_global_flags *gfp); + + +/* + * input pcm data, output (maybe) mp3 frames. + * This routine handles all buffering, resampling and filtering for you. + * + * return code number of bytes output in mp3buf. Can be 0 + * -1: mp3buf was too small + * -2: malloc() problem + * -3: lame_init_params() not called + * -4: psycho acoustic problems + * + * The required mp3buf_size can be computed from num_samples, + * samplerate and encoding rate, but here is a worst case estimate: + * + * mp3buf_size in bytes = 1.25*num_samples + 7200 + * + * I think a tighter bound could be: (mt, March 2000) + * MPEG1: + * num_samples*(bitrate/8)/samplerate + 4*1152*(bitrate/8)/samplerate + 512 + * MPEG2: + * num_samples*(bitrate/8)/samplerate + 4*576*(bitrate/8)/samplerate + 256 + * + * but test first if you use that! + * + * set mp3buf_size = 0 and LAME will not check if mp3buf_size is + * large enough. + * + * NOTE: + * if gfp->num_channels=2, but gfp->mode = 3 (mono), the L & R channels + * will be averaged into the L channel before encoding only the L channel + * This will overwrite the data in buffer_l[] and buffer_r[]. + * +*/ +int CDECL lame_encode_buffer ( + lame_global_flags* gfp, /* global context handle */ + const short int buffer_l [], /* PCM data for left channel */ + const short int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* + * as above, but input has L & R channel data interleaved. + * NOTE: + * num_samples = number of samples in the L (or R) + * channel, not the total number of samples in pcm[] + */ +int CDECL lame_encode_buffer_interleaved( + lame_global_flags* gfp, /* global context handlei */ + short int pcm[], /* PCM data for left and right + channel, interleaved */ + int num_samples, /* number of samples per channel, + _not_ number of samples in + pcm[] */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for 'float's. + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + */ +int CDECL lame_encode_buffer_float( + lame_global_flags* gfp, /* global context handle */ + const float buffer_l [], /* PCM data for left channel */ + const float buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for long's + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + * + * This scaling was a mistake (doesn't allow one to exploit full + * precision of type 'long'. Use lame_encode_buffer_long2() instead. + * + */ +int CDECL lame_encode_buffer_long( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* Same as lame_encode_buffer_long(), but with correct scaling. + * !! NOTE: !! data must still be scaled to be in the same range as + * type 'long'. Data should be in the range: +/- 2^(8*size(long)-1) + * + */ +int CDECL lame_encode_buffer_long2( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* as lame_encode_buffer, but for int's + * !! NOTE: !! input should be scaled to the maximum range of 'int' + * If int is 4 bytes, then the values should range from + * +/- 2147483648. + * + * This routine does not (and cannot, without loosing precision) use + * the same scaling as the rest of the lame_encode_buffer() routines. + * + */ +int CDECL lame_encode_buffer_int( + lame_global_flags* gfp, /* global context handle */ + const int buffer_l [], /* PCM data for left channel */ + const int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + + + + +/* + * REQUIRED: + * lame_encode_flush will flush the intenal PCM buffers, padding with + * 0's to make sure the final frame is complete, and then flush + * the internal MP3 buffers, and thus may return a + * final few mp3 frames. 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * will also write id3v1 tags (if any) into the bitstream + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * lame_encode_flush_nogap will flush the internal mp3 buffers and pad + * the last frame with ancillary data so it is a complete mp3 frame. + * + * 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * After a call to this routine, the outputed mp3 data is complete, but + * you may continue to encode new PCM samples and write future mp3 data + * to a different file. The two mp3 files will play back with no gaps + * if they are concatenated together. + * + * This routine will NOT write id3v1 tags into the bitstream. + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush_nogap( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * Normally, this is called by lame_init_params(). It writes id3v2 and + * Xing headers into the front of the bitstream, and sets frame counters + * and bitrate histogram data to 0. You can also call this after + * lame_encode_flush_nogap(). + */ +int CDECL lame_init_bitstream( + lame_global_flags * gfp); /* global context handle */ + + + +/* + * OPTIONAL: some simple statistics + * a bitrate histogram to visualize the distribution of used frame sizes + * a stereo mode histogram to visualize the distribution of used stereo + * modes, useful in joint-stereo mode only + * 0: LR left-right encoded + * 1: LR-I left-right and intensity encoded (currently not supported) + * 2: MS mid-side encoded + * 3: MS-I mid-side and intensity encoded (currently not supported) + * + * attention: don't call them after lame_encode_finish + * suggested: lame_encode_flush -> lame_*_hist -> lame_close + */ + +void CDECL lame_bitrate_hist( + const lame_global_flags *const gfp, + int bitrate_count[14] ); +void CDECL lame_bitrate_kbps( + const lame_global_flags *const gfp, + int bitrate_kbps [14] ); +void CDECL lame_stereo_mode_hist( + const lame_global_flags *const gfp, + int stereo_mode_count[4] ); + +void CDECL lame_bitrate_stereo_mode_hist ( + const lame_global_flags * const gfp, + int bitrate_stmode_count [14] [4] ); + +void CDECL lame_block_type_hist ( + const lame_global_flags * const gfp, + int btype_count[6] ); + +void CDECL lame_bitrate_block_type_hist ( + const lame_global_flags * const gfp, + int bitrate_btype_count[14][6] ); + + +/* + * OPTIONAL: + * lame_mp3_tags_fid will append a Xing VBR tag to the mp3 file with file + * pointer fid. These calls perform forward and backwards seeks, so make + * sure fid is a real file. Make sure lame_encode_flush has been called, + * and all mp3 data has been written to the file before calling this + * function. + * NOTE: + * if VBR tags are turned off by the user, or turned off by LAME because + * the output is not a regular file, this call does nothing +*/ +void CDECL lame_mp3_tags_fid(lame_global_flags *,FILE* fid); + + +/* + * REQUIRED: + * final call to free all remaining buffers + */ +int CDECL lame_close (lame_global_flags *); + +/* + * OBSOLETE: + * lame_encode_finish combines lame_encode_flush() and lame_close() in + * one call. However, once this call is made, the statistics routines + * will no longer work because the data will have been cleared, and + * lame_mp3_tags_fid() cannot be called to add data to the VBR header + */ +int CDECL lame_encode_finish( + lame_global_flags* gfp, + unsigned char* mp3buf, + int size ); + + + + + + + +/********************************************************************* + * + * decoding + * + * a simple interface to mpglib, part of mpg123, is also included if + * libmp3lame is compiled with HAVE_MPGLIB + * + *********************************************************************/ +typedef struct { + int header_parsed; /* 1 if header was parsed and following data was + computed */ + int stereo; /* number of channels */ + int samplerate; /* sample rate */ + int bitrate; /* bitrate */ + int mode; /* mp3 frame type */ + int mode_ext; /* mp3 frame type */ + int framesize; /* number of samples per mp3 frame */ + + /* this data is only computed if mpglib detects a Xing VBR header */ + unsigned long nsamp; /* number of samples in mp3 file. */ + int totalframes; /* total number of frames in mp3 file */ + + /* this data is not currently computed by the mpglib routines */ + int framenum; /* frames decoded counter */ +} mp3data_struct; + + +/* required call to initialize decoder + * NOTE: the decoder should not be used when encoding is performed + * with decoding on the fly */ +int CDECL lame_decode_init(void); + +/********************************************************************* + * input 1 mp3 frame, output (maybe) pcm data. + * + * nout = lame_decode(mp3buf,len,pcm_l,pcm_r); + * + * input: + * len : number of bytes of mp3 data in mp3buf + * mp3buf[len] : mp3 data to be decoded + * + * output: + * nout: -1 : decoding error + * 0 : need more data before we can complete the decode + * >0 : returned 'nout' samples worth of data in pcm_l,pcm_r + * pcm_l[nout] : left channel data + * pcm_r[nout] : right channel data + * + *********************************************************************/ +int CDECL lame_decode( + unsigned char * mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode, and also returns mp3 header data */ +int CDECL lame_decode_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode, but returns at most one frame */ +int CDECL lame_decode1( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode1, but returns at most one frame and mp3 header data */ +int CDECL lame_decode1_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode1_headers, but also returns enc_delay and enc_padding + from VBR Info tag, (-1 if no info tag was found) */ +int CDECL lame_decode1_headersB( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data, + int *enc_delay, + int *enc_padding ); + + +/* cleanup call to exit decoder */ +int CDECL lame_decode_exit(void); + + + +/********************************************************************* + * + * id3tag stuff + * + *********************************************************************/ + +/* + * id3tag.h -- Interface to write ID3 version 1 and 2 tags. + * + * Copyright (C) 2000 Don Melton. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +/* utility to obtain alphabetically sorted list of genre names with numbers */ +extern void id3tag_genre_list( + void (*handler)(int, const char *, void *), + void* cookie); + +extern void id3tag_init (lame_global_flags *gfp); + +/* force addition of version 2 tag */ +extern void id3tag_add_v2 (lame_global_flags *gfp); + +/* add only a version 1 tag */ +extern void id3tag_v1_only (lame_global_flags *gfp); + +/* add only a version 2 tag */ +extern void id3tag_v2_only (lame_global_flags *gfp); + +/* pad version 1 tag with spaces instead of nulls */ +extern void id3tag_space_v1 (lame_global_flags *gfp); + +/* pad version 2 tag with extra 128 bytes */ +extern void id3tag_pad_v2 (lame_global_flags *gfp); + +extern void id3tag_set_title( + lame_global_flags* gfp, + const char* title ); +extern void id3tag_set_artist( + lame_global_flags* gfp, + const char* artist ); +extern void id3tag_set_album( + lame_global_flags* gfp, + const char* album ); +extern void id3tag_set_year( + lame_global_flags* gfp, + const char* year ); +extern void id3tag_set_comment( + lame_global_flags* gfp, + const char* comment ); +extern void id3tag_set_track( + lame_global_flags* gfp, + const char* track ); + +/* return non-zero result if genre name or number is invalid */ +extern int id3tag_set_genre( + lame_global_flags* gfp, + const char* genre ); + +/*********************************************************************** +* +* list of valid bitrates [kbps] & sample frequencies [Hz]. +* first index: 0: MPEG-2 values (sample frequencies 16...24 kHz) +* 1: MPEG-1 values (sample frequencies 32...48 kHz) +* 2: MPEG-2.5 values (sample frequencies 8...12 kHz) +***********************************************************************/ +extern const int bitrate_table [3] [16]; +extern const int samplerate_table [3] [ 4]; + + + +/* maximum size of mp3buffer needed if you encode at most 1152 samples for + each call to lame_encode_buffer. see lame_encode_buffer() below + (LAME_MAXMP3BUFFER is now obsolete) */ +#define LAME_MAXMP3BUFFER 16384 + + +typedef enum { + LAME_OKAY = 0, + LAME_NOERROR = 0, + LAME_GENERICERROR = -1, + LAME_NOMEM = -10, + LAME_BADBITRATE = -11, + LAME_BADSAMPFREQ = -12, + LAME_INTERNALERROR = -13, + + FRONTEND_READERROR = -80, + FRONTEND_WRITEERROR = -81, + FRONTEND_FILETOOLARGE = -82 + +} lame_errorcodes_t; + +#if defined(__cplusplus) +} +#endif +#endif /* LAME_LAME_H */ + diff --git a/lame-3.97/include/Makefile.am b/lame-3.97/include/Makefile.am new file mode 100644 index 0000000..ce02e8b --- /dev/null +++ b/lame-3.97/include/Makefile.am @@ -0,0 +1,6 @@ +## $Id: Makefile.am,v 1.2 2001/01/15 15:16:08 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +pkginclude_HEADERS = lame.h + diff --git a/lame-3.97/include/Makefile.in b/lame-3.97/include/Makefile.in new file mode 100644 index 0000000..6a438aa --- /dev/null +++ b/lame-3.97/include/Makefile.in @@ -0,0 +1,425 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(pkginclude_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global +subdir = include +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(pkgincludedir)" +pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(pkginclude_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +pkginclude_HEADERS = lame.h +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(pkgincludedir)" || $(mkdir_p) "$(DESTDIR)$(pkgincludedir)" + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + $(pkgincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgincludedir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgincludedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/include/lame.h b/lame-3.97/include/lame.h new file mode 100644 index 0000000..1252d54 --- /dev/null +++ b/lame-3.97/include/lame.h @@ -0,0 +1,1110 @@ +/* + * Interface to MP3 LAME encoding engine + * + * Copyright (c) 1999 Mark Taylor + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* $Id: lame.h,v 1.154 2004/04/11 15:39:53 glessard Exp $ */ + +#ifndef LAME_LAME_H +#define LAME_LAME_H + +#include <stdio.h> +#include <stdarg.h> + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(WIN32) +#undef CDECL +#define CDECL _cdecl +#else +#define CDECL +#endif + + +typedef enum vbr_mode_e { + vbr_off=0, + vbr_mt, /* obsolete, same as vbr_mtrh */ + vbr_rh, + vbr_abr, + vbr_mtrh, + vbr_max_indicator, /* Don't use this! It's used for sanity checks. */ + vbr_default=vbr_rh /* change this to change the default VBR mode of LAME */ +} vbr_mode; + + +/* MPEG modes */ +typedef enum MPEG_mode_e { + STEREO = 0, + JOINT_STEREO, + DUAL_CHANNEL, /* LAME doesn't supports this! */ + MONO, + NOT_SET, + MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} MPEG_mode; + +/* Padding types */ +typedef enum Padding_type_e { + PAD_NO = 0, + PAD_ALL, + PAD_ADJUST, + PAD_MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} Padding_type; + + + +/*presets*/ +typedef enum preset_mode_e { + /*values from 8 to 320 should be reserved for abr bitrates*/ + /*for abr I'd suggest to directly use the targeted bitrate as a value*/ + ABR_8 = 8, + ABR_320 = 320, + + V9 = 410, /*Vx to match Lame and VBR_xx to match FhG*/ + VBR_10 = 410, + V8 = 420, + VBR_20 = 420, + V7 = 430, + VBR_30 = 430, + V6 = 440, + VBR_40 = 440, + V5 = 450, + VBR_50 = 450, + V4 = 460, + VBR_60 = 460, + V3 = 470, + VBR_70 = 470, + V2 = 480, + VBR_80 = 480, + V1 = 490, + VBR_90 = 490, + V0 = 500, + VBR_100 = 500, + + + + /*still there for compatibility*/ + R3MIX = 1000, + STANDARD = 1001, + EXTREME = 1002, + INSANE = 1003, + STANDARD_FAST = 1004, + EXTREME_FAST = 1005, + MEDIUM = 1006, + MEDIUM_FAST = 1007 +} preset_mode; + + +/*asm optimizations*/ +typedef enum asm_optimizations_e { + MMX = 1, + AMD_3DNOW = 2, + SSE = 3 +} asm_optimizations; + + +/* psychoacoustic model */ +typedef enum Psy_model_e { + PSY_GPSYCHO = 1, + PSY_NSPSYTUNE = 2 +} Psy_model; + + +struct lame_global_struct; +typedef struct lame_global_struct lame_global_flags; +typedef lame_global_flags *lame_t; + + + + +/*********************************************************************** + * + * The LAME API + * These functions should be called, in this order, for each + * MP3 file to be encoded. See the file "API" for more documentation + * + ***********************************************************************/ + + +/* + * REQUIRED: + * initialize the encoder. sets default for all encoder parameters, + * returns NULL if some malloc()'s failed + * otherwise returns pointer to structure needed for all future + * API calls. + */ +lame_global_flags * CDECL lame_init(void); +/* obsolete version */ +int CDECL lame_init_old(lame_global_flags *); + + +/* + * OPTIONAL: + * set as needed to override defaults + */ + +/******************************************************************** + * input stream description + ***********************************************************************/ +/* number of samples. default = 2^32-1 */ +int CDECL lame_set_num_samples(lame_global_flags *, unsigned long); +unsigned long CDECL lame_get_num_samples(const lame_global_flags *); + +/* input sample rate in Hz. default = 44100hz */ +int CDECL lame_set_in_samplerate(lame_global_flags *, int); +int CDECL lame_get_in_samplerate(const lame_global_flags *); + +/* number of channels in input stream. default=2 */ +int CDECL lame_set_num_channels(lame_global_flags *, int); +int CDECL lame_get_num_channels(const lame_global_flags *); + +/* + scale the input by this amount before encoding. default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale(lame_global_flags *, float); +float CDECL lame_get_scale(const lame_global_flags *); + +/* + scale the channel 0 (left) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_left(lame_global_flags *, float); +float CDECL lame_get_scale_left(const lame_global_flags *); + +/* + scale the channel 1 (right) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_right(lame_global_flags *, float); +float CDECL lame_get_scale_right(const lame_global_flags *); + +/* + output sample rate in Hz. default = 0, which means LAME picks best value + based on the amount of compression. MPEG only allows: + MPEG1 32, 44.1, 48khz + MPEG2 16, 22.05, 24 + MPEG2.5 8, 11.025, 12 + (not used by decoding routines) +*/ +int CDECL lame_set_out_samplerate(lame_global_flags *, int); +int CDECL lame_get_out_samplerate(const lame_global_flags *); + + +/******************************************************************** + * general control parameters + ***********************************************************************/ +/* 1=cause LAME to collect data for an MP3 frame analyzer. default=0 */ +int CDECL lame_set_analysis(lame_global_flags *, int); +int CDECL lame_get_analysis(const lame_global_flags *); + +/* + 1 = write a Xing VBR header frame. + default = 1 + this variable must have been added by a Hungarian notation Windows programmer :-) +*/ +int CDECL lame_set_bWriteVbrTag(lame_global_flags *, int); +int CDECL lame_get_bWriteVbrTag(const lame_global_flags *); + +/* 1=decode only. use lame/mpglib to convert mp3/ogg to wav. default=0 */ +int CDECL lame_set_decode_only(lame_global_flags *, int); +int CDECL lame_get_decode_only(const lame_global_flags *); + +/* 1=encode a Vorbis .ogg file. default=0 */ +/* DEPRECATED */ +int CDECL lame_set_ogg(lame_global_flags *, int); +int CDECL lame_get_ogg(const lame_global_flags *); + +/* + internal algorithm selection. True quality is determined by the bitrate + but this variable will effect quality by selecting expensive or cheap algorithms. + quality=0..9. 0=best (very slow). 9=worst. + recommended: 2 near-best quality, not too slow + 5 good quality, fast + 7 ok quality, really fast +*/ +int CDECL lame_set_quality(lame_global_flags *, int); +int CDECL lame_get_quality(const lame_global_flags *); + +/* + mode = 0,1,2,3 = stereo, jstereo, dual channel (not supported), mono + default: lame picks based on compression ration and input channels +*/ +int CDECL lame_set_mode(lame_global_flags *, MPEG_mode); +MPEG_mode CDECL lame_get_mode(const lame_global_flags *); + +/* + mode_automs. Use a M/S mode with a switching threshold based on + compression ratio + DEPRECATED +*/ +int CDECL lame_set_mode_automs(lame_global_flags *, int); +int CDECL lame_get_mode_automs(const lame_global_flags *); + +/* + force_ms. Force M/S for all frames. For testing only. + default = 0 (disabled) +*/ +int CDECL lame_set_force_ms(lame_global_flags *, int); +int CDECL lame_get_force_ms(const lame_global_flags *); + +/* use free_format? default = 0 (disabled) */ +int CDECL lame_set_free_format(lame_global_flags *, int); +int CDECL lame_get_free_format(const lame_global_flags *); + +/* perform ReplayGain analysis? default = 0 (disabled) */ +int CDECL lame_set_findReplayGain(lame_global_flags *, int); +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* decode on the fly. Search for the peak sample. If the ReplayGain + * analysis is enabled then perform the analysis on the decoded data + * stream. default = 0 (disabled) + * NOTE: if this option is set the build-in decoder should not be used */ +int CDECL lame_set_decode_on_the_fly(lame_global_flags *, int); +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_input(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_input(const lame_global_flags *); + +/* DEPRECATED: now does the same as + lame_set_decode_on_the_fly() && lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_decode(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_decode(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_decode_on_the_fly() + default = 0 (disabled) */ +int CDECL lame_set_findPeakSample(lame_global_flags *, int); +int CDECL lame_get_findPeakSample(const lame_global_flags *); + +/* counters for gapless encoding */ +int CDECL lame_set_nogap_total(lame_global_flags*, int); +int CDECL lame_get_nogap_total(const lame_global_flags*); + +int CDECL lame_set_nogap_currentindex(lame_global_flags* , int); +int CDECL lame_get_nogap_currentindex(const lame_global_flags*); + + +/* + * OPTIONAL: + * Set printf like error/debug/message reporting functions. + * The second argument has to be a pointer to a function which looks like + * void my_debugf(const char *format, va_list ap) + * { + * (void) vfprintf(stdout, format, ap); + * } + * If you use NULL as the value of the pointer in the set function, the + * lame buildin function will be used (prints to stderr). + * To quiet any output you have to replace the body of the example function + * with just "return;" and use it in the set function. + */ +int CDECL lame_set_errorf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_debugf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_msgf (lame_global_flags *, + void (*func)(const char *, va_list)); + + + +/* set one of brate compression ratio. default is compression ratio of 11. */ +int CDECL lame_set_brate(lame_global_flags *, int); +int CDECL lame_get_brate(const lame_global_flags *); +int CDECL lame_set_compression_ratio(lame_global_flags *, float); +float CDECL lame_get_compression_ratio(const lame_global_flags *); + + +int CDECL lame_set_preset( lame_global_flags* gfp, int ); +int CDECL lame_set_asm_optimizations( lame_global_flags* gfp, int, int ); + + + +/******************************************************************** + * frame params + ***********************************************************************/ +/* mark as copyright. default=0 */ +int CDECL lame_set_copyright(lame_global_flags *, int); +int CDECL lame_get_copyright(const lame_global_flags *); + +/* mark as original. default=1 */ +int CDECL lame_set_original(lame_global_flags *, int); +int CDECL lame_get_original(const lame_global_flags *); + +/* error_protection. Use 2 bytes from each frame for CRC checksum. default=0 */ +int CDECL lame_set_error_protection(lame_global_flags *, int); +int CDECL lame_get_error_protection(const lame_global_flags *); + +/* padding_type. 0=pad no frames 1=pad all frames 2=adjust padding(default) */ +int CDECL lame_set_padding_type(lame_global_flags *, Padding_type); +Padding_type CDECL lame_get_padding_type(const lame_global_flags *); + +/* MP3 'private extension' bit Meaningless. default=0 */ +int CDECL lame_set_extension(lame_global_flags *, int); +int CDECL lame_get_extension(const lame_global_flags *); + +/* enforce strict ISO compliance. default=0 */ +int CDECL lame_set_strict_ISO(lame_global_flags *, int); +int CDECL lame_get_strict_ISO(const lame_global_flags *); + + +/******************************************************************** + * quantization/noise shaping + ***********************************************************************/ + +/* disable the bit reservoir. For testing only. default=0 */ +int CDECL lame_set_disable_reservoir(lame_global_flags *, int); +int CDECL lame_get_disable_reservoir(const lame_global_flags *); + +/* select a different "best quantization" function. default=0 */ +int CDECL lame_set_quant_comp(lame_global_flags *, int); +int CDECL lame_get_quant_comp(const lame_global_flags *); +int CDECL lame_set_quant_comp_short(lame_global_flags *, int); +int CDECL lame_get_quant_comp_short(const lame_global_flags *); + +int CDECL lame_set_experimentalX(lame_global_flags *, int); /* compatibility*/ +int CDECL lame_get_experimentalX(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalY(lame_global_flags *, int); +int CDECL lame_get_experimentalY(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalZ(lame_global_flags *, int); +int CDECL lame_get_experimentalZ(const lame_global_flags *); + +/* Naoki's psycho acoustic model. default=0 */ +int CDECL lame_set_exp_nspsytune(lame_global_flags *, int); +int CDECL lame_get_exp_nspsytune(const lame_global_flags *); + +void CDECL lame_set_msfix(lame_global_flags *, double); +float CDECL lame_get_msfix(const lame_global_flags *); + +int lame_set_exp_nspsytune2_int( lame_global_flags*, int, int); +float lame_set_exp_nspsytune2_real( lame_global_flags*, int, float); +void * lame_set_exp_nspsytune2_pointer( lame_global_flags*, int, void *); + +/******************************************************************** + * VBR control + ***********************************************************************/ +/* Types of VBR. default = vbr_off = CBR */ +int CDECL lame_set_VBR(lame_global_flags *, vbr_mode); +vbr_mode CDECL lame_get_VBR(const lame_global_flags *); + +/* VBR quality level. 0=highest 9=lowest */ +int CDECL lame_set_VBR_q(lame_global_flags *, int); +int CDECL lame_get_VBR_q(const lame_global_flags *); + +/* Ignored except for VBR=vbr_abr (ABR mode) */ +int CDECL lame_set_VBR_mean_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_mean_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_min_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_min_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_max_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_max_bitrate_kbps(const lame_global_flags *); + +/* + 1=strictly enforce VBR_min_bitrate. Normally it will be violated for + analog silence +*/ +int CDECL lame_set_VBR_hard_min(lame_global_flags *, int); +int CDECL lame_get_VBR_hard_min(const lame_global_flags *); + +/* for preset */ +int CDECL lame_set_preset_expopts(lame_global_flags *, int); + + +/******************************************************************** + * Filtering control + ***********************************************************************/ +/* freq in Hz to apply lowpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_lowpassfreq(lame_global_flags *, int); +int CDECL lame_get_lowpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_lowpasswidth(lame_global_flags *, int); +int CDECL lame_get_lowpasswidth(const lame_global_flags *); + +/* freq in Hz to apply highpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_highpassfreq(lame_global_flags *, int); +int CDECL lame_get_highpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_highpasswidth(lame_global_flags *, int); +int CDECL lame_get_highpasswidth(const lame_global_flags *); + + +/******************************************************************** + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + ***********************************************************************/ + +/* only use ATH for masking */ +int CDECL lame_set_ATHonly(lame_global_flags *, int); +int CDECL lame_get_ATHonly(const lame_global_flags *); + +/* only use ATH for short blocks */ +int CDECL lame_set_ATHshort(lame_global_flags *, int); +int CDECL lame_get_ATHshort(const lame_global_flags *); + +/* disable ATH */ +int CDECL lame_set_noATH(lame_global_flags *, int); +int CDECL lame_get_noATH(const lame_global_flags *); + +/* select ATH formula */ +int CDECL lame_set_ATHtype(lame_global_flags *, int); +int CDECL lame_get_ATHtype(const lame_global_flags *); + +/* lower ATH by this many db */ +int CDECL lame_set_ATHlower(lame_global_flags *, float); +float CDECL lame_get_ATHlower(const lame_global_flags *); + +/* select ATH adaptive adjustment type */ +int CDECL lame_set_athaa_type( lame_global_flags *, int); +int CDECL lame_get_athaa_type( const lame_global_flags *); + +/* select the loudness approximation used by the ATH adaptive auto-leveling */ +int CDECL lame_set_athaa_loudapprox( lame_global_flags *, int); +int CDECL lame_get_athaa_loudapprox( const lame_global_flags *); + +/* adjust (in dB) the point below which adaptive ATH level adjustment occurs */ +int CDECL lame_set_athaa_sensitivity( lame_global_flags *, float); +float CDECL lame_get_athaa_sensitivity( const lame_global_flags* ); + +/* predictability limit (ISO tonality formula) */ +int CDECL lame_set_cwlimit(lame_global_flags *, int); +int CDECL lame_get_cwlimit(const lame_global_flags *); + +/* + allow blocktypes to differ between channels? + default: 0 for jstereo, 1 for stereo +*/ +int CDECL lame_set_allow_diff_short(lame_global_flags *, int); +int CDECL lame_get_allow_diff_short(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_useTemporal(lame_global_flags *, int); +int CDECL lame_get_useTemporal(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_interChRatio(lame_global_flags *, float); +float CDECL lame_get_interChRatio(const lame_global_flags *); + +/* disable short blocks */ +int CDECL lame_set_no_short_blocks(lame_global_flags *, int); +int CDECL lame_get_no_short_blocks(const lame_global_flags *); + +/* force short blocks */ +int CDECL lame_set_force_short_blocks(lame_global_flags *, int); +int CDECL lame_get_force_short_blocks(const lame_global_flags *); + +/* Input PCM is emphased PCM (for instance from one of the rarely + emphased CDs), it is STRONGLY not recommended to use this, because + psycho does not take it into account, and last but not least many decoders + ignore these bits */ +int CDECL lame_set_emphasis(lame_global_flags *, int); +int CDECL lame_get_emphasis(const lame_global_flags *); + + + +/************************************************************************/ +/* internal variables, cannot be set... */ +/* provided because they may be of use to calling application */ +/************************************************************************/ +/* version 0=MPEG-2 1=MPEG-1 (2=MPEG-2.5) */ +int CDECL lame_get_version(const lame_global_flags *); + +/* encoder delay */ +int CDECL lame_get_encoder_delay(const lame_global_flags *); + +/* + padding appended to the input to make sure decoder can fully decode + all input. Note that this value can only be calculated during the + call to lame_encoder_flush(). Before lame_encoder_flush() has + been called, the value of encoder_padding = 0. +*/ +int CDECL lame_get_encoder_padding(const lame_global_flags *); + +/* size of MPEG frame */ +int CDECL lame_get_framesize(const lame_global_flags *); + +/* number of PCM samples buffered, but not yet encoded to mp3 data. */ +int CDECL lame_get_mf_samples_to_encode( const lame_global_flags* gfp ); + +/* + size (bytes) of mp3 data buffered, but not yet encoded. + this is the number of bytes which would be output by a call to + lame_encode_flush_nogap. NOTE: lame_encode_flush() will return + more bytes than this because it will encode the reamining buffered + PCM samples before flushing the mp3 buffers. +*/ +int CDECL lame_get_size_mp3buffer( const lame_global_flags* gfp ); + +/* number of frames encoded so far */ +int CDECL lame_get_frameNum(const lame_global_flags *); + +/* + lame's estimate of the total number of frames to be encoded + only valid if calling program set num_samples +*/ +int CDECL lame_get_totalframes(const lame_global_flags *); + +/* RadioGain value. Multiplied by 10 and rounded to the nearest. */ +int CDECL lame_get_RadioGain(const lame_global_flags *); + +/* AudiophileGain value. Multipled by 10 and rounded to the nearest. */ +int CDECL lame_get_AudiophileGain(const lame_global_flags *); + +/* the peak sample */ +float CDECL lame_get_PeakSample(const lame_global_flags *); + +/* is decoding on the fly performed */ +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* is ReplayGain analysis performed */ +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* Gain change required for preventing clipping. The value is correct only if + peak sample searching was enabled. If negative then the waveform + already does not clip. The value is multiplied by 10 and rounded up. */ +int CDECL lame_get_noclipGainChange(const lame_global_flags *); + +/* user-specified scale factor required for preventing clipping. Value is + correct only if peak sample searching was enabled and no user-specified + scaling was performed. If negative then either the waveform already does + not clip or the value cannot be determined */ +float CDECL lame_get_noclipScale(const lame_global_flags *); + + + + + + + +/* + * REQUIRED: + * sets more internal configuration based on data provided above. + * returns -1 if something failed. + */ +int CDECL lame_init_params(lame_global_flags * const ); + + +/* + * OPTIONAL: + * get the version number, in a string. of the form: + * "3.63 (beta)" or just "3.63". + */ +const char* CDECL get_lame_version ( void ); +const char* CDECL get_lame_short_version ( void ); +const char* CDECL get_lame_very_short_version ( void ); +const char* CDECL get_psy_version ( void ); +const char* CDECL get_lame_url ( void ); + +/* + * OPTIONAL: + * get the version numbers in numerical form. + */ +typedef struct { + /* generic LAME version */ + int major; + int minor; + int alpha; /* 0 if not an alpha version */ + int beta; /* 0 if not a beta version */ + + /* version of the psy model */ + int psy_major; + int psy_minor; + int psy_alpha; /* 0 if not an alpha version */ + int psy_beta; /* 0 if not a beta version */ + + /* compile time features */ + const char *features; /* Don't make assumptions about the contents! */ +} lame_version_t; +void CDECL get_lame_version_numerical ( lame_version_t *const ); + + +/* + * OPTIONAL: + * print internal lame configuration to message handler + */ +void CDECL lame_print_config(const lame_global_flags* gfp); + +void CDECL lame_print_internals( const lame_global_flags *gfp); + + +/* + * input pcm data, output (maybe) mp3 frames. + * This routine handles all buffering, resampling and filtering for you. + * + * return code number of bytes output in mp3buf. Can be 0 + * -1: mp3buf was too small + * -2: malloc() problem + * -3: lame_init_params() not called + * -4: psycho acoustic problems + * + * The required mp3buf_size can be computed from num_samples, + * samplerate and encoding rate, but here is a worst case estimate: + * + * mp3buf_size in bytes = 1.25*num_samples + 7200 + * + * I think a tighter bound could be: (mt, March 2000) + * MPEG1: + * num_samples*(bitrate/8)/samplerate + 4*1152*(bitrate/8)/samplerate + 512 + * MPEG2: + * num_samples*(bitrate/8)/samplerate + 4*576*(bitrate/8)/samplerate + 256 + * + * but test first if you use that! + * + * set mp3buf_size = 0 and LAME will not check if mp3buf_size is + * large enough. + * + * NOTE: + * if gfp->num_channels=2, but gfp->mode = 3 (mono), the L & R channels + * will be averaged into the L channel before encoding only the L channel + * This will overwrite the data in buffer_l[] and buffer_r[]. + * +*/ +int CDECL lame_encode_buffer ( + lame_global_flags* gfp, /* global context handle */ + const short int buffer_l [], /* PCM data for left channel */ + const short int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* + * as above, but input has L & R channel data interleaved. + * NOTE: + * num_samples = number of samples in the L (or R) + * channel, not the total number of samples in pcm[] + */ +int CDECL lame_encode_buffer_interleaved( + lame_global_flags* gfp, /* global context handlei */ + short int pcm[], /* PCM data for left and right + channel, interleaved */ + int num_samples, /* number of samples per channel, + _not_ number of samples in + pcm[] */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for 'float's. + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + */ +int CDECL lame_encode_buffer_float( + lame_global_flags* gfp, /* global context handle */ + const float buffer_l [], /* PCM data for left channel */ + const float buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for long's + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + * + * This scaling was a mistake (doesn't allow one to exploit full + * precision of type 'long'. Use lame_encode_buffer_long2() instead. + * + */ +int CDECL lame_encode_buffer_long( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* Same as lame_encode_buffer_long(), but with correct scaling. + * !! NOTE: !! data must still be scaled to be in the same range as + * type 'long'. Data should be in the range: +/- 2^(8*size(long)-1) + * + */ +int CDECL lame_encode_buffer_long2( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* as lame_encode_buffer, but for int's + * !! NOTE: !! input should be scaled to the maximum range of 'int' + * If int is 4 bytes, then the values should range from + * +/- 2147483648. + * + * This routine does not (and cannot, without loosing precision) use + * the same scaling as the rest of the lame_encode_buffer() routines. + * + */ +int CDECL lame_encode_buffer_int( + lame_global_flags* gfp, /* global context handle */ + const int buffer_l [], /* PCM data for left channel */ + const int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + + + + +/* + * REQUIRED: + * lame_encode_flush will flush the intenal PCM buffers, padding with + * 0's to make sure the final frame is complete, and then flush + * the internal MP3 buffers, and thus may return a + * final few mp3 frames. 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * will also write id3v1 tags (if any) into the bitstream + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * lame_encode_flush_nogap will flush the internal mp3 buffers and pad + * the last frame with ancillary data so it is a complete mp3 frame. + * + * 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * After a call to this routine, the outputed mp3 data is complete, but + * you may continue to encode new PCM samples and write future mp3 data + * to a different file. The two mp3 files will play back with no gaps + * if they are concatenated together. + * + * This routine will NOT write id3v1 tags into the bitstream. + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush_nogap( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * Normally, this is called by lame_init_params(). It writes id3v2 and + * Xing headers into the front of the bitstream, and sets frame counters + * and bitrate histogram data to 0. You can also call this after + * lame_encode_flush_nogap(). + */ +int CDECL lame_init_bitstream( + lame_global_flags * gfp); /* global context handle */ + + + +/* + * OPTIONAL: some simple statistics + * a bitrate histogram to visualize the distribution of used frame sizes + * a stereo mode histogram to visualize the distribution of used stereo + * modes, useful in joint-stereo mode only + * 0: LR left-right encoded + * 1: LR-I left-right and intensity encoded (currently not supported) + * 2: MS mid-side encoded + * 3: MS-I mid-side and intensity encoded (currently not supported) + * + * attention: don't call them after lame_encode_finish + * suggested: lame_encode_flush -> lame_*_hist -> lame_close + */ + +void CDECL lame_bitrate_hist( + const lame_global_flags *const gfp, + int bitrate_count[14] ); +void CDECL lame_bitrate_kbps( + const lame_global_flags *const gfp, + int bitrate_kbps [14] ); +void CDECL lame_stereo_mode_hist( + const lame_global_flags *const gfp, + int stereo_mode_count[4] ); + +void CDECL lame_bitrate_stereo_mode_hist ( + const lame_global_flags * const gfp, + int bitrate_stmode_count [14] [4] ); + +void CDECL lame_block_type_hist ( + const lame_global_flags * const gfp, + int btype_count[6] ); + +void CDECL lame_bitrate_block_type_hist ( + const lame_global_flags * const gfp, + int bitrate_btype_count[14][6] ); + + +/* + * OPTIONAL: + * lame_mp3_tags_fid will append a Xing VBR tag to the mp3 file with file + * pointer fid. These calls perform forward and backwards seeks, so make + * sure fid is a real file. Make sure lame_encode_flush has been called, + * and all mp3 data has been written to the file before calling this + * function. + * NOTE: + * if VBR tags are turned off by the user, or turned off by LAME because + * the output is not a regular file, this call does nothing +*/ +void CDECL lame_mp3_tags_fid(lame_global_flags *,FILE* fid); + + +/* + * REQUIRED: + * final call to free all remaining buffers + */ +int CDECL lame_close (lame_global_flags *); + +/* + * OBSOLETE: + * lame_encode_finish combines lame_encode_flush() and lame_close() in + * one call. However, once this call is made, the statistics routines + * will no longer work because the data will have been cleared, and + * lame_mp3_tags_fid() cannot be called to add data to the VBR header + */ +int CDECL lame_encode_finish( + lame_global_flags* gfp, + unsigned char* mp3buf, + int size ); + + + + + + + +/********************************************************************* + * + * decoding + * + * a simple interface to mpglib, part of mpg123, is also included if + * libmp3lame is compiled with HAVE_MPGLIB + * + *********************************************************************/ +typedef struct { + int header_parsed; /* 1 if header was parsed and following data was + computed */ + int stereo; /* number of channels */ + int samplerate; /* sample rate */ + int bitrate; /* bitrate */ + int mode; /* mp3 frame type */ + int mode_ext; /* mp3 frame type */ + int framesize; /* number of samples per mp3 frame */ + + /* this data is only computed if mpglib detects a Xing VBR header */ + unsigned long nsamp; /* number of samples in mp3 file. */ + int totalframes; /* total number of frames in mp3 file */ + + /* this data is not currently computed by the mpglib routines */ + int framenum; /* frames decoded counter */ +} mp3data_struct; + + +/* required call to initialize decoder + * NOTE: the decoder should not be used when encoding is performed + * with decoding on the fly */ +int CDECL lame_decode_init(void); + +/********************************************************************* + * input 1 mp3 frame, output (maybe) pcm data. + * + * nout = lame_decode(mp3buf,len,pcm_l,pcm_r); + * + * input: + * len : number of bytes of mp3 data in mp3buf + * mp3buf[len] : mp3 data to be decoded + * + * output: + * nout: -1 : decoding error + * 0 : need more data before we can complete the decode + * >0 : returned 'nout' samples worth of data in pcm_l,pcm_r + * pcm_l[nout] : left channel data + * pcm_r[nout] : right channel data + * + *********************************************************************/ +int CDECL lame_decode( + unsigned char * mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode, and also returns mp3 header data */ +int CDECL lame_decode_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode, but returns at most one frame */ +int CDECL lame_decode1( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode1, but returns at most one frame and mp3 header data */ +int CDECL lame_decode1_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode1_headers, but also returns enc_delay and enc_padding + from VBR Info tag, (-1 if no info tag was found) */ +int CDECL lame_decode1_headersB( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data, + int *enc_delay, + int *enc_padding ); + + +/* cleanup call to exit decoder */ +int CDECL lame_decode_exit(void); + + + +/********************************************************************* + * + * id3tag stuff + * + *********************************************************************/ + +/* + * id3tag.h -- Interface to write ID3 version 1 and 2 tags. + * + * Copyright (C) 2000 Don Melton. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +/* utility to obtain alphabetically sorted list of genre names with numbers */ +extern void id3tag_genre_list( + void (*handler)(int, const char *, void *), + void* cookie); + +extern void id3tag_init (lame_global_flags *gfp); + +/* force addition of version 2 tag */ +extern void id3tag_add_v2 (lame_global_flags *gfp); + +/* add only a version 1 tag */ +extern void id3tag_v1_only (lame_global_flags *gfp); + +/* add only a version 2 tag */ +extern void id3tag_v2_only (lame_global_flags *gfp); + +/* pad version 1 tag with spaces instead of nulls */ +extern void id3tag_space_v1 (lame_global_flags *gfp); + +/* pad version 2 tag with extra 128 bytes */ +extern void id3tag_pad_v2 (lame_global_flags *gfp); + +extern void id3tag_set_title( + lame_global_flags* gfp, + const char* title ); +extern void id3tag_set_artist( + lame_global_flags* gfp, + const char* artist ); +extern void id3tag_set_album( + lame_global_flags* gfp, + const char* album ); +extern void id3tag_set_year( + lame_global_flags* gfp, + const char* year ); +extern void id3tag_set_comment( + lame_global_flags* gfp, + const char* comment ); +extern void id3tag_set_track( + lame_global_flags* gfp, + const char* track ); + +/* return non-zero result if genre name or number is invalid */ +extern int id3tag_set_genre( + lame_global_flags* gfp, + const char* genre ); + +/*********************************************************************** +* +* list of valid bitrates [kbps] & sample frequencies [Hz]. +* first index: 0: MPEG-2 values (sample frequencies 16...24 kHz) +* 1: MPEG-1 values (sample frequencies 32...48 kHz) +* 2: MPEG-2.5 values (sample frequencies 8...12 kHz) +***********************************************************************/ +extern const int bitrate_table [3] [16]; +extern const int samplerate_table [3] [ 4]; + + + +/* maximum size of mp3buffer needed if you encode at most 1152 samples for + each call to lame_encode_buffer. see lame_encode_buffer() below + (LAME_MAXMP3BUFFER is now obsolete) */ +#define LAME_MAXMP3BUFFER 16384 + + +typedef enum { + LAME_OKAY = 0, + LAME_NOERROR = 0, + LAME_GENERICERROR = -1, + LAME_NOMEM = -10, + LAME_BADBITRATE = -11, + LAME_BADSAMPFREQ = -12, + LAME_INTERNALERROR = -13, + + FRONTEND_READERROR = -80, + FRONTEND_WRITEERROR = -81, + FRONTEND_FILETOOLARGE = -82 + +} lame_errorcodes_t; + +#if defined(__cplusplus) +} +#endif +#endif /* LAME_LAME_H */ + diff --git a/lame-3.97/install-sh b/lame-3.97/install-sh new file mode 100644 index 0000000..4d4a951 --- /dev/null +++ b/lame-3.97/install-sh @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-05-14.22 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/lame.bat b/lame-3.97/lame.bat new file mode 100755 index 0000000..88c8aa6 --- /dev/null +++ b/lame-3.97/lame.bat @@ -0,0 +1,41 @@ +@echo off +rem --------------------------------------------- +rem PURPOSE: +rem - put this Batch-Command on your Desktop, +rem so you can drag and drop wave files on it +rem and LAME will encode them to mp3 format. +rem - put this Batch-Command in a place mentioned +rem in your PATH environment, start the DOS-BOX +rem and change to a directory where your wave +rem files are located. the following line will +rem encode all your wave files to mp3 +rem "lame.bat *.wav" +rem --------------------------------------------- +rem C2000 Robert Hegemann +rem --------------------------------------------- +rem please set LAME and LAMEOPTS +rem LAME - where the executeable is +rem OPTS - options you like LAME to use + + set LAME=lame.exe + set OPTS=--preset cd + +rem --------------------------------------------- + + set thecmd=%LAME% %OPTS% + lfnfor on +:processArgs + if "%1"=="" goto endmark + for %%f in (%1) do %thecmd% "%%f" + if errorlevel 1 goto errormark + shift + goto processArgs +:errormark + echo. + echo. + echo ERROR processing %1 + echo. +:endmark +rem +rem finished +rem diff --git a/lame-3.97/lame.spec.in b/lame-3.97/lame.spec.in new file mode 100644 index 0000000..0b56f7d --- /dev/null +++ b/lame-3.97/lame.spec.in @@ -0,0 +1,186 @@ +%define name @PACKAGE@ +%define ver @VERSION@ +%define rel 1 +%define prefix %{_usr} +%define docdir %{_defaultdocdir} + +Summary : LAME Ain't an MP3 Encoder... but it's the best. +Summary(fr) : LAME n'est pas un encodeur MP3 ;-> +Name: %{name} +Version: %{ver} +Release: %{rel} +Copyright: LGPL +Vendor: The LAME Project +Packager: Yosi Markovich <yosim@bigfoot.com> +URL: http://www.mp3dev.org/mp3 +Group: Applications/Multimedia +Source: ftp://lame.sourceforge.net/pub/lame/src/%{name}-%{version}.tar.bz2 +BuildRoot: %{_tmppath}/%{name}-root +Requires: ncurses >= 5.0 +BuildRequires: gcc3 = 3.0.1, /usr/bin/find, ncurses-devel +Provides: mp3encoder + +%description +LAME is an educational tool to be used for learning about MP3 encoding. The +goal of the LAME project is to use the open source model to improve the +psycho acoustics, noise shaping and speed of MP3. + +%description -l fr +LAME est un outil d'enseignement pour l'apprentissage de l'encodage MP3. +Le but du projet LAME est d'utiliser un mod�le "open source" afin +d'am�liorer la qualit� et la vitesse du MP3. + + + +%package devel +Summary: Shared and static libraries for LAME. +Group: Development/Libraries +Requires: %{name} = %{version} + +%description devel +LAME is an educational tool to be used for learning about MP3 encoding. +This package contains both the shared and the static libraries from the +LAME project. + +You will also need to install the main lame package in order to install +these libraries. + +%prep -q +%setup -q + +%build + +# Optimize the mother-fucker to the bone +export CC_OPTS="-O3 -march=i386 -mcpu=i686 -fomit-frame-pointer -funroll-loops -ffast-math -finline-functions -Wall -pedantic" + +%ifarch i686 + export CC_OPTS="-O3 -fomit-frame-pointer -mcpu=i686 -march=i686 -malign-functions=4 -funroll-loops -fexpensive-optimizations -fschedule-insns2 -Wall -mfancy-math-387 -pipe" +%endif +%ifarch athlon + export CC_OPTS="-O3 -fomit-frame-pointer -fno-strength-reduce -mcpu=athlon -march=athlon -malign-functions=4 -funroll-loops -fexpensive-optimizations -fschedule-insns2 -Wall -mfancy-math-387 -pipe" +%endif + +# Vorbis makes the build fail for now. . . +rm -f config.cache + +%configure \ + --enable-nasm \ + --enable-decoder \ + --without-vorbis \ + --enable-analyzer=no \ + --enable-brhist \ + --disable-debug + +make CC="gcc3" CFLAGS="${CC_OPTS}" test + +%install +rm -rf %{buildroot} +find . -name CVS | xargs rm -rf +mkdir -p %{buildroot}%{_bindir} +%makeinstall + +ln -sf lame/lame.h %{buildroot}%{_includedir}/lame.h +install -D -m 644 doc/man/lame.1 %{buildroot}%{_mandir}/man/lame.1 + +# move back lame.h +mv %{buildroot}%{_includedir}/lame/lame.h %{buildroot}%{_includedir}/lame.h +find doc/html -name "Makefile*" | xargs rm -f + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%clean +rm -rf %{buildroot} + +%files +%defattr (-,root,root) +%doc COPYING ChangeLog README TODO USAGE doc/html +%doc doc/html +%{_bindir}/lame +%{_libdir}/libmp3lame.so.* +%{_mandir}/man1/lame.1* + +%files devel +%defattr (-, root, root) +%doc API HACKING STYLEGUIDE +%{_libdir}/libmp3lame.a +%{_libdir}/libmp3lame.la +%{_libdir}/libmp3lame.so +%{_includedir}/lame +%{_includedir}/lame.h + +%changelog + +* Sat May 11 2002 Yosi Markovich <yosim@bigfoot.com> +- Fixes to the spec file that include: +- Making sure the compiler is gcc version 3.0.1. Lame compiled with a version + greater than 3.0.1 is broken. +- Optimization flags for i686 will use i686 for march and mcpu, and not + athlon. +- Fix the dates in this Changelog section. +- Various small fixes merged from Matthias Saou. +- Thanks Fred Maciel <fred-m@crl.hitachi.co.jp> for his useful comments. + +- +* Tue Jan 22 2002 Mark Taylor <mt@mp3dev.org> +- replaced lame.spec.in with Yosi's version. Merged some stuff from + the prevous lame.spec.in file, and appended changelog below. + +* Tue Jan 22 2002 Yosi Markovich <yosim@bigfoot.com> +- Rewrote lame.spec.in to create a correct and nice spec file. + imho, this spec file is not good for anyone who wants to build + daily cvs snapshots. Closes bug #495975 + +* Tue Dec 11 2001 Yosi Markovich <yosim@bigfoot.com> +- Shamelessly stole Matthias Saou's excellent spec file to create daily + CVS snapshots of Lame. Other than that, nothing is new. + +* Tue Oct 23 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Fixed the %pre and %post that should have been %post and %postun, silly me! +- Removed -malign-double (it's evil, Yosi told me and I tested, brrr ;-)). +- Now build with gcc3, VBR encoding gets a hell of a boost, impressive! + I recommend you now use "lame --r3mix", it's the best. +- Tried to re-enable vorbis, but it's a no-go. + +* Thu Jul 26 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Build with kgcc to have VBR working. + +* Wed Jul 25 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Update to 3.89beta : Must be built with a non-patched version of nasm + to work! + +* Mon May 7 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Rebuilt for Red Hat 7.1. +- Disabled the vorbis support since it fails to build with it. +- Added a big optimisation section, thanks to Yosi Markovich + <senna@camelot.com> for this and other pointers. + +* Sun Feb 11 2001 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Split the package, there is now a -devel + +* Thu Nov 26 2000 Matthias Saou <matthias.saou@est.une.marmotte.net> +- Initial RPM release for RedHat 7.0 from scratch + +* Wed Nov 21 2000 Eric Lassauge <lassauge@mail.dotcom.fr> +- Updated and corrected RPM to 3.89beta. +- Added french translations + +* Sat Aug 04 2000 Markus Linnala �maage@cs.tut.fi� +- Build and include docs and libs correctly +- Build extra programs + +* Tue Aug 01 2000 Stuart Young �cefiar1@optushome.com.au� +- Updated RPM to 3.85beta. +- Modified spec file (merged George and Keitaro's specs) +- Added reasonable info to the specs to reflect the maintainer +- Renamed lame.spec (plain spec is bad, mmkay?). + +* Fri Jun 30 2000 Keitaro Yosimura �ramsy@linux.or.jp� +- Updated RPM to 3.84alpha. +- Better attempt at an RPM, independant of 3.83 release. +- (This is all surmise as there was no changelog). + +* Thu May 30 2000 Georges Seguin �crow@planete.net� +- First RPM build around 3.83beta + + diff --git a/lame-3.97/lame_projects_vc6.dsp b/lame-3.97/lame_projects_vc6.dsp new file mode 100644 index 0000000..8104dae --- /dev/null +++ b/lame-3.97/lame_projects_vc6.dsp @@ -0,0 +1,78 @@ +# Microsoft Developer Studio Project File - Name="lame_projects" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Generic Project" 0x010a + +CFG=lame_projects - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "lame_projects_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "lame_projects_vc6.mak" CFG="lame_projects - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "lame_projects - Win32 Release" (based on "Win32 (x86) Generic Project") +!MESSAGE "lame_projects - Win32 Debug" (based on "Win32 (x86) Generic Project") +!MESSAGE "lame_projects - Win32 Release NASM" (based on "Win32 (x86) Generic Project") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +MTL=midl.exe + +!IF "$(CFG)" == "lame_projects - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "lame_projects - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "lame_projects - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "lame_projects___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "lame_projects___Win32_Release_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "lame_projects___Win32_Release_NASM" +# PROP Intermediate_Dir "lame_projects___Win32_Release_NASM" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "lame_projects - Win32 Release" +# Name "lame_projects - Win32 Debug" +# Name "lame_projects - Win32 Release NASM" +# End Target +# End Project diff --git a/lame-3.97/lame_vc6.dsw b/lame-3.97/lame_vc6.dsw new file mode 100644 index 0000000..3d8a8f4 --- /dev/null +++ b/lame-3.97/lame_vc6.dsw @@ -0,0 +1,167 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "ADbg"=.\ACM\ADbg\ADbg.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "LameMp3EncDll"=.\Dll\LameDll_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "MP3x"=.\frontend\mp3x_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency +}}} + +############################################################################### + +Project: "lame"=.\frontend\lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "lameACM"=.\ACM\lameACM_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name ADbg + End Project Dependency + Begin Project Dependency + Project_Dep_Name libmp3lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name tinyxml + End Project Dependency + Begin Project Dependency + Project_Dep_Name mpglib + End Project Dependency +}}} + +############################################################################### + +Project: "lame_projects"=.\lame_projects_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name lame + End Project Dependency + Begin Project Dependency + Project_Dep_Name LameMp3EncDll + End Project Dependency + Begin Project Dependency + Project_Dep_Name lameACM + End Project Dependency + Begin Project Dependency + Project_Dep_Name MP3x + End Project Dependency +}}} + +############################################################################### + +Project: "libmp3lame"=.\libmp3lame\libmp3lame_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "mpglib"=.\mpglib\mpglib_vc6.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "tinyxml"=.\ACM\tinyxml\tinyxml.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/lame-3.97/lame_vc7.sln b/lame-3.97/lame_vc7.sln new file mode 100644 index 0000000..e7bea0b --- /dev/null +++ b/lame-3.97/lame_vc7.sln @@ -0,0 +1,176 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmp3lame", "libmp3lame\libmp3lame_vc7.vcproj", "{E316772F-5D8F-4F2A-8F71-094C3E859D34}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lame", "frontend\lame_vc7.vcproj", "{AFE3050F-F561-46A8-AEE0-0C6475EB38D7}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LameMp3EncDll", "Dll\LameDll_vc7.vcproj", "{67C2FFBA-87F8-48B4-8273-D414AF94760F}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpglib", "mpglib\mpglib_vc7.vcproj", "{5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MP3x", "frontend\mp3x_vc7.vcproj", "{EB18C685-0074-4892-840C-E5248B16CFFD}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml", "ACM\tinyxml\tinyxml_vc7.vcproj", "{9A0946C9-F019-4643-A53A-259BF980F5F9}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ADbg", "ACM\ADbg\ADbg_vc7.vcproj", "{4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lameACM", "ACM\lameACM_vc7.vcproj", "{88A0CD70-E576-456B-9C13-1D6AD838B87E}" + ProjectSection(ProjectDependencies) = postProject + {E316772F-5D8F-4F2A-8F71-094C3E859D34} = {E316772F-5D8F-4F2A-8F71-094C3E859D34} + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} = {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421} + {9A0946C9-F019-4643-A53A-259BF980F5F9} = {9A0946C9-F019-4643-A53A-259BF980F5F9} + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1} = {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + ACM debug = ACM debug + ACM release = ACM release + ACM release Nasm = ACM release Nasm + dll debug = dll debug + dll release = dll release + dll release Nasm = dll release Nasm + LAME debug = LAME debug + LAME release = LAME release + LAME release Nasm = LAME release Nasm + Mp3X debug = Mp3X debug + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM debug.ActiveCfg = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM debug.Build.0 = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release.ActiveCfg = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release Nasm.ActiveCfg = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.ACM release Nasm.Build.0 = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll debug.ActiveCfg = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll debug.Build.0 = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release.ActiveCfg = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release Nasm.ActiveCfg = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.dll release Nasm.Build.0 = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME debug.ActiveCfg = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME debug.Build.0 = Debug|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release.ActiveCfg = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release.Build.0 = Release|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release Nasm.ActiveCfg = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.LAME release Nasm.Build.0 = Release NASM|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Mp3X debug.ActiveCfg = Debug GTK|Win32 + {E316772F-5D8F-4F2A-8F71-094C3E859D34}.Mp3X debug.Build.0 = Debug GTK|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.ACM debug.ActiveCfg = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.ACM release.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.ACM release Nasm.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.dll debug.ActiveCfg = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.dll release.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.dll release Nasm.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME debug.ActiveCfg = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME debug.Build.0 = Debug|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release.ActiveCfg = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release.Build.0 = Release|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release Nasm.ActiveCfg = Release NASM|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.LAME release Nasm.Build.0 = Release NASM|Win32 + {AFE3050F-F561-46A8-AEE0-0C6475EB38D7}.Mp3X debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.ACM debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.ACM release.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.ACM release Nasm.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll debug.Build.0 = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release.Build.0 = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release Nasm.ActiveCfg = Release NASM|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.dll release Nasm.Build.0 = Release NASM|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.LAME debug.ActiveCfg = Debug|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.LAME release.ActiveCfg = Release|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {67C2FFBA-87F8-48B4-8273-D414AF94760F}.Mp3X debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.ACM debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.ACM release.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.ACM release Nasm.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll debug.Build.0 = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release Nasm.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.dll release Nasm.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME debug.ActiveCfg = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME debug.Build.0 = Debug|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release Nasm.ActiveCfg = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.LAME release Nasm.Build.0 = Release|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.Mp3X debug.ActiveCfg = Debug GTK|Win32 + {5CCD2FB5-67E2-4C48-8F7B-49F28BF8D421}.Mp3X debug.Build.0 = Debug GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.ACM debug.ActiveCfg = Debug GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.ACM release.ActiveCfg = Release GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.ACM release Nasm.ActiveCfg = Release GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.dll debug.ActiveCfg = dll debug|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.dll release.ActiveCfg = dll release|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.dll release Nasm.ActiveCfg = dll release Nasm|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.LAME debug.ActiveCfg = LAME debug|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.LAME release.ActiveCfg = LAME release|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.Mp3X debug.ActiveCfg = Debug GTK|Win32 + {EB18C685-0074-4892-840C-E5248B16CFFD}.Mp3X debug.Build.0 = Debug GTK|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM debug.ActiveCfg = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM debug.Build.0 = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release.Build.0 = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release Nasm.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.ACM release Nasm.Build.0 = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.dll debug.ActiveCfg = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.dll release.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.dll release Nasm.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.LAME debug.ActiveCfg = Debug|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.LAME release.ActiveCfg = Release|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {9A0946C9-F019-4643-A53A-259BF980F5F9}.Mp3X debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM debug.Build.0 = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release.Build.0 = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release Nasm.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.ACM release Nasm.Build.0 = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.dll debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.dll release.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.dll release Nasm.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.LAME debug.ActiveCfg = Debug|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.LAME release.ActiveCfg = Release|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {4A9EBEED-ACCA-4548-B10A-90524B1CFCD1}.Mp3X debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM debug.Build.0 = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release.Build.0 = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release Nasm.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.ACM release Nasm.Build.0 = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.dll debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.dll release.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.dll release Nasm.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.LAME debug.ActiveCfg = Debug|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.LAME release.ActiveCfg = Release|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.LAME release Nasm.ActiveCfg = LAME release Nasm|Win32 + {88A0CD70-E576-456B-9C13-1D6AD838B87E}.Mp3X debug.ActiveCfg = Debug|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/lame-3.97/libmp3lame/.svn/all-wcprops b/lame-3.97/libmp3lame/.svn/all-wcprops new file mode 100644 index 0000000..fe343d6 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/all-wcprops @@ -0,0 +1,275 @@ +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/328/monitor/trunk/lame-3.97/libmp3lame +END +bitstream.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/bitstream.h +END +quantize.c +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/quantize.c +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/328/monitor/trunk/lame-3.97/libmp3lame/Makefile.in +END +lame-analysis.h +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/lame-analysis.h +END +quantize.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/quantize.h +END +depcomp +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/depcomp +END +takehiro.c +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/takehiro.c +END +libmp3lame_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/libmp3lame_vc6.dsp +END +machine.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/machine.h +END +vbrquantize.c +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/vbrquantize.c +END +util.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/util.c +END +lame.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/lame.c +END +lame_global_flags.h +K 25 +svn:wc:ra_dav:version-url +V 68 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/lame_global_flags.h +END +fft.c +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/fft.c +END +vbrquantize.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/vbrquantize.h +END +reservoir.c +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/reservoir.c +END +gain_analysis.c +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/gain_analysis.c +END +util.h +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/util.h +END +fft.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/fft.h +END +reservoir.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/reservoir.h +END +gain_analysis.h +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/gain_analysis.h +END +quantize_pvt.c +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/quantize_pvt.c +END +mpglib_interface.c +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/mpglib_interface.c +END +set_get.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/set_get.c +END +psymodel.c +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/psymodel.c +END +quantize_pvt.h +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/quantize_pvt.h +END +set_get.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/set_get.h +END +psymodel.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/psymodel.h +END +newmdct.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/newmdct.c +END +newmdct.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/newmdct.h +END +tables.c +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/tables.c +END +id3tag.c +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/id3tag.c +END +encoder.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/encoder.c +END +tables.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/tables.h +END +id3tag.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/id3tag.h +END +encoder.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/encoder.h +END +presets.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/presets.c +END +libmp3lame_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/libmp3lame_vc7.vcproj +END +VbrTag.c +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/VbrTag.c +END +version.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/version.c +END +l3side.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/l3side.h +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/Makefile.am +END +VbrTag.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/VbrTag.h +END +bitstream.c +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/bitstream.c +END +version.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/version.h +END diff --git a/lame-3.97/libmp3lame/.svn/entries b/lame-3.97/libmp3lame/.svn/entries new file mode 100644 index 0000000..2d6476c --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/entries @@ -0,0 +1,1561 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/libmp3lame +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +bitstream.h +file + + + + +2012-01-23T14:07:04.253492Z +be13dba38f6a0bc6f2aabf2f98f9d312 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1409 + +quantize.c +file + + + + +2012-01-23T14:07:04.253492Z +e87fd178de030dc16e0c1e0b7000cbea +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +66495 + +Makefile.in +file + + + + +2012-01-23T14:07:04.254498Z +cceecbab82945d7d4a9f4dd572404ccb +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +29100 + +lame-analysis.h +file + + + + +2012-01-23T14:07:04.255486Z +3d333fd7471d9e5fe4d4c195a697b783 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2635 + +quantize.h +file + + + + +2012-01-23T14:07:04.255486Z +7036a880a4e42fa22430659fe5d4e629 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1308 + +depcomp +file + + + + +2012-01-23T14:07:04.261487Z +d7d8db17e074dcabf513d766b728993d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15936 + +takehiro.c +file + + + + +2012-01-23T14:07:04.261487Z +2bcc9c35cd38e5770a234ed3ec66c370 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +36175 + +libmp3lame_vc6.dsp +file + + + + +2012-01-23T14:07:04.262489Z +652f96728185103b1aae955a5d0a428c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +14669 + +machine.h +file + + + + +2012-01-23T14:07:04.262489Z +a8079fc32406c380db03c4217ac92f77 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3629 + +vbrquantize.c +file + + + + +2012-01-23T14:07:04.263486Z +5bf21be0664840297f284c65871db5b7 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +36257 + +util.c +file + + + + +2012-01-23T14:07:04.263486Z +ac32084ef6543d815f727785558dddb8 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +20969 + +lame.c +file + + + + +2012-01-23T14:07:04.263486Z +c7339da8a953306a420e55320ea71858 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +67898 + +vbrquantize.h +file + + + + +2012-01-23T14:07:04.266447Z +091e8ec2f27850a1669f266a85c54392 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1063 + +lame_global_flags.h +file + + + + +2012-01-23T14:07:04.265484Z +8271ebe3b6086cc28d43c567eaaf7b96 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +8532 + +fft.c +file + + + + +2012-01-23T14:07:04.266447Z +5e11317256848c5b6f6d7c7c2622ed78 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9001 + +reservoir.c +file + + + + +2012-01-23T14:07:04.266447Z +1dfe3f1ea7bb4d39789e909ca7b4f6cf +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9816 + +gain_analysis.c +file + + + + +2012-01-23T14:07:04.266447Z +d26d7ef9da8a3ba728c66e3671487199 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +19020 + +util.h +file + + + + +2012-01-23T14:07:04.267484Z +4b9c4b353a5d93146df93291acfb5fc1 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +18671 + +fft.h +file + + + + +2012-01-23T14:07:04.267484Z +bcb21c2a359b919afc0e9956533904c9 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1216 + +reservoir.h +file + + + + +2012-01-23T14:07:04.267484Z +b163d6346013ab2fa2c61bd8155789c8 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1175 + +gain_analysis.h +file + + + + +2012-01-23T14:07:04.268486Z +9f22615771d312029b02a08ffdbe2aa3 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4530 + +quantize_pvt.c +file + + + + +2012-01-23T14:07:04.268486Z +ca6525e7c1fdf77cde7a5253ecfe941e +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +28632 + +mpglib_interface.c +file + + + + +2012-01-23T14:07:04.269487Z +dbddb035a323115740e59d7d6e3e14ad +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9310 + +set_get.c +file + + + + +2012-01-23T14:07:04.268486Z +abbbdfa381b77510be89b179ea0b916b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +40125 + +psymodel.c +file + + + + +2012-01-23T14:07:04.269487Z +742caa9407d8a6380755a0069a6f5599 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +61948 + +quantize_pvt.h +file + + + + +2012-01-23T14:07:04.270491Z +1743d8345646ca9302ab131ae22eca59 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4692 + +set_get.h +file + + + + +2012-01-23T14:07:04.270491Z +500e774c2a2b3d43672966e652bf563a +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2864 + +psymodel.h +file + + + + +2012-01-23T14:07:04.271487Z +a7abef34eddb743582ddf5deed856727 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2265 + +newmdct.c +file + + + + +2012-01-23T14:07:04.270491Z +f7f16998ab3bf8532929b7d970b0f94b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +31667 + +newmdct.h +file + + + + +2012-01-23T14:07:04.271487Z +d8a9a76c38b048b128051b03025f3774 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +987 + +i386 +dir + +tables.c +file + + + + +2012-01-23T14:07:04.272489Z +967aacac69cd9e02db3ed5dff8325ca4 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +20345 + +id3tag.c +file + + + + +2012-01-23T14:07:04.272489Z +249bf71b6f6d90e5d984da56557af790 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +19035 + +encoder.c +file + + + + +2012-01-23T14:07:04.272489Z +a7080587c585ecaaabebee11699f0494 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +19902 + +tables.h +file + + + + +2012-01-23T14:07:04.273488Z +4251702de49a7278042b1bb51852ed6f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2567 + +id3tag.h +file + + + + +2012-01-23T14:07:04.273488Z +e321f00e9b7be0a939b36cb73cd160de +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +869 + +encoder.h +file + + + + +2012-01-23T14:07:04.274486Z +543cf2026a911ac57bd2deb6021ce2ca +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3866 + +presets.c +file + + + + +2012-01-23T14:07:04.274486Z +5f3885274d00afd7cc4b176e73fc08d4 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +22950 + +libmp3lame_vc7.vcproj +file + + + + +2012-01-23T14:07:04.274486Z +5893069000716d56cd080c3efc7b6859 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +73410 + +VbrTag.c +file + + + + +2012-01-23T14:07:04.275718Z +b57458d4055fae73e17c727337dec7be +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +26886 + +version.c +file + + + + +2012-01-23T14:07:04.275718Z +53d8c4d32d1f90c13a6c3dcb80cd75f6 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +6646 + +l3side.h +file + + + + +2012-01-23T14:07:04.282485Z +fd36190de6e74c1a82453a5770aa0c1b +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2235 + +Makefile.am +file + + + + +2012-01-23T14:07:04.282485Z +09dc039579021dda911e5fb26eff08fa +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1775 + +VbrTag.h +file + + + + +2012-01-23T14:07:04.282485Z +6cb477478f353f798a261d79c5db7ffb +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3096 + +bitstream.c +file + + + + +2012-01-23T14:07:04.283489Z +24bbf8f533303da92f90575677f934d6 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +29904 + +version.h +file + + + + +2012-01-23T14:07:04.283489Z +b786271748252cb8a88f97fb376fb6cb +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2195 + diff --git a/lame-3.97/libmp3lame/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/VbrTag.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/VbrTag.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/VbrTag.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/bitstream.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/bitstream.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/bitstream.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/encoder.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/encoder.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/encoder.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/fft.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/fft.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/fft.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/gain_analysis.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/gain_analysis.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/gain_analysis.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/id3tag.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/id3tag.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/id3tag.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/l3side.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/l3side.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/l3side.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/lame-analysis.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/lame-analysis.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/lame-analysis.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/lame_global_flags.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/lame_global_flags.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/lame_global_flags.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/machine.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/machine.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/machine.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/newmdct.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/newmdct.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/newmdct.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/psymodel.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/psymodel.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/psymodel.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/quantize.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/quantize.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/quantize.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/quantize_pvt.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/quantize_pvt.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/quantize_pvt.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/reservoir.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/reservoir.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/reservoir.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/set_get.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/set_get.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/set_get.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/tables.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/tables.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/tables.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/util.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/util.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/util.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/vbrquantize.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/vbrquantize.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/vbrquantize.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/prop-base/version.h.svn-base b/lame-3.97/libmp3lame/.svn/prop-base/version.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/prop-base/version.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/.svn/text-base/Makefile.am.svn-base b/lame-3.97/libmp3lame/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..09c5ce9 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,98 @@ +## $Id: Makefile.am,v 1.33 2005/08/21 17:32:09 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +SUBDIRS = i386 + +lib_LTLIBRARIES = libmp3lame.la + +if HAVE_NASM +nasm_ldadd = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la +else +nasm_ldadd = +endif + +if LIB_WITH_DECODER +decoder_ldadd = $(top_builddir)/mpglib/libmpgdecoder.la +else +decoder_ldadd = +endif + +libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd) +libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \ + -no-undefined + +INCLUDES = @INCLUDES@ -I$(top_srcdir)/mpglib -I$(top_builddir) + +DEFS = @DEFS@ @CONFIG_DEFS@ + +EXTRA_DIST = \ + libmp3lame_vc6.dsp \ + libmp3lame_vc7.vcproj \ + vbrquantize.h + +libmp3lame_la_SOURCES = \ + VbrTag.c \ + bitstream.c \ + encoder.c \ + fft.c \ + gain_analysis.c \ + id3tag.c \ + lame.c \ + newmdct.c \ + presets.c \ + psymodel.c \ + quantize.c \ + quantize_pvt.c \ + reservoir.c \ + set_get.c \ + tables.c \ + takehiro.c \ + util.c \ + vbrquantize.c \ + version.c \ + mpglib_interface.c + +noinst_HEADERS= \ + VbrTag.h \ + bitstream.h \ + encoder.h \ + fft.h \ + gain_analysis.h \ + id3tag.h \ + l3side.h \ + lame-analysis.h \ + lame_global_flags.h \ + machine.h \ + newmdct.h \ + psymodel.h \ + quantize.h \ + quantize_pvt.h \ + reservoir.h \ + set_get.h \ + tables.h \ + util.h \ + vbrquantize.h \ + version.h + +CLEANFILES = lclint.txt + +LCLINTFLAGS= \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +lclint.txt: ${libmp3lame_la_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmp3lame_la_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/lame-3.97/libmp3lame/.svn/text-base/Makefile.in.svn-base b/lame-3.97/libmp3lame/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..0dda407 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,763 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global depcomp +subdir = libmp3lame +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +@HAVE_NASM_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la +@LIB_WITH_DECODER_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/mpglib/libmpgdecoder.la +libmp3lame_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_2) +am_libmp3lame_la_OBJECTS = VbrTag$U.lo bitstream$U.lo encoder$U.lo \ + fft$U.lo gain_analysis$U.lo id3tag$U.lo lame$U.lo newmdct$U.lo \ + presets$U.lo psymodel$U.lo quantize$U.lo quantize_pvt$U.lo \ + reservoir$U.lo set_get$U.lo tables$U.lo takehiro$U.lo \ + util$U.lo vbrquantize$U.lo version$U.lo mpglib_interface$U.lo +libmp3lame_la_OBJECTS = $(am_libmp3lame_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libmp3lame_la_SOURCES) +DIST_SOURCES = $(libmp3lame_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ -I$(top_srcdir)/mpglib -I$(top_builddir) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +SUBDIRS = i386 +lib_LTLIBRARIES = libmp3lame.la +@HAVE_NASM_FALSE@nasm_ldadd = +@HAVE_NASM_TRUE@nasm_ldadd = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la +@LIB_WITH_DECODER_FALSE@decoder_ldadd = +@LIB_WITH_DECODER_TRUE@decoder_ldadd = $(top_builddir)/mpglib/libmpgdecoder.la +libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd) +libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \ + -no-undefined + +EXTRA_DIST = \ + libmp3lame_vc6.dsp \ + libmp3lame_vc7.vcproj \ + vbrquantize.h + +libmp3lame_la_SOURCES = \ + VbrTag.c \ + bitstream.c \ + encoder.c \ + fft.c \ + gain_analysis.c \ + id3tag.c \ + lame.c \ + newmdct.c \ + presets.c \ + psymodel.c \ + quantize.c \ + quantize_pvt.c \ + reservoir.c \ + set_get.c \ + tables.c \ + takehiro.c \ + util.c \ + vbrquantize.c \ + version.c \ + mpglib_interface.c + +noinst_HEADERS = \ + VbrTag.h \ + bitstream.h \ + encoder.h \ + fft.h \ + gain_analysis.h \ + id3tag.h \ + l3side.h \ + lame-analysis.h \ + lame_global_flags.h \ + machine.h \ + newmdct.h \ + psymodel.h \ + quantize.h \ + quantize_pvt.h \ + reservoir.h \ + set_get.h \ + tables.h \ + util.h \ + vbrquantize.h \ + version.h + +CLEANFILES = lclint.txt +LCLINTFLAGS = \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmp3lame/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign libmp3lame/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libmp3lame.la: $(libmp3lame_la_OBJECTS) $(libmp3lame_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libmp3lame_la_LDFLAGS) $(libmp3lame_la_OBJECTS) $(libmp3lame_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VbrTag$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitstream$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoder$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fft$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gain_analysis$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3tag$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lame$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpglib_interface$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmdct$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/presets$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psymodel$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantize$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantize_pvt$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reservoir$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_get$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tables$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/takehiro$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vbrquantize$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version$U.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +VbrTag_.c: VbrTag.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/VbrTag.c; then echo $(srcdir)/VbrTag.c; else echo VbrTag.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +bitstream_.c: bitstream.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/bitstream.c; then echo $(srcdir)/bitstream.c; else echo bitstream.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +encoder_.c: encoder.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/encoder.c; then echo $(srcdir)/encoder.c; else echo encoder.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +fft_.c: fft.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fft.c; then echo $(srcdir)/fft.c; else echo fft.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +gain_analysis_.c: gain_analysis.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gain_analysis.c; then echo $(srcdir)/gain_analysis.c; else echo gain_analysis.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +id3tag_.c: id3tag.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/id3tag.c; then echo $(srcdir)/id3tag.c; else echo id3tag.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +lame_.c: lame.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lame.c; then echo $(srcdir)/lame.c; else echo lame.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +mpglib_interface_.c: mpglib_interface.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mpglib_interface.c; then echo $(srcdir)/mpglib_interface.c; else echo mpglib_interface.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +newmdct_.c: newmdct.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/newmdct.c; then echo $(srcdir)/newmdct.c; else echo newmdct.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +presets_.c: presets.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/presets.c; then echo $(srcdir)/presets.c; else echo presets.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +psymodel_.c: psymodel.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/psymodel.c; then echo $(srcdir)/psymodel.c; else echo psymodel.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +quantize_.c: quantize.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quantize.c; then echo $(srcdir)/quantize.c; else echo quantize.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +quantize_pvt_.c: quantize_pvt.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quantize_pvt.c; then echo $(srcdir)/quantize_pvt.c; else echo quantize_pvt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +reservoir_.c: reservoir.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reservoir.c; then echo $(srcdir)/reservoir.c; else echo reservoir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +set_get_.c: set_get.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/set_get.c; then echo $(srcdir)/set_get.c; else echo set_get.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +tables_.c: tables.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tables.c; then echo $(srcdir)/tables.c; else echo tables.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +takehiro_.c: takehiro.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/takehiro.c; then echo $(srcdir)/takehiro.c; else echo takehiro.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +util_.c: util.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/util.c; then echo $(srcdir)/util.c; else echo util.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +vbrquantize_.c: vbrquantize.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vbrquantize.c; then echo $(srcdir)/vbrquantize.c; else echo vbrquantize.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +version_.c: version.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/version.c; then echo $(srcdir)/version.c; else echo version.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +VbrTag_.$(OBJEXT) VbrTag_.lo bitstream_.$(OBJEXT) bitstream_.lo \ +encoder_.$(OBJEXT) encoder_.lo fft_.$(OBJEXT) fft_.lo \ +gain_analysis_.$(OBJEXT) gain_analysis_.lo id3tag_.$(OBJEXT) \ +id3tag_.lo lame_.$(OBJEXT) lame_.lo mpglib_interface_.$(OBJEXT) \ +mpglib_interface_.lo newmdct_.$(OBJEXT) newmdct_.lo presets_.$(OBJEXT) \ +presets_.lo psymodel_.$(OBJEXT) psymodel_.lo quantize_.$(OBJEXT) \ +quantize_.lo quantize_pvt_.$(OBJEXT) quantize_pvt_.lo \ +reservoir_.$(OBJEXT) reservoir_.lo set_get_.$(OBJEXT) set_get_.lo \ +tables_.$(OBJEXT) tables_.lo takehiro_.$(OBJEXT) takehiro_.lo \ +util_.$(OBJEXT) util_.lo vbrquantize_.$(OBJEXT) vbrquantize_.lo \ +version_.$(OBJEXT) version_.lo : $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-recursive ctags ctags-recursive distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLTLIBRARIES install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-kr mostlyclean-libtool \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-libLTLIBRARIES + + +# end global section + +lclint.txt: ${libmp3lame_la_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmp3lame_la_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/libmp3lame/.svn/text-base/VbrTag.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/VbrTag.c.svn-base new file mode 100644 index 0000000..81c5e40 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/VbrTag.c.svn-base @@ -0,0 +1,980 @@ +/* + * Xing VBR tagging for LAME. + * + * Copyright (c) 1999 A.L. Faber + * Copyright (c) 2001 Jonathan Dee + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: VbrTag.c,v 1.80.2.2 2005/11/27 10:20:35 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "machine.h" +#include "bitstream.h" +#include "lame.h" +#include "VbrTag.h" +#include "version.h" + +#include <assert.h> + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include <unistd.h> +#endif + + +#ifdef _DEBUG +/* #define DEBUG_VBRTAG */ +#endif + +/* + * 4 bytes for Header Tag + * 4 bytes for Header Flags + * 100 bytes for entry (NUMTOCENTRIES) + * 4 bytes for FRAME SIZE + * 4 bytes for STREAM_SIZE + * 4 bytes for VBR SCALE. a VBR quality indicator: 0=best 100=worst + * 20 bytes for LAME tag. for example, "LAME3.12 (beta 6)" + * ___________ + * 140 bytes +*/ +#define VBRHEADERSIZE (NUMTOCENTRIES+4+4+4+4+4) + +#define LAMEHEADERSIZE (VBRHEADERSIZE + 9 + 1 + 1 + 8 + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2) + +/* the size of the Xing header (MPEG1 and MPEG2) in kbps */ +#define XING_BITRATE1 128 +#define XING_BITRATE2 64 +#define XING_BITRATE25 32 + + + +const static char VBRTag0[]={"Xing"}; +const static char VBRTag1[]={"Info"}; + + + + +/* Lookup table for fast CRC computation + * See 'CRC_update_lookup' + * Uses the polynomial x^16+x^15+x^2+1 */ + +unsigned int crc16_lookup[256] = +{ + 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, + 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, + 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, + 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, + 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, + 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, + 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, + 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, + 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, + 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, + 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, + 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, + 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, + 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, + 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, + 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, + 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, + 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, + 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, + 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, + 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, + 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, + 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, + 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, + 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, + 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, + 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, + 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, + 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, + 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, + 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, + 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 +}; + + + + + +/*********************************************************************** + * Robert Hegemann 2001-01-17 + ***********************************************************************/ + +static void addVbr(VBR_seek_info_t * v, int bitrate) +{ + int i; + + v->sum += bitrate; + v->seen ++; + + if (v->seen < v->want) { + return; + } + + if (v->pos < v->size) { + v->bag[v->pos] = v->sum; + v->pos ++; + v->seen = 0; + } + if (v->pos == v->size) { + for (i = 1; i < v->size; i += 2) { + v->bag[i/2] = v->bag[i]; + } + v->want *= 2; + v->pos /= 2; + } +} + +static void Xing_seek_table(VBR_seek_info_t * v, unsigned char *t) +{ + int i, index; + int seek_point; + + if (v->pos <= 0) + return; + + for (i = 1; i < NUMTOCENTRIES; ++i) { + float j = i/(float)NUMTOCENTRIES, act, sum; + index = (int)(floor(j * v->pos)); + if (index > v->pos-1) + index = v->pos-1; + act = v->bag[index]; + sum = v->sum; + seek_point = (int)(256. * act / sum); + if (seek_point > 255) + seek_point = 255; + t[i] = seek_point; + } +} + +void print_seeking(unsigned char *t) +{ + int i; + + printf("seeking table "); + for (i = 0; i < NUMTOCENTRIES; ++i) { + printf(" %d ", t[i]); + } + printf("\n"); +} + + + +/**************************************************************************** + * AddVbrFrame: Add VBR entry, used to fill the VBR the TOC entries + * Paramters: + * nStreamPos: how many bytes did we write to the bitstream so far + * (in Bytes NOT Bits) + **************************************************************************** +*/ +void AddVbrFrame(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + int kbps = bitrate_table[gfp->version][gfc->bitrate_index]; + assert(gfc->VBR_seek_table.bag); + addVbr(&gfc->VBR_seek_table, kbps); + gfp->nVbrNumFrames++; +} + + +/*-------------------------------------------------------------*/ +static int ExtractI4(unsigned char *buf) +{ + int x; + /* big endian extract */ + x = buf[0]; + x <<= 8; + x |= buf[1]; + x <<= 8; + x |= buf[2]; + x <<= 8; + x |= buf[3]; + return x; +} + +static void CreateI4(unsigned char *buf, int nValue) +{ + /* big endian create */ + buf[0]=(nValue>>24)&0xff; + buf[1]=(nValue>>16)&0xff; + buf[2]=(nValue>> 8)&0xff; + buf[3]=(nValue )&0xff; +} + + + +static void CreateI2(unsigned char *buf, int nValue) +{ + /* big endian create */ + buf[0]=(nValue>> 8)&0xff; + buf[1]=(nValue )&0xff; +} + +/* check for magic strings*/ +int IsVbrTag(const unsigned char* buf) +{ + int isTag0, isTag1; + + isTag0 = ((buf[0]==VBRTag0[0]) && (buf[1]==VBRTag0[1]) && (buf[2]==VBRTag0[2]) && (buf[3]==VBRTag0[3])); + isTag1 = ((buf[0]==VBRTag1[0]) && (buf[1]==VBRTag1[1]) && (buf[2]==VBRTag1[2]) && (buf[3]==VBRTag1[3])); + + return (isTag0 || isTag1); +} + + +/*-------------------------------------------------------------*/ +/* Same as GetVbrTag below, but only checks for the Xing tag. + requires buf to contain only 40 bytes */ +/*-------------------------------------------------------------*/ +int CheckVbrTag(unsigned char *buf) +{ + int h_id, h_mode, h_sr_index; + + /* get selected MPEG header data */ + h_id = (buf[1] >> 3) & 1; + h_sr_index = (buf[2] >> 2) & 3; + h_mode = (buf[3] >> 6) & 3; + + /* determine offset of header */ + if( h_id ) + { + /* mpeg1 */ + if( h_mode != 3 ) buf+=(32+4); + else buf+=(17+4); + } + else + { + /* mpeg2 */ + if( h_mode != 3 ) buf+=(17+4); + else buf+=(9+4); + } + + return IsVbrTag(buf); +} + +int GetVbrTag(VBRTAGDATA *pTagData, unsigned char *buf) +{ + int i, head_flags; + int h_bitrate,h_id, h_mode, h_sr_index; + int enc_delay,enc_padding; + + /* get Vbr header data */ + pTagData->flags = 0; + + /* get selected MPEG header data */ + h_id = (buf[1] >> 3) & 1; + h_sr_index = (buf[2] >> 2) & 3; + h_mode = (buf[3] >> 6) & 3; + h_bitrate = ((buf[2]>>4)&0xf); + h_bitrate = bitrate_table[h_id][h_bitrate]; + + /* check for FFE syncword */ + if ((buf[1]>>4)==0xE) + pTagData->samprate = samplerate_table[2][h_sr_index]; + else + pTagData->samprate = samplerate_table[h_id][h_sr_index]; + /* if( h_id == 0 ) */ + /* pTagData->samprate >>= 1; */ + + + + /* determine offset of header */ + if( h_id ) + { + /* mpeg1 */ + if( h_mode != 3 ) buf+=(32+4); + else buf+=(17+4); + } + else + { + /* mpeg2 */ + if( h_mode != 3 ) buf+=(17+4); + else buf+=(9+4); + } + + if (!IsVbrTag(buf)) + return 0; + + buf+=4; + + pTagData->h_id = h_id; + + head_flags = pTagData->flags = ExtractI4(buf); buf+=4; /* get flags */ + + if( head_flags & FRAMES_FLAG ) + { + pTagData->frames = ExtractI4(buf); buf+=4; + } + + if( head_flags & BYTES_FLAG ) + { + pTagData->bytes = ExtractI4(buf); buf+=4; + } + + if( head_flags & TOC_FLAG ) + { + if( pTagData->toc != NULL ) + { + for(i=0;i<NUMTOCENTRIES;i++) + pTagData->toc[i] = buf[i]; + } + buf+=NUMTOCENTRIES; + } + + pTagData->vbr_scale = -1; + + if( head_flags & VBR_SCALE_FLAG ) + { + pTagData->vbr_scale = ExtractI4(buf); buf+=4; + } + + pTagData->headersize = + ((h_id+1)*72000*h_bitrate) / pTagData->samprate; + + buf+=21; + enc_delay = buf[0] << 4; + enc_delay += buf[1] >> 4; + enc_padding= (buf[1] & 0x0F)<<8; + enc_padding += buf[2]; + /* check for reasonable values (this may be an old Xing header, */ + /* not a INFO tag) */ + if (enc_delay<0 || enc_delay > 3000) enc_delay=-1; + if (enc_padding<0 || enc_padding > 3000) enc_padding=-1; + + pTagData->enc_delay=enc_delay; + pTagData->enc_padding=enc_padding; + +#ifdef DEBUG_VBRTAG + fprintf(stderr,"\n\n********************* VBR TAG INFO *****************\n"); + fprintf(stderr,"tag :%s\n",VBRTag); + fprintf(stderr,"head_flags :%d\n",head_flags); + fprintf(stderr,"bytes :%d\n",pTagData->bytes); + fprintf(stderr,"frames :%d\n",pTagData->frames); + fprintf(stderr,"VBR Scale :%d\n",pTagData->vbr_scale); + fprintf(stderr,"enc_delay = %i \n",enc_delay); + fprintf(stderr,"enc_padding= %i \n",enc_padding); + fprintf(stderr,"toc:\n"); + if( pTagData->toc != NULL ) + { + for(i=0;i<NUMTOCENTRIES;i++) + { + if( (i%10) == 0 ) fprintf(stderr,"\n"); + fprintf(stderr," %3d", (int)(pTagData->toc[i])); + } + } + fprintf(stderr,"\n***************** END OF VBR TAG INFO ***************\n"); +#endif + return 1; /* success */ +} + + +/**************************************************************************** + * InitVbrTag: Initializes the header, and write empty frame to stream + * Paramters: + * fpStream: pointer to output file stream + * nMode : Channel Mode: 0=STEREO 1=JS 2=DS 3=MONO + **************************************************************************** +*/ +int InitVbrTag(lame_global_flags *gfp) +{ + int nMode,SampIndex; + int i,kbps_header,tot; + lame_internal_flags *gfc = gfp->internal_flags; +#define MAXFRAMESIZE 2880 /* or 0xB40, the max freeformat 640 32kHz framesize */ + /* uint8_t pbtStreamBuffer[MAXFRAMESIZE]; */ + nMode = gfp->mode; + SampIndex = gfc->samplerate_index; + + + + gfp->nVbrNumFrames=0; + /*gfp->nVbrFrameBufferSize=0;*/ + + + /* Clear stream buffer */ + /* memset(pbtStreamBuffer,0x00,sizeof(pbtStreamBuffer)); */ + + + + /* + * Xing VBR pretends to be a 48kbs layer III frame. (at 44.1kHz). + * (at 48kHz they use 56kbs since 48kbs frame not big enough for + * table of contents) + * let's always embed Xing header inside a 64kbs layer III frame. + * this gives us enough room for a LAME version string too. + * size determined by sampling frequency (MPEG1) + * 32kHz: 216 bytes@48kbs 288bytes@ 64kbs + * 44.1kHz: 156 bytes 208bytes@64kbs (+1 if padding = 1) + * 48kHz: 144 bytes 192 + * + * MPEG 2 values are the same since the framesize and samplerate + * are each reduced by a factor of 2. + */ + + + if (1==gfp->version) { + kbps_header = XING_BITRATE1; + } else { + if (gfp->out_samplerate < 16000 ) + kbps_header = XING_BITRATE25; + else + kbps_header = XING_BITRATE2; + } + + if (gfp->VBR==vbr_off) + kbps_header = gfp->brate; + + gfp->TotalFrameSize= + ((gfp->version+1)*72000*kbps_header) / gfp->out_samplerate; + + tot = (gfc->sideinfo_len+LAMEHEADERSIZE); + + if (gfp->TotalFrameSize < tot || + gfp->TotalFrameSize > MAXFRAMESIZE ) { + /* disable tag, it wont fit */ + gfp->bWriteVbrTag = 0; + return 0; + } + + /* write dummy VBR tag of all 0's into bitstream */ + for (i=0; i<gfp->TotalFrameSize; ++i) + add_dummy_byte(gfp,0); + + + gfc->VBR_seek_table.sum = 0; + + gfc->VBR_seek_table.seen = 0; + gfc->VBR_seek_table.want = 1; + gfc->VBR_seek_table.pos = 0; + + if (gfc->VBR_seek_table.bag == NULL) { + gfc->VBR_seek_table.bag = malloc (400*sizeof(int)); + if (gfc->VBR_seek_table.bag != NULL) { + gfc->VBR_seek_table.size = 400; + } + else { + gfc->VBR_seek_table.size = 0; + ERRORF (gfc,"Error: can't allocate VbrFrames buffer\n"); + return -1; + } + } + /* Success */ + return 0; +} + + + +/* fast CRC-16 computation - uses table crc16_lookup 8*/ +int CRC_update_lookup(int value, int crc) +{ + int tmp; + tmp=crc^value; + crc=(crc>>8)^crc16_lookup[tmp & 0xff]; + return crc; +} + +void UpdateMusicCRC(uint16_t *crc,unsigned char *buffer, int size){ + int i; + for (i=0; i<size; ++i) + *crc = CRC_update_lookup(buffer[i],*crc); +} + + + + + +/**************************************************************************** + * Jonathan Dee 2001/08/31 + * + * PutLameVBR: Write LAME info: mini version + info on various switches used + * Paramters: + * pbtStreamBuffer : pointer to output buffer + * id3v2size : size of id3v2 tag in bytes + * crc : computation of crc-16 of Lame Tag so far (starting at frame sync) + * + **************************************************************************** +*/ +int PutLameVBR(lame_global_flags *gfp, FILE *fpStream, uint8_t *pbtStreamBuffer, uint32_t id3v2size, uint16_t crc) +{ + lame_internal_flags *gfc = gfp->internal_flags; +/* FLOAT fVersion = LAME_MAJOR_VERSION + 0.01 * LAME_MINOR_VERSION; */ + + int nBytesWritten = 0; + int nFilesize = 0; /*size of fpStream. Will be equal to size after process finishes. */ + int i; + + int enc_delay=lame_get_encoder_delay(gfp); /* encoder delay */ + int enc_padding=lame_get_encoder_padding(gfp); /* encoder padding */ + + /*recall: gfp->VBR_q is for example set by the switch -V */ + /* gfp->quality by -q, -h, -f, etc */ + + int nQuality = (100 - 10 * gfp->VBR_q - gfp->quality); + + + const char *szVersion = get_lame_very_short_version(); + uint8_t nVBR; + uint8_t nRevision = 0x00; + uint8_t nRevMethod; + uint8_t vbr_type_translator[] = {1,5,3,2,4,0,3}; /*numbering different in vbr_mode vs. Lame tag */ + + uint8_t nLowpass = ( ((gfp->lowpassfreq / 100.0)+.5) > 255 ? 255 : (gfp->lowpassfreq / 100.0)+.5 ); + + uint32_t nPeakSignalAmplitude = 0; + + uint16_t nRadioReplayGain = 0; + uint16_t nAudiophileReplayGain = 0; + + uint8_t nNoiseShaping = gfp->internal_flags->noise_shaping; + uint8_t nStereoMode = 0; + int bNonOptimal = 0; + uint8_t nSourceFreq = 0; + uint8_t nMisc = 0; + uint32_t nMusicLength = 0; + int bId3v1Present = ((gfp->internal_flags->tag_spec.flags & CHANGED_FLAG) + && !(gfp->internal_flags->tag_spec.flags & V2_ONLY_FLAG)); + uint16_t nMusicCRC = 0; + + /*psy model type: Gpsycho or NsPsytune */ + unsigned char bExpNPsyTune = gfp->exp_nspsytune & 1; + unsigned char bSafeJoint = (gfp->exp_nspsytune & 2)!=0; + + unsigned char bNoGapMore = 0; + unsigned char bNoGapPrevious = 0; + + int nNoGapCount = gfp->internal_flags->nogap_total; + int nNoGapCurr = gfp->internal_flags->nogap_current; + + + uint8_t nAthType = gfp->ATHtype; /*4 bits. */ + + uint8_t nFlags = 0; + + /* if ABR, {store bitrate <=255} else { store "-b"} */ + int nABRBitrate; + switch (gfp->VBR) { + case vbr_abr:{ + nABRBitrate = gfp->VBR_mean_bitrate_kbps; + break; + } + case vbr_off:{ + nABRBitrate = gfp->brate; + break; + } + default:{ /*vbr modes*/ + nABRBitrate = gfp->VBR_min_bitrate_kbps; + } + } + + + /*revision and vbr method */ + if (gfp->VBR>=0 && gfp->VBR < sizeof(vbr_type_translator)) + nVBR = vbr_type_translator[gfp->VBR]; + else + nVBR = 0x00; /*unknown. */ + + nRevMethod = 0x10 * nRevision + nVBR; + + + /* ReplayGain */ + if (gfc->findReplayGain) { + if (gfc->RadioGain > 0x1FE) + gfc->RadioGain = 0x1FE; + if (gfc->RadioGain < -0x1FE) + gfc->RadioGain = -0x1FE; + + nRadioReplayGain = 0x2000; /* set name code */ + nRadioReplayGain |= 0xC00; /* set originator code to `determined automatically' */ + + if (gfc->RadioGain >= 0) + nRadioReplayGain |= gfc->RadioGain; /* set gain adjustment */ + else { + nRadioReplayGain |= 0x200; /* set the sign bit */ + nRadioReplayGain |= -gfc->RadioGain; /* set gain adjustment */ + } + } + + /* peak sample */ + if(gfc->findPeakSample) + nPeakSignalAmplitude = abs((int)((((FLOAT)gfc->PeakSample) / 32767.0 ) * pow(2,23) +.5)); + + /*nogap */ + if (nNoGapCount != -1) + { + if (nNoGapCurr > 0) + bNoGapPrevious = 1; + + if (nNoGapCurr < nNoGapCount-1) + bNoGapMore = 1; + } + + /*flags */ + + nFlags = nAthType + (bExpNPsyTune << 4) + + (bSafeJoint << 5) + + (bNoGapMore << 6) + + (bNoGapPrevious << 7); + + + if (nQuality < 0) + nQuality = 0; + + /*stereo mode field... a bit ugly.*/ + + switch(gfp->mode) + { + case MONO: + nStereoMode = 0; + break; + case STEREO: + nStereoMode = 1; + break; + case DUAL_CHANNEL: + nStereoMode = 2; + break; + case JOINT_STEREO: + if (gfp->force_ms) + nStereoMode = 4; + else + nStereoMode = 3; + break; + case NOT_SET: + /* FALLTHROUGH */ + default: + nStereoMode = 7; + break; + } + + /*Intensity stereo : nStereoMode = 6. IS is not implemented */ + + if (gfp->in_samplerate <= 32000) + nSourceFreq = 0x00; + else if (gfp->in_samplerate ==48000) + nSourceFreq = 0x02; + else if (gfp->in_samplerate > 48000) + nSourceFreq = 0x03; + else + nSourceFreq = 0x01; /*default is 44100Hz. */ + + + /*Check if the user overrided the default LAME behaviour with some nasty options */ + + if (gfp->short_blocks == short_block_forced || + gfp->short_blocks == short_block_dispensed || + ((gfp->lowpassfreq == -1) && (gfp->highpassfreq == -1)) || /* "-k" */ + (gfp->scale_left != gfp->scale_right) || + (gfp->disable_reservoir && gfp->brate < 320) || + gfp->noATH || + gfp->ATHonly || + (nAthType == 0) || + gfp->in_samplerate <= 32000) + bNonOptimal = 1; + + nMisc = nNoiseShaping + + (nStereoMode << 2) + + (bNonOptimal << 5) + + (nSourceFreq << 6); + + + + /*get filesize */ + fseek(fpStream, 0, SEEK_END); + nFilesize = ftell(fpStream); + + + nMusicLength = nFilesize - id3v2size; /*omit current frame */ + if (bId3v1Present) + nMusicLength-=128; /*id3v1 present. */ + nMusicCRC = gfc->nMusicCRC; + + + /*Write all this information into the stream*/ + CreateI4(&pbtStreamBuffer[nBytesWritten], nQuality); + nBytesWritten+=4; + + strncpy(&pbtStreamBuffer[nBytesWritten], szVersion, 9); + nBytesWritten+=9; + + pbtStreamBuffer[nBytesWritten] = nRevMethod ; + nBytesWritten++; + + pbtStreamBuffer[nBytesWritten] = nLowpass; + nBytesWritten++; + + CreateI4(&pbtStreamBuffer[nBytesWritten], nPeakSignalAmplitude); + nBytesWritten+=4; + + CreateI2(&pbtStreamBuffer[nBytesWritten],nRadioReplayGain); + nBytesWritten+=2; + + CreateI2(&pbtStreamBuffer[nBytesWritten],nAudiophileReplayGain); + nBytesWritten+=2; + + pbtStreamBuffer[nBytesWritten] = nFlags; + nBytesWritten++; + + if (nABRBitrate >= 255) + pbtStreamBuffer[nBytesWritten] = 0xFF; + else + pbtStreamBuffer[nBytesWritten] = nABRBitrate; + nBytesWritten++; + + pbtStreamBuffer[nBytesWritten ] = enc_delay >> 4; /* works for win32, does it for unix? */ + pbtStreamBuffer[nBytesWritten +1] = (enc_delay << 4) + (enc_padding >> 8); + pbtStreamBuffer[nBytesWritten +2] = enc_padding; + + nBytesWritten+=3; + + pbtStreamBuffer[nBytesWritten] = nMisc; + nBytesWritten++; + + + pbtStreamBuffer[nBytesWritten++] = 0; /*unused in rev0 */ + + CreateI2(&pbtStreamBuffer[nBytesWritten], gfp->preset); + nBytesWritten+=2; + + CreateI4(&pbtStreamBuffer[nBytesWritten], nMusicLength); + nBytesWritten+=4; + + CreateI2(&pbtStreamBuffer[nBytesWritten], nMusicCRC); + nBytesWritten+=2; + + /*Calculate tag CRC.... must be done here, since it includes + *previous information*/ + + for (i = 0;i<nBytesWritten;i++) + crc = CRC_update_lookup(pbtStreamBuffer[i], crc); + + CreateI2(&pbtStreamBuffer[nBytesWritten], crc); + nBytesWritten+=2; + + return nBytesWritten; +} + +/*********************************************************************** + * + * PutVbrTag: Write final VBR tag to the file + * Paramters: + * lpszFileName: filename of MP3 bit stream + * nVbrScale : encoder quality indicator (0..100) + **************************************************************************** +*/ +int PutVbrTag(lame_global_flags *gfp,FILE *fpStream,int nVbrScale) +{ + lame_internal_flags * gfc = gfp->internal_flags; + + long lFileSize; + int nStreamIndex; + char abyte,bbyte; + uint8_t btToc[NUMTOCENTRIES]; + uint8_t pbtStreamBuffer[MAXFRAMESIZE]; + + int i; + uint16_t crc = 0x00; + + unsigned char id3v2Header[10]; + size_t id3v2TagSize; + + if (gfc->VBR_seek_table.pos <= 0) + return -1; + + + /* Clear stream buffer */ + memset(pbtStreamBuffer,0x00,sizeof(pbtStreamBuffer)); + + /* Seek to end of file*/ + fseek(fpStream,0,SEEK_END); + + /* Get file size */ + lFileSize=ftell(fpStream); + + /* Abort if file has zero length. Yes, it can happen :) */ + if (lFileSize==0) + return -1; + + /* + * The VBR tag may NOT be located at the beginning of the stream. + * If an ID3 version 2 tag was added, then it must be skipped to write + * the VBR tag data. + */ + + /* seek to the beginning of the stream */ + fseek(fpStream,0,SEEK_SET); + /* read 10 bytes in case there's an ID3 version 2 header here */ + fread(id3v2Header,1,sizeof id3v2Header,fpStream); + /* does the stream begin with the ID3 version 2 file identifier? */ + if (!strncmp((char *)id3v2Header,"ID3",3)) { + /* the tag size (minus the 10-byte header) is encoded into four + * bytes where the most significant bit is clear in each byte */ + id3v2TagSize=(((id3v2Header[6] & 0x7f)<<21) + | ((id3v2Header[7] & 0x7f)<<14) + | ((id3v2Header[8] & 0x7f)<<7) + | (id3v2Header[9] & 0x7f)) + + sizeof id3v2Header; + } else { + /* no ID3 version 2 tag in this stream */ + id3v2TagSize=0; + } + + /* Seek to first real frame */ + fseek(fpStream,id3v2TagSize+gfp->TotalFrameSize,SEEK_SET); + + /* Read the header (first valid frame) */ + fread(pbtStreamBuffer,4,1,fpStream); + + /* the default VBR header. 48 kbps layer III, no padding, no crc */ + /* but sampling freq, mode andy copyright/copy protection taken */ + /* from first valid frame */ + pbtStreamBuffer[0]=(uint8_t) 0xff; + abyte = (pbtStreamBuffer[1] & (char) 0xf1); + { + int bitrate; + if (1==gfp->version) { + bitrate = XING_BITRATE1; + } else { + if (gfp->out_samplerate < 16000 ) + bitrate = XING_BITRATE25; + else + bitrate = XING_BITRATE2; + } + + if (gfp->VBR==vbr_off) + bitrate = gfp->brate; + + if (gfp->free_format) + bbyte = 0x00; + else + bbyte = 16*BitrateIndex(bitrate,gfp->version,gfp->out_samplerate); + } + + /* Use as much of the info from the real frames in the + * Xing header: samplerate, channels, crc, etc... + */ + if (gfp->version==1) { + /* MPEG1 */ + pbtStreamBuffer[1]=abyte | (char) 0x0a; /* was 0x0b; */ + abyte = pbtStreamBuffer[2] & (char) 0x0d; /* AF keep also private bit */ + pbtStreamBuffer[2]=(char) bbyte | abyte; /* 64kbs MPEG1 frame */ + }else{ + /* MPEG2 */ + pbtStreamBuffer[1]=abyte | (char) 0x02; /* was 0x03; */ + abyte = pbtStreamBuffer[2] & (char) 0x0d; /* AF keep also private bit */ + pbtStreamBuffer[2]=(char) bbyte | abyte; /* 64kbs MPEG2 frame */ + } + + /* Clear all TOC entries */ + memset(btToc,0,sizeof(btToc)); + + if (gfp->free_format) { + int i; + for (i = 1; i < NUMTOCENTRIES; ++i) + btToc[i] = 255*i/100; + } else { + Xing_seek_table(&gfc->VBR_seek_table, btToc); + } + /*print_seeking (btToc);*/ + + /* Start writing the tag after the zero frame */ + nStreamIndex=gfc->sideinfo_len; + /* note! Xing header specifies that Xing data goes in the + * ancillary data with NO ERROR PROTECTION. If error protecton + * in enabled, the Xing data still starts at the same offset, + * and now it is in sideinfo data block, and thus will not + * decode correctly by non-Xing tag aware players */ + if (gfp->error_protection) nStreamIndex -= 2; + + /* Put Vbr tag */ + if (gfp->VBR == vbr_off) + { + pbtStreamBuffer[nStreamIndex++]=VBRTag1[0]; + pbtStreamBuffer[nStreamIndex++]=VBRTag1[1]; + pbtStreamBuffer[nStreamIndex++]=VBRTag1[2]; + pbtStreamBuffer[nStreamIndex++]=VBRTag1[3]; + + } + else + { + pbtStreamBuffer[nStreamIndex++]=VBRTag0[0]; + pbtStreamBuffer[nStreamIndex++]=VBRTag0[1]; + pbtStreamBuffer[nStreamIndex++]=VBRTag0[2]; + pbtStreamBuffer[nStreamIndex++]=VBRTag0[3]; + } + + /* Put header flags */ + CreateI4(&pbtStreamBuffer[nStreamIndex],FRAMES_FLAG+BYTES_FLAG+TOC_FLAG+VBR_SCALE_FLAG); + nStreamIndex+=4; + + /* Put Total Number of frames */ + CreateI4(&pbtStreamBuffer[nStreamIndex],gfp->nVbrNumFrames); + nStreamIndex+=4; + + /* Put Total file size */ + CreateI4(&pbtStreamBuffer[nStreamIndex],(int)lFileSize); + nStreamIndex+=4; + + /* Put TOC */ + memcpy(&pbtStreamBuffer[nStreamIndex],btToc,sizeof(btToc)); + nStreamIndex+=sizeof(btToc); + + + if (gfp->error_protection) { + /* (jo) error_protection: add crc16 information to header */ + CRC_writeheader(gfc, (char*)pbtStreamBuffer); + } + + + + /*work out CRC so far: initially crc = 0 */ + for (i = 0;i< nStreamIndex ;i++) + crc = CRC_update_lookup(pbtStreamBuffer[i], crc); + + /*Put LAME VBR info*/ + nStreamIndex+=PutLameVBR(gfp, fpStream, pbtStreamBuffer + nStreamIndex, id3v2TagSize,crc); + +#ifdef DEBUG_VBRTAG + { + VBRTAGDATA TestHeader; + GetVbrTag(&TestHeader,pbtStreamBuffer); + } +#endif + + /*Seek to the beginning of the stream */ + fseek(fpStream,id3v2TagSize,SEEK_SET); + + /* Put it all to disk again */ + if (fwrite(pbtStreamBuffer,(unsigned int)gfp->TotalFrameSize,1,fpStream)!=1) + { + return -1; + } + + + return 0; /* success */ +} + + diff --git a/lame-3.97/libmp3lame/.svn/text-base/VbrTag.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/VbrTag.h.svn-base new file mode 100644 index 0000000..cd5a32d --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/VbrTag.h.svn-base @@ -0,0 +1,90 @@ +/* + * Xing VBR tagging for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_VRBTAG_H +#define LAME_VRBTAG_H + +#include "lame.h" + +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + +/* ----------------------------------------------------------- + * A Vbr header may be present in the ancillary + * data field of the first frame of an mp3 bitstream + * The Vbr header (optionally) contains + * frames total number of audio frames in the bitstream + * bytes total number of bytes in the bitstream + * toc table of contents + + * toc (table of contents) gives seek points + * for random access + * the ith entry determines the seek point for + * i-percent duration + * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes + * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes + */ + + +#define FRAMES_FLAG 0x0001 +#define BYTES_FLAG 0x0002 +#define TOC_FLAG 0x0004 +#define VBR_SCALE_FLAG 0x0008 + +#define NUMTOCENTRIES 100 + +#define FRAMES_AND_BYTES (FRAMES_FLAG | BYTES_FLAG) + + + +/*structure to receive extracted header */ +/* toc may be NULL*/ +typedef struct +{ + int h_id; /* from MPEG header, 0=MPEG2, 1=MPEG1 */ + int samprate; /* determined from MPEG header */ + int flags; /* from Vbr header data */ + int frames; /* total bit stream frames from Vbr header data */ + int bytes; /* total bit stream bytes from Vbr header data*/ + int vbr_scale; /* encoded vbr scale from Vbr header data*/ + unsigned char toc[NUMTOCENTRIES]; /* may be NULL if toc not desired*/ + int headersize; /* size of VBR header, in bytes */ + int enc_delay; /* encoder delay */ + int enc_padding; /* encoder paddign added at end of stream */ +} VBRTAGDATA; + +int CheckVbrTag(unsigned char *buf); +int GetVbrTag(VBRTAGDATA *pTagData, unsigned char *buf); + +int SeekPoint(unsigned char TOC[NUMTOCENTRIES], int file_bytes, float percent); +int InitVbrTag(lame_global_flags *gfp); +int PutVbrTag(lame_global_flags *gfp,FILE *fid,int nVbrScale); +int PutLameVBR(lame_global_flags *gfp, FILE *fpStream, uint8_t *pbtStreamBuffer, uint32_t id3v2size, uint16_t crc); +void AddVbrFrame(lame_global_flags *gfp); +void UpdateMusicCRC(uint16_t *crc,unsigned char *buffer, int size); + +#endif + diff --git a/lame-3.97/libmp3lame/.svn/text-base/bitstream.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/bitstream.c.svn-base new file mode 100644 index 0000000..bff4089 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/bitstream.c.svn-base @@ -0,0 +1,1047 @@ +/* + * MP3 bitstream Output interface for LAME + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 1999-2002 Takehiro Tominaga + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * $Id: bitstream.c,v 1.69.2.1 2005/11/20 14:08:24 bouvigne Exp $ + */ + + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdlib.h> +#include <assert.h> +#include <stdio.h> +#include "tables.h" +#include "bitstream.h" +#include "quantize.h" +#include "quantize_pvt.h" +#include "version.h" +#include "VbrTag.h" +#include "machine.h" +#include "gain_analysis.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* unsigned int is at least this large: */ +/* we work with ints, so when doing bit manipulation, we limit + * ourselves to MAX_LENGTH-2 just to be on the safe side */ +#define MAX_LENGTH 32 + + + +#ifdef DEBUG +static int hoge, hogege; +#endif + + + + + +/*********************************************************************** + * compute bitsperframe and mean_bits for a layer III frame + **********************************************************************/ +int getframebits(const lame_global_flags * gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int bit_rate; + + /* get bitrate in kbps [?] */ + if (gfc->bitrate_index) + bit_rate = bitrate_table[gfp->version][gfc->bitrate_index]; + else + bit_rate = gfp->brate; + assert ( bit_rate <= 550 ); + + /* main encoding routine toggles padding on and off */ + /* one Layer3 Slot consists of 8 bits */ + return 8 * ((gfp->version+1)*72000*bit_rate / gfp->out_samplerate + + gfc->padding); +} + + + + +void putheader_bits(lame_internal_flags *gfc) +{ + Bit_stream_struc *bs; + bs = &gfc->bs; +#ifdef DEBUG + hoge += gfc->sideinfo_len * 8; + hogege += gfc->sideinfo_len * 8; +#endif + memcpy(&bs->buf[bs->buf_byte_idx], gfc->header[gfc->w_ptr].buf, + gfc->sideinfo_len); + bs->buf_byte_idx += gfc->sideinfo_len; + bs->totbit += gfc->sideinfo_len * 8; + gfc->w_ptr = (gfc->w_ptr + 1) & (MAX_HEADER_BUF - 1); +} + + + + +/*write j bits into the bit stream */ +inline static void +putbits2(lame_internal_flags *gfc, int val, int j) +{ + Bit_stream_struc *bs; + bs = &gfc->bs; + + assert(j < MAX_LENGTH-2); + + while (j > 0) { + int k; + if (bs->buf_bit_idx == 0) { + bs->buf_bit_idx = 8; + bs->buf_byte_idx++; + assert(bs->buf_byte_idx < BUFFER_SIZE); + assert(gfc->header[gfc->w_ptr].write_timing >= bs->totbit); + if (gfc->header[gfc->w_ptr].write_timing == bs->totbit) { + putheader_bits(gfc); + } + bs->buf[bs->buf_byte_idx] = 0; + } + + k = Min(j, bs->buf_bit_idx); + j -= k; + + bs->buf_bit_idx -= k; + + assert (j < MAX_LENGTH); /* 32 too large on 32 bit machines */ + assert (bs->buf_bit_idx < MAX_LENGTH); + + bs->buf[bs->buf_byte_idx] |= ((val >> j) << bs->buf_bit_idx); + bs->totbit += k; + } +} + +/*write j bits into the bit stream, ignoring frame headers */ +inline static void +putbits_noheaders(lame_internal_flags *gfc, int val, int j) +{ + Bit_stream_struc *bs; + bs = &gfc->bs; + + assert(j < MAX_LENGTH-2); + + while (j > 0) { + int k; + if (bs->buf_bit_idx == 0) { + bs->buf_bit_idx = 8; + bs->buf_byte_idx++; + assert(bs->buf_byte_idx < BUFFER_SIZE); + bs->buf[bs->buf_byte_idx] = 0; + } + + k = Min(j, bs->buf_bit_idx); + j -= k; + + bs->buf_bit_idx -= k; + + assert (j < MAX_LENGTH); /* 32 too large on 32 bit machines */ + assert (bs->buf_bit_idx < MAX_LENGTH); + + bs->buf[bs->buf_byte_idx] |= ((val >> j) << bs->buf_bit_idx); + bs->totbit += k; + } +} + + +/* + Some combinations of bitrate, Fs, and stereo make it impossible to stuff + out a frame using just main_data, due to the limited number of bits to + indicate main_data_length. In these situations, we put stuffing bits into + the ancillary data... +*/ + +inline static void +drain_into_ancillary(lame_global_flags *gfp, int remainingBits) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int i; + assert(remainingBits >= 0); + + if (remainingBits >= 8) { + putbits2(gfc,0x4c,8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc,0x41,8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc,0x4d,8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc,0x45,8); + remainingBits -= 8; + } + + if (remainingBits >= 32) { + const char *version = get_lame_short_version (); + if (remainingBits >= 32) + for (i=0; i<(int)strlen(version) && remainingBits >=8 ; ++i) { + remainingBits -= 8; + putbits2(gfc,version[i],8); + } + } + + for (; remainingBits >= 1; remainingBits -= 1 ) { + putbits2(gfc, gfc->ancillary_flag, 1 ); + gfc->ancillary_flag ^= !gfp->disable_reservoir; + } + + assert (remainingBits == 0); + +} + +/*write N bits into the header */ +inline static void +writeheader(lame_internal_flags *gfc,int val, int j) +{ + int ptr = gfc->header[gfc->h_ptr].ptr; + + while (j > 0) { + int k = Min(j, 8 - (ptr & 7)); + j -= k; + assert (j < MAX_LENGTH); /* >> 32 too large for 32 bit machines */ + gfc->header[gfc->h_ptr].buf[ptr >> 3] + |= ((val >> j)) << (8 - (ptr & 7) - k); + ptr += k; + } + gfc->header[gfc->h_ptr].ptr = ptr; +} + + +static int +CRC_update(int value, int crc) +{ + int i; + value <<= 8; + for (i = 0; i < 8; i++) { + value <<= 1; + crc <<= 1; + + if (((crc ^ value) & 0x10000)) + crc ^= CRC16_POLYNOMIAL; + } + return crc; +} + + +void +CRC_writeheader(lame_internal_flags *gfc, char *header) +{ + int crc = 0xffff; /* (jo) init crc16 for error_protection */ + int i; + + crc = CRC_update(((unsigned char*)header)[2], crc); + crc = CRC_update(((unsigned char*)header)[3], crc); + for (i = 6; i < gfc->sideinfo_len; i++) { + crc = CRC_update(((unsigned char*)header)[i], crc); + } + + header[4] = crc >> 8; + header[5] = crc & 255; +} + +inline static void +encodeSideInfo2(lame_global_flags *gfp,int bitsPerFrame) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side; + int gr, ch; + + l3_side = &gfc->l3_side; + gfc->header[gfc->h_ptr].ptr = 0; + memset(gfc->header[gfc->h_ptr].buf, 0, gfc->sideinfo_len); + if (gfp->out_samplerate < 16000) + writeheader(gfc,0xffe, 12); + else + writeheader(gfc,0xfff, 12); + writeheader(gfc,(gfp->version), 1); + writeheader(gfc,4 - 3, 2); + writeheader(gfc,(!gfp->error_protection), 1); + writeheader(gfc,(gfc->bitrate_index), 4); + writeheader(gfc,(gfc->samplerate_index), 2); + writeheader(gfc,(gfc->padding), 1); + writeheader(gfc,(gfp->extension), 1); + writeheader(gfc,(gfp->mode), 2); + writeheader(gfc,(gfc->mode_ext), 2); + writeheader(gfc,(gfp->copyright), 1); + writeheader(gfc,(gfp->original), 1); + writeheader(gfc,(gfp->emphasis), 2); + if (gfp->error_protection) { + writeheader(gfc,0, 16); /* dummy */ + } + + if (gfp->version == 1) { + /* MPEG1 */ + assert(l3_side->main_data_begin >= 0); + writeheader(gfc,(l3_side->main_data_begin), 9); + + if (gfc->channels_out == 2) + writeheader(gfc,l3_side->private_bits, 3); + else + writeheader(gfc,l3_side->private_bits, 5); + + for (ch = 0; ch < gfc->channels_out; ch++) { + int band; + for (band = 0; band < 4; band++) { + writeheader(gfc,l3_side->scfsi[ch][band], 1); + } + } + + for (gr = 0; gr < 2; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + writeheader(gfc,gi->part2_3_length+gi->part2_length, 12); + writeheader(gfc,gi->big_values / 2, 9); + writeheader(gfc,gi->global_gain, 8); + writeheader(gfc,gi->scalefac_compress, 4); + + if (gi->block_type != NORM_TYPE) { + writeheader(gfc, 1, 1); /* window_switching_flag */ + writeheader(gfc,gi->block_type, 2); + writeheader(gfc,gi->mixed_block_flag, 1); + + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + + writeheader(gfc,gi->subblock_gain[0], 3); + writeheader(gfc,gi->subblock_gain[1], 3); + writeheader(gfc,gi->subblock_gain[2], 3); + } else { + writeheader(gfc, 0, 1); /* window_switching_flag */ + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + if (gi->table_select[2] == 14) + gi->table_select[2] = 16; + writeheader(gfc,gi->table_select[2], 5); + + assert(gi->region0_count < 16U); + assert(gi->region1_count < 8U); + writeheader(gfc,gi->region0_count, 4); + writeheader(gfc,gi->region1_count, 3); + } + writeheader(gfc,gi->preflag, 1); + writeheader(gfc,gi->scalefac_scale, 1); + writeheader(gfc,gi->count1table_select, 1); + } + } + } else { + /* MPEG2 */ + assert(l3_side->main_data_begin >= 0); + writeheader(gfc,(l3_side->main_data_begin), 8); + writeheader(gfc,l3_side->private_bits, gfc->channels_out); + + gr = 0; + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + writeheader(gfc,gi->part2_3_length+gi->part2_length, 12); + writeheader(gfc,gi->big_values / 2, 9); + writeheader(gfc,gi->global_gain, 8); + writeheader(gfc,gi->scalefac_compress, 9); + + if (gi->block_type != NORM_TYPE) { + writeheader(gfc, 1, 1); /* window_switching_flag */ + writeheader(gfc,gi->block_type, 2); + writeheader(gfc,gi->mixed_block_flag, 1); + + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + + writeheader(gfc,gi->subblock_gain[0], 3); + writeheader(gfc,gi->subblock_gain[1], 3); + writeheader(gfc,gi->subblock_gain[2], 3); + } else { + writeheader(gfc, 0, 1); /* window_switching_flag */ + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + if (gi->table_select[2] == 14) + gi->table_select[2] = 16; + writeheader(gfc,gi->table_select[2], 5); + + assert(gi->region0_count < 16U); + assert(gi->region1_count < 8U); + writeheader(gfc,gi->region0_count, 4); + writeheader(gfc,gi->region1_count, 3); + } + + writeheader(gfc,gi->scalefac_scale, 1); + writeheader(gfc,gi->count1table_select, 1); + } + } + + if (gfp->error_protection) { + /* (jo) error_protection: add crc16 information to header */ + CRC_writeheader(gfc, gfc->header[gfc->h_ptr].buf); + } + + { + int old = gfc->h_ptr; + assert(gfc->header[old].ptr == gfc->sideinfo_len * 8); + + gfc->h_ptr = (old + 1) & (MAX_HEADER_BUF - 1); + gfc->header[gfc->h_ptr].write_timing = + gfc->header[old].write_timing + bitsPerFrame; + + if (gfc->h_ptr == gfc->w_ptr) { + /* yikes! we are out of header buffer space */ + ERRORF(gfc,"Error: MAX_HEADER_BUF too small in bitstream.c \n"); + } + + } +} + + +inline static int +huffman_coder_count1(lame_internal_flags *gfc, gr_info *gi) +{ + /* Write count1 area */ + const struct huffcodetab *h = &ht[gi->count1table_select + 32]; + int i,bits=0; +#ifdef DEBUG + int gegebo = gfc->bs.totbit; +#endif + + int *ix = &gi->l3_enc[gi->big_values]; + FLOAT *xr = &gi->xr[gi->big_values]; + assert(gi->count1table_select < 2); + + for (i = (gi->count1 - gi->big_values) / 4; i > 0; --i) { + int huffbits = 0; + int p = 0, v; + + v = ix[0]; + if (v) { + p += 8; + if (xr[0] < 0) + huffbits++; + assert(v <= 1u); + } + + v = ix[1]; + if (v) { + p += 4; + huffbits *= 2; + if (xr[1] < 0) + huffbits++; + assert(v <= 1u); + } + + v = ix[2]; + if (v) { + p += 2; + huffbits *= 2; + if (xr[2] < 0) + huffbits++; + assert(v <= 1u); + } + + v = ix[3]; + if (v) { + p++; + huffbits *= 2; + if (xr[3] < 0) + huffbits++; + assert(v <= 1u); + } + + ix += 4; + xr += 4; + putbits2(gfc, huffbits + h->table[p], h->hlen[p]); + bits += h->hlen[p]; + } +#ifdef DEBUG + DEBUGF(gfc,"count1: real: %ld counted:%d (bigv %d count1len %d)\n", + gfc->bs.totbit -gegebo, gi->count1bits, gi->big_values, gi->count1); +#endif + return bits; +} + + + +/* + Implements the pseudocode of page 98 of the IS + */ +inline static int +Huffmancode( lame_internal_flags* const gfc, const int tableindex, + int start, int end, gr_info *gi) +{ + const struct huffcodetab* h = &ht[tableindex]; + int index, bits = 0; + + assert(tableindex < 32u); + if (!tableindex) + return bits; + + for (index = start; index < end; index += 2) { + int cbits = 0; + int xbits = 0; + int linbits = h->xlen; + int xlen = h->xlen; + int ext = 0; + int x1 = gi->l3_enc[index]; + int x2 = gi->l3_enc[index+1]; + + if (x1 != 0) { + if (gi->xr[index] < 0) + ext++; + cbits--; + } + + if (tableindex > 15) { + /* use ESC-words */ + if (x1 > 14) { + int linbits_x1 = x1 - 15; + assert ( linbits_x1 <= h->linmax ); + ext |= linbits_x1 << 1; + xbits = linbits; + x1 = 15; + } + + if (x2 > 14) { + int linbits_x2 = x2 - 15; + assert ( linbits_x2 <= h->linmax ); + ext <<= linbits; + ext |= linbits_x2; + xbits += linbits; + x2 = 15; + } + xlen = 16; + } + + if (x2 != 0) { + ext <<= 1; + if (gi->xr[index+1] < 0) + ext++; + cbits--; + } + + assert ( (x1|x2) < 16u ); + + x1 = x1 * xlen + x2; + xbits -= cbits; + cbits += h->hlen [x1]; + + assert ( cbits <= MAX_LENGTH ); + assert ( xbits <= MAX_LENGTH ); + + putbits2(gfc, h->table [x1], cbits ); + putbits2(gfc, ext, xbits ); + bits += cbits + xbits; + } + return bits; +} + +/* + Note the discussion of huffmancodebits() on pages 28 + and 29 of the IS, as well as the definitions of the side + information on pages 26 and 27. + */ +static int +ShortHuffmancodebits(lame_internal_flags *gfc, gr_info *gi) +{ + int bits; + int region1Start; + + region1Start = 3*gfc->scalefac_band.s[3]; + if (region1Start > gi->big_values) + region1Start = gi->big_values; + + /* short blocks do not have a region2 */ + bits = Huffmancode(gfc, gi->table_select[0], 0, region1Start, gi); + bits += Huffmancode(gfc, gi->table_select[1], region1Start, gi->big_values, gi); + return bits; +} + +static int +LongHuffmancodebits(lame_internal_flags *gfc, gr_info *gi) +{ + int i, bigvalues, bits; + int region1Start, region2Start; + + bigvalues = gi->big_values; + assert(0 <= bigvalues && bigvalues <= 576); + + i = gi->region0_count + 1; + assert(i < 23); + region1Start = gfc->scalefac_band.l[i]; + i += gi->region1_count + 1; + assert(i < 23); + region2Start = gfc->scalefac_band.l[i]; + + if (region1Start > bigvalues) + region1Start = bigvalues; + + if (region2Start > bigvalues) + region2Start = bigvalues; + + bits =Huffmancode(gfc, gi->table_select[0], 0, region1Start, gi); + bits +=Huffmancode(gfc, gi->table_select[1], region1Start, region2Start, gi); + bits +=Huffmancode(gfc, gi->table_select[2], region2Start, bigvalues, gi); + return bits; +} + +inline static int +writeMainData ( lame_global_flags * const gfp) +{ + int gr, ch, sfb,data_bits,tot_bits=0; + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side; + + l3_side = &gfc->l3_side; + if (gfp->version == 1) { + /* MPEG 1 */ + for (gr = 0; gr < 2; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + int slen1 = slen1_tab[gi->scalefac_compress]; + int slen2 = slen2_tab[gi->scalefac_compress]; + data_bits=0; +#ifdef DEBUG + hogege = gfc->bs.totbit; +#endif + for (sfb = 0; sfb < gi->sfbdivide; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; /* scfsi is used */ + putbits2(gfc, gi->scalefac[sfb], slen1); + data_bits += slen1; + } + for (; sfb < gi->sfbmax; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; /* scfsi is used */ + putbits2(gfc, gi->scalefac[sfb], slen2); + data_bits += slen2; + } + assert(data_bits == gi->part2_length); + + if (gi->block_type == SHORT_TYPE) { + data_bits += ShortHuffmancodebits(gfc, gi); + } else { + data_bits += LongHuffmancodebits(gfc, gi); + } + data_bits += huffman_coder_count1(gfc, gi); +#ifdef DEBUG + DEBUGF(gfc,"<%ld> ", gfc->bs.totbit-hogege); +#endif + /* does bitcount in quantize.c agree with actual bit count?*/ + assert(data_bits == gi->part2_3_length + gi->part2_length); + tot_bits += data_bits; + } /* for ch */ + } /* for gr */ + } else { + /* MPEG 2 */ + gr = 0; + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + int i, sfb_partition, scale_bits=0; + assert(gi->sfb_partition_table); + data_bits = 0; +#ifdef DEBUG + hogege = gfc->bs.totbit; +#endif + sfb = 0; + sfb_partition = 0; + + if (gi->block_type == SHORT_TYPE) { + for (; sfb_partition < 4; sfb_partition++) { + int sfbs = gi->sfb_partition_table[sfb_partition] / 3; + int slen = gi->slen[sfb_partition]; + for (i = 0; i < sfbs; i++, sfb++) { + putbits2(gfc, Max(gi->scalefac[sfb*3+0], 0U), slen); + putbits2(gfc, Max(gi->scalefac[sfb*3+1], 0U), slen); + putbits2(gfc, Max(gi->scalefac[sfb*3+2], 0U), slen); + scale_bits += 3*slen; + } + } + data_bits += ShortHuffmancodebits(gfc, gi); + } else { + for (; sfb_partition < 4; sfb_partition++) { + int sfbs = gi->sfb_partition_table[sfb_partition]; + int slen = gi->slen[sfb_partition]; + for (i = 0; i < sfbs; i++, sfb++) { + putbits2(gfc, Max(gi->scalefac[sfb], 0U), slen); + scale_bits += slen; + } + } + data_bits +=LongHuffmancodebits(gfc, gi); + } + data_bits +=huffman_coder_count1(gfc, gi); +#ifdef DEBUG + DEBUGF(gfc,"<%ld> ", gfc->bs.totbit-hogege); +#endif + /* does bitcount in quantize.c agree with actual bit count?*/ + assert(data_bits==gi->part2_3_length); + assert(scale_bits==gi->part2_length); + tot_bits += scale_bits + data_bits; + } /* for ch */ + } /* for gf */ + return tot_bits; +} /* main_data */ + + + +/* compute the number of bits required to flush all mp3 frames + currently in the buffer. This should be the same as the + reservoir size. Only call this routine between frames - i.e. + only after all headers and data have been added to the buffer + by format_bitstream(). + + Also compute total_bits_output = + size of mp3 buffer (including frame headers which may not + have yet been send to the mp3 buffer) + + number of bits needed to flush all mp3 frames. + + total_bytes_output is the size of the mp3 output buffer if + lame_encode_flush_nogap() was called right now. + + */ +int +compute_flushbits( const lame_global_flags * gfp, int *total_bytes_output ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int flushbits,remaining_headers; + int bitsPerFrame; + int last_ptr,first_ptr; + first_ptr=gfc->w_ptr; /* first header to add to bitstream */ + last_ptr = gfc->h_ptr - 1; /* last header to add to bitstream */ + if (last_ptr==-1) last_ptr=MAX_HEADER_BUF-1; + + /* add this many bits to bitstream so we can flush all headers */ + flushbits = gfc->header[last_ptr].write_timing - gfc->bs.totbit; + *total_bytes_output=flushbits; + + if (flushbits >= 0) { + /* if flushbits >= 0, some headers have not yet been written */ + /* reduce flushbits by the size of the headers */ + remaining_headers= 1+last_ptr - first_ptr; + if (last_ptr < first_ptr) + remaining_headers= 1+last_ptr - first_ptr + MAX_HEADER_BUF; + flushbits -= remaining_headers*8*gfc->sideinfo_len; + } + + + /* finally, add some bits so that the last frame is complete + * these bits are not necessary to decode the last frame, but + * some decoders will ignore last frame if these bits are missing + */ + bitsPerFrame = getframebits(gfp); + flushbits += bitsPerFrame; + *total_bytes_output += bitsPerFrame; + /* round up: */ + if (*total_bytes_output % 8) + *total_bytes_output = 1 + (*total_bytes_output/8); + else + *total_bytes_output = (*total_bytes_output/8); + *total_bytes_output += gfc->bs.buf_byte_idx + 1; + + + if (flushbits<0) { +#if 0 + /* if flushbits < 0, this would mean that the buffer looks like: + * (data...) last_header (data...) (extra data that should not be here...) + */ + DEBUGF(gfc,"last header write_timing = %i \n",gfc->header[last_ptr].write_timing); + DEBUGF(gfc,"first header write_timing = %i \n",gfc->header[first_ptr].write_timing); + DEBUGF(gfc,"bs.totbit: %i \n",gfc->bs.totbit); + DEBUGF(gfc,"first_ptr, last_ptr %i %i \n",first_ptr,last_ptr); + DEBUGF(gfc,"remaining_headers = %i \n",remaining_headers); + DEBUGF(gfc,"bitsperframe: %i \n",bitsPerFrame); + DEBUGF(gfc,"sidelen: %i \n",gfc->sideinfo_len); +#endif + ERRORF(gfc,"strange error flushing buffer ... \n"); + } + return flushbits; +} + + + +void +flush_bitstream(lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side; + int nbytes; + int flushbits; + int last_ptr,first_ptr; + first_ptr=gfc->w_ptr; /* first header to add to bitstream */ + last_ptr = gfc->h_ptr - 1; /* last header to add to bitstream */ + if (last_ptr==-1) last_ptr=MAX_HEADER_BUF-1; + l3_side = &gfc->l3_side; + + + if ((flushbits = compute_flushbits(gfp,&nbytes)) < 0) return; + drain_into_ancillary(gfp, flushbits); + + /* check that the 100% of the last frame has been written to bitstream */ + assert (gfc->header[last_ptr].write_timing + getframebits(gfp) + == gfc->bs.totbit); + + /* we have padded out all frames with ancillary data, which is the + same as filling the bitreservoir with ancillary data, so : */ + gfc->ResvSize=0; + l3_side->main_data_begin = 0; + + + /* save the ReplayGain value */ + if (gfc->findReplayGain) { + FLOAT RadioGain = (FLOAT) GetTitleGain(gfc->rgdata); + assert(RadioGain != GAIN_NOT_ENOUGH_SAMPLES); + gfc->RadioGain = (int) floor( RadioGain * 10.0 + 0.5 ); /* round to nearest */ + } + + /* find the gain and scale change required for no clipping */ + if (gfc->findPeakSample) { + gfc->noclipGainChange = (int) ceil(log10(gfc->PeakSample / 32767.0) *20.0*10.0); /* round up */ + + if (gfc->noclipGainChange > 0) { /* clipping occurs */ + if (gfp->scale == 1.0 || gfp->scale == 0.0) + gfc->noclipScale = floor( (32767.0 / gfc->PeakSample) * 100.0 ) / 100.0; /* round down */ + else + /* the user specified his own scaling factor. We could suggest + * the scaling factor of (32767.0/gfp->PeakSample)*(gfp->scale) + * but it's usually very inaccurate. So we'd rather not advice him + * on the scaling factor. */ + gfc->noclipScale = -1; + } + else /* no clipping */ + gfc->noclipScale = -1; + } +} + + + + +void add_dummy_byte ( lame_global_flags* const gfp, unsigned char val ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + + putbits_noheaders(gfc, val, 8); + + for (i=0 ; i< MAX_HEADER_BUF ; ++i) + gfc->header[i].write_timing += 8; +} + + +/* + format_bitstream() + + This is called after a frame of audio has been quantized and coded. + It will write the encoded audio to the bitstream. Note that + from a layer3 encoder's perspective the bit stream is primarily + a series of main_data() blocks, with header and side information + inserted at the proper locations to maintain framing. (See Figure A.7 + in the IS). + */ +int +format_bitstream(lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int bits,nbytes; + III_side_info_t *l3_side; + int bitsPerFrame; + l3_side = &gfc->l3_side; + + bitsPerFrame = getframebits(gfp); + drain_into_ancillary(gfp, l3_side->resvDrain_pre); + + encodeSideInfo2(gfp,bitsPerFrame); + bits = 8*gfc->sideinfo_len; + bits+=writeMainData(gfp); + drain_into_ancillary(gfp, l3_side->resvDrain_post); + bits += l3_side->resvDrain_post; + + l3_side->main_data_begin += (bitsPerFrame-bits)/8; + + /* compare number of bits needed to clear all buffered mp3 frames + * with what we think the resvsize is: */ + if (compute_flushbits(gfp,&nbytes) != gfc->ResvSize) { + ERRORF(gfc,"Internal buffer inconsistency. flushbits <> ResvSize"); + } + + + /* compare main_data_begin for the next frame with what we + * think the resvsize is: */ + if ((l3_side->main_data_begin * 8) != gfc->ResvSize ) { + ERRORF(gfc,"bit reservoir error: \n" + "l3_side->main_data_begin: %i \n" + "Resvoir size: %i \n" + "resv drain (post) %i \n" + "resv drain (pre) %i \n" + "header and sideinfo: %i \n" + "data bits: %i \n" + "total bits: %i (remainder: %i) \n" + "bitsperframe: %i \n", + + 8*l3_side->main_data_begin, + gfc->ResvSize, + l3_side->resvDrain_post, + l3_side->resvDrain_pre, + 8*gfc->sideinfo_len, + bits-l3_side->resvDrain_post-8*gfc->sideinfo_len, + bits, bits % 8, + bitsPerFrame + ); + + ERRORF(gfc,"This is a fatal error. It has several possible causes:"); + ERRORF(gfc,"90% LAME compiled with buggy version of gcc using advanced optimizations"); + ERRORF(gfc," 9% Your system is overclocked"); + ERRORF(gfc," 1% bug in LAME encoding library"); + + gfc->ResvSize = l3_side->main_data_begin*8; + }; + assert(gfc->bs.totbit % 8 == 0); + + if (gfc->bs.totbit > 1000000000 ) { + /* to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset bit counter*/ + int i; + for (i=0 ; i< MAX_HEADER_BUF ; ++i) + gfc->header[i].write_timing -= gfc->bs.totbit; + gfc->bs.totbit=0; + } + + + return 0; +} + + + + + +/* copy data out of the internal MP3 bit buffer into a user supplied + unsigned char buffer. + + mp3data=0 indicates data in buffer is an id3tags and VBR tags + mp3data=1 data is real mp3 frame data. + + +*/ +int copy_buffer(lame_internal_flags *gfc,unsigned char *buffer,int size,int mp3data) +{ + Bit_stream_struc *bs=&gfc->bs; + int minimum = bs->buf_byte_idx + 1; + if (minimum <= 0) return 0; + if (size!=0 && minimum>size) return -1; /* buffer is too small */ + memcpy(buffer,bs->buf,minimum); + bs->buf_byte_idx = -1; + bs->buf_bit_idx = 0; + + if (mp3data) { + UpdateMusicCRC(&gfc->nMusicCRC,buffer,minimum); + +#ifdef DECODE_ON_THE_FLY + if (gfc->decode_on_the_fly) { /* decode the frame */ + sample_t pcm_buf[2][1152]; + int mp3_in = minimum; + int samples_out = -1; + int i; + + /* re-synthesis to pcm. Repeat until we get a samples_out=0 */ + while(samples_out != 0) { + + samples_out=lame_decode1_unclipped(buffer,mp3_in,pcm_buf[0],pcm_buf[1]); + /* samples_out = 0: need more data to decode + * samples_out = -1: error. Lets assume 0 pcm output + * samples_out = number of samples output */ + + /* set the lenght of the mp3 input buffer to zero, so that in the + * next iteration of the loop we will be querying mpglib about + * buffered data */ + mp3_in = 0; + + if (samples_out==-1) { + /* error decoding. Not fatal, but might screw up + * the ReplayGain tag. What should we do? Ignore for now */ + samples_out=0; + } + if (samples_out>0) { + /* process the PCM data */ + + /* this should not be possible, and indicates we have + * overflown the pcm_buf buffer */ + assert(samples_out <= 1152); + + if (gfc->findPeakSample) { + for (i=0; i<samples_out; i++) { + if (pcm_buf[0][i] > gfc->PeakSample) + gfc->PeakSample = pcm_buf[0][i]; + else if (-pcm_buf[0][i] > gfc->PeakSample) + gfc->PeakSample = -pcm_buf[0][i]; + } + if (gfc->channels_out > 1) + for (i=0; i<samples_out; i++) { + if (pcm_buf[1][i] > gfc->PeakSample) + gfc->PeakSample = pcm_buf[1][i]; + else if (-pcm_buf[1][i] > gfc->PeakSample) + gfc->PeakSample = -pcm_buf[1][i]; + } + } + + if (gfc->findReplayGain) + if (AnalyzeSamples(gfc->rgdata, pcm_buf[0], pcm_buf[1], samples_out, gfc->channels_out) == GAIN_ANALYSIS_ERROR) + return -6; + + } /* if (samples_out>0) */ + } /* while (samples_out!=0) */ + } /* if (gfc->decode_on_the_fly) */ +#endif + + } /* if (mp3data) */ + return minimum; +} + + +void init_bit_stream_w(lame_internal_flags *gfc) +{ + gfc->bs.buf = (unsigned char *) malloc(BUFFER_SIZE); + gfc->bs.buf_size = BUFFER_SIZE; + + gfc->h_ptr = gfc->w_ptr = 0; + gfc->header[gfc->h_ptr].write_timing = 0; + gfc->bs.buf_byte_idx = -1; + gfc->bs.buf_bit_idx = 0; + gfc->bs.totbit = 0; +} + +/* end of bitstream.c */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/bitstream.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/bitstream.h.svn-base new file mode 100644 index 0000000..6edc6d5 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/bitstream.h.svn-base @@ -0,0 +1,40 @@ +/* + * MP3 bitstream Output interface for LAME + * + * Copyright (c) 1999 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_BITSTREAM_H +#define LAME_BITSTREAM_H +#include "util.h" + +int getframebits(const lame_global_flags *gfp); + +int format_bitstream(lame_global_flags *gfp); + +void flush_bitstream(lame_global_flags *gfp); +void add_dummy_byte ( lame_global_flags* const gfp, unsigned char val ); + +int copy_buffer(lame_internal_flags *gfc,unsigned char *buffer,int buffer_size,int update_crc); +void init_bit_stream_w(lame_internal_flags *gfc); +void CRC_writeheader (lame_internal_flags *gfc, char *buffer); +int compute_flushbits(const lame_global_flags *gfp, int *nbytes); + + +#endif + diff --git a/lame-3.97/libmp3lame/.svn/text-base/depcomp.svn-base b/lame-3.97/libmp3lame/.svn/text-base/depcomp.svn-base new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/depcomp.svn-base @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/libmp3lame/.svn/text-base/encoder.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/encoder.c.svn-base new file mode 100644 index 0000000..ed00b4e --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/encoder.c.svn-base @@ -0,0 +1,625 @@ +/* + * LAME MP3 encoding engine + * + * Copyright (c) 1999 Mark Taylor + * Copyright (c) 2000-2002 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2001 Gabriel Bouvigne + * Copyright (c) 2001 John Dahlstrom + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: encoder.c,v 1.90.2.1 2005/11/20 14:08:24 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <assert.h> + +#include "lame.h" +#include "util.h" +#include "newmdct.h" +#include "psymodel.h" +#include "quantize.h" +#include "quantize_pvt.h" +#include "bitstream.h" +#include "VbrTag.h" +#include "vbrquantize.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +/* + * auto-adjust of ATH, useful for low volume + * Gabriel Bouvigne 3 feb 2001 + * + * modifies some values in + * gfp->internal_flags->ATH + * (gfc->ATH) + */ +static void +adjust_ATH(lame_internal_flags * const gfc) +{ + FLOAT gr2_max, max_pow; + + if (gfc->ATH->use_adjust == 0) { + gfc->ATH->adjust = 1.0; /* no adjustment */ + return; + } + + /* jd - 2001 mar 12, 27, jun 30 */ + /* loudness based on equal loudness curve; */ + /* use granule with maximum combined loudness */ + max_pow = gfc->loudness_sq[0][0]; + gr2_max = gfc->loudness_sq[1][0]; + if (gfc->channels_out == 2) { + max_pow += gfc->loudness_sq[0][1]; + gr2_max += gfc->loudness_sq[1][1]; + } + else { + max_pow += max_pow; + gr2_max += gr2_max; + } + if (gfc->mode_gr == 2) { + max_pow = Max(max_pow, gr2_max); + } + max_pow *= 0.5; /* max_pow approaches 1.0 for full band noise */ + + /* jd - 2001 mar 31, jun 30 */ + /* user tuning of ATH adjustment region */ + max_pow *= gfc->ATH->aa_sensitivity_p; + + /* adjust ATH depending on range of maximum value + */ + + /* jd - 2001 feb27, mar12,20, jun30, jul22 */ + /* continuous curves based on approximation */ + /* to GB's original values. */ + /* For an increase in approximate loudness, */ + /* set ATH adjust to adjust_limit immediately */ + /* after a delay of one frame. */ + /* For a loudness decrease, reduce ATH adjust */ + /* towards adjust_limit gradually. */ + /* max_pow is a loudness squared or a power. */ + if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */ + if (gfc->ATH->adjust >= 1.0) { + gfc->ATH->adjust = 1.0; + } + else { + /* preceding frame has lower ATH adjust; */ + /* ascend only to the preceding adjust_limit */ + /* in case there is leading low volume */ + if (gfc->ATH->adjust < gfc->ATH->adjust_limit) { + gfc->ATH->adjust = gfc->ATH->adjust_limit; + } + } + gfc->ATH->adjust_limit = 1.0; + } + else { /* adjustment curve */ + /* about 32 dB maximum adjust (0.000625) */ + FLOAT adj_lim_new = 31.98 * max_pow + 0.000625; + if (gfc->ATH->adjust >= adj_lim_new) { /* descend gradually */ + gfc->ATH->adjust *= adj_lim_new * 0.075 + 0.925; + if (gfc->ATH->adjust < adj_lim_new) { /* stop descent */ + gfc->ATH->adjust = adj_lim_new; + } + } + else { /* ascend */ + if (gfc->ATH->adjust_limit >= adj_lim_new) { + gfc->ATH->adjust = adj_lim_new; + } + else { /* preceding frame has lower ATH adjust; */ + /* ascend only to the preceding adjust_limit */ + if (gfc->ATH->adjust < gfc->ATH->adjust_limit) { + gfc->ATH->adjust = gfc->ATH->adjust_limit; + } + } + } + gfc->ATH->adjust_limit = adj_lim_new; + } +} + +/*********************************************************************** + * + * some simple statistics + * + * bitrate index 0: free bitrate -> not allowed in VBR mode + * : bitrates, kbps depending on MPEG version + * bitrate index 15: forbidden + * + * mode_ext: + * 0: LR + * 1: LR-i + * 2: MS + * 3: MS-i + * + ***********************************************************************/ + +static void +updateStats(lame_internal_flags * const gfc) +{ + int gr, ch; + assert(gfc->bitrate_index < 16u); + assert(gfc->mode_ext < 4u); + + /* count bitrate indices */ + gfc->bitrate_stereoMode_Hist[gfc->bitrate_index][4]++; + gfc->bitrate_stereoMode_Hist[15][4]++; + + /* count 'em for every mode extension in case of 2 channel encoding */ + if (gfc->channels_out == 2) { + gfc->bitrate_stereoMode_Hist[gfc->bitrate_index][gfc->mode_ext]++; + gfc->bitrate_stereoMode_Hist[15][gfc->mode_ext]++; + } + for (gr = 0; gr < gfc->mode_gr; ++gr) { + for (ch = 0; ch < gfc->channels_out; ++ch) { + int bt = gfc->l3_side.tt[gr][ch].block_type; + int mf = gfc->l3_side.tt[gr][ch].mixed_block_flag; + if (mf) + bt = 4; + gfc->bitrate_blockType_Hist[gfc->bitrate_index][bt]++; + gfc->bitrate_blockType_Hist[gfc->bitrate_index][5]++; + gfc->bitrate_blockType_Hist[15][bt]++; + gfc->bitrate_blockType_Hist[15][5]++; + } + } +} + + + + +static void +lame_encode_frame_init(lame_global_flags * const gfp, const sample_t * inbuf[2]) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + int ch, gr; + + if (gfc->lame_encode_frame_init == 0) { + /* prime the MDCT/polyphase filterbank with a short block */ + int i, j; + sample_t primebuff0[286 + 1152 + 576]; + sample_t primebuff1[286 + 1152 + 576]; + gfc->lame_encode_frame_init = 1; + for (i = 0, j = 0; i < 286 + 576 * (1 + gfc->mode_gr); ++i) { + if (i < 576 * gfc->mode_gr) { + primebuff0[i] = 0; + if (gfc->channels_out == 2) + primebuff1[i] = 0; + } + else { + primebuff0[i] = inbuf[0][j]; + if (gfc->channels_out == 2) + primebuff1[i] = inbuf[1][j]; + ++j; + } + } + /* polyphase filtering / mdct */ + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gfc->l3_side.tt[gr][ch].block_type = SHORT_TYPE; + } + } + mdct_sub48(gfc, primebuff0, primebuff1); + + /* check FFT will not use a negative starting offset */ +#if 576 < FFTOFFSET +# error FFTOFFSET greater than 576: FFT uses a negative offset +#endif + /* check if we have enough data for FFT */ + assert(gfc->mf_size >= (BLKSIZE + gfp->framesize - FFTOFFSET)); + /* check if we have enough data for polyphase filterbank */ + assert(gfc->mf_size >= (512 + gfp->framesize - 32)); + } + +} + + + + + + + +/************************************************************************ +* +* encodeframe() Layer 3 +* +* encode a single frame +* +************************************************************************ +lame_encode_frame() + + + gr 0 gr 1 +inbuf: |--------------|--------------|--------------| + + +Polyphase (18 windows, each shifted 32) +gr 0: +window1 <----512----> +window18 <----512----> + +gr 1: +window1 <----512----> +window18 <----512----> + + + +MDCT output: |--------------|--------------|--------------| + +FFT's <---------1024----------> + <---------1024--------> + + + + inbuf = buffer of PCM data size=MP3 framesize + encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY + so the MDCT coefficints are from inbuf[ch][-MDCTDELAY] + + psy-model FFT has a 1 granule delay, so we feed it data for the + next granule. + FFT is centered over granule: 224+576+224 + So FFT starts at: 576-224-MDCTDELAY + + MPEG2: FFT ends at: BLKSIZE+576-224-MDCTDELAY (1328) + MPEG1: FFT ends at: BLKSIZE+2*576-224-MDCTDELAY (1904) + + MPEG2: polyphase first window: [0..511] + 18th window: [544..1055] (1056) + MPEG1: 36th window: [1120..1631] (1632) + data needed: 512+framesize-32 + + A close look newmdct.c shows that the polyphase filterbank + only uses data from [0..510] for each window. Perhaps because the window + used by the filterbank is zero for the last point, so Takehiro's + code doesn't bother to compute with it. + + FFT starts at 576-224-MDCTDELAY (304) = 576-FFTOFFSET + +*/ + +typedef FLOAT chgrdata[2][2]; + + +int +lame_encode_mp3_frame( /* Output */ + lame_global_flags * const gfp, /* Context */ + sample_t * inbuf_l, /* Input */ + sample_t * inbuf_r, /* Input */ + unsigned char *mp3buf, /* Output */ + int mp3buf_size) +{ /* Output */ + int mp3count; + III_psy_ratio masking_LR[2][2]; /*LR masking & energy */ + III_psy_ratio masking_MS[2][2]; /*MS masking & energy */ + III_psy_ratio(*masking)[2][2]; /*pointer to selected maskings */ + const sample_t *inbuf[2]; + lame_internal_flags *gfc = gfp->internal_flags; + + FLOAT tot_ener[2][4]; + FLOAT ms_ener_ratio[2] = { .5, .5 }; + chgrdata pe, pe_MS; + chgrdata *pe_use; + + int ch, gr; + + FLOAT ms_ratio_next = 0.; + FLOAT ms_ratio_prev = 0.; + + + inbuf[0] = inbuf_l; + inbuf[1] = inbuf_r; + + if (gfc->lame_encode_frame_init == 0) { + /*first run? */ + lame_encode_frame_init(gfp, inbuf); + + } + + + /********************** padding *****************************/ + /* padding method as described in + * "MPEG-Layer3 / Bitstream Syntax and Decoding" + * by Martin Sieler, Ralph Sperschneider + * + * note: there is no padding for the very first frame + * + * Robert Hegemann 2000-06-22 + */ + gfc->padding = FALSE; + if ((gfc->slot_lag -= gfc->frac_SpF) < 0) { + gfc->slot_lag += gfp->out_samplerate; + gfc->padding = TRUE; + } + + + + /**************************************** + * Stage 1: psychoacoustic model * + ****************************************/ + + if (gfc->psymodel) { + /* psychoacoustic model + * psy model has a 1 granule (576) delay that we must compensate for + * (mt 6/99). + */ + int ret; + const sample_t *bufp[2]; /* address of beginning of left & right granule */ + int blocktype[2]; + + ms_ratio_prev = gfc->ms_ratio[gfc->mode_gr - 1]; + for (gr = 0; gr < gfc->mode_gr; gr++) { + + for (ch = 0; ch < gfc->channels_out; ch++) + bufp[ch] = &inbuf[ch][576 + gr * 576 - FFTOFFSET]; + + if (gfp->psymodel == PSY_NSPSYTUNE) { + ret = L3psycho_anal_ns(gfp, bufp, gr, + &gfc->ms_ratio[gr], &ms_ratio_next, + masking_LR, masking_MS, + pe[gr], pe_MS[gr], tot_ener[gr], blocktype); + } + else { + ret = L3psycho_anal(gfp, bufp, gr, + &gfc->ms_ratio[gr], &ms_ratio_next, + masking_LR, masking_MS, + pe[gr], pe_MS[gr], tot_ener[gr], blocktype); + } + if (ret != 0) + return -4; + + if (gfp->mode == JOINT_STEREO) { + ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3]; + if (ms_ener_ratio[gr] > 0) + ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr]; + } + + /* block type flags */ + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + cod_info->block_type = blocktype[ch]; + cod_info->mixed_block_flag = 0; + } + } + } + else { + /*no psy model */ + memset((char *) masking_LR, 0, sizeof(masking_LR)); + memset((char *) masking_MS, 0, sizeof(masking_MS)); + for (gr = 0; gr < gfc->mode_gr; gr++) + for (ch = 0; ch < gfc->channels_out; ch++) { + gfc->l3_side.tt[gr][ch].block_type = NORM_TYPE; + gfc->l3_side.tt[gr][ch].mixed_block_flag = 0; + pe_MS[gr][ch] = pe[gr][ch] = 700; + } + } + + + + /* auto-adjust of ATH, useful for low volume */ + adjust_ATH(gfc); + + + /**************************************** + * Stage 2: MDCT * + ****************************************/ + + /* polyphase filtering / mdct */ + mdct_sub48(gfc, inbuf[0], inbuf[1]); + + + /**************************************** + * Stage 3: MS/LR decision * + ****************************************/ + + /* Here will be selected MS or LR coding of the 2 stereo channels */ + gfc->mode_ext = MPG_MD_LR_LR; + + if (gfp->force_ms) { + gfc->mode_ext = MPG_MD_MS_LR; + } + else if (gfp->mode == JOINT_STEREO) { + int check_ms_stereo = 1; + /* ms_ratio = is scaled, for historical reasons, to look like + a ratio of side_channel / total. + 0 = signal is 100% mono + .5 = L & R uncorrelated + */ + + /* [0] and [1] are the results for the two granules in MPEG-1, + * in MPEG-2 it's only a faked averaging of the same value + * _prev is the value of the last granule of the previous frame + * _next is the value of the first granule of the next frame + */ + if (gfp->psymodel == PSY_GPSYCHO) { + FLOAT ms_ratio_ave1; + FLOAT ms_ratio_ave2; + FLOAT threshold1 = 0.35; + FLOAT threshold2 = 0.45; + + /* take an average */ + if (gfc->mode_gr == 1) { + /* MPEG2 - no second granule */ + ms_ratio_ave1 = 0.33 * (gfc->ms_ratio[0] + ms_ratio_prev + ms_ratio_next); + ms_ratio_ave2 = gfc->ms_ratio[0]; + } + else { + ms_ratio_ave1 = + 0.25 * (gfc->ms_ratio[0] + gfc->ms_ratio[1] + ms_ratio_prev + ms_ratio_next); + ms_ratio_ave2 = 0.50 * (gfc->ms_ratio[0] + gfc->ms_ratio[1]); + } + + + if (ms_ratio_ave1 >= threshold1 || ms_ratio_ave2 >= threshold2) + check_ms_stereo = 0; + } + + if (check_ms_stereo) { + FLOAT sum_pe_MS = 0; + FLOAT sum_pe_LR = 0; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + sum_pe_MS += pe_MS[gr][ch]; + sum_pe_LR += pe[gr][ch]; + } + } + + /* based on PE: M/S coding would not use much more bits than L/R */ + if (((gfp->psymodel == PSY_GPSYCHO) && sum_pe_MS <= 1.07 * sum_pe_LR) || + ((gfp->psymodel == PSY_NSPSYTUNE) && sum_pe_MS <= 1.00 * sum_pe_LR)) { + + gr_info *gi0 = &gfc->l3_side.tt[0][0]; + gr_info *gi1 = &gfc->l3_side.tt[gfc->mode_gr - 1][0]; + + if (gi0[0].block_type == gi0[1].block_type && + gi1[0].block_type == gi1[1].block_type) { + + gfc->mode_ext = MPG_MD_MS_LR; + } + } + } + } + + /* bit and noise allocation */ + if (gfc->mode_ext == MPG_MD_MS_LR) { + masking = &masking_MS; /* use MS masking */ + pe_use = &pe_MS; + } + else { + masking = &masking_LR; /* use LR masking */ + pe_use = &pe; + } + + +#if defined(HAVE_GTK) + /* copy data for MP3 frame analyzer */ + if (gfp->analysis && gfc->pinfo != NULL) { + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gfc->pinfo->ms_ratio[gr] = gfc->ms_ratio[gr]; + gfc->pinfo->ms_ener_ratio[gr] = ms_ener_ratio[gr]; + gfc->pinfo->blocktype[gr][ch] = gfc->l3_side.tt[gr][ch].block_type; + gfc->pinfo->pe[gr][ch] = (*pe_use)[gr][ch]; + memcpy(gfc->pinfo->xr[gr][ch], &gfc->l3_side.tt[gr][ch].xr, sizeof(FLOAT) * 576); + /* in psymodel, LR and MS data was stored in pinfo. + switch to MS data: */ + if (gfc->mode_ext == MPG_MD_MS_LR) { + gfc->pinfo->ers[gr][ch] = gfc->pinfo->ers[gr][ch + 2]; + memcpy(gfc->pinfo->energy[gr][ch], gfc->pinfo->energy[gr][ch + 2], + sizeof(gfc->pinfo->energy[gr][ch])); + } + } + } + } +#endif + + + /**************************************** + * Stage 4: quantization loop * + ****************************************/ + + if (gfp->psymodel == PSY_NSPSYTUNE) { + if (gfp->VBR == vbr_off || gfp->VBR == vbr_abr) { + static FLOAT fircoef[9] = { + -0.0207887 * 5, -0.0378413 * 5, -0.0432472 * 5, -0.031183 * 5, + 7.79609e-18 * 5, 0.0467745 * 5, 0.10091 * 5, 0.151365 * 5, + 0.187098 * 5 + }; + + int i; + FLOAT f; + + for (i = 0; i < 18; i++) + gfc->nsPsy.pefirbuf[i] = gfc->nsPsy.pefirbuf[i + 1]; + + f = 0.0; + for (gr = 0; gr < gfc->mode_gr; gr++) + for (ch = 0; ch < gfc->channels_out; ch++) + f += (*pe_use)[gr][ch]; + gfc->nsPsy.pefirbuf[18] = f; + + f = gfc->nsPsy.pefirbuf[9]; + for (i = 0; i < 9; i++) + f += (gfc->nsPsy.pefirbuf[i] + gfc->nsPsy.pefirbuf[18 - i]) * fircoef[i]; + + f = (670 * 5 * gfc->mode_gr * gfc->channels_out) / f; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + (*pe_use)[gr][ch] *= f; + } + } + } + } + + switch (gfp->VBR) { + default: + case vbr_off: + CBR_iteration_loop(gfp, *pe_use, ms_ener_ratio, *masking); + break; + case vbr_mt: + case vbr_rh: + case vbr_mtrh: + VBR_iteration_loop(gfp, *pe_use, ms_ener_ratio, *masking); + break; + case vbr_abr: + ABR_iteration_loop(gfp, *pe_use, ms_ener_ratio, *masking); + break; + } + + + + /**************************************** + * Stage 5: bitstream formatting * + ****************************************/ + + + /* write the frame to the bitstream */ + format_bitstream(gfp); + + /* copy mp3 bit buffer into array */ + mp3count = copy_buffer(gfc, mp3buf, mp3buf_size, 1); + + + + + if (gfp->bWriteVbrTag) + AddVbrFrame(gfp); + + +#if defined(HAVE_GTK) + if (gfp->analysis && gfc->pinfo != NULL) { + for (ch = 0; ch < gfc->channels_out; ch++) { + int j; + for (j = 0; j < FFTOFFSET; j++) + gfc->pinfo->pcmdata[ch][j] = gfc->pinfo->pcmdata[ch][j + gfp->framesize]; + for (j = FFTOFFSET; j < 1600; j++) { + gfc->pinfo->pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET]; + } + } + set_frame_pinfo(gfp, *masking); + } +#endif + +#ifdef BRHIST + updateStats(gfc); +#endif + + return mp3count; +} diff --git a/lame-3.97/libmp3lame/.svn/text-base/encoder.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/encoder.h.svn-base new file mode 100644 index 0000000..bf92059 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/encoder.h.svn-base @@ -0,0 +1,151 @@ +/* + * encoder.h include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifndef LAME_ENCODER_H +#define LAME_ENCODER_H + +/*********************************************************************** +* +* encoder and decoder delays +* +***********************************************************************/ + +/* + * layer III enc->dec delay: 1056 (1057?) (observed) + * layer II enc->dec delay: 480 (481?) (observed) + * + * polyphase 256-16 (dec or enc) = 240 + * mdct 256+32 (9*32) (dec or enc) = 288 + * total: 512+16 + * + * My guess is that delay of polyphase filterbank is actualy 240.5 + * (there are technical reasons for this, see postings in mp3encoder). + * So total Encode+Decode delay = ENCDELAY + 528 + 1 + */ + +/* + * ENCDELAY The encoder delay. + * + * Minimum allowed is MDCTDELAY (see below) + * + * The first 96 samples will be attenuated, so using a value less than 96 + * will result in corrupt data for the first 96-ENCDELAY samples. + * + * suggested: 576 + * set to 1160 to sync with FhG. + */ + +#define ENCDELAY 576 + + + +/* + * make sure there is at least one complete frame after the + * last frame containing real data + * + * Using a value of 288 would be sufficient for a + * a very sophisticated decoder that can decode granule-by-granule instead + * of frame by frame. But lets not assume this, and assume the decoder + * will not decode frame N unless it also has data for frame N+1 + * + */ +/*#define POSTDELAY 288*/ +#define POSTDELAY 1152 + + + +/* + * delay of the MDCT used in mdct.c + * original ISO routines had a delay of 528! + * Takehiro's routines: + */ + +#define MDCTDELAY 48 +#define FFTOFFSET (224+MDCTDELAY) + +/* + * Most decoders, including the one we use, have a delay of 528 samples. + */ + +#define DECDELAY 528 + + +/* number of subbands */ +#define SBLIMIT 32 + +/* parition bands bands */ +#define CBANDS 64 + +/* number of critical bands/scale factor bands where masking is computed*/ +#define SBPSY_l 21 +#define SBPSY_s 12 + +/* total number of scalefactor bands encoded */ +#define SBMAX_l 22 +#define SBMAX_s 13 +#define PSFB21 6 +#define PSFB12 6 + + + +/* FFT sizes */ +#define BLKSIZE 1024 +#define HBLKSIZE (BLKSIZE/2 + 1) +#define BLKSIZE_s 256 +#define HBLKSIZE_s (BLKSIZE_s/2 + 1) + + +/* #define switch_pe 1800 */ +#define NORM_TYPE 0 +#define START_TYPE 1 +#define SHORT_TYPE 2 +#define STOP_TYPE 3 + +/* + * Mode Extention: + * When we are in stereo mode, there are 4 possible methods to store these + * two channels. The stereo modes -m? are using a subset of them. + * + * -ms: MPG_MD_LR_LR + * -mj: MPG_MD_LR_LR and MPG_MD_MS_LR + * -mf: MPG_MD_MS_LR + * -mi: all + */ + +#define MPG_MD_LR_LR 0 +#define MPG_MD_LR_I 1 +#define MPG_MD_MS_LR 2 +#define MPG_MD_MS_I 3 + + +#include "machine.h" +#include "lame.h" + +int lame_encode_mp3_frame ( + lame_global_flags* const gfp, + sample_t* inbuf_l, + sample_t* inbuf_r, + unsigned char* mp3buf, + int mp3buf_size ); + +#endif /* LAME_ENCODER_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/fft.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/fft.c.svn-base new file mode 100644 index 0000000..ae9b245 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/fft.c.svn-base @@ -0,0 +1,292 @@ +/* +** FFT and FHT routines +** Copyright 1988, 1993; Ron Mayer +** Copyright (c) 1999-2000 Takehiro Tominaga +** +** fht(fz,n); +** Does a hartley transform of "n" points in the array "fz". +** +** NOTE: This routine uses at least 2 patented algorithms, and may be +** under the restrictions of a bunch of different organizations. +** Although I wrote it completely myself; it is kind of a derivative +** of a routine I once authored and released under the GPL, so it +** may fall under the free software foundation's restrictions; +** it was worked on as a Stanford Univ project, so they claim +** some rights to it; it was further optimized at work here, so +** I think this company claims parts of it. The patents are +** held by R. Bracewell (the FHT algorithm) and O. Buneman (the +** trig generator), both at Stanford Univ. +** If it were up to me, I'd say go do whatever you want with it; +** but it would be polite to give credit to the following people +** if you use this anywhere: +** Euler - probable inventor of the fourier transform. +** Gauss - probable inventor of the FFT. +** Hartley - probable inventor of the hartley transform. +** Buneman - for a really cool trig generator +** Mayer(me) - for authoring this particular version and +** including all the optimizations in one package. +** Thanks, +** Ron Mayer; mayer@acuson.com +** and added some optimization by +** Mather - idea of using lookup table +** Takehiro - some dirty hack for speed up +*/ + +/* $Id: fft.c,v 1.25.4.1 2005/11/20 14:08:24 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <math.h> +#include "util.h" +#include "fft.h" + + + + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#define TRI_SIZE (5-1) /* 1024 = 4**5 */ + +/* fft.c */ +static FLOAT window[BLKSIZE], window_s[BLKSIZE_s/2]; + +static const FLOAT costab[TRI_SIZE*2] = { + 9.238795325112867e-01, 3.826834323650898e-01, + 9.951847266721969e-01, 9.801714032956060e-02, + 9.996988186962042e-01, 2.454122852291229e-02, + 9.999811752826011e-01, 6.135884649154475e-03 +}; + +static void fht(FLOAT *fz, int n) +{ + const FLOAT *tri = costab; + int k4; + FLOAT *fi, *fn, *gi; + + n <<= 1; /* to get BLKSIZE, because of 3DNow! ASM routine */ + fn = fz + n; + k4 = 4; + do { + FLOAT s1, c1; + int i, k1, k2, k3, kx; + kx = k4 >> 1; + k1 = k4; + k2 = k4 << 1; + k3 = k2 + k1; + k4 = k2 << 1; + fi = fz; + gi = fi + kx; + do { + FLOAT f0,f1,f2,f3; + f1 = fi[0] - fi[k1]; + f0 = fi[0] + fi[k1]; + f3 = fi[k2] - fi[k3]; + f2 = fi[k2] + fi[k3]; + fi[k2] = f0 - f2; + fi[0 ] = f0 + f2; + fi[k3] = f1 - f3; + fi[k1] = f1 + f3; + f1 = gi[0] - gi[k1]; + f0 = gi[0] + gi[k1]; + f3 = SQRT2 * gi[k3]; + f2 = SQRT2 * gi[k2]; + gi[k2] = f0 - f2; + gi[0 ] = f0 + f2; + gi[k3] = f1 - f3; + gi[k1] = f1 + f3; + gi += k4; + fi += k4; + } while (fi<fn); + c1 = tri[0]; + s1 = tri[1]; + for (i = 1; i < kx; i++) { + FLOAT c2,s2; + c2 = 1 - (2*s1)*s1; + s2 = (2*s1)*c1; + fi = fz + i; + gi = fz + k1 - i; + do { + FLOAT a,b,g0,f0,f1,g1,f2,g2,f3,g3; + b = s2*fi[k1] - c2*gi[k1]; + a = c2*fi[k1] + s2*gi[k1]; + f1 = fi[0 ] - a; + f0 = fi[0 ] + a; + g1 = gi[0 ] - b; + g0 = gi[0 ] + b; + b = s2*fi[k3] - c2*gi[k3]; + a = c2*fi[k3] + s2*gi[k3]; + f3 = fi[k2] - a; + f2 = fi[k2] + a; + g3 = gi[k2] - b; + g2 = gi[k2] + b; + b = s1*f2 - c1*g3; + a = c1*f2 + s1*g3; + fi[k2] = f0 - a; + fi[0 ] = f0 + a; + gi[k3] = g1 - b; + gi[k1] = g1 + b; + b = c1*g2 - s1*f3; + a = s1*g2 + c1*f3; + gi[k2] = g0 - a; + gi[0 ] = g0 + a; + fi[k3] = f1 - b; + fi[k1] = f1 + b; + gi += k4; + fi += k4; + } while (fi<fn); + c2 = c1; + c1 = c2 * tri[0] - s1 * tri[1]; + s1 = c2 * tri[1] + s1 * tri[0]; + } + tri += 2; + } while (k4<n); +} + +static const unsigned char rv_tbl[] = { + 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, + 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, + 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, + 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, + 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, + 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, + 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, + 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, + 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, + 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, + 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, + 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, + 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, + 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, + 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, + 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe +}; + +#define ch01(index) (buffer[chn][index]) + +#define ml00(f) (window[i ] * f(i)) +#define ml10(f) (window[i + 0x200] * f(i + 0x200)) +#define ml20(f) (window[i + 0x100] * f(i + 0x100)) +#define ml30(f) (window[i + 0x300] * f(i + 0x300)) + +#define ml01(f) (window[i + 0x001] * f(i + 0x001)) +#define ml11(f) (window[i + 0x201] * f(i + 0x201)) +#define ml21(f) (window[i + 0x101] * f(i + 0x101)) +#define ml31(f) (window[i + 0x301] * f(i + 0x301)) + +#define ms00(f) (window_s[i ] * f(i + k)) +#define ms10(f) (window_s[0x7f - i] * f(i + k + 0x80)) +#define ms20(f) (window_s[i + 0x40] * f(i + k + 0x40)) +#define ms30(f) (window_s[0x3f - i] * f(i + k + 0xc0)) + +#define ms01(f) (window_s[i + 0x01] * f(i + k + 0x01)) +#define ms11(f) (window_s[0x7e - i] * f(i + k + 0x81)) +#define ms21(f) (window_s[i + 0x41] * f(i + k + 0x41)) +#define ms31(f) (window_s[0x3e - i] * f(i + k + 0xc1)) + + +void fft_short(lame_internal_flags * const gfc, + FLOAT x_real[3][BLKSIZE_s], int chn, const sample_t *buffer[2]) +{ + int i; + int j; + int b; + + for (b = 0; b < 3; b++) { + FLOAT *x = &x_real[b][BLKSIZE_s / 2]; + short k = (576 / 3) * (b + 1); + j = BLKSIZE_s / 8 - 1; + do { + FLOAT f0,f1,f2,f3, w; + + i = rv_tbl[j << 2]; + + f0 = ms00(ch01); w = ms10(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ms20(ch01); w = ms30(ch01); f3 = f2 - w; f2 = f2 + w; + + x -= 4; + x[0] = f0 + f2; + x[2] = f0 - f2; + x[1] = f1 + f3; + x[3] = f1 - f3; + + f0 = ms01(ch01); w = ms11(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ms21(ch01); w = ms31(ch01); f3 = f2 - w; f2 = f2 + w; + + x[BLKSIZE_s / 2 + 0] = f0 + f2; + x[BLKSIZE_s / 2 + 2] = f0 - f2; + x[BLKSIZE_s / 2 + 1] = f1 + f3; + x[BLKSIZE_s / 2 + 3] = f1 - f3; + } while (--j >= 0); + + gfc->fft_fht(x, BLKSIZE_s/2); + /* BLKSIZE_s/2 because of 3DNow! ASM routine */ + } +} + +void fft_long(lame_internal_flags * const gfc, + FLOAT x[BLKSIZE], int chn, const sample_t *buffer[2] ) +{ + int i; + int jj = BLKSIZE / 8 - 1; + x += BLKSIZE / 2; + + do { + FLOAT f0,f1,f2,f3, w; + + i = rv_tbl[jj]; + f0 = ml00(ch01); w = ml10(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ml20(ch01); w = ml30(ch01); f3 = f2 - w; f2 = f2 + w; + + x -= 4; + x[0] = f0 + f2; + x[2] = f0 - f2; + x[1] = f1 + f3; + x[3] = f1 - f3; + + f0 = ml01(ch01); w = ml11(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ml21(ch01); w = ml31(ch01); f3 = f2 - w; f2 = f2 + w; + + x[BLKSIZE / 2 + 0] = f0 + f2; + x[BLKSIZE / 2 + 2] = f0 - f2; + x[BLKSIZE / 2 + 1] = f1 + f3; + x[BLKSIZE / 2 + 3] = f1 - f3; + } while (--jj >= 0); + + gfc->fft_fht(x, BLKSIZE/2); + /* BLKSIZE/2 because of 3DNow! ASM routine */ +} + + +void init_fft(lame_internal_flags * const gfc) +{ + int i; + + /* The type of window used here will make no real difference, but */ + /* in the interest of merging nspsytune stuff - switch to blackman window */ + for (i = 0; i < BLKSIZE ; i++) + /* blackman window */ + window[i] = 0.42-0.5*cos(2*PI*(i+.5)/BLKSIZE)+ + 0.08*cos(4*PI*(i+.5)/BLKSIZE); + + for (i = 0; i < BLKSIZE_s/2 ; i++) + window_s[i] = 0.5 * (1.0 - cos(2.0 * PI * (i + 0.5) / BLKSIZE_s)); + +#ifdef HAVE_NASM + if (gfc->CPU_features.AMD_3DNow) { + extern void fht_3DN(FLOAT *fz, int n); + gfc->fft_fht = fht_3DN; + } else +#endif +#ifdef USE_FFTSSE + if (gfc->CPU_features.SSE) { + extern void fht_SSE(FLOAT *fz, int n); + gfc->fft_fht = fht_SSE; + } else +#endif + gfc->fft_fht = fht; +} + diff --git a/lame-3.97/libmp3lame/.svn/text-base/fft.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/fft.h.svn-base new file mode 100644 index 0000000..6aab6a0 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/fft.h.svn-base @@ -0,0 +1,38 @@ +/* + * Fast Fourier Transform include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_FFT_H +#define LAME_FFT_H + +#include "encoder.h" + +void fft_long(lame_internal_flags* const gfc, FLOAT x_real[BLKSIZE], + int chn, const sample_t *data[2] ); + +void fft_short(lame_internal_flags* const gfc, FLOAT x_real[3][BLKSIZE_s], + int chn, const sample_t *data[2] ); + +void init_fft(lame_internal_flags* const gfc ); + +#endif + +/* End of fft.h */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/gain_analysis.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/gain_analysis.c.svn-base new file mode 100644 index 0000000..dd0a912 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/gain_analysis.c.svn-base @@ -0,0 +1,426 @@ +/* + * ReplayGainAnalysis - analyzes input samples and give the recommended dB change + * Copyright (C) 2001 David Robinson and Glen Sawyer + * Improvements and optimizations added by Frank Klemm, and by Marcel Muller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * concept and filter values by David Robinson (David@Robinson.org) + * -- blame him if you think the idea is flawed + * original coding by Glen Sawyer (mp3gain@hotmail.com) + * -- blame him if you think this runs too slowly, or the coding is otherwise flawed + * + * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ ) + * -- credit him for all the _good_ programming ;) + * + * + * For an explanation of the concepts and the basic algorithms involved, go to: + * http://www.replaygain.org/ + */ + +/* + * Here's the deal. Call + * + * InitGainAnalysis ( long samplefreq ); + * + * to initialize everything. Call + * + * AnalyzeSamples ( const Float_t* left_samples, + * const Float_t* right_samples, + * size_t num_samples, + * int num_channels ); + * + * as many times as you want, with as many or as few samples as you want. + * If mono, pass the sample buffer in through left_samples, leave + * right_samples NULL, and make sure num_channels = 1. + * + * GetTitleGain() + * + * will return the recommended dB level change for all samples analyzed + * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis(). + * + * GetAlbumGain() + * + * will return the recommended dB level change for all samples analyzed + * since InitGainAnalysis() was called and finalized with GetTitleGain(). + * + * Pseudo-code to process an album: + * + * Float_t l_samples [4096]; + * Float_t r_samples [4096]; + * size_t num_samples; + * unsigned int num_songs; + * unsigned int i; + * + * InitGainAnalysis ( 44100 ); + * for ( i = 1; i <= num_songs; i++ ) { + * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 ) + * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 ); + * fprintf ("Recommended dB change for song %2d: %+6.2f dB\n", i, GetTitleGain() ); + * } + * fprintf ("Recommended dB change for whole album: %+6.2f dB\n", GetAlbumGain() ); + */ + +/* + * So here's the main source of potential code confusion: + * + * The filters applied to the incoming samples are IIR filters, + * meaning they rely on up to <filter order> number of previous samples + * AND up to <filter order> number of previous filtered samples. + * + * I set up the AnalyzeSamples routine to minimize memory usage and interface + * complexity. The speed isn't compromised too much (I don't think), but the + * internal complexity is higher than it should be for such a relatively + * simple routine. + * + * Optimization/clarity suggestions are welcome. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include "machine.h" +#include "gain_analysis.h" + +/* for each filter: */ +/* [0] 48 kHz, [1] 44.1 kHz, [2] 32 kHz, [3] 24 kHz, [4] 22050 Hz, [5] 16 kHz, [6] 12 kHz, [7] is 11025 Hz, [8] 8 kHz */ + +#ifdef WIN32 +#pragma warning ( disable : 4305 ) +#endif + +static const Float_t ABYule[9][2*YULE_ORDER + 1] = { + {0.03857599435200, -3.84664617118067, -0.02160367184185, 7.81501653005538, -0.00123395316851,-11.34170355132042, -0.00009291677959, 13.05504219327545, -0.01655260341619,-12.28759895145294, 0.02161526843274, 9.48293806319790, -0.02074045215285, -5.87257861775999, 0.00594298065125, 2.75465861874613, 0.00306428023191, -0.86984376593551, 0.00012025322027, 0.13919314567432, 0.00288463683916 }, + {0.05418656406430, -3.47845948550071, -0.02911007808948, 6.36317777566148, -0.00848709379851, -8.54751527471874, -0.00851165645469, 9.47693607801280, -0.00834990904936, -8.81498681370155, 0.02245293253339, 6.85401540936998, -0.02596338512915, -4.39470996079559, 0.01624864962975, 2.19611684890774, -0.00240879051584, -0.75104302451432, 0.00674613682247, 0.13149317958808, -0.00187763777362 }, + {0.15457299681924, -2.37898834973084, -0.09331049056315, 2.84868151156327, -0.06247880153653, -2.64577170229825, 0.02163541888798, 2.23697657451713, -0.05588393329856, -1.67148153367602, 0.04781476674921, 1.00595954808547, 0.00222312597743, -0.45953458054983, 0.03174092540049, 0.16378164858596, -0.01390589421898, -0.05032077717131, 0.00651420667831, 0.02347897407020, -0.00881362733839 }, + {0.30296907319327, -1.61273165137247, -0.22613988682123, 1.07977492259970, -0.08587323730772, -0.25656257754070, 0.03282930172664, -0.16276719120440, -0.00915702933434, -0.22638893773906, -0.02364141202522, 0.39120800788284, -0.00584456039913, -0.22138138954925, 0.06276101321749, 0.04500235387352, -0.00000828086748, 0.02005851806501, 0.00205861885564, 0.00302439095741, -0.02950134983287 }, + {0.33642304856132, -1.49858979367799, -0.25572241425570, 0.87350271418188, -0.11828570177555, 0.12205022308084, 0.11921148675203, -0.80774944671438, -0.07834489609479, 0.47854794562326, -0.00469977914380, -0.12453458140019, -0.00589500224440, -0.04067510197014, 0.05724228140351, 0.08333755284107, 0.00832043980773, -0.04237348025746, -0.01635381384540, 0.02977207319925, -0.01760176568150 }, + {0.44915256608450, -0.62820619233671, -0.14351757464547, 0.29661783706366, -0.22784394429749, -0.37256372942400, -0.01419140100551, 0.00213767857124, 0.04078262797139, -0.42029820170918, -0.12398163381748, 0.22199650564824, 0.04097565135648, 0.00613424350682, 0.10478503600251, 0.06747620744683, -0.01863887810927, 0.05784820375801, -0.03193428438915, 0.03222754072173, 0.00541907748707 }, + {0.56619470757641, -1.04800335126349, -0.75464456939302, 0.29156311971249, 0.16242137742230, -0.26806001042947, 0.16744243493672, 0.00819999645858, -0.18901604199609, 0.45054734505008, 0.30931782841830, -0.33032403314006, -0.27562961986224, 0.06739368333110, 0.00647310677246, -0.04784254229033, 0.08647503780351, 0.01639907836189, -0.03788984554840, 0.01807364323573, -0.00588215443421 }, + {0.58100494960553, -0.51035327095184, -0.53174909058578, -0.31863563325245, -0.14289799034253, -0.20256413484477, 0.17520704835522, 0.14728154134330, 0.02377945217615, 0.38952639978999, 0.15558449135573, -0.23313271880868, -0.25344790059353, -0.05246019024463, 0.01628462406333, -0.02505961724053, 0.06920467763959, 0.02442357316099, -0.03721611395801, 0.01818801111503, -0.00749618797172 }, + {0.53648789255105, -0.25049871956020, -0.42163034350696, -0.43193942311114, -0.00275953611929, -0.03424681017675, 0.04267842219415, -0.04678328784242, -0.10214864179676, 0.26408300200955, 0.14590772289388, 0.15113130533216, -0.02459864859345, -0.17556493366449, -0.11202315195388, -0.18823009262115, -0.04060034127000, 0.05477720428674, 0.04788665548180, 0.04704409688120, -0.02217936801134 } +}; + +static const Float_t ABButter[9][2*BUTTER_ORDER + 1] = { + {0.98621192462708, -1.97223372919527, -1.97242384925416, 0.97261396931306, 0.98621192462708 }, + {0.98500175787242, -1.96977855582618, -1.97000351574484, 0.97022847566350, 0.98500175787242 }, + {0.97938932735214, -1.95835380975398, -1.95877865470428, 0.95920349965459, 0.97938932735214 }, + {0.97531843204928, -1.95002759149878, -1.95063686409857, 0.95124613669835, 0.97531843204928 }, + {0.97316523498161, -1.94561023566527, -1.94633046996323, 0.94705070426118, 0.97316523498161 }, + {0.96454515552826, -1.92783286977036, -1.92909031105652, 0.93034775234268, 0.96454515552826 }, + {0.96009142950541, -1.91858953033784, -1.92018285901082, 0.92177618768381, 0.96009142950541 }, + {0.95856916599601, -1.91542108074780, -1.91713833199203, 0.91885558323625, 0.95856916599601 }, + {0.94597685600279, -1.88903307939452, -1.89195371200558, 0.89487434461664, 0.94597685600279 } +}; + + +#ifdef WIN32 +#pragma warning ( default : 4305 ) +#endif + +/* When calling this procedure, make sure that ip[-order] and op[-order] point to real data! */ + +static void +filterYule (const Float_t* input, Float_t* output, size_t nSamples, const Float_t* kernel) +{ + /*register double y;*/ + + while (nSamples--) { + *output = 1e-10 /* 1e-10 is a hack to avoid slowdown because of denormals */ + + input [0] * kernel[0] + - output[-1] * kernel[1] + + input [-1] * kernel[2] + - output[-2] * kernel[3] + + input [-2] * kernel[4] + - output[-3] * kernel[5] + + input [-3] * kernel[6] + - output[-4] * kernel[7] + + input [-4] * kernel[8] + - output[-5] * kernel[9] + + input [-5] * kernel[10] + - output[-6] * kernel[11] + + input [-6] * kernel[12] + - output[-7] * kernel[13] + + input [-7] * kernel[14] + - output[-8] * kernel[15] + + input [-8] * kernel[16] + - output[-9] * kernel[17] + + input [-9] * kernel[18] + - output[-10]* kernel[19] + + input [-10]* kernel[20]; + ++output; + ++input; + /* *output++ = (Float_t)y; */ + } +} + +static void +filterButter (const Float_t* input, Float_t* output, size_t nSamples, const Float_t* kernel) +{ /*register double y;*/ + + while (nSamples--) { + *output = input [0] * kernel[0] + - output[-1] * kernel[1] + + input [-1] * kernel[2] + - output[-2] * kernel[3] + + input [-2] * kernel[4]; + ++output; + ++input; + /* *output++ = (Float_t)y; */ + } +} + + +/* returns a INIT_GAIN_ANALYSIS_OK if successful, INIT_GAIN_ANALYSIS_ERROR if not */ + +int +ResetSampleFrequency (replaygain_t* rgData, long samplefreq ) { + int i; + + /* zero out initial values */ + for ( i = 0; i < MAX_ORDER; i++ ) + rgData->linprebuf[i] = rgData->lstepbuf[i] + = rgData->loutbuf[i] + = rgData->rinprebuf[i] + = rgData->rstepbuf[i] + = rgData->routbuf[i] = 0.; + + switch ( (int)(samplefreq) ) { + case 48000: rgData->freqindex = 0; break; + case 44100: rgData->freqindex = 1; break; + case 32000: rgData->freqindex = 2; break; + case 24000: rgData->freqindex = 3; break; + case 22050: rgData->freqindex = 4; break; + case 16000: rgData->freqindex = 5; break; + case 12000: rgData->freqindex = 6; break; + case 11025: rgData->freqindex = 7; break; + case 8000: rgData->freqindex = 8; break; + default: return INIT_GAIN_ANALYSIS_ERROR; + } + + rgData->sampleWindow = (samplefreq * RMS_WINDOW_TIME_NUMERATOR + RMS_WINDOW_TIME_DENOMINATOR-1) / RMS_WINDOW_TIME_DENOMINATOR; + + rgData->lsum = 0.; + rgData->rsum = 0.; + rgData->totsamp = 0; + + memset ( rgData->A, 0, sizeof(rgData->A) ); + + return INIT_GAIN_ANALYSIS_OK; +} + +int +InitGainAnalysis (replaygain_t* rgData, long samplefreq ) +{ + if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) { + return INIT_GAIN_ANALYSIS_ERROR; + } + + rgData->linpre = rgData->linprebuf + MAX_ORDER; + rgData->rinpre = rgData->rinprebuf + MAX_ORDER; + rgData->lstep = rgData->lstepbuf + MAX_ORDER; + rgData->rstep = rgData->rstepbuf + MAX_ORDER; + rgData->lout = rgData->loutbuf + MAX_ORDER; + rgData->rout = rgData->routbuf + MAX_ORDER; + + memset ( rgData->B, 0, sizeof(rgData->B) ); + + return INIT_GAIN_ANALYSIS_OK; +} + +/* returns GAIN_ANALYSIS_OK if successful, GAIN_ANALYSIS_ERROR if not */ + +static __inline double fsqr(const double d) +{ return d*d; +} + +int +AnalyzeSamples (replaygain_t* rgData, const Float_t* left_samples, const Float_t* right_samples, size_t num_samples, int num_channels ) +{ + const Float_t* curleft; + const Float_t* curright; + long batchsamples; + long cursamples; + long cursamplepos; + int i; + + if ( num_samples == 0 ) + return GAIN_ANALYSIS_OK; + + cursamplepos = 0; + batchsamples = num_samples; + + switch ( num_channels) { + case 1: right_samples = left_samples; + case 2: break; + default: return GAIN_ANALYSIS_ERROR; + } + + if ( num_samples < MAX_ORDER ) { + memcpy ( rgData->linprebuf + MAX_ORDER, left_samples , num_samples * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf + MAX_ORDER, right_samples, num_samples * sizeof(Float_t) ); + } + else { + memcpy ( rgData->linprebuf + MAX_ORDER, left_samples, MAX_ORDER * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf + MAX_ORDER, right_samples, MAX_ORDER * sizeof(Float_t) ); + } + + while ( batchsamples > 0 ) { + cursamples = batchsamples > rgData->sampleWindow - rgData->totsamp ? + rgData->sampleWindow - rgData->totsamp : + batchsamples; + if ( cursamplepos < MAX_ORDER ) { + curleft = rgData->linpre+cursamplepos; + curright = rgData->rinpre+cursamplepos; + if (cursamples > MAX_ORDER - cursamplepos ) + cursamples = MAX_ORDER - cursamplepos; + } + else { + curleft = left_samples + cursamplepos; + curright = right_samples + cursamplepos; + } + + YULE_FILTER ( curleft , rgData->lstep + rgData->totsamp, cursamples, ABYule[rgData->freqindex]); + YULE_FILTER ( curright, rgData->rstep + rgData->totsamp, cursamples, ABYule[rgData->freqindex]); + + BUTTER_FILTER ( rgData->lstep + rgData->totsamp, rgData->lout + rgData->totsamp, cursamples, ABButter[rgData->freqindex]); + BUTTER_FILTER ( rgData->rstep + rgData->totsamp, rgData->rout + rgData->totsamp, cursamples, ABButter[rgData->freqindex]); + + curleft = rgData->lout + rgData->totsamp; /* Get the squared values */ + curright = rgData->rout + rgData->totsamp; + + i = cursamples % 8; + while (i--) + { rgData->lsum += fsqr(*curleft++); + rgData->rsum += fsqr(*curright++); + } + i = cursamples / 8; + while (i--) + { rgData->lsum += fsqr(curleft[0]) + + fsqr(curleft[1]) + + fsqr(curleft[2]) + + fsqr(curleft[3]) + + fsqr(curleft[4]) + + fsqr(curleft[5]) + + fsqr(curleft[6]) + + fsqr(curleft[7]); + curleft += 8; + rgData->rsum += fsqr(curright[0]) + + fsqr(curright[1]) + + fsqr(curright[2]) + + fsqr(curright[3]) + + fsqr(curright[4]) + + fsqr(curright[5]) + + fsqr(curright[6]) + + fsqr(curright[7]); + curright += 8; + } + + batchsamples -= cursamples; + cursamplepos += cursamples; + rgData->totsamp += cursamples; + if ( rgData->totsamp == rgData->sampleWindow ) { /* Get the Root Mean Square (RMS) for this set of samples */ + double val = STEPS_per_dB * 10. * log10 ( (rgData->lsum+rgData->rsum) / rgData->totsamp * 0.5 + 1.e-37 ); + int ival = (int) val; + if ( ival < 0 ) ival = 0; + if ( ival >= sizeof(rgData->A)/sizeof(*(rgData->A)) ) ival = sizeof(rgData->A)/sizeof(*(rgData->A)) - 1; + rgData->A [ival]++; + rgData->lsum = rgData->rsum = 0.; + memmove ( rgData->loutbuf , rgData->loutbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + memmove ( rgData->routbuf , rgData->routbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + memmove ( rgData->lstepbuf, rgData->lstepbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + memmove ( rgData->rstepbuf, rgData->rstepbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + rgData->totsamp = 0; + } + if ( rgData->totsamp > rgData->sampleWindow ) /* somehow I really screwed up: Error in programming! Contact author about totsamp > sampleWindow */ + return GAIN_ANALYSIS_ERROR; + } + if ( num_samples < MAX_ORDER ) { + memmove ( rgData->linprebuf, rgData->linprebuf + num_samples, (MAX_ORDER-num_samples) * sizeof(Float_t) ); + memmove ( rgData->rinprebuf, rgData->rinprebuf + num_samples, (MAX_ORDER-num_samples) * sizeof(Float_t) ); + memcpy ( rgData->linprebuf + MAX_ORDER - num_samples, left_samples, num_samples * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf + MAX_ORDER - num_samples, right_samples, num_samples * sizeof(Float_t) ); + } + else { + memcpy ( rgData->linprebuf, left_samples + num_samples - MAX_ORDER, MAX_ORDER * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf, right_samples + num_samples - MAX_ORDER, MAX_ORDER * sizeof(Float_t) ); + } + + return GAIN_ANALYSIS_OK; +} + + +static Float_t +analyzeResult ( uint32_t* Array, size_t len ) +{ + uint32_t elems; + int32_t upper; + size_t i; + + elems = 0; + for ( i = 0; i < len; i++ ) + elems += Array[i]; + if ( elems == 0 ) + return GAIN_NOT_ENOUGH_SAMPLES; + + upper = (int32_t) ceil (elems * (1. - RMS_PERCENTILE)); + for ( i = len; i-- > 0; ) { + if ( (upper -= Array[i]) <= 0 ) + break; + } + + return (Float_t) ((Float_t)PINK_REF - (Float_t)i / (Float_t)STEPS_per_dB); +} + + +Float_t +GetTitleGain (replaygain_t* rgData) +{ + Float_t retval; + int i; + + retval = analyzeResult ( rgData->A, sizeof(rgData->A)/sizeof(*(rgData->A)) ); + + for ( i = 0; i < sizeof(rgData->A)/sizeof(*(rgData->A)); i++ ) { + rgData->B[i] += rgData->A[i]; + rgData->A[i] = 0; + } + + for ( i = 0; i < MAX_ORDER; i++ ) + rgData->linprebuf[i] = rgData->lstepbuf[i] + = rgData->loutbuf[i] + = rgData->rinprebuf[i] + = rgData->rstepbuf[i] + = rgData->routbuf[i] = 0.f; + + rgData->totsamp = 0; + rgData->lsum = rgData->rsum = 0.; + return retval; +} + + +Float_t +GetAlbumGain (replaygain_t* rgData) +{ + return analyzeResult ( rgData->B, sizeof(rgData->B)/sizeof(*(rgData->B)) ); +} + +/* end of gain_analysis.c */ diff --git a/lame-3.97/libmp3lame/.svn/text-base/gain_analysis.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/gain_analysis.h.svn-base new file mode 100644 index 0000000..93cc1b2 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/gain_analysis.h.svn-base @@ -0,0 +1,114 @@ +/* + * ReplayGainAnalysis - analyzes input samples and give the recommended dB change + * Copyright (C) 2001 David Robinson and Glen Sawyer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * concept and filter values by David Robinson (David@Robinson.org) + * -- blame him if you think the idea is flawed + * coding by Glen Sawyer (mp3gain@hotmail.com) 735 W 255 N, Orem, UT 84057-4505 USA + * -- blame him if you think this runs too slowly, or the coding is otherwise flawed + * + * For an explanation of the concepts and the basic algorithms involved, go to: + * http://www.replaygain.org/ + */ + +#ifndef GAIN_ANALYSIS_H +#define GAIN_ANALYSIS_H + +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef sample_t Float_t; /* Type used for filtering */ + +#define GAIN_NOT_ENOUGH_SAMPLES -24601 +#define GAIN_ANALYSIS_ERROR 0 +#define GAIN_ANALYSIS_OK 1 + +#define INIT_GAIN_ANALYSIS_ERROR 0 +#define INIT_GAIN_ANALYSIS_OK 1 + +#define PINK_REF 64.82 /* 298640883795 */ /* calibration value for 89dB*/ + + +#define YULE_ORDER 10 +#define BUTTER_ORDER 2 +#define YULE_FILTER filterYule +#define BUTTER_FILTER filterButter +#define RMS_PERCENTILE 0.95 /* percentile which is louder than the proposed level */ +#define MAX_SAMP_FREQ 48000L /* maximum allowed sample frequency [Hz] */ +#define RMS_WINDOW_TIME_NUMERATOR 1L +#define RMS_WINDOW_TIME_DENOMINATOR 20L /* numerator / denominator = time slice size [s] */ +#define STEPS_per_dB 100. /* Table entries per dB */ +#define MAX_dB 120. /* Table entries for 0...MAX_dB (normal max. values are 70...80 dB) */ + +#define MAX_ORDER (BUTTER_ORDER > YULE_ORDER ? BUTTER_ORDER : YULE_ORDER) +#define MAX_SAMPLES_PER_WINDOW (size_t) ((MAX_SAMP_FREQ * RMS_WINDOW_TIME_NUMERATOR) / RMS_WINDOW_TIME_DENOMINATOR + 1) /* max. Samples per Time slice */ + + + + +typedef struct +{ + Float_t linprebuf [MAX_ORDER * 2]; + Float_t* linpre; /* left input samples, with pre-buffer */ + Float_t lstepbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* lstep; /* left "first step" (i.e. post first filter) samples */ + Float_t loutbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* lout; /* left "out" (i.e. post second filter) samples */ + Float_t rinprebuf [MAX_ORDER * 2]; + Float_t* rinpre; /* right input samples ... */ + Float_t rstepbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* rstep; + Float_t routbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* rout; + long sampleWindow; /* number of samples required to reach number of milliseconds required for RMS window */ + long totsamp; + double lsum; + double rsum; + int freqindex; + int first; + uint32_t A [(size_t)(STEPS_per_dB * MAX_dB)]; + uint32_t B [(size_t)(STEPS_per_dB * MAX_dB)]; + +} replaygain_t; + + + + + + +int InitGainAnalysis (replaygain_t* rgData, long samplefreq ); +int AnalyzeSamples (replaygain_t* rgData, const Float_t* left_samples, const Float_t* right_samples, size_t num_samples, int num_channels ); +int ResetSampleFrequency (replaygain_t* rgData, long samplefreq ); +Float_t GetTitleGain (replaygain_t* rgData); +Float_t GetAlbumGain (replaygain_t* rgData); + + +#ifdef __cplusplus +} +#endif + +#endif /* GAIN_ANALYSIS_H */ diff --git a/lame-3.97/libmp3lame/.svn/text-base/id3tag.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/id3tag.c.svn-base new file mode 100644 index 0000000..04ae7b8 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/id3tag.c.svn-base @@ -0,0 +1,557 @@ +/* + * id3tag.c -- Write ID3 version 1 and 2 tags. + * + * Copyright (C) 2000 Don Melton. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +/* + * HISTORY: This source file is part of LAME (see http://www.mp3dev.org/mp3/) + * and was originally adapted by Conrad Sanderson <c.sanderson@me.gu.edu.au> + * from mp3info by Ricardo Cerqueira <rmc@rccn.net> to write only ID3 version 1 + * tags. Don Melton <don@blivet.com> COMPLETELY rewrote it to support version + * 2 tags and be more conformant to other standards while remaining flexible. + * + * NOTE: See http://id3.org/ for more information about ID3 tag formats. + */ + +/* $Id: id3tag.c,v 1.23.4.1 2006/01/21 16:29:37 takehiro Exp $ */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef STDC_HEADERS +# include <stddef.h> +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + + +#ifdef _MSC_VER +#define snprintf _snprintf +#endif + + +#include "lame.h" +#include "id3tag.h" +#include "util.h" +#include "bitstream.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +static const char *const genre_names[] = +{ + /* + * NOTE: The spelling of these genre names is identical to those found in + * Winamp and mp3info. + */ + "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", + "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", + "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", + "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", + "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", "Instrumental", + "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", "Alt. Rock", + "Bass", "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", + "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", + "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", + "Cult", "Gangsta Rap", "Top 40", "Christian Rap", "Pop/Funk", "Jungle", + "Native American", "Cabaret", "New Wave", "Psychedelic", "Rave", + "Showtunes", "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", + "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock", "Folk", + "Folk/Rock", "National Folk", "Swing", "Fast-Fusion", "Bebob", "Latin", + "Revival", "Celtic", "Bluegrass", "Avantgarde", "Gothic Rock", + "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", + "Big Band", "Chorus", "Easy Listening", "Acoustic", "Humour", "Speech", + "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", + "Primus", "Porn Groove", "Satire", "Slow Jam", "Club", "Tango", "Samba", + "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle", "Duet", + "Punk Rock", "Drum Solo", "A Cappella", "Euro-House", "Dance Hall", + "Goa", "Drum & Bass", "Club-House", "Hardcore", "Terror", "Indie", + "BritPop", "Negerpunk", "Polsk Punk", "Beat", "Christian Gangsta Rap", + "Heavy Metal", "Black Metal", "Crossover", "Contemporary Christian", + "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", + "Synthpop" +}; + +#define GENRE_NAME_COUNT \ + ((int)(sizeof genre_names / sizeof (const char *const))) + +static const int genre_alpha_map [] = { + 123, 34, 74, 73, 99, 20, 40, 26, 145, 90, 116, 41, 135, 85, 96, 138, 89, 0, + 107, 132, 65, 88, 104, 102, 97, 136, 61, 141, 32, 1, 112, 128, 57, 140, 2, + 139, 58, 3, 125, 50, 22, 4, 55, 127, 122, 120, 98, 52, 48, 54, 124, 25, 84, + 80, 115, 81, 119, 5, 30, 36, 59, 126, 38, 49, 91, 6, 129, 79, 137, 7, 35, + 100, 131, 19, 33, 46, 47, 8, 29, 146, 63, 86, 71, 45, 142, 9, 77, 82, 64, + 133, 10, 66, 39, 11, 103, 12, 75, 134, 13, 53, 62, 109, 117, 23, 108, 92, + 67, 93, 43, 121, 15, 68, 14, 16, 76, 87, 118, 17, 78, 143, 114, 110, 69, 21, + 111, 95, 105, 42, 37, 24, 56, 44, 101, 83, 94, 106, 147, 113, 18, 51, 130, + 144, 60, 70, 31, 72, 27, 28 +}; + +#define GENRE_ALPHA_COUNT ((int)(sizeof genre_alpha_map / sizeof (int))) + +void +id3tag_genre_list(void (*handler)(int, const char *, void *), void *cookie) +{ + if (handler) { + int i; + for (i = 0; i < GENRE_NAME_COUNT; ++i) { + if (i < GENRE_ALPHA_COUNT) { + int j = genre_alpha_map[i]; + handler(j, genre_names[j], cookie); + } + } + } +} + +#define GENRE_NUM_UNKNOWN 255 + +void +id3tag_init(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + memset(&gfc->tag_spec, 0, sizeof gfc->tag_spec); + gfc->tag_spec.genre = GENRE_NUM_UNKNOWN; +} + + + +void +id3tag_add_v2(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V1_ONLY_FLAG; + gfc->tag_spec.flags |= ADD_V2_FLAG; +} + +void +id3tag_v1_only(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~(ADD_V2_FLAG | V2_ONLY_FLAG); + gfc->tag_spec.flags |= V1_ONLY_FLAG; +} + +void +id3tag_v2_only(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V1_ONLY_FLAG; + gfc->tag_spec.flags |= V2_ONLY_FLAG; +} + +void +id3tag_space_v1(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V2_ONLY_FLAG; + gfc->tag_spec.flags |= SPACE_V1_FLAG; +} + +void +id3tag_pad_v2(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V1_ONLY_FLAG; + gfc->tag_spec.flags |= PAD_V2_FLAG; +} + +void +id3tag_set_title(lame_global_flags *gfp, const char *title) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (title && *title) { + gfc->tag_spec.title = title; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_artist(lame_global_flags *gfp, const char *artist) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (artist && *artist) { + gfc->tag_spec.artist = artist; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_album(lame_global_flags *gfp, const char *album) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (album && *album) { + gfc->tag_spec.album = album; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_year(lame_global_flags *gfp, const char *year) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (year && *year) { + int num = atoi(year); + if (num < 0) { + num = 0; + } + /* limit a year to 4 digits so it fits in a version 1 tag */ + if (num > 9999) { + num = 9999; + } + if (num) { + gfc->tag_spec.year = num; + gfc->tag_spec.flags |= CHANGED_FLAG; + } + } +} + +void +id3tag_set_comment(lame_global_flags *gfp, const char *comment) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (comment && *comment) { + gfc->tag_spec.comment = comment; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_track(lame_global_flags *gfp, const char *track) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (track && *track) { + int num = atoi(track); + if (num < 0) { + num = 0; + } + /* limit a track to 255 so it fits in a version 1 tag even though CD + * audio doesn't allow more than 99 tracks */ + if (num > 255) { + num = 255; + } + if (num) { + gfc->tag_spec.track = num; + gfc->tag_spec.flags |= CHANGED_FLAG; + } + } +} + +/* would use real "strcasecmp" but it isn't portable */ +static int +local_strcasecmp(const char *s1, const char *s2) +{ + unsigned char c1; + unsigned char c2; + do { + c1 = tolower(*s1); + c2 = tolower(*s2); + if (!c1) { + break; + } + ++s1; + ++s2; + } while (c1 == c2); + return c1 - c2; +} + +int +id3tag_set_genre(lame_global_flags *gfp, const char *genre) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (genre && *genre) { + char *str; + int num = strtol(genre, &str, 10); + /* is the input a string or a valid number? */ + if (*str) { + int i; + for (i = 0; i < GENRE_NAME_COUNT; ++i) { + if (!local_strcasecmp(genre, genre_names[i])) { + num = i; + break; + } + } + if (i == GENRE_NAME_COUNT) { + return -1; + } + } else if ((num < 0) || (num >= GENRE_NAME_COUNT)) { + return -1; + } + gfc->tag_spec.genre = num; + gfc->tag_spec.flags |= CHANGED_FLAG; + } + return 0; +} + +static unsigned char * +set_4_byte_value(unsigned char *bytes, unsigned long value) +{ + int index; + for (index = 3; index >= 0; --index) { + bytes[index] = value & 0xfful; + value >>= 8; + } + return bytes + 4; +} + +#define FRAME_ID(a, b, c, d) \ + ( ((unsigned long)(a) << 24) \ + | ((unsigned long)(b) << 16) \ + | ((unsigned long)(c) << 8) \ + | ((unsigned long)(d) << 0) ) +#define TITLE_FRAME_ID FRAME_ID('T', 'I', 'T', '2') +#define ARTIST_FRAME_ID FRAME_ID('T', 'P', 'E', '1') +#define ALBUM_FRAME_ID FRAME_ID('T', 'A', 'L', 'B') +#define YEAR_FRAME_ID FRAME_ID('T', 'Y', 'E', 'R') +#define COMMENT_FRAME_ID FRAME_ID('C', 'O', 'M', 'M') +#define TRACK_FRAME_ID FRAME_ID('T', 'R', 'C', 'K') +#define GENRE_FRAME_ID FRAME_ID('T', 'C', 'O', 'N') +#define ENCODER_FRAME_ID FRAME_ID('T', 'S', 'S', 'E') + +static unsigned char * +set_frame(unsigned char *frame, unsigned long id, const char *text, + size_t length) +{ + if (length) { + frame = set_4_byte_value(frame, id); + /* Set frame size = total size - header size. Frame header and field + * bytes include 2-byte header flags, 1 encoding descriptor byte, and + * for comment frames: 3-byte language descriptor and 1 content + * descriptor byte */ + frame = set_4_byte_value(frame, ((id == COMMENT_FRAME_ID) ? 5 : 1) + + length); + /* clear 2-byte header flags */ + *frame++ = 0; + *frame++ = 0; + /* clear 1 encoding descriptor byte to indicate ISO-8859-1 format */ + *frame++ = 0; + if (id == COMMENT_FRAME_ID) { + /* use id3lib-compatible bogus language descriptor */ + *frame++ = 'X'; + *frame++ = 'X'; + *frame++ = 'X'; + /* clear 1 byte to make content descriptor empty string */ + *frame++ = 0; + } + while (length--) { + *frame++ = *text++; + } + } + return frame; +} + +int +id3tag_write_v2(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if ((gfc->tag_spec.flags & CHANGED_FLAG) + && !(gfc->tag_spec.flags & V1_ONLY_FLAG)) { + /* calculate length of four fields which may not fit in verion 1 tag */ + size_t title_length = gfc->tag_spec.title + ? strlen(gfc->tag_spec.title) : 0; + size_t artist_length = gfc->tag_spec.artist + ? strlen(gfc->tag_spec.artist) : 0; + size_t album_length = gfc->tag_spec.album + ? strlen(gfc->tag_spec.album) : 0; + size_t comment_length = gfc->tag_spec.comment + ? strlen(gfc->tag_spec.comment) : 0; + /* write tag if explicitly requested or if fields overflow */ + if ((gfc->tag_spec.flags & (ADD_V2_FLAG | V2_ONLY_FLAG)) + || (title_length > 30) + || (artist_length > 30) || (album_length > 30) + || (comment_length > 30) + || (gfc->tag_spec.track && (comment_length > 28))) { + size_t tag_size; + char encoder[20]; + size_t encoder_length; + char year[5]; + size_t year_length; + char track[4]; + size_t track_length; + char genre[6]; + size_t genre_length; + unsigned char *tag; + unsigned char *p; + size_t adjusted_tag_size; + unsigned int index; + /* calulate size of tag starting with 10-byte tag header */ + tag_size = 10; +#if defined(__hpux) || defined(__svr4__) || defined(M_UNIX) || defined(_AIX) + encoder_length = sprintf(encoder, + "LAME v%s", get_lame_short_version()); +#else +#if defined(__sun__) + (void) sprintf(encoder, "LAME v%s", get_lame_short_version()); + encoder_length = strlen(encoder); +#else + encoder_length = snprintf(encoder, sizeof(encoder), + "LAME v%s", get_lame_short_version()); +#endif +#endif + tag_size += 11 + encoder_length; + if (title_length) { + /* add 10-byte frame header, 1 encoding descriptor byte ... */ + tag_size += 11 + title_length; + } + if (artist_length) { + tag_size += 11 + artist_length; + } + if (album_length) { + tag_size += 11 + album_length; + } + if (gfc->tag_spec.year) { + year_length = sprintf(year, "%d", gfc->tag_spec.year); + tag_size += 11 + year_length; + } else { + year_length = 0; + } + if (comment_length) { + /* add 10-byte frame header, 1 encoding descriptor byte, + * 3-byte language descriptor, 1 content descriptor byte ... */ + tag_size += 15 + comment_length; + } + if (gfc->tag_spec.track) { + track_length = sprintf(track, "%d", gfc->tag_spec.track); + tag_size += 11 + track_length; + } else { + track_length = 0; + } + if (gfc->tag_spec.genre != GENRE_NUM_UNKNOWN) { + genre_length = sprintf(genre, "(%d)", gfc->tag_spec.genre); + tag_size += 11 + genre_length; + } else { + genre_length = 0; + } + if (gfc->tag_spec.flags & PAD_V2_FLAG) { + /* add 128 bytes of padding */ + tag_size += 128; + } + tag = (unsigned char *)malloc(tag_size); + if (!tag) { + return -1; + } + p = tag; + /* set tag header starting with file identifier */ + *p++ = 'I'; *p++ = 'D'; *p++ = '3'; + /* set version number word */ + *p++ = 3; *p++ = 0; + /* clear flags byte */ + *p++ = 0; + /* calculate and set tag size = total size - header size */ + adjusted_tag_size = tag_size - 10; + /* encode adjusted size into four bytes where most significant + * bit is clear in each byte, for 28-bit total */ + *p++ = (adjusted_tag_size >> 21) & 0x7fu; + *p++ = (adjusted_tag_size >> 14) & 0x7fu; + *p++ = (adjusted_tag_size >> 7) & 0x7fu; + *p++ = adjusted_tag_size & 0x7fu; + + /* + * NOTE: The remainder of the tag (frames and padding, if any) + * are not "unsynchronized" to prevent false MPEG audio headers + * from appearing in the bitstream. Why? Well, most players + * and utilities know how to skip the ID3 version 2 tag by now + * even if they don't read its contents, and it's actually + * very unlikely that such a false "sync" pattern would occur + * in just the simple text frames added here. + */ + + /* set each frame in tag */ + p = set_frame(p, ENCODER_FRAME_ID, encoder, encoder_length); + p = set_frame(p, TITLE_FRAME_ID, gfc->tag_spec.title, title_length); + p = set_frame(p, ARTIST_FRAME_ID, gfc->tag_spec.artist, + artist_length); + p = set_frame(p, ALBUM_FRAME_ID, gfc->tag_spec.album, album_length); + p = set_frame(p, YEAR_FRAME_ID, year, year_length); + p = set_frame(p, COMMENT_FRAME_ID, gfc->tag_spec.comment, + comment_length); + p = set_frame(p, TRACK_FRAME_ID, track, track_length); + p = set_frame(p, GENRE_FRAME_ID, genre, genre_length); + /* clear any padding bytes */ + memset(p, 0, tag_size - (p - tag)); + /* write tag directly into bitstream at current position */ + for (index = 0; index < tag_size; ++index) { + add_dummy_byte(gfp, tag[index]); + } + free(tag); + return tag_size; + } + } + return 0; +} + +static unsigned char * +set_text_field(unsigned char *field, const char *text, size_t size, int pad) +{ + while (size--) { + if (text && *text) { + *field++ = *text++; + } else { + *field++ = pad; + } + } + return field; +} + +int +id3tag_write_v1(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if ((gfc->tag_spec.flags & CHANGED_FLAG) + && !(gfc->tag_spec.flags & V2_ONLY_FLAG)) { + unsigned char tag[128]; + unsigned char *p = tag; + int pad = (gfc->tag_spec.flags & SPACE_V1_FLAG) ? ' ' : 0; + char year[5]; + unsigned int index; + /* set tag identifier */ + *p++ = 'T'; *p++ = 'A'; *p++ = 'G'; + /* set each field in tag */ + p = set_text_field(p, gfc->tag_spec.title, 30, pad); + p = set_text_field(p, gfc->tag_spec.artist, 30, pad); + p = set_text_field(p, gfc->tag_spec.album, 30, pad); + sprintf(year, "%d", gfc->tag_spec.year); + p = set_text_field(p, gfc->tag_spec.year ? year : NULL, 4, pad); + /* limit comment field to 28 bytes if a track is specified */ + p = set_text_field(p, gfc->tag_spec.comment, gfc->tag_spec.track + ? 28 : 30, pad); + if (gfc->tag_spec.track) { + /* clear the next byte to indicate a version 1.1 tag */ + *p++ = 0; + *p++ = gfc->tag_spec.track; + } + *p++ = gfc->tag_spec.genre; + /* write tag directly into bitstream at current position */ + for (index = 0; index < 128; ++index) { + add_dummy_byte(gfp, tag[index]); + } + return 128; + } + return 0; +} diff --git a/lame-3.97/libmp3lame/.svn/text-base/id3tag.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/id3tag.h.svn-base new file mode 100644 index 0000000..70f679d --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/id3tag.h.svn-base @@ -0,0 +1,39 @@ + +#ifndef LAME_ID3_H +#define LAME_ID3_H + +#include "lame.h" + + +#define CHANGED_FLAG (1U << 0) +#define ADD_V2_FLAG (1U << 1) +#define V1_ONLY_FLAG (1U << 2) +#define V2_ONLY_FLAG (1U << 3) +#define SPACE_V1_FLAG (1U << 4) +#define PAD_V2_FLAG (1U << 5) + +struct id3tag_spec +{ + /* private data members */ + int flags; + const char *title; + const char *artist; + const char *album; + int year; + const char *comment; + int track; + int genre; +}; + + +/* write tag into stream at current position */ +extern int id3tag_write_v2(lame_global_flags *gfp); +extern int id3tag_write_v1(lame_global_flags *gfp); +/* + * NOTE: A version 2 tag will NOT be added unless one of the text fields won't + * fit in a version 1 tag (e.g. the title string is longer than 30 characters), + * or the "id3tag_add_v2" or "id3tag_v2_only" functions are used. + */ + +#endif + diff --git a/lame-3.97/libmp3lame/.svn/text-base/l3side.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/l3side.h.svn-base new file mode 100644 index 0000000..3d89a66 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/l3side.h.svn-base @@ -0,0 +1,99 @@ +/* + * Layer 3 side include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_L3SIDE_H +#define LAME_L3SIDE_H + +#include "encoder.h" +#include "machine.h" + +/* max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8) */ +#define SFBMAX (SBMAX_s*3) + +/* Layer III side information. */ +typedef struct +{ + int l[1+SBMAX_l]; + int s[1+SBMAX_s]; + int psfb21[1+PSFB21]; + int psfb12[1+PSFB12]; +} scalefac_struct; + + +typedef struct { + FLOAT l[SBMAX_l]; + FLOAT s[SBMAX_s][3]; +} III_psy_xmin; + +typedef struct { + III_psy_xmin thm; + III_psy_xmin en; +} III_psy_ratio; + +typedef struct { + FLOAT xr[576]; + int l3_enc[576]; + int scalefac[SFBMAX]; + FLOAT xrpow_max; + + int part2_3_length; + int big_values; + int count1; + int global_gain; + int scalefac_compress; + int block_type; + int mixed_block_flag; + int table_select[3]; + int subblock_gain[3+1]; + int region0_count; + int region1_count; + int preflag; + int scalefac_scale; + int count1table_select; + + int part2_length; + int sfb_lmax; + int sfb_smin; + int psy_lmax; + int sfbmax; + int psymax; + int sfbdivide; + int width[SFBMAX]; + int window[SFBMAX]; + int count1bits; + /* added for LSF */ + const int *sfb_partition_table; + int slen[4]; + + int max_nonzero_coeff; +} gr_info; + +typedef struct { + gr_info tt[2][2]; + int main_data_begin; + int private_bits; + int resvDrain_pre; + int resvDrain_post; + int scfsi[2][4]; +} III_side_info_t; + +#endif + diff --git a/lame-3.97/libmp3lame/.svn/text-base/lame-analysis.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/lame-analysis.h.svn-base new file mode 100644 index 0000000..1f2407c --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/lame-analysis.h.svn-base @@ -0,0 +1,93 @@ +/* + * GTK plotting routines source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_GTKANAL_H +#define LAME_GTKANAL_H + +#include "encoder.h" + +#define READ_AHEAD 40 /* number of frames to read ahead */ +#define MAXMPGLAG READ_AHEAD /* if the mpg123 lag becomes bigger than this + we have to stop */ +#define NUMBACK 6 /* number of frames we can back up */ +#define NUMPINFO (NUMBACK+READ_AHEAD+1) + + + +typedef struct { + int frameNum; /* current frame number */ + int frameNum123; + int num_samples; /* number of pcm samples read for this frame */ + double frametime; /* starting time of frame, in seconds */ + double pcmdata[2][1600]; + double pcmdata2[2][1152+1152-DECDELAY]; + double xr[2][2][576]; + double mpg123xr[2][2][576]; + double ms_ratio[2]; + double ms_ener_ratio[2]; + + /* L,R, M and S values */ + double energy[2][4][BLKSIZE]; + double pe[2][4]; + double thr[2][4][SBMAX_l]; + double en[2][4][SBMAX_l]; + double thr_s[2][4][3*SBMAX_s]; + double en_s[2][4][3*SBMAX_s]; + double ers[2][4]; + + double sfb[2][2][SBMAX_l]; + double sfb_s[2][2][3*SBMAX_s]; + double LAMEsfb[2][2][SBMAX_l]; + double LAMEsfb_s[2][2][3*SBMAX_s]; + + int LAMEqss[2][2]; + int qss[2][2]; + int big_values[2][2]; + int sub_gain[2][2][3]; + + double xfsf[2][2][SBMAX_l]; + double xfsf_s[2][2][3*SBMAX_s]; + + int over[2][2]; + double tot_noise[2][2]; + double max_noise[2][2]; + double over_noise[2][2]; + int over_SSD[2][2]; + int blocktype[2][2]; + int scalefac_scale[2][2]; + int preflag[2][2]; + int mpg123blocktype[2][2]; + int mixed[2][2]; + int mainbits[2][2]; + int sfbits[2][2]; + int LAMEmainbits[2][2]; + int LAMEsfbits[2][2]; + int framesize,stereo,js,ms_stereo,i_stereo,emph,bitrate,sampfreq,maindata; + int crc,padding; + int scfsi[2],mean_bits,resvsize; + int totbits; +} plotting_data; + + +extern plotting_data *pinfo; + +#endif + diff --git a/lame-3.97/libmp3lame/.svn/text-base/lame.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/lame.c.svn-base new file mode 100644 index 0000000..145f05a --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/lame.c.svn-base @@ -0,0 +1,2274 @@ +/* -*- mode: C; mode: fold -*- */ +/* + * LAME MP3 encoding engine + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2000-2005 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2000-2005 Gabriel Bouvigne + * Copyright (c) 2000-2004 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: lame.c,v 1.278.2.2 2005/11/20 14:08:24 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + + +#include <assert.h> +#include "lame-analysis.h" +#include "lame.h" +#include "util.h" +#include "bitstream.h" +#include "version.h" +#include "tables.h" +#include "quantize_pvt.h" +#include "psymodel.h" +#include "VbrTag.h" +#include "machine.h" +#include "gain_analysis.h" +#include "set_get.h" + +#if defined(__FreeBSD__) && !defined(__alpha__) +#include <floatingpoint.h> +#endif +#ifdef __riscos__ +#include "asmstuff.h" +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include <unistd.h> +#endif + + +#define LAME_DEFAULT_QUALITY 3 + +static FLOAT +filter_coef(FLOAT x) +{ + if (x > 1.0) return 0.0; + if (x <= 0.0) return 1.0; + + return cos(PI/2 * x); +} + +static void +lame_init_params_ppflt(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + /***************************************************************/ + /* compute info needed for polyphase filter (filter type==0, default) */ + /***************************************************************/ + + int band, maxband, minband; + FLOAT freq; + int lowpass_band = 32; + int highpass_band = -1; + + if (gfc->lowpass1 > 0) { + minband = 999; + for (band = 0; band <= 31; band++) { + freq = band / 31.0; + /* this band and above will be zeroed: */ + if (freq >= gfc->lowpass2) { + lowpass_band = Min(lowpass_band, band); + } + if (gfc->lowpass1 < freq && freq < gfc->lowpass2) { + minband = Min(minband, band); + } + } + + /* compute the *actual* transition band implemented by + * the polyphase filter */ + if (minband == 999) { + gfc->lowpass1 = (lowpass_band - .75) / 31.0; + } + else { + gfc->lowpass1 = (minband - .75) / 31.0; + } + gfc->lowpass2 = lowpass_band / 31.0; + } + + /* make sure highpass filter is within 90% of what the effective + * highpass frequency will be */ + if (gfc->highpass2 > 0) { + if (gfc->highpass2 < .9 * (.75 / 31.0)) { + gfc->highpass1 = 0; + gfc->highpass2 = 0; + MSGF(gfc, "Warning: highpass filter disabled. " + "highpass frequency too small\n"); + } + } + + if (gfc->highpass2 > 0) { + maxband = -1; + for (band = 0; band <= 31; band++) { + freq = band / 31.0; + /* this band and below will be zereod */ + if (freq <= gfc->highpass1) { + highpass_band = Max(highpass_band, band); + } + if (gfc->highpass1 < freq && freq < gfc->highpass2) { + maxband = Max(maxband, band); + } + } + /* compute the *actual* transition band implemented by + * the polyphase filter */ + gfc->highpass1 = highpass_band / 31.0; + if (maxband == -1) { + gfc->highpass2 = (highpass_band + .75) / 31.0; + } + else { + gfc->highpass2 = (maxband + .75) / 31.0; + } + } + + for (band = 0; band < 32; band++) { + freq = band / 31.0; + gfc->amp_filter[band] + = filter_coef((gfc->highpass2 - freq) + / (gfc->highpass2 - gfc->highpass1 + 1e-37)) + * filter_coef((freq - gfc->lowpass1) + / (gfc->lowpass2 - gfc->lowpass1 - 1e-37)); + } +} + + +static void +optimum_bandwidth(double *const lowerlimit, + double *const upperlimit, + const unsigned bitrate) +{ +/* + * Input: + * bitrate total bitrate in kbps + * + * Output: + * lowerlimit: best lowpass frequency limit for input filter in Hz + * upperlimit: best highpass frequency limit for input filter in Hz + */ + int index; + + typedef struct { + int bitrate; /* only indicative value */ + int lowpass; + } band_pass_t; + + const band_pass_t freq_map[] = { + { 8, 2000}, + { 16, 3700}, + { 24, 3900}, + { 32, 5500}, + { 40, 7000}, + { 48, 7500}, + { 56, 10000}, + { 64, 11000}, + { 80, 13500}, + { 96, 15100}, + {112, 15600}, + {128, 17000}, + {160, 17500}, + {192, 18600}, + {224, 19400}, + {256, 19700}, + {320, 20500} + }; + + + index = nearestBitrateFullIndex(bitrate); + + *lowerlimit = freq_map[index].lowpass; + + +/* + * Now we try to choose a good high pass filtering frequency. + * This value is currently not used. + * For fu < 16 kHz: sqrt(fu*fl) = 560 Hz + * For fu = 18 kHz: no high pass filtering + * This gives: + * + * 2 kHz => 160 Hz + * 3 kHz => 107 Hz + * 4 kHz => 80 Hz + * 8 kHz => 40 Hz + * 16 kHz => 20 Hz + * 17 kHz => 10 Hz + * 18 kHz => 0 Hz + * + * These are ad hoc values and these can be optimized if a high pass is available. + */ +/* if (f_low <= 16000) + f_high = 16000. * 20. / f_low; + else if (f_low <= 18000) + f_high = 180. - 0.01 * f_low; + else + f_high = 0.;*/ + + /* + * When we sometimes have a good highpass filter, we can add the highpass + * frequency to the lowpass frequency + */ + + /*if (upperlimit != NULL) + *upperlimit = f_high;*/ +} + + +static int +optimum_samplefreq(int lowpassfreq, int input_samplefreq) +{ +/* + * Rules: + * - if possible, sfb21 should NOT be used + * + */ + int suggested_samplefreq; + + if (input_samplefreq >= 48000) + suggested_samplefreq = 48000; + else if (input_samplefreq >= 44100) + suggested_samplefreq = 44100; + else if (input_samplefreq >= 32000) + suggested_samplefreq = 32000; + else if (input_samplefreq >= 24000) + suggested_samplefreq = 24000; + else if (input_samplefreq >= 22050) + suggested_samplefreq = 22050; + else if (input_samplefreq >= 16000) + suggested_samplefreq = 16000; + else if (input_samplefreq >= 12000) + suggested_samplefreq = 12000; + else if (input_samplefreq >= 11025) + suggested_samplefreq = 11025; + else if (input_samplefreq >= 8000) + suggested_samplefreq = 8000; + + if (lowpassfreq == -1) + return suggested_samplefreq; + + if (lowpassfreq <= 15960) + suggested_samplefreq = 44100; + if (lowpassfreq <= 15250) + suggested_samplefreq = 32000; + if (lowpassfreq <= 11220) + suggested_samplefreq = 24000; + if (lowpassfreq <= 9970) + suggested_samplefreq = 22050; + if (lowpassfreq <= 7230) + suggested_samplefreq = 16000; + if (lowpassfreq <= 5420) + suggested_samplefreq = 12000; + if (lowpassfreq <= 4510) + suggested_samplefreq = 11025; + if (lowpassfreq <= 3970) + suggested_samplefreq = 8000; + + if (input_samplefreq < suggested_samplefreq) + suggested_samplefreq = input_samplefreq; + return suggested_samplefreq; +} + + + + + +/* set internal feature flags. USER should not access these since + * some combinations will produce strange results */ +void +lame_init_qval(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + switch (gfp->quality) { + case 9: /* no psymodel, no noise shaping */ + gfc->filter_type = 0; + gfc->psymodel = 0; + gfc->quantization = 0; + gfc->noise_shaping = 0; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 8: + gfp->quality = 7; + case 7: /* use psymodel (for short block and m/s switching), but no noise shapping */ + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 0; + gfc->noise_shaping = 0; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 6: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 0; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 5: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 4: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; + gfc->full_outer_loop = 0; + break; + + case 3: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 1; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; + gfc->full_outer_loop = 0; + break; + + case 2: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + if (gfc->substep_shaping == 0) + gfc->substep_shaping = 2; + gfc->noise_shaping_amp = 1; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; /* inner loop */ + gfc->full_outer_loop = 0; + break; + + case 1: + gfc->filter_type = 0; /* 1 not yet coded */ + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + if (gfc->substep_shaping == 0) + gfc->substep_shaping = 2; + gfc->noise_shaping_amp = 2; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; + gfc->full_outer_loop = 0; + break; + + case 0: + gfc->filter_type = 0; /* 1 not yet coded */ + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + if (gfc->substep_shaping == 0) + gfc->substep_shaping = 2; + gfc->noise_shaping_amp = 2; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; /*type 2 disabled because of it slowness, + in favor of full outer loop search */ + gfc->full_outer_loop = 1; + break; + } + +} + + + + + + + +/******************************************************************** + * initialize internal params based on data in gf + * (globalflags struct filled in by calling program) + * + * OUTLINE: + * + * We first have some complex code to determine bitrate, + * output samplerate and mode. It is complicated by the fact + * that we allow the user to set some or all of these parameters, + * and need to determine best possible values for the rest of them: + * + * 1. set some CPU related flags + * 2. check if we are mono->mono, stereo->mono or stereo->stereo + * 3. compute bitrate and output samplerate: + * user may have set compression ratio + * user may have set a bitrate + * user may have set a output samplerate + * 4. set some options which depend on output samplerate + * 5. compute the actual compression ratio + * 6. set mode based on compression ratio + * + * The remaining code is much simpler - it just sets options + * based on the mode & compression ratio: + * + * set allow_diff_short based on mode + * select lowpass filter based on compression ratio & mode + * set the bitrate index, and min/max bitrates for VBR modes + * disable VBR tag if it is not appropriate + * initialize the bitstream + * initialize scalefac_band data + * set sideinfo_len (based on channels, CRC, out_samplerate) + * write an id3v2 tag into the bitstream + * write VBR tag into the bitstream + * set mpeg1/2 flag + * estimate the number of frames (based on a lot of data) + * + * now we set more flags: + * nspsytune: + * see code + * VBR modes + * see code + * CBR/ABR + * see code + * + * Finally, we set the algorithm flags based on the gfp->quality value + * lame_init_qval(gfp); + * + ********************************************************************/ +int +lame_init_params(lame_global_flags * const gfp) +{ + + int i; + int j; + lame_internal_flags *gfc = gfp->internal_flags; + + gfc->Class_ID = 0; + + /* report functions */ + gfc->report.msgf = gfp->report.msgf; + gfc->report.debugf = gfp->report.debugf; + gfc->report.errorf = gfp->report.errorf; + + + if (gfp->asm_optimizations.amd3dnow ) + gfc->CPU_features.AMD_3DNow = has_3DNow(); + else + gfc->CPU_features.AMD_3DNow = 0; + + if (gfp->asm_optimizations.mmx ) + gfc->CPU_features.MMX = has_MMX(); + else + gfc->CPU_features.MMX = 0; + + if (gfp->asm_optimizations.sse ) { + gfc->CPU_features.SSE = has_SSE(); + gfc->CPU_features.SSE2 = has_SSE2(); + } else { + gfc->CPU_features.SSE = 0; + gfc->CPU_features.SSE2 = 0; + } + + + if (NULL == gfc->ATH) + gfc->ATH = calloc(1, sizeof(ATH_t)); + + if (NULL == gfc->ATH) + return -2; /* maybe error codes should be enumerated in lame.h ?? */ + + if (NULL == gfc->PSY) + gfc->PSY = calloc(1, sizeof(PSY_t)); + if (NULL == gfc->PSY) + return -2; + + if (NULL == gfc->rgdata) + gfc->rgdata = calloc(1, sizeof(replaygain_t)); + if (NULL == gfc->rgdata) + return -2; + + gfc->channels_in = gfp->num_channels; + if (gfc->channels_in == 1) + gfp->mode = MONO; + gfc->channels_out = (gfp->mode == MONO) ? 1 : 2; + gfc->mode_ext = MPG_MD_MS_LR; + if (gfp->mode == MONO) + gfp->force_ms = 0; /* don't allow forced mid/side stereo for mono output */ + + if (gfp->VBR == vbr_off && + gfp->VBR_mean_bitrate_kbps != 128 && gfp->brate == 0) + gfp->brate = gfp->VBR_mean_bitrate_kbps; + + + if (gfp->VBR != vbr_off) + gfp->free_format = 0; /* VBR can't be mixed with free format */ + + if (gfp->VBR == vbr_off && gfp->brate == 0) { + /* no bitrate or compression ratio specified, use 11.025 */ + if (gfp->compression_ratio == 0) + gfp->compression_ratio = 11.025; /* rate to compress a CD down to exactly 128000 bps */ + } + + /* find bitrate if user specify a compression ratio */ + if (gfp->VBR == vbr_off && gfp->compression_ratio > 0) { + + if (gfp->out_samplerate == 0) + gfp->out_samplerate = map2MP3Frequency( (int)( 0.97 * gfp->in_samplerate ) ); /* round up with a margin of 3% */ + + /* choose a bitrate for the output samplerate which achieves + * specified compression ratio + */ + gfp->brate = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp-> + compression_ratio); + + /* we need the version for the bitrate table look up */ + gfc->samplerate_index = SmpFrqIndex(gfp->out_samplerate, &gfp->version); + + if (!gfp->free_format) /* for non Free Format find the nearest allowed bitrate */ + gfp->brate = + FindNearestBitrate(gfp->brate, gfp->version); + } + + if (gfp->VBR != vbr_off && gfp->brate >= 320) + gfp->VBR = vbr_off; /* at 160 kbps (MPEG-2/2.5)/ 320 kbps (MPEG-1) only Free format or CBR are possible, no VBR */ + + + + + /****************************************************************/ + /* if a filter has not been enabled, see if we should add one: */ + /****************************************************************/ + if (gfp->lowpassfreq == 0) { + double lowpass = 16000; + double highpass; + + switch (gfp->VBR) { + case vbr_off: { + optimum_bandwidth(&lowpass, + &highpass, + gfp->brate); + break; + } + case vbr_abr: { + optimum_bandwidth(&lowpass, + &highpass, + gfp->VBR_mean_bitrate_kbps); + break; + } + default: { + switch (gfp->VBR_q) { + case 9: { + lowpass = 10000; + break; + } + case 8: { + lowpass = 12500; + break; + } + case 7: { + lowpass = 14900; + break; + } + case 6: { + lowpass = 15600; + break; + } + case 5: { + lowpass = 16000; + break; + } + case 4: { + lowpass = 17500; + break; + } + case 3: { + lowpass = 18000; + break; + } + case 2: { + lowpass = 18600; + break; + } + case 1: { + lowpass = 19000; + break; + } + case 0: { + lowpass = 19500; + break; + } + } + } + } + + if (gfp->mode == MONO && (gfp->VBR == vbr_off || gfp->VBR == vbr_abr)) + lowpass *= 1.5; + + gfp->lowpassfreq = lowpass; + } + + + if (gfp->out_samplerate == 0) + gfp->out_samplerate = optimum_samplefreq( (int)gfp->lowpassfreq, gfp->in_samplerate); + + gfp->lowpassfreq = Min(20500, gfp->lowpassfreq); + gfp->lowpassfreq = Min(gfp->out_samplerate / 2, gfp->lowpassfreq); + + if (gfp->VBR == vbr_off) { + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp->brate); + } + if (gfp->VBR == vbr_abr) { + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp-> + VBR_mean_bitrate_kbps); + } + + /* do not compute ReplayGain values and do not find the peak sample + if we can't store them */ + if (!gfp->bWriteVbrTag){ + gfp->findReplayGain = 0; + gfp->decode_on_the_fly = 0; + gfc->findPeakSample = 0; + } + gfc->findReplayGain = gfp->findReplayGain; + gfc->decode_on_the_fly = gfp->decode_on_the_fly; + + if (gfc->decode_on_the_fly) + gfc->findPeakSample = 1; + + if (gfc->findReplayGain) { + if (InitGainAnalysis(gfc->rgdata, gfp->out_samplerate) == INIT_GAIN_ANALYSIS_ERROR) + return -6; + } + +#ifdef DECODE_ON_THE_FLY + if (gfc->decode_on_the_fly && !gfp->decode_only) + lame_decode_init(); /* initialize the decoder */ +#endif + + gfc->mode_gr = gfp->out_samplerate <= 24000 ? 1 : 2; /* Number of granules per frame */ + gfp->framesize = 576 * gfc->mode_gr; + gfp->encoder_delay = ENCDELAY; + + gfc->resample_ratio = (double) gfp->in_samplerate / gfp->out_samplerate; + + /* + * sample freq bitrate compression ratio + * [kHz] [kbps/channel] for 16 bit input + * 44.1 56 12.6 + * 44.1 64 11.025 + * 44.1 80 8.82 + * 22.05 24 14.7 + * 22.05 32 11.025 + * 22.05 40 8.82 + * 16 16 16.0 + * 16 24 10.667 + * + */ + /* + * For VBR, take a guess at the compression_ratio. + * For example: + * + * VBR_q compression like + * - 4.4 320 kbps/44 kHz + * 0...1 5.5 256 kbps/44 kHz + * 2 7.3 192 kbps/44 kHz + * 4 8.8 160 kbps/44 kHz + * 6 11 128 kbps/44 kHz + * 9 14.7 96 kbps + * + * for lower bitrates, downsample with --resample + */ + + switch (gfp->VBR) { + case vbr_mt: + case vbr_rh: + case vbr_mtrh: + { + /*numbers are a bit strange, but they determine the lowpass value*/ + FLOAT cmp[] = { 5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14, 15, 16.5 }; + gfp->compression_ratio = cmp[gfp->VBR_q]; + } + break; + case vbr_abr: + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp-> + VBR_mean_bitrate_kbps); + break; + default: + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * gfp->brate); + break; + } + + + /* mode = -1 (not set by user) or + * mode = MONO (because of only 1 input channel). + * If mode has not been set, then select J-STEREO + */ + if (gfp->mode == NOT_SET) { + gfp->mode = JOINT_STEREO; + } + + + /* apply user driven high pass filter */ + if (gfp->highpassfreq > 0) { + gfc->highpass1 = 2. * gfp->highpassfreq; + + if (gfp->highpasswidth >= 0) + gfc->highpass2 = + 2. * (gfp->highpassfreq + gfp->highpasswidth); + else /* 0% above on default */ + gfc->highpass2 = + (1 + 0.00) * 2. * gfp->highpassfreq; + + gfc->highpass1 /= gfp->out_samplerate; + gfc->highpass2 /= gfp->out_samplerate; + } + + /* apply user driven low pass filter */ + if (gfp->lowpassfreq > 0) { + gfc->lowpass2 = 2. * gfp->lowpassfreq; + if (gfp->lowpasswidth >= 0) { + gfc->lowpass1 = + 2. * (gfp->lowpassfreq - gfp->lowpasswidth); + if (gfc->lowpass1 < 0) /* has to be >= 0 */ + gfc->lowpass1 = 0; + } + else { /* 0% below on default */ + gfc->lowpass1 = + (1 - 0.00) * 2. * gfp->lowpassfreq; + } + gfc->lowpass1 /= gfp->out_samplerate; + gfc->lowpass2 /= gfp->out_samplerate; + } + + + + + /**********************************************************************/ + /* compute info needed for polyphase filter (filter type==0, default) */ + /**********************************************************************/ + lame_init_params_ppflt(gfp); + + + /*******************************************************/ + /* compute info needed for FIR filter (filter_type==1) */ + /*******************************************************/ + /* not yet coded */ + + + + /******************************************************* + * samplerate and bitrate index + *******************************************************/ + gfc->samplerate_index = SmpFrqIndex(gfp->out_samplerate, &gfp->version); + if (gfc->samplerate_index < 0) + return -1; + + if (gfp->VBR == vbr_off) { + if (gfp->free_format) { + gfc->bitrate_index = 0; + } + else { + gfc->bitrate_index = BitrateIndex(gfp->brate, gfp->version, + gfp->out_samplerate); + if (gfc->bitrate_index < 0) + return -1; + } + } + + /* for CBR, we will write an "info" tag. */ + /* if ((gfp->VBR == vbr_off)) */ + /* gfp->bWriteVbrTag = 0; */ + +#if defined(HAVE_GTK) + if (gfp->analysis) + gfp->bWriteVbrTag = 0; + + /* some file options not allowed if output is: not specified or stdout */ + if (gfc->pinfo != NULL) + gfp->bWriteVbrTag = 0; /* disable Xing VBR tag */ +#endif + + init_bit_stream_w(gfc); + + j = gfc->samplerate_index + + (3 * gfp->version) + 6 * (gfp->out_samplerate < 16000); + for (i = 0; i < SBMAX_l + 1; i++) + gfc->scalefac_band.l[i] = sfBandIndex[j].l[i]; + + for (i = 0; i < PSFB21 + 1; i++){ + int size = (gfc->scalefac_band.l[ 22 ] - gfc->scalefac_band.l[ 21 ])/PSFB21; + int start = gfc->scalefac_band.l[ 21 ] + i*size; + gfc->scalefac_band.psfb21[i] = start; + } + gfc->scalefac_band.psfb21[PSFB21] = 576; + + for (i = 0; i < SBMAX_s + 1; i++) + gfc->scalefac_band.s[i] = sfBandIndex[j].s[i]; + + for (i = 0; i < PSFB12 + 1; i++){ + int size = (gfc->scalefac_band.s[ 13 ] - gfc->scalefac_band.s[ 12 ])/PSFB12; + int start = gfc->scalefac_band.s[ 12 ] + i*size; + gfc->scalefac_band.psfb12[i] = start; + } + gfc->scalefac_band.psfb12[PSFB12] = 192; + + /* determine the mean bitrate for main data */ + if (gfp->version == 1) /* MPEG 1 */ + gfc->sideinfo_len = (gfc->channels_out == 1) ? 4 + 17 : 4 + 32; + else /* MPEG 2 */ + gfc->sideinfo_len = (gfc->channels_out == 1) ? 4 + 9 : 4 + 17; + + if (gfp->error_protection) + gfc->sideinfo_len += 2; + + lame_init_bitstream(gfp); + + gfc->Class_ID = LAME_ID; + + /*if (gfp->exp_nspsytune & 1)*/ { + int i; + + for (i = 0; i < 19; i++) + gfc->nsPsy.pefirbuf[i] = 700*gfc->mode_gr*gfc->channels_out; + + if (gfp->ATHtype == -1) + gfp->ATHtype = 4; + + if (gfp->exp_nspsytune2.pointer[0]) + gfc->nsPsy.pass1fp = gfp->exp_nspsytune2.pointer[0]; + else + gfc->nsPsy.pass1fp = NULL; + } + + assert( gfp->VBR_q <= 9 ); + assert( gfp->VBR_q >= 0 ); + + gfc->PSY->tonalityPatch = 0; + + switch (gfp->VBR) { + + case vbr_mt: + gfp->VBR = vbr_mtrh; + + case vbr_mtrh: { + + apply_preset(gfp, 500 - (gfp->VBR_q*10), 0); + + if (gfp->quality < 0) gfp->quality = LAME_DEFAULT_QUALITY; + if (gfp->quality > 7) { + gfp->quality = 7; /* needs psymodel */ + ERRORF( gfc, "VBR needs a psymodel, switching to quality level 7\n"); + } + + /* tonality + */ + if (gfp->cwlimit <= 0) gfp->cwlimit = 0.42 * gfp->out_samplerate; + gfc->PSY->tonalityPatch = 1; + + gfc->PSY->mask_adjust = gfp->maskingadjust; + gfc->PSY->mask_adjust_short = gfp->maskingadjust_short; + + /* sfb21 extra only with MPEG-1 at higher sampling rates + */ + if ( gfp->experimentalY ) + gfc->sfb21_extra = 0; + else + gfc->sfb21_extra = (gfp->out_samplerate > 44000); + + break; + + } + case vbr_rh: { + + apply_preset(gfp, 500 - (gfp->VBR_q*10), 0); + + gfc->PSY->mask_adjust = gfp->maskingadjust; + gfc->PSY->mask_adjust_short = gfp->maskingadjust_short; + + if ( gfp->psymodel == PSY_GPSYCHO ) + gfc->PSY->tonalityPatch = 1; + + /* sfb21 extra only with MPEG-1 at higher sampling rates + */ + if ( gfp->experimentalY ) + gfc->sfb21_extra = 0; + else + gfc->sfb21_extra = (gfp->out_samplerate > 44000); + + /* VBR needs at least the output of GPSYCHO, + * so we have to garantee that by setting a minimum + * quality level, actually level 6 does it. + * down to level 6 + */ + if (gfp->quality > 6) + gfp->quality = 6; + + + if (gfp->quality < 0) + gfp->quality = LAME_DEFAULT_QUALITY; + + break; + } + + default: /* cbr/abr */{ + vbr_mode vbrmode; + + /* no sfb21 extra with CBR code + */ + gfc->sfb21_extra = 0; + + if (gfp->quality < 0) + gfp->quality = LAME_DEFAULT_QUALITY; + + + vbrmode = lame_get_VBR(gfp); + if (vbrmode == vbr_off) + lame_set_VBR_mean_bitrate_kbps(gfp, gfp->brate); + /* second, set parameters depending on bitrate */ + apply_preset(gfp, gfp->VBR_mean_bitrate_kbps, 0); + lame_set_VBR(gfp, vbrmode); + + gfc->PSY->mask_adjust = gfp->maskingadjust; + gfc->PSY->mask_adjust_short = gfp->maskingadjust_short; + + break; + } + } + + /*initialize default values common for all modes*/ + + + if (lame_get_VBR(gfp) != vbr_off) { /* choose a min/max bitrate for VBR */ + /* if the user didn't specify VBR_max_bitrate: */ + gfc->VBR_min_bitrate = 1; /* default: allow 8 kbps (MPEG-2) or 32 kbps (MPEG-1) */ + gfc->VBR_max_bitrate = 14; /* default: allow 160 kbps (MPEG-2) or 320 kbps (MPEG-1) */ + + if (gfp->VBR_min_bitrate_kbps) + if ( + (gfc->VBR_min_bitrate = + BitrateIndex(gfp->VBR_min_bitrate_kbps, gfp->version, + gfp->out_samplerate)) < 0) return -1; + if (gfp->VBR_max_bitrate_kbps) + if ( + (gfc->VBR_max_bitrate = + BitrateIndex(gfp->VBR_max_bitrate_kbps, gfp->version, + gfp->out_samplerate)) < 0) return -1; + + gfp->VBR_min_bitrate_kbps = + bitrate_table[gfp->version][gfc->VBR_min_bitrate]; + gfp->VBR_max_bitrate_kbps = + bitrate_table[gfp->version][gfc->VBR_max_bitrate]; + + gfp->VBR_mean_bitrate_kbps = + Min(bitrate_table[gfp->version][gfc->VBR_max_bitrate], + gfp->VBR_mean_bitrate_kbps); + gfp->VBR_mean_bitrate_kbps = + Max(bitrate_table[gfp->version][gfc->VBR_min_bitrate], + gfp->VBR_mean_bitrate_kbps); + + + } + + + /* just another daily changing developer switch */ + if ( gfp->tune ) gfc->PSY->mask_adjust = gfp->tune_value_a; + + /* initialize internal qval settings */ + lame_init_qval(gfp); + + + /* automatic ATH adjustment on + */ + if ( gfp->athaa_type < 0 ) + gfc->ATH->use_adjust = 3; + else + gfc->ATH->use_adjust = gfp->athaa_type; + + + /* initialize internal adaptive ATH settings -jd */ + gfc->ATH->aa_sensitivity_p = pow( 10.0, gfp->athaa_sensitivity / -10.0 ); + + + gfc->PSY->cwlimit = gfp->cwlimit <= 0 ? 8871.7f : gfp->cwlimit; + + if (gfp->short_blocks == short_block_not_set) { + gfp->short_blocks = short_block_allowed; + } + + /*Note Jan/2003: Many hardware decoders cannot handle short blocks in regular + stereo mode unless they are coupled (same type in both channels) + it is a rare event (1 frame per min. or so) that LAME would use + uncoupled short blocks, so lets turn them off until we decide + how to handle this. No other encoders allow uncoupled short blocks, + even though it is in the standard. */ + /* rh 20040217: coupling makes no sense for mono and dual-mono streams + */ + if (gfp->short_blocks == short_block_allowed && (gfp->mode == JOINT_STEREO || gfp->mode == STEREO) ) { + gfp->short_blocks = short_block_coupled; + } + + + if (lame_get_quant_comp(gfp) < 0 ) lame_set_quant_comp(gfp, 1); + if (lame_get_quant_comp_short(gfp) < 0 ) lame_set_quant_comp_short(gfp, 0); + + if (lame_get_msfix(gfp) < 0 ) lame_set_msfix(gfp, 0); + + /* select psychoacoustic model */ + if ((lame_get_psy_model(gfp) < 0) || + (lame_get_psy_model(gfp) == PSY_NSPSYTUNE)) { + lame_set_psy_model(gfp, PSY_NSPSYTUNE); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 1); + } else { + lame_set_psy_model(gfp, PSY_GPSYCHO); + lame_set_exp_nspsytune(gfp, (lame_get_exp_nspsytune(gfp) >> 1) << 1); + } + + + if (lame_get_short_threshold_lrm(gfp) < 0 ) lame_set_short_threshold_lrm(gfp, NSATTACKTHRE); + if (lame_get_short_threshold_s(gfp) < 0 ) lame_set_short_threshold_s(gfp, NSATTACKTHRE_S); + + if ( gfp->scale < 0 ) gfp->scale = 1; + + if (gfp->ATHtype < 0) gfp->ATHtype = 4; + + if ( gfp->ATHcurve < 0 ) gfp->ATHcurve = 4; + + if ( gfp->athaa_loudapprox < 0 ) gfp->athaa_loudapprox = 2; + + if (gfp->interChRatio < 0 ) gfp->interChRatio = 0; + + if (gfp->useTemporal < 0 ) gfp->useTemporal = 1; /* on by default */ + + + + /* padding method as described in + * "MPEG-Layer3 / Bitstream Syntax and Decoding" + * by Martin Sieler, Ralph Sperschneider + * + * note: there is no padding for the very first frame + * + * Robert Hegemann 2000-06-22 + */ + gfc->slot_lag = gfc->frac_SpF = 0; + if (gfp->VBR == vbr_off) + gfc->slot_lag = gfc->frac_SpF + = ((gfp->version+1)*72000L*gfp->brate) % gfp->out_samplerate; + + /* mid side sparsing */ + gfc->sparsing = gfp->sparsing; + gfc->sparseA = gfp->sparse_low; + gfc->sparseB = gfp->sparse_low-gfp->sparse_high; + if ( gfc->sparseA < 0 ) gfc->sparseA = 0; + if ( gfc->sparseB < 0 ) gfc->sparseB = 0; + if ( gfc->sparseB > gfc->sparseA ) gfc->sparseB = gfc->sparseA; + + iteration_init(gfp); + psymodel_init(gfp); + + return 0; +} + +/* + * print_config + * + * Prints some selected information about the coding parameters via + * the macro command MSGF(), which is currently mapped to lame_errorf + * (reports via a error function?), which is a printf-like function + * for <stderr>. + */ + +void +lame_print_config(const lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + double out_samplerate = gfp->out_samplerate; + double in_samplerate = gfp->out_samplerate * gfc->resample_ratio; + + MSGF(gfc, "LAME %s %s (%s)\n", get_lame_version(), get_lame_os_bitness(), get_lame_url()); + + if (LAME_ALPHA_VERSION) + MSGF(gfc, "warning: alpha versions should be used for testing only\n"); + + if (gfc->CPU_features.MMX + || gfc->CPU_features.AMD_3DNow + || gfc->CPU_features.SSE || gfc->CPU_features.SSE2) { + MSGF(gfc, "CPU features: "); + + if (gfc->CPU_features.MMX) +#ifdef MMX_choose_table + MSGF(gfc, "MMX (ASM used)"); +#else + MSGF(gfc, "MMX"); +#endif + if (gfc->CPU_features.AMD_3DNow) +#ifdef HAVE_NASM + MSGF(gfc, ", 3DNow! (ASM used)"); +#else + MSGF(gfc, ", 3DNow!"); +#endif + if (gfc->CPU_features.SSE) +#ifdef HAVE_XMMINTRIN_H + MSGF(gfc, ", SSE (ASM used)"); +#else + MSGF(gfc, ", SSE"); +#endif + if (gfc->CPU_features.SSE2) + MSGF(gfc, ", SSE2"); + MSGF(gfc, "\n"); + } + + if (gfp->num_channels == 2 && gfc->channels_out == 1 /* mono */ ) { + MSGF + (gfc, + "Autoconverting from stereo to mono. Setting encoding to mono mode.\n"); + } + + if (gfc->resample_ratio != 1.) { + MSGF(gfc, "Resampling: input %g kHz output %g kHz\n", + 1.e-3 * in_samplerate, 1.e-3 * out_samplerate); + } + + if (gfc->filter_type == 0) { + if (gfc->highpass2 > 0.) + MSGF + (gfc, + "Using polyphase highpass filter, transition band: %5.0f Hz - %5.0f Hz\n", + 0.5 * gfc->highpass1 * out_samplerate, + 0.5 * gfc->highpass2 * out_samplerate); + if (0. < gfc->lowpass1 && gfc->lowpass1 < 1.) { + MSGF + (gfc, + "Using polyphase lowpass filter, transition band: %5.0f Hz - %5.0f Hz\n", + 0.5 * gfc->lowpass1 * out_samplerate, + 0.5 * gfc->lowpass2 * out_samplerate); + } + else { + MSGF(gfc, "polyphase lowpass filter disabled\n"); + } + } + else { + MSGF(gfc, "polyphase filters disabled\n"); + } + + if (gfp->free_format) { + MSGF(gfc, + "Warning: many decoders cannot handle free format bitstreams\n"); + if (gfp->brate > 320) { + MSGF + (gfc, + "Warning: many decoders cannot handle free format bitrates >320 kbps (see documentation)\n"); + } + } +} + + +/** rh: + * some pretty printing is very welcome at this point! + * so, if someone is willing to do so, please do it! + * add more, if you see more... + */ +void +lame_print_internals( const lame_global_flags * gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + const char * pc = ""; + + /* compiler/processor optimizations, operational, etc. + */ + MSGF( gfc, "\nmisc:\n\n" ); + + MSGF( gfc, "\tscaling: %g\n", gfp->scale ); + MSGF( gfc, "\tch0 (left) scaling: %g\n", gfp->scale_left ); + MSGF( gfc, "\tch1 (right) scaling: %g\n", gfp->scale_right ); + MSGF( gfc, "\tfilter type: %d\n", gfc->filter_type ); + pc = gfc->quantization ? "xr^3/4" : "ISO"; + MSGF( gfc, "\tquantization: %s\n", pc ); + switch( gfc->use_best_huffman ) { + default: pc = "normal"; break; + case 1: pc = "best (outside loop)"; break; + case 2: pc = "best (inside loop, slow)"; break; + } + MSGF( gfc, "\thuffman search: %s\n", pc ); + MSGF( gfc, "\texperimental Y=%d\n", gfp->experimentalY); + MSGF( gfc, "\t...\n" ); + + /* everything controlling the stream format + */ + MSGF( gfc, "\nstream format:\n\n" ); + switch ( gfp->version ) { + case 0: pc = "2.5"; break; + case 1: pc = "1"; break; + case 2: pc = "2"; break; + default: pc = "?"; break; + } + MSGF( gfc, "\tMPEG-%s Layer 3\n", pc ); + switch ( gfp->mode ) { + case JOINT_STEREO: pc = "joint stereo"; break; + case STEREO : pc = "stereo"; break; + case DUAL_CHANNEL: pc = "dual channel"; break; + case MONO : pc = "mono"; break; + case NOT_SET : pc = "not set (error)"; break; + default : pc = "unknown (error)"; break; + } + MSGF( gfc, "\t%d channel - %s\n", gfc->channels_out, pc ); + + switch (gfp->VBR) { + case vbr_off : pc = "off"; break; + default : pc = "all"; break; + } + MSGF( gfc, "\tpadding: %s\n", pc ); + + if ( vbr_default == gfp->VBR ) pc = "(default)"; + else if ( gfp->free_format ) pc = "(free format)"; + else pc = ""; + switch ( gfp->VBR ) { + case vbr_off : MSGF( gfc, "\tconstant bitrate - CBR %s\n", pc ); break; + case vbr_abr : MSGF( gfc, "\tvariable bitrate - ABR %s\n", pc ); break; + case vbr_rh : MSGF( gfc, "\tvariable bitrate - VBR rh %s\n", pc ); break; + case vbr_mt : MSGF( gfc, "\tvariable bitrate - VBR mt %s\n", pc ); break; + case vbr_mtrh: MSGF( gfc, "\tvariable bitrate - VBR mtrh %s\n", pc ); break; + default : MSGF( gfc, "\t ?? oops, some new one ?? \n" ); break; + } + if (gfp->bWriteVbrTag) + MSGF( gfc, "\tusing LAME Tag\n" ); + MSGF( gfc, "\t...\n" ); + + /* everything controlling psychoacoustic settings, like ATH, etc. + */ + MSGF( gfc, "\npsychoacoustic:\n\n" ); + + MSGF( gfc, "\tusing psychoacoustic model: %d\n", gfc->psymodel); + MSGF( gfc, "\tpsychoacoustic model: %s\n", (gfp->psymodel == PSY_NSPSYTUNE) ? "NSPsytune" : "GPsycho" ); + MSGF( gfc, "\ttonality estimation limit: %f Hz %s\n", gfc->PSY->cwlimit, (gfp->psymodel == PSY_NSPSYTUNE) ? "(not relevant)" : ""); + switch ( gfp->short_blocks ) { + default: + case short_block_not_set: pc = "?"; break; + case short_block_allowed: pc = "allowed"; break; + case short_block_coupled: pc = "channel coupled"; break; + case short_block_dispensed: pc = "dispensed"; break; + case short_block_forced: pc = "forced"; break; + } + MSGF( gfc, "\tusing short blocks: %s\n", pc ); + MSGF( gfc, "\tsubblock gain: %d\n", gfc->subblock_gain ); + MSGF( gfc, "\tadjust masking: %g dB\n", gfp->maskingadjust ); + MSGF( gfc, "\tadjust masking short: %g dB\n", gfp->maskingadjust_short ); + MSGF( gfc, "\tquantization comparison: %d\n", gfp->quant_comp ); + MSGF( gfc, "\t ^ comparison short blocks: %d\n", gfp->quant_comp_short ); + MSGF( gfc, "\tnoise shaping: %d\n", gfc->noise_shaping ); + MSGF( gfc, "\t ^ amplification: %d\n", gfc->noise_shaping_amp ); + MSGF( gfc, "\t ^ stopping: %d\n", gfc->noise_shaping_stop ); + + pc = "using"; + if ( gfp->ATHshort ) pc = "the only masking for short blocks"; + if ( gfp->ATHonly ) pc = "the only masking"; + if ( gfp->noATH ) pc = "not used"; + MSGF( gfc, "\tATH: %s\n", pc ); + MSGF( gfc, "\t ^ type: %d\n", gfp->ATHtype ); + MSGF( gfc, "\t ^ shape: %g%s\n", gfp->ATHcurve, " (only for type 4)" ); + MSGF( gfc, "\t ^ level adjustement: %g\n", gfp->ATHlower ); + MSGF( gfc, "\t ^ adjust type: %d\n", gfc->ATH->use_adjust ); + MSGF( gfc, "\t ^ adjust sensitivity power: %f\n", gfc->ATH->aa_sensitivity_p ); + MSGF( gfc, "\t ^ adapt threshold type: %d\n", gfp->athaa_loudapprox ); + + if ( gfp->psymodel == PSY_NSPSYTUNE ) { + MSGF(gfc, "\texperimental psy tunings by Naoki Shibata\n" ); + MSGF(gfc, "\t adjust masking bass=%g dB, alto=%g dB, treble=%g dB, sfb21=%g dB\n", + 10*log10(gfc->nsPsy.longfact[ 0]), + 10*log10(gfc->nsPsy.longfact[ 7]), + 10*log10(gfc->nsPsy.longfact[14]), + 10*log10(gfc->nsPsy.longfact[21])); + } + pc = gfp->useTemporal ? "yes" : "no"; + MSGF( gfc, "\tusing temporal masking effect: %s\n", pc ); + MSGF( gfc, "\tinterchannel masking ratio: %g\n", gfp->interChRatio ); + MSGF( gfc, "\t...\n" ); + + /* that's all ? + */ + MSGF( gfc, "\n" ); + return; +} + + + +/* routine to feed exactly one frame (gfp->framesize) worth of data to the +encoding engine. All buffering, resampling, etc, handled by calling +program. +*/ +int +lame_encode_frame(lame_global_flags * gfp, + sample_t inbuf_l[], sample_t inbuf_r[], + unsigned char *mp3buf, int mp3buf_size) +{ + int ret; + ret = lame_encode_mp3_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3buf_size); + gfp->frameNum++; + return ret; +} + +static int +update_inbuffer_size(lame_internal_flags * gfc, const int nsamples) +{ + if (gfc->in_buffer_0 == 0 || gfc->in_buffer_nsamples < nsamples) { + if (gfc->in_buffer_0) { + free(gfc->in_buffer_0); + } + if (gfc->in_buffer_1) { + free(gfc->in_buffer_1); + } + gfc->in_buffer_0 = calloc(sizeof(sample_t), nsamples); + gfc->in_buffer_1 = calloc(sizeof(sample_t), nsamples); + gfc->in_buffer_nsamples = nsamples; + } + if (gfc->in_buffer_0 == NULL || gfc->in_buffer_1 == NULL) { + if (gfc->in_buffer_0) { + free(gfc->in_buffer_0); + } + if (gfc->in_buffer_1) { + free(gfc->in_buffer_1); + } + gfc->in_buffer_0 = 0; + gfc->in_buffer_1 = 0; + gfc->in_buffer_nsamples = 0; + ERRORF(gfc, "Error: can't allocate in_buffer buffer\n"); + return -2; + } + return 0; +} + + +/* + * THE MAIN LAME ENCODING INTERFACE + * mt 3/00 + * + * input pcm data, output (maybe) mp3 frames. + * This routine handles all buffering, resampling and filtering for you. + * The required mp3buffer_size can be computed from num_samples, + * samplerate and encoding rate, but here is a worst case estimate: + * + * mp3buffer_size in bytes = 1.25*num_samples + 7200 + * + * return code = number of bytes output in mp3buffer. can be 0 + * + * NOTE: this routine uses LAME's internal PCM data representation, + * 'sample_t'. It should not be used by any application. + * applications should use lame_encode_buffer(), + * lame_encode_buffer_float() + * lame_encode_buffer_int() + * etc... depending on what type of data they are working with. +*/ +int +lame_encode_buffer_sample_t(lame_global_flags * gfp, + sample_t buffer_l[], + sample_t buffer_r[], + int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int mp3size = 0, ret, i, ch, mf_needed; + int mp3out; + sample_t *mfbuf[2]; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + /* copy out any tags that may have been written into bitstream */ + mp3out = copy_buffer(gfc,mp3buf,mp3buf_size,0); + if (mp3out<0) return mp3out; /* not enough buffer space */ + mp3buf += mp3out; + mp3size += mp3out; + + + in_buffer[0]=buffer_l; + in_buffer[1]=buffer_r; + + + /* Apply user defined re-scaling */ + + /* user selected scaling of the samples */ + if (gfp->scale != 0 && gfp->scale != 1.0) { + for (i=0 ; i<nsamples; ++i) { + in_buffer[0][i] *= gfp->scale; + if (gfc->channels_out == 2) + in_buffer[1][i] *= gfp->scale; + } + } + + /* user selected scaling of the channel 0 (left) samples */ + if (gfp->scale_left != 0 && gfp->scale_left != 1.0) { + for (i=0 ; i<nsamples; ++i) { + in_buffer[0][i] *= gfp->scale_left; + } + } + + /* user selected scaling of the channel 1 (right) samples */ + if (gfp->scale_right != 0 && gfp->scale_right != 1.0) { + for (i=0 ; i<nsamples; ++i) { + in_buffer[1][i] *= gfp->scale_right; + } + } + + /* Downsample to Mono if 2 channels in and 1 channel out */ + if (gfp->num_channels == 2 && gfc->channels_out == 1) { + for (i=0; i<nsamples; ++i) { + in_buffer[0][i] = + 0.5 * ((FLOAT) in_buffer[0][i] + in_buffer[1][i]); + in_buffer[1][i] = 0.0; + } + } + + + /* some sanity checks */ +#if ENCDELAY < MDCTDELAY +# error ENCDELAY is less than MDCTDELAY, see encoder.h +#endif +#if FFTOFFSET > BLKSIZE +# error FFTOFFSET is greater than BLKSIZE, see encoder.h +#endif + + mf_needed = BLKSIZE + gfp->framesize - FFTOFFSET; /* amount needed for FFT */ + /*mf_needed = Max(mf_needed, 286 + 576 * (1 + gfc->mode_gr)); */ + mf_needed = Max(mf_needed, 512+gfp->framesize-32 ); + + assert(MFSIZE >= mf_needed); + + mfbuf[0] = gfc->mfbuf[0]; + mfbuf[1] = gfc->mfbuf[1]; + + while (nsamples > 0) { + int n_in = 0; /* number of input samples processed with fill_buffer */ + int n_out = 0; /* number of samples output with fill_buffer */ + /* n_in <> n_out if we are resampling */ + + /* copy in new samples into mfbuf, with resampling */ + fill_buffer(gfp, mfbuf, in_buffer, nsamples, &n_in, &n_out); + + /* compute ReplayGain of resampled input if requested */ + if (gfc->findReplayGain && !gfc->decode_on_the_fly) + if (AnalyzeSamples(gfc->rgdata, &mfbuf[0][gfc->mf_size], &mfbuf[1][gfc->mf_size], n_out, gfc->channels_out) == GAIN_ANALYSIS_ERROR) + return -6; + + + + /* update in_buffer counters */ + nsamples -= n_in; + in_buffer[0] += n_in; + if (gfc->channels_out == 2) + in_buffer[1] += n_in; + + /* update mfbuf[] counters */ + gfc->mf_size += n_out; + assert(gfc->mf_size <= MFSIZE); + gfc->mf_samples_to_encode += n_out; + + + if (gfc->mf_size >= mf_needed) { + /* encode the frame. */ + /* mp3buf = pointer to current location in buffer */ + /* mp3buf_size = size of original mp3 output buffer */ + /* = 0 if we should not worry about the */ + /* buffer size because calling program is */ + /* to lazy to compute it */ + /* mp3size = size of data written to buffer so far */ + /* mp3buf_size-mp3size = amount of space avalable */ + + int buf_size=mp3buf_size - mp3size; + if (mp3buf_size==0) buf_size=0; + + ret = + lame_encode_frame(gfp, mfbuf[0], mfbuf[1], mp3buf,buf_size); + + if (ret < 0) return ret; + mp3buf += ret; + mp3size += ret; + + /* shift out old samples */ + gfc->mf_size -= gfp->framesize; + gfc->mf_samples_to_encode -= gfp->framesize; + for (ch = 0; ch < gfc->channels_out; ch++) + for (i = 0; i < gfc->mf_size; i++) + mfbuf[ch][i] = mfbuf[ch][i + gfp->framesize]; + } + } + assert(nsamples == 0); + + return mp3size; +} + + +int +lame_encode_buffer(lame_global_flags * gfp, + const short int buffer_l[], + const short int buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer_l[i]; + if (gfc->channels_in>1) in_buffer[1][i] = buffer_r[i]; + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + +int +lame_encode_buffer_float(lame_global_flags * gfp, + const float buffer_l[], + const float buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer_l[i]; + if (gfc->channels_in>1) in_buffer[1][i] = buffer_r[i]; + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + +int +lame_encode_buffer_int(lame_global_flags * gfp, + const int buffer_l[], + const int buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + /* internal code expects +/- 32768.0 */ + in_buffer[0][i] = buffer_l[i] * (1.0 / ( 1L << (8 * sizeof(int) - 16))); + if (gfc->channels_in>1) + in_buffer[1][i] = buffer_r[i] * (1.0 / ( 1L << (8 * sizeof(int) - 16))); + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + + + +int +lame_encode_buffer_long2(lame_global_flags * gfp, + const long buffer_l[], + const long buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + /* internal code expects +/- 32768.0 */ + in_buffer[0][i] = buffer_l[i] * (1.0 / ( 1L << (8 * sizeof(long) - 16))); + if (gfc->channels_in>1) + in_buffer[1][i] = buffer_r[i] * (1.0 / ( 1L << (8 * sizeof(long) - 16))); + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); + +} + + + +int +lame_encode_buffer_long(lame_global_flags * gfp, + const long buffer_l[], + const long buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer_l[i]; + if (gfc->channels_in>1) + in_buffer[1][i] = buffer_r[i]; + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + + + + + + + + + + +int +lame_encode_buffer_interleaved(lame_global_flags * gfp, + short int buffer[], + int nsamples, + unsigned char *mp3buf, int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer[2 * i]; + in_buffer[1][i] = buffer[2 * i + 1]; + } + return lame_encode_buffer_sample_t(gfp, in_buffer[0], in_buffer[1], nsamples, mp3buf, + mp3buf_size); +} + + +int +lame_encode(lame_global_flags * const gfp, + const short int in_buffer[2][1152], + unsigned char *const mp3buf, const int size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + if (gfc->Class_ID != LAME_ID) + return -3; + + return lame_encode_buffer(gfp, in_buffer[0], in_buffer[1], gfp->framesize, + mp3buf, size); +} + +/***************************************************************** + Flush mp3 buffer, pad with ancillary data so last frame is complete. + Reset reservoir size to 0 + but keep all PCM samples and MDCT data in memory + This option is used to break a large file into several mp3 files + that when concatenated together will decode with no gaps + Because we set the reservoir=0, they will also decode seperately + with no errors. +*********************************************************************/ +int +lame_encode_flush_nogap(lame_global_flags * gfp, + unsigned char *mp3buffer, int mp3buffer_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + flush_bitstream(gfp); + return copy_buffer(gfc,mp3buffer, mp3buffer_size,1); +} + + +/* called by lame_init_params. You can also call this after flush_nogap + if you want to write new id3v2 and Xing VBR tags into the bitstream */ +int +lame_init_bitstream(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfp->frameNum=0; + + id3tag_write_v2(gfp); +#ifdef BRHIST + /* initialize histogram data optionally used by frontend */ + memset(gfc->bitrate_stereoMode_Hist, 0, + sizeof(gfc->bitrate_stereoMode_Hist)); + memset(gfc->bitrate_blockType_Hist, 0, + sizeof(gfc->bitrate_blockType_Hist)); +#endif + + gfc->PeakSample = 0.0; + + /* Write initial VBR Header to bitstream and init VBR data */ + if (gfp->bWriteVbrTag) + InitVbrTag(gfp); + + + return 0; +} + + +/*****************************************************************/ +/* flush internal PCM sample buffers, then mp3 buffers */ +/* then write id3 v1 tags into bitstream. */ +/*****************************************************************/ + +int +lame_encode_flush(lame_global_flags * gfp, + unsigned char *mp3buffer, int mp3buffer_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + short int buffer[2][1152]; + int imp3 = 0, mp3count, mp3buffer_size_remaining; + + /* we always add POSTDELAY=288 padding to make sure granule with real + * data can be complety decoded (because of 50% overlap with next granule */ + int end_padding=POSTDELAY; + + memset(buffer, 0, sizeof(buffer)); + mp3count = 0; + + + while (gfc->mf_samples_to_encode > 0) { + + mp3buffer_size_remaining = mp3buffer_size - mp3count; + + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + /* send in a frame of 0 padding until all internal sample buffers + * are flushed + */ + imp3 = lame_encode_buffer(gfp, buffer[0], buffer[1], gfp->framesize, + mp3buffer, mp3buffer_size_remaining); + + /* don't count the above padding: */ + gfc->mf_samples_to_encode -= gfp->framesize; + if (gfc->mf_samples_to_encode < 0) { + /* we added extra padding to the end */ + end_padding += -gfc->mf_samples_to_encode; + } + + + if (imp3 < 0) { + /* some type of fatal error */ + return imp3; + } + mp3buffer += imp3; + mp3count += imp3; + } + + mp3buffer_size_remaining = mp3buffer_size - mp3count; + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + /* mp3 related stuff. bit buffer might still contain some mp3 data */ + flush_bitstream(gfp); + imp3 = copy_buffer(gfc,mp3buffer, mp3buffer_size_remaining, 1); + if (imp3 < 0) { + /* some type of fatal error */ + return imp3; + } + mp3buffer += imp3; + mp3count += imp3; + mp3buffer_size_remaining = mp3buffer_size - mp3count; + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + /* write a id3 tag to the bitstream */ + id3tag_write_v1(gfp); + imp3 = copy_buffer(gfc,mp3buffer, mp3buffer_size_remaining, 0); + + if (imp3 < 0) { + return imp3; + } + mp3count += imp3; + gfp->encoder_padding=end_padding; + return mp3count; +} + +/*********************************************************************** + * + * lame_close () + * + * frees internal buffers + * + ***********************************************************************/ + +int +lame_close(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (gfp->exp_nspsytune2.pointer[0]) { + fclose((FILE *)gfp->exp_nspsytune2.pointer[0]); + gfp->exp_nspsytune2.pointer[0] = NULL; + } + + gfc->Class_ID = 0; + + /* this routien will free all malloc'd data in gfc, and then free gfc: */ + freegfc(gfc); + + gfp->internal_flags = NULL; + + if (gfp->lame_allocated_gfp) { + gfp->lame_allocated_gfp = 0; + free(gfp); + } + + return 0; +} + +/*****************************************************************/ +/* flush internal mp3 buffers, and free internal buffers */ +/*****************************************************************/ + +int +lame_encode_finish(lame_global_flags * gfp, + unsigned char *mp3buffer, int mp3buffer_size) +{ + int ret = lame_encode_flush(gfp, mp3buffer, mp3buffer_size); + + lame_close(gfp); + + return ret; +} + +/*****************************************************************/ +/* write VBR Xing header, and ID3 version 1 tag, if asked for */ +/*****************************************************************/ +void +lame_mp3_tags_fid(lame_global_flags * gfp, FILE * fpStream) +{ + if (gfp->bWriteVbrTag) { + /* Map VBR_q to Xing quality value: 0=worst, 100=best */ + int nQuality = ((9-gfp->VBR_q) * 100) / 9; + + /* Write Xing header again */ + if (fpStream && !fseek(fpStream, 0, SEEK_SET)) + PutVbrTag(gfp, fpStream, nQuality); + } +} + +lame_global_flags * +lame_init(void) +{ + lame_global_flags *gfp; + int ret; + + init_log_table(); + + gfp = calloc(1, sizeof(lame_global_flags)); + if (gfp == NULL) + return NULL; + + ret = lame_init_old(gfp); + if (ret != 0) { + free(gfp); + return NULL; + } + + gfp->lame_allocated_gfp = 1; + return gfp; +} + +/* initialize mp3 encoder */ +int +lame_init_old(lame_global_flags * gfp) +{ + lame_internal_flags *gfc; + + disable_FPE(); /* disable floating point exceptions */ + + memset(gfp, 0, sizeof(lame_global_flags)); + + if (NULL == + (gfc = gfp->internal_flags = + calloc(1, sizeof(lame_internal_flags)))) return -1; + + /* Global flags. set defaults here for non-zero values */ + /* see lame.h for description */ + /* set integer values to -1 to mean that LAME will compute the + * best value, UNLESS the calling program as set it + * (and the value is no longer -1) + */ + + + gfp->mode = NOT_SET; + gfp->original = 1; + gfp->in_samplerate = 1000 * 44.1; + gfp->num_channels = 2; + gfp->num_samples = MAX_U_32_NUM; + + gfp->bWriteVbrTag = 1; + gfp->quality = -1; + gfp->short_blocks = short_block_not_set; + gfc->subblock_gain = -1; + + gfp->lowpassfreq = 0; + gfp->highpassfreq = 0; + gfp->lowpasswidth = -1; + gfp->highpasswidth = -1; + + gfp->VBR = vbr_off; + gfp->VBR_q = 4; + gfp->ATHcurve = -1; + gfp->VBR_mean_bitrate_kbps = 128; + gfp->VBR_min_bitrate_kbps = 0; + gfp->VBR_max_bitrate_kbps = 0; + gfp->VBR_hard_min = 0; + gfc->VBR_min_bitrate = 1; /* not 0 ????? */ + gfc->VBR_max_bitrate = 13; /* not 14 ????? */ + + gfp->quant_comp = -1; + gfp->quant_comp_short = -1; + + gfp->msfix = -1; + + gfc->resample_ratio = 1; + + gfc->OldValue[0] = 180; + gfc->OldValue[1] = 180; + gfc->CurrentStep[0] = 4; + gfc->CurrentStep[1] = 4; + gfc->masking_lower = 1; + gfc->nsPsy.attackthre = -1; + gfc->nsPsy.attackthre_s = -1; + + gfp->scale = -1; + + gfp->athaa_type = -1; + gfp->ATHtype = -1; /* default = -1 = set in lame_init_params */ + gfp->athaa_loudapprox = -1; /* 1 = flat loudness approx. (total energy) */ + /* 2 = equal loudness curve */ + gfp->athaa_sensitivity = 0.0; /* no offset */ + gfp->useTemporal = -1; + gfp->interChRatio = -1; + + /* The reason for + * int mf_samples_to_encode = ENCDELAY + POSTDELAY; + * ENCDELAY = internal encoder delay. And then we have to add POSTDELAY=288 + * because of the 50% MDCT overlap. A 576 MDCT granule decodes to + * 1152 samples. To synthesize the 576 samples centered under this granule + * we need the previous granule for the first 288 samples (no problem), and + * the next granule for the next 288 samples (not possible if this is last + * granule). So we need to pad with 288 samples to make sure we can + * encode the 576 samples we are interested in. + */ + gfc->mf_samples_to_encode = ENCDELAY + POSTDELAY; + gfp->encoder_padding = 0; + gfc->mf_size = ENCDELAY - MDCTDELAY; /* we pad input with this many 0's */ + + gfp->findReplayGain = 0; + gfp->decode_on_the_fly = 0; + + gfc->decode_on_the_fly = 0; + gfc->findReplayGain = 0; + gfc->findPeakSample = 0; + + gfc->RadioGain = 0; + gfc->AudiophileGain = 0; + gfc->noclipGainChange = 0; + gfc->noclipScale = -1.0; + + gfp->asm_optimizations.mmx = 1; + gfp->asm_optimizations.amd3dnow = 1; + gfp->asm_optimizations.sse = 1; + + gfp->preset = 0; + + gfp->psymodel = -1; + + gfp->sparsing = 0; + gfp->sparse_low = 9.0; + gfp->sparse_high = 3.0; + + return 0; +} + +/*********************************************************************** + * + * some simple statistics + * + * Robert Hegemann 2000-10-11 + * + ***********************************************************************/ + +/* histogram of used bitrate indexes: + * One has to weight them to calculate the average bitrate in kbps + * + * bitrate indices: + * there are 14 possible bitrate indices, 0 has the special meaning + * "free format" which is not possible to mix with VBR and 15 is forbidden + * anyway. + * + * stereo modes: + * 0: LR number of left-right encoded frames + * 1: LR-I number of left-right and intensity encoded frames + * 2: MS number of mid-side encoded frames + * 3: MS-I number of mid-side and intensity encoded frames + * + * 4: number of encoded frames + * + */ + +void +lame_bitrate_kbps(const lame_global_flags * const gfp, int bitrate_kbps[14]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == bitrate_kbps) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 14; i++) + bitrate_kbps[i] = bitrate_table[gfp->version][i + 1]; +} + + +#ifdef BRHIST +void +lame_bitrate_hist(const lame_global_flags * const gfp, int bitrate_count[14]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == bitrate_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 14; i++) + bitrate_count[i] = gfc->bitrate_stereoMode_Hist[i + 1][4]; +} + + +void +lame_stereo_mode_hist(const lame_global_flags * const gfp, int stmode_count[4]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == stmode_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 4; i++) { + stmode_count[i] = gfc->bitrate_stereoMode_Hist[15][i]; + } +} + + + +void +lame_bitrate_stereo_mode_hist(const lame_global_flags * const gfp, + int bitrate_stmode_count[14][4]) +{ + const lame_internal_flags *gfc; + int i; + int j; + + if (NULL == bitrate_stmode_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (j = 0; j < 14; j++) + for (i = 0; i < 4; i++) + bitrate_stmode_count[j][i] = gfc->bitrate_stereoMode_Hist[j + 1][i]; +} + + +void +lame_block_type_hist(const lame_global_flags * const gfp, int btype_count[6]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == btype_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 6; ++i) { + btype_count[i] = gfc->bitrate_blockType_Hist[15][i]; + } +} + + + +void +lame_bitrate_block_type_hist(const lame_global_flags * const gfp, + int bitrate_btype_count[14][6]) +{ + const lame_internal_flags * gfc; + int i, j; + + if (NULL == bitrate_btype_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (j = 0; j < 14; ++j) + for (i = 0; i < 6; ++i) + bitrate_btype_count[j][i] = gfc->bitrate_blockType_Hist[j+1][i]; +} + +#endif + +/* end of lame.c */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/lame_global_flags.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/lame_global_flags.h.svn-base new file mode 100644 index 0000000..ab4b0de --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/lame_global_flags.h.svn-base @@ -0,0 +1,194 @@ + +#ifndef LAME_GLOBAL_FLAGS_H +#define LAME_GLOBAL_FLAGS_H + +struct lame_internal_flags; +typedef struct lame_internal_flags lame_internal_flags; + + +typedef enum short_block_e { + short_block_not_set = -1, /* allow LAME to decide */ + short_block_allowed = 0, /* LAME may use them, even different block types for L/R */ + short_block_coupled, /* LAME may use them, but always same block types in L/R */ + short_block_dispensed, /* LAME will not use short blocks, long blocks only */ + short_block_forced /* LAME will not use long blocks, short blocks only */ +} short_block_t; + +/*********************************************************************** +* +* Control Parameters set by User. These parameters are here for +* backwards compatibility with the old, non-shared lib API. +* Please use the lame_set_variablename() functions below +* +* +***********************************************************************/ +struct lame_global_struct { + /* input description */ + unsigned long num_samples; /* number of samples. default=2^32-1 */ + int num_channels; /* input number of channels. default=2 */ + int in_samplerate; /* input_samp_rate in Hz. default=44.1 kHz */ + int out_samplerate; /* output_samp_rate. + default: LAME picks best value + at least not used for MP3 decoding: + Remember 44.1 kHz MP3s and AC97 */ + float scale; /* scale input by this amount before encoding + at least not used for MP3 decoding */ + float scale_left; /* scale input of channel 0 (left) by this + amount before encoding */ + float scale_right; /* scale input of channel 1 (right) by this + amount before encoding */ + + /* general control params */ + int analysis; /* collect data for a MP3 frame analyzer? */ + int bWriteVbrTag; /* add Xing VBR tag? */ + int decode_only; /* use lame/mpglib to convert mp3 to wav */ + int quality; /* quality setting 0=best, 9=worst default=5 */ + MPEG_mode mode; /* see enum in lame.h + default = LAME picks best value */ + int mode_fixed; /* ignored */ + int force_ms; /* force M/S mode. requires mode=1 */ + int free_format; /* use free format? default=0 */ + int findReplayGain; /* find the RG value? default=0 */ + int decode_on_the_fly; /* decode on the fly? default=0 */ + + /* + * set either brate>0 or compression_ratio>0, LAME will compute + * the value of the variable not set. + * Default is compression_ratio = 11.025 + */ + int brate; /* bitrate */ + float compression_ratio; /* sizeof(wav file)/sizeof(mp3 file) */ + + + /* frame params */ + int copyright; /* mark as copyright. default=0 */ + int original; /* mark as original. default=1 */ + int error_protection; /* use 2 bytes per frame for a CRC + checksum. default=0 */ + int extension; /* the MP3 'private extension' bit. + Meaningless */ + int strict_ISO; /* enforce ISO spec as much as possible */ + + int disable_reservoir; /* use bit reservoir? */ + + /* quantization/noise shaping */ + int quant_comp; + int quant_comp_short; + int experimentalY; + int exp_nspsytune; + + double newmsfix; + int preset_expopts; + int preset; + + /* VBR control */ + vbr_mode VBR; + int VBR_q; + int VBR_mean_bitrate_kbps; + int VBR_min_bitrate_kbps; + int VBR_max_bitrate_kbps; + int VBR_hard_min; /* strictly enforce VBR_min_bitrate + normaly, it will be violated for analog + silence */ + + + /* resampling and filtering */ + int lowpassfreq; /* freq in Hz. 0=lame choses. + -1=no filter */ + int highpassfreq; /* freq in Hz. 0=lame choses. + -1=no filter */ + int lowpasswidth; /* freq width of filter, in Hz + (default=15%) */ + int highpasswidth; /* freq width of filter, in Hz + (default=15%) */ + + + + /* + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + */ + int psymodel; /* select psychoacoustic model */ + float maskingadjust; + float maskingadjust_short; + int ATHonly; /* only use ATH */ + int ATHshort; /* only use ATH for short blocks */ + int noATH; /* disable ATH */ + int ATHtype; /* select ATH formula */ + float ATHcurve; /* change ATH formula 4 shape */ + float ATHlower; /* lower ATH by this many db */ + int athaa_type; /* select ATH auto-adjust scheme */ + int athaa_loudapprox; /* select ATH auto-adjust loudness calc */ + float athaa_sensitivity; /* dB, tune active region of auto-level */ + int cwlimit; /* predictability limit */ + short_block_t short_blocks; +/* int allow_diff_short; allow blocktypes to differ between + channels? */ + int useTemporal; /* use temporal masking effect */ + float interChRatio; +/* int no_short_blocks; disable short blocks */ + int emphasis; /* Input PCM is emphased PCM (for + instance from one of the rarely + emphased CDs), it is STRONGLY not + recommended to use this, because + psycho does not take it into account, + and last but not least many decoders + don't care about these bits */ + float msfix; /* Naoki's adjustment of Mid/Side maskings */ + + int tune; /* 0 off, 1 on */ + float tune_value_a; /* used to pass values for debugging and stuff */ + + int sparsing; + FLOAT sparse_low; + FLOAT sparse_high; + + struct { + void (*msgf) (const char *format, va_list ap); + void (*debugf)(const char *format, va_list ap); + void (*errorf)(const char *format, va_list ap); + } report; + + /************************************************************************/ + /* internal variables, do not set... */ + /* provided because they may be of use to calling application */ + /************************************************************************/ + + int version; /* 0=MPEG-2/2.5 1=MPEG-1 */ + int encoder_delay; + int encoder_padding; /* number of samples of padding appended to input */ + int framesize; + int frameNum; /* number of frames encoded */ + int lame_allocated_gfp; /* is this struct owned by calling + program or lame? */ + + + + /**************************************************************************/ + /* more internal variables are stored in this structure: */ + /**************************************************************************/ + lame_internal_flags *internal_flags; + + + /* VBR tag data */ + int TotalFrameSize; + int nVbrNumFrames; + /*int nVbrFrameBufferSize;*/ + /*int* pVbrFrames; */ + + struct { + int integer[16]; + float real[16]; + void *pointer[16]; + } exp_nspsytune2; + + struct { + int mmx; + int amd3dnow; + int sse; + + } asm_optimizations; +} ; + +#endif /* LAME_GLOBAL_FLAGS_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/libmp3lame_vc6.dsp.svn-base b/lame-3.97/libmp3lame/.svn/text-base/libmp3lame_vc6.dsp.svn-base new file mode 100644 index 0000000..dcac1d9 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/libmp3lame_vc6.dsp.svn-base @@ -0,0 +1,585 @@ +# Microsoft Developer Studio Project File - Name="libmp3lame" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=libmp3lame - Win32 Debug GTK +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "libmp3lame_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "libmp3lame_vc6.mak" CFG="libmp3lame - Win32 Debug GTK" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "libmp3lame - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Release NASM" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Debug GTK" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Release GTK" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libmp3la" +# PROP BASE Intermediate_Dir "libmp3la" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /Ob2 /D "WIN32" /D "HAVE_CONFIG_H" /D "NDEBUG" /D "_WINDOWS" /YX /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Release\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "HAVE_CONFIG_H" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /ZI /Od /I "../" /I "../mpglib" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Debug\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libmp3la" +# PROP BASE Intermediate_Dir "libmp3la" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_NASM" +# PROP Intermediate_Dir "Release_NASM" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /D "HAVE_NASM" /D "MMX_choose_table" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Release_NASM\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "libmp3lame___Win32_Debug_GTK" +# PROP BASE Intermediate_Dir "libmp3lame___Win32_Debug_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "libmp3lame___Win32_Debug_GTK" +# PROP Intermediate_Dir "libmp3lame___Win32_Debug_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /ZI /Od /I "../" /I "../mpglib" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /ZI /Od /I "../" /I "../mpglib" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /D "HAVE_GTK" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Debug\libmp3lame.lib" +# ADD LIB32 /nologo /out:"Debug\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libmp3lame___Win32_Release_GTK" +# PROP BASE Intermediate_Dir "libmp3lame___Win32_Release_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "libmp3lame___Win32_Release_GTK" +# PROP Intermediate_Dir "libmp3lame___Win32_Release_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /D "HAVE_GTK" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Release\libmp3lame.lib" +# ADD LIB32 /nologo /out:"Release\libmp3lame.lib" + +!ENDIF + +# Begin Target + +# Name "libmp3lame - Win32 Release" +# Name "libmp3lame - Win32 Debug" +# Name "libmp3lame - Win32 Release NASM" +# Name "libmp3lame - Win32 Debug GTK" +# Name "libmp3lame - Win32 Release GTK" +# Begin Group "Source" + +# PROP Default_Filter "c" +# Begin Source File + +SOURCE=.\bitstream.c +# End Source File +# Begin Source File + +SOURCE=.\encoder.c +# End Source File +# Begin Source File + +SOURCE=.\fft.c +# End Source File +# Begin Source File + +SOURCE=.\gain_analysis.c +# End Source File +# Begin Source File + +SOURCE=.\id3tag.c +# End Source File +# Begin Source File + +SOURCE=.\lame.c +# End Source File +# Begin Source File + +SOURCE=.\mpglib_interface.c +# End Source File +# Begin Source File + +SOURCE=.\newmdct.c +# End Source File +# Begin Source File + +SOURCE=.\presets.c +# End Source File +# Begin Source File + +SOURCE=.\psymodel.c +# End Source File +# Begin Source File + +SOURCE=.\quantize.c +# End Source File +# Begin Source File + +SOURCE=.\quantize_pvt.c +# End Source File +# Begin Source File + +SOURCE=.\reservoir.c +# End Source File +# Begin Source File + +SOURCE=.\set_get.c +# End Source File +# Begin Source File + +SOURCE=.\tables.c +# ADD CPP /W1 +# End Source File +# Begin Source File + +SOURCE=.\takehiro.c +# End Source File +# Begin Source File + +SOURCE=.\util.c +# End Source File +# Begin Source File + +SOURCE=.\vbrquantize.c +# End Source File +# Begin Source File + +SOURCE=.\VbrTag.c +# End Source File +# Begin Source File + +SOURCE=.\version.c +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\bitstream.h +# End Source File +# Begin Source File + +SOURCE=..\configMS.h + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\encoder.h +# End Source File +# Begin Source File + +SOURCE=.\fft.h +# End Source File +# Begin Source File + +SOURCE=.\gain_analysis.h +# End Source File +# Begin Source File + +SOURCE=.\id3tag.h +# End Source File +# Begin Source File + +SOURCE=.\l3side.h +# End Source File +# Begin Source File + +SOURCE=".\lame-analysis.h" +# End Source File +# Begin Source File + +SOURCE=.\lame_global_flags.h +# End Source File +# Begin Source File + +SOURCE=.\lameerror.h +# End Source File +# Begin Source File + +SOURCE=.\machine.h +# End Source File +# Begin Source File + +SOURCE=.\newmdct.h +# End Source File +# Begin Source File + +SOURCE=.\psymodel.h +# End Source File +# Begin Source File + +SOURCE=.\quantize.h +# End Source File +# Begin Source File + +SOURCE=.\quantize_pvt.h +# End Source File +# Begin Source File + +SOURCE=.\reservoir.h +# End Source File +# Begin Source File + +SOURCE=.\set_get.h +# End Source File +# Begin Source File + +SOURCE=.\tables.h +# End Source File +# Begin Source File + +SOURCE=.\util.h +# End Source File +# Begin Source File + +SOURCE=.\vbrquantize.h +# End Source File +# Begin Source File + +SOURCE=.\VbrTag.h +# End Source File +# Begin Source File + +SOURCE=.\version.h +# End Source File +# End Group +# Begin Group "Asm" + +# PROP Default_Filter ".nas" +# Begin Source File + +SOURCE=.\i386\choose_table.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Assembling $(InputName)... +InputDir=.\i386 +OutDir=.\Release_NASM +InputPath=.\i386\choose_table.nas +InputName=choose_table + +"$(OutDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + nasmw -f win32 -i $(InputDir)/ -DWIN32 $(InputPath) -o $(OutDir)/$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\cpu_feat.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Assembling $(InputName)... +InputDir=.\i386 +OutDir=.\Release_NASM +InputPath=.\i386\cpu_feat.nas +InputName=cpu_feat + +"$(OutDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + nasmw -f win32 -i $(InputDir)/ -DWIN32 $(InputPath) -o $(OutDir)/$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fft.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fft3dn.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Assembling $(InputName)... +InputDir=.\i386 +OutDir=.\Release_NASM +InputPath=.\i386\fft3dn.nas +InputName=fft3dn + +"$(OutDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + nasmw -f win32 -i $(InputDir)/ -DWIN32 $(InputPath) -o $(OutDir)/$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fftfpu.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fftsse.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\ffttbl.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\scalar.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/libmp3lame/.svn/text-base/libmp3lame_vc7.vcproj.svn-base b/lame-3.97/libmp3lame/.svn/text-base/libmp3lame_vc7.vcproj.svn-base new file mode 100644 index 0000000..2e61c40 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/libmp3lame_vc7.vcproj.svn-base @@ -0,0 +1,2641 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="libmp3lame" + ProjectGUID="{E316772F-5D8F-4F2A-8F71-094C3E859D34}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release NASM|Win32" + OutputDirectory=".\Release_NASM" + IntermediateDirectory=".\Release_NASM" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f" + Optimization="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H;HAVE_NASM;MMX_choose_table" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release_NASM/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release_NASM/" + ObjectFile=".\Release_NASM/" + ProgramDataBaseFileName=".\Release_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release_NASM\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f" + Optimization="2" + OptimizeForProcessor="3" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release GTK|Win32" + OutputDirectory=".\libmp3lame___Win32_Release_GTK" + IntermediateDirectory=".\libmp3lame___Win32_Release_GTK" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f " + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H;HAVE_GTK" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\libmp3lame___Win32_Release_GTK/libmp3lame_vc6.pch" + AssemblerListingLocation=".\libmp3lame___Win32_Release_GTK/" + ObjectFile=".\libmp3lame___Win32_Release_GTK/" + ProgramDataBaseFileName=".\libmp3lame___Win32_Release_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug GTK|Win32" + OutputDirectory=".\libmp3lame___Win32_Debug_GTK" + IntermediateDirectory=".\libmp3lame___Win32_Debug_GTK" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H;HAVE_GTK" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\libmp3lame___Win32_Debug_GTK/libmp3lame_vc6.pch" + AssemblerListingLocation=".\libmp3lame___Win32_Debug_GTK/" + ObjectFile=".\libmp3lame___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\libmp3lame___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f " + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f " + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source" + Filter="c"> + <File + RelativePath="bitstream.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="encoder.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="fft.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="gain_analysis.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="id3tag.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="lame.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="mpglib_interface.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="newmdct.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="presets.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="psymodel.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="quantize.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="quantize_pvt.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="reservoir.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="set_get.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="tables.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + </File> + <File + RelativePath="takehiro.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="util.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="vbrquantize.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="VbrTag.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="version.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Include" + Filter="h"> + <File + RelativePath="bitstream.h"> + </File> + <File + RelativePath="..\configMS.h"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + </File> + <File + RelativePath="encoder.h"> + </File> + <File + RelativePath="fft.h"> + </File> + <File + RelativePath="gain_analysis.h"> + </File> + <File + RelativePath="id3tag.h"> + </File> + <File + RelativePath="l3side.h"> + </File> + <File + RelativePath="lame-analysis.h"> + </File> + <File + RelativePath="lame_global_flags.h"> + </File> + <File + RelativePath="lameerror.h"> + </File> + <File + RelativePath="machine.h"> + </File> + <File + RelativePath="newmdct.h"> + </File> + <File + RelativePath="psymodel.h"> + </File> + <File + RelativePath="quantize.h"> + </File> + <File + RelativePath="quantize_pvt.h"> + </File> + <File + RelativePath="reservoir.h"> + </File> + <File + RelativePath="set_get.h"> + </File> + <File + RelativePath="tables.h"> + </File> + <File + RelativePath="util.h"> + </File> + <File + RelativePath="vbrquantize.h"> + </File> + <File + RelativePath="VbrTag.h"> + </File> + <File + RelativePath="version.h"> + </File> + </Filter> + <Filter + Name="Asm" + Filter=".nas"> + <File + RelativePath="i386\choose_table.nas"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Assembling $(InputName)..." + CommandLine="nasmw -f win32 -I $(InputDir) -DWIN32 $(InputPath) -o $(OutDir)\$(InputName).obj +" + Outputs="$(OutDir)/$(InputName).obj"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\cpu_feat.nas"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Assembling $(InputName)..." + CommandLine="nasmw -f win32 -I $(InputDir) -DWIN32 $(InputPath) -o $(OutDir)\$(InputName).obj +" + Outputs="$(OutDir)/$(InputName).obj"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fft.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fft3dn.nas"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Assembling $(InputName)..." + CommandLine="nasmw -f win32 -I $(InputDir) -DWIN32 $(InputPath) -o $(OutDir)\$(InputName).obj +" + Outputs="$(OutDir)/$(InputName).obj"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fftfpu.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fftsse.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\ffttbl.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\scalar.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/libmp3lame/.svn/text-base/machine.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/machine.h.svn-base new file mode 100644 index 0000000..122acfa --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/machine.h.svn-base @@ -0,0 +1,146 @@ +/* + * Machine dependent defines/includes for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_MACHINE_H +#define LAME_MACHINE_H + +#include <stdio.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#if defined(__riscos__) && defined(FPA10) +# include "ymath.h" +#else +# include <math.h> +#endif + +#include <ctype.h> + +#ifdef HAVE_ERRNO_H +# include <errno.h> +#endif +#ifdef HAVE_FCNTL_H +# include <fcntl.h> +#endif + +#if defined(macintosh) +# include <types.h> +# include <stat.h> +#else +# include <sys/types.h> +# include <sys/stat.h> +#endif + +/* + * 3 different types of pow() functions: + * - table lookup + * - pow() + * - exp() on some machines this is claimed to be faster than pow() + */ + +#define POW20(x) (assert(-Q_MAX2 <= x && x < Q_MAX), pow20[x+Q_MAX2]) +/*#define POW20(x) pow(2.0,((double)(x)-210)*.25) */ +/*#define POW20(x) exp( ((double)(x)-210)*(.25*LOG2) ) */ + +#define IPOW20(x) (assert(0 <= x && x < Q_MAX), ipow20[x]) +/*#define IPOW20(x) exp( -((double)(x)-210)*.1875*LOG2 ) */ +/*#define IPOW20(x) pow(2.0,-((double)(x)-210)*.1875) */ + +/* in case this is used without configure */ +#ifndef inline +# define inline +#endif + +#if defined(_MSC_VER) +# undef inline +# define inline _inline +#elif defined(__SASC) || defined(__GNUC__) || defined(__ICC) || defined(__ECC) +/* if __GNUC__ we always want to inline, not only if the user requests it */ +# undef inline +# define inline __inline +#endif + +#if defined(_MSC_VER) +# pragma warning( disable : 4244 ) +/*# pragma warning( disable : 4305 ) */ +#endif + +/* + * FLOAT for variables which require at least 32 bits + * FLOAT8 for variables which require at least 64 bits + * + * On some machines, 64 bit will be faster than 32 bit. Also, some math + * routines require 64 bit float, so setting FLOAT=float will result in a + * lot of conversions. + */ + +#if ( defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__) ) +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +# include <float.h> +# define FLOAT_MAX FLT_MAX +#else +# ifndef FLOAT +typedef float FLOAT; +# ifdef FLT_MAX +# define FLOAT_MAX FLT_MAX +# else +# define FLOAT_MAX 1e37 /* approx */ +# endif +# endif +#endif + +#ifndef FLOAT8 /* NOTE: RH: 7/00: if FLOAT8=float, it breaks resampling and VBR code */ +typedef double FLOAT8; +# ifdef DBL_MAX +# define FLOAT8_MAX DBL_MAX +# else +# define FLOAT8_MAX 1e99 /* approx */ +# endif +#else +# ifdef FLT_MAX +# define FLOAT8_MAX FLT_MAX +# else +# define FLOAT8_MAX 1e37 /* approx */ +# endif +#endif + +/* sample_t must be floating point, at least 32 bits */ +typedef FLOAT sample_t; +typedef sample_t stereo_t [2]; + +#endif + +/* end of machine.h */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/mpglib_interface.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/mpglib_interface.c.svn-base new file mode 100644 index 0000000..268d496 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/mpglib_interface.c.svn-base @@ -0,0 +1,306 @@ +/* -*- mode: C; mode: fold -*- */ +/* + * LAME MP3 encoding engine + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2003 Olcios + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: mpglib_interface.c,v 1.26.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifdef HAVE_MPGLIB + +#include <limits.h> +#include <stdlib.h> +#include <assert.h> + +#include "interface.h" +#include "lame.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +MPSTR mp; +plotting_data *mpg123_pinfo = NULL; + +int +lame_decode_exit(void) +{ + ExitMP3(&mp); + return 0; +} + + +int +lame_decode_init(void) +{ + InitMP3(&mp); + return 0; +} + + + + +/* copy mono samples */ +#define COPY_MONO(DST_TYPE, SRC_TYPE) \ + DST_TYPE *pcm_l = (DST_TYPE *)pcm_l_raw; \ + SRC_TYPE *p_samples = (SRC_TYPE *)p; \ + for (i = 0; i < processed_samples; i++) \ + *pcm_l++ = (DST_TYPE)*p_samples++; + +/* copy stereo samples */ +#define COPY_STEREO(DST_TYPE, SRC_TYPE) \ + DST_TYPE *pcm_l = (DST_TYPE *)pcm_l_raw, *pcm_r = (DST_TYPE *)pcm_r_raw; \ + SRC_TYPE *p_samples = (SRC_TYPE *)p; \ + for (i = 0; i < processed_samples; i++) { \ + *pcm_l++ = (DST_TYPE)*p_samples++; \ + *pcm_r++ = (DST_TYPE)*p_samples++; \ + } + + + +/* + * For lame_decode: return code + * -1 error + * 0 ok, but need more data before outputing any samples + * n number of samples output. either 576 or 1152 depending on MP3 file. + */ + +int +lame_decode1_headersB_clipchoice(unsigned char *buffer, int len, + char pcm_l_raw[], char pcm_r_raw[], mp3data_struct * mp3data, + int *enc_delay, int *enc_padding, + char *p, size_t psize, int decoded_sample_size, + int (*decodeMP3_ptr)(PMPSTR,unsigned char *,int,char *,int,int*) ) +{ + static const int smpls[2][4] = { + /* Layer I II III */ + {0, 384, 1152, 1152}, /* MPEG-1 */ + {0, 384, 1152, 576} /* MPEG-2(.5) */ + }; + + int processed_bytes; + int processed_samples; /* processed samples per channel */ + int ret; + int i; + + mp3data->header_parsed = 0; + + ret = + (*decodeMP3_ptr)(&mp, buffer, len, p, psize, &processed_bytes); + /* three cases: + * 1. headers parsed, but data not complete + * mp.header_parsed==1 + * mp.framesize=0 + * mp.fsizeold=size of last frame, or 0 if this is first frame + * + * 2. headers, data parsed, but ancillary data not complete + * mp.header_parsed==1 + * mp.framesize=size of frame + * mp.fsizeold=size of last frame, or 0 if this is first frame + * + * 3. frame fully decoded: + * mp.header_parsed==0 + * mp.framesize=0 + * mp.fsizeold=size of frame (which is now the last frame) + * + */ + if (mp.header_parsed || mp.fsizeold > 0 || mp.framesize > 0) { + mp3data->header_parsed = 1; + mp3data->stereo = mp.fr.stereo; + mp3data->samplerate = freqs[mp.fr.sampling_frequency]; + mp3data->mode = mp.fr.mode; + mp3data->mode_ext = mp.fr.mode_ext; + mp3data->framesize = smpls[mp.fr.lsf][mp.fr.lay]; + + /* free format, we need the entire frame before we can determine + * the bitrate. If we haven't gotten the entire frame, bitrate=0 */ + if (mp.fsizeold > 0) /* works for free format and fixed, no overrun, temporal results are < 400.e6 */ + mp3data->bitrate = 8 * (4 + mp.fsizeold) * mp3data->samplerate / + (1.e3 * mp3data->framesize) + 0.5; + else if (mp.framesize > 0) + mp3data->bitrate = 8 * (4 + mp.framesize) * mp3data->samplerate / + (1.e3 * mp3data->framesize) + 0.5; + else + mp3data->bitrate = + tabsel_123[mp.fr.lsf][mp.fr.lay - 1][mp.fr.bitrate_index]; + + + + if (mp.num_frames > 0) { + /* Xing VBR header found and num_frames was set */ + mp3data->totalframes = mp.num_frames; + mp3data->nsamp = mp3data->framesize * mp.num_frames; + *enc_delay = mp.enc_delay; + *enc_padding = mp.enc_padding; + } + } + + switch (ret) { + case MP3_OK: + switch (mp.fr.stereo) { + case 1: + processed_samples = processed_bytes / decoded_sample_size; + if (decoded_sample_size == sizeof(short)) { + COPY_MONO(short,short) + } + else { + COPY_MONO(sample_t,FLOAT) + } + break; + case 2: + processed_samples = (processed_bytes / decoded_sample_size) >> 1; + if (decoded_sample_size == sizeof(short)) { + COPY_STEREO(short,short) + } + else { + COPY_STEREO(sample_t,FLOAT) + } + break; + default: + processed_samples = -1; + assert(0); + break; + } + break; + + case MP3_NEED_MORE: + processed_samples = 0; + break; + + default: + assert(0); + case MP3_ERR: + processed_samples = -1; + break; + + } + + /*fprintf(stderr,"ok, more, err: %i %i %i\n", MP3_OK, MP3_NEED_MORE, MP3_ERR );*/ + /*fprintf(stderr,"ret = %i out=%i\n", ret, processed_samples );*/ + return processed_samples; +} + + +#define OUTSIZE_CLIPPED 4096*sizeof(short) + +int +lame_decode1_headersB(unsigned char *buffer, + int len, + short pcm_l[], short pcm_r[], mp3data_struct * mp3data, + int *enc_delay, int *enc_padding) +{ + static char out[OUTSIZE_CLIPPED]; + + return lame_decode1_headersB_clipchoice(buffer, len, (char *)pcm_l, (char *)pcm_r, mp3data, enc_delay, enc_padding, out, OUTSIZE_CLIPPED, sizeof(short), decodeMP3 ); +} + + +/* we forbid input with more than 1152 samples per channel for output in the unclipped mode */ +#define OUTSIZE_UNCLIPPED 1152*2*sizeof(FLOAT) + +int +lame_decode1_unclipped(unsigned char *buffer, int len, sample_t pcm_l[], sample_t pcm_r[]) +{ + static char out[OUTSIZE_UNCLIPPED]; + mp3data_struct mp3data; + int enc_delay,enc_padding; + + return lame_decode1_headersB_clipchoice(buffer, len, (char *)pcm_l, (char *)pcm_r, &mp3data, &enc_delay, &enc_padding, out, OUTSIZE_UNCLIPPED, sizeof(FLOAT), decodeMP3_unclipped ); +} + + + +/* + * For lame_decode: return code + * -1 error + * 0 ok, but need more data before outputing any samples + * n number of samples output. Will be at most one frame of + * MPEG data. + */ + +int +lame_decode1_headers(unsigned char *buffer, + int len, + short pcm_l[], short pcm_r[], mp3data_struct * mp3data) +{ + int enc_delay,enc_padding; + return lame_decode1_headersB(buffer,len,pcm_l,pcm_r,mp3data,&enc_delay,&enc_padding); +} + + +int +lame_decode1(unsigned char *buffer, int len, short pcm_l[], short pcm_r[]) +{ + mp3data_struct mp3data; + + return lame_decode1_headers(buffer, len, pcm_l, pcm_r, &mp3data); +} + + +/* + * For lame_decode: return code + * -1 error + * 0 ok, but need more data before outputing any samples + * n number of samples output. a multiple of 576 or 1152 depending on MP3 file. + */ + +int +lame_decode_headers(unsigned char *buffer, + int len, + short pcm_l[], short pcm_r[], mp3data_struct * mp3data) +{ + int ret; + int totsize = 0; /* number of decoded samples per channel */ + + while (1) { + switch (ret = + lame_decode1_headers(buffer, len, pcm_l + totsize, + pcm_r + totsize, mp3data)) { + case -1: + return ret; + case 0: + return totsize; + default: + totsize += ret; + len = 0; /* future calls to decodeMP3 are just to flush buffers */ + break; + } + } +} + + +int +lame_decode(unsigned char *buffer, int len, short pcm_l[], short pcm_r[]) +{ + mp3data_struct mp3data; + + return lame_decode_headers(buffer, len, pcm_l, pcm_r, &mp3data); +} + + +#endif + +/* end of mpglib_interface.c */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/newmdct.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/newmdct.c.svn-base new file mode 100644 index 0000000..cf06575 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/newmdct.c.svn-base @@ -0,0 +1,779 @@ +/* + * MP3 window subband -> subband filtering -> mdct routine + * + * Copyright (c) 1999-2000 Takehiro Tominaga + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * Special Thanks to Patrick De Smet for your advices. + */ + +/* $Id: newmdct.c,v 1.29.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "util.h" +#include "l3side.h" +#include "newmdct.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#define SCALE (32768.0/ 2.384e-06) + +#ifndef USE_GOGO_SUBBAND +static const FLOAT enwindow[] = +{ + -4.77e-07*0.740951125354959/2.384e-06, 1.03951e-04*0.740951125354959/2.384e-06, 9.53674e-04*0.740951125354959/2.384e-06, 2.841473e-03*0.740951125354959/2.384e-06, + 3.5758972e-02*0.740951125354959/2.384e-06, 3.401756e-03*0.740951125354959/2.384e-06, 9.83715e-04*0.740951125354959/2.384e-06, 9.9182e-05*0.740951125354959/2.384e-06, /* 15*/ + 1.2398e-05*0.740951125354959/2.384e-06, 1.91212e-04*0.740951125354959/2.384e-06, 2.283096e-03*0.740951125354959/2.384e-06,1.6994476e-02*0.740951125354959/2.384e-06, + -1.8756866e-02*0.740951125354959/2.384e-06,-2.630711e-03*0.740951125354959/2.384e-06, -2.47478e-04*0.740951125354959/2.384e-06, -1.4782e-05*0.740951125354959/2.384e-06, + 9.063471690191471e-01, + 1.960342806591213e-01, + + + -4.77e-07*0.773010453362737/2.384e-06, 1.05858e-04*0.773010453362737/2.384e-06, 9.30786e-04*0.773010453362737/2.384e-06, 2.521515e-03*0.773010453362737/2.384e-06, + 3.5694122e-02*0.773010453362737/2.384e-06, 3.643036e-03*0.773010453362737/2.384e-06, 9.91821e-04*0.773010453362737/2.384e-06, 9.6321e-05*0.773010453362737/2.384e-06, /* 14*/ + 1.1444e-05*0.773010453362737/2.384e-06, 1.65462e-04*0.773010453362737/2.384e-06, 2.110004e-03*0.773010453362737/2.384e-06,1.6112804e-02*0.773010453362737/2.384e-06, + -1.9634247e-02*0.773010453362737/2.384e-06,-2.803326e-03*0.773010453362737/2.384e-06, -2.77042e-04*0.773010453362737/2.384e-06, -1.6689e-05*0.773010453362737/2.384e-06, + 8.206787908286602e-01, + 3.901806440322567e-01, + + + -4.77e-07*0.803207531480645/2.384e-06, 1.07288e-04*0.803207531480645/2.384e-06, 9.02653e-04*0.803207531480645/2.384e-06, 2.174854e-03*0.803207531480645/2.384e-06, + 3.5586357e-02*0.803207531480645/2.384e-06, 3.858566e-03*0.803207531480645/2.384e-06, 9.95159e-04*0.803207531480645/2.384e-06, 9.3460e-05*0.803207531480645/2.384e-06, /* 13*/ + 1.0014e-05*0.803207531480645/2.384e-06, 1.40190e-04*0.803207531480645/2.384e-06, 1.937389e-03*0.803207531480645/2.384e-06,1.5233517e-02*0.803207531480645/2.384e-06, + -2.0506859e-02*0.803207531480645/2.384e-06,-2.974033e-03*0.803207531480645/2.384e-06, -3.07560e-04*0.803207531480645/2.384e-06, -1.8120e-05*0.803207531480645/2.384e-06, + 7.416505462720353e-01, + 5.805693545089249e-01, + + + -4.77e-07*0.831469612302545/2.384e-06, 1.08242e-04*0.831469612302545/2.384e-06, 8.68797e-04*0.831469612302545/2.384e-06, 1.800537e-03*0.831469612302545/2.384e-06, + 3.5435200e-02*0.831469612302545/2.384e-06, 4.049301e-03*0.831469612302545/2.384e-06, 9.94205e-04*0.831469612302545/2.384e-06, 9.0599e-05*0.831469612302545/2.384e-06, /* 12*/ + 9.060e-06*0.831469612302545/2.384e-06, 1.16348e-04*0.831469612302545/2.384e-06, 1.766682e-03*0.831469612302545/2.384e-06,1.4358521e-02*0.831469612302545/2.384e-06, + -2.1372318e-02*0.831469612302545/2.384e-06, -3.14188e-03*0.831469612302545/2.384e-06, -3.39031e-04*0.831469612302545/2.384e-06, -1.9550e-05*0.831469612302545/2.384e-06, + 6.681786379192989e-01, + 7.653668647301797e-01, + + + -4.77e-07*0.857728610000272/2.384e-06, 1.08719e-04*0.857728610000272/2.384e-06, 8.29220e-04*0.857728610000272/2.384e-06, 1.399517e-03*0.857728610000272/2.384e-06, + 3.5242081e-02*0.857728610000272/2.384e-06, 4.215240e-03*0.857728610000272/2.384e-06, 9.89437e-04*0.857728610000272/2.384e-06, 8.7261e-05*0.857728610000272/2.384e-06, /* 11*/ + 8.106e-06*0.857728610000272/2.384e-06, 9.3937e-05*0.857728610000272/2.384e-06, 1.597881e-03*0.857728610000272/2.384e-06,1.3489246e-02*0.857728610000272/2.384e-06, + -2.2228718e-02*0.857728610000272/2.384e-06,-3.306866e-03*0.857728610000272/2.384e-06, -3.71456e-04*0.857728610000272/2.384e-06, -2.1458e-05*0.857728610000272/2.384e-06, + 5.993769336819237e-01, + 9.427934736519954e-01, + + + -4.77e-07*0.881921264348355/2.384e-06, 1.08719e-04*0.881921264348355/2.384e-06, 7.8392e-04*0.881921264348355/2.384e-06, 9.71317e-04*0.881921264348355/2.384e-06, + 3.5007000e-02*0.881921264348355/2.384e-06, 4.357815e-03*0.881921264348355/2.384e-06, 9.80854e-04*0.881921264348355/2.384e-06, 8.3923e-05*0.881921264348355/2.384e-06, /* 10*/ + 7.629e-06*0.881921264348355/2.384e-06, 7.2956e-05*0.881921264348355/2.384e-06, 1.432419e-03*0.881921264348355/2.384e-06,1.2627602e-02*0.881921264348355/2.384e-06, + -2.3074150e-02*0.881921264348355/2.384e-06,-3.467083e-03*0.881921264348355/2.384e-06, -4.04358e-04*0.881921264348355/2.384e-06, -2.3365e-05*0.881921264348355/2.384e-06, + 5.345111359507916e-01, + 1.111140466039205e+00, + + + -9.54e-07*0.903989293123443/2.384e-06, 1.08242e-04*0.903989293123443/2.384e-06, 7.31945e-04*0.903989293123443/2.384e-06, 5.15938e-04*0.903989293123443/2.384e-06, + 3.4730434e-02*0.903989293123443/2.384e-06, 4.477024e-03*0.903989293123443/2.384e-06, 9.68933e-04*0.903989293123443/2.384e-06, 8.0585e-05*0.903989293123443/2.384e-06, /* 9*/ + 6.676e-06*0.903989293123443/2.384e-06, 5.2929e-05*0.903989293123443/2.384e-06, 1.269817e-03*0.903989293123443/2.384e-06,1.1775017e-02*0.903989293123443/2.384e-06, + -2.3907185e-02*0.903989293123443/2.384e-06,-3.622532e-03*0.903989293123443/2.384e-06, -4.38213e-04*0.903989293123443/2.384e-06, -2.5272e-05*0.903989293123443/2.384e-06, + 4.729647758913199e-01, + 1.268786568327291e+00, + + + -9.54e-07*0.92387953251128675613/2.384e-06, 1.06812e-04*0.92387953251128675613/2.384e-06, 6.74248e-04*0.92387953251128675613/2.384e-06, 3.3379e-05*0.92387953251128675613/2.384e-06, + 3.4412861e-02*0.92387953251128675613/2.384e-06, 4.573822e-03*0.92387953251128675613/2.384e-06, 9.54151e-04*0.92387953251128675613/2.384e-06, 7.6771e-05*0.92387953251128675613/2.384e-06, + 6.199e-06*0.92387953251128675613/2.384e-06, 3.4332e-05*0.92387953251128675613/2.384e-06, 1.111031e-03*0.92387953251128675613/2.384e-06,1.0933399e-02*0.92387953251128675613/2.384e-06, + -2.4725437e-02*0.92387953251128675613/2.384e-06,-3.771782e-03*0.92387953251128675613/2.384e-06, -4.72546e-04*0.92387953251128675613/2.384e-06, -2.7657e-05*0.92387953251128675613/2.384e-06, + 4.1421356237309504879e-01, /* tan(PI/8) */ + 1.414213562373095e+00, + + + -9.54e-07*0.941544065183021/2.384e-06, 1.05381e-04*0.941544065183021/2.384e-06, 6.10352e-04*0.941544065183021/2.384e-06, -4.75883e-04*0.941544065183021/2.384e-06, + 3.4055710e-02*0.941544065183021/2.384e-06, 4.649162e-03*0.941544065183021/2.384e-06, 9.35555e-04*0.941544065183021/2.384e-06, 7.3433e-05*0.941544065183021/2.384e-06, /* 7*/ + 5.245e-06*0.941544065183021/2.384e-06, 1.7166e-05*0.941544065183021/2.384e-06, 9.56535e-04*0.941544065183021/2.384e-06,1.0103703e-02*0.941544065183021/2.384e-06, + -2.5527000e-02*0.941544065183021/2.384e-06,-3.914356e-03*0.941544065183021/2.384e-06, -5.07355e-04*0.941544065183021/2.384e-06, -3.0041e-05*0.941544065183021/2.384e-06, + 3.578057213145241e-01, + 1.546020906725474e+00, + + + -9.54e-07*0.956940335732209/2.384e-06, 1.02520e-04*0.956940335732209/2.384e-06, 5.39303e-04*0.956940335732209/2.384e-06,-1.011848e-03*0.956940335732209/2.384e-06, + 3.3659935e-02*0.956940335732209/2.384e-06, 4.703045e-03*0.956940335732209/2.384e-06, 9.15051e-04*0.956940335732209/2.384e-06, 7.0095e-05*0.956940335732209/2.384e-06, /* 6*/ + 4.768e-06*0.956940335732209/2.384e-06, 9.54e-07*0.956940335732209/2.384e-06, 8.06808e-04*0.956940335732209/2.384e-06, 9.287834e-03*0.956940335732209/2.384e-06, + -2.6310921e-02*0.956940335732209/2.384e-06,-4.048824e-03*0.956940335732209/2.384e-06, -5.42164e-04*0.956940335732209/2.384e-06, -3.2425e-05*0.956940335732209/2.384e-06, + 3.033466836073424e-01, + 1.662939224605090e+00, + + + -1.431e-06*0.970031253194544/2.384e-06, 9.9182e-05*0.970031253194544/2.384e-06, 4.62532e-04*0.970031253194544/2.384e-06,-1.573563e-03*0.970031253194544/2.384e-06, + 3.3225536e-02*0.970031253194544/2.384e-06, 4.737377e-03*0.970031253194544/2.384e-06, 8.91685e-04*0.970031253194544/2.384e-06, 6.6280e-05*0.970031253194544/2.384e-06, /* 5*/ + 4.292e-06*0.970031253194544/2.384e-06, -1.3828e-05*0.970031253194544/2.384e-06, 6.61850e-04*0.970031253194544/2.384e-06, 8.487225e-03*0.970031253194544/2.384e-06, + -2.7073860e-02*0.970031253194544/2.384e-06,-4.174709e-03*0.970031253194544/2.384e-06, -5.76973e-04*0.970031253194544/2.384e-06, -3.4809e-05*0.970031253194544/2.384e-06, + 2.504869601913055e-01, + 1.763842528696710e+00, + + + -1.431e-06*0.98078528040323/2.384e-06, 9.5367e-05*0.98078528040323/2.384e-06, 3.78609e-04*0.98078528040323/2.384e-06,-2.161503e-03*0.98078528040323/2.384e-06, + 3.2754898e-02*0.98078528040323/2.384e-06, 4.752159e-03*0.98078528040323/2.384e-06, 8.66413e-04*0.98078528040323/2.384e-06, 6.2943e-05*0.98078528040323/2.384e-06, /* 4*/ + 3.815e-06*0.98078528040323/2.384e-06, -2.718e-05*0.98078528040323/2.384e-06, 5.22137e-04*0.98078528040323/2.384e-06, 7.703304e-03*0.98078528040323/2.384e-06, + -2.7815342e-02*0.98078528040323/2.384e-06,-4.290581e-03*0.98078528040323/2.384e-06, -6.11782e-04*0.98078528040323/2.384e-06, -3.7670e-05*0.98078528040323/2.384e-06, + 1.989123673796580e-01, + 1.847759065022573e+00, + + + -1.907e-06*0.989176509964781/2.384e-06, 9.0122e-05*0.989176509964781/2.384e-06, 2.88486e-04*0.989176509964781/2.384e-06,-2.774239e-03*0.989176509964781/2.384e-06, + 3.2248020e-02*0.989176509964781/2.384e-06, 4.748821e-03*0.989176509964781/2.384e-06, 8.38757e-04*0.989176509964781/2.384e-06, 5.9605e-05*0.989176509964781/2.384e-06, /* 3*/ + 3.338e-06*0.989176509964781/2.384e-06, -3.9577e-05*0.989176509964781/2.384e-06, 3.88145e-04*0.989176509964781/2.384e-06, 6.937027e-03*0.989176509964781/2.384e-06, + -2.8532982e-02*0.989176509964781/2.384e-06,-4.395962e-03*0.989176509964781/2.384e-06, -6.46591e-04*0.989176509964781/2.384e-06, -4.0531e-05*0.989176509964781/2.384e-06, + 1.483359875383474e-01, + 1.913880671464418e+00, + + + -1.907e-06*0.995184726672197/2.384e-06, 8.4400e-05*0.995184726672197/2.384e-06, 1.91689e-04*0.995184726672197/2.384e-06,-3.411293e-03*0.995184726672197/2.384e-06, + 3.1706810e-02*0.995184726672197/2.384e-06, 4.728317e-03*0.995184726672197/2.384e-06, 8.09669e-04*0.995184726672197/2.384e-06, 5.579e-05*0.995184726672197/2.384e-06, + 3.338e-06*0.995184726672197/2.384e-06, -5.0545e-05*0.995184726672197/2.384e-06, 2.59876e-04*0.995184726672197/2.384e-06, 6.189346e-03*0.995184726672197/2.384e-06, + -2.9224873e-02*0.995184726672197/2.384e-06,-4.489899e-03*0.995184726672197/2.384e-06, -6.80923e-04*0.995184726672197/2.384e-06, -4.3392e-05*0.995184726672197/2.384e-06, + 9.849140335716425e-02, + 1.961570560806461e+00, + + + -2.384e-06*0.998795456205172/2.384e-06, 7.7724e-05*0.998795456205172/2.384e-06, 8.8215e-05*0.998795456205172/2.384e-06,-4.072189e-03*0.998795456205172/2.384e-06, + 3.1132698e-02*0.998795456205172/2.384e-06, 4.691124e-03*0.998795456205172/2.384e-06, 7.79152e-04*0.998795456205172/2.384e-06, 5.2929e-05*0.998795456205172/2.384e-06, + 2.861e-06*0.998795456205172/2.384e-06, -6.0558e-05*0.998795456205172/2.384e-06, 1.37329e-04*0.998795456205172/2.384e-06, 5.462170e-03*0.998795456205172/2.384e-06, + -2.9890060e-02*0.998795456205172/2.384e-06,-4.570484e-03*0.998795456205172/2.384e-06, -7.14302e-04*0.998795456205172/2.384e-06, -4.6253e-05*0.998795456205172/2.384e-06, + 4.912684976946725e-02, + 1.990369453344394e+00, + + + 3.5780907e-02 * SQRT2*0.5/2.384e-06,1.7876148e-02 * SQRT2*0.5/2.384e-06, 3.134727e-03 * SQRT2*0.5/2.384e-06, 2.457142e-03 * SQRT2*0.5/2.384e-06, + 9.71317e-04 * SQRT2*0.5/2.384e-06, 2.18868e-04 * SQRT2*0.5/2.384e-06, 1.01566e-04 * SQRT2*0.5/2.384e-06, 1.3828e-05 * SQRT2*0.5/2.384e-06, + + 3.0526638e-02/2.384e-06, 4.638195e-03/2.384e-06, 7.47204e-04/2.384e-06, 4.9591e-05/2.384e-06, + 4.756451e-03/2.384e-06, 2.1458e-05/2.384e-06, -6.9618e-05/2.384e-06,/* 2.384e-06/2.384e-06*/ +}; +#endif + + +#define NS 12 +#define NL 36 + +static const FLOAT win[4][NL] = { + { + 2.382191739347913e-13, + 6.423305872147834e-13, + 9.400849094049688e-13, + 1.122435026096556e-12, + 1.183840321267481e-12, + 1.122435026096556e-12, + 9.400849094049690e-13, + 6.423305872147839e-13, + 2.382191739347918e-13, + + 5.456116108943412e-12, + 4.878985199565852e-12, + 4.240448995017367e-12, + 3.559909094758252e-12, + 2.858043359288075e-12, + 2.156177623817898e-12, + 1.475637723558783e-12, + 8.371015190102974e-13, + 2.599706096327376e-13, + + -5.456116108943412e-12, + -4.878985199565852e-12, + -4.240448995017367e-12, + -3.559909094758252e-12, + -2.858043359288076e-12, + -2.156177623817898e-12, + -1.475637723558783e-12, + -8.371015190102975e-13, + -2.599706096327376e-13, + + -2.382191739347923e-13, + -6.423305872147843e-13, + -9.400849094049696e-13, + -1.122435026096556e-12, + -1.183840321267481e-12, + -1.122435026096556e-12, + -9.400849094049694e-13, + -6.423305872147840e-13, + -2.382191739347918e-13, + }, + { + 2.382191739347913e-13, + 6.423305872147834e-13, + 9.400849094049688e-13, + 1.122435026096556e-12, + 1.183840321267481e-12, + 1.122435026096556e-12, + 9.400849094049688e-13, + 6.423305872147841e-13, + 2.382191739347918e-13, + + 5.456116108943413e-12, + 4.878985199565852e-12, + 4.240448995017367e-12, + 3.559909094758253e-12, + 2.858043359288075e-12, + 2.156177623817898e-12, + 1.475637723558782e-12, + 8.371015190102975e-13, + 2.599706096327376e-13, + + -5.461314069809755e-12, + -4.921085770524055e-12, + -4.343405037091838e-12, + -3.732668368707687e-12, + -3.093523840190885e-12, + -2.430835727329465e-12, + -1.734679010007751e-12, + -9.748253656609281e-13, + -2.797435120168326e-13, + + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + -2.283748241799531e-13, + -4.037858874020686e-13, + -2.146547464825323e-13, + }, + { + 1.316524975873958e-01, /* win[SHORT_TYPE] */ + 4.142135623730950e-01, + 7.673269879789602e-01, + + 1.091308501069271e+00, /* tantab_l */ + 1.303225372841206e+00, + 1.569685577117490e+00, + 1.920982126971166e+00, + 2.414213562373094e+00, + 3.171594802363212e+00, + 4.510708503662055e+00, + 7.595754112725146e+00, + 2.290376554843115e+01, + + 0.98480775301220802032, /* cx */ + 0.64278760968653936292, + 0.34202014332566882393, + 0.93969262078590842791, + -0.17364817766693030343, + -0.76604444311897790243, + 0.86602540378443870761, + 0.500000000000000e+00, + + -5.144957554275265e-01, /* ca */ + -4.717319685649723e-01, + -3.133774542039019e-01, + -1.819131996109812e-01, + -9.457419252642064e-02, + -4.096558288530405e-02, + -1.419856857247115e-02, + -3.699974673760037e-03, + + 8.574929257125442e-01, /* cs */ + 8.817419973177052e-01, + 9.496286491027329e-01, + 9.833145924917901e-01, + 9.955178160675857e-01, + 9.991605581781475e-01, + 9.998991952444470e-01, + 9.999931550702802e-01, + }, + { + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 2.283748241799531e-13, + 4.037858874020686e-13, + 2.146547464825323e-13, + + 5.461314069809755e-12, + 4.921085770524055e-12, + 4.343405037091838e-12, + 3.732668368707687e-12, + 3.093523840190885e-12, + 2.430835727329466e-12, + 1.734679010007751e-12, + 9.748253656609281e-13, + 2.797435120168326e-13, + + -5.456116108943413e-12, + -4.878985199565852e-12, + -4.240448995017367e-12, + -3.559909094758253e-12, + -2.858043359288075e-12, + -2.156177623817898e-12, + -1.475637723558782e-12, + -8.371015190102975e-13, + -2.599706096327376e-13, + + -2.382191739347913e-13, + -6.423305872147834e-13, + -9.400849094049688e-13, + -1.122435026096556e-12, + -1.183840321267481e-12, + -1.122435026096556e-12, + -9.400849094049688e-13, + -6.423305872147841e-13, + -2.382191739347918e-13, + } +}; + +#define tantab_l (win[SHORT_TYPE]+3) +#define cx (win[SHORT_TYPE]+12) +#define ca (win[SHORT_TYPE]+20) +#define cs (win[SHORT_TYPE]+28) + +/************************************************************************ +* +* window_subband() +* +* PURPOSE: Overlapping window on PCM samples +* +* SEMANTICS: +* 32 16-bit pcm samples are scaled to fractional 2's complement and +* concatenated to the end of the window buffer #x#. The updated window +* buffer #x# is then windowed by the analysis window #c# to produce the +* windowed sample #z# +* +************************************************************************/ + +/* + * new IDCT routine written by Takehiro TOMINAGA + */ +static const int order[] = { + 0, 1,16,17, 8, 9,24,25, 4, 5,20,21,12,13,28,29, + 2, 3,18,19,10,11,26,27, 6, 7,22,23,14,15,30,31 +}; + + +/* returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32 */ +inline static void +window_subband(const sample_t *x1, FLOAT a[SBLIMIT]) +{ + int i; + FLOAT const *wp = enwindow+10; + + const sample_t *x2 = &x1[238-14-286]; + + for (i = -15; i < 0; i++) { + FLOAT w, s, t; + + w = wp[-10]; s = x2[-224] * w; t = x1[ 224] * w; + w = wp[-9]; s += x2[-160] * w; t += x1[ 160] * w; + w = wp[-8]; s += x2[- 96] * w; t += x1[ 96] * w; + w = wp[-7]; s += x2[- 32] * w; t += x1[ 32] * w; + w = wp[-6]; s += x2[ 32] * w; t += x1[- 32] * w; + w = wp[-5]; s += x2[ 96] * w; t += x1[- 96] * w; + w = wp[-4]; s += x2[ 160] * w; t += x1[-160] * w; + w = wp[-3]; s += x2[ 224] * w; t += x1[-224] * w; + + w = wp[-2]; s += x1[-256] * w; t -= x2[ 256] * w; + w = wp[-1]; s += x1[-192] * w; t -= x2[ 192] * w; + w = wp[ 0]; s += x1[-128] * w; t -= x2[ 128] * w; + w = wp[ 1]; s += x1[- 64] * w; t -= x2[ 64] * w; + w = wp[ 2]; s += x1[ 0] * w; t -= x2[ 0] * w; + w = wp[ 3]; s += x1[ 64] * w; t -= x2[- 64] * w; + w = wp[ 4]; s += x1[ 128] * w; t -= x2[-128] * w; + w = wp[ 5]; s += x1[ 192] * w; t -= x2[-192] * w; + + /* + * this multiplyer could be removed, but it needs more 256 FLOAT data. + * thinking about the data cache performance, I think we should not + * use such a huge table. tt 2000/Oct/25 + */ + s *= wp[6]; + w = t - s; + a[30+i*2] = t + s; + a[31+i*2] = wp[7] * w; + wp += 18; + x1--; + x2++; + } + { + FLOAT s,t,u,v; + t = x1[- 16] * wp[-10]; s = x1[ -32] * wp[-2]; + t += (x1[- 48] - x1[ 16]) * wp[-9]; s += x1[ -96] * wp[-1]; + t += (x1[- 80] + x1[ 48]) * wp[-8]; s += x1[-160] * wp[ 0]; + t += (x1[-112] - x1[ 80]) * wp[-7]; s += x1[-224] * wp[ 1]; + t += (x1[-144] + x1[112]) * wp[-6]; s -= x1[ 32] * wp[ 2]; + t += (x1[-176] - x1[144]) * wp[-5]; s -= x1[ 96] * wp[ 3]; + t += (x1[-208] + x1[176]) * wp[-4]; s -= x1[ 160] * wp[ 4]; + t += (x1[-240] - x1[208]) * wp[-3]; s -= x1[ 224]; + + u = s - t; + v = s + t; + + t = a[14]; + s = a[15] - t; + + a[31] = v + t; /* A0 */ + a[30] = u + s; /* A1 */ + a[15] = u - s; /* A2 */ + a[14] = v - t; /* A3 */ + } +{ + FLOAT xr; + xr = a[28] - a[ 0]; a[ 0] += a[28]; a[28] = xr * wp[-2*18+7]; + xr = a[29] - a[ 1]; a[ 1] += a[29]; a[29] = xr * wp[-2*18+7]; + + xr = a[26] - a[ 2]; a[ 2] += a[26]; a[26] = xr * wp[-4*18+7]; + xr = a[27] - a[ 3]; a[ 3] += a[27]; a[27] = xr * wp[-4*18+7]; + + xr = a[24] - a[ 4]; a[ 4] += a[24]; a[24] = xr * wp[-6*18+7]; + xr = a[25] - a[ 5]; a[ 5] += a[25]; a[25] = xr * wp[-6*18+7]; + + xr = a[22] - a[ 6]; a[ 6] += a[22]; a[22] = xr * SQRT2; + xr = a[23] - a[ 7]; a[ 7] += a[23]; a[23] = xr * SQRT2 - a[ 7]; + a[ 7] -= a[ 6]; + a[22] -= a[ 7]; + a[23] -= a[22]; + + xr = a[ 6]; a[ 6] = a[31] - xr; a[31] = a[31] + xr; + xr = a[ 7]; a[ 7] = a[30] - xr; a[30] = a[30] + xr; + xr = a[22]; a[22] = a[15] - xr; a[15] = a[15] + xr; + xr = a[23]; a[23] = a[14] - xr; a[14] = a[14] + xr; + + xr = a[20] - a[ 8]; a[ 8] += a[20]; a[20] = xr * wp[-10*18+7]; + xr = a[21] - a[ 9]; a[ 9] += a[21]; a[21] = xr * wp[-10*18+7]; + + xr = a[18] - a[10]; a[10] += a[18]; a[18] = xr * wp[-12*18+7]; + xr = a[19] - a[11]; a[11] += a[19]; a[19] = xr * wp[-12*18+7]; + + xr = a[16] - a[12]; a[12] += a[16]; a[16] = xr * wp[-14*18+7]; + xr = a[17] - a[13]; a[13] += a[17]; a[17] = xr * wp[-14*18+7]; + + xr = -a[20] + a[24]; a[20] += a[24]; a[24] = xr * wp[-12*18+7]; + xr = -a[21] + a[25]; a[21] += a[25]; a[25] = xr * wp[-12*18+7]; + + xr = a[ 4] - a[ 8]; a[ 4] += a[ 8]; a[ 8] = xr * wp[-12*18+7]; + xr = a[ 5] - a[ 9]; a[ 5] += a[ 9]; a[ 9] = xr * wp[-12*18+7]; + + xr = a[ 0] - a[12]; a[ 0] += a[12]; a[12] = xr * wp[-4*18+7]; + xr = a[ 1] - a[13]; a[ 1] += a[13]; a[13] = xr * wp[-4*18+7]; + xr = a[16] - a[28]; a[16] += a[28]; a[28] = xr * wp[-4*18+7]; + xr = -a[17] + a[29]; a[17] += a[29]; a[29] = xr * wp[-4*18+7]; + + xr = SQRT2 * (a[ 2] - a[10]); a[ 2] += a[10]; a[10] = xr; + xr = SQRT2 * (a[ 3] - a[11]); a[ 3] += a[11]; a[11] = xr; + xr = SQRT2 * (-a[18] + a[26]); a[18] += a[26]; a[26] = xr - a[18]; + xr = SQRT2 * (-a[19] + a[27]); a[19] += a[27]; a[27] = xr - a[19]; + + xr = a[ 2]; a[19] -= a[ 3]; a[ 3] -= xr; a[ 2] = a[31] - xr; a[31] += xr; + xr = a[ 3]; a[11] -= a[19]; a[18] -= xr; a[ 3] = a[30] - xr; a[30] += xr; + xr = a[18]; a[27] -= a[11]; a[19] -= xr; a[18] = a[15] - xr; a[15] += xr; + + xr = a[19]; a[10] -= xr; a[19] = a[14] - xr; a[14] += xr; + xr = a[10]; a[11] -= xr; a[10] = a[23] - xr; a[23] += xr; + xr = a[11]; a[26] -= xr; a[11] = a[22] - xr; a[22] += xr; + xr = a[26]; a[27] -= xr; a[26] = a[ 7] - xr; a[ 7] += xr; + + xr = a[27]; a[27] = a[ 6] - xr; a[ 6] += xr; + + xr = SQRT2 * (a[ 0] - a[ 4]); a[ 0] += a[ 4]; a[ 4] = xr; + xr = SQRT2 * (a[ 1] - a[ 5]); a[ 1] += a[ 5]; a[ 5] = xr; + xr = SQRT2 * (a[16] - a[20]); a[16] += a[20]; a[20] = xr; + xr = SQRT2 * (a[17] - a[21]); a[17] += a[21]; a[21] = xr; + + xr = -SQRT2 * (a[ 8] - a[12]); a[ 8] += a[12]; a[12] = xr - a[ 8]; + xr = -SQRT2 * (a[ 9] - a[13]); a[ 9] += a[13]; a[13] = xr - a[ 9]; + xr = -SQRT2 * (a[25] - a[29]); a[25] += a[29]; a[29] = xr - a[25]; + xr = -SQRT2 * (a[24] + a[28]); a[24] -= a[28]; a[28] = xr - a[24]; + + xr = a[24] - a[16]; a[24] = xr; + xr = a[20] - xr; a[20] = xr; + xr = a[28] - xr; a[28] = xr; + + xr = a[25] - a[17]; a[25] = xr; + xr = a[21] - xr; a[21] = xr; + xr = a[29] - xr; a[29] = xr; + + xr = a[17] - a[ 1]; a[17] = xr; + xr = a[ 9] - xr; a[ 9] = xr; + xr = a[25] - xr; a[25] = xr; + xr = a[ 5] - xr; a[ 5] = xr; + xr = a[21] - xr; a[21] = xr; + xr = a[13] - xr; a[13] = xr; + xr = a[29] - xr; a[29] = xr; + + xr = a[ 1] - a[ 0]; a[ 1] = xr; + xr = a[16] - xr; a[16] = xr; + xr = a[17] - xr; a[17] = xr; + xr = a[ 8] - xr; a[ 8] = xr; + xr = a[ 9] - xr; a[ 9] = xr; + xr = a[24] - xr; a[24] = xr; + xr = a[25] - xr; a[25] = xr; + xr = a[ 4] - xr; a[ 4] = xr; + xr = a[ 5] - xr; a[ 5] = xr; + xr = a[20] - xr; a[20] = xr; + xr = a[21] - xr; a[21] = xr; + xr = a[12] - xr; a[12] = xr; + xr = a[13] - xr; a[13] = xr; + xr = a[28] - xr; a[28] = xr; + xr = a[29] - xr; a[29] = xr; + + xr = a[ 0]; a[ 0] += a[31]; a[31] -= xr; + xr = a[ 1]; a[ 1] += a[30]; a[30] -= xr; + xr = a[16]; a[16] += a[15]; a[15] -= xr; + xr = a[17]; a[17] += a[14]; a[14] -= xr; + xr = a[ 8]; a[ 8] += a[23]; a[23] -= xr; + xr = a[ 9]; a[ 9] += a[22]; a[22] -= xr; + xr = a[24]; a[24] += a[ 7]; a[ 7] -= xr; + xr = a[25]; a[25] += a[ 6]; a[ 6] -= xr; + xr = a[ 4]; a[ 4] += a[27]; a[27] -= xr; + xr = a[ 5]; a[ 5] += a[26]; a[26] -= xr; + xr = a[20]; a[20] += a[11]; a[11] -= xr; + xr = a[21]; a[21] += a[10]; a[10] -= xr; + xr = a[12]; a[12] += a[19]; a[19] -= xr; + xr = a[13]; a[13] += a[18]; a[18] -= xr; + xr = a[28]; a[28] += a[ 3]; a[ 3] -= xr; + xr = a[29]; a[29] += a[ 2]; a[ 2] -= xr; +} + +} + + +/*-------------------------------------------------------------------*/ +/* */ +/* Function: Calculation of the MDCT */ +/* In the case of long blocks (type 0,1,3) there are */ +/* 36 coefficents in the time domain and 18 in the frequency */ +/* domain. */ +/* In the case of short blocks (type 2) there are 3 */ +/* transformations with short length. This leads to 12 coefficents */ +/* in the time and 6 in the frequency domain. In this case the */ +/* results are stored side by side in the vector out[]. */ +/* */ +/* New layer3 */ +/* */ +/*-------------------------------------------------------------------*/ + +inline static void mdct_short(FLOAT *inout) +{ + int l; + for ( l = 0; l < 3; l++ ) { + FLOAT tc0,tc1,tc2,ts0,ts1,ts2; + + ts0 = inout[2*3] * win[SHORT_TYPE][0] - inout[5*3]; + tc0 = inout[0*3] * win[SHORT_TYPE][2] - inout[3*3]; + tc1 = ts0 + tc0; + tc2 = ts0 - tc0; + + ts0 = inout[5*3] * win[SHORT_TYPE][0] + inout[2*3]; + tc0 = inout[3*3] * win[SHORT_TYPE][2] + inout[0*3]; + ts1 = ts0 + tc0; + ts2 = -ts0 + tc0; + + tc0 = (inout[1*3] * win[SHORT_TYPE][1] - inout[4*3]) * 2.069978111953089e-11; /* tritab_s[1] */ + ts0 = (inout[4*3] * win[SHORT_TYPE][1] + inout[1*3]) * 2.069978111953089e-11; /* tritab_s[1] */ + + inout[3*0] = tc1 * 1.907525191737280e-11 /* tritab_s[2] */ + tc0; + inout[3*5] = -ts1 * 1.907525191737280e-11 /* tritab_s[0] */ + ts0; + + tc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11 /* tritab_s[2] */; + ts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0; + inout[3*1] = tc2-ts1; + inout[3*2] = tc2+ts1; + + tc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0; + ts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11 /* tritab_s[0] */; + inout[3*3] = tc1+ts2; + inout[3*4] = tc1-ts2; + + inout++; + } +} + +inline static void mdct_long(FLOAT *out, FLOAT *in) +{ + FLOAT ct,st; + { + FLOAT tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8; + /* 1,2, 5,6, 9,10, 13,14, 17 */ + tc1 = in[17]-in[ 9]; + tc3 = in[15]-in[11]; + tc4 = in[14]-in[12]; + ts5 = in[ 0]+in[ 8]; + ts6 = in[ 1]+in[ 7]; + ts7 = in[ 2]+in[ 6]; + ts8 = in[ 3]+in[ 5]; + + out[17] = (ts5+ts7-ts8)-(ts6-in[4]); + st = (ts5+ts7-ts8)*cx[7]+(ts6-in[4]); + ct = (tc1-tc3-tc4)*cx[6]; + out[5] = ct+st; + out[6] = ct-st; + + tc2 = (in[16]-in[10])*cx[6]; + ts6 = ts6*cx[7] + in[4]; + ct = tc1*cx[0] + tc2 + tc3*cx[1] + tc4*cx[2]; + st = -ts5*cx[4] + ts6 - ts7*cx[5] + ts8*cx[3]; + out[1] = ct+st; + out[2] = ct-st; + + ct = tc1*cx[1] - tc2 - tc3*cx[2] + tc4*cx[0]; + st = -ts5*cx[5] + ts6 - ts7*cx[3] + ts8*cx[4]; + out[ 9] = ct+st; + out[10] = ct-st; + + ct = tc1*cx[2] - tc2 + tc3*cx[0] - tc4*cx[1]; + st = ts5*cx[3] - ts6 + ts7*cx[4] - ts8*cx[5]; + out[13] = ct+st; + out[14] = ct-st; + } + { + FLOAT ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8; + + ts1 = in[ 8]-in[ 0]; + ts3 = in[ 6]-in[ 2]; + ts4 = in[ 5]-in[ 3]; + tc5 = in[17]+in[ 9]; + tc6 = in[16]+in[10]; + tc7 = in[15]+in[11]; + tc8 = in[14]+in[12]; + + out[0] = (tc5+tc7+tc8)+(tc6+in[13]); + ct = (tc5+tc7+tc8)*cx[7]-(tc6+in[13]); + st = (ts1-ts3+ts4)*cx[6]; + out[11] = ct+st; + out[12] = ct-st; + + ts2 = (in[7]-in[1])*cx[6]; + tc6 = in[13] - tc6*cx[7]; + ct = tc5*cx[3] - tc6 + tc7*cx[4] + tc8*cx[5]; + st = ts1*cx[2] + ts2 + ts3*cx[0] + ts4*cx[1]; + out[3] = ct+st; + out[4] = ct-st; + + ct = -tc5*cx[5] + tc6 - tc7*cx[3] - tc8*cx[4]; + st = ts1*cx[1] + ts2 - ts3*cx[2] - ts4*cx[0]; + out[7] = ct+st; + out[8] = ct-st; + + ct = -tc5*cx[4] + tc6 - tc7*cx[5] - tc8*cx[3]; + st = ts1*cx[0] - ts2 + ts3*cx[1] - ts4*cx[2]; + out[15] = ct+st; + out[16] = ct-st; + } +} + + +void mdct_sub48( + lame_internal_flags *gfc, const sample_t *w0, const sample_t *w1 + ) +{ + int gr, k, ch; + const sample_t *wk; + + wk = w0 + 286; + /* thinking cache performance, ch->gr loop is better than gr->ch loop */ + for (ch = 0; ch < gfc->channels_out; ch++) { + for (gr = 0; gr < gfc->mode_gr; gr++) { + int band; + gr_info *gi = &(gfc->l3_side.tt[gr][ch]); + FLOAT *mdct_enc = gi->xr; + FLOAT *samp = gfc->sb_sample[ch][1 - gr][0]; + + for (k = 0; k < 18 / 2; k++) { + window_subband(wk, samp); + window_subband(wk + 32, samp + 32); + samp += 64; + wk += 64; + /* + * Compensate for inversion in the analysis filter + */ + for (band = 1; band < 32; band+=2) { + samp[band-32] *= -1; + } + } + + /* + * Perform imdct of 18 previous subband samples + * + 18 current subband samples + */ + for (band = 0; band < 32; band++, mdct_enc += 18) { + int type = gi->block_type; + FLOAT *band0, *band1; + band0 = gfc->sb_sample[ch][ gr][0] + order[band]; + band1 = gfc->sb_sample[ch][1-gr][0] + order[band]; + if (gi->mixed_block_flag && band < 2) + type = 0; + if (gfc->amp_filter[band] == 0.0) { + memset(mdct_enc, 0, 18*sizeof(FLOAT)); + } else { + if (gfc->amp_filter[band] != 1.0) { + for (k=0; k<18; k++) + band1[k*32] *= gfc->amp_filter[band]; + } + if (type == SHORT_TYPE) { + for (k = -NS/4; k < 0; k++) { + FLOAT w = win[SHORT_TYPE][k+3]; + mdct_enc[k*3+ 9] = band0[( 9+k)*32] * w - band0[( 8-k)*32]; + mdct_enc[k*3+18] = band0[(14-k)*32] * w + band0[(15+k)*32]; + mdct_enc[k*3+10] = band0[(15+k)*32] * w - band0[(14-k)*32]; + mdct_enc[k*3+19] = band1[( 2-k)*32] * w + band1[( 3+k)*32]; + mdct_enc[k*3+11] = band1[( 3+k)*32] * w - band1[( 2-k)*32]; + mdct_enc[k*3+20] = band1[( 8-k)*32] * w + band1[( 9+k)*32]; + } + mdct_short(mdct_enc); + } else { + FLOAT work[18]; + for (k = -NL/4; k < 0; k++) { + FLOAT a, b; + a = win[type][k+27] * band1[(k+9)*32] + + win[type][k+36] * band1[(8-k)*32]; + b = win[type][k+ 9] * band0[(k+9)*32] + - win[type][k+18] * band0[(8-k)*32]; + work[k+ 9] = a - b*tantab_l[k+9]; + work[k+18] = a*tantab_l[k+9] + b; + } + + mdct_long(mdct_enc, work); + } + } + /* + * Perform aliasing reduction butterfly + */ + if (type != SHORT_TYPE && band != 0) { + for (k = 7; k >= 0; --k) { + FLOAT bu,bd; + bu = mdct_enc[k] * ca[k] + mdct_enc[-1-k] * cs[k]; + bd = mdct_enc[k] * cs[k] - mdct_enc[-1-k] * ca[k]; + + mdct_enc[-1-k] = bu; + mdct_enc[k] = bd; + } + } + } + } + wk = w1 + 286; + if (gfc->mode_gr == 1) { + memcpy(gfc->sb_sample[ch][0], gfc->sb_sample[ch][1], 576 * sizeof(FLOAT)); + } + } +} + diff --git a/lame-3.97/libmp3lame/.svn/text-base/newmdct.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/newmdct.h.svn-base new file mode 100644 index 0000000..ec5a00a --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/newmdct.h.svn-base @@ -0,0 +1,28 @@ +/* + * New Modified DCT include file + * + * Copyright (c) 1999 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_NEWMDCT_H +#define LAME_NEWMDCT_H + +void mdct_sub48(lame_internal_flags *gfc,const sample_t *w0, const sample_t *w1); + +#endif /* LAME_NEWMDCT_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/presets.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/presets.c.svn-base new file mode 100644 index 0000000..22654de --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/presets.c.svn-base @@ -0,0 +1,613 @@ +/* + * presets.c -- Apply presets + * + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "set_get.h" + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif +#include "util.h" + + +#define SET_OPTION(opt, val, def) if (enforce) \ + lame_set_##opt(gfp, val); \ + else if (lame_get_##opt(gfp) == def) \ + lame_set_##opt(gfp, val); + + + +int apply_abr_preset(lame_global_flags* gfp, int preset, int enforce) +{ + int k; + + typedef struct { + int abr_kbps; + int quant_comp; + int quant_comp_s; + int safejoint; + FLOAT nsmsfix; + FLOAT st_lrm; /*short threshold*/ + FLOAT st_s; + FLOAT nsbass; + FLOAT scale; + FLOAT masking_adj; + FLOAT ath_lower; + FLOAT ath_curve; + FLOAT interch; + int sfscale; + } abr_presets_t; + + + + /* Switch mappings for ABR mode */ + const abr_presets_t abr_switch_map [] = { + /* kbps quant q_s safejoint nsmsfix st_lrm st_s ns-bass scale msk ath_lwr ath_curve interch , sfscale */ + { 8, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -30.0, 11, 0.0012 , 1}, /* 8, impossible to use in stereo */ + { 16, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -25.0, 11, 0.0010 , 1}, /* 16 */ + { 24, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -20.0, 11, 0.0010 , 1}, /* 24 */ + { 32, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -15.0, 11, 0.0010 , 1}, /* 32 */ + { 40, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -10.0, 11, 0.0009 , 1}, /* 40 */ + { 48, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -10.0, 11, 0.0009 , 1}, /* 48 */ + { 56, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -6.0, 11, 0.0008 , 1}, /* 56 */ + { 64, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -2.0, 11, 0.0008 , 1}, /* 64 */ + { 80, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, .0, 8, 0.0007 , 1}, /* 80 */ + { 96, 9, 9, 0, 2.50, 6.60, 145 , 0, 0.95, 0, 1.0, 5.5, 0.0006 , 1}, /* 96 */ + { 112, 9, 9, 0, 2.25, 6.60, 145 , 0, 0.95, 0, 2.0, 4.5, 0.0005 , 1}, /* 112 */ + { 128, 9, 9, 0, 1.95, 6.40, 140 , 0, 0.95, 0, 3.0, 4, 0.0002 , 1}, /* 128 */ + { 160, 9, 9, 1, 1.79, 6.00, 135 , 0, 0.95, -2, 5.0, 3.5, 0 , 1}, /* 160 */ + { 192, 9, 9, 1, 1.49, 5.60, 125 , 0, 0.97, -4, 7.0, 3, 0 , 0}, /* 192 */ + { 224, 9, 9, 1, 1.25, 5.20, 125 , 0, 0.98, -6, 9.0, 2, 0 , 0}, /* 224 */ + { 256, 9, 9, 1, 0.97, 5.20, 125 , 0, 1.00, -8, 10.0, 1, 0 , 0}, /* 256 */ + { 320, 9, 9, 1, 0.90, 5.20, 125 , 0, 1.00, -10, 12.0, 0, 0 , 0} /* 320 */ + }; + + + /* Variables for the ABR stuff */ + int r; + int actual_bitrate = preset; + + r= nearestBitrateFullIndex(preset); + + + lame_set_VBR(gfp, vbr_abr); + lame_set_VBR_mean_bitrate_kbps(gfp, (actual_bitrate)); + lame_set_VBR_mean_bitrate_kbps(gfp, Min(lame_get_VBR_mean_bitrate_kbps(gfp), 320)); + lame_set_VBR_mean_bitrate_kbps(gfp, Max(lame_get_VBR_mean_bitrate_kbps(gfp), 8)); + lame_set_brate(gfp, lame_get_VBR_mean_bitrate_kbps(gfp)); + + + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + + + /* parameters for which there is no proper set/get interface */ + if (abr_switch_map[r].safejoint > 0) + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + + if (abr_switch_map[r].sfscale > 0) + lame_set_sfscale(gfp, 1); + + /* ns-bass tweaks */ + if (abr_switch_map[r].nsbass != 0) { + k = (int)(abr_switch_map[r].nsbass * 4); + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 2)); + } + + + + + SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1); + SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1); + + SET_OPTION(msfix, abr_switch_map[r].nsmsfix, -1); + + SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1); + SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1); + + /* ABR seems to have big problems with clipping, especially at low bitrates */ + /* so we compensate for that here by using a scale value depending on bitrate */ + SET_OPTION(scale, abr_switch_map[r].scale, -1); + + SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj , 0); + if (abr_switch_map[r].masking_adj > 0) { + SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * .9 , 0); + } else { + SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * 1.1 , 0); + } + + + SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0); + SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1); + + SET_OPTION(interChRatio, abr_switch_map[r].interch, -1); + + + return preset; +} + + + + + +int apply_preset(lame_global_flags* gfp, int preset, int enforce) +{ + /*translate legacy presets*/ + switch (preset) { + case R3MIX: { + preset = V3; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case MEDIUM: { + preset = V4; + lame_set_VBR(gfp, vbr_rh); + break; + } + case MEDIUM_FAST: { + preset = V4; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case STANDARD: { + preset = V2; + lame_set_VBR(gfp, vbr_rh); + break; + } + case STANDARD_FAST: { + preset = V2; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case EXTREME: { + preset = V0; + lame_set_VBR(gfp, vbr_rh); + break; + } + case EXTREME_FAST: { + preset = V0; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case INSANE: { + preset = 320; + break; + } + } + + + gfp->preset = preset; + + switch (preset) { + case V9: { + lame_set_VBR_q(gfp, 9); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.6, 0); + SET_OPTION(maskingadjust_short, 1.6, 0); + SET_OPTION(interChRatio, 0.0008, -1); + SET_OPTION(ATHlower, -36, 0); + SET_OPTION(ATHcurve, 11, -1); + SET_OPTION(athaa_sensitivity, -25, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.75, 0); + SET_OPTION(maskingadjust_short, 1.75, 0); + SET_OPTION(interChRatio, 0.0008, -1); + SET_OPTION(ATHlower, -39.5, 0); + SET_OPTION(ATHcurve, 11, -1); + SET_OPTION(athaa_sensitivity, -25, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V8: { + lame_set_VBR_q(gfp, 8); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.2, 0); + SET_OPTION(maskingadjust_short, 1.15, 0); + SET_OPTION(interChRatio, 0.0007, -1); + SET_OPTION(ATHlower, -27.5, 0); + SET_OPTION(ATHcurve, 10, -1); + SET_OPTION(athaa_sensitivity, -23, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.2, 0); + SET_OPTION(maskingadjust_short, 1.15, 0); + SET_OPTION(interChRatio, 0.0007, -1); + SET_OPTION(ATHlower, -30, 0); + SET_OPTION(ATHcurve, 10, -1); + SET_OPTION(athaa_sensitivity, -23, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V7: { + lame_set_VBR_q(gfp, 7); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.70, -1); + SET_OPTION(maskingadjust, .8, 0); + SET_OPTION(maskingadjust_short, .75, 0); + SET_OPTION(interChRatio, 0.0006, -1); + SET_OPTION(ATHlower, -19.7, 0); + SET_OPTION(ATHcurve, 8, -1); + SET_OPTION(athaa_sensitivity, -22, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.70, -1); + SET_OPTION(maskingadjust, 0.8, 0); + SET_OPTION(maskingadjust_short, 0.78, 0); + SET_OPTION(interChRatio, 0.0006, -1); + SET_OPTION(ATHlower, -22, 0); + SET_OPTION(ATHcurve, 8, -1); + SET_OPTION(athaa_sensitivity, -22, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V6: { + lame_set_VBR_q(gfp, 6); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.30, -1); + SET_OPTION(maskingadjust, .67, 0); + SET_OPTION(maskingadjust_short, .65, 0); + SET_OPTION(interChRatio, 0.0004, -1); + SET_OPTION(ATHlower, -14.7, 0); + SET_OPTION(ATHcurve, 6.5, -1); + SET_OPTION(athaa_sensitivity, -19, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.30, -1); + SET_OPTION(maskingadjust, 0.67, 0); + SET_OPTION(maskingadjust_short, 0.65, 0); + SET_OPTION(interChRatio, 0.0004, -1); + SET_OPTION(ATHlower, -14.5, 0); + SET_OPTION(ATHcurve, 6.5, -1); + SET_OPTION(athaa_sensitivity, -19, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V5: { + lame_set_VBR_q(gfp, 5); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.40f, -1); + SET_OPTION(short_threshold_s, 140.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 1.95, -1); + SET_OPTION(maskingadjust, .5, 0); + SET_OPTION(maskingadjust_short, .4, 0); + SET_OPTION(interChRatio, 0.0002, -1); + SET_OPTION(ATHlower, -7.5, 0); + SET_OPTION(ATHcurve, 4, -1); + SET_OPTION(athaa_sensitivity, -12, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.40f, -1); + SET_OPTION(short_threshold_s, 140.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 1.95, -1); + SET_OPTION(maskingadjust, 0.45, 0); + SET_OPTION(maskingadjust_short, 0.35, 0); + SET_OPTION(interChRatio, 0.0002, -1); + SET_OPTION(ATHlower, -7.7, 0); + SET_OPTION(ATHcurve, 4, -1); + SET_OPTION(athaa_sensitivity, -12, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V4: { /*MEDIUM*/ + lame_set_VBR_q(gfp, 4); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.00f, -1); + SET_OPTION(short_threshold_s, 135.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.79, -1); + SET_OPTION(maskingadjust, -.7, 0); + SET_OPTION(maskingadjust_short, -1.1, 0); + SET_OPTION(ATHlower, 1.1, 0); + SET_OPTION(ATHcurve, 3.5, -1); + SET_OPTION(athaa_sensitivity, -8, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.00f, -1); + SET_OPTION(short_threshold_s, 135.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.79, -1); + SET_OPTION(maskingadjust, -.7, 0); + SET_OPTION(maskingadjust_short, -1.1, 0); + SET_OPTION(ATHlower, 0, 0); + SET_OPTION(ATHcurve, 3.5, -1); + SET_OPTION(athaa_sensitivity, -8, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V3: { + lame_set_VBR_q(gfp, 3); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.80f, -1); + SET_OPTION(short_threshold_s, 130.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.64, -1); + SET_OPTION(maskingadjust, -1.8, 0); + SET_OPTION(maskingadjust_short, -2.8, 0); + SET_OPTION(ATHlower, 2.6, 0); + SET_OPTION(ATHcurve, 3, -1); + SET_OPTION(athaa_sensitivity, -4, 0); + + /* modify sfb21 by 5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (20 << 20)); + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.80f, -1); + SET_OPTION(short_threshold_s, 130.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.64, -1); + SET_OPTION(maskingadjust, -1.45, 0); + SET_OPTION(maskingadjust_short, -2.45, 0); + SET_OPTION(ATHlower, 1.1, 0); + SET_OPTION(ATHcurve, 3, -1); + SET_OPTION(athaa_sensitivity, -4, 0); + + /* modify sfb21 by 3.75 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (15 << 20)); + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V2: { /*STANDARD*/ + lame_set_VBR_q(gfp, 2); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.6f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.49, -1); + SET_OPTION(maskingadjust, -2.2, 0); + SET_OPTION(maskingadjust_short, -3.5, 0); + SET_OPTION(ATHlower, 2.8, 0); + SET_OPTION(ATHcurve, 2, -1); + /* modify sfb21 by 5.25 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.6f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.49, -1); + SET_OPTION(maskingadjust, -1.7, 0); + SET_OPTION(maskingadjust_short, -3.2, 0); + SET_OPTION(ATHlower, 2, 0); + SET_OPTION(ATHcurve, 2, -1); + /* modify sfb21 by 4.5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (18 << 20)); + + return preset; + } + } + } + case V1: { + lame_set_VBR_q(gfp, 1); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.3f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.35, -1); + SET_OPTION(maskingadjust, -3.6, 0); + SET_OPTION(maskingadjust_short, -5.6, 0); + SET_OPTION(ATHlower, 4.5, 0); + SET_OPTION(ATHcurve, 1.5, -1); + /* modify sfb21 by 5.25 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.3f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.35, -1); + SET_OPTION(maskingadjust, -3.4, 0); + SET_OPTION(maskingadjust_short, -5.4, 0); + SET_OPTION(ATHlower, 4.5, 0); + SET_OPTION(ATHcurve, 1.5, -1); + /* modify sfb21 by 5.25 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + } + } + case V0: { /*EXTREME*/ + lame_set_VBR_q(gfp, 0); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.2f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, .97, -1); + SET_OPTION(maskingadjust, -4.2, 0); + SET_OPTION(maskingadjust_short, -6.3, 0); + SET_OPTION(ATHlower, 4.8, 0); + SET_OPTION(ATHcurve, 1, -1); + /* modify sfb21 by 5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.2f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, .97, -1); + SET_OPTION(maskingadjust, -3.6, 0); + SET_OPTION(maskingadjust_short, -5.6, 0); + SET_OPTION(ATHlower, 7.5, 0); + SET_OPTION(ATHcurve, 1, -1); + /* modify sfb21 by 6.5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (26 << 20)); + + return preset; + } + } + } + default: + break; + } + + if ((preset >= 8) && (preset <=320)) + return apply_abr_preset(gfp, preset, enforce); + + + gfp->preset = 0; /*no corresponding preset found*/ + return preset; +} + diff --git a/lame-3.97/libmp3lame/.svn/text-base/psymodel.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/psymodel.c.svn-base new file mode 100644 index 0000000..628dffa --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/psymodel.c.svn-base @@ -0,0 +1,2108 @@ +/* + * psymodel.c + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2001-2002 Naoki Shibata + * Copyright (c) 2000-2003 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2000-2005 Gabriel Bouvigne + * Copyright (c) 2000-2005 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: psymodel.c,v 1.142.2.2 2006/08/18 18:22:20 bouvigne Exp $ */ + + +/* +PSYCHO ACOUSTICS + + +This routine computes the psycho acoustics, delayed by one granule. + +Input: buffer of PCM data (1024 samples). + +This window should be centered over the 576 sample granule window. +The routine will compute the psycho acoustics for +this granule, but return the psycho acoustics computed +for the *previous* granule. This is because the block +type of the previous granule can only be determined +after we have computed the psycho acoustics for the following +granule. + +Output: maskings and energies for each scalefactor band. +block type, PE, and some correlation measures. +The PE is used by CBR modes to determine if extra bits +from the bit reservoir should be used. The correlation +measures are used to determine mid/side or regular stereo. +*/ +/* +Notation: + +barks: a non-linear frequency scale. Mapping from frequency to + barks is given by freq2bark() + +scalefactor bands: The spectrum (frequencies) are broken into + SBMAX "scalefactor bands". Thes bands + are determined by the MPEG ISO spec. In + the noise shaping/quantization code, we allocate + bits among the partition bands to achieve the + best possible quality + +partition bands: The spectrum is also broken into about + 64 "partition bands". Each partition + band is about .34 barks wide. There are about 2-5 + partition bands for each scalefactor band. + +LAME computes all psycho acoustic information for each partition +band. Then at the end of the computations, this information +is mapped to scalefactor bands. The energy in each scalefactor +band is taken as the sum of the energy in all partition bands +which overlap the scalefactor band. The maskings can be computed +in the same way (and thus represent the average masking in that band) +or by taking the minmum value multiplied by the number of +partition bands used (which represents a minimum masking in that band). +*/ +/* +The general outline is as follows: + +1. compute the energy in each partition band +2. compute the tonality in each partition band +3. compute the strength of each partion band "masker" +4. compute the masking (via the spreading function applied to each masker) +5. Modifications for mid/side masking. + +Each partition band is considiered a "masker". The strength +of the i'th masker in band j is given by: + + s3(bark(i)-bark(j))*strength(i) + +The strength of the masker is a function of the energy and tonality. +The more tonal, the less masking. LAME uses a simple linear formula +(controlled by NMT and TMN) which says the strength is given by the +energy divided by a linear function of the tonality. +*/ +/* +s3() is the "spreading function". It is given by a formula +determined via listening tests. + +The total masking in the j'th partition band is the sum over +all maskings i. It is thus given by the convolution of +the strength with s3(), the "spreading function." + +masking(j) = sum_over_i s3(i-j)*strength(i) = s3 o strength + +where "o" = convolution operator. s3 is given by a formula determined +via listening tests. It is normalized so that s3 o 1 = 1. + +Note: instead of a simple convolution, LAME also has the +option of using "additive masking" + +The most critical part is step 2, computing the tonality of each +partition band. LAME has two tonality estimators. The first +is based on the ISO spec, and measures how predictiable the +signal is over time. The more predictable, the more tonal. +The second measure is based on looking at the spectrum of +a single granule. The more peaky the spectrum, the more +tonal. By most indications, the latter approach is better. + +Finally, in step 5, the maskings for the mid and side +channel are possibly increased. Under certain circumstances, +noise in the mid & side channels is assumed to also +be masked by strong maskers in the L or R channels. + + +Other data computed by the psy-model: + +ms_ratio side-channel / mid-channel masking ratio (for previous granule) +ms_ratio_next side-channel / mid-channel masking ratio for this granule + +percep_entropy[2] L and R values (prev granule) of PE - A measure of how + much pre-echo is in the previous granule +percep_entropy_MS[2] mid and side channel values (prev granule) of percep_entropy +energy[4] L,R,M,S energy in each channel, prev granule +blocktype_d[2] block type to use for previous granule +*/ + + + + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "util.h" +#include "encoder.h" +#include "psymodel.h" +#include "l3side.h" +#include <assert.h> +#include "tables.h" +#include "fft.h" +#include "machine.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#define NSFIRLEN 21 + +#ifdef M_LN10 +#define LN_TO_LOG10 (M_LN10/10) +#else +#define LN_TO_LOG10 0.2302585093 +#endif + +#ifdef NON_LINEAR_PSY + +static const float non_linear_psy_constant = .3; + +#define NON_LINEAR_SCALE_ITEM(x) pow((x), non_linear_psy_constant) +#define NON_LINEAR_SCALE_SUM(x) pow((x), 1/non_linear_psy_constant) + +#if 0 +#define NON_LINEAR_SCALE_ENERGY(x) pow(10, (x)/10) +#else +#define NON_LINEAR_SCALE_ENERGY(x) (x) +#endif + +#else + +#define NON_LINEAR_SCALE_ITEM(x) (x) +#define NON_LINEAR_SCALE_SUM(x) (x) +#define NON_LINEAR_SCALE_ENERGY(x) (x) + +#endif + + +/* + L3psycho_anal. Compute psycho acoustics. + + Data returned to the calling program must be delayed by one + granule. + + This is done in two places. + If we do not need to know the blocktype, the copying + can be done here at the top of the program: we copy the data for + the last granule (computed during the last call) before it is + overwritten with the new data. It looks like this: + + 0. static psymodel_data + 1. calling_program_data = psymodel_data + 2. compute psymodel_data + + For data which needs to know the blocktype, the copying must be + done at the end of this loop, and the old values must be saved: + + 0. static psymodel_data_old + 1. compute psymodel_data + 2. compute possible block type of this granule + 3. compute final block type of previous granule based on #2. + 4. calling_program_data = psymodel_data_old + 5. psymodel_data_old = psymodel_data +*/ + + + + + +/* psycho_loudness_approx + jd - 2001 mar 12 +in: energy - BLKSIZE/2 elements of frequency magnitudes ^ 2 + gfp - uses out_samplerate, ATHtype (also needed for ATHformula) +returns: loudness^2 approximation, a positive value roughly tuned for a value + of 1.0 for signals near clipping. +notes: When calibrated, feeding this function binary white noise at sample + values +32767 or -32768 should return values that approach 3. + ATHformula is used to approximate an equal loudness curve. +future: Data indicates that the shape of the equal loudness curve varies + with intensity. This function might be improved by using an equal + loudness curve shaped for typical playback levels (instead of the + ATH, that is shaped for the threshold). A flexible realization might + simply bend the existing ATH curve to achieve the desired shape. + However, the potential gain may not be enough to justify an effort. +*/ +static FLOAT +psycho_loudness_approx( FLOAT *energy, lame_internal_flags *gfc ) +{ + int i; + FLOAT loudness_power; + + loudness_power = 0.0; + /* apply weights to power in freq. bands*/ + for( i = 0; i < BLKSIZE/2; ++i ) + loudness_power += energy[i] * gfc->ATH->eql_w[i]; + loudness_power *= VO_SCALE; + + return loudness_power; +} + +static void +compute_ffts( + lame_global_flags *gfp, + FLOAT fftenergy[HBLKSIZE], + FLOAT (*fftenergy_s)[HBLKSIZE_s], + FLOAT (*wsamp_l)[BLKSIZE], + FLOAT (*wsamp_s)[3][BLKSIZE_s], + int gr_out, + int chn, + const sample_t *buffer[2] + ) +{ + int b, j; + lame_internal_flags *gfc=gfp->internal_flags; + if (chn<2) { + fft_long ( gfc, *wsamp_l, chn, buffer); + fft_short( gfc, *wsamp_s, chn, buffer); + } + /* FFT data for mid and side channel is derived from L & R */ + else if (chn == 2) { + for (j = BLKSIZE-1; j >=0 ; --j) { + FLOAT l = wsamp_l[0][j]; + FLOAT r = wsamp_l[1][j]; + wsamp_l[0][j] = (l+r)*(FLOAT)(SQRT2*0.5); + wsamp_l[1][j] = (l-r)*(FLOAT)(SQRT2*0.5); + } + for (b = 2; b >= 0; --b) { + for (j = BLKSIZE_s-1; j >= 0 ; --j) { + FLOAT l = wsamp_s[0][b][j]; + FLOAT r = wsamp_s[1][b][j]; + wsamp_s[0][b][j] = (l+r)*(FLOAT)(SQRT2*0.5); + wsamp_s[1][b][j] = (l-r)*(FLOAT)(SQRT2*0.5); + } + } + } + + /********************************************************************* + * compute energies + *********************************************************************/ + fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[0][0]); + fftenergy[0] *= fftenergy[0]; + + for (j=BLKSIZE/2-1; j >= 0; --j) { + FLOAT re = (*wsamp_l)[BLKSIZE/2-j]; + FLOAT im = (*wsamp_l)[BLKSIZE/2+j]; + fftenergy[BLKSIZE/2-j] = NON_LINEAR_SCALE_ENERGY((re * re + im * im) * 0.5f); + } + for (b = 2; b >= 0; --b) { + fftenergy_s[b][0] = (*wsamp_s)[b][0]; + fftenergy_s[b][0] *= fftenergy_s [b][0]; + for (j=BLKSIZE_s/2-1; j >= 0; --j) { + FLOAT re = (*wsamp_s)[b][BLKSIZE_s/2-j]; + FLOAT im = (*wsamp_s)[b][BLKSIZE_s/2+j]; + fftenergy_s[b][BLKSIZE_s/2-j] = NON_LINEAR_SCALE_ENERGY((re * re + im * im) * 0.5f); + } + } + /* total energy */ + {FLOAT totalenergy=0.0; + for (j=11;j < HBLKSIZE; j++) + totalenergy += fftenergy[j]; + + gfc->tot_ener[chn] = totalenergy; + } + +#if defined(HAVE_GTK) + if (gfp->analysis) { + for (j=0; j<HBLKSIZE ; j++) { + gfc->pinfo->energy[gr_out][chn][j]=gfc->energy_save[chn][j]; + gfc->energy_save[chn][j]=fftenergy[j]; + } + gfc->pinfo->pe[gr_out][chn]=gfc->pe[chn]; + } +#endif + /********************************************************************* + * compute loudness approximation (used for ATH auto-level adjustment) + *********************************************************************/ + if (gfp->athaa_loudapprox == 2 && chn < 2) {/*no loudness for mid/side ch*/ + gfc->loudness_sq[gr_out][chn] = gfc->loudness_sq_save[chn]; + gfc->loudness_sq_save[chn] + = psycho_loudness_approx(fftenergy, gfc); + } +} + +/*************************************************************** + * compute interchannel masking effects + ***************************************************************/ +static void +calc_interchannel_masking( + lame_global_flags * gfp, + FLOAT ratio + ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int sb, sblock; + FLOAT l, r; + if (gfc->channels_out > 1){ + for ( sb = 0; sb < SBMAX_l; sb++ ) { + l = gfc->thm[0].l[sb]; + r = gfc->thm[1].l[sb]; + gfc->thm[0].l[sb] += r*ratio; + gfc->thm[1].l[sb] += l*ratio; + } + for ( sb = 0; sb < SBMAX_s; sb++ ) { + for ( sblock = 0; sblock < 3; sblock++ ) { + l = gfc->thm[0].s[sb][sblock]; + r = gfc->thm[1].s[sb][sblock]; + gfc->thm[0].s[sb][sblock] += r*ratio; + gfc->thm[1].s[sb][sblock] += l*ratio; + } + } + } +} + + + +/*************************************************************** + * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper + ***************************************************************/ +static void +msfix1( + lame_internal_flags *gfc + ) +{ + int sb, sblock; + FLOAT rside,rmid,mld; + for ( sb = 0; sb < SBMAX_l; sb++ ) { + /* use this fix if L & R masking differs by 2db or less */ + /* if db = 10*log10(x2/x1) < 2 */ + /* if (x2 < 1.58*x1) { */ + if (gfc->thm[0].l[sb] > 1.58*gfc->thm[1].l[sb] + || gfc->thm[1].l[sb] > 1.58*gfc->thm[0].l[sb]) + continue; + + mld = gfc->mld_l[sb]*gfc->en[3].l[sb]; + rmid = Max(gfc->thm[2].l[sb], Min(gfc->thm[3].l[sb],mld)); + + mld = gfc->mld_l[sb]*gfc->en[2].l[sb]; + rside = Max(gfc->thm[3].l[sb], Min(gfc->thm[2].l[sb],mld)); + gfc->thm[2].l[sb]=rmid; + gfc->thm[3].l[sb]=rside; + } + + for ( sb = 0; sb < SBMAX_s; sb++ ) { + for ( sblock = 0; sblock < 3; sblock++ ) { + if (gfc->thm[0].s[sb][sblock] > 1.58*gfc->thm[1].s[sb][sblock] + || gfc->thm[1].s[sb][sblock] > 1.58*gfc->thm[0].s[sb][sblock]) + continue; + + mld = gfc->mld_s[sb]*gfc->en[3].s[sb][sblock]; + rmid = Max(gfc->thm[2].s[sb][sblock], + Min(gfc->thm[3].s[sb][sblock],mld)); + + mld = gfc->mld_s[sb]*gfc->en[2].s[sb][sblock]; + rside = Max(gfc->thm[3].s[sb][sblock], + Min(gfc->thm[2].s[sb][sblock],mld)); + + gfc->thm[2].s[sb][sblock]=rmid; + gfc->thm[3].s[sb][sblock]=rside; + } + } +} + +/*************************************************************** + * Adjust M/S maskings if user set "msfix" + ***************************************************************/ +/* Naoki Shibata 2000 */ +static void +ns_msfix( + lame_internal_flags *gfc, + FLOAT msfix, + FLOAT athadjust + ) +{ + int sb, sblock; + FLOAT msfix2 = msfix; + FLOAT athlower = pow(10, athadjust); + + msfix *= 2.0; + msfix2 *= 2.0; + for ( sb = 0; sb < SBMAX_l; sb++ ) { + FLOAT thmLR,thmM,thmS,ath; + ath = (gfc->ATH->cb[gfc->bm_l[sb]])*athlower; + thmLR = Min(Max(gfc->thm[0].l[sb],ath), Max(gfc->thm[1].l[sb],ath)); + thmM = Max(gfc->thm[2].l[sb],ath); + thmS = Max(gfc->thm[3].l[sb],ath); + + if (thmLR*msfix < thmM+thmS) { + FLOAT f = thmLR * msfix2 / (thmM+thmS); + thmM *= f; + thmS *= f; + } + gfc->thm[2].l[sb] = Min(thmM,gfc->thm[2].l[sb]); + gfc->thm[3].l[sb] = Min(thmS,gfc->thm[3].l[sb]); + } + + athlower *= ((FLOAT)BLKSIZE_s / BLKSIZE); + for ( sb = 0; sb < SBMAX_s; sb++ ) { + for ( sblock = 0; sblock < 3; sblock++ ) { + FLOAT thmLR,thmM,thmS,ath; + ath = (gfc->ATH->cb[gfc->bm_s[sb]])*athlower; + thmLR = Min(Max(gfc->thm[0].s[sb][sblock],ath), + Max(gfc->thm[1].s[sb][sblock],ath)); + thmM = Max(gfc->thm[2].s[sb][sblock],ath); + thmS = Max(gfc->thm[3].s[sb][sblock],ath); + + if (thmLR*msfix < thmM+thmS) { + FLOAT f = thmLR*msfix / (thmM+thmS); + thmM *= f; + thmS *= f; + } + gfc->thm[2].s[sb][sblock] = Min(gfc->thm[2].s[sb][sblock],thmM); + gfc->thm[3].s[sb][sblock] = Min(gfc->thm[3].s[sb][sblock],thmS); + } + } +} + +/* longblock threshold calculation (part 2) */ +static void convert_partition2scalefac_l( + lame_internal_flags *gfc, + FLOAT *eb, + FLOAT *thr, + int chn + ) +{ + FLOAT enn, thmm; + int sb, b; + enn = thmm = 0.0; + sb = b = 0; + for (;;) { + while (b < gfc->bo_l[sb]) { + enn += eb[b]; + thmm += thr[b]; + b++; + } + + if (sb == SBMAX_l - 1) + break; + + assert( enn >= 0 ); + assert( thmm >= 0 ); + gfc->en [chn].l[sb] = enn + 0.5 * eb [b]; + gfc->thm[chn].l[sb] = thmm + 0.5 * thr[b]; + + enn = 0.5 * eb[b]; + thmm = 0.5 * thr[b]; + assert( enn >= 0 ); + assert( thmm >= 0 ); + b++; + sb++; + } + + gfc->en [chn].l[SBMAX_l-1] = enn; + gfc->thm[chn].l[SBMAX_l-1] = thmm; +} + +static void +compute_masking_s( + lame_internal_flags *gfc, + FLOAT (*fftenergy_s)[HBLKSIZE_s], + FLOAT *eb, + FLOAT *thr, + int chn, + int sblock, + FLOAT athlower + ) +{ + int j, b; + athlower *= ((FLOAT)BLKSIZE_s / BLKSIZE); + for (j = b = 0; b < gfc->npart_s; b++) { + FLOAT ecb = fftenergy_s[sblock][j++]; + int kk = gfc->numlines_s[b]; + while (--kk > 0) + ecb += fftenergy_s[sblock][j++]; + eb[b] = ecb; + } + for (j = b = 0; b < gfc->npart_s; b++) { + int kk = gfc->s3ind_s[b][0]; + FLOAT ecb = gfc->s3_ss[j++] * eb[kk++]; + while (kk <= gfc->s3ind_s[b][1]) + ecb += gfc->s3_ss[j++] * eb[kk++]; + + thr[b] = Min( ecb, rpelev_s * gfc->nb_s1[chn][b] ); + if (gfc->blocktype_old[chn & 1] == SHORT_TYPE ) { + thr[b] = Min(thr[b], rpelev2_s * gfc->nb_s2[chn][b]); + } + thr[b] = Max( thr[b], + Min(gfc->ATH->cb[gfc->bm_s[b]] * athlower, + thr[b] * 2) ); + gfc->nb_s2[chn][b] = gfc->nb_s1[chn][b]; + gfc->nb_s1[chn][b] = ecb; + assert( thr[b] >= 0 ); + } +} + +static void +block_type_set( + lame_global_flags * gfp, + int *uselongblock, + int *blocktype_d, + int *blocktype + ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int chn; + + if (gfp->short_blocks == short_block_coupled + /* force both channels to use the same block type */ + /* this is necessary if the frame is to be encoded in ms_stereo. */ + /* But even without ms_stereo, FhG does this */ + && !(uselongblock[0] && uselongblock[1])) + uselongblock[0] = uselongblock[1] = 0; + + /* update the blocktype of the previous granule, since it depends on what + * happend in this granule */ + for (chn=0; chn<gfc->channels_out; chn++) { + blocktype[chn] = NORM_TYPE; + /* disable short blocks */ + if (gfp->short_blocks == short_block_dispensed) + uselongblock[chn]=1; + if (gfp->short_blocks == short_block_forced) + uselongblock[chn]=0; + + if (uselongblock[chn]) { + /* no attack : use long blocks */ + assert( gfc->blocktype_old[chn] != START_TYPE ); + if (gfc->blocktype_old[chn] == SHORT_TYPE) + blocktype[chn] = STOP_TYPE; + } else { + /* attack : use short blocks */ + blocktype[chn] = SHORT_TYPE; + if (gfc->blocktype_old[chn] == NORM_TYPE) { + gfc->blocktype_old[chn] = START_TYPE; + } + if (gfc->blocktype_old[chn] == STOP_TYPE) + gfc->blocktype_old[chn] = SHORT_TYPE; + } + + blocktype_d[chn] = gfc->blocktype_old[chn]; /* value returned to calling program */ + gfc->blocktype_old[chn] = blocktype[chn]; /* save for next call to l3psy_anal */ + } +} + +static void +determine_block_type( lame_global_flags * gfp, FLOAT fftenergy_s[3][HBLKSIZE_s], int uselongblock[], + int chn, int gr_out, FLOAT* pe ) +{ + lame_internal_flags* gfc = gfp->internal_flags; + int j; + /*************************************************************** + * determine the block type (window type) based on L & R channels + ***************************************************************/ + /* compute PE for all 4 channels */ + FLOAT mn,mx,ma=0,mb=0,mc=0; + for ( j = HBLKSIZE_s/2; j < HBLKSIZE_s; j ++) { + ma += fftenergy_s[0][j]; + mb += fftenergy_s[1][j]; + mc += fftenergy_s[2][j]; + } + mn = Min(ma,mb); + mn = Min(mn,mc); + mx = Max(ma,mb); + mx = Max(mx,mc); +#if defined(HAVE_GTK) + if (gfp->analysis) { + gfc->pinfo->ers[gr_out][chn]=gfc->ers_save[chn]; + gfc->ers_save[chn]=(mx/(1e-12+mn)); + } +#endif + /* bit allocation is based on pe. */ + if (mx>mn) { + FLOAT tmp = FAST_LOG_X(mx/(1e-12+mn), 400.0); + if (tmp > *pe) *pe = tmp; + } + + /* block type is based just on L or R channel */ + if (chn<2) { + uselongblock[chn] = 1; + + /* tuned for t1.wav. doesnt effect most other samples */ + if (*pe > 3000) + uselongblock[chn]=0; + + if ( mx > 30*mn ) + {/* big surge of energy - always use short blocks */ + uselongblock[chn] = 0; + } + else if ((mx > 10*mn) && (*pe > 1000)) + {/* medium surge, medium pe - use short blocks */ + uselongblock[chn] = 0; + } + } +} + +int L3psycho_anal( lame_global_flags * gfp, + const sample_t *buffer[2], int gr_out, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio masking_ratio[2][2], + III_psy_ratio masking_MS_ratio[2][2], + FLOAT percep_entropy[2],FLOAT percep_MS_entropy[2], + FLOAT energy[4], + int blocktype_d[2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + + /* fft and energy calculation */ + FLOAT wsamp_L[2][BLKSIZE]; + FLOAT wsamp_S[2][3][BLKSIZE_s]; + FLOAT fftenergy[HBLKSIZE]; + FLOAT fftenergy_s[3][HBLKSIZE_s]; + + /* convolution */ + FLOAT eb[CBANDS+1]; + FLOAT cb[CBANDS]; + FLOAT thr[CBANDS+1]; + + /* ratios */ + FLOAT ms_ratio_l=0, ms_ratio_s=0; + + /* block type */ + int blocktype[2],uselongblock[2]; + + /* usual variables like loop indices, etc.. */ + int numchn, chn; + int b, i, j, k; + int sb,sblock; + + /* rh 20040301: the following loops do access one off the limits + * so I increase the array dimensions by one and initialize the + * accessed values to zero + */ + assert( gfc->npart_s <= CBANDS ); + assert( gfc->npart_l <= CBANDS ); + eb [gfc->npart_s] = 0; + thr[gfc->npart_s] = 0; + eb [gfc->npart_l] = 0; + thr[gfc->npart_l] = 0; + + numchn = gfc->channels_out; + /* chn=2 and 3 = Mid and Side channels */ + if (gfp->mode == JOINT_STEREO) numchn=4; + + for (chn=0; chn<numchn; chn++) { + FLOAT (*wsamp_l)[BLKSIZE]; + FLOAT (*wsamp_s)[3][BLKSIZE_s]; + energy[chn] = gfc->tot_ener[chn]; + + /* there is a one granule delay. Copy maskings computed last call + * into masking_ratio to return to calling program. + */ + if (chn < 2) { + /* LR maskings */ + percep_entropy [chn] = gfc -> pe [chn]; + masking_ratio [gr_out] [chn] .en = gfc -> en [chn]; + masking_ratio [gr_out] [chn] .thm = gfc -> thm [chn]; + } else { + /* MS maskings */ + percep_MS_entropy [chn-2] = gfc -> pe [chn]; + masking_MS_ratio [gr_out] [chn-2].en = gfc -> en [chn]; + masking_MS_ratio [gr_out] [chn-2].thm = gfc -> thm [chn]; + } + + /********************************************************************* + * compute FFTs + *********************************************************************/ + wsamp_s = wsamp_S+(chn & 1); + wsamp_l = wsamp_L+(chn & 1); + compute_ffts(gfp, fftenergy, fftenergy_s, + wsamp_l, wsamp_s, gr_out, chn, buffer); + + /********************************************************************* + * compute unpredicatability of first six spectral lines + *********************************************************************/ + for ( j = 0; j < CW_LOWER_INDEX; j++ ) { + /* calculate unpredictability measure cw */ + FLOAT a2, b2, r1, r2; + FLOAT numre, numim, den; + + a2 = gfc-> ax_sav[chn][1][j]; + b2 = gfc-> bx_sav[chn][1][j]; + + r2 = gfc-> rx_sav[chn][1][j]; + r1 = gfc-> rx_sav[chn][1][j] = gfc-> rx_sav[chn][0][j]; + + /* square (x1,y1) */ + if (r1 != 0.0) { + FLOAT a1 = gfc-> ax_sav[chn][1][j] = gfc-> ax_sav[chn][0][j]; + FLOAT b1 = gfc-> bx_sav[chn][1][j] = gfc-> bx_sav[chn][0][j]; + den = r1*r1; + numre = a1*b1; + numim = den-b1*b1; + } else { + /* no aging is needed for ax_sav[chn][0][j] and that of bx + because if r1=0, r2 should be 0 for next time. */ + den = numre = 1.0; + numim = 0.0; + } + + /* multiply by (x2,-y2) */ + if (r2 != 0.0) { + FLOAT tmp2 = (numim+numre)*(a2+b2)*0.5f; + FLOAT tmp1 = -a2*numre+tmp2; + numre = -b2*numim+tmp2; + numim = tmp1; + den *= r2; + } + + r1 = 2.0f*r1-r2; + r2 = gfc-> rx_sav[chn][0][j] = sqrt(fftenergy[j]); + r2 = r2+fabs(r1); + if (r2 != 0) { + FLOAT an = gfc-> ax_sav[chn][0][j] = wsamp_l[0][j]; + FLOAT bn = gfc-> bx_sav[chn][0][j] = j==0 ? wsamp_l[0][0] : wsamp_l[0][BLKSIZE-j]; + den = r1/den*2.0; + numre = (an+bn)-numre*den; + numim = (an-bn)-numim*den; + r2 = sqrt(numre*numre+numim*numim)/(r2*2.0); + } + gfc->cw[j] = r2; + } + + /********************************************************************** + * compute unpredicatibility of next 200 spectral lines + *********************************************************************/ + for (; j < gfc->cw_upper_index; j += 4 ) { + /* calculate unpredictability measure cw */ + FLOAT rn, r1, r2; + FLOAT numre, numim, den; + k = (j+2) / 4; + /* square (x1,y1) */ + r1 = fftenergy_s[0][k]; + if (r1 != 0.0) { + FLOAT a1 = (*wsamp_s)[0][k]; + FLOAT b1 = (*wsamp_s)[0][BLKSIZE_s-k]; /* k is never 0 */ + numre = a1*b1; + numim = r1-b1*b1; + den = r1; + r1 = sqrt(r1); + } else { + den = numre = 1.0; + numim = 0.0; + } + + /* multiply by (x2,-y2) */ + r2 = fftenergy_s[2][k]; + if (r2 != 0.0) { + FLOAT a2 = (*wsamp_s)[2][k]; + FLOAT b2 = (*wsamp_s)[2][BLKSIZE_s-k]; + + FLOAT tmp2 = (numim+numre)*(a2+b2)*0.5f; + FLOAT tmp1 = tmp2-a2*numre; + numre = tmp2-b2*numim; + numim = tmp1; + + r2 = sqrt(r2); + den *= r2; + } + + /* r-prime factor */ + rn = sqrt(fftenergy_s[1][k])+fabs(2*r1-r2); + if (rn != 0) { + FLOAT an = (*wsamp_s)[1][k]; + FLOAT bn = (*wsamp_s)[1][BLKSIZE_s-k]; + den = (2*r1-r2)/den*2.0f; + numre = (an+bn)-numre*den; + numim = (an-bn)-numim*den; + rn = sqrt(numre*numre+numim*numim)/(rn*2.0f); + } + gfc->cw[j+1] = gfc->cw[j+2] = gfc->cw[j+3] = gfc->cw[j] = rn; + } + + /********************************************************************** + * Calculate the energy and the unpredictability in the threshold + * calculation partitions + *********************************************************************/ + b = 0; + for (j = 0; j < gfc->cw_upper_index + && gfc->numlines_l[b] && b < gfc->npart_l; ) { + FLOAT ebb, cbb; + + ebb = NON_LINEAR_SCALE_ITEM(fftenergy[j]); + cbb = NON_LINEAR_SCALE_ITEM(fftenergy[j] * gfc->cw[j]); + j++; + + for (i = gfc->numlines_l[b] - 1; i > 0; i--) { + ebb += NON_LINEAR_SCALE_ITEM(fftenergy[j]); + /* XXX: should "* gfc->cw[j])" be outside of the scaling? */ + cbb += NON_LINEAR_SCALE_ITEM(fftenergy[j] * gfc->cw[j]); + j++; + } + eb[b] = NON_LINEAR_SCALE_SUM(ebb); + cb[b] = NON_LINEAR_SCALE_SUM(cbb); + b++; + } + + for (; b < gfc->npart_l; b++ ) { + FLOAT ebb = NON_LINEAR_SCALE_ITEM(fftenergy[j++]); + assert(gfc->numlines_l[b]); + for (i = gfc->numlines_l[b] - 1; i > 0; i--) { + ebb += NON_LINEAR_SCALE_ITEM(fftenergy[j++]); + } + eb[b] = NON_LINEAR_SCALE_SUM(ebb); + /* XXX: should the "* .4" be outside of the scaling? */ + cb[b] = NON_LINEAR_SCALE_SUM(ebb * 0.4); + } + + /********************************************************************** + * convolve the partitioned energy and unpredictability + * with the spreading function, s3_l[b][k](packed into s3_ll) + *********************************************************************/ + /* calculate percetual entropy */ + gfc->pe[chn] = 0; + k = 0; + for ( b = 0;b < gfc->npart_l; b++ ) { + FLOAT tbb,ecb,ctb; + int kk; + ecb = ctb = 0.; + for (kk = gfc->s3ind[b][0]; kk <= gfc->s3ind[b][1]; kk++ ) { + /* sprdngf for Layer III */ + ecb += gfc->s3_ll[k] * eb[kk]; + ctb += gfc->s3_ll[k] * cb[kk]; + k++; + } + +/* calculate the tonality of each threshold calculation partition + * calculate the SNR in each threshold calculation partition + * tonality = -0.299 - .43*log(ctb/ecb); + * tonality = 0: use NMT (lots of masking) + * tonality = 1: use TMN (little masking) + */ + tbb = ecb; + if (tbb != 0.0) { + tbb = ctb / tbb; + /* convert to tonality index */ + /* tonality small: tbb=1 */ + /* tonality large: tbb=-.299 */ + tbb = CONV1 + FAST_LOG_X(tbb, CONV2); + if (tbb < 0.0) tbb = exp(-LN_TO_LOG10*NMT); + else if (tbb > 1.0) tbb = exp(-LN_TO_LOG10*TMN); + else tbb = exp(-LN_TO_LOG10 * ( (TMN-NMT)*tbb + NMT )); + } + +/* at this point, tbb represents the amount the spreading function + * will be reduced. The smaller the value, the less masking. + * minval[] = 1 (0db) says just use tbb. + * minval[]= .01 (-20db) says reduce spreading function by at least 20db. + */ + tbb = Min(gfc->minval[b], tbb); + /* stabilize tonality estimation */ + if (gfc->PSY->tonalityPatch && b > 5) { + FLOAT const x = 1.8699422; + FLOAT w = gfc->PSY->prvTonRed[b/2] * x; + if (tbb > w) + tbb = w; + gfc->PSY->prvTonRed[b] = tbb; + } + ecb *= tbb; + + /* long block pre-echo control. */ + /* rpelev=2.0, rpelev2=16.0 */ + /* note: all surges in PE are because of this pre-echo formula + * for thr[b]. If it this is not used, PE is always around 600 + */ + /* dont use long block pre-echo control if previous granule was + * a short block. This is to avoid the situation: + * frame0: quiet (very low masking) + * frame1: surge (triggers short blocks) + * frame2: regular frame. looks like pre-echo when compared to + * frame0, but all pre-echo was in frame1. + */ + /* chn=0,1 L and R channels + chn=2,3 S and M channels. + */ + thr[b] = Min(ecb, rpelev*gfc->nb_1[chn][b]); + if (gfc->blocktype_old[chn & 1] != SHORT_TYPE + && thr[b] > rpelev2*gfc->nb_2[chn][b]) + thr[b] = rpelev2*gfc->nb_2[chn][b]; + + gfc->nb_2[chn][b] = gfc->nb_1[chn][b]; + gfc->nb_1[chn][b] = ecb; + + ecb = Max(thr[b], gfc->ATH->cb[b]*gfc->ATH->adjust); + if (ecb < eb[b]) + gfc->pe[chn] -= gfc->numlines_l[b] * FAST_LOG(ecb / eb[b]); + } + + determine_block_type( gfp, fftenergy_s, uselongblock, chn, gr_out, &gfc->pe[chn] ); + + /* compute masking thresholds for long blocks */ + convert_partition2scalefac_l(gfc, eb, thr, chn); + + /* compute masking thresholds for short blocks */ + for (sblock = 0; sblock < 3; sblock++) { + FLOAT enn, thmm; + compute_masking_s(gfc, fftenergy_s, eb, thr, chn, + sblock,gfp->ATHlower*gfc->ATH->adjust); + b = -1; + enn = thmm = 0.0; + for (sb = 0; sb < SBMAX_s; sb++) { + while (++b < gfc->bo_s[sb]) { + enn += eb[b]; + thmm += thr[b]; + } + enn += 0.5 * eb[b]; /* for the last sfb b is larger than npart_s!! */ + thmm += 0.5 * thr[b]; /* rh 20040301 */ + assert( enn >= 0 ); + assert( thmm >= 0 ); + gfc->en [chn].s[sb][sblock] = enn; + gfc->thm[chn].s[sb][sblock] = thmm; + enn = 0.5 * eb[b]; + thmm = 0.5 * thr[b]; + assert( enn >= 0 ); + assert( thmm >= 0 ); + } + gfc->en [chn].s[sb-1][sblock] += enn; + gfc->thm[chn].s[sb-1][sblock] += thmm; + } + } /* end loop over chn */ + + if (gfp->interChRatio != 0.0) + calc_interchannel_masking(gfp, gfp->interChRatio); + + if (gfp->mode == JOINT_STEREO) { + FLOAT db,x1,x2,sidetot=0,tot=0; + msfix1(gfc); + if (gfp->msfix != 0.0) + ns_msfix(gfc, gfp->msfix, gfp->ATHlower*gfc->ATH->adjust); + + /* determin ms_ratio from masking thresholds*/ + /* use ms_stereo (ms_ratio < .35) if average thresh. diff < 5 db */ + for (sb= SBMAX_l/4 ; sb< SBMAX_l; sb ++ ) { + x1 = Min(gfc->thm[0].l[sb],gfc->thm[1].l[sb]); + x2 = Max(gfc->thm[0].l[sb],gfc->thm[1].l[sb]); + /* thresholds difference in db */ + if (x2 >= 1000*x1) db=3; + else db = FAST_LOG10(x2/x1); + /* DEBUGF(gfc,"db = %f %e %e \n",db,gfc->thm[0].l[sb],gfc->thm[1].l[sb]);*/ + sidetot += db; + tot++; + } + ms_ratio_l= (sidetot/tot)*0.7; /* was .35*(sidetot/tot)/5.0*10 */ + ms_ratio_l = Min(ms_ratio_l,0.5); + + sidetot=0; tot=0; + for ( sblock = 0; sblock < 3; sblock++ ) + for ( sb = SBMAX_s/4; sb < SBMAX_s; sb++ ) { + x1 = Min(gfc->thm[0].s[sb][sblock],gfc->thm[1].s[sb][sblock]); + x2 = Max(gfc->thm[0].s[sb][sblock],gfc->thm[1].s[sb][sblock]); + /* thresholds difference in db */ + if (x2 >= 1000*x1) db=3; + else db = FAST_LOG10(x2/x1); + sidetot += db; + tot++; + } + ms_ratio_s = (sidetot/tot)*0.7; /* was .35*(sidetot/tot)/5.0*10 */ + ms_ratio_s = Min(ms_ratio_s,.5); + } + + /*************************************************************** + * determine final block type + ***************************************************************/ + block_type_set(gfp, uselongblock, blocktype_d, blocktype); + + if (blocktype_d[0]==SHORT_TYPE && blocktype_d[1]==SHORT_TYPE) + *ms_ratio = gfc->ms_ratio_s_old; + else + *ms_ratio = gfc->ms_ratio_l_old; + + gfc->ms_ratio_s_old = ms_ratio_s; + gfc->ms_ratio_l_old = ms_ratio_l; + + /* we dont know the block type of this frame yet - assume long */ + *ms_ratio_next = ms_ratio_l; + + return 0; +} + + + +/* mask_add optimization */ +/* init the limit values used to avoid computing log in mask_add when it is not necessary */ + +/* For example, with i = 10*log10(m2/m1)/10*16 (= log10(m2/m1)*16) + * + * abs(i)>8 is equivalent (as i is an integer) to + * abs(i)>=9 + * i>=9 || i<=-9 + * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16 + * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16) + * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16 + * exp10 is strictly increasing thus this is equivalent to + * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants + */ + + +#define I1LIMIT 8 /* as in if(i>8) */ +#define I2LIMIT 23 /* as in if(i>24) -> changed 23 */ +#define MLIMIT 15 /* as in if(m<15) */ + +static FLOAT ma_max_i1; +static FLOAT ma_max_i2; +static FLOAT ma_max_m; + + + +static void init_mask_add_max_values(void) +{ + ma_max_i1 = pow(10,(I1LIMIT+1)/16.0); + ma_max_i2 = pow(10,(I2LIMIT+1)/16.0); + ma_max_m = pow(10,(MLIMIT)/10.0); +} + + + + + + +/* addition of simultaneous masking Naoki Shibata 2000/7 */ +inline static FLOAT mask_add(FLOAT m1,FLOAT m2,int k,int b, lame_internal_flags * const gfc) +{ + static const FLOAT table1[] = { + 3.3246 *3.3246 ,3.23837*3.23837,3.15437*3.15437,3.00412*3.00412,2.86103*2.86103,2.65407*2.65407,2.46209*2.46209,2.284 *2.284 , + 2.11879*2.11879,1.96552*1.96552,1.82335*1.82335,1.69146*1.69146,1.56911*1.56911,1.46658*1.46658,1.37074*1.37074,1.31036*1.31036, + 1.25264*1.25264,1.20648*1.20648,1.16203*1.16203,1.12765*1.12765,1.09428*1.09428,1.0659 *1.0659 ,1.03826*1.03826,1.01895*1.01895, + 1 + }; + + static const FLOAT table2[] = { + 1.33352*1.33352,1.35879*1.35879,1.38454*1.38454,1.39497*1.39497,1.40548*1.40548,1.3537 *1.3537 ,1.30382*1.30382,1.22321*1.22321, + 1.14758*1.14758, + 1 + }; + + static const FLOAT table3[] = { + 2.35364*2.35364,2.29259*2.29259,2.23313*2.23313,2.12675*2.12675,2.02545*2.02545,1.87894*1.87894,1.74303*1.74303,1.61695*1.61695, + 1.49999*1.49999,1.39148*1.39148,1.29083*1.29083,1.19746*1.19746,1.11084*1.11084,1.03826*1.03826 + }; + + + int i; + FLOAT ratio; + + + if (m2 > m1) { + if (m2 < (m1*ma_max_i2)) + ratio = m2/m1; + else + return (m1+m2); + } else { + if (m1 >= (m2*ma_max_i2)) + return (m1+m2); + ratio = m1/m2; + } + /*i = abs(10*log10(m2 / m1)/10*16); + m = 10*log10((m1+m2)/gfc->ATH->cb[k]);*/ + + + /* Should always be true, just checking */ + assert(m1>=0); + assert(m2>=0); + assert(gfc->ATH->cb[k]>=0); + + + m1 += m2; + + if ((unsigned int)(b+3) <= 3+3) { /* approximately, 1 bark = 3 partitions */ + /* 65% of the cases */ + /* originally 'if(i > 8)' */ + if (ratio >= ma_max_i1) { + /* 43% of the total */ + return m1; + } + + /* 22% of the total */ + i = FAST_LOG10_X(ratio,16.0); + return m1*table2[i]; + } + + /* m<15 equ log10((m1+m2)/gfc->ATH->cb[k])<1.5 + * equ (m1+m2)/gfc->ATH->cb[k]<10^1.5 + * equ (m1+m2)<10^1.5 * gfc->ATH->cb[k] + */ + + i = FAST_LOG10_X(ratio, 16.0); + m2 = gfc->ATH->cb[k]*gfc->ATH->adjust; + if (m1 < ma_max_m*m2) { + /* 3% of the total */ + /* Originally if (m > 0) { */ + if (m1 > m2) { + FLOAT f, r; + + f = 1.0; + if (i <= 13) f = table3[i]; + + r = FAST_LOG10_X(m1 / m2, 10.0/15.0); + return m1 * ((table1[i]-f)*r+f); + } + + if (i > 13) return m1; + + return m1*table3[i]; + } + + + /* 10% of total */ + return m1*table1[i]; +} + + + +static inline FLOAT NS_INTERP(FLOAT x, FLOAT y, FLOAT r) +{ + /* was pow((x),(r))*pow((y),1-(r))*/ + if(r==1.0) + return x; /* 99.7% of the time */ + if(r==0.0) + return y; + if(y>0.0) + return pow(x/y,r)*y; /* rest of the time */ + return 0.0; /* never happens */ +} + + + +static void nsPsy2dataRead( + FILE *fp, + FLOAT *eb2, + FLOAT *eb, + int chn, + int npart_l + ) +{ + int b; + for(;;) { + static const char chname[] = {'L','R','M','S'}; + char c; + + fscanf(fp, "%c",&c); + for (b=0; b < npart_l; b++) { + double e; + fscanf(fp, "%lf",&e); + eb2[b] = e; + } + + if (feof(fp)) abort(); + if (c == chname[chn]) break; + abort(); + } + + eb2[62] = eb2[61]; + for (b=0; b < npart_l; b++ ) + eb2[b] = eb2[b] * eb[b]; +} + +static FLOAT +pecalc_s( + III_psy_ratio *mr, + FLOAT masking_lower + ) +{ + FLOAT pe_s; + const static FLOAT regcoef_s[] = { + 11.8, /* these values are tuned only for 44.1kHz... */ + 13.6, + 17.2, + 32, + 46.5, + 51.3, + 57.5, + 67.1, + 71.5, + 84.6, + 97.6, + 130, +/* 255.8 */ + }; + int sb, sblock; + + pe_s = 1236.28/4; + for (sb = 0; sb < SBMAX_s - 1; sb++) { + for (sblock=0;sblock<3;sblock++) { + FLOAT x; + if (regcoef_s[sb] == 0.0 + || mr->thm.s[sb][sblock] <= 0.0 + || mr->en.s[sb][sblock] + <= (x = mr->thm.s[sb][sblock] * masking_lower)) + continue; + + if (mr->en.s[sb][sblock] > x*1e10) + pe_s += regcoef_s[sb] * (10.0 * LOG10); + else + pe_s += regcoef_s[sb] * FAST_LOG10(mr->en.s[sb][sblock] / x); + } + } + + return pe_s; +} + +static FLOAT +pecalc_l( + III_psy_ratio *mr, + FLOAT masking_lower + ) +{ + FLOAT pe_l; + const static FLOAT regcoef_l[] = { + 6.8, /* these values are tuned only for 44.1kHz... */ + 5.8, + 5.8, + 6.4, + 6.5, + 9.9, + 12.1, + 14.4, + 15, + 18.9, + 21.6, + 26.9, + 34.2, + 40.2, + 46.8, + 56.5, + 60.7, + 73.9, + 85.7, + 93.4, + 126.1, +/* 241.3 */ + }; + int sb; + + pe_l = 1124.23/4; + for (sb = 0; sb < SBMAX_l - 1; sb++) { + FLOAT x; + if (mr->thm.l[sb] <= 0.0 + || mr->en.l[sb] <= (x = mr->thm.l[sb]*masking_lower)) + continue; + + if (mr->en.l[sb] > x*1e10) + pe_l += regcoef_l[sb] * (10.0 * LOG10); + else + pe_l += regcoef_l[sb] * FAST_LOG10(mr->en.l[sb] / x); + } + + return pe_l; +} + + + + + +int L3psycho_anal_ns( lame_global_flags * gfp, + const sample_t *buffer[2], int gr_out, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio masking_ratio[2][2], + III_psy_ratio masking_MS_ratio[2][2], + FLOAT percep_entropy[2],FLOAT percep_MS_entropy[2], + FLOAT energy[4], + int blocktype_d[2]) +{ +/* to get a good cache performance, one has to think about + * the sequence, in which the variables are used. + * (Note: these static variables have been moved to the gfc-> struct, + * and their order in memory is layed out in util.h) + */ + lame_internal_flags *gfc=gfp->internal_flags; + + /* fft and energy calculation */ + FLOAT wsamp_L[2][BLKSIZE]; + FLOAT wsamp_S[2][3][BLKSIZE_s]; + + /* block type */ + int blocktype[2],uselongblock[2]; + + /* usual variables like loop indices, etc.. */ + int numchn, chn; + int b, i, j, k; + int sb,sblock; + + /* variables used for --nspsytune */ + FLOAT ns_hpfsmpl[2][576]; + FLOAT pcfact; + + numchn = gfc->channels_out; + /* chn=2 and 3 = Mid and Side channels */ + if (gfp->mode == JOINT_STEREO) numchn=4; + + if (gfp->VBR==vbr_off) pcfact = gfc->ResvMax == 0 ? 0 : ((FLOAT)gfc->ResvSize)/gfc->ResvMax*0.5; + else if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh || gfp->VBR == vbr_mt) { + /*static const FLOAT pcQns[10]={1.0,1.0,1.0,0.8,0.6,0.5,0.4,0.3,0.2,0.1}; + pcfact = pcQns[gfp->VBR_q];*/ + pcfact = 0.6; + } else pcfact = 1.0; + + /********************************************************************** + * Apply HPF of fs/4 to the input signal. + * This is used for attack detection / handling. + **********************************************************************/ + /* Don't copy the input buffer into a temporary buffer */ + /* unroll the loop 2 times */ + for(chn=0;chn<gfc->channels_out;chn++) { + static const FLOAT fircoef[] = { + -8.65163e-18*2, -0.00851586*2, -6.74764e-18*2, 0.0209036*2, + -3.36639e-17*2, -0.0438162 *2, -1.54175e-17*2, 0.0931738*2, + -5.52212e-17*2, -0.313819 *2 + }; + + /* apply high pass filter of fs/4 */ + const sample_t * const firbuf = &buffer[chn][576-350-NSFIRLEN+192]; + for (i=0;i<576;i++) { + FLOAT sum1, sum2; + sum1 = firbuf[i + 10]; + sum2 = 0.0; + for (j=0;j<(NSFIRLEN-1)/2;j+=2) { + sum1 += fircoef[j ] * (firbuf[i+j ]+firbuf[i+NSFIRLEN-j ]); + sum2 += fircoef[j+1] * (firbuf[i+j+1]+firbuf[i+NSFIRLEN-j-1]); + } + ns_hpfsmpl[chn][i] = sum1 + sum2; + } + masking_ratio [gr_out] [chn] .en = gfc -> en [chn]; + masking_ratio [gr_out] [chn] .thm = gfc -> thm [chn]; + if (numchn > 2) { + /* MS maskings */ + /*percep_MS_entropy [chn-2] = gfc -> pe [chn]; */ + masking_MS_ratio [gr_out] [chn].en = gfc -> en [chn+2]; + masking_MS_ratio [gr_out] [chn].thm = gfc -> thm [chn+2]; + } + } + + for (chn=0; chn<numchn; chn++) { + FLOAT (*wsamp_l)[BLKSIZE]; + FLOAT (*wsamp_s)[3][BLKSIZE_s]; + FLOAT en_subshort[12]; + FLOAT en_short[4] = { 0 }; + FLOAT attack_intensity[12]; + int ns_uselongblock = 1; + FLOAT attackThreshold; + FLOAT max[CBANDS],avg[CBANDS]; + int ns_attacks[4] = {0}; + FLOAT fftenergy[HBLKSIZE]; + FLOAT fftenergy_s[3][HBLKSIZE_s]; + /* convolution */ + FLOAT eb[CBANDS+1],eb2[CBANDS]; + FLOAT thr[CBANDS+1]; + + + /*This is the masking table: + According to tonality, values are going from 0dB (TMN) + to 9.3dB (NMT). + After additive masking computation, 8dB are added, so + final values are going from 8dB to 17.3dB + */ + static const FLOAT tab[] = { + 1.0/*pow(10, -0)*/, + 0.79433/*pow(10, -0.1)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.25119/*pow(10, -0.6)*/, + 0.11749/*pow(10, -0.93)*/ + }; + + /* rh 20040301: the following loops do access one off the limits + * so I increase the array dimensions by one and initialize the + * accessed values to zero + */ + assert( gfc->npart_s <= CBANDS ); + assert( gfc->npart_l <= CBANDS ); + eb [gfc->npart_s] = 0; + thr[gfc->npart_s] = 0; + eb [gfc->npart_l] = 0; + thr[gfc->npart_l] = 0; + + /*************************************************************** + * determine the block type (window type) + ***************************************************************/ + /* calculate energies of each sub-shortblocks */ + for (i=0; i<3; i++) { + en_subshort[i] = gfc->nsPsy.last_en_subshort[chn][i+6]; + attack_intensity[i] + = en_subshort[i] / gfc->nsPsy.last_en_subshort[chn][i+4]; + en_short[0] += en_subshort[i]; + } + + if (chn == 2) { + for(i=0;i<576;i++) { + FLOAT l, r; + l = ns_hpfsmpl[0][i]; + r = ns_hpfsmpl[1][i]; + ns_hpfsmpl[0][i] = l+r; + ns_hpfsmpl[1][i] = l-r; + } + } + { + FLOAT const *pf = ns_hpfsmpl[chn & 1]; + for (i = 0; i < 9; i++) { + FLOAT const *const pfe = pf + 576 / 9; + FLOAT p = 1.; + for (; pf < pfe; pf++) + if (p < fabs(*pf)) + p = fabs(*pf); + + gfc->nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p; + en_short[1 + i / 3] += p; + if (p > en_subshort[i + 3 - 2]) + p = p / en_subshort[i + 3 - 2]; + else if (en_subshort[i + 3 - 2] > p * 10.0) + p = en_subshort[i + 3 - 2] / (p * 10.0); + else + p = 0.0; + attack_intensity[i + 3] = p; + } + } +#if defined(HAVE_GTK) + if (gfp->analysis) { + FLOAT x = attack_intensity[0]; + for (i=1;i<12;i++) + if (x < attack_intensity[i]) + x = attack_intensity[i]; + gfc->pinfo->ers[gr_out][chn] = gfc->ers_save[chn]; + gfc->ers_save[chn] = x; + } +#endif + /* compare energies between sub-shortblocks */ + attackThreshold = (chn == 3) + ? gfc->nsPsy.attackthre_s : gfc->nsPsy.attackthre; + for (i = 0; i < 12; i++) + if (!ns_attacks[i / 3] && attack_intensity[i] > attackThreshold) + ns_attacks[i / 3] = (i % 3) + 1; + + /* should have energy change between short blocks, + in order to avoid periodic signals */ + for (i = 1; i < 4; i++) { + float ratio; + if (en_short[i - 1] > en_short[i]) + ratio = en_short[i - 1] / en_short[i]; + else + ratio = en_short[i] / en_short[i - 1]; + if (ratio < 1.7) { + ns_attacks[i] = 0; + if (i == 1) + ns_attacks[0] = 0; + } + } + + if (ns_attacks[0] && gfc->nsPsy.last_attacks[chn]) + ns_attacks[0] = 0; + + if (gfc->nsPsy.last_attacks[chn] == 3 || + ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3]) { + ns_uselongblock = 0; + + if (ns_attacks[1] && ns_attacks[0]) + ns_attacks[1] = 0; + if (ns_attacks[2] && ns_attacks[1]) + ns_attacks[2] = 0; + if (ns_attacks[3] && ns_attacks[2]) + ns_attacks[3] = 0; + } + + if (chn < 2) { + uselongblock[chn] = ns_uselongblock; + } + else { + if (ns_uselongblock == 0) { + uselongblock[0] = uselongblock[1] = 0; + } + } + + /* there is a one granule delay. Copy maskings computed last call + * into masking_ratio to return to calling program. + */ + energy[chn]=gfc->tot_ener[chn]; + + /********************************************************************* + * compute FFTs + *********************************************************************/ + wsamp_s = wsamp_S+(chn & 1); + wsamp_l = wsamp_L+(chn & 1); + compute_ffts(gfp, fftenergy, fftenergy_s, + wsamp_l, wsamp_s, gr_out, chn, buffer); + + /* compute masking thresholds for short blocks */ + for (sblock = 0; sblock < 3; sblock++) { + FLOAT enn, thmm; + compute_masking_s(gfc, fftenergy_s, eb, thr, chn, sblock, + gfp->ATHlower*gfc->ATH->adjust); + b = -1; + for (sb = 0; sb < SBMAX_s; sb++) { + enn = thmm = 0.0; + while (++b < gfc->bo_s[sb]) { + enn += eb[b]; + thmm += thr[b]; + } + enn += 0.5 * eb[b]; /* for the last sfb b is larger than npart_s!! */ + thmm += 0.5 * thr[b]; /* rh 20040301 */ + gfc->en [chn].s[sb][sblock] = enn; + + assert( enn >= 0 ); + assert( thmm >= 0 ); + + /**** short block pre-echo control ****/ + thmm *= NS_PREECHO_ATT0; + if (ns_attacks[sblock] >= 2 || ns_attacks[sblock+1] == 1) { + int idx = (sblock != 0) ? sblock-1 : 2; + double p = NS_INTERP(gfc->thm[chn].s[sb][idx], + thmm, NS_PREECHO_ATT1*pcfact); + thmm = Min(thmm,p); + } + + if (ns_attacks[sblock] == 1) { + int idx = (sblock != 0) ? sblock-1 : 2; + double p = NS_INTERP(gfc->thm[chn].s[sb][idx], + thmm,NS_PREECHO_ATT2*pcfact); + thmm = Min(thmm,p); + } else if ((sblock != 0 && ns_attacks[sblock-1] == 3) + || (sblock == 0 && gfc->nsPsy.last_attacks[chn] == 3)) { + int idx = (sblock != 2) ? sblock+1 : 0; + double p = NS_INTERP(gfc->thm[chn].s[sb][idx], + thmm,NS_PREECHO_ATT2*pcfact); + thmm = Min(thmm,p); + } + + /* pulse like signal detection for fatboy.wav and so on */ + enn = en_subshort[sblock*3+3] + en_subshort[sblock*3+4] + + en_subshort[sblock*3+5]; + if (en_subshort[sblock*3+5]*6 < enn) { + thmm *= 0.5; + if (en_subshort[sblock*3+4]*6 < enn) + thmm *= 0.5; + } + + gfc->thm[chn].s[sb][sblock] = thmm; + } + } + gfc->nsPsy.last_attacks[chn] = ns_attacks[2]; + + /********************************************************************* + * Calculate the energy and the tonality of each partition. + *********************************************************************/ + for (b = j = 0; b<gfc->npart_l; b++) { + FLOAT ebb,m; + m = ebb = fftenergy[j++]; + for (i = gfc->numlines_l[b] - 1; i > 0; --i) { + FLOAT el = fftenergy[j++]; + ebb += el; + if (m < el) + m = el; + } + eb[b] = ebb; + max[b] = m; + avg[b] = ebb * gfc->rnumlines_l[b]; + } + + if (gfc->nsPsy.pass1fp) + nsPsy2dataRead(gfc->nsPsy.pass1fp, eb2, eb, chn, gfc->npart_l); + else { + FLOAT m,a; + a = avg[0] + avg[1]; + if (a != 0.0) { + m = max[0]; if (m < max[1]) m = max[1]; + a = 20.0 * (m*2.0-a) + / (a*(gfc->numlines_l[0] + gfc->numlines_l[1] - 1)); + k = (int) a; + if (k > sizeof(tab)/sizeof(tab[0]) - 1) + k = sizeof(tab)/sizeof(tab[0]) - 1; + a = eb[0] * tab[k]; + } + eb2[0] = a; + + for (b = 1; b < gfc->npart_l-1; b++) { + a = avg[b-1] + avg[b] + avg[b+1]; + if (a != 0.0) { + m = max[b-1]; + if (m < max[b ]) m = max[b]; + if (m < max[b+1]) m = max[b+1]; + a = 20.0 * (m*3.0-a) + / (a*(gfc->numlines_l[b-1] + gfc->numlines_l[b] + gfc->numlines_l[b+1] - 1)); + k = (int) a; + if (k > sizeof(tab)/sizeof(tab[0]) - 1) + k = sizeof(tab)/sizeof(tab[0]) - 1; + a = eb[b] * tab[k]; + } + eb2[b] = a; + } + + a = avg[gfc->npart_l-2] + avg[gfc->npart_l-1]; + if (a != 0.0) { + m = max[gfc->npart_l-2]; + if (m < max[gfc->npart_l-1]) + m = max[gfc->npart_l-1]; + + a = 20.0 * (m*2.0-a) + / (a*(gfc->numlines_l[gfc->npart_l-2] + gfc->numlines_l[gfc->npart_l-1] - 1)); + k = (int) a; + if (k > sizeof(tab)/sizeof(tab[0]) - 1) + k = sizeof(tab)/sizeof(tab[0]) - 1; + a = eb[b] * tab[k]; + } + eb2[b] = a; + } + + /********************************************************************* + * convolve the partitioned energy and unpredictability + * with the spreading function, s3_l[b][k] + ******************************************************************* */ +#undef GPSYCHO_BLOCK_TYPE_DECISION +#ifdef GPSYCHO_BLOCK_TYPE_DECISION + { + FLOAT pe = 0; +#endif + k = 0; + for ( b = 0;b < gfc->npart_l; b++ ) { + FLOAT ecb; + /* convolve the partitioned energy with the spreading function */ + int kk = gfc->s3ind[b][0]; + ecb = gfc->s3_ll[k++] * eb2[kk]; + while (++kk <= gfc->s3ind[b][1]) + ecb = mask_add(ecb, gfc->s3_ll[k++] * eb2[kk], kk, kk-b, gfc); + + ecb *= 0.158489319246111; /* pow(10,-0.8) */ + + /**** long block pre-echo control ****/ + /* dont use long block pre-echo control if previous granule was + * a short block. This is to avoid the situation: + * frame0: quiet (very low masking) + * frame1: surge (triggers short blocks) + * frame2: regular frame. looks like pre-echo when compared to + * frame0, but all pre-echo was in frame1. + */ + /* chn=0,1 L and R channels + chn=2,3 S and M channels. + */ + + if (gfc->blocktype_old[chn & 1] == SHORT_TYPE) + thr[b] = ecb; /* Min(ecb, rpelev*gfc->nb_1[chn][b]); */ + else + thr[b] = NS_INTERP(Min(ecb, + Min(rpelev*gfc->nb_1[chn][b], + rpelev2*gfc->nb_2[chn][b])), + ecb, pcfact); + + gfc->nb_2[chn][b] = gfc->nb_1[chn][b]; + gfc->nb_1[chn][b] = ecb; +#ifdef GPSYCHO_BLOCK_TYPE_DECISION + /* this pe does not match GPSYCHO's pe, because of difference in + * convolution calculation, (mask_add etc.). Therefore the block + * switching does not happen exactly as in GPSYCHO. + */ + pe -= gfc->numlines_l[b] * FAST_LOG(ecb / eb[b]); +#endif + } +#ifdef GPSYCHO_BLOCK_TYPE_DECISION + determine_block_type( gfp, fftenergy_s, uselongblock, chn, gr_out, &pe ); + } +#endif + /* compute masking thresholds for long blocks */ + convert_partition2scalefac_l(gfc, eb, thr, chn); + + } /* end loop over chn */ + + if (gfp->interChRatio != 0.0) + calc_interchannel_masking(gfp, gfp->interChRatio); + + if (gfp->mode == JOINT_STEREO) { + FLOAT msfix; + msfix1(gfc); + msfix = gfp->msfix; + if (msfix != 0.0) + ns_msfix(gfc, msfix, gfp->ATHlower*gfc->ATH->adjust); + } + + /*************************************************************** + * determine final block type + ***************************************************************/ + block_type_set(gfp, uselongblock, blocktype_d, blocktype); + + /********************************************************************* + * compute the value of PE to return ... no delay and advance + *********************************************************************/ + for(chn=0;chn<numchn;chn++) { + FLOAT *ppe; + int type; + III_psy_ratio *mr; + + if (chn > 1) { + ppe = percep_MS_entropy - 2; + type = NORM_TYPE; + if (blocktype_d[0] == SHORT_TYPE || blocktype_d[1] == SHORT_TYPE) + type = SHORT_TYPE; + mr = &masking_MS_ratio[gr_out][chn-2]; + } else { + ppe = percep_entropy; + type = blocktype_d[chn]; + mr = &masking_ratio[gr_out][chn]; + } + + if (type == SHORT_TYPE) + ppe[chn] = pecalc_s(mr, gfc->masking_lower); + else + ppe[chn] = pecalc_l(mr, gfc->masking_lower); + +#if defined(HAVE_GTK) + if (gfp->analysis) gfc->pinfo->pe[gr_out][chn] = ppe[chn]; +#endif + } + return 0; +} + + + + + +/* + * The spreading function. Values returned in units of energy + */ +static FLOAT s3_func(FLOAT bark) { + FLOAT tempx,x,tempy,temp; + tempx = bark; + if (tempx>=0) tempx *= 3; + else tempx *=1.5; + + if (tempx>=0.5 && tempx<=2.5) + { + temp = tempx - 0.5; + x = 8.0 * (temp*temp - 2.0 * temp); + } + else x = 0.0; + tempx += 0.474; + tempy = 15.811389 + 7.5*tempx - 17.5*sqrt(1.0+tempx*tempx); + + if (tempy <= -60.0) return 0.0; + + tempx = exp( (x + tempy)*LN_TO_LOG10 ); + + /* Normalization. The spreading function should be normalized so that: + +inf + / + | s3 [ bark ] d(bark) = 1 + / + -inf + */ + tempx /= .6609193; + return tempx; +} + +static int +init_numline( + int *numlines, int *bo, int *bm, + FLOAT *bval, FLOAT *bval_width, FLOAT *mld, + + FLOAT sfreq, int blksize, int *scalepos, + FLOAT deltafreq, int sbmax + ) +{ + int partition[HBLKSIZE]; + int i, j, k; + int sfb; + + sfreq /= blksize; + j = 0; + /* compute numlines, the number of spectral lines in each partition band */ + /* each partition band should be about DELBARK wide. */ + for (i=0;i<CBANDS;i++) { + FLOAT bark1; + int j2; + bark1 = freq2bark(sfreq*j); + for (j2 = j; freq2bark(sfreq*j2) - bark1 < DELBARK && j2 <= blksize/2; + j2++) + ; + + numlines[i] = j2 - j; + while (j<j2) + partition[j++]=i; + if (j > blksize/2) break; + } + + for ( sfb = 0; sfb < sbmax; sfb++ ) { + int i1,i2,start,end; + FLOAT arg; + start = scalepos[sfb]; + end = scalepos[sfb+1]; + + i1 = floor(.5 + deltafreq*(start-.5)); + if (i1<0) i1=0; + i2 = floor(.5 + deltafreq*(end-.5)); + if (i2>blksize/2) i2=blksize/2; + + bm[sfb] = (partition[i1]+partition[i2])/2; + bo[sfb] = partition[i2]; + + /* setup stereo demasking thresholds */ + /* formula reverse enginerred from plot in paper */ + arg = freq2bark(sfreq*scalepos[sfb]*deltafreq); + arg = (Min(arg, 15.5)/15.5); + + mld[sfb] = pow(10.0, 1.25*(1-cos(PI*arg))-2.5); + } + + /* compute bark values of each critical band */ + j = 0; + for (k = 0; k < i+1; k++) { + int w = numlines[k]; + FLOAT bark1,bark2; + + bark1 = freq2bark (sfreq*(j )); + bark2 = freq2bark (sfreq*(j+w-1)); + bval[k] = .5*(bark1+bark2); + + bark1 = freq2bark (sfreq*(j -.5)); + bark2 = freq2bark (sfreq*(j+w-.5)); + bval_width[k] = bark2-bark1; + j += w; + } + + return i+1; +} + +static int +init_s3_values( + lame_internal_flags *gfc, + FLOAT **p, + int (*s3ind)[2], + int npart, + FLOAT *bval, + FLOAT *bval_width, + FLOAT *norm + ) +{ + FLOAT s3[CBANDS][CBANDS]; + /* The s3 array is not linear in the bark scale. + * bval[x] should be used to get the bark value. + */ + int i, j, k; + int numberOfNoneZero = 0; + + /* s[i][j], the value of the spreading function, + * centered at band j (masker), for band i (maskee) + * + * i.e.: sum over j to spread into signal barkval=i + * NOTE: i and j are used opposite as in the ISO docs + */ + for (i = 0; i < npart; i++) + for (j = 0; j < npart; j++) + s3[i][j] = s3_func(bval[i] - bval[j]) * bval_width[j] * norm[i]; + + for (i = 0; i < npart; i++) { + for (j = 0; j < npart; j++) { + if (s3[i][j] != 0.0) + break; + } + s3ind[i][0] = j; + + for (j = npart - 1; j > 0; j--) { + if (s3[i][j] != 0.0) + break; + } + s3ind[i][1] = j; + numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1); + } + *p = malloc(sizeof(FLOAT)*numberOfNoneZero); + if (!*p) + return -1; + + k = 0; + for (i = 0; i < npart; i++) + for (j = s3ind[i][0]; j <= s3ind[i][1]; j++) + (*p)[k++] = s3[i][j]; + + return 0; +} + +int psymodel_init(lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int i,j,b,sb,k; + + FLOAT bval[CBANDS]; + FLOAT bval_width[CBANDS]; + FLOAT norm[CBANDS]; + FLOAT sfreq = gfp->out_samplerate; + + gfc->ms_ener_ratio_old=.25; + gfc->blocktype_old[0] = gfc->blocktype_old[1] = NORM_TYPE; /* the vbr header is long blocks*/ + + for (i=0; i<4; ++i) { + for (j=0; j<CBANDS; ++j) { + gfc->nb_1[i][j]=1e20; + gfc->nb_2[i][j]=1e20; + gfc->nb_s1[i][j] = gfc->nb_s2[i][j] = 1.0; + } + for ( sb = 0; sb < SBMAX_l; sb++ ) { + gfc->en[i].l[sb] = 1e20; + gfc->thm[i].l[sb] = 1e20; + } + for (j=0; j<3; ++j) { + for ( sb = 0; sb < SBMAX_s; sb++ ) { + gfc->en[i].s[sb][j] = 1e20; + gfc->thm[i].s[sb][j] = 1e20; + } + gfc->nsPsy.last_attacks[i] = 0; + } + for(j=0;j<9;j++) + gfc->nsPsy.last_en_subshort[i][j] = 10.; + } + + + + j = gfc->PSY->cwlimit/(sfreq/BLKSIZE); + if (j > HBLKSIZE-4) /* j+3 < HBLKSIZE-1 */ + j = HBLKSIZE-4; + if (j < CW_LOWER_INDEX) + j = CW_LOWER_INDEX; + gfc->cw_upper_index = j; + + for (j = 0; j < HBLKSIZE; j++) + gfc->cw[j] = 0.4f; + + /* init. for loudness approx. -jd 2001 mar 27*/ + gfc->loudness_sq_save[0] = gfc->loudness_sq_save[1] = 0.0; + + + + + /************************************************************************* + * now compute the psychoacoustic model specific constants + ************************************************************************/ + /* compute numlines, bo, bm, bval, bval_width, mld */ + gfc->npart_l + = init_numline(gfc->numlines_l, gfc->bo_l, gfc->bm_l, + bval, bval_width, gfc->mld_l, + sfreq, BLKSIZE, + gfc->scalefac_band.l, BLKSIZE/(2.0*576), SBMAX_l); + assert(gfc->npart_l <= CBANDS); + /* compute the spreading function */ + for(i=0;i<gfc->npart_l;i++) { + norm[i]=1.0; + gfc->rnumlines_l[i] = 1.0 / gfc->numlines_l[i]; + } + i = init_s3_values(gfc, &gfc->s3_ll, gfc->s3ind, + gfc->npart_l, bval, bval_width, norm); + if (i) + return i; + + /* compute long block specific values, ATH and MINVAL */ + j = 0; + for ( i = 0; i < gfc->npart_l; i++ ) { + double x; + + /* ATH */ + x = FLOAT_MAX; + for (k=0; k < gfc->numlines_l[i]; k++, j++) { + FLOAT freq = sfreq*j/(1000.0*BLKSIZE); + FLOAT level; + /* freq = Min(.1,freq);*/ /* ATH below 100 Hz constant, not further climbing */ + level = ATHformula (freq*1000, gfp) - 20; /* scale to FFT units; returned value is in dB */ + level = pow ( 10., 0.1*level ); /* convert from dB -> energy */ + level *= gfc->numlines_l [i]; + if (x > level) + x = level; + } + gfc->ATH->cb[i] = x; + + /* MINVAL. + For low freq, the strength of the masking is limited by minval + this is an ISO MPEG1 thing, dont know if it is really needed */ + x = (-20+bval[i]*20.0/10.0); + if (bval[i]>10) x = 0; + gfc->minval[i]=pow(10.0,x/10); + gfc->PSY->prvTonRed[i] = gfc->minval[i]; + } + + + /************************************************************************ + * do the same things for short blocks + ************************************************************************/ + gfc->npart_s + = init_numline(gfc->numlines_s, gfc->bo_s, gfc->bm_s, + bval, bval_width, gfc->mld_s, + sfreq, BLKSIZE_s, + gfc->scalefac_band.s, BLKSIZE_s/(2.0*192), SBMAX_s); + assert(gfc->npart_s <= CBANDS); + + /* SNR formula. short block is normalized by SNR. is it still right ? */ + for(i=0;i<gfc->npart_s;i++) { + double snr=-8.25; + if (bval[i]>=13) + snr = -4.5 * (bval[i]-13)/(24.0-13.0) + -8.25*(bval[i]-24)/(13.0-24.0); + + norm[i]=pow(10.0,snr/10.0); + } + i = init_s3_values(gfc, &gfc->s3_ss, gfc->s3ind_s, + gfc->npart_s, bval, bval_width, norm); + if (i) + return i; + + + init_mask_add_max_values(); + init_fft(gfc); + + /* setup temporal masking */ + gfc->decay = exp(-1.0*LOG10/(temporalmask_sustain_sec*sfreq/192.0)); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + FLOAT msfix; + msfix = NS_MSFIX; + if (gfp->exp_nspsytune & 2) msfix = 1.0; + if (gfp->msfix != 0.0) msfix = gfp->msfix; + gfp->msfix = msfix; + + /* spread only from npart_l bands. Normally, we use the spreading + * function to convolve from npart_l down to npart_l bands + */ + for (b=0;b<gfc->npart_l;b++) + if (gfc->s3ind[b][1] > gfc->npart_l-1) + gfc->s3ind[b][1] = gfc->npart_l-1; + } + + /* prepare for ATH auto adjustment: + * we want to decrease the ATH by 12 dB per second + */ +#define frame_duration (576. * gfc->mode_gr / sfreq) + gfc->ATH->decay = pow(10., -12./10. * frame_duration); + gfc->ATH->adjust = 0.01; /* minimum, for leading low loudness */ + gfc->ATH->adjust_limit = 1.0; /* on lead, allow adjust up to maximum */ +#undef frame_duration + + gfc->bo_s[SBMAX_s-1]--; + assert(gfc->bo_l[SBMAX_l-1] <= gfc->npart_l); + assert(gfc->bo_s[SBMAX_s-1] <= gfc->npart_s); + + if (gfp->ATHtype != -1) { + /* compute equal loudness weights (eql_w) */ + FLOAT freq; + FLOAT freq_inc = gfp->out_samplerate / (BLKSIZE); + FLOAT eql_balance = 0.0; + freq = 0.0; + for( i = 0; i < BLKSIZE/2; ++i ) { + /* convert ATH dB to relative power (not dB) */ + /* to determine eql_w */ + freq += freq_inc; + gfc->ATH->eql_w[i] = 1. / pow( 10, ATHformula( freq, gfp ) / 10 ); + eql_balance += gfc->ATH->eql_w[i]; + } + eql_balance = 1.0 / eql_balance; + for( i = BLKSIZE/2; --i >= 0; ) { /* scale weights */ + gfc->ATH->eql_w[i] *= eql_balance; + } + } + + return 0; +} + diff --git a/lame-3.97/libmp3lame/.svn/text-base/psymodel.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/psymodel.h.svn-base new file mode 100644 index 0000000..871c126 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/psymodel.h.svn-base @@ -0,0 +1,87 @@ +/* + * psymodel.h + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_PSYMODEL_H +#define LAME_PSYMODEL_H + +#include "l3side.h" + +int L3psycho_anal( lame_global_flags *gfc, + const sample_t *buffer[2], int gr, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio ratio[2][2], + III_psy_ratio MS_ratio[2][2], + FLOAT pe[2], FLOAT pe_MS[2], FLOAT ener[2], + int blocktype_d[2]); + +int L3psycho_anal_ns( lame_global_flags *gfc, + const sample_t *buffer[2], int gr, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio ratio[2][2], + III_psy_ratio MS_ratio[2][2], + FLOAT pe[2], FLOAT pe_MS[2], FLOAT ener[2], + int blocktype_d[2]); + + +int psymodel_init(lame_global_flags *gfp); + + +#define rpelev 2 +#define rpelev2 16 +#define rpelev_s 2 +#define rpelev2_s 16 + +/* size of each partition band, in barks: */ +#define DELBARK .34 +#define CW_LOWER_INDEX 6 + + +#if 1 + /* AAC values, results in more masking over MP3 values */ +# define TMN 18 +# define NMT 6 +#else + /* MP3 values */ +# define TMN 29 +# define NMT 6 +#endif + +/* ISO values */ +#define CONV1 (-.299) +#define CONV2 (-.43) + +/* tuned for output level (sensitive to energy scale) */ +#define VO_SCALE (1./( 14752*14752 )/(BLKSIZE/2)) + +#define temporalmask_sustain_sec 0.01 + +#define NS_PREECHO_ATT0 0.8 +#define NS_PREECHO_ATT1 0.6 +#define NS_PREECHO_ATT2 0.3 + +#define NS_MSFIX 3.5 +#define NSATTACKTHRE 4.4 +#define NSATTACKTHRE_S 25 + +#endif /* LAME_PSYMODEL_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/quantize.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/quantize.c.svn-base new file mode 100644 index 0000000..84d272a --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/quantize.c.svn-base @@ -0,0 +1,2180 @@ +/* + * MP3 quantization + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 1999-2003 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2001-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: quantize.c,v 1.170.2.2 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <math.h> +#include <assert.h> +#include <stdlib.h> +#include "bitstream.h" +#include "l3side.h" +#include "quantize.h" +#include "reservoir.h" +#include "quantize_pvt.h" +#include "lame-analysis.h" +#include "vbrquantize.h" +#include "machine.h" +#include "util.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* Robert Hegemann - 2002-10-24 + * sparsing of mid side channels + * 2DO: replace mld by something with finer resolution + */ +static void +ms_sparsing(lame_internal_flags* gfc, int gr) +{ + int sfb, m, k, i, j = 0; + int width; + FLOAT treshold = 0; + + if ( gfc->sparsing == 0 ) return; + m = gfc->l3_side.tt[gr][0].sfb_lmax; + for ( sfb = 0; sfb < m; ++sfb ) { + width = gfc->scalefac_band.l[sfb+1] - gfc->scalefac_band.l[sfb]; + treshold = pow( 10, -(gfc->sparseA-gfc->mld_l[sfb]*gfc->sparseB)/10.); + for ( i = 0; i < width; i += 2, j += 2 ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+1; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+1; + FLOAT m02 = *m0 * *m0; + FLOAT m12 = *m1 * *m1; + FLOAT s02 = *s0 * *s0; + FLOAT s12 = *s1 * *s1; + FLOAT u0 = m02*treshold; + FLOAT u1 = m12*treshold; + FLOAT v0 = s02*treshold; + FLOAT v1 = s12*treshold; + if ( s02 < u0 && s12 < u1 ) { + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + if ( m02 < v0 && m12 < v1 ) { + *s0 += *m0; *m0 = 0; + *s1 += *m1; *m1 = 0; + } + } + } + for ( sfb = gfc->l3_side.tt[gr][0].sfb_smin; sfb < SBPSY_s; ++sfb ) { + width = gfc->scalefac_band.s[sfb+1] - gfc->scalefac_band.s[sfb]; + treshold = pow( 10, -(gfc->sparseA-gfc->mld_s[sfb]*gfc->sparseB)/10.); + for ( i = 0; i < width; i += 2, j += 6 ) + for ( k = 0; k < 3; ++k ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j+k; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+k+3; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j+k; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+k+3; + FLOAT m02 = *m0 * *m0; + FLOAT m12 = *m1 * *m1; + FLOAT s02 = *s0 * *s0; + FLOAT s12 = *s1 * *s1; + FLOAT u0 = m02*treshold; + FLOAT u1 = m12*treshold; + FLOAT v0 = s02*treshold; + FLOAT v1 = s12*treshold; + if ( s02 < u0 && s12 < u1 ) { + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + if ( m02 < v0 && m12 < v1 ) { + *s0 += *m0; *m0 = 0; + *s1 += *m1; *m1 = 0; + } + } + } + m = ( sfb == SBPSY_s ) ? 3 : 1; + if ( gfc->sparsing == 2 ) { + for ( ; j < 575; j += 2*m ) + for ( i = 0; i < m; ++i ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j+i; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+i+m; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j+i; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+i+m; + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + } + else { + for ( ; j < 575; j += 2*m ) + for ( i = 0; i < m; ++i ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j+i; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+i+m; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j+i; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+i+m; + FLOAT m02 = *m0 * *m0; + FLOAT m12 = *m1 * *m1; + FLOAT s02 = *s0 * *s0; + FLOAT s12 = *s1 * *s1; + FLOAT u0 = m02*treshold; + FLOAT u1 = m12*treshold; + FLOAT v0 = s02*treshold; + FLOAT v1 = s12*treshold; + if ( s02 < u0 && s12 < u1 ) { + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + if ( m02 < v0 && m12 < v1 ) { + *s0 += *m0; *m0 = 0; + *s1 += *m1; *m1 = 0; + } + } + } +} + + +/* convert from L/R <-> Mid/Side */ +static void +ms_convert(III_side_info_t *l3_side, int gr) +{ + int i; + for (i = 0; i < 576; ++i) { + FLOAT l, r; + l = l3_side->tt[gr][0].xr[i]; + r = l3_side->tt[gr][1].xr[i]; + l3_side->tt[gr][0].xr[i] = (l+r) * (FLOAT)(SQRT2*0.5); + l3_side->tt[gr][1].xr[i] = (l-r) * (FLOAT)(SQRT2*0.5); + } +} + +/************************************************************************ + * + * init_outer_loop() + * mt 6/99 + * + * initializes cod_info, scalefac and xrpow + * + * returns 0 if all energies in xr are zero, else 1 + * + ************************************************************************/ + + +void init_xrpow_core_c(gr_info *const cod_info, + FLOAT xrpow[576], + int upper, + FLOAT* sum) +{ + int i; + FLOAT tmp; + *sum = 0; + for (i = 0; i <= upper; ++i) { + tmp = fabs (cod_info->xr[i]); + *sum += tmp; + xrpow[i] = sqrt (tmp * sqrt(tmp)); + + if (xrpow[i] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[i]; + } +} + + +#ifdef HAVE_XMMINTRIN_H + +#include <xmmintrin.h> + +typedef union { + __m128 _m128; + float _float[4]; +} vecfloat_union; + + + +void init_xrpow_core_sse(gr_info *const cod_info, + FLOAT xrpow[576], + int upper, + FLOAT* sum) +{ + int i; + FLOAT tmp; + int upper4 = (upper/4)*4; + + + const int fabs_mask[4] = {0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF}; + const __m128 vec_fabs_mask = _mm_loadu_ps((float *) fabs_mask); + vecfloat_union vec_xrpow_max; + vecfloat_union vec_sum; + + _mm_prefetch((char*)cod_info->xr, _MM_HINT_T0); + _mm_prefetch((char*)xrpow, _MM_HINT_T0); + + vec_xrpow_max._m128 = _mm_set_ps1(0); + vec_sum._m128 = _mm_set_ps1(0); + + for (i = 0; i < upper4; i+=4) { + __m128 vec_tmp; + + vec_tmp = _mm_loadu_ps(&(cod_info->xr[i])); //load + vec_tmp = _mm_and_ps(vec_tmp, vec_fabs_mask); //fabs + + vec_sum._m128 = _mm_add_ps(vec_sum._m128, vec_tmp); + + vec_tmp = _mm_sqrt_ps(_mm_mul_ps(vec_tmp, _mm_sqrt_ps(vec_tmp))); + + _mm_storeu_ps(&(xrpow[i]), vec_tmp); //store into xrpow[] + + vec_xrpow_max._m128 = _mm_max_ps(vec_xrpow_max._m128, vec_tmp); //retrieve max + } + + *sum = vec_sum._float[0] + vec_sum._float[1] + vec_sum._float[2] + vec_sum._float[3]; + cod_info->xrpow_max = Max(vec_xrpow_max._float[0], + Max(vec_xrpow_max._float[1], + Max(vec_xrpow_max._float[2], vec_xrpow_max._float[3]))); + + + + for (i = upper4; i <= upper; ++i) { + tmp = fabs (cod_info->xr[i]); + *sum += tmp; + xrpow[i] = sqrt (tmp * sqrt(tmp)); + + if (xrpow[i] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[i]; + } +} + + +#endif + + + + + +void init_xrpow_core_init(lame_internal_flags * const gfc) +{ + gfc->init_xrpow_core = init_xrpow_core_c; + +#ifdef HAVE_XMMINTRIN_H + if (gfc->CPU_features.SSE) + gfc->init_xrpow_core = init_xrpow_core_sse; +#endif +} + + + +static int +init_xrpow( + lame_internal_flags *gfc, + gr_info *const cod_info, + FLOAT xrpow[576] ) +{ + FLOAT sum = 0; + int i; + int upper = cod_info->max_nonzero_coeff; + + assert( xrpow != NULL ); + cod_info->xrpow_max = 0; + + /* check if there is some energy we have to quantize + * and calculate xrpow matching our fresh scalefactors + */ + memset(&(xrpow[upper]), 0, (575-upper)*sizeof(xrpow[upper])); + + + gfc->init_xrpow_core(cod_info, xrpow, upper, &sum); + + /* return 1 if we have something to quantize, else 0 + */ + if (sum > (FLOAT)1E-20) { + int j = 0; + if (gfc->substep_shaping & 2) + j = 1; + + for (i = 0; i < cod_info->psymax; i++) + gfc->pseudohalf[i] = j; + + return 1; + } + + memset(&cod_info->l3_enc, 0, sizeof(int)*576); + return 0; +} + + + + + +extern FLOAT athAdjust( FLOAT a, FLOAT x, FLOAT athFloor ); + + + +/* +Gabriel Bouvigne feb/apr 2003 +Analog silence detection in partitionned sfb21 +or sfb12 for short blocks + +From top to bottom of sfb, changes to 0 +coeffs which are below ath. It stops on the first +coeff higher than ath. +*/ +void psfb21_analogsilence( + lame_global_flags *gfp, + lame_internal_flags *gfc, + gr_info *const cod_info + ) +{ + ATH_t * ATH = gfc->ATH; + FLOAT *xr = cod_info->xr; + + if (cod_info->block_type == NORM_TYPE) { + int gsfb; + int stop=0; + for (gsfb = PSFB21-1; gsfb>=0 && !stop; gsfb--) { + int start = gfc->scalefac_band.psfb21[ gsfb ]; + int end = gfc->scalefac_band.psfb21[ gsfb+1 ]; + int j; + FLOAT ath21; + ath21 = athAdjust(ATH->adjust, ATH->psfb21[gsfb], ATH->floor); + + if (gfc->nsPsy.longfact[21] != 0) + ath21 *= gfc->nsPsy.longfact[21]; + + for (j = end-1; j>=start; j--) { + if ( fabs(xr[j]) < ath21) + xr[j] = 0; + else { + stop = 1; + break; + } + } + } + } else if (cod_info->block_type == SHORT_TYPE) { + /*note: short blocks coeffs are reordered*/ + int block; + for (block = 0; block<3; block++) { + + int gsfb; + int stop=0; + for (gsfb = PSFB12-1; gsfb>=0 && !stop; gsfb--) { + int start = gfc->scalefac_band.s[12] * 3 + + (gfc->scalefac_band.s[13] - gfc->scalefac_band.s[12]) * block + + (gfc->scalefac_band.psfb12[gsfb] - gfc->scalefac_band.psfb12[0]); + int end = start + (gfc->scalefac_band.psfb12[gsfb+1] - gfc->scalefac_band.psfb12[gsfb]); + int j; + FLOAT ath12; + ath12 = athAdjust(ATH->adjust, ATH->psfb12[gsfb], ATH->floor); + + if (gfc->nsPsy.shortfact[12] != 0) + ath12 *= gfc->nsPsy.shortfact[12]; + + for (j = end-1; j>=start; j--) { + if ( fabs(xr[j]) < ath12) + xr[j] = 0; + else { + stop = 1; + break; + } + } + } + } + } + +} + + + + + +static void +init_outer_loop( + lame_global_flags *gfp, + lame_internal_flags *gfc, + gr_info *const cod_info) +{ + int sfb, j; + /* initialize fresh cod_info + */ + cod_info->part2_3_length = 0; + cod_info->big_values = 0; + cod_info->count1 = 0; + cod_info->global_gain = 210; + cod_info->scalefac_compress = 0; + /* mixed_block_flag, block_type was set in psymodel.c */ + cod_info->table_select [0] = 0; + cod_info->table_select [1] = 0; + cod_info->table_select [2] = 0; + cod_info->subblock_gain[0] = 0; + cod_info->subblock_gain[1] = 0; + cod_info->subblock_gain[2] = 0; + cod_info->subblock_gain[3] = 0; /* this one is always 0 */ + cod_info->region0_count = 0; + cod_info->region1_count = 0; + cod_info->preflag = 0; + cod_info->scalefac_scale = 0; + cod_info->count1table_select = 0; + cod_info->part2_length = 0; + cod_info->sfb_lmax = SBPSY_l; + cod_info->sfb_smin = SBPSY_s; + cod_info->psy_lmax = gfc->sfb21_extra ? SBMAX_l : SBPSY_l; + cod_info->psymax = cod_info->psy_lmax; + cod_info->sfbmax = cod_info->sfb_lmax; + cod_info->sfbdivide = 11; + for (sfb = 0; sfb < SBMAX_l; sfb++) { + cod_info->width[sfb] + = gfc->scalefac_band.l[sfb+1] - gfc->scalefac_band.l[sfb]; + cod_info->window[sfb] = 3; /* which is always 0. */ + } + if (cod_info->block_type == SHORT_TYPE) { + FLOAT ixwork[576]; + FLOAT *ix; + + cod_info->sfb_smin = 0; + cod_info->sfb_lmax = 0; + if (cod_info->mixed_block_flag) { + /* + * MPEG-1: sfbs 0-7 long block, 3-12 short blocks + * MPEG-2(.5): sfbs 0-5 long block, 3-12 short blocks + */ + cod_info->sfb_smin = 3; + cod_info->sfb_lmax = gfc->mode_gr*2 + 4; + } + cod_info->psymax + = cod_info->sfb_lmax + + 3*((gfc->sfb21_extra ? SBMAX_s : SBPSY_s) - cod_info->sfb_smin); + cod_info->sfbmax + = cod_info->sfb_lmax + 3*(SBPSY_s - cod_info->sfb_smin); + cod_info->sfbdivide = cod_info->sfbmax - 18; + cod_info->psy_lmax = cod_info->sfb_lmax; + /* re-order the short blocks, for more efficient encoding below */ + /* By Takehiro TOMINAGA */ + /* + Within each scalefactor band, data is given for successive + time windows, beginning with window 0 and ending with window 2. + Within each window, the quantized values are then arranged in + order of increasing frequency... + */ + ix = &cod_info->xr[gfc->scalefac_band.l[cod_info->sfb_lmax]]; + memcpy(ixwork, cod_info->xr, 576*sizeof(FLOAT)); + for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++) { + int start = gfc->scalefac_band.s[sfb]; + int end = gfc->scalefac_band.s[sfb + 1]; + int window, l; + for (window = 0; window < 3; window++) { + for (l = start; l < end; l++) { + *ix++ = ixwork[3*l+window]; + } + } + } + + j = cod_info->sfb_lmax; + for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++) { + cod_info->width[j] = cod_info->width[j+1] = cod_info->width[j + 2] + = gfc->scalefac_band.s[sfb+1] - gfc->scalefac_band.s[sfb]; + cod_info->window[j ] = 0; + cod_info->window[j+1] = 1; + cod_info->window[j+2] = 2; + j += 3; + } + } + + cod_info->count1bits = 0; + cod_info->sfb_partition_table = nr_of_sfb_block[0][0]; + cod_info->slen[0] = 0; + cod_info->slen[1] = 0; + cod_info->slen[2] = 0; + cod_info->slen[3] = 0; + + cod_info->max_nonzero_coeff = 575; + + /* fresh scalefactors are all zero + */ + memset(cod_info->scalefac, 0, sizeof(cod_info->scalefac)); + + psfb21_analogsilence(gfp, gfc, cod_info); +} + + + +/************************************************************************ + * + * bin_search_StepSize() + * + * author/date?? + * + * binary step size search + * used by outer_loop to get a quantizer step size to start with + * + ************************************************************************/ + +typedef enum { + BINSEARCH_NONE, + BINSEARCH_UP, + BINSEARCH_DOWN +} binsearchDirection_t; + +int +bin_search_StepSize( + lame_internal_flags * const gfc, + gr_info * const cod_info, + int desired_rate, + const int ch, + const FLOAT xrpow [576] ) +{ + int nBits; + int CurrentStep = gfc->CurrentStep[ch]; + int flag_GoneOver = 0; + int start = gfc->OldValue[ch]; + binsearchDirection_t Direction = BINSEARCH_NONE; + cod_info->global_gain = start; + desired_rate -= cod_info->part2_length; + + assert(CurrentStep); + do { + int step; + nBits = count_bits(gfc, xrpow, cod_info, 0); + + if (CurrentStep == 1 || nBits == desired_rate) + break; /* nothing to adjust anymore */ + + if (nBits > desired_rate) { + /* increase Quantize_StepSize */ + if (Direction == BINSEARCH_DOWN) + flag_GoneOver = 1; + + if (flag_GoneOver) CurrentStep /= 2; + Direction = BINSEARCH_UP; + step = CurrentStep; + } else { + /* decrease Quantize_StepSize */ + if (Direction == BINSEARCH_UP) + flag_GoneOver = 1; + + if (flag_GoneOver) CurrentStep /= 2; + Direction = BINSEARCH_DOWN; + step = -CurrentStep; + } + cod_info->global_gain += step; + } while (cod_info->global_gain < 256u); + + if (cod_info->global_gain < 0) { + cod_info->global_gain = 0; + nBits = count_bits(gfc, xrpow, cod_info, 0); + } else if (cod_info->global_gain > 255) { + cod_info->global_gain = 255; + nBits = count_bits(gfc, xrpow, cod_info, 0); + } else if (nBits > desired_rate) { + cod_info->global_gain++; + nBits = count_bits(gfc, xrpow, cod_info, 0); + } + gfc->CurrentStep[ch] = (start - cod_info->global_gain >= 4) ? 4 : 2; + gfc->OldValue[ch] = cod_info->global_gain; + cod_info->part2_3_length = nBits; + return nBits; +} + + + + +/************************************************************************ + * + * trancate_smallspectrums() + * + * Takehiro TOMINAGA 2002-07-21 + * + * trancate smaller nubmers into 0 as long as the noise threshold is allowed. + * + ************************************************************************/ +static int +floatcompare(const void * v1, const void * v2) +{ + const FLOAT *a = v1, *b = v2; + if (*a > *b) return 1; + if (*a == *b) return 0; + return -1; +} + +void +trancate_smallspectrums( + lame_internal_flags *gfc, + gr_info * const gi, + const FLOAT * const l3_xmin, + FLOAT * work + ) +{ + int sfb, j, width; + FLOAT distort[SFBMAX]; + calc_noise_result dummy; + + if ((!(gfc->substep_shaping & 4) && gi->block_type == SHORT_TYPE) + || gfc->substep_shaping & 0x80) + return; + calc_noise (gfc, gi, l3_xmin, distort, &dummy, 0); + for (j = 0; j < 576; j++) { + FLOAT xr = 0.0; + if (gi->l3_enc[j] != 0) + xr = fabs(gi->xr[j]); + work[j] = xr; + } + + j = 0; + sfb = 8; + if (gi->block_type == SHORT_TYPE) + sfb = 6; + do { + FLOAT allowedNoise, trancateThreshold; + int nsame, start; + + width = gi->width[sfb]; + j += width; + if (distort[sfb] >= 1.0) + continue; + + qsort(&work[j-width], width, sizeof(FLOAT), floatcompare); + if (work[j - 1] == 0.0) + continue; /* all zero sfb */ + + allowedNoise = (1.0 - distort[sfb]) * l3_xmin[sfb]; + trancateThreshold = 0.0; + start = 0; + do { + FLOAT noise; + for (nsame = 1; start + nsame < width; nsame++) + if (work[start + j-width] != work[start+j+nsame-width]) + break; + + noise = work[start+j-width] * work[start+j-width] * nsame; + if (allowedNoise < noise) { + if (start != 0) + trancateThreshold = work[start+j-width - 1]; + break; + } + allowedNoise -= noise; + start += nsame; + } while (start < width); + if (trancateThreshold == 0.0) + continue; + +/* printf("%e %e %e\n", */ +/* trancateThreshold/l3_xmin[sfb], */ +/* trancateThreshold/(l3_xmin[sfb]*start), */ +/* trancateThreshold/(l3_xmin[sfb]*(start+width)) */ +/* ); */ +/* if (trancateThreshold > 1000*l3_xmin[sfb]*start) */ +/* trancateThreshold = 1000*l3_xmin[sfb]*start; */ + + do { + if (fabs(gi->xr[j - width]) <= trancateThreshold) + gi->l3_enc[j - width] = 0; + } while (--width > 0); + } while (++sfb < gi->psymax); + + gi->part2_3_length = noquant_count_bits(gfc, gi, 0); +} + + +/************************************************************************* + * + * loop_break() + * + * author/date?? + * + * Function: Returns zero if there is a scalefac which has not been + * amplified. Otherwise it returns one. + * + *************************************************************************/ + +inline +static int +loop_break( + const gr_info * const cod_info) +{ + int sfb; + + for (sfb = 0; sfb < cod_info->sfbmax; sfb++) + if (cod_info->scalefac[sfb] + + cod_info->subblock_gain[cod_info->window[sfb]] == 0) + return 0; + + return 1; +} + + + + +/* mt 5/99: Function: Improved calc_noise for a single channel */ + +/************************************************************************* + * + * quant_compare() + * + * author/date?? + * + * several different codes to decide which quantization is better + * + *************************************************************************/ + +static double penalties ( double noise ) +{ + return FAST_LOG10( 0.368 + 0.632 * noise * noise * noise ); +} + +static double get_klemm_noise( + const FLOAT * distort, + const gr_info * const gi + ) +{ + int sfb; + double klemm_noise = 1E-37; + for (sfb = 0; sfb < gi->psymax; sfb++) + klemm_noise += penalties(distort[sfb]); + + return Max(1e-20, klemm_noise); +} + +inline +static int +quant_compare( + const int quant_comp, + lame_internal_flags * const gfc, + const calc_noise_result * const best, + calc_noise_result * const calc, + const gr_info * const gi, + const FLOAT * distort + ) +{ + /* + noise is given in decibels (dB) relative to masking thesholds. + + over_noise: ??? (the previous comment is fully wrong) + tot_noise: ??? (the previous comment is fully wrong) + max_noise: max quantization noise + + */ + int better; + + switch (quant_comp) { + default: + case 9: { + if (best->over_count > 0 ) { + /* there are distorted sfb*/ + better = calc->over_SSD <= best->over_SSD; + if (calc->over_SSD == best->over_SSD) + better = calc->bits < best->bits; + } else { + /* no distorted sfb*/ + better = ((calc->max_noise < 0) && + ((calc->max_noise*10 + calc->bits) <= (best->max_noise*10 + best->bits))); + } + break; + } + + case 0: + better = calc->over_count < best->over_count + || ( calc->over_count == best->over_count && + calc->over_noise < best->over_noise ) + || ( calc->over_count == best->over_count && + calc->over_noise == best->over_noise && + calc->tot_noise < best->tot_noise ); + break; + + case 8: + calc->max_noise = get_klemm_noise(distort, gi); + /* pass through */ + case 1: + better = calc->max_noise < best->max_noise; + break; + case 2: + better = calc->tot_noise < best->tot_noise; + break; + case 3: + better = (calc->tot_noise < best->tot_noise) + && (calc->max_noise < best->max_noise); + break; + case 4: + better = ( calc->max_noise <= 0.0 && + best->max_noise > 0.2 ) + || ( calc->max_noise <= 0.0 && + best->max_noise < 0.0 && + best->max_noise > calc->max_noise-0.2 && + calc->tot_noise < best->tot_noise ) + || ( calc->max_noise <= 0.0 && + best->max_noise > 0.0 && + best->max_noise > calc->max_noise-0.2 && + calc->tot_noise < best->tot_noise+best->over_noise ) + || ( calc->max_noise > 0.0 && + best->max_noise > -0.05 && + best->max_noise > calc->max_noise-0.1 && + calc->tot_noise+calc->over_noise < best->tot_noise+best->over_noise ) + || ( calc->max_noise > 0.0 && + best->max_noise > -0.1 && + best->max_noise > calc->max_noise-0.15 && + calc->tot_noise+calc->over_noise+calc->over_noise < best->tot_noise+best->over_noise+best->over_noise ); + break; + case 5: + better = calc->over_noise < best->over_noise + || ( calc->over_noise == best->over_noise && + calc->tot_noise < best->tot_noise ); + break; + case 6: + better = calc->over_noise < best->over_noise + || ( calc->over_noise == best->over_noise && + ( calc->max_noise < best->max_noise + || ( calc->max_noise == best->max_noise && + calc->tot_noise <= best->tot_noise ) + )); + break; + case 7: + better = calc->over_count < best->over_count + || calc->over_noise < best->over_noise; + break; + } + + + if (best->over_count == 0) { + /* + If no distorted bands, only use this quantization + if it is better, and if it uses less bits. + Unfortunately, part2_3_length is sometimes a poor + estimator of the final size at low bitrates. + */ + better = better && + calc->bits < best->bits; + } + + + return better; +} + + + +/************************************************************************* + * + * amp_scalefac_bands() + * + * author/date?? + * + * Amplify the scalefactor bands that violate the masking threshold. + * See ISO 11172-3 Section C.1.5.4.3.5 + * + * distort[] = noise/masking + * distort[] > 1 ==> noise is not masked + * distort[] < 1 ==> noise is masked + * max_dist = maximum value of distort[] + * + * Three algorithms: + * noise_shaping_amp + * 0 Amplify all bands with distort[]>1. + * + * 1 Amplify all bands with distort[] >= max_dist^(.5); + * ( 50% in the db scale) + * + * 2 Amplify first band with distort[] >= max_dist; + * + * + * For algorithms 0 and 1, if max_dist < 1, then amplify all bands + * with distort[] >= .95*max_dist. This is to make sure we always + * amplify at least one band. + * + * + *************************************************************************/ +static void +amp_scalefac_bands( + lame_global_flags *gfp, + gr_info *const cod_info, + FLOAT *distort, + FLOAT xrpow[576], + int bRefine) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int j, sfb; + FLOAT ifqstep34, trigger; + int noise_shaping_amp; + + if (cod_info->scalefac_scale == 0) { + ifqstep34 = 1.29683955465100964055; /* 2**(.75*.5)*/ + } else { + ifqstep34 = 1.68179283050742922612; /* 2**(.75*1) */ + } + + /* compute maximum value of distort[] */ + trigger = 0; + for (sfb = 0; sfb < cod_info->sfbmax; sfb++) { + if (trigger < distort[sfb]) + trigger = distort[sfb]; + } + + noise_shaping_amp = gfc->noise_shaping_amp; + if (noise_shaping_amp == 3) { + if (bRefine == 1) + noise_shaping_amp = 2; + else + noise_shaping_amp = 1; + } + switch (noise_shaping_amp) { + case 2: + /* amplify exactly 1 band */ + break; + + case 1: + /* amplify bands within 50% of max (on db scale) */ + if (trigger>1.0) + trigger = pow(trigger, .5); + else + trigger *= .95; + break; + + case 0: + default: + /* ISO algorithm. amplify all bands with distort>1 */ + if (trigger>1.0) + trigger=1.0; + else + trigger *= .95; + break; + } + + j = 0; + for (sfb = 0; sfb < cod_info->sfbmax; sfb++ ) { + int width = cod_info->width[sfb]; + int l; + j += width; + if (distort[sfb] < trigger) + continue; + + if (gfc->substep_shaping & 2) { + gfc->pseudohalf[sfb] = !gfc->pseudohalf[sfb]; + if (!gfc->pseudohalf[sfb] && gfc->noise_shaping_amp==2) + return; + } + cod_info->scalefac[sfb]++; + for (l = -width; l < 0; l++) { + xrpow[j+l] *= ifqstep34; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + + if (gfc->noise_shaping_amp==2) + return; + } +} + +/************************************************************************* + * + * inc_scalefac_scale() + * + * Takehiro Tominaga 2000-xx-xx + * + * turns on scalefac scale and adjusts scalefactors + * + *************************************************************************/ + +static void +inc_scalefac_scale ( + gr_info * const cod_info, + FLOAT xrpow[576] ) +{ + int l, j, sfb; + const FLOAT ifqstep34 = 1.29683955465100964055; + + j = 0; + for (sfb = 0; sfb < cod_info->sfbmax; sfb++) { + int width = cod_info->width[sfb]; + int s = cod_info->scalefac[sfb]; + if (cod_info->preflag) + s += pretab[sfb]; + j += width; + if (s & 1) { + s++; + for (l = -width; l < 0; l++) { + xrpow[j+l] *= ifqstep34; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + } + cod_info->scalefac[sfb] = s >> 1; + } + cod_info->preflag = 0; + cod_info->scalefac_scale = 1; +} + + + +/************************************************************************* + * + * inc_subblock_gain() + * + * Takehiro Tominaga 2000-xx-xx + * + * increases the subblock gain and adjusts scalefactors + * + *************************************************************************/ + +static int +inc_subblock_gain ( + const lame_internal_flags * const gfc, + gr_info * const cod_info, + FLOAT xrpow[576] ) +{ + int sfb, window; + int * const scalefac = cod_info->scalefac; + + /* subbloc_gain can't do anything in the long block region */ + for (sfb = 0; sfb < cod_info->sfb_lmax; sfb++) { + if (scalefac[sfb] >= 16) + return 1; + } + + for (window = 0; window < 3; window++) { + int s1, s2, l, j; + s1 = s2 = 0; + + for (sfb = cod_info->sfb_lmax+window; + sfb < cod_info->sfbdivide; sfb += 3) { + if (s1 < scalefac[sfb]) + s1 = scalefac[sfb]; + } + for (; sfb < cod_info->sfbmax; sfb += 3) { + if (s2 < scalefac[sfb]) + s2 = scalefac[sfb]; + } + + if (s1 < 16 && s2 < 8) + continue; + + if (cod_info->subblock_gain[window] >= 7) + return 1; + + /* even though there is no scalefactor for sfb12 + * subblock gain affects upper frequencies too, that's why + * we have to go up to SBMAX_s + */ + cod_info->subblock_gain[window]++; + j = gfc->scalefac_band.l[cod_info->sfb_lmax]; + for (sfb = cod_info->sfb_lmax+window; + sfb < cod_info->sfbmax; sfb += 3) { + FLOAT amp; + int width = cod_info->width[sfb], s = scalefac[sfb]; + assert(s >= 0); + s = s - (4 >> cod_info->scalefac_scale); + if (s >= 0) { + scalefac[sfb] = s; + j += width*3; + continue; + } + + scalefac[sfb] = 0; + amp = IPOW20(210 + (s << (cod_info->scalefac_scale + 1))); + j += width * (window+1); + for (l = -width; l < 0; l++) { + xrpow[j+l] *= amp; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + j += width*(3 - window - 1); + } + + { + FLOAT amp = IPOW20(210 - 8); + j += cod_info->width[sfb] * (window+1); + for (l = -cod_info->width[sfb]; l < 0; l++) { + xrpow[j+l] *= amp; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + } + } + return 0; +} + + + +/******************************************************************** + * + * balance_noise() + * + * Takehiro Tominaga /date?? + * Robert Hegemann 2000-09-06: made a function of it + * + * amplifies scalefactor bands, + * - if all are already amplified returns 0 + * - if some bands are amplified too much: + * * try to increase scalefac_scale + * * if already scalefac_scale was set + * try on short blocks to increase subblock gain + * + ********************************************************************/ +inline +static int +balance_noise ( + lame_global_flags *const gfp, + gr_info * const cod_info, + FLOAT * distort, + FLOAT xrpow[576], + int bRefine) +{ + lame_internal_flags *const gfc = gfp->internal_flags; + int status; + + amp_scalefac_bands ( gfp, cod_info, distort, xrpow, bRefine); + + /* check to make sure we have not amplified too much + * loop_break returns 0 if there is an unamplified scalefac + * scale_bitcount returns 0 if no scalefactors are too large + */ + + status = loop_break (cod_info); + + if (status) + return 0; /* all bands amplified */ + + /* not all scalefactors have been amplified. so these + * scalefacs are possibly valid. encode them: + */ + if (gfc->mode_gr == 2) + status = scale_bitcount (cod_info); + else + status = scale_bitcount_lsf (gfc, cod_info); + + if (!status) + return 1; /* amplified some bands not exceeding limits */ + + /* some scalefactors are too large. + * lets try setting scalefac_scale=1 + */ + if (gfc->noise_shaping > 1) { + memset(&gfc->pseudohalf, 0, sizeof(gfc->pseudohalf)); + if (!cod_info->scalefac_scale) { + inc_scalefac_scale (cod_info, xrpow); + status = 0; + } else { + if (cod_info->block_type == SHORT_TYPE && gfc->subblock_gain > 0) { + status = inc_subblock_gain (gfc, cod_info, xrpow) + || loop_break (cod_info); + } + } + } + + if (!status) { + if (gfc->mode_gr == 2) + status = scale_bitcount (cod_info); + else + status = scale_bitcount_lsf (gfc, cod_info); + } + return !status; +} + + + +/************************************************************************ + * + * outer_loop () + * + * Function: The outer iteration loop controls the masking conditions + * of all scalefactorbands. It computes the best scalefac and + * global gain. This module calls the inner iteration loop + * + * mt 5/99 completely rewritten to allow for bit reservoir control, + * mid/side channels with L/R or mid/side masking thresholds, + * and chooses best quantization instead of last quantization when + * no distortion free quantization can be found. + * + * added VBR support mt 5/99 + * + * some code shuffle rh 9/00 + ************************************************************************/ + +static int +outer_loop ( + lame_global_flags *gfp, + gr_info * const cod_info, + const FLOAT * const l3_xmin, /* allowed distortion */ + FLOAT xrpow[576], /* coloured magnitudes of spectral */ + const int ch, + const int targ_bits ) /* maximum allowed bits */ +{ + lame_internal_flags *gfc=gfp->internal_flags; + gr_info cod_info_w; + FLOAT save_xrpow[576]; + FLOAT distort[SFBMAX]; + calc_noise_result best_noise_info; + int huff_bits; + int better; + int over; + int age; + calc_noise_data prev_noise; + int best_part2_3_length = 9999999; + int bEndOfSearch = 0; + int bRefine = 0; + int best_ggain_pass1 = 0; + + bin_search_StepSize (gfc, cod_info, targ_bits, ch, xrpow); + + if (!gfc->noise_shaping) + /* fast mode, no noise shaping, we are ready */ + return 100; /* default noise_info.over_count */ + + memset(&prev_noise, 0, sizeof(calc_noise_data)); + + + /* compute the distortion in this quantization */ + /* coefficients and thresholds both l/r (or both mid/side) */ + over = calc_noise (gfc, cod_info, l3_xmin, distort, &best_noise_info, &prev_noise); + best_noise_info.bits = cod_info->part2_3_length; + + cod_info_w = *cod_info; + age = 0; + /* if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh)*/ + memcpy(save_xrpow, xrpow, sizeof(FLOAT)*576); + + while (!bEndOfSearch) { + /* BEGIN MAIN LOOP */ + do { + calc_noise_result noise_info; + int search_limit; + int maxggain = 255; + + /* When quantization with no distorted bands is found, + * allow up to X new unsuccesful tries in serial. This + * gives us more possibilities for different quant_compare modes. + * Much more than 3 makes not a big difference, it is only slower. + */ + + if (gfc->substep_shaping & 2) { + search_limit = 20; + }else { + search_limit = 3; + } + + + + /* Check if the last scalefactor band is distorted. + * in VBR mode we can't get rid of the distortion, so quit now + * and VBR mode will try again with more bits. + * (makes a 10% speed increase, the files I tested were + * binary identical, 2000/05/20 Robert Hegemann) + * distort[] > 1 means noise > allowed noise + */ + if (gfc->sfb21_extra) { + if (distort[cod_info_w.sfbmax] > 1.0) + break; + if (cod_info_w.block_type == SHORT_TYPE + && (distort[cod_info_w.sfbmax+1] > 1.0 + || distort[cod_info_w.sfbmax+2] > 1.0)) + break; + } + + /* try a new scalefactor conbination on cod_info_w */ + if (balance_noise (gfp, &cod_info_w, distort, xrpow, bRefine) == 0) + break; + if (cod_info_w.scalefac_scale) + maxggain = 254; + + /* inner_loop starts with the initial quantization step computed above + * and slowly increases until the bits < huff_bits. + * Thus it is important not to start with too large of an inital + * quantization step. Too small is ok, but inner_loop will take longer + */ + huff_bits = targ_bits - cod_info_w.part2_length; + if (huff_bits <= 0) + break; + + /* increase quantizer stepsize until needed bits are below maximum + */ + while ((cod_info_w.part2_3_length + = count_bits(gfc, xrpow, &cod_info_w, &prev_noise)) > huff_bits + && cod_info_w.global_gain <= maxggain) + cod_info_w.global_gain++; + + if (cod_info_w.global_gain > maxggain) + break; + + if (best_noise_info.over_count == 0) { + + while ((cod_info_w.part2_3_length + = count_bits(gfc, xrpow, &cod_info_w, &prev_noise)) > best_part2_3_length + && cod_info_w.global_gain <= maxggain) + cod_info_w.global_gain++; + + if (cod_info_w.global_gain > maxggain) + break; + } + + /* compute the distortion in this quantization */ + over = calc_noise (gfc, &cod_info_w, l3_xmin, distort, &noise_info, &prev_noise); + noise_info.bits = cod_info_w.part2_3_length; + + /* check if this quantization is better + * than our saved quantization */ + if (cod_info->block_type == NORM_TYPE) + better = gfp->quant_comp; + else + better = gfp->quant_comp_short; + + + better = quant_compare(better, gfc, &best_noise_info, &noise_info, + &cod_info_w, distort); + + + /* save data so we can restore this quantization later */ + if (better) { + best_part2_3_length = cod_info->part2_3_length; + best_noise_info = noise_info; + *cod_info = cod_info_w; + age = 0; + /* save data so we can restore this quantization later */ + /*if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh)*/{ + /* store for later reuse */ + memcpy(save_xrpow, xrpow, sizeof(FLOAT)*576); + } + } else { + /* early stop? */ + if (gfc->full_outer_loop == 0) { + if (++age > search_limit && best_noise_info.over_count == 0) + break; + if ((gfc->noise_shaping_amp == 3) && bRefine && + age>30) + break; + if ((gfc->noise_shaping_amp == 3) && bRefine && + (cod_info_w.global_gain - best_ggain_pass1)>15) + break; + } + } + } + while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255); + + if (gfc->noise_shaping_amp == 3) { + if (!bRefine) { + /* refine search*/ + cod_info_w = *cod_info; + memcpy( xrpow, save_xrpow, sizeof(FLOAT)*576); + age = 0; + best_ggain_pass1 = cod_info_w.global_gain; + + bRefine = 1; + } else { + /* search already refined, stop*/ + bEndOfSearch = 1; + } + + } else { + bEndOfSearch = 1; + } + } + + assert ((cod_info->global_gain + cod_info->scalefac_scale) <= 255); + /* finish up + */ + if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh) + /* restore for reuse on next try */ + memcpy(xrpow, save_xrpow, sizeof(FLOAT)*576); + /* do the 'substep shaping' + */ + else if (gfc->substep_shaping & 1) + trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow); + + return best_noise_info.over_count; +} + + + + + +/************************************************************************ + * + * iteration_finish_one() + * + * Robert Hegemann 2000-09-06 + * + * update reservoir status after FINAL quantization/bitrate + * + ************************************************************************/ + +static void +iteration_finish_one ( + lame_internal_flags *gfc, + int gr, int ch) +{ + III_side_info_t *l3_side = &gfc->l3_side; + gr_info *cod_info = &l3_side->tt[gr][ch]; + + /* try some better scalefac storage + */ + best_scalefac_store (gfc, gr, ch, l3_side); + + /* best huffman_divide may save some bits too + */ + if (gfc->use_best_huffman == 1) + best_huffman_divide (gfc, cod_info); + + /* update reservoir status after FINAL quantization/bitrate + */ + ResvAdjust (gfc, cod_info); +} + + + +/********************************************************************* + * + * VBR_encode_granule() + * + * 2000-09-04 Robert Hegemann + * + *********************************************************************/ + +static void +VBR_encode_granule ( + lame_global_flags *gfp, + gr_info * const cod_info, + const FLOAT * const l3_xmin, /* allowed distortion of the scalefactor */ + FLOAT xrpow[576], /* coloured magnitudes of spectral values */ + const int ch, + int min_bits, + int max_bits ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + gr_info bst_cod_info; + FLOAT bst_xrpow [576]; + int Max_bits = max_bits; + int real_bits = max_bits+1; + int this_bits = (max_bits+min_bits)/2; + int dbits, over, found = 0; + int sfb21_extra = gfc->sfb21_extra; + + assert(Max_bits <= MAX_BITS); + + /* search within round about 40 bits of optimal + */ + do { + assert(this_bits >= min_bits); + assert(this_bits <= max_bits); + assert(min_bits <= max_bits); + + if (this_bits > Max_bits-42) + gfc->sfb21_extra = 0; + else + gfc->sfb21_extra = sfb21_extra; + + over = outer_loop ( gfp, cod_info, l3_xmin, xrpow, ch, this_bits ); + + /* is quantization as good as we are looking for ? + * in this case: is no scalefactor band distorted? + */ + if (over <= 0) { + found = 1; + /* now we know it can be done with "real_bits" + * and maybe we can skip some iterations + */ + real_bits = cod_info->part2_3_length; + + /* store best quantization so far + */ + bst_cod_info = *cod_info; + memcpy(bst_xrpow, xrpow, sizeof(FLOAT)*576); + + /* try with fewer bits + */ + max_bits = real_bits-32; + dbits = max_bits-min_bits; + this_bits = (max_bits+min_bits)/2; + } + else { + /* try with more bits + */ + min_bits = this_bits+32; + dbits = max_bits-min_bits; + this_bits = (max_bits+min_bits)/2; + + if (found) { + found = 2; + /* start again with best quantization so far + */ + *cod_info = bst_cod_info; + memcpy(xrpow, bst_xrpow, sizeof(FLOAT)*576); + } + } + } while (dbits>12); + + gfc->sfb21_extra = sfb21_extra; + + /* found=0 => nothing found, use last one + * found=1 => we just found the best and left the loop + * found=2 => we restored a good one and have now l3_enc to restore too + */ + if (found==2) { + memcpy(cod_info->l3_enc, bst_cod_info.l3_enc, sizeof(int)*576); + } + assert(cod_info->part2_3_length <= Max_bits); + +} + + + +/************************************************************************ + * + * get_framebits() + * + * Robert Hegemann 2000-09-05 + * + * calculates + * * how many bits are available for analog silent granules + * * how many bits to use for the lowest allowed bitrate + * * how many bits each bitrate would provide + * + ************************************************************************/ + +static void +get_framebits ( + lame_global_flags *gfp, + int * const analog_mean_bits, + int * const min_mean_bits, + int frameBits[15] ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int bitsPerFrame, i; + + /* always use at least this many bits per granule per channel + * unless we detect analog silence, see below + */ + gfc->bitrate_index = gfc->VBR_min_bitrate; + bitsPerFrame = getframebits(gfp); + *min_mean_bits = (bitsPerFrame - gfc->sideinfo_len * 8) / (gfc->mode_gr*gfc->channels_out); + + /* bits for analog silence + */ + gfc->bitrate_index = 1; + bitsPerFrame = getframebits(gfp); + *analog_mean_bits = (bitsPerFrame - gfc->sideinfo_len * 8) / (gfc->mode_gr*gfc->channels_out); + + for (i = 1; i <= gfc->VBR_max_bitrate; i++) { + gfc->bitrate_index = i; + frameBits[i] = ResvFrameBegin (gfp, &bitsPerFrame); + } +} + + + +/************************************************************************ + * + * calc_min_bits() + * + * Robert Hegemann 2000-09-04 + * + * determine minimal bit skeleton + * + ************************************************************************/ +inline +static int +calc_min_bits ( + lame_global_flags *gfp, + const gr_info * const cod_info, + const int pe, + const FLOAT ms_ener_ratio, + const int bands, + const int mch_bits, + const int analog_mean_bits, + const int min_mean_bits, + const int analog_silence, + const int ch ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int min_bits, min_pe_bits; + + if (gfp->psymodel == PSY_NSPSYTUNE) return 126; + /* changed minimum from 1 to 126 bits + * the iteration loops require a minimum of bits + * for each granule to start with; robert 2001-07-02 */ + + /* base amount of minimum bits + */ + min_bits = Max (126, min_mean_bits); + + if (gfc->mode_ext == MPG_MD_MS_LR && ch == 1) + min_bits = Max (min_bits, mch_bits/5); + + /* bit skeleton based on PE + */ + if (cod_info->block_type == SHORT_TYPE) + /* if LAME switches to short blocks then pe is + * >= 1000 on medium surge + * >= 3000 on big surge + */ + min_pe_bits = (pe-350) * bands/(cod_info->sfbmax+3); + else + min_pe_bits = (pe-350) * bands/(cod_info->sfbmax+1); + + if (gfc->mode_ext == MPG_MD_MS_LR && ch == 1) { + /* side channel will use a lower bit skeleton based on PE + */ + FLOAT fac = .33 * (.5 - ms_ener_ratio) / .5; + min_pe_bits = (int)(min_pe_bits * ((1-fac)/(1+fac))); + } + min_pe_bits = Min (min_pe_bits, (1820 * gfp->out_samplerate / 44100)); + + /* determine final minimum bits + */ + if (analog_silence && !gfp->VBR_hard_min) + min_bits = analog_mean_bits; + else + min_bits = Max (min_bits, min_pe_bits); + + return min_bits; +} + + + +/********************************************************************* + * + * VBR_prepare() + * + * 2000-09-04 Robert Hegemann + * + * * converts LR to MS coding when necessary + * * calculates allowed/adjusted quantization noise amounts + * * detects analog silent frames + * + * some remarks: + * - lower masking depending on Quality setting + * - quality control together with adjusted ATH MDCT scaling + * on lower quality setting allocate more noise from + * ATH masking, and on higher quality setting allocate + * less noise from ATH masking. + * - experiments show that going more than 2dB over GPSYCHO's + * limits ends up in very annoying artefacts + * + *********************************************************************/ + +/* RH: this one needs to be overhauled sometime */ + +static int +VBR_prepare ( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio [2], + III_psy_ratio ratio [2][2], + FLOAT l3_xmin [2][2][SFBMAX], + int frameBits [16], + int *analog_mean_bits, + int *min_mean_bits, + int min_bits [2][2], + int max_bits [2][2], + int bands [2][2] ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + + + FLOAT masking_lower_db, adjust = 0.0; + int gr, ch; + int analog_silence = 1; + int avg, mxb, bits = 0; + + gfc->bitrate_index = gfc->VBR_max_bitrate; + avg = ResvFrameBegin (gfp, &avg) / gfc->mode_gr; + + get_framebits (gfp, analog_mean_bits, min_mean_bits, frameBits); + + for (gr = 0; gr < gfc->mode_gr; gr++) { + mxb = on_pe (gfp, pe, &gfc->l3_side, max_bits[gr], avg, gr, 0); + if (gfc->mode_ext == MPG_MD_MS_LR) { + ms_convert (&gfc->l3_side, gr); + ms_sparsing( gfc, gr ); + reduce_side (max_bits[gr], ms_ener_ratio[gr], avg, mxb); + } + for (ch = 0; ch < gfc->channels_out; ++ch) { + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + + if (cod_info->block_type == NORM_TYPE) { + adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05; + masking_lower_db = gfc->PSY->mask_adjust - adjust; + } else { + adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14; + masking_lower_db = gfc->PSY->mask_adjust_short - adjust; + } + gfc->masking_lower = pow (10.0, masking_lower_db * 0.1); + + init_outer_loop(gfp, gfc, cod_info); + bands[gr][ch] = calc_xmin (gfp, &ratio[gr][ch], + cod_info, l3_xmin[gr][ch]); + if (bands[gr][ch]) + analog_silence = 0; + + min_bits[gr][ch] = calc_min_bits (gfp, cod_info, (int)pe[gr][ch], + ms_ener_ratio[gr], bands[gr][ch], + 0, *analog_mean_bits, + *min_mean_bits, analog_silence, ch); + + bits += max_bits[gr][ch]; + } + } + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + if (bits > frameBits[gfc->VBR_max_bitrate]) { + max_bits[gr][ch] *= frameBits[gfc->VBR_max_bitrate]; + max_bits[gr][ch] /= bits; + } + if (min_bits[gr][ch] > max_bits[gr][ch]) + min_bits[gr][ch] = max_bits[gr][ch]; + + } /* for ch */ + } /* for gr */ + + *min_mean_bits = Max(*min_mean_bits, 126); + + return analog_silence; +} + + +static void +bitpressure_strategy( + lame_internal_flags * gfc, + FLOAT l3_xmin[2][2][SFBMAX], + int min_bits[2][2], + int max_bits[2][2] ) +{ + int gr, ch, sfb; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &gfc->l3_side.tt[gr][ch]; + FLOAT *pxmin = l3_xmin[gr][ch]; + for (sfb = 0; sfb < gi->psy_lmax; sfb++) + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_l/SBMAX_l; + + if (gi->block_type == SHORT_TYPE) { + for (sfb = gi->sfb_smin; sfb < SBMAX_s; sfb++) { + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_s/SBMAX_s; + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_s/SBMAX_s; + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_s/SBMAX_s; + } + } + max_bits[gr][ch] = Max(min_bits[gr][ch], 0.9*max_bits[gr][ch]); + } + } +} + +/************************************************************************ + * + * VBR_iteration_loop() + * + * tries to find out how many bits are needed for each granule and channel + * to get an acceptable quantization. An appropriate bitrate will then be + * choosed for quantization. rh 8/99 + * + * Robert Hegemann 2000-09-06 rewrite + * + ************************************************************************/ + +void +VBR_iteration_loop ( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio[2], + III_psy_ratio ratio[2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + FLOAT l3_xmin[2][2][SFBMAX]; + + FLOAT xrpow[576]; + int bands[2][2]; + int frameBits[15]; + int save_bits[2][2]; + int used_bits, used_bits2; + int bits; + int min_bits[2][2], max_bits[2][2]; + int analog_mean_bits, min_mean_bits; + int mean_bits; + int ch, gr, analog_silence; + III_side_info_t *l3_side = &gfc->l3_side; + + analog_silence = VBR_prepare (gfp, pe, ms_ener_ratio, ratio, + l3_xmin, frameBits, &analog_mean_bits, + &min_mean_bits, min_bits, max_bits, bands); + + /*---------------------------------*/ + for(;;) { + + /* quantize granules with lowest possible number of bits + */ + + used_bits = 0; + used_bits2 = 0; + + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + int ret; + gr_info *cod_info = &l3_side->tt[gr][ch]; + + /* init_outer_loop sets up cod_info, scalefac and xrpow + */ + ret = init_xrpow(gfc, cod_info, xrpow); + if (ret == 0 || max_bits[gr][ch] == 0) { + /* xr contains no energy + * l3_enc, our encoding data, will be quantized to zero + */ + save_bits[gr][ch] = 0; + continue; /* with next channel */ + } + + if (gfp->VBR == vbr_mtrh) { + VBR_noise_shaping (gfc, xrpow, l3_xmin[gr][ch], + max_bits[gr][ch], gr, ch ); + } + else + VBR_encode_granule (gfp, cod_info, l3_xmin[gr][ch], xrpow, + ch, min_bits[gr][ch], max_bits[gr][ch] ); + + /* do the 'substep shaping' + */ + if (gfc->substep_shaping & 1) { + trancate_smallspectrums(gfc, &l3_side->tt[gr][ch], + l3_xmin[gr][ch], xrpow); + } + + ret = cod_info->part2_3_length + cod_info->part2_length; + used_bits += ret; + save_bits[gr][ch] = Min(MAX_BITS, ret); + used_bits2 += Min(MAX_BITS, ret); + } /* for ch */ + } /* for gr */ + + /* find lowest bitrate able to hold used bits + */ + if (analog_silence && !gfp->VBR_hard_min) + /* we detected analog silence and the user did not specify + * any hard framesize limit, so start with smallest possible frame + */ + gfc->bitrate_index = 1; + else + gfc->bitrate_index = gfc->VBR_min_bitrate; + + for( ; gfc->bitrate_index < gfc->VBR_max_bitrate; gfc->bitrate_index++) { + if (used_bits <= frameBits[gfc->bitrate_index]) break; + } + bits = ResvFrameBegin (gfp, &mean_bits); + + if (used_bits <= bits) break; + + bitpressure_strategy( gfc, l3_xmin, min_bits, max_bits ); + + } /* breaks adjusted */ + /*--------------------------------------*/ + + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + iteration_finish_one(gfc, gr, ch); + } /* for ch */ + } /* for gr */ + ResvFrameEnd (gfc, mean_bits); +} + + + + + + +/******************************************************************** + * + * calc_target_bits() + * + * calculates target bits for ABR encoding + * + * mt 2000/05/31 + * + ********************************************************************/ + +static void +calc_target_bits ( + lame_global_flags * gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio [2], + int targ_bits [2][2], + int *analog_silence_bits, + int *max_frame_bits ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side = &gfc->l3_side; + FLOAT res_factor; + int gr, ch, totbits, mean_bits; + + gfc->bitrate_index = gfc->VBR_max_bitrate; + *max_frame_bits = ResvFrameBegin (gfp, &mean_bits); + + gfc->bitrate_index = 1; + mean_bits = getframebits(gfp) - gfc->sideinfo_len * 8; + *analog_silence_bits = mean_bits / (gfc->mode_gr * gfc->channels_out); + + mean_bits = gfp->VBR_mean_bitrate_kbps * gfp->framesize * 1000; + if (gfc->substep_shaping & 1) + mean_bits *= 1.09; + mean_bits /= gfp->out_samplerate; + mean_bits -= gfc->sideinfo_len*8; + mean_bits /= (gfc->mode_gr * gfc->channels_out); + + /* + res_factor is the percentage of the target bitrate that should + be used on average. the remaining bits are added to the + bitreservoir and used for difficult to encode frames. + + Since we are tracking the average bitrate, we should adjust + res_factor "on the fly", increasing it if the average bitrate + is greater than the requested bitrate, and decreasing it + otherwise. Reasonable ranges are from .9 to 1.0 + + Until we get the above suggestion working, we use the following + tuning: + compression ratio res_factor + 5.5 (256kbps) 1.0 no need for bitreservoir + 11 (128kbps) .93 7% held for reservoir + + with linear interpolation for other values. + + */ + res_factor = .93 + .07 * (11.0 - gfp->compression_ratio) / (11.0 - 5.5); + if (res_factor < .90) + res_factor = .90; + if (res_factor > 1.00) + res_factor = 1.00; + + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + targ_bits[gr][ch] = res_factor * mean_bits; + + if (pe[gr][ch] > 700) { + int add_bits = (pe[gr][ch] - 700) / 1.4; + + gr_info *cod_info = &l3_side->tt[gr][ch]; + targ_bits[gr][ch] = res_factor * mean_bits; + + /* short blocks use a little extra, no matter what the pe */ + if (cod_info->block_type == SHORT_TYPE) { + if (add_bits < mean_bits/2) + add_bits = mean_bits/2; + } + /* at most increase bits by 1.5*average */ + if (add_bits > mean_bits*3/2) + add_bits = mean_bits*3/2; + else + if (add_bits < 0) + add_bits = 0; + + targ_bits[gr][ch] += add_bits; + } + }/* for ch */ + } /* for gr */ + + if (gfc->mode_ext == MPG_MD_MS_LR) + for (gr = 0; gr < gfc->mode_gr; gr++) { + reduce_side (targ_bits[gr], ms_ener_ratio[gr], mean_bits*gfc->channels_out, + MAX_BITS); + } + + /* sum target bits + */ + totbits=0; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + if (targ_bits[gr][ch] > MAX_BITS) + targ_bits[gr][ch] = MAX_BITS; + totbits += targ_bits[gr][ch]; + } + } + + /* repartion target bits if needed + */ + if (totbits > *max_frame_bits) { + for(gr = 0; gr < gfc->mode_gr; gr++) { + for(ch = 0; ch < gfc->channels_out; ch++) { + targ_bits[gr][ch] *= *max_frame_bits; + targ_bits[gr][ch] /= totbits; + } + } + } +} + + + + + + +/******************************************************************** + * + * ABR_iteration_loop() + * + * encode a frame with a disired average bitrate + * + * mt 2000/05/31 + * + ********************************************************************/ + +void +ABR_iteration_loop( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio[2], + III_psy_ratio ratio [2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + FLOAT l3_xmin[SFBMAX]; + FLOAT xrpow[576]; + int targ_bits[2][2]; + int mean_bits, max_frame_bits; + int ch, gr, ath_over; + int analog_silence_bits; + gr_info *cod_info; + III_side_info_t *l3_side = &gfc->l3_side; + + calc_target_bits (gfp, pe, ms_ener_ratio, targ_bits, + &analog_silence_bits, &max_frame_bits); + + /* encode granules + */ + for (gr = 0; gr < gfc->mode_gr; gr++) { + + if (gfc->mode_ext == MPG_MD_MS_LR) { + ms_convert (&gfc->l3_side, gr); + ms_sparsing( gfc, gr ); + } + for (ch = 0; ch < gfc->channels_out; ch++) { + FLOAT adjust, masking_lower_db; + cod_info = &l3_side->tt[gr][ch]; + + if (cod_info->block_type == NORM_TYPE) { + /* adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust - adjust; + } else { + /* adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust_short - adjust; + } + gfc->masking_lower = pow (10.0, masking_lower_db * 0.1); + + + /* cod_info, scalefac and xrpow get initialized in init_outer_loop + */ + init_outer_loop(gfp, gfc, cod_info); + if (init_xrpow(gfc, cod_info, xrpow)) { + /* xr contains energy we will have to encode + * calculate the masking abilities + * find some good quantization in outer_loop + */ + ath_over = calc_xmin (gfp, &ratio[gr][ch], cod_info, l3_xmin); + if (0 == ath_over) /* analog silence */ + targ_bits[gr][ch] = analog_silence_bits; + + outer_loop (gfp, cod_info, l3_xmin, + xrpow, ch, targ_bits[gr][ch]); + } + iteration_finish_one(gfc, gr, ch); + } /* ch */ + } /* gr */ + + /* find a bitrate which can refill the resevoir to positive size. + */ + for (gfc->bitrate_index = gfc->VBR_min_bitrate ; + gfc->bitrate_index <= gfc->VBR_max_bitrate; + gfc->bitrate_index++ ) { + if (ResvFrameBegin (gfp, &mean_bits) >= 0) break; + } + assert (gfc->bitrate_index <= gfc->VBR_max_bitrate); + + ResvFrameEnd (gfc, mean_bits); +} + + + + + + +/************************************************************************ + * + * CBR_iteration_loop() + * + * author/date?? + * + * encodes one frame of MP3 data with constant bitrate + * + ************************************************************************/ + +void +CBR_iteration_loop( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio[2], + III_psy_ratio ratio [2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + FLOAT l3_xmin[SFBMAX]; + FLOAT xrpow[576]; + int targ_bits[2]; + int mean_bits, max_bits; + int gr, ch; + III_side_info_t *l3_side = &gfc->l3_side; + gr_info *cod_info; + + ResvFrameBegin (gfp, &mean_bits); + + /* quantize! */ + for (gr = 0; gr < gfc->mode_gr; gr++) { + + /* calculate needed bits + */ + max_bits = on_pe (gfp, pe, l3_side, targ_bits, mean_bits, gr, gr); + + if (gfc->mode_ext == MPG_MD_MS_LR) { + ms_convert (&gfc->l3_side, gr); + ms_sparsing( gfc, gr ); + reduce_side (targ_bits, ms_ener_ratio[gr], mean_bits, max_bits); + } + + for (ch=0 ; ch < gfc->channels_out ; ch ++) { + FLOAT adjust, masking_lower_db; + cod_info = &l3_side->tt[gr][ch]; + + if (cod_info->block_type == NORM_TYPE) { + /* adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust - adjust; + } else { + /* adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust_short - adjust; + } + gfc->masking_lower = pow (10.0, masking_lower_db * 0.1); + + /* init_outer_loop sets up cod_info, scalefac and xrpow + */ + init_outer_loop(gfp, gfc, cod_info); + if (init_xrpow(gfc, cod_info, xrpow)) { + /* xr contains energy we will have to encode + * calculate the masking abilities + * find some good quantization in outer_loop + */ + calc_xmin (gfp, &ratio[gr][ch], cod_info, l3_xmin); + outer_loop (gfp, cod_info, l3_xmin, xrpow, ch, targ_bits[ch]); + } + + iteration_finish_one(gfc, gr, ch); + assert (cod_info->part2_3_length <= MAX_BITS); + assert (cod_info->part2_3_length <= targ_bits[ch]); + } /* for ch */ + } /* for gr */ + + ResvFrameEnd (gfc, mean_bits); +} + diff --git a/lame-3.97/libmp3lame/.svn/text-base/quantize.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/quantize.h.svn-base new file mode 100644 index 0000000..be43d43 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/quantize.h.svn-base @@ -0,0 +1,43 @@ +/* + * MP3 quantization + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_QUANTIZE_H +#define LAME_QUANTIZE_H + +#include "util.h" + +void CBR_iteration_loop( lame_global_flags *gfp, + FLOAT pe[2][2], + FLOAT ms_ratio[2], + III_psy_ratio ratio[2][2]); + +void VBR_iteration_loop( lame_global_flags *gfp, + FLOAT pe[2][2], + FLOAT ms_ratio[2], + III_psy_ratio ratio[2][2]); + +void ABR_iteration_loop( lame_global_flags *gfp, + FLOAT pe[2][2], + FLOAT ms_ratio[2], + III_psy_ratio ratio[2][2]); + +#endif /* LAME_QUANTIZE_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/quantize_pvt.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/quantize_pvt.c.svn-base new file mode 100644 index 0000000..189649d --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/quantize_pvt.c.svn-base @@ -0,0 +1,979 @@ +/* + * quantize_pvt source file + * + * Copyright (c) 1999-2002 Takehiro Tominaga + * Copyright (c) 2000-2002 Robert Hegemann + * Copyright (c) 2001 Naoki Shibata + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: quantize_pvt.c,v 1.131.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "lame-analysis.h" +#include "tables.h" +#include "reservoir.h" +#include "quantize_pvt.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +#define NSATHSCALE 100 /* Assuming dynamic range=96dB, this value should be 92 */ + +/* + The following table is used to implement the scalefactor + partitioning for MPEG2 as described in section + 2.4.3.2 of the IS. The indexing corresponds to the + way the tables are presented in the IS: + + [table_number][row_in_table][column of nr_of_sfb] +*/ +const int nr_of_sfb_block [6] [3] [4] = +{ + { + {6, 5, 5, 5}, + {9, 9, 9, 9}, + {6, 9, 9, 9} + }, + { + {6, 5, 7, 3}, + {9, 9, 12, 6}, + {6, 9, 12, 6} + }, + { + {11, 10, 0, 0}, + {18, 18, 0, 0}, + {15,18,0,0} + }, + { + {7, 7, 7, 0}, + {12, 12, 12, 0}, + {6, 15, 12, 0} + }, + { + {6, 6, 6, 3}, + {12, 9, 9, 6}, + {6, 12, 9, 6} + }, + { + {8, 8, 5, 0}, + {15,12,9,0}, + {6,18,9,0} + } +}; + + +/* Table B.6: layer3 preemphasis */ +const int pretab [SBMAX_l] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 +}; + +/* + Here are MPEG1 Table B.8 and MPEG2 Table B.1 + -- Layer III scalefactor bands. + Index into this using a method such as: + idx = fr_ps->header->sampling_frequency + + (fr_ps->header->version * 3) +*/ + + +const scalefac_struct sfBandIndex[9] = +{ + { /* Table B.2.b: 22.05 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0,4,8,12,18,24,32,42,56,74,100,132,174,192} + }, + { /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */ + {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278, 332, 394,464,540,576}, + {0,4,8,12,18,26,36,48,62,80,104,136,180,192} + }, + { /* Table B.2.a: 16 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0,4,8,12,18,26,36,48,62,80,104,134,174,192} + }, + { /* Table B.8.b: 44.1 kHz */ + {0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576}, + {0,4,8,12,16,22,30,40,52,66,84,106,136,192} + }, + { /* Table B.8.c: 48 kHz */ + {0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576}, + {0,4,8,12,16,22,28,38,50,64,80,100,126,192} + }, + { /* Table B.8.a: 32 kHz */ + {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576}, + {0,4,8,12,16,22,30,42,58,78,104,138,180,192} + }, + { /* MPEG-2.5 11.025 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0/3,12/3,24/3,36/3,54/3,78/3,108/3,144/3,186/3,240/3,312/3,402/3,522/3,576/3} + }, + { /* MPEG-2.5 12 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0/3,12/3,24/3,36/3,54/3,78/3,108/3,144/3,186/3,240/3,312/3,402/3,522/3,576/3} + }, + { /* MPEG-2.5 8 kHz */ + {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576}, + {0/3,24/3,48/3,72/3,108/3,156/3,216/3,288/3,372/3,480/3,486/3,492/3,498/3,576/3} + } +}; + + + +FLOAT pow20[Q_MAX+Q_MAX2+1]; +FLOAT ipow20[Q_MAX]; +FLOAT pow43[PRECALC_SIZE]; +/* initialized in first call to iteration_init */ +#ifdef TAKEHIRO_IEEE754_HACK +FLOAT adj43asm[PRECALC_SIZE]; +#else +FLOAT adj43[PRECALC_SIZE]; +#endif + +/* +compute the ATH for each scalefactor band +cd range: 0..96db + +Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest = -5db) +longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db +shortblocks: sfb=5 -9db 0db + +Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) +longblocks: amp=1 sfb=12 en0/bw=-103 db max_en0 = -92db + amp=32767 sfb=12 -12 db -1.4db + +Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) +shortblocks: amp=1 sfb=5 en0/bw= -99 -86 + amp=32767 sfb=5 -9 db 4db + + +MAX energy of largest wave at 3.3kHz = 1db +AVE energy of largest wave at 3.3kHz = -11db +Let's take AVE: -11db = maximum signal in sfb=12. +Dynamic range of CD: 96db. Therefor energy of smallest audible wave +in sfb=12 = -11 - 96 = -107db = ATH at 3.3kHz. + +ATH formula for this wave: -5db. To adjust to LAME scaling, we need +ATH = ATH_formula - 103 (db) +ATH = ATH * 2.5e-10 (ener) + +*/ + +static FLOAT ATHmdct( lame_global_flags *gfp, FLOAT f ) +{ + FLOAT ath; + + ath = ATHformula( f , gfp ); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + ath -= NSATHSCALE; + } else { + ath -= 114; + } + + /* modify the MDCT scaling for the ATH and convert to energy */ + ath = pow( 10.0, ath/10.0 + gfp->ATHlower); + return ath; +} + +static void compute_ath( lame_global_flags *gfp ) +{ + FLOAT *ATH_l = gfp->internal_flags->ATH->l; + FLOAT *ATH_psfb21 = gfp->internal_flags->ATH->psfb21; + FLOAT *ATH_s = gfp->internal_flags->ATH->s; + FLOAT *ATH_psfb12 = gfp->internal_flags->ATH->psfb12; + lame_internal_flags *gfc = gfp->internal_flags; + int sfb, i, start, end; + FLOAT ATH_f; + FLOAT samp_freq = gfp->out_samplerate; + + for (sfb = 0; sfb < SBMAX_l; sfb++) { + start = gfc->scalefac_band.l[ sfb ]; + end = gfc->scalefac_band.l[ sfb+1 ]; + ATH_l[sfb]=FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*576); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_l[sfb] = Min( ATH_l[sfb], ATH_f ); + } + if (gfp->psymodel == PSY_GPSYCHO) + ATH_l[sfb] *= + (gfc->scalefac_band.l[sfb+1] - gfc->scalefac_band.l[sfb]); + } + + for (sfb = 0; sfb < PSFB21; sfb++) { + start = gfc->scalefac_band.psfb21[ sfb ]; + end = gfc->scalefac_band.psfb21[ sfb+1 ]; + ATH_psfb21[sfb]=FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*576); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_psfb21[sfb] = Min( ATH_psfb21[sfb], ATH_f ); + } + } + + for (sfb = 0; sfb < SBMAX_s; sfb++){ + start = gfc->scalefac_band.s[ sfb ]; + end = gfc->scalefac_band.s[ sfb+1 ]; + ATH_s[sfb] = FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*192); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_s[sfb] = Min( ATH_s[sfb], ATH_f ); + } + ATH_s[sfb] *= + (gfc->scalefac_band.s[sfb+1] - gfc->scalefac_band.s[sfb]); + } + + for (sfb = 0; sfb < PSFB12; sfb++) { + start = gfc->scalefac_band.psfb12[ sfb ]; + end = gfc->scalefac_band.psfb12[ sfb+1 ]; + ATH_psfb12[sfb]=FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*192); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_psfb12[sfb] = Min( ATH_psfb12[sfb], ATH_f ); + } + /*not sure about the following*/ + ATH_psfb12[sfb] *= + (gfc->scalefac_band.s[13] - gfc->scalefac_band.s[12]); + } + + + /* no-ATH mode: + * reduce ATH to -200 dB + */ + + if (gfp->noATH) { + for (sfb = 0; sfb < SBMAX_l; sfb++) { + ATH_l[sfb] = 1E-37; + } + for (sfb = 0; sfb < PSFB21; sfb++) { + ATH_psfb21[sfb] = 1E-37; + } + for (sfb = 0; sfb < SBMAX_s; sfb++) { + ATH_s[sfb] = 1E-37; + } + for (sfb = 0; sfb < PSFB12; sfb++) { + ATH_psfb12[sfb] = 1E-37; + } + } + + /* work in progress, don't rely on it too much + */ + gfc->ATH-> floor = 10. * log10( ATHmdct( gfp, -1. ) ); + + /* + { FLOAT g=10000, t=1e30, x; + for ( f = 100; f < 10000; f++ ) { + x = ATHmdct( gfp, f ); + if ( t > x ) t = x, g = f; + } + printf("min=%g\n", g); + }*/ +} + + + + +/************************************************************************/ +/* initialization for iteration_loop */ +/************************************************************************/ +void +iteration_init( lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t * const l3_side = &gfc->l3_side; + int i; + + if ( gfc->iteration_init_init==0 ) { + gfc->iteration_init_init=1; + + l3_side->main_data_begin = 0; + compute_ath(gfp); + + pow43[0] = 0.0; + for(i=1;i<PRECALC_SIZE;i++) + pow43[i] = pow((FLOAT)i, 4.0/3.0); + +#ifdef TAKEHIRO_IEEE754_HACK + adj43asm[0] = 0.0; + for (i = 1; i < PRECALC_SIZE; i++) + adj43asm[i] = i - 0.5 - pow(0.5 * (pow43[i - 1] + pow43[i]),0.75); +#else + for (i = 0; i < PRECALC_SIZE-1; i++) + adj43[i] = (i + 1) - pow(0.5 * (pow43[i] + pow43[i + 1]), 0.75); + adj43[i] = 0.5; +#endif + for (i = 0; i < Q_MAX; i++) + ipow20[i] = pow(2.0, (double)(i - 210) * -0.1875); + for (i = 0; i <= Q_MAX+Q_MAX2; i++) + pow20[i] = pow(2.0, (double)(i - 210 - Q_MAX2) * 0.25); + + huffman_init(gfc); + quantize_init(gfc); + init_xrpow_core_init(gfc); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + FLOAT bass, alto, treble, sfb21; + + i = (gfp->exp_nspsytune >> 2) & 63; + if (i >= 32) + i -= 64; + bass = pow(10, i / 4.0 / 10.0); + + i = (gfp->exp_nspsytune >> 8) & 63; + if (i >= 32) + i -= 64; + alto = pow(10, i / 4.0 / 10.0); + + i = (gfp->exp_nspsytune >> 14) & 63; + if (i >= 32) + i -= 64; + treble = pow(10, i / 4.0 / 10.0); + + /* to be compatible with Naoki's original code, the next 6 bits + * define only the amount of changing treble for sfb21 */ + i = (gfp->exp_nspsytune >> 20) & 63; + if (i >= 32) + i -= 64; + sfb21 = treble * pow(10, i / 4.0 / 10.0); + + for (i = 0; i < SBMAX_l; i++) { + FLOAT f; + if (i <= 6) f = bass; + else if (i <= 13) f = alto; + else if (i <= 20) f = treble; + else f = sfb21; + + gfc->nsPsy.longfact[i] = f; + } + for (i = 0; i < SBMAX_s; i++) { + FLOAT f; + if (i <= 5) f = bass; + else if (i <= 10) f = alto; + else if (i <= 11) f = treble; + else f = sfb21; + + gfc->nsPsy.shortfact[i] = f; + } + } else { + for (i = 0; i < SBMAX_l; i++) + gfc->nsPsy.longfact[i] = 1.0; + for (i = 0; i < SBMAX_s; i++) + gfc->nsPsy.shortfact[i] = 1.0; + } + } +} + + + + + +/************************************************************************ + * allocate bits among 2 channels based on PE + * mt 6/99 + * bugfixes rh 8/01: often allocated more than the allowed 4095 bits + ************************************************************************/ +int on_pe( lame_global_flags *gfp, FLOAT pe[][2], III_side_info_t *l3_side, + int targ_bits[2], int mean_bits, int gr, int cbr ) +{ + lame_internal_flags * gfc = gfp->internal_flags; + gr_info * cod_info; + int extra_bits, tbits, bits; + int add_bits[2]; + int max_bits; /* maximum allowed bits for this granule */ + int ch; + + /* allocate targ_bits for granule */ + ResvMaxBits( gfp, mean_bits, &tbits, &extra_bits, cbr); + max_bits = tbits + extra_bits; + if (max_bits > MAX_BITS) /* hard limit per granule */ + max_bits = MAX_BITS; + + for ( bits = 0, ch = 0; ch < gfc->channels_out; ++ch ) { + /****************************************************************** + * allocate bits for each channel + ******************************************************************/ + cod_info = &l3_side->tt[gr][ch]; + + targ_bits[ch] = Min( MAX_BITS, tbits/gfc->channels_out ); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + add_bits[ch] = targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]; + } + else { + add_bits[ch] = (pe[gr][ch]-750) / 1.4; + /* short blocks us a little extra, no matter what the pe */ + if ( cod_info->block_type == SHORT_TYPE ) { + if (add_bits[ch] < mean_bits/4) + add_bits[ch] = mean_bits/4; + } + } + + /* at most increase bits by 1.5*average */ + if (add_bits[ch] > mean_bits*3/4) + add_bits[ch] = mean_bits*3/4; + if (add_bits[ch] < 0) + add_bits[ch] = 0; + + if (add_bits[ch]+targ_bits[ch] > MAX_BITS) + add_bits[ch] = Max( 0, MAX_BITS-targ_bits[ch] ); + + bits += add_bits[ch]; + } + if (bits > extra_bits) { + for ( ch = 0; ch < gfc->channels_out; ++ch ) { + add_bits[ch] = extra_bits * add_bits[ch] / bits; + } + } + + for ( ch = 0; ch < gfc->channels_out; ++ch ) { + targ_bits[ch] += add_bits[ch]; + extra_bits -= add_bits[ch]; + assert( targ_bits[ch] <= MAX_BITS ); + } + assert( max_bits <= MAX_BITS ); + return max_bits; +} + + + + +void reduce_side(int targ_bits[2],FLOAT ms_ener_ratio,int mean_bits,int max_bits) +{ + int move_bits; + FLOAT fac; + + + /* ms_ener_ratio = 0: allocate 66/33 mid/side fac=.33 + * ms_ener_ratio =.5: allocate 50/50 mid/side fac= 0 */ + /* 75/25 split is fac=.5 */ + /* float fac = .50*(.5-ms_ener_ratio[gr])/.5;*/ + fac = .33*(.5-ms_ener_ratio)/.5; + if (fac<0) fac=0; + if (fac>.5) fac=.5; + + /* number of bits to move from side channel to mid channel */ + /* move_bits = fac*targ_bits[1]; */ + move_bits = fac*.5*(targ_bits[0]+targ_bits[1]); + + if (move_bits > MAX_BITS - targ_bits[0]) { + move_bits = MAX_BITS - targ_bits[0]; + } + if (move_bits<0) move_bits=0; + + if (targ_bits[1] >= 125) { + /* dont reduce side channel below 125 bits */ + if (targ_bits[1]-move_bits > 125) { + + /* if mid channel already has 2x more than average, dont bother */ + /* mean_bits = bits per granule (for both channels) */ + if (targ_bits[0] < mean_bits) + targ_bits[0] += move_bits; + targ_bits[1] -= move_bits; + } else { + targ_bits[0] += targ_bits[1] - 125; + targ_bits[1] = 125; + } + } + + move_bits=targ_bits[0]+targ_bits[1]; + if (move_bits > max_bits) { + targ_bits[0]=(max_bits*targ_bits[0])/move_bits; + targ_bits[1]=(max_bits*targ_bits[1])/move_bits; + } + assert (targ_bits[0] <= MAX_BITS); + assert (targ_bits[1] <= MAX_BITS); +} + + +/** + * Robert Hegemann 2001-04-27: + * this adjusts the ATH, keeping the original noise floor + * affects the higher frequencies more than the lower ones + */ + +FLOAT athAdjust( FLOAT a, FLOAT x, FLOAT athFloor ) +{ + /* work in progress + */ + FLOAT const o = 90.30873362; + FLOAT const p = 94.82444863; + FLOAT u = FAST_LOG10_X(x, 10.0); + FLOAT v = a*a; + FLOAT w = 0.0; + u -= athFloor; /* undo scaling */ + if ( v > 1E-20 ) w = 1. + FAST_LOG10_X(v, 10.0 / o); + if ( w < 0 ) w = 0.; + u *= w; + u += athFloor + o-p; /* redo scaling */ + + return pow( 10., 0.1*u ); +} + + + +/*************************************************************************/ +/* calc_xmin */ +/*************************************************************************/ + +/* + Calculate the allowed distortion for each scalefactor band, + as determined by the psychoacoustic model. + xmin(sb) = ratio(sb) * en(sb) / bw(sb) + + returns number of sfb's with energy > ATH +*/ +int calc_xmin( + lame_global_flags *gfp, + const III_psy_ratio * const ratio, + gr_info * const cod_info, + FLOAT * pxmin + ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int sfb, gsfb, j=0, ath_over=0, k; + ATH_t * ATH = gfc->ATH; + const FLOAT *xr = cod_info->xr; + int max_nonzero; + + for (gsfb = 0; gsfb < cod_info->psy_lmax; gsfb++) { + FLOAT en0, xmin; + int width, l; + if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh) + xmin = athAdjust(ATH->adjust, ATH->l[gsfb], ATH->floor); + else + xmin = ATH->adjust * ATH->l[gsfb]; + + width = cod_info->width[gsfb]; + l = width >> 1; + en0 = 0.0; + do { + en0 += xr[j] * xr[j]; j++; + en0 += xr[j] * xr[j]; j++; + } while (--l > 0); + if (en0 > xmin) ath_over++; + + if (!gfp->ATHonly) { + FLOAT x = ratio->en.l[gsfb]; + if (x > 0.0) { + x = en0 * ratio->thm.l[gsfb] * gfc->masking_lower / x; + if (xmin < x) + xmin = x; + } + } + *pxmin++ = xmin * gfc->nsPsy.longfact[gsfb]; + } /* end of long block loop */ + + + + + /*use this function to determine the highest non-zero coeff*/ + max_nonzero = 575; + if (cod_info->block_type == NORM_TYPE) { + k = 576; + while (k-- && !xr[k]){ + max_nonzero = k; + } + } + cod_info->max_nonzero_coeff = max_nonzero; + + + + for (sfb = cod_info->sfb_smin; gsfb < cod_info->psymax; sfb++, gsfb += 3) { + int width, b; + FLOAT tmpATH; + if ( gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh ) + tmpATH = athAdjust( ATH->adjust, ATH->s[sfb], ATH->floor ); + else + tmpATH = ATH->adjust * ATH->s[sfb]; + + width = cod_info->width[gsfb]; + for ( b = 0; b < 3; b++ ) { + FLOAT en0 = 0.0, xmin; + int l = width >> 1; + do { + en0 += xr[j] * xr[j]; j++; + en0 += xr[j] * xr[j]; j++; + } while (--l > 0); + if (en0 > tmpATH) ath_over++; + + xmin = tmpATH; + if (!gfp->ATHonly && !gfp->ATHshort) { + FLOAT x = ratio->en.s[sfb][b]; + if (x > 0.0) + x = en0 * ratio->thm.s[sfb][b] * gfc->masking_lower / x; + if (xmin < x) + xmin = x; + } + *pxmin++ = xmin * gfc->nsPsy.shortfact[sfb]; + } /* b */ + if (gfp->useTemporal) { + if (pxmin[-3] > pxmin[-3+1]) + pxmin[-3+1] += (pxmin[-3] - pxmin[-3+1]) * gfc->decay; + if (pxmin[-3+1] > pxmin[-3+2]) + pxmin[-3+2] += (pxmin[-3+1] - pxmin[-3+2]) * gfc->decay; + } + } /* end of short block sfb loop */ + + return ath_over; +} + + +FLOAT calc_noise_core_c( const gr_info * const cod_info, + int *startline, + int l, + FLOAT step) +{ + FLOAT noise = 0; + int j = *startline; + const int *ix = cod_info->l3_enc; + + if (j> cod_info->count1) { + while (l--) { + FLOAT temp; + temp = cod_info->xr[j];j++; + noise += temp * temp; + temp = cod_info->xr[j];j++; + noise += temp * temp; + } + } else if (j> cod_info->big_values) { + FLOAT ix01[2]; + ix01[0] = 0; + ix01[1] = step; + while (l--) { + FLOAT temp; + temp = fabs(cod_info->xr[j]) - ix01[ix[j]];j++; + noise += temp * temp; + temp = fabs(cod_info->xr[j]) - ix01[ix[j]];j++; + noise += temp * temp; + } + } else { + while (l--) { + FLOAT temp; + temp = fabs(cod_info->xr[j]) - pow43[ix[j]] * step;j++; + noise += temp * temp; + temp = fabs(cod_info->xr[j]) - pow43[ix[j]] * step;j++; + noise += temp * temp; + } + } + + *startline = j; + return noise; +} + + +/*************************************************************************/ +/* calc_noise */ +/*************************************************************************/ + +/* -oo dB => -1.00 */ +/* - 6 dB => -0.97 */ +/* - 3 dB => -0.80 */ +/* - 2 dB => -0.64 */ +/* - 1 dB => -0.38 */ +/* 0 dB => 0.00 */ +/* + 1 dB => +0.49 */ +/* + 2 dB => +1.06 */ +/* + 3 dB => +1.68 */ +/* + 6 dB => +3.69 */ +/* +10 dB => +6.45 */ + +int calc_noise( + const lame_internal_flags * const gfc, + const gr_info * const cod_info, + const FLOAT * l3_xmin, + FLOAT * distort, + calc_noise_result * const res, + calc_noise_data * prev_noise) +{ + int sfb, l, over=0; + FLOAT over_noise_db = 0; + FLOAT tot_noise_db = 0; /* 0 dB relative to masking */ + FLOAT max_noise = -20.0; /* -200 dB relative to masking */ + int j = 0; + const int *ix = cod_info->l3_enc; + const int *scalefac = cod_info->scalefac; + FLOAT sfb_noise[39]; + + res->over_SSD = 0; + + + for (sfb = 0; sfb < cod_info->psymax; sfb++) { + int s = + cod_info->global_gain + - (((*scalefac++) + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + - cod_info->subblock_gain[cod_info->window[sfb]] * 8; + FLOAT noise = 0.0; + + if (prev_noise && (prev_noise->step[sfb] == s)){ + + /* use previously computed values */ + noise = prev_noise->noise[sfb]; + j += cod_info->width[sfb]; + *distort++ = noise / *l3_xmin++; + + noise = prev_noise->noise_log[sfb]; + + } else { + FLOAT step = POW20(s); + l = cod_info->width[sfb] >> 1; + + if ((j+cod_info->width[sfb])>cod_info->max_nonzero_coeff) { + int usefullsize; + usefullsize = cod_info->max_nonzero_coeff - j +1; + + if (usefullsize > 0) + l = usefullsize >> 1; + else + l = 0; + } + + noise = calc_noise_core_c(cod_info, &j, l, step); + + + if (prev_noise) { + /* save noise values */ + prev_noise->step[sfb] = s; + prev_noise->noise[sfb] = noise; + } + + noise = *distort++ = noise / *l3_xmin++; + + /* multiplying here is adding in dB, but can overflow */ + noise = FAST_LOG10(Max(noise,1E-20)); + + if (prev_noise) { + /* save noise values */ + prev_noise->noise_log[sfb] = noise; + } + } + + if (prev_noise) { + /* save noise values */ + prev_noise->global_gain = cod_info->global_gain;; + } + + + /*tot_noise *= Max(noise, 1E-20); */ + tot_noise_db += noise; + + if (noise > 0.0) { + int tmp; + + tmp = Max((int)(noise*10 + .5), 1); + res->over_SSD += tmp*tmp; + + over++; + /* multiplying here is adding in dB -but can overflow */ + /*over_noise *= noise; */ + over_noise_db += noise; + } + max_noise=Max(max_noise,noise); + + sfb_noise[sfb] = noise; + } + + res->over_count = over; + res->tot_noise = tot_noise_db; + res->over_noise = over_noise_db; + res->max_noise = max_noise; + + return over; +} + + + + + + + +#ifdef HAVE_GTK +/************************************************************************ + * + * set_pinfo() + * + * updates plotting data + * + * Mark Taylor 2000-??-?? + * + * Robert Hegemann: moved noise/distortion calc into it + * + ************************************************************************/ + +static +void set_pinfo ( + lame_global_flags *gfp, + gr_info * const cod_info, + const III_psy_ratio * const ratio, + const int gr, + const int ch ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int sfb, sfb2; + int j,i,l,start,end,bw; + FLOAT en0,en1; + FLOAT ifqstep = ( cod_info->scalefac_scale == 0 ) ? .5 : 1.0; + int* scalefac = cod_info->scalefac; + + FLOAT l3_xmin[SFBMAX], xfsf[SFBMAX]; + calc_noise_result noise; + + calc_xmin (gfp, ratio, cod_info, l3_xmin); + calc_noise (gfc, cod_info, l3_xmin, xfsf, &noise, 0); + + j = 0; + sfb2 = cod_info->sfb_lmax; + if (cod_info->block_type != SHORT_TYPE && !cod_info->mixed_block_flag) + sfb2 = 22; + for (sfb = 0; sfb < sfb2; sfb++) { + start = gfc->scalefac_band.l[ sfb ]; + end = gfc->scalefac_band.l[ sfb+1 ]; + bw = end - start; + for ( en0 = 0.0; j < end; j++ ) + en0 += cod_info->xr[j] * cod_info->xr[j]; + en0/=bw; + /* convert to MDCT units */ + en1=1e15; /* scaling so it shows up on FFT plot */ + gfc->pinfo-> en[gr][ch][sfb] = en1*en0; + gfc->pinfo->xfsf[gr][ch][sfb] = en1*l3_xmin[sfb]*xfsf[sfb]/bw; + + if (ratio->en.l[sfb]>0 && !gfp->ATHonly) + en0 = en0/ratio->en.l[sfb]; + else + en0=0.0; + + gfc->pinfo->thr[gr][ch][sfb] = + en1*Max(en0*ratio->thm.l[sfb],gfc->ATH->l[sfb]); + + /* there is no scalefactor bands >= SBPSY_l */ + gfc->pinfo->LAMEsfb[gr][ch][sfb] = 0; + if (cod_info->preflag && sfb>=11) + gfc->pinfo->LAMEsfb[gr][ch][sfb] = -ifqstep*pretab[sfb]; + + if (sfb<SBPSY_l) { + assert(scalefac[sfb]>=0); /* scfsi should be decoded by caller side*/ + gfc->pinfo->LAMEsfb[gr][ch][sfb] -= ifqstep*scalefac[sfb]; + } + } /* for sfb */ + + if (cod_info->block_type == SHORT_TYPE) { + sfb2 = sfb; + for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++ ) { + start = gfc->scalefac_band.s[ sfb ]; + end = gfc->scalefac_band.s[ sfb + 1 ]; + bw = end - start; + for ( i = 0; i < 3; i++ ) { + for ( en0 = 0.0, l = start; l < end; l++ ) { + en0 += cod_info->xr[j] * cod_info->xr[j]; + j++; + } + en0=Max(en0/bw,1e-20); + /* convert to MDCT units */ + en1=1e15; /* scaling so it shows up on FFT plot */ + + gfc->pinfo-> en_s[gr][ch][3*sfb+i] = en1*en0; + gfc->pinfo->xfsf_s[gr][ch][3*sfb+i] = en1*l3_xmin[sfb2]*xfsf[sfb2]/bw; + if (ratio->en.s[sfb][i]>0) + en0 = en0/ratio->en.s[sfb][i]; + else + en0=0.0; + if (gfp->ATHonly || gfp->ATHshort) + en0=0; + + gfc->pinfo->thr_s[gr][ch][3*sfb+i] = + en1*Max(en0*ratio->thm.s[sfb][i],gfc->ATH->s[sfb]); + + /* there is no scalefactor bands >= SBPSY_s */ + gfc->pinfo->LAMEsfb_s[gr][ch][3*sfb+i] + = -2.0*cod_info->subblock_gain[i]; + if (sfb < SBPSY_s) { + gfc->pinfo->LAMEsfb_s[gr][ch][3*sfb+i] -= + ifqstep*scalefac[sfb2]; + } + sfb2++; + } + } + } /* block type short */ + gfc->pinfo->LAMEqss [gr][ch] = cod_info->global_gain; + gfc->pinfo->LAMEmainbits[gr][ch] = cod_info->part2_3_length + cod_info->part2_length; + gfc->pinfo->LAMEsfbits [gr][ch] = cod_info->part2_length; + + gfc->pinfo->over [gr][ch] = noise.over_count; + gfc->pinfo->max_noise [gr][ch] = noise.max_noise * 10.0; + gfc->pinfo->over_noise[gr][ch] = noise.over_noise * 10.0; + gfc->pinfo->tot_noise [gr][ch] = noise.tot_noise * 10.0; + gfc->pinfo->over_SSD [gr][ch] = noise.over_SSD; +} + + +/************************************************************************ + * + * set_frame_pinfo() + * + * updates plotting data for a whole frame + * + * Robert Hegemann 2000-10-21 + * + ************************************************************************/ + +void set_frame_pinfo( + lame_global_flags *gfp, + III_psy_ratio ratio [2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int ch; + int gr; + + gfc->masking_lower = 1.0; + + /* for every granule and channel patch l3_enc and set info + */ + for (gr = 0; gr < gfc->mode_gr; gr ++) { + for (ch = 0; ch < gfc->channels_out; ch ++) { + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + int scalefac_sav[SFBMAX]; + memcpy(scalefac_sav, cod_info->scalefac, sizeof(scalefac_sav)); + + /* reconstruct the scalefactors in case SCFSI was used + */ + if (gr == 1) { + int sfb; + for (sfb = 0; sfb < cod_info->sfb_lmax; sfb++) { + if (cod_info->scalefac[sfb] < 0) /* scfsi */ + cod_info->scalefac[sfb] = gfc->l3_side.tt[0][ch].scalefac[sfb]; + } + } + + set_pinfo (gfp, cod_info, &ratio[gr][ch], gr, ch); + memcpy(cod_info->scalefac, scalefac_sav, sizeof(scalefac_sav)); + } /* for ch */ + } /* for gr */ +} +#endif /* ifdef HAVE_GTK */ + + diff --git a/lame-3.97/libmp3lame/.svn/text-base/quantize_pvt.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/quantize_pvt.h.svn-base new file mode 100644 index 0000000..3f82925 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/quantize_pvt.h.svn-base @@ -0,0 +1,149 @@ +/* + * quantize_pvt include file + * + * Copyright (c) 1999 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_QUANTIZE_PVT_H +#define LAME_QUANTIZE_PVT_H + +#include "l3side.h" +#define IXMAX_VAL 8206 /* ix always <= 8191+15. see count_bits() */ + +/* buggy Winamp decoder cannot handle values > 8191 */ +/* #define IXMAX_VAL 8191 */ + +#define PRECALC_SIZE (IXMAX_VAL+2) + + +extern const int nr_of_sfb_block[6][3][4]; +extern const int pretab[SBMAX_l]; +extern const int slen1_tab[16]; +extern const int slen2_tab[16]; + +extern const scalefac_struct sfBandIndex[9]; + +extern FLOAT pow43[PRECALC_SIZE]; +#ifdef TAKEHIRO_IEEE754_HACK +extern FLOAT adj43asm[PRECALC_SIZE]; +#else +extern FLOAT adj43[PRECALC_SIZE]; +#endif + +#define Q_MAX (256+1) +#define Q_MAX2 116 /* minimum possible number of + -cod_info->global_gain + + ((scalefac[] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + + for long block, 0+((15+3)<<2) = 18*4 = 72 + for short block, 0+(15<<2)+7*8 = 15*4+56 = 116 + */ + +extern FLOAT pow20[Q_MAX+Q_MAX2+1]; +extern FLOAT ipow20[Q_MAX]; +extern FLOAT iipow20[Q_MAX2+1]; + +typedef struct calc_noise_result_t { + FLOAT over_noise; /* sum of quantization noise > masking */ + FLOAT tot_noise; /* sum of all quantization noise */ + FLOAT max_noise; /* max quantization noise */ + int over_count; /* number of quantization noise > masking */ + int over_SSD; /* SSD-like cost of distorted bands */ + int bits; +} calc_noise_result; + + +/** +* allows re-use of previously +* computed noise values +*/ +typedef struct calc_noise_data_t { + int global_gain; + int sfb_count1; + int step[39]; + FLOAT noise[39]; + FLOAT noise_log[39]; +} calc_noise_data; + + +int on_pe (lame_global_flags *gfp, FLOAT pe[2][2], III_side_info_t * l3_side, + int targ_bits[2], int mean_bits, int gr, int cbr); + +void reduce_side (int targ_bits[2], FLOAT ms_ener_ratio, int mean_bits, + int max_bits); + + +int bin_search_StepSize (lame_internal_flags * const gfc, gr_info * const cod_info, + int desired_rate, const int ch, + const FLOAT xrpow[576]); + +void iteration_init (lame_global_flags *gfp); + + +int calc_xmin (lame_global_flags *gfp, + const III_psy_ratio * const ratio, + gr_info * const cod_info, + FLOAT * l3_xmin); + +int calc_noise (const lame_internal_flags * const gfc, + const gr_info * const cod_info, + const FLOAT * l3_xmin, + FLOAT * distort, + calc_noise_result * const res, + calc_noise_data * prev_noise); + +#if defined(HAVE_GTK) +void set_frame_pinfo (lame_global_flags *gfp, + III_psy_ratio ratio[2][2]); +#endif + + + + +/* takehiro.c */ + +int count_bits (lame_internal_flags * const gfc, const FLOAT * const xr, + gr_info * const cod_info, calc_noise_data* prev_noise); +int noquant_count_bits (lame_internal_flags * const gfc, + gr_info * const cod_info, calc_noise_data* prev_noise); + + +void best_huffman_divide (const lame_internal_flags * const gfc, + gr_info * const cod_info); + +void best_scalefac_store (const lame_internal_flags * gfc, const int gr, const int ch, + III_side_info_t * const l3_side); + +int scale_bitcount (gr_info * const cod_info); +int scale_bitcount_lsf (const lame_internal_flags *gfp, + gr_info * const cod_info); + +void huffman_init (lame_internal_flags * const gfc); + +void quantize_init (lame_internal_flags * const gfc); + +void init_xrpow_core_init (lame_internal_flags * const gfc); + +FLOAT athAdjust( FLOAT a, FLOAT x, FLOAT athFloor ); + +#define LARGE_BITS 100000 + +#endif /* LAME_QUANTIZE_PVT_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/reservoir.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/reservoir.c.svn-base new file mode 100644 index 0000000..cca674a --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/reservoir.c.svn-base @@ -0,0 +1,297 @@ +/* + * bit reservoir source file + * + * Copyright (c) 1999-2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: reservoir.c,v 1.29.2.2 2005/11/26 18:37:34 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "bitstream.h" +#include "reservoir.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* + ResvFrameBegin: + Called (repeatedly) at the beginning of a frame. Updates the maximum + size of the reservoir, and checks to make sure main_data_begin + was set properly by the formatter +*/ + +/* + * Background information: + * + * This is the original text from the ISO standard. Because of + * sooo many bugs and irritations correcting comments are added + * in brackets []. A '^W' means you should remove the last word. + * + * 1) The following rule can be used to calculate the maximum + * number of bits used for one granule [^W frame]: + * At the highest possible bitrate of Layer III (320 kbps + * per stereo signal [^W^W^W], 48 kHz) the frames must be of + * [^W^W^W are designed to have] constant length, i.e. + * one buffer [^W^W the frame] length is: + * + * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte + * + * This value is used as the maximum buffer per channel [^W^W] at + * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps + * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit + * [per granule and channel] at 48 kHz sampling frequency. + * This means that there is a maximum deviation (short time buffer + * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps. + * The actual deviation is equal to the number of bytes [with the + * meaning of octets] denoted by the main_data_end offset pointer. + * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits + * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits]. + * ... The xchange of buffer bits between the left and right channel + * is allowed without restrictions [exception: dual channel]. + * Because of the [constructed] constraint on the buffer size + * main_data_end is always set to 0 in the case of bit_rate_index==14, + * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case + * all data are allocated between adjacent header [^W sync] words + * [, i.e. there is no buffering at all]. + */ + +int +ResvFrameBegin(lame_global_flags *gfp, int *mean_bits) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int fullFrameBits; + int resvLimit; + int maxmp3buf; + III_side_info_t *l3_side = &gfc->l3_side; + int frameLength; + + frameLength = getframebits(gfp); + *mean_bits = (frameLength - gfc->sideinfo_len * 8) / gfc->mode_gr; + +/* + * Meaning of the variables: + * resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1)) + * Number of bits can be stored in previous frame(s) due to + * counter size constaints + * maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5)) + * Number of bits allowed to encode one frame (you can take 8*511 bit + * from the bit reservoir and at most 8*1440 bit from the current + * frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible + * value for MPEG-1 and -2) + * + * maximum allowed granule/channel size times 4 = 8*2047 bits., + * so this is the absolute maximum supported by the format. + * + * + * fullFrameBits: maximum number of bits available for encoding + * the current frame. + * + * mean_bits: target number of bits per granule. + * + * frameLength: + * + * gfc->ResvMax: maximum allowed reservoir + * + * gfc->ResvSize: current reservoir size + * + * l3_side->resvDrain_pre: + * ancillary data to be added to previous frame: + * (only usefull in VBR modes if it is possible to have + * maxmp3buf < fullFrameBits)). Currently disabled, + * see #define NEW_DRAIN + * + * l3_side->resvDrain_post: + * ancillary data to be added to this frame: + * + */ + + /* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */ + resvLimit = (8*256)*gfc->mode_gr-8; + + /* maximum allowed frame size. dont use more than this number of + bits, even if the frame has the space for them: */ + if (gfp->brate > 320) { + /* in freeformat the buffer is constant*/ + maxmp3buf = 8*((int)((gfp->brate*1000)/(gfp->out_samplerate / (FLOAT)1152)/8 +.5)); + } else { + /*all mp3 decoders should have enough buffer to handle this value: size of a 320kbps 32kHz frame*/ + maxmp3buf = 8*1440; + + /* Bouvigne suggests this more lax interpretation of the ISO doc + instead of using 8*960. */ + if (gfp->strict_ISO) + maxmp3buf = 8*((int)(320000/(gfp->out_samplerate / (FLOAT)1152)/8 +.5)); + } + + gfc->ResvMax = maxmp3buf - frameLength; + if (gfc->ResvMax > resvLimit) + gfc->ResvMax = resvLimit; + if (gfc->ResvMax < 0 || gfp->disable_reservoir) + gfc->ResvMax = 0; + + fullFrameBits + = *mean_bits * gfc->mode_gr + Min ( gfc->ResvSize, gfc->ResvMax ); + + if (fullFrameBits > maxmp3buf) + fullFrameBits = maxmp3buf; + + assert ( 0 == gfc->ResvMax % 8 ); + assert ( gfc->ResvMax >= 0 ); + + l3_side->resvDrain_pre = 0; +#ifdef HAVE_GTK + if (gfc->pinfo != NULL) { + gfc->pinfo->mean_bits = *mean_bits / 2; /* expected bits per channel per granule [is this also right for mono/stereo, MPEG-1/2 ?] */ + gfc->pinfo->resvsize = gfc->ResvSize; + } +#endif + + return fullFrameBits; +} + + +/* + ResvMaxBits + returns targ_bits: target number of bits to use for 1 granule + extra_bits: amount extra available from reservoir + Mark Taylor 4/99 +*/ +void ResvMaxBits(lame_global_flags *gfp, int mean_bits, int *targ_bits, int *extra_bits, int cbr) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int add_bits; + int ResvSize = gfc->ResvSize, ResvMax = gfc->ResvMax; + + /* conpensate the saved bits used in the 1st granule */ + if (cbr) + ResvSize += mean_bits; + + if (gfc->substep_shaping & 1) + ResvMax *= 0.9; + + *targ_bits = mean_bits ; + + /* extra bits if the reservoir is almost full */ + if (ResvSize*10 > ResvMax*9) { + add_bits= ResvSize - (ResvMax * 9) / 10; + *targ_bits += add_bits; + gfc->substep_shaping |= 0x80; + }else { + add_bits =0 ; + gfc->substep_shaping &= 0x7f; + /* build up reservoir. this builds the reservoir a little slower + * than FhG. It could simple be mean_bits/15, but this was rigged + * to always produce 100 (the old value) at 128kbs */ + /* *targ_bits -= (int) (mean_bits/15.2);*/ + if (!gfp->disable_reservoir && !(gfc->substep_shaping & 1)) + *targ_bits -= .1*mean_bits; + } + + + /* amount from the reservoir we are allowed to use. ISO says 6/10 */ + *extra_bits = + (ResvSize < (gfc->ResvMax*6)/10 ? ResvSize : (gfc->ResvMax*6)/10); + *extra_bits -= add_bits; + + if (*extra_bits < 0) *extra_bits=0; + + +} + +/* + ResvAdjust: + Called after a granule's bit allocation. Readjusts the size of + the reservoir to reflect the granule's usage. +*/ +void +ResvAdjust(lame_internal_flags *gfc,gr_info *gi) +{ + gfc->ResvSize -= gi->part2_3_length + gi->part2_length; +} + + +/* + ResvFrameEnd: + Called after all granules in a frame have been allocated. Makes sure + that the reservoir size is within limits, possibly by adding stuffing + bits. +*/ +void +ResvFrameEnd(lame_internal_flags *gfc, int mean_bits) +{ + int stuffingBits; + int over_bits; + III_side_info_t *l3_side = &gfc->l3_side; + + + gfc->ResvSize += mean_bits * gfc->mode_gr; + stuffingBits=0; + l3_side->resvDrain_post = 0; + l3_side->resvDrain_pre = 0; + + /* we must be byte aligned */ + if ( (over_bits = gfc->ResvSize % 8) != 0 ) + stuffingBits += over_bits; + + + over_bits = (gfc->ResvSize - stuffingBits) - gfc->ResvMax; + if (over_bits > 0) { + assert ( 0 == over_bits % 8 ); + assert ( over_bits >= 0 ); + stuffingBits += over_bits; + } + + +#undef NEW_DRAIN +#ifdef NEW_DRAIN + /* drain as many bits as possible into previous frame ancillary data + * In particular, in VBR mode ResvMax may have changed, and we have + * to make sure main_data_begin does not create a reservoir bigger + * than ResvMax mt 4/00*/ + { + int mdb_bytes = Min(l3_side->main_data_begin*8,stuffingBits)/8; + l3_side->resvDrain_pre += 8*mdb_bytes; + stuffingBits -= 8*mdb_bytes; + gfc->ResvSize -= 8*mdb_bytes; + l3_side->main_data_begin -= mdb_bytes; + + + /* drain just enough to be byte aligned. The remaining bits will + * be added to the reservoir, and we will deal with them next frame. + * If the next frame is at a lower bitrate, it may have a larger ResvMax, + * and we will not have to waste these bits! mt 4/00 */ + assert ( stuffingBits >= 0 ); + l3_side->resvDrain_post += (stuffingBits % 8); + gfc->ResvSize -= stuffingBits % 8; + } +#else + /* drain the rest into this frames ancillary data*/ + l3_side->resvDrain_post += stuffingBits; + gfc->ResvSize -= stuffingBits; +#endif + + return; +} + + + diff --git a/lame-3.97/libmp3lame/.svn/text-base/reservoir.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/reservoir.h.svn-base new file mode 100644 index 0000000..7b63c64 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/reservoir.h.svn-base @@ -0,0 +1,31 @@ +/* + * bit reservoir include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_RESERVOIR_H +#define LAME_RESERVOIR_H + +int ResvFrameBegin(lame_global_flags *gfp, int *mean_bits); +void ResvMaxBits(lame_global_flags *gfp, int mean_bits, int *targ_bits, int *max_bits, int cbr); +void ResvAdjust(lame_internal_flags *gfc,gr_info *gi); +void ResvFrameEnd(lame_internal_flags *gfc, int mean_bits ); + +#endif /* LAME_RESERVOIR_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/set_get.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/set_get.c.svn-base new file mode 100644 index 0000000..83c2997 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/set_get.c.svn-base @@ -0,0 +1,1922 @@ +/* -*- mode: C; mode: fold -*- */ +/* + * set/get functions for lame_global_flags + * + * Copyright (c) 2001-2005 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: set_get.c,v 1.71.2.2 2005/11/26 18:37:34 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "bitstream.h" /* because of compute_flushbits */ + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +#include "set_get.h" + + +/* + * input stream description + */ + +/* number of samples */ +/* it's unlikely for this function to return an error */ +int +lame_set_num_samples( lame_global_flags* gfp, + unsigned long num_samples) +{ + /* default = 2^32-1 */ + + gfp->num_samples = num_samples; + + return 0; +} + +unsigned long +lame_get_num_samples( const lame_global_flags* gfp ) +{ + return gfp->num_samples; +} + + +/* input samplerate */ +int +lame_set_in_samplerate( lame_global_flags* gfp, + int in_samplerate ) +{ + /* input sample rate in Hz, default = 44100 Hz */ + gfp->in_samplerate = in_samplerate; + + return 0; +} + +int +lame_get_in_samplerate( const lame_global_flags* gfp ) +{ + return gfp->in_samplerate; +} + + +/* number of channels in input stream */ +int +lame_set_num_channels( lame_global_flags* gfp, + int num_channels ) +{ + /* default = 2 */ + + if ( 2 < num_channels || 0 == num_channels ) + return -1; /* we don't support more than 2 channels */ + + gfp->num_channels = num_channels; + + return 0; +} + +int +lame_get_num_channels( const lame_global_flags* gfp ) +{ + return gfp->num_channels; +} + + +/* scale the input by this amount before encoding (not used for decoding) */ +int +lame_set_scale( lame_global_flags* gfp, + float scale ) +{ + /* default = 0 */ + gfp->scale = scale; + + return 0; +} + +float +lame_get_scale( const lame_global_flags* gfp ) +{ + return gfp->scale; +} + + +/* scale the channel 0 (left) input by this amount before + encoding (not used for decoding) */ +int +lame_set_scale_left( lame_global_flags* gfp, + float scale ) +{ + /* default = 0 */ + gfp->scale_left = scale; + + return 0; +} + +float +lame_get_scale_left( const lame_global_flags* gfp ) +{ + return gfp->scale_left; +} + + +/* scale the channel 1 (right) input by this amount before + encoding (not used for decoding) */ +int +lame_set_scale_right( lame_global_flags* gfp, + float scale ) +{ + /* default = 0 */ + gfp->scale_right = scale; + + return 0; +} + +float +lame_get_scale_right( const lame_global_flags* gfp ) +{ + return gfp->scale_right; +} + + +/* output sample rate in Hz */ +int +lame_set_out_samplerate( lame_global_flags* gfp, + int out_samplerate ) +{ + /* + * default = 0: LAME picks best value based on the amount + * of compression + * MPEG only allows: + * MPEG1 32, 44.1, 48khz + * MPEG2 16, 22.05, 24 + * MPEG2.5 8, 11.025, 12 + * + * (not used by decoding routines) + */ + gfp->out_samplerate = out_samplerate; + + return 0; +} + +int +lame_get_out_samplerate( const lame_global_flags* gfp ) +{ + return gfp->out_samplerate; +} + + + + +/* + * general control parameters + */ + +/* collect data for an MP3 frame analzyer */ +int +lame_set_analysis( lame_global_flags* gfp, + int analysis ) +{ + /* default = 0 */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > analysis || 1 < analysis ) + return -1; + + gfp->analysis = analysis; + + return 0; +} + +int +lame_get_analysis( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->analysis && 1 >= gfp->analysis ); + + return gfp->analysis; +} + + +/* write a Xing VBR header frame */ +int +lame_set_bWriteVbrTag( lame_global_flags* gfp, + int bWriteVbrTag ) +{ + /* default = 1 (on) for VBR/ABR modes, 0 (off) for CBR mode */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > bWriteVbrTag || 1 < bWriteVbrTag ) + return -1; + + gfp->bWriteVbrTag = bWriteVbrTag; + + return 0; +} + +int +lame_get_bWriteVbrTag( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->bWriteVbrTag && 1 >= gfp->bWriteVbrTag ); + + return gfp->bWriteVbrTag; +} + + + +/* decode only, use lame/mpglib to convert mp3 to wav */ +int +lame_set_decode_only( lame_global_flags* gfp, + int decode_only ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > decode_only || 1 < decode_only ) + return -1; + + gfp->decode_only = decode_only; + + return 0; +} + +int +lame_get_decode_only( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->decode_only && 1 >= gfp->decode_only ); + + return gfp->decode_only; +} + + +/* encode a Vorbis .ogg file */ +/* DEPRECATED */ +int +lame_set_ogg( lame_global_flags* gfp, + int ogg ) +{ + return -1; +} + +int +lame_get_ogg( const lame_global_flags* gfp ) +{ + return 0; +} + + +/* + * Internal algorithm selection. + * True quality is determined by the bitrate but this variable will effect + * quality by selecting expensive or cheap algorithms. + * quality=0..9. 0=best (very slow). 9=worst. + * recommended: 3 near-best quality, not too slow + * 5 good quality, fast + * 7 ok quality, really fast + */ +int +lame_set_quality( lame_global_flags* gfp, + int quality ) +{ + gfp->quality = quality; + + return 0; +} + +int +lame_get_quality( const lame_global_flags* gfp ) +{ + return gfp->quality; +} + + +/* mode = STEREO, JOINT_STEREO, DUAL_CHANNEL (not supported), MONO */ +int +lame_set_mode( lame_global_flags* gfp, + MPEG_mode mode ) +{ + /* default: lame chooses based on compression ratio and input channels */ + + if( 0 > mode || MAX_INDICATOR <= mode ) + return -1; /* Unknown MPEG mode! */ + + gfp->mode = mode; + + return 0; +} + +MPEG_mode +lame_get_mode( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->mode && MAX_INDICATOR > gfp->mode ); + + return gfp->mode; +} + + +/* Us a M/S mode with a switching threshold based on compression ratio */ +/* DEPRECATED */ +int +lame_set_mode_automs( lame_global_flags* gfp, + int mode_automs ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > mode_automs || 1 < mode_automs ) + return -1; + + lame_set_mode( gfp, JOINT_STEREO ); + + return 0; +} + +int +lame_get_mode_automs( const lame_global_flags* gfp ) +{ + return 1; +} + + +/* + * Force M/S for all frames. For testing only. + * Requires mode = 1. + */ +int +lame_set_force_ms( lame_global_flags* gfp, + int force_ms ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > force_ms || 1 < force_ms ) + return -1; + + gfp->force_ms = force_ms; + + return 0; +} + +int +lame_get_force_ms( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->force_ms && 1 >= gfp->force_ms ); + + return gfp->force_ms; +} + + +/* Use free_format. */ +int +lame_set_free_format( lame_global_flags* gfp, + int free_format ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > free_format || 1 < free_format ) + return -1; + + gfp->free_format = free_format; + + return 0; +} + +int +lame_get_free_format( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->free_format && 1 >= gfp->free_format ); + + return gfp->free_format; +} + + + +/* Perform ReplayGain analysis */ +int +lame_set_findReplayGain( lame_global_flags* gfp, + int findReplayGain ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > findReplayGain || 1 < findReplayGain ) + return -1; + + gfp->findReplayGain = findReplayGain; + + return 0; +} + +int +lame_get_findReplayGain( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->findReplayGain && 1 >= gfp->findReplayGain); + + return gfp->findReplayGain; +} + + +/* Decode on the fly. Find the peak sample. If ReplayGain analysis is + enabled then perform it on the decoded data. */ +int +lame_set_decode_on_the_fly( lame_global_flags* gfp, + int decode_on_the_fly ) +{ +#ifndef DECODE_ON_THE_FLY + return -1; +#else + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > decode_on_the_fly || 1 < decode_on_the_fly ) + return -1; + + gfp->decode_on_the_fly = decode_on_the_fly; + + return 0; +#endif +} + +int +lame_get_decode_on_the_fly( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->decode_on_the_fly && 1 >= gfp->decode_on_the_fly ); + + return gfp->decode_on_the_fly; +} + +/* DEPRECATED. same as lame_set_decode_on_the_fly() */ +int +lame_set_findPeakSample( lame_global_flags* gfp, + int arg ) +{ + return lame_set_decode_on_the_fly(gfp, arg); +} + +int +lame_get_findPeakSample( const lame_global_flags* gfp ) +{ + return lame_get_decode_on_the_fly(gfp); +} + +/* DEPRECATED. same as lame_set_findReplayGain() */ +int +lame_set_ReplayGain_input( lame_global_flags* gfp, + int arg ) +{ + return lame_set_findReplayGain(gfp, arg); +} + +int +lame_get_ReplayGain_input( const lame_global_flags* gfp ) +{ + return lame_get_findReplayGain(gfp); +} + +/* DEPRECATED. same as lame_set_decode_on_the_fly() && + lame_set_findReplayGain() */ +int +lame_set_ReplayGain_decode( lame_global_flags* gfp, + int arg ) +{ + if( lame_set_decode_on_the_fly(gfp, arg) < 0 || + lame_set_findReplayGain(gfp, arg) < 0) + return -1; + else + return 0; +} + +int +lame_get_ReplayGain_decode( const lame_global_flags* gfp ) +{ + if (lame_get_decode_on_the_fly(gfp) > 0 && + lame_get_findReplayGain(gfp) > 0) + return 1; + else + return 0; +} + + +/* set and get some gapless encoding flags */ + +int +lame_set_nogap_total( lame_global_flags* gfp, + int the_nogap_total ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nogap_total = the_nogap_total; + return 0; +} + +int +lame_get_nogap_total( const lame_global_flags* gfp ) +{ + return gfp->internal_flags->nogap_total; +} + +int +lame_set_nogap_currentindex( lame_global_flags* gfp, + int the_nogap_index ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nogap_current = the_nogap_index; + return 0; +} + +int +lame_get_nogap_currentindex( const lame_global_flags* gfp ) +{ + return gfp->internal_flags->nogap_current; +} + + +/* message handlers */ +int +lame_set_errorf( lame_global_flags* gfp, + void (*func)( const char*, va_list ) ) +{ + gfp->report.errorf = func; + + return 0; +} + +int +lame_set_debugf( lame_global_flags* gfp, + void (*func)( const char*, va_list ) ) +{ + gfp->report.debugf = func; + + return 0; +} + +int +lame_set_msgf( lame_global_flags* gfp, + void (*func)( const char *, va_list ) ) +{ + gfp->report.msgf = func; + + return 0; +} + + +/* + * Set one of + * - brate + * - compression ratio. + * + * Default is compression ratio of 11. + */ +int +lame_set_brate( lame_global_flags* gfp, + int brate ) +{ + gfp->brate = brate; + + if (brate > 320) { + gfp->disable_reservoir = 1; + } + + return 0; +} + +int +lame_get_brate( const lame_global_flags* gfp ) +{ + return gfp->brate; +} + +int +lame_set_compression_ratio( lame_global_flags* gfp, + float compression_ratio ) +{ + gfp->compression_ratio = compression_ratio; + + return 0; +} + +float +lame_get_compression_ratio( const lame_global_flags* gfp ) +{ + return gfp->compression_ratio; +} + + + + +/* + * frame parameters + */ + +/* Mark as copyright protected. */ +int +lame_set_copyright( lame_global_flags* gfp, + int copyright ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > copyright || 1 < copyright ) + return -1; + + gfp->copyright = copyright; + + return 0; +} + +int +lame_get_copyright( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->copyright && 1 >= gfp->copyright ); + + return gfp->copyright; +} + + +/* Mark as original. */ +int +lame_set_original( lame_global_flags* gfp, + int original ) +{ + /* default = 1 (enabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > original || 1 < original ) + return -1; + + gfp->original = original; + + return 0; +} + +int +lame_get_original( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->original && 1 >= gfp->original ); + + return gfp->original; +} + + +/* + * error_protection. + * Use 2 bytes from each frame for CRC checksum. + */ +int +lame_set_error_protection( lame_global_flags* gfp, + int error_protection ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > error_protection || 1 < error_protection ) + return -1; + + gfp->error_protection = error_protection; + + return 0; +} + +int +lame_get_error_protection( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->error_protection && 1 >= gfp->error_protection ); + + return gfp->error_protection; +} + + +/* + * padding_type. + * PAD_NO = pad no frames + * PAD_ALL = pad all frames + * PAD_ADJUST = adjust padding + */ +int +lame_set_padding_type( lame_global_flags* gfp, + Padding_type padding_type ) +{ + return 0; +} + +Padding_type +lame_get_padding_type( const lame_global_flags* gfp ) +{ + return PAD_ADJUST; +} + + +/* MP3 'private extension' bit. Meaningless. */ +int +lame_set_extension( lame_global_flags* gfp, + int extension ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > extension || 1 < extension ) + return -1; + + gfp->extension = extension; + + return 0; +} + +int +lame_get_extension( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->extension && 1 >= gfp->extension ); + + return gfp->extension; +} + + +/* Enforce strict ISO compliance. */ +int +lame_set_strict_ISO( lame_global_flags* gfp, + int strict_ISO ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > strict_ISO || 1 < strict_ISO ) + return -1; + + gfp->strict_ISO = strict_ISO; + + return 0; +} + +int +lame_get_strict_ISO( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->strict_ISO && 1 >= gfp->strict_ISO ); + + return gfp->strict_ISO; +} + + + + +/******************************************************************** + * quantization/noise shaping + ***********************************************************************/ + +/* Disable the bit reservoir. For testing only. */ +int +lame_set_disable_reservoir( lame_global_flags* gfp, + int disable_reservoir ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > disable_reservoir || 1 < disable_reservoir ) + return -1; + + gfp->disable_reservoir = disable_reservoir; + + return 0; +} + +int +lame_get_disable_reservoir( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->disable_reservoir && 1 >= gfp->disable_reservoir ); + + return gfp->disable_reservoir; +} + + + + +int +lame_set_experimentalX( lame_global_flags* gfp, + int experimentalX ) +{ + lame_set_quant_comp( gfp, experimentalX); + lame_set_quant_comp_short( gfp, experimentalX); + + return 0; +} + +int +lame_get_experimentalX( const lame_global_flags* gfp ) +{ + return lame_get_quant_comp( gfp); +} + + +/* Select a different "best quantization" function. default = 0 */ +int +lame_set_quant_comp( lame_global_flags* gfp, + int quant_type ) +{ + gfp->quant_comp + = quant_type; + + return 0; +} + +int +lame_get_quant_comp( const lame_global_flags* gfp ) +{ + return gfp->quant_comp; +} + + +/* Select a different "best quantization" function. default = 0 */ +int +lame_set_quant_comp_short( lame_global_flags* gfp, + int quant_type ) +{ + gfp->quant_comp_short = quant_type; + + return 0; +} + +int +lame_get_quant_comp_short( const lame_global_flags* gfp ) +{ + return gfp->quant_comp_short; +} + + +/* Another experimental option. For testing only. */ +int +lame_set_experimentalY( lame_global_flags* gfp, + int experimentalY ) +{ + gfp->experimentalY = experimentalY; + + return 0; +} + +int +lame_get_experimentalY( const lame_global_flags* gfp ) +{ + return gfp->experimentalY; +} + + +int +lame_set_experimentalZ( lame_global_flags* gfp, + int experimentalZ ) +{ + return 0; +} + +int +lame_get_experimentalZ( const lame_global_flags* gfp ) +{ + return 0; +} + + +/* Naoki's psycho acoustic model. */ +int +lame_set_exp_nspsytune( lame_global_flags* gfp, + int exp_nspsytune ) +{ + /* default = 0 (disabled) */ + + gfp->exp_nspsytune = exp_nspsytune; + + return 0; +} + +int +lame_get_exp_nspsytune( const lame_global_flags* gfp ) +{ + return gfp->exp_nspsytune; +} + + +int +lame_set_exp_nspsytune2_int( lame_global_flags* gfp, + int adr,int val) +{ + int ret = gfp->exp_nspsytune2.integer[adr]; + + gfp->exp_nspsytune2.integer[adr] = val; + + return ret; +} + + +float +lame_set_exp_nspsytune2_real( lame_global_flags* gfp, + int adr,float val) +{ + float ret = gfp->exp_nspsytune2.real[adr]; + + gfp->exp_nspsytune2.real[adr] = val; + + return ret; +} + + +void * +lame_set_exp_nspsytune2_pointer( lame_global_flags* gfp, + int adr,void *val) +{ + void *ret = gfp->exp_nspsytune2.pointer[adr]; + + gfp->exp_nspsytune2.pointer[adr] = val; + + return ret; +} + + +/******************************************************************** + * VBR control + ***********************************************************************/ + +/* Types of VBR. default = vbr_off = CBR */ +int +lame_set_VBR( lame_global_flags* gfp, + vbr_mode VBR ) +{ + if( 0 > VBR || vbr_max_indicator <= VBR ) + return -1; /* Unknown VBR mode! */ + + gfp->VBR = VBR; + + return 0; +} + +vbr_mode +lame_get_VBR( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->VBR && vbr_max_indicator > gfp->VBR ); + + return gfp->VBR; +} + + +/* + * VBR quality level. + * 0 = highest + * 9 = lowest + */ +int +lame_set_VBR_q( lame_global_flags* gfp, + int VBR_q ) +{ + /* XXX: This should be an enum */ + /* to whoever added this note: why should it be an enum? + do you want to call a specific setting by name? + say VBR quality level red? */ + /* No, but VBR_Q_HIGHEST, VBR_Q_HIGH, ..., VBR_Q_MID, ... + VBR_Q_LOW, VBR_Q_LOWEST (or something like that )and a + VBR_Q_DEFAULT, which aliases the default setting of + e.g. VBR_Q_MID. */ + + + if( 0 > VBR_q || 10 <= VBR_q ) + return -1; /* Unknown VBR quality level! */ + + gfp->VBR_q = VBR_q; +/* lame_set_ATHcurve(gfp, VBR_q); +*/ + return 0; +} + +int +lame_get_VBR_q( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->VBR_q && 10 > gfp->VBR_q ); + + return gfp->VBR_q; +} + + +/* Ignored except for VBR = vbr_abr (ABR mode) */ +int +lame_set_VBR_mean_bitrate_kbps( lame_global_flags* gfp, + int VBR_mean_bitrate_kbps ) +{ + gfp->VBR_mean_bitrate_kbps = VBR_mean_bitrate_kbps; + + return 0; +} + +int +lame_get_VBR_mean_bitrate_kbps( const lame_global_flags* gfp ) +{ + return gfp->VBR_mean_bitrate_kbps; +} + +int +lame_set_VBR_min_bitrate_kbps( lame_global_flags* gfp, + int VBR_min_bitrate_kbps ) +{ + gfp->VBR_min_bitrate_kbps = VBR_min_bitrate_kbps; + + return 0; +} + +int +lame_get_VBR_min_bitrate_kbps( const lame_global_flags* gfp ) +{ + return gfp->VBR_min_bitrate_kbps; +} + +int +lame_set_VBR_max_bitrate_kbps( lame_global_flags* gfp, + int VBR_max_bitrate_kbps ) +{ + gfp->VBR_max_bitrate_kbps = VBR_max_bitrate_kbps; + + return 0; +} + +int +lame_get_VBR_max_bitrate_kbps( const lame_global_flags* gfp ) +{ + return gfp->VBR_max_bitrate_kbps; +} + + +/* + * Strictly enforce VBR_min_bitrate. + * Normally it will be violated for analog silence. + */ +int +lame_set_VBR_hard_min( lame_global_flags* gfp, + int VBR_hard_min ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > VBR_hard_min || 1 < VBR_hard_min ) + return -1; + + gfp->VBR_hard_min = VBR_hard_min; + + return 0; +} + +int +lame_get_VBR_hard_min( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->VBR_hard_min && 1 >= gfp->VBR_hard_min ); + + return gfp->VBR_hard_min; +} + + +/******************************************************************** + * Filtering control + ***********************************************************************/ + +/* + * Freqency in Hz to apply lowpass. + * 0 = default = lame chooses + * -1 = disabled + */ +int +lame_set_lowpassfreq( lame_global_flags* gfp, + int lowpassfreq ) +{ + gfp->lowpassfreq = lowpassfreq; + + return 0; +} + +int +lame_get_lowpassfreq( const lame_global_flags* gfp ) +{ + return gfp->lowpassfreq; +} + + +/* + * Width of transition band (in Hz). + * default = one polyphase filter band + */ +int +lame_set_lowpasswidth( lame_global_flags* gfp, + int lowpasswidth ) +{ + gfp->lowpasswidth = lowpasswidth; + + return 0; +} + +int +lame_get_lowpasswidth( const lame_global_flags* gfp ) +{ + return gfp->lowpasswidth; +} + + +/* + * Frequency in Hz to apply highpass. + * 0 = default = lame chooses + * -1 = disabled + */ +int +lame_set_highpassfreq( lame_global_flags* gfp, + int highpassfreq ) +{ + gfp->highpassfreq = highpassfreq; + + return 0; +} + +int +lame_get_highpassfreq( const lame_global_flags* gfp ) +{ + return gfp->highpassfreq; +} + + +/* + * Width of transition band (in Hz). + * default = one polyphase filter band + */ +int +lame_set_highpasswidth( lame_global_flags* gfp, + int highpasswidth ) +{ + gfp->highpasswidth = highpasswidth; + + return 0; +} + +int +lame_get_highpasswidth( const lame_global_flags* gfp ) +{ + return gfp->highpasswidth; +} + + + + +/* + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + */ + + +int +lame_set_psy_model( lame_global_flags* gfp, + int psy ) +{ + gfp->psymodel = psy; + return 0; +} + +int +lame_get_psy_model( const lame_global_flags* gfp ) +{ + return gfp->psymodel; +} + +/* Adjust masking values. */ +int +lame_set_maskingadjust( lame_global_flags* gfp, + float adjust ) +{ + gfp->maskingadjust = adjust; + return 0; +} + +float +lame_get_maskingadjust( const lame_global_flags* gfp ) +{ + return gfp->maskingadjust; +} + +int +lame_set_maskingadjust_short( lame_global_flags* gfp, + float adjust ) +{ + gfp->maskingadjust_short = adjust; + return 0; +} + +float +lame_get_maskingadjust_short( const lame_global_flags* gfp ) +{ + return gfp->maskingadjust_short; +} + +/* Only use ATH for masking. */ +int +lame_set_ATHonly( lame_global_flags* gfp, + int ATHonly ) +{ + gfp->ATHonly = ATHonly; + + return 0; +} + +int +lame_get_ATHonly( const lame_global_flags* gfp ) +{ + return gfp->ATHonly; +} + + +/* Only use ATH for short blocks. */ +int +lame_set_ATHshort( lame_global_flags* gfp, + int ATHshort ) +{ + gfp->ATHshort = ATHshort; + + return 0; +} + +int +lame_get_ATHshort( const lame_global_flags* gfp ) +{ + return gfp->ATHshort; +} + + +/* Disable ATH. */ +int +lame_set_noATH( lame_global_flags* gfp, + int noATH ) +{ + gfp->noATH = noATH; + + return 0; +} + +int +lame_get_noATH( const lame_global_flags* gfp ) +{ + return gfp->noATH; +} + + +/* Select ATH formula. */ +int +lame_set_ATHtype( lame_global_flags* gfp, + int ATHtype ) +{ + /* XXX: ATHtype should be converted to an enum. */ + gfp->ATHtype = ATHtype; + + return 0; +} + +int +lame_get_ATHtype( const lame_global_flags* gfp ) +{ + return gfp->ATHtype; +} + + +/* Select ATH formula 4 shape. */ +int +lame_set_ATHcurve( lame_global_flags* gfp, + float ATHcurve ) +{ + gfp->ATHcurve = ATHcurve; + + return 0; +} + +float +lame_get_ATHcurve( const lame_global_flags* gfp ) +{ + return gfp->ATHcurve; +} + + +/* Lower ATH by this many db. */ +int +lame_set_ATHlower( lame_global_flags* gfp, + float ATHlower ) +{ + gfp->ATHlower = -ATHlower / 10.0; + return 0; +} + +float +lame_get_ATHlower( const lame_global_flags* gfp ) +{ + return -gfp->ATHlower * 10.0; +} + + +/* Select ATH adaptive adjustment scheme. */ +int +lame_set_athaa_type( lame_global_flags* gfp, + int athaa_type ) +{ + gfp->athaa_type = athaa_type; + return 0; +} + +int +lame_get_athaa_type( const lame_global_flags* gfp ) +{ + return gfp->athaa_type; +} + + +/* Select the loudness approximation used by the ATH adaptive auto-leveling. */ +int +lame_set_athaa_loudapprox( lame_global_flags* gfp, + int athaa_loudapprox ) +{ + ERRORF(gfp->internal_flags, "--athaa-loudapprox is obsolete\n"); + return 0; +} + +int +lame_get_athaa_loudapprox( const lame_global_flags* gfp ) +{ + /* obsolete, the type known under number 2 is the only survival */ + return 2; +} + + +/* Adjust (in dB) the point below which adaptive ATH level adjustment occurs. */ +int +lame_set_athaa_sensitivity( lame_global_flags* gfp, + float athaa_sensitivity ) +{ + gfp->athaa_sensitivity = athaa_sensitivity; + + return 0; +} + +float +lame_get_athaa_sensitivity( const lame_global_flags* gfp ) +{ + return gfp->athaa_sensitivity; +} + + +/* Predictability limit (ISO tonality formula) */ +int +lame_set_cwlimit( lame_global_flags* gfp, + int cwlimit ) +{ + gfp->cwlimit = cwlimit; + + return 0; +} + +int +lame_get_cwlimit( const lame_global_flags* gfp ) +{ + return gfp->cwlimit; +} + + + +/* + * Allow blocktypes to differ between channels. + * default: + * 0 for jstereo => block types coupled + * 1 for stereo => block types may differ + */ +int +lame_set_allow_diff_short( lame_global_flags* gfp, + int allow_diff_short ) +{ + gfp->short_blocks = + allow_diff_short ? short_block_allowed : short_block_coupled; + + return 0; +} + +int +lame_get_allow_diff_short( const lame_global_flags* gfp ) +{ + if ( gfp->short_blocks == short_block_allowed ) + return 1; /* short blocks allowed to differ */ + else + return 0; /* not set, dispensed, forced or coupled */ +} + + +/* Use temporal masking effect */ +int +lame_set_useTemporal( lame_global_flags* gfp, + int useTemporal ) +{ + /* default = 1 (enabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > useTemporal || 1 < useTemporal ) + return -1; + + gfp->useTemporal = useTemporal; + + return 0; +} + +int +lame_get_useTemporal( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->useTemporal && 1 >= gfp->useTemporal ); + + return gfp->useTemporal; +} + + +/* Use inter-channel masking effect */ +int +lame_set_interChRatio( lame_global_flags* gfp, + float ratio ) +{ + /* default = 0.0 (no inter-channel maskin) */ + if (! (0 <= ratio && ratio <= 1.0)) + return -1; + + gfp->interChRatio = ratio; + + return 0; +} + +float +lame_get_interChRatio( const lame_global_flags* gfp ) +{ + assert( (0 <= gfp->interChRatio && gfp->interChRatio <= 1.0) || + (gfp->interChRatio == -1)); + + return gfp->interChRatio; +} + + +/* Use pseudo substep shaping method */ +int +lame_set_substep( lame_global_flags* gfp, + int method ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + /* default = 0.0 (no substep noise shaping) */ + if (! (0 <= method && method <= 7)) + return -1; + + gfc->substep_shaping = method; + return 0; +} + +int +lame_get_substep(const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + assert(0 <= gfc->substep_shaping && gfc->substep_shaping <= 7); + return gfc->substep_shaping; +} + +/* scalefactors scale */ +int +lame_set_sfscale( lame_global_flags* gfp, + int val ) +{ + if (val) + gfp->internal_flags->noise_shaping = 2; + else + gfp->internal_flags->noise_shaping = 1; + return 0; +} + +int +lame_get_sfscale(const lame_global_flags* gfp ) +{ + return (gfp->internal_flags->noise_shaping == 2); +} + +/* subblock gain */ +int +lame_set_subblock_gain(lame_global_flags *gfp, int sbgain) +{ + gfp->internal_flags->subblock_gain = sbgain; + return sbgain; +} + +int +lame_get_subblock_gain(const lame_global_flags * gfp) +{ + return gfp->internal_flags->subblock_gain; +} + + +/* Disable short blocks. */ +int +lame_set_no_short_blocks( lame_global_flags* gfp, + int no_short_blocks ) +{ + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > no_short_blocks || 1 < no_short_blocks ) + return -1; + + gfp->short_blocks = + no_short_blocks ? short_block_dispensed : short_block_allowed; + + return 0; +} + +int +lame_get_no_short_blocks( const lame_global_flags* gfp ) +{ + switch ( gfp->short_blocks ) { + default: + case short_block_not_set: return -1; + case short_block_dispensed: return 1; + case short_block_allowed: + case short_block_coupled: + case short_block_forced: return 0; + } +} + + +/* Force short blocks. */ +int +lame_set_force_short_blocks( lame_global_flags* gfp, + int short_blocks ) +{ + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > short_blocks || 1 < short_blocks ) + return -1; + + if (short_blocks == 1) + gfp->short_blocks = short_block_forced; + else if (gfp->short_blocks == short_block_forced) + gfp->short_blocks = short_block_allowed; + + return 0; +} +int +lame_get_force_short_blocks( const lame_global_flags* gfp ) +{ + switch ( gfp->short_blocks ) { + default: + case short_block_not_set: return -1; + case short_block_dispensed: + case short_block_allowed: + case short_block_coupled: return 0; + case short_block_forced: return 1; + } +} + +int +lame_set_short_threshold_lrm( lame_global_flags* gfp, + float lrm) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nsPsy.attackthre = lrm; + return 0; +} + +float +lame_get_short_threshold_lrm( const lame_global_flags* gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->nsPsy.attackthre; +} + +int +lame_set_short_threshold_s( lame_global_flags* gfp, + float s) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nsPsy.attackthre_s = s; + return 0; +} + +float +lame_get_short_threshold_s( const lame_global_flags* gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->nsPsy.attackthre_s; +} + +int +lame_set_short_threshold( lame_global_flags* gfp, + float lrm, float s) +{ + lame_set_short_threshold_lrm(gfp, lrm); + lame_set_short_threshold_s(gfp, s); + return 0; +} + + +/* + * Input PCM is emphased PCM + * (for instance from one of the rarely emphased CDs). + * + * It is STRONGLY not recommended to use this, because psycho does not + * take it into account, and last but not least many decoders + * ignore these bits + */ +int +lame_set_emphasis( lame_global_flags* gfp, + int emphasis ) +{ + /* XXX: emphasis should be converted to an enum */ + if ( 0 > emphasis || 4 <= emphasis ) + return -1; + + gfp->emphasis = emphasis; + + return 0; +} + +int +lame_get_emphasis( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->emphasis && 4 > gfp->emphasis ); + + return gfp->emphasis; +} + + + + +/***************************************************************/ +/* internal variables, cannot be set... */ +/* provided because they may be of use to calling application */ +/***************************************************************/ + +/* MPEG version. + * 0 = MPEG-2 + * 1 = MPEG-1 + * (2 = MPEG-2.5) + */ +int +lame_get_version( const lame_global_flags* gfp ) +{ + return gfp->version; +} + + +/* Encoder delay. */ +int +lame_get_encoder_delay( const lame_global_flags* gfp ) +{ + return gfp->encoder_delay; +} + +/* padding added to the end of the input */ +int +lame_get_encoder_padding( const lame_global_flags* gfp ) +{ + return gfp->encoder_padding; +} + + +/* Size of MPEG frame. */ +int +lame_get_framesize( const lame_global_flags* gfp ) +{ + return gfp->framesize; +} + + +/* Number of frames encoded so far. */ +int +lame_get_frameNum( const lame_global_flags* gfp ) +{ + return gfp->frameNum; +} + +int +lame_get_mf_samples_to_encode( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->mf_samples_to_encode; +} + +int CDECL lame_get_size_mp3buffer( const lame_global_flags* gfp ) +{ + int size; + compute_flushbits(gfp,&size); + return size; +} + +int +lame_get_RadioGain( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->RadioGain; +} + +int +lame_get_AudiophileGain( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->AudiophileGain; +} + +float +lame_get_PeakSample( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return (float)gfc->PeakSample; +} + +int +lame_get_noclipGainChange( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->noclipGainChange; +} + +float +lame_get_noclipScale( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->noclipScale; +} + + +/* + * LAME's estimate of the total number of frames to be encoded. + * Only valid if calling program set num_samples. + */ +int +lame_get_totalframes( const lame_global_flags* gfp ) +{ + int totalframes; + /* estimate based on user set num_samples: */ + totalframes = + 2 + ((double)gfp->num_samples * gfp->out_samplerate) / + ((double)gfp->in_samplerate * gfp->framesize); + + /* check to see if we underestimated totalframes */ + /* if (totalframes < gfp->frameNum) */ + /* totalframes = gfp->frameNum; */ + + return totalframes; +} + + + + + +int +lame_set_preset( lame_global_flags* gfp, int preset ) +{ + gfp->preset = preset; + return apply_preset(gfp, preset, 1); +} + + + +int +lame_set_asm_optimizations( lame_global_flags* gfp, int optim, int mode) +{ + mode = (mode == 1? 1 : 0); + switch (optim){ + case MMX: { + gfp->asm_optimizations.mmx = mode; + return optim; + } + case AMD_3DNOW: { + gfp->asm_optimizations.amd3dnow = mode; + return optim; + } + case SSE: { + gfp->asm_optimizations.sse = mode; + return optim; + } + default: return optim; + } +} + + + + + +/* + +UNDOCUMENTED, experimental settings. These routines are not prototyped +in lame.h. You should not use them, they are experimental and may +change. + +*/ + + +/* + * just another daily changing developer switch + */ +void lame_set_tune( lame_global_flags* gfp, float val ) +{ + gfp->tune_value_a = val; + gfp->tune = 1; +} + +void lame_set_ms_sparsing( lame_global_flags* gfp, int val ) +{ + gfp->sparsing = val; +} + +int lame_get_ms_sparsing( lame_global_flags* gfp ) +{ + return gfp->sparsing; +} + +void lame_set_ms_sparse_low( lame_global_flags* gfp, float val ) +{ + gfp->sparse_low = val; +} + +float lame_get_ms_sparse_low( lame_global_flags* gfp ) +{ + return gfp->sparse_low; +} + +void lame_set_ms_sparse_high( lame_global_flags* gfp, float val ) +{ + gfp->sparse_high = val; +} + +float lame_get_ms_sparse_high( lame_global_flags* gfp ) +{ + return gfp->sparse_high; +} + + + +/* Custom msfix hack */ +void +lame_set_msfix( lame_global_flags* gfp, double msfix ) +{ + /* default = 0 */ + gfp->msfix = msfix; +} + +float +lame_get_msfix( const lame_global_flags* gfp ) +{ + return gfp->msfix; +} + +int +lame_set_preset_expopts( lame_global_flags* gfp, int preset_expopts ) +{ + + return 0; +} + +int +lame_set_preset_notune( lame_global_flags* gfp, int preset_notune ) +{ + return 0; +} + diff --git a/lame-3.97/libmp3lame/.svn/text-base/set_get.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/set_get.h.svn-base new file mode 100644 index 0000000..50e1bd9 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/set_get.h.svn-base @@ -0,0 +1,95 @@ +/* + * set_get.h -- Internal set/get definitions + * + * Copyright (C) 2003 Gabriel Bouvigne / Lame project + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __SET_GET_H__ +#define __SET_GET_H__ + +#include "lame.h" + + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(WIN32) +#undef CDECL +#define CDECL _cdecl +#else +#define CDECL +#endif + + +/* select psychoacoustic model */ +int CDECL lame_set_psy_model( lame_global_flags *, int); +int CDECL lame_get_psy_model( const lame_global_flags *); + + +void CDECL lame_set_ms_sparsing( lame_global_flags*, int ); +void CDECL lame_set_ms_sparse_low(lame_t , float ); +void CDECL lame_set_ms_sparse_high(lame_t , float ); + + +/* manage short blocks */ +int CDECL lame_set_short_threshold(lame_global_flags *, float, float); +int CDECL lame_set_short_threshold_lrm(lame_global_flags *, float); +float CDECL lame_get_short_threshold_lrm(const lame_global_flags *); +int CDECL lame_set_short_threshold_s(lame_global_flags *, float); +float CDECL lame_get_short_threshold_s(const lame_global_flags *); + + +int CDECL lame_set_vbr_smooth( lame_global_flags *, int); +int CDECL lame_get_vbr_smooth( const lame_global_flags *); + +int CDECL lame_set_maskingadjust( lame_global_flags *, float); +float CDECL lame_get_maskingadjust( const lame_global_flags *); + +int CDECL lame_set_maskingadjust_short( lame_global_flags *, float); +float CDECL lame_get_maskingadjust_short( const lame_global_flags *); + +/* select ATH formula 4 shape */ +int CDECL lame_set_ATHcurve(lame_global_flags *, float); +float CDECL lame_get_ATHcurve(const lame_global_flags *); + +int CDECL lame_set_preset_notune(lame_global_flags *, int); + +/* substep shaping method */ +int CDECL lame_set_substep(lame_global_flags *, int); +int CDECL lame_get_substep(const lame_global_flags *); + +/* scalefactors scale */ +int CDECL lame_set_sfscale(lame_global_flags *, int); +int CDECL lame_get_sfscale(const lame_global_flags *); + +/* subblock gain */ +int CDECL lame_set_subblock_gain(lame_global_flags *, int); +int CDECL lame_get_subblock_gain(const lame_global_flags *); + + + +/*presets*/ +int apply_preset(lame_global_flags*, int preset, int enforce); + + + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lame-3.97/libmp3lame/.svn/text-base/tables.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/tables.c.svn-base new file mode 100644 index 0000000..c3ade9b --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/tables.c.svn-base @@ -0,0 +1,513 @@ +/* + * MPEG layer 3 tables source file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: tables.c,v 1.19 2002/12/08 17:02:25 takehiro Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "util.h" +#include "tables.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +static const short t1HB[] = { + 1, 1, + 1, 0}; + +static const short t2HB[] = { + 1, 2, 1, + 3, 1, 1, + 3, 2, 0}; + +static const short t3HB[] = { + 3, 2, 1, + 1, 1, 1, + 3, 2, 0}; + +static const short t5HB[] = { + 1, 2, 6, 5, + 3, 1, 4, 4, + 7, 5, 7, 1, + 6, 1, 1, 0}; + +static const short t6HB[] = { + 7, 3, 5, 1, + 6, 2, 3, 2, + 5, 4, 4, 1, + 3, 3, 2, 0}; + +static const short t7HB[] = { + 1, 2,10,19,16,10, + 3, 3, 7,10, 5, 3, + 11, 4,13,17, 8, 4, + 12,11,18,15,11, 2, + 7, 6, 9,14, 3, 1, + 6, 4, 5, 3, 2, 0}; + +static const short t8HB[] = { + 3, 4, 6, 18,12, 5, + 5, 1, 2, 16, 9, 3, + 7, 3, 5, 14, 7, 3, + 19,17,15, 13,10, 4, + 13, 5, 8, 11, 5, 1, + 12, 4, 4, 1, 1, 0}; + +static const short t9HB[] = { + 7, 5, 9, 14, 15, 7, + 6, 4, 5, 5, 6, 7, + 7, 6, 8, 8, 8, 5, + 15, 6, 9, 10, 5, 1, + 11, 7, 9, 6, 4, 1, + 14, 4, 6, 2, 6, 0}; + +static const short t10HB[] = { + 1, 2, 10, 23, 35, 30, 12, 17, + 3, 3, 8, 12, 18, 21, 12, 7, + 11, 9, 15, 21, 32, 40, 19, 6, + 14,13, 22, 34, 46, 23, 18, 7, + 20,19, 33, 47, 27, 22, 9, 3, + 31,22, 41, 26, 21, 20, 5, 3, + 14,13, 10, 11, 16, 6, 5, 1, + 9, 8, 7, 8, 4, 4, 2, 0}; + +static const short t11HB[] = { + 3, 4, 10, 24, 34, 33, 21, 15, + 5, 3, 4, 10, 32, 17, 11, 10, + 11, 7, 13, 18, 30, 31, 20, 5, + 25,11, 19, 59, 27, 18, 12, 5, + 35,33, 31, 58, 30, 16, 7, 5, + 28,26, 32, 19, 17, 15, 8, 14, + 14,12, 9, 13, 14, 9, 4, 1, + 11, 4, 6, 6, 6, 3, 2, 0}; + +static const short t12HB[] = { + 9, 6, 16, 33, 41, 39, 38,26, + 7, 5, 6, 9, 23, 16, 26,11, + 17, 7, 11, 14, 21, 30, 10, 7, + 17, 10, 15, 12, 18, 28, 14, 5, + 32, 13, 22, 19, 18, 16, 9, 5, + 40, 17, 31, 29, 17, 13, 4, 2, + 27, 12, 11, 15, 10, 7, 4, 1, + 27, 12, 8, 12, 6, 3, 1, 0}; + +static const short t13HB[] = { + 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, + 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, + 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, + 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, + 35, 16, 60, 57, 97, 75,114, 91, 54, 73, 55, 41, 48, 53, 23, 24, + 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17, + 47, 45, 78, 74,115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15, + 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42, + 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16, + 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, + 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, + 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, + 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, + 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3, + 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2, + 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1}; + +static const short t15HB[] = { + 7, 12, 18, 53, 47, 76,124,108, 89,123,108,119,107, 81,122, 63, + 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36, + 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33, + 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29, + 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27, + 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38, + 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30, + 109, 53, 49, 94, 88, 75, 66,122, 91, 73, 56, 42, 64, 44, 21, 25, + 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20, + 71, 34, 67, 60, 58, 49, 88, 76, 67,106, 71, 54, 38, 39, 23, 15, + 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9, + 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11, + 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7, + 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3, + 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1, + 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0}; + +static const short t16HB[] = { + 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17, + 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9, + 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16, + 45, 21, 39, 69, 64,114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26, + 75, 36, 68, 65,115,101, 179,164, 155, 264, 246, 226, 395, 382, 362, 9, + 66, 30, 59, 56,102,185, 173,265, 142, 253, 232, 400, 388, 378, 445, 16, + 111, 54, 52,100,184,178, 160,133, 257, 244, 228, 217, 385, 366, 715, 10, + 98, 48, 91, 88,165,157, 148,261, 248, 407, 397, 372, 380, 889, 884, 8, + 85, 84, 81,159,156,143, 260,249, 427, 401, 392, 383, 727, 713, 708, 7, + 154, 76, 73,141,131,256, 245,426, 406, 394, 384, 735, 359, 710, 352, 11, + 139, 129, 67,125,247,233, 229,219, 393, 743, 737, 720, 885, 882, 439, 4, + 243, 120,118,115,227,223, 396,746, 742, 736, 721, 712, 706, 223, 436, 6, + 202, 224,222,218,216,389, 386,381, 364, 888, 443, 707, 440, 437,1728, 4, + 747, 211,210,208,370,379, 734,723, 714,1735, 883, 877, 876,3459, 865, 2, + 377, 369,102,187,726,722, 358,711, 709, 866,1734, 871,3458, 870, 434, 0, + 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3}; + +static const short t24HB[] = { + 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88, + 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42, + 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18, + 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16, + 147, 72, 69,135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14, + 263, 66,129,126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12, + 249,123,121,117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10, + 435,115,111,109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17, + 427,212,208,205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16, + 335,199,197,191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11, + 668,184,183,179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, + 652,346,171,168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6, + 648,322,316,312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, + 620,300,296,294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, + 1033,280,278,274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0, + 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3}; + +static const short t32HB[] = { + 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3, + 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4}; + +static const short t33HB[] = { + 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3, + 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4}; + + +const char t1l[] = { + 1, 4, + 3, 5}; + +const char t2l[] = { + 1, 4, 7, + 4, 5, 7, + 6, 7, 8}; + +const char t3l[] = { + 2, 3, 7, + 4, 4, 7, + 6, 7, 8}; + +const char t5l[] = { + 1, 4, 7, 8, + 4, 5, 8, 9, + 7, 8, 9, 10, + 8, 8, 9, 10}; + +const char t6l[] = { + 3, 4, 6, 8, + 4, 4, 6, 7, + 5, 6, 7, 8, + 7, 7, 8, 9}; + +const char t7l[] = { + 1, 4, 7, 9, 9, 10, + 4, 6, 8, 9, 9, 10, + 7, 7, 9, 10, 10, 11, + 8, 9, 10, 11, 11, 11, + 8, 9, 10, 11, 11, 12, + 9, 10, 11, 12, 12, 12}; + +const char t8l[] = { + 2, 4, 7, 9, 9, 10, + 4, 4, 6, 10, 10, 10, + 7, 6, 8, 10, 10, 11, + 9, 10, 10, 11, 11, 12, + 9, 9, 10, 11, 12, 12, +10, 10, 11, 11, 13, 13}; + +const char t9l[] = { + 3, 4, 6, 7, 9, 10, + 4, 5, 6, 7, 8, 10, + 5, 6, 7, 8, 9, 10, + 7, 7, 8, 9, 9, 10, + 8, 8, 9, 9, 10, 11, + 9, 9, 10, 10, 11, 11}; + +const char t10l[] = { + 1, 4, 7, 9, 10, 10, 10, 11, + 4, 6, 8, 9, 10, 11, 10, 10, + 7, 8, 9, 10, 11, 12, 11, 11, + 8, 9, 10, 11, 12, 12, 11, 12, + 9, 10, 11, 12, 12, 12, 12, 12, +10, 11, 12, 12, 13, 13, 12, 13, + 9, 10, 11, 12, 12, 12, 13, 13, +10, 10, 11, 12, 12, 13, 13, 13}; + +const char t11l[] = { + 2, 4, 6, 8, 9, 10, 9, 10, + 4, 5, 6, 8, 10, 10, 9, 10, + 6, 7, 8, 9, 10, 11, 10, 10, + 8, 8, 9, 11, 10, 12, 10, 11, + 9, 10, 10, 11, 11, 12, 11, 12, + 9, 10, 11, 12, 12, 13, 12, 13, + 9, 9, 9, 10, 11, 12, 12, 12, + 9, 9, 10, 11, 12, 12, 12, 12}; + +const char t12l[] = { + 4, 4, 6, 8, 9, 10, 10, 10, + 4, 5, 6, 7, 9, 9, 10, 10, + 6, 6, 7, 8, 9, 10, 9, 10, + 7, 7, 8, 8, 9, 10, 10, 10, + 8, 8, 9, 9, 10, 10, 10, 11, + 9, 9, 10, 10, 10, 11, 10, 11, + 9, 9, 9, 10, 10, 11, 11, 12, +10, 10, 10, 11, 11, 11, 11, 12}; + +const char t13l[] = { + 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14, + 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14, + 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15, + 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15, + 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16, +10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16, +10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16, +11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18, +10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17, +11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17, +11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19, +12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18, +12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18, +13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18, +14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18, +13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18}; + +const char t15l[] = { + 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14, + 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, + 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, + 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, + 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, + 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, +10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, +10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14, +10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14, +10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, +11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14, +11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, +12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15, +12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, +13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15, +13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15}; + +const char t16_5l[] = { + 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11, + 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11, + 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12, + 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13, +10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12, +10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13, +11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13, +11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13, +11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13, +12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14, +12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13, +13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14, +13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14, +15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14, +14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14, +11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12}; + +const char t16l[] = { + 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10, + 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10, + 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11, + 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12, +10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11, +10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12, +11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12, +11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12, +11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12, +12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13, +12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12, +13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13, +13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13, +15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13, +14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13, +10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10}; + +const char t24l[] = { + 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10, + 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10, + 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9, + 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9, + 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9, +10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9, +10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9, +11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10, +11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10, +11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10, +12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, +12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, +12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10, +12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10, +13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6}; + +const char t32l[] = { + 1+0, 4+1, 4+1, 5+2, 4+1, 6+2, 5+2, 6+3, + 4+1, 5+2, 5+2, 6+3, 5+2, 6+3, 6+3, 6+4}; + +const char t33l[] = { + 4+0, 4+1, 4+1, 4+2, 4+1, 4+2, 4+2, 4+3, + 4+1, 4+2, 4+2, 4+3, 4+2, 4+3, 4+3, 4+4}; + + +const struct huffcodetab ht[HTN] = +{ + /* xlen, linmax, table, hlen */ + { 0, 0,NULL,NULL}, + { 2, 0,t1HB, t1l}, + { 3, 0,t2HB, t2l}, + { 3, 0,t3HB, t3l}, + { 0, 0,NULL,NULL},/* Apparently not used */ + { 4, 0,t5HB, t5l}, + { 4, 0,t6HB, t6l}, + { 6, 0,t7HB, t7l}, + { 6, 0,t8HB, t8l}, + { 6, 0,t9HB, t9l}, + { 8, 0,t10HB, t10l}, + { 8, 0,t11HB, t11l}, + { 8, 0,t12HB, t12l}, + {16, 0,t13HB, t13l}, + { 0, 0,NULL, t16_5l},/* Apparently not used */ + {16, 0,t15HB, t15l}, + + { 1, 1,t16HB, t16l}, + { 2, 3,t16HB, t16l}, + { 3, 7,t16HB, t16l}, + { 4, 15,t16HB, t16l}, + { 6, 63,t16HB, t16l}, + { 8, 255,t16HB, t16l}, + {10,1023,t16HB, t16l}, + {13,8191,t16HB, t16l}, + + { 4, 15,t24HB, t24l}, + { 5, 31,t24HB, t24l}, + { 6, 63,t24HB, t24l}, + { 7, 127,t24HB, t24l}, + { 8, 255,t24HB, t24l}, + { 9, 511,t24HB, t24l}, + {11,2047,t24HB, t24l}, + {13,8191,t24HB, t24l}, + + { 0, 0,t32HB, t32l}, + { 0, 0,t33HB, t33l}, +}; + + + + + +/* for (i = 0; i < 16*16; i++) { + * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i]; + * } + */ +const unsigned int largetbl[16*16] = { +0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b, +0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a, +0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b, +0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a, +0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b, +0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009, +0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b, +0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009, +0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b, +0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009, +0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b, +0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009, +0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b, +0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009, +0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, +0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a, +0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, +0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a, +0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c, +0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a, +0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, +0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a, +0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c, +0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a, +0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, +0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a, +0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c, +0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a, +0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d, +0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a, +0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009, +0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006 +}; + +/* for (i = 0; i < 3*3; i++) { + * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i]; + * } + */ +const unsigned int table23[3*3] = { +0x010002, 0x040003, 0x070007, +0x040004, 0x050004, 0x070007, +0x060006, 0x070007, 0x080008 +}; + +/* for (i = 0; i < 4*4; i++) { + * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i]; + * } + */ +const unsigned int table56[4*4] = { +0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007, +0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009 +}; + + + +/* + * 0: MPEG-2 LSF + * 1: MPEG-1 + * 2: MPEG-2.5 LSF FhG extention (1995-07-11 shn) + */ + +typedef enum { + MPEG_2 = 0, + MPEG_1 = 1, + MPEG_25 = 2 +} MPEG_t; + +const int bitrate_table [3] [16] = { + { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1 }, + { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1 }, + { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1 }, +}; + +const int samplerate_table [3] [4] = { + { 22050, 24000, 16000, -1 }, /* MPEG 2 */ + { 44100, 48000, 32000, -1 }, /* MPEG 1 */ + { 11025, 12000, 8000, -1 }, /* MPEG 2.5 */ +}; + +const char* version_string [3] = { "2", "1", "2.5" }; + +const unsigned header_word [3] = { 0xFFF00000, 0xFFF80000, 0xFFE00000 }; + +/* This is the scfsi_band table from 2.4.2.7 of the IS */ +const int scfsi_band[5] = { 0, 6, 11, 16, 21 }; + +/* end of tables.c */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/tables.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/tables.h.svn-base new file mode 100644 index 0000000..3866b1a --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/tables.h.svn-base @@ -0,0 +1,94 @@ +/* + * MPEG layer 3 tables include file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_TABLES_H +#define LAME_TABLES_H + +#include "machine.h" + +typedef struct { + unsigned char no; + unsigned char width; + unsigned char minval_2; + float quiet_thr; + float norm; + float bark; +} type1_t; + +typedef struct { + unsigned char no; + unsigned char width; + float quiet_thr; + float norm; + float SNR; + float bark; +} type2_t; + +typedef struct { + unsigned int no : 5; + unsigned int cbw : 3; + unsigned int bu : 6; + unsigned int bo : 6; + unsigned int w1_576 : 10; + unsigned int w2_576 : 10; +} type34_t; + +typedef struct { + size_t len1; + const type1_t* const tab1; + size_t len2; + const type2_t* const tab2; + size_t len3; + const type34_t* const tab3; + size_t len4; + const type34_t* const tab4; +} type5_t; + +extern const type5_t table5 [6]; + + + +#define HTN 34 + +struct huffcodetab { + const int xlen; /* max. x-index+ */ + const int linmax; /* max number to be stored in linbits */ + const short* table; /* pointer to array[xlen][ylen] */ + const char* hlen; /* pointer to array[xlen][ylen] */ +}; + +extern const struct huffcodetab ht [HTN]; + /* global memory block */ + /* array of all huffcodtable headers */ + /* 0..31 Huffman code table 0..31 */ + /* 32,33 count1-tables */ + +extern const char t32l []; +extern const char t33l []; + +extern const unsigned int largetbl [16*16]; +extern const unsigned int table23 [3*3]; +extern const unsigned int table56 [4*4]; + +extern const int scfsi_band[5]; + +#endif /* LAME_TABLES_H */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/takehiro.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/takehiro.c.svn-base new file mode 100644 index 0000000..5f32b8e --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/takehiro.c.svn-base @@ -0,0 +1,1438 @@ +/* + * MP3 huffman table selecting and bit counting + * + * Copyright (c) 1999-2005 Takehiro TOMINAGA + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: takehiro.c,v 1.61.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "l3side.h" +#include "tables.h" +#include "quantize_pvt.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +static const struct +{ + const int region0_count; + const int region1_count; +} subdv_table[ 23 ] = +{ +{0, 0}, /* 0 bands */ +{0, 0}, /* 1 bands */ +{0, 0}, /* 2 bands */ +{0, 0}, /* 3 bands */ +{0, 0}, /* 4 bands */ +{0, 1}, /* 5 bands */ +{1, 1}, /* 6 bands */ +{1, 1}, /* 7 bands */ +{1, 2}, /* 8 bands */ +{2, 2}, /* 9 bands */ +{2, 3}, /* 10 bands */ +{2, 3}, /* 11 bands */ +{3, 4}, /* 12 bands */ +{3, 4}, /* 13 bands */ +{3, 4}, /* 14 bands */ +{4, 5}, /* 15 bands */ +{4, 5}, /* 16 bands */ +{4, 6}, /* 17 bands */ +{5, 6}, /* 18 bands */ +{5, 6}, /* 19 bands */ +{5, 7}, /* 20 bands */ +{6, 7}, /* 21 bands */ +{6, 7}, /* 22 bands */ +}; + + + + + +/********************************************************************* + * nonlinear quantization of xr + * More accurate formula than the ISO formula. Takes into account + * the fact that we are quantizing xr -> ix, but we want ix^4/3 to be + * as close as possible to x^4/3. (taking the nearest int would mean + * ix is as close as possible to xr, which is different.) + * + * From Segher Boessenkool <segher@eastsite.nl> 11/1999 + * + * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro + * Tominaga. If you need the ASM code, check CVS circa Aug 2000. + * + * 01/2004: Optimizations by Gabriel Bouvigne + *********************************************************************/ + + + + + +void quantize_lines_xrpow_01(int l, FLOAT istep, const FLOAT* xr, int* ix) +{ + const FLOAT compareval0 = (1.0 - 0.4054)/istep; + + assert (l>0); + l= l>>1; + while (l--) { + *(ix++) = (compareval0 > *xr++) ? 0 : 1; + *(ix++) = (compareval0 > *xr++) ? 0 : 1; + } +} + + + +#ifdef TAKEHIRO_IEEE754_HACK + +typedef union { + float f; + int i; +} fi_union; + +#define MAGIC_FLOAT (65536*(128)) +#define MAGIC_INT 0x4b000000 + + +void quantize_lines_xrpow(int l, FLOAT istep, const FLOAT* xp, int* pi) +{ + fi_union *fi; + int remaining; + + assert (l>0); + + fi = (fi_union *)pi; + + l = l>>1; + remaining = l%2; + l = l>>1; + while (l--) { + double x0 = istep * xp[0]; + double x1 = istep * xp[1]; + double x2 = istep * xp[2]; + double x3 = istep * xp[3]; + + x0 += MAGIC_FLOAT; fi[0].f = x0; + x1 += MAGIC_FLOAT; fi[1].f = x1; + x2 += MAGIC_FLOAT; fi[2].f = x2; + x3 += MAGIC_FLOAT; fi[3].f = x3; + + fi[0].f = x0 + (adj43asm - MAGIC_INT)[fi[0].i]; + fi[1].f = x1 + (adj43asm - MAGIC_INT)[fi[1].i]; + fi[2].f = x2 + (adj43asm - MAGIC_INT)[fi[2].i]; + fi[3].f = x3 + (adj43asm - MAGIC_INT)[fi[3].i]; + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + fi[2].i -= MAGIC_INT; + fi[3].i -= MAGIC_INT; + fi += 4; + xp += 4; + }; + if (remaining) { + double x0 = istep * xp[0]; + double x1 = istep * xp[1]; + + x0 += MAGIC_FLOAT; fi[0].f = x0; + x1 += MAGIC_FLOAT; fi[1].f = x1; + + fi[0].f = x0 + (adj43asm - MAGIC_INT)[fi[0].i]; + fi[1].f = x1 + (adj43asm - MAGIC_INT)[fi[1].i]; + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + } + +} + + +# define ROUNDFAC -0.0946 +void quantize_lines_xrpow_ISO(int l, FLOAT istep, const FLOAT* xp, int* pi) +{ + fi_union *fi; + int remaining; + + assert (l>0); + + fi = (fi_union *)pi; + + l = l>>1; + remaining = l%2; + l = l>>1; + while (l--) { + fi[0].f = istep * xp[0] + (ROUNDFAC + MAGIC_FLOAT); + fi[1].f = istep * xp[1] + (ROUNDFAC + MAGIC_FLOAT); + fi[2].f = istep * xp[2] + (ROUNDFAC + MAGIC_FLOAT); + fi[3].f = istep * xp[3] + (ROUNDFAC + MAGIC_FLOAT); + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + fi[2].i -= MAGIC_INT; + fi[3].i -= MAGIC_INT; + fi+=4; + xp+=4; + }; + if (remaining) { + fi[0].f = istep * xp[0] + (ROUNDFAC + MAGIC_FLOAT); + fi[1].f = istep * xp[1] + (ROUNDFAC + MAGIC_FLOAT); + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + } + +} + + + + + + +#else + +/********************************************************************* + * XRPOW_FTOI is a macro to convert floats to ints. + * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x] + * ROUNDFAC= -0.0946 + * + * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x] + * ROUNDFAC=0.4054 + * + * Note: using floor() or (int) is extremely slow. On machines where + * the TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile + * to write some ASM for XRPOW_FTOI(). + *********************************************************************/ +#define XRPOW_FTOI(src,dest) ((dest) = (int)(src)) +#define QUANTFAC(rx) adj43[rx] +#define ROUNDFAC 0.4054 + + +void quantize_lines_xrpow(int l, FLOAT istep, const FLOAT* xr, int* ix) +{ + int remaining; + + assert (l>0); + + l = l>>1; + remaining = l%2; + l = l>>1; + while (l--) { + FLOAT x0, x1, x2, x3; + int rx0, rx1, rx2, rx3; + + x0 = *xr++ * istep; + x1 = *xr++ * istep; + XRPOW_FTOI(x0, rx0); + x2 = *xr++ * istep; + XRPOW_FTOI(x1, rx1); + x3 = *xr++ * istep; + XRPOW_FTOI(x2, rx2); + x0 += QUANTFAC(rx0); + XRPOW_FTOI(x3, rx3); + x1 += QUANTFAC(rx1); + XRPOW_FTOI(x0,*ix++); + x2 += QUANTFAC(rx2); + XRPOW_FTOI(x1,*ix++); + x3 += QUANTFAC(rx3); + XRPOW_FTOI(x2,*ix++); + XRPOW_FTOI(x3,*ix++); + }; + if (remaining) { + FLOAT x0, x1; + int rx0, rx1; + + x0 = *xr++ * istep; + x1 = *xr++ * istep; + XRPOW_FTOI(x0, rx0); + XRPOW_FTOI(x1, rx1); + x0 += QUANTFAC(rx0); + x1 += QUANTFAC(rx1); + XRPOW_FTOI(x0,*ix++); + XRPOW_FTOI(x1,*ix++); + } + +} + + + +void quantize_lines_xrpow_ISO(int l, FLOAT istep, const FLOAT* xr, int* ix) +{ + + const FLOAT compareval0 = (1.0 - 0.4054)/istep; + const FLOAT compareval1 = (2.0 - 0.4054)/istep; + + assert (l>0); + + /* depending on architecture, it may be worth calculating a few more + compareval's. + + eg. compareval1 = (2.0 - 0.4054)/istep; + .. and then after the first compare do this ... + if compareval1>*xr then ix = 1; + + On a pentium166, it's only worth doing the one compare (as done here), + as the second compare becomes more expensive than just calculating + the value. Architectures with slow FP operations may want to add some + more comparevals. try it and send your diffs statistically speaking + + 73% of all xr*istep values give ix=0 + 16% will give 1 + 4% will give 2 + */ + while (l--) { + if (compareval0 > *xr) { + *(ix++) = 0; + xr++; + } else if (compareval1 > *xr) { + *(ix++) = 1; + xr++; + } else { + /* *(ix++) = (int)( istep*(*(xr++)) + 0.4054); */ + XRPOW_FTOI( istep*(*(xr++)) + ROUNDFAC , *(ix++) ); + } + } + +} + + + + +#endif + + + +/********************************************************************* + * Quantization function + * This function will select which lines to quantize and call the + * proper quantization function + *********************************************************************/ + +static void quantize_xrpow(const FLOAT *xp, int *pi, FLOAT istep, gr_info * const cod_info, calc_noise_data* prev_noise, lame_internal_flags * const gfc) +{ + /* quantize on xr^(3/4) instead of xr */ + int sfb; + int sfbmax; + int j=0; + int prev_data_use; + int *iData; + int accumulate=0; + int accumulate01=0; + int *acc_iData; + const FLOAT *acc_xp; + + iData = pi; + acc_xp = xp; + acc_iData = iData; + + + /* Reusing previously computed data does not seems to work if global gain + is changed. Finding why it behaves this way would allow to use a cache of + previously computed values (let's 10 cached values per sfb) that would + probably provide a noticeable speedup*/ + prev_data_use = (prev_noise && + (cod_info->global_gain == prev_noise->global_gain)); + + if (cod_info->block_type == SHORT_TYPE) + sfbmax = 38; + else + sfbmax = 21; + + for (sfb = 0; sfb <= sfbmax; sfb++) { + int step = -1; + + if (prev_data_use || cod_info->block_type == NORM_TYPE) { + step = + cod_info->global_gain + - ((cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + - cod_info->subblock_gain[cod_info->window[sfb]] * 8; + } + assert( cod_info->width[sfb] >= 0 ); + if (prev_data_use && (prev_noise->step[sfb] == step)){ + /* do not recompute this part, + but compute accumulated lines */ + if (accumulate) { + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + } + if (accumulate01) { + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + } + } else { /*should compute this part*/ + int l; + l = cod_info->width[sfb]; + + if ((j+cod_info->width[sfb])>cod_info->max_nonzero_coeff) { + /*do not compute upper zero part*/ + int usefullsize; + usefullsize = cod_info->max_nonzero_coeff - j +1; + memset(&pi[cod_info->max_nonzero_coeff],0, + sizeof(int)*(576-cod_info->max_nonzero_coeff)); + l = usefullsize; + + if (l<0) { + l = 0; + } + + /* no need to compute higher sfb values */ + sfb = sfbmax + 1; + } + + /*accumulate lines to quantize*/ + if (!accumulate && !accumulate01) { + acc_iData = iData; + acc_xp = xp; + } + if (prev_noise && + prev_noise->sfb_count1 > 0 && + sfb >= prev_noise->sfb_count1 && + prev_noise->step[sfb] > 0 && + step >= prev_noise->step[sfb]) { + + if (accumulate) { + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + acc_iData = iData; + acc_xp = xp; + } + accumulate01 += l; + } else { + if (accumulate01) { + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + acc_iData = iData; + acc_xp = xp; + } + accumulate += l; + } + + if ( l <= 0 ) { + /* rh: 20040215 + * may happen due to "prev_data_use" optimization + */ + if (accumulate01) { + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + } + if (accumulate) { + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + } + + break; /* ends for-loop */ + } + } + if (sfb <= sfbmax) { + iData += cod_info->width[sfb]; + xp += cod_info->width[sfb]; + j += cod_info->width[sfb]; + } + } + if (accumulate) { /*last data part*/ + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + } + if (accumulate01) { /*last data part*/ + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + } + +} + + + + +void quantize_init (lame_internal_flags * const gfc) +{ + if (gfc->quantization) + gfc->quantize_lines_xrpow = quantize_lines_xrpow; + else + gfc->quantize_lines_xrpow = quantize_lines_xrpow_ISO; +} + + + + + +/*************************************************************************/ +/* ix_max */ +/*************************************************************************/ + +int +ix_max(const int *ix, const int *end) +{ + int max1 = 0, max2 = 0; + + do { + int x1 = *ix++; + int x2 = *ix++; + if (max1 < x1) + max1 = x1; + + if (max2 < x2) + max2 = x2; + } while (ix < end); + if (max1 < max2) + max1 = max2; + return max1; +} + + + + + + + + +int +count_bit_ESC( + const int * ix, + const int * const end, + int t1, + const int t2, + int * const s ) +{ + /* ESC-table is used */ + int linbits = ht[t1].xlen * 65536 + ht[t2].xlen; + int sum = 0, sum2; + + do { + int x = *ix++; + int y = *ix++; + + if (x != 0) { + if (x > 14) { + x = 15; + sum += linbits; + } + x *= 16; + } + + if (y != 0) { + if (y > 14) { + y = 15; + sum += linbits; + } + x += y; + } + + sum += largetbl[x]; + } while (ix < end); + + sum2 = sum & 0xffff; + sum >>= 16; + + if (sum > sum2) { + sum = sum2; + t1 = t2; + } + + *s += sum; + return t1; +} + + +inline static int +count_bit_noESC(const int * ix, const int * const end, int * const s) +{ + /* No ESC-words */ + int sum1 = 0; + const char *hlen1 = ht[1].hlen; + + do { + int x = ix[0] * 2 + ix[1]; + ix += 2; + sum1 += hlen1[x]; + } while (ix < end); + + *s += sum1; + return 1; +} + + + +inline static int +count_bit_noESC_from2( + const int * ix, + const int * const end, + int t1, + int * const s ) +{ + /* No ESC-words */ + unsigned int sum = 0, sum2; + const int xlen = ht[t1].xlen; + const unsigned int *hlen; + if (t1 == 2) + hlen = table23; + else + hlen = table56; + + do { + int x = ix[0] * xlen + ix[1]; + ix += 2; + sum += hlen[x]; + } while (ix < end); + + sum2 = sum & 0xffff; + sum >>= 16; + + if (sum > sum2) { + sum = sum2; + t1++; + } + + *s += sum; + return t1; +} + + +inline static int +count_bit_noESC_from3( + const int * ix, + const int * const end, + int t1, + int * const s ) +{ + /* No ESC-words */ + int sum1 = 0; + int sum2 = 0; + int sum3 = 0; + const int xlen = ht[t1].xlen; + const char *hlen1 = ht[t1].hlen; + const char *hlen2 = ht[t1+1].hlen; + const char *hlen3 = ht[t1+2].hlen; + int t; + + do { + int x = ix[0] * xlen + ix[1]; + ix += 2; + sum1 += hlen1[x]; + sum2 += hlen2[x]; + sum3 += hlen3[x]; + } while (ix < end); + + t = t1; + if (sum1 > sum2) { + sum1 = sum2; + t++; + } + if (sum1 > sum3) { + sum1 = sum3; + t = t1+2; + } + *s += sum1; + + return t; +} + + +/*************************************************************************/ +/* choose table */ +/*************************************************************************/ + +/* + Choose the Huffman table that will encode ix[begin..end] with + the fewest bits. + + Note: This code contains knowledge about the sizes and characteristics + of the Huffman tables as defined in the IS (Table B.7), and will not work + with any arbitrary tables. +*/ + +static int choose_table_nonMMX( + const int * ix, + const int * const end, + int * const s ) +{ + int max; + int choice, choice2; + static const int huf_tbl_noESC[] = { + 1, 2, 5, 7, 7,10,10,13,13,13,13,13,13,13,13 + }; + + max = ix_max(ix, end); + + switch (max) { + case 0: + return max; + + case 1: + return count_bit_noESC(ix, end, s); + + case 2: + case 3: + return count_bit_noESC_from2(ix, end, huf_tbl_noESC[max - 1], s); + + case 4: case 5: case 6: + case 7: case 8: case 9: + case 10: case 11: case 12: + case 13: case 14: case 15: + return count_bit_noESC_from3(ix, end, huf_tbl_noESC[max - 1], s); + + default: + /* try tables with linbits */ + if (max > IXMAX_VAL) { + *s = LARGE_BITS; + return -1; + } + max -= 15; + for (choice2 = 24; choice2 < 32; choice2++) { + if (ht[choice2].linmax >= max) { + break; + } + } + + for (choice = choice2 - 8; choice < 24; choice++) { + if (ht[choice].linmax >= max) { + break; + } + } + return count_bit_ESC(ix, end, choice, choice2, s); + } +} + + + +/*************************************************************************/ +/* count_bit */ +/*************************************************************************/ +int noquant_count_bits( + lame_internal_flags * const gfc, + gr_info * const gi, + calc_noise_data* prev_noise) +{ + int bits = 0; + int i, a1, a2; + int *const ix = gi->l3_enc; + + i = Min(576, ((gi->max_nonzero_coeff+2)>>1)<<1); + + if (prev_noise) + prev_noise->sfb_count1 = 0; + + /* Determine count1 region */ + for (; i > 1; i -= 2) + if (ix[i - 1] | ix[i - 2]) + break; + gi->count1 = i; + + /* Determines the number of bits to encode the quadruples. */ + a1 = a2 = 0; + for (; i > 3; i -= 4) { + int p; + /* hack to check if all values <= 1 */ + if ((unsigned int)(ix[i-1] | ix[i-2] | ix[i-3] | ix[i-4]) > 1) + break; + + p = ((ix[i-4] * 2 + ix[i-3]) * 2 + ix[i-2]) * 2 + ix[i-1]; + a1 += t32l[p]; + a2 += t33l[p]; + } + + bits = a1; + gi->count1table_select = 0; + if (a1 > a2) { + bits = a2; + gi->count1table_select = 1; + } + + gi->count1bits = bits; + gi->big_values = i; + if (i == 0) + return bits; + + if (gi->block_type == SHORT_TYPE) { + a1=3*gfc->scalefac_band.s[3]; + if (a1 > gi->big_values) a1 = gi->big_values; + a2 = gi->big_values; + + }else if (gi->block_type == NORM_TYPE) { + assert(i <= 576); /* bv_scf has 576 entries (0..575) */ + a1 = gi->region0_count = gfc->bv_scf[i-2]; + a2 = gi->region1_count = gfc->bv_scf[i-1]; + + assert(a1+a2+2 < SBPSY_l); + a2 = gfc->scalefac_band.l[a1 + a2 + 2]; + a1 = gfc->scalefac_band.l[a1 + 1]; + if (a2 < i) + gi->table_select[2] = gfc->choose_table(ix + a2, ix + i, &bits); + + } else { + gi->region0_count = 7; + /*gi->region1_count = SBPSY_l - 7 - 1;*/ + gi->region1_count = SBMAX_l -1 - 7 - 1; + a1 = gfc->scalefac_band.l[7 + 1]; + a2 = i; + if (a1 > a2) { + a1 = a2; + } + } + + + /* have to allow for the case when bigvalues < region0 < region1 */ + /* (and region0, region1 are ignored) */ + a1 = Min(a1,i); + a2 = Min(a2,i); + + assert( a1 >= 0 ); + assert( a2 >= 0 ); + + /* Count the number of bits necessary to code the bigvalues region. */ + if (0 < a1) + gi->table_select[0] = gfc->choose_table(ix, ix + a1, &bits); + if (a1 < a2) + gi->table_select[1] = gfc->choose_table(ix + a1, ix + a2, &bits); + if (gfc->use_best_huffman == 2) { + gi->part2_3_length = bits; + best_huffman_divide (gfc, gi); + bits = gi->part2_3_length; + } + + + if (prev_noise) { + if (gi->block_type == NORM_TYPE) { + int line = 0; + int sfb = 0; + while (gfc->scalefac_band.l[sfb] < gi->big_values) { + sfb++; + } + prev_noise->sfb_count1 = sfb; + } + } + + return bits; +} + +int count_bits( + lame_internal_flags * const gfc, + const FLOAT * const xr, + gr_info * const gi, + calc_noise_data* prev_noise + ) +{ + int *const ix = gi->l3_enc; + + /* since quantize_xrpow uses table lookup, we need to check this first: */ + FLOAT w = (IXMAX_VAL) / IPOW20(gi->global_gain); + + if (gi->xrpow_max > w) + return LARGE_BITS; + + quantize_xrpow(xr, ix, IPOW20(gi->global_gain), gi, prev_noise, gfc); + + if (gfc->substep_shaping & 2) { + int sfb, j = 0; + /* 0.634521682242439 = 0.5946*2**(.5*0.1875) */ + const FLOAT roundfac = + 0.634521682242439 / IPOW20(gi->global_gain+gi->scalefac_scale); + for (sfb = 0; sfb < gi->sfbmax; sfb++) { + int width = gi->width[sfb]; + int l; + assert( width >= 0 ); + j += width; + if (!gfc->pseudohalf[sfb]) + continue; + for (l = -width; l < 0; l++) + if (xr[j+l] < roundfac) + ix[j+l] = 0.0; + } + } + return noquant_count_bits(gfc, gi, prev_noise); +} +/*********************************************************************** + re-calculate the best scalefac_compress using scfsi + the saved bits are kept in the bit reservoir. + **********************************************************************/ + + +inline static void +recalc_divide_init( + const lame_internal_flags * const gfc, + gr_info *cod_info, + int * const ix, + int r01_bits[], + int r01_div [], + int r0_tbl [], + int r1_tbl [] ) +{ + int r0, r1, bigv, r0t, r1t, bits; + + bigv = cod_info->big_values; + + for (r0 = 0; r0 <= 7 + 15; r0++) { + r01_bits[r0] = LARGE_BITS; + } + + for (r0 = 0; r0 < 16; r0++) { + int a1 = gfc->scalefac_band.l[r0 + 1], r0bits; + if (a1 >= bigv) + break; + r0bits = 0; + r0t = gfc->choose_table(ix, ix + a1, &r0bits); + + for (r1 = 0; r1 < 8; r1++) { + int a2 = gfc->scalefac_band.l[r0 + r1 + 2]; + if (a2 >= bigv) + break; + + bits = r0bits; + r1t = gfc->choose_table(ix + a1, ix + a2, &bits); + if (r01_bits[r0 + r1] > bits) { + r01_bits[r0 + r1] = bits; + r01_div[r0 + r1] = r0; + r0_tbl[r0 + r1] = r0t; + r1_tbl[r0 + r1] = r1t; + } + } + } +} + +inline static void +recalc_divide_sub( + const lame_internal_flags * const gfc, + const gr_info *cod_info2, + gr_info * const gi, + const int * const ix, + const int r01_bits[], + const int r01_div [], + const int r0_tbl [], + const int r1_tbl [] ) +{ + int bits, r2, a2, bigv, r2t; + + bigv = cod_info2->big_values; + + for (r2 = 2; r2 < SBMAX_l + 1; r2++) { + a2 = gfc->scalefac_band.l[r2]; + if (a2 >= bigv) + break; + + bits = r01_bits[r2 - 2] + cod_info2->count1bits; + if (gi->part2_3_length <= bits) + break; + + r2t = gfc->choose_table(ix + a2, ix + bigv, &bits); + if (gi->part2_3_length <= bits) + continue; + + memcpy(gi, cod_info2, sizeof(gr_info)); + gi->part2_3_length = bits; + gi->region0_count = r01_div[r2 - 2]; + gi->region1_count = r2 - 2 - r01_div[r2 - 2]; + gi->table_select[0] = r0_tbl[r2 - 2]; + gi->table_select[1] = r1_tbl[r2 - 2]; + gi->table_select[2] = r2t; + } +} + + + + +void best_huffman_divide( + const lame_internal_flags * const gfc, + gr_info * const gi) +{ + int i, a1, a2; + gr_info cod_info2; + int * const ix = gi->l3_enc; + + int r01_bits[7 + 15 + 1]; + int r01_div[7 + 15 + 1]; + int r0_tbl[7 + 15 + 1]; + int r1_tbl[7 + 15 + 1]; + + + /* SHORT BLOCK stuff fails for MPEG2 */ + if (gi->block_type == SHORT_TYPE && gfc->mode_gr==1) + return; + + + memcpy(&cod_info2, gi, sizeof(gr_info)); + if (gi->block_type == NORM_TYPE) { + recalc_divide_init(gfc, gi, ix, r01_bits,r01_div,r0_tbl,r1_tbl); + recalc_divide_sub(gfc, &cod_info2, gi, ix, r01_bits,r01_div,r0_tbl,r1_tbl); + } + + i = cod_info2.big_values; + if (i == 0 || (unsigned int)(ix[i-2] | ix[i-1]) > 1) + return; + + i = gi->count1 + 2; + if (i > 576) + return; + + /* Determines the number of bits to encode the quadruples. */ + memcpy(&cod_info2, gi, sizeof(gr_info)); + cod_info2.count1 = i; + a1 = a2 = 0; + + assert(i <= 576); + + for (; i > cod_info2.big_values; i -= 4) { + int p = ((ix[i-4] * 2 + ix[i-3]) * 2 + ix[i-2]) * 2 + ix[i-1]; + a1 += t32l[p]; + a2 += t33l[p]; + } + cod_info2.big_values = i; + + cod_info2.count1table_select = 0; + if (a1 > a2) { + a1 = a2; + cod_info2.count1table_select = 1; + } + + cod_info2.count1bits = a1; + + if (cod_info2.block_type == NORM_TYPE) + recalc_divide_sub(gfc, &cod_info2, gi, ix, r01_bits,r01_div,r0_tbl,r1_tbl); + else { + /* Count the number of bits necessary to code the bigvalues region. */ + cod_info2.part2_3_length = a1; + a1 = gfc->scalefac_band.l[7 + 1]; + if (a1 > i) { + a1 = i; + } + if (a1 > 0) + cod_info2.table_select[0] = + gfc->choose_table(ix, ix + a1, (int *)&cod_info2.part2_3_length); + if (i > a1) + cod_info2.table_select[1] = + gfc->choose_table(ix + a1, ix + i, (int *)&cod_info2.part2_3_length); + if (gi->part2_3_length > cod_info2.part2_3_length) + memcpy(gi, &cod_info2, sizeof(gr_info)); + } +} + +static const int slen1_n[16] = { 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8,16,16 }; +static const int slen2_n[16] = { 1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8 }; +const int slen1_tab [16] = { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 }; +const int slen2_tab [16] = { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 }; + +static void +scfsi_calc(int ch, + III_side_info_t *l3_side) +{ + int i, s1, s2, c1, c2; + int sfb; + gr_info *gi = &l3_side->tt[1][ch]; + gr_info *g0 = &l3_side->tt[0][ch]; + + for (i = 0; i < (sizeof(scfsi_band) / sizeof(int)) - 1; i++) { + for (sfb = scfsi_band[i]; sfb < scfsi_band[i + 1]; sfb++) { + if (g0->scalefac[sfb] != gi->scalefac[sfb] + && gi->scalefac[sfb] >= 0) + break; + } + if (sfb == scfsi_band[i + 1]) { + for (sfb = scfsi_band[i]; sfb < scfsi_band[i + 1]; sfb++) { + gi->scalefac[sfb] = -1; + } + l3_side->scfsi[ch][i] = 1; + } + } + + s1 = c1 = 0; + for (sfb = 0; sfb < 11; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; + c1++; + if (s1 < gi->scalefac[sfb]) + s1 = gi->scalefac[sfb]; + } + + s2 = c2 = 0; + for (; sfb < SBPSY_l; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; + c2++; + if (s2 < gi->scalefac[sfb]) + s2 = gi->scalefac[sfb]; + } + + for (i = 0; i < 16; i++) { + if (s1 < slen1_n[i] && s2 < slen2_n[i]) { + int c = slen1_tab[i] * c1 + slen2_tab[i] * c2; + if (gi->part2_length > c) { + gi->part2_length = c; + gi->scalefac_compress = i; + } + } + } +} + +/* +Find the optimal way to store the scalefactors. +Only call this routine after final scalefactors have been +chosen and the channel/granule will not be re-encoded. + */ +void best_scalefac_store( + const lame_internal_flags *gfc, + const int gr, + const int ch, + III_side_info_t * const l3_side) +{ + /* use scalefac_scale if we can */ + gr_info *gi = &l3_side->tt[gr][ch]; + int sfb,i,j,l; + int recalc = 0; + + /* remove scalefacs from bands with ix=0. This idea comes + * from the AAC ISO docs. added mt 3/00 */ + /* check if l3_enc=0 */ + j = 0; + for ( sfb = 0; sfb < gi->sfbmax; sfb++ ) { + int width = gi->width[sfb]; + assert( width >= 0 ); + j += width; + for (l = -width; l < 0; l++) { + if (gi->l3_enc[l+j]!=0) + break; + } + if (l==0) + gi->scalefac[sfb] = recalc = -2; /* anything goes. */ + /* only best_scalefac_store and calc_scfsi + * know--and only they should know--about the magic number -2. + */ + } + + if (!gi->scalefac_scale && !gi->preflag) { + int s = 0; + for (sfb = 0; sfb < gi->sfbmax; sfb++) + if (gi->scalefac[sfb] > 0) + s |= gi->scalefac[sfb]; + + if (!(s & 1) && s != 0) { + for (sfb = 0; sfb < gi->sfbmax; sfb++) + if (gi->scalefac[sfb] > 0) + gi->scalefac[sfb] >>= 1; + + gi->scalefac_scale = recalc = 1; + } + } + + if (!gi->preflag && gi->block_type != SHORT_TYPE && gfc->mode_gr==2) { + for (sfb = 11; sfb < SBPSY_l; sfb++) + if (gi->scalefac[sfb] < pretab[sfb] && gi->scalefac[sfb] != -2) + break; + if (sfb == SBPSY_l) { + for (sfb = 11; sfb < SBPSY_l; sfb++) + if (gi->scalefac[sfb] > 0) + gi->scalefac[sfb] -= pretab[sfb]; + + gi->preflag = recalc = 1; + } + } + + for ( i = 0; i < 4; i++ ) + l3_side->scfsi[ch][i] = 0; + + if (gfc->mode_gr==2 && gr == 1 + && l3_side->tt[0][ch].block_type != SHORT_TYPE + && l3_side->tt[1][ch].block_type != SHORT_TYPE) { + scfsi_calc(ch, l3_side); + recalc = 0; + } + for ( sfb = 0; sfb < gi->sfbmax; sfb++ ) { + if ( gi->scalefac[sfb] == -2 ) { + gi->scalefac[sfb] = 0; /* if anything goes, then 0 is a good choice */ + } + } + if (recalc) { + if (gfc->mode_gr == 2) { + scale_bitcount(gi); + } else { + scale_bitcount_lsf(gfc, gi); + } + } +} + + +#ifndef NDEBUG +static int all_scalefactors_not_negative( int const* scalefac, int n ) +{ + int i; + for ( i = 0; i < n; ++i ) { + if ( scalefac[i] < 0 ) return 0; + } + return 1; +} +#endif + + +/* number of bits used to encode scalefacs */ + +/* 18*slen1_tab[i] + 18*slen2_tab[i] */ +static const int scale_short[16] = { + 0, 18, 36, 54, 54, 36, 54, 72, 54, 72, 90, 72, 90, 108, 108, 126 }; + +/* 17*slen1_tab[i] + 18*slen2_tab[i] */ +static const int scale_mixed[16] = { + 0, 18, 36, 54, 51, 35, 53, 71, 52, 70, 88, 69, 87, 105, 104, 122 }; + +/* 11*slen1_tab[i] + 10*slen2_tab[i] */ +static const int scale_long[16] = { + 0, 10, 20, 30, 33, 21, 31, 41, 32, 42, 52, 43, 53, 63, 64, 74 }; + + +/*************************************************************************/ +/* scale_bitcount */ +/*************************************************************************/ + +/* Also calculates the number of bits necessary to code the scalefactors. */ + +int scale_bitcount(gr_info * const cod_info) +{ + int k, sfb, max_slen1 = 0, max_slen2 = 0; + + /* maximum values */ + const int *tab; + int *scalefac = cod_info->scalefac; + + assert( all_scalefactors_not_negative( scalefac, cod_info->sfbmax ) ); + + if ( cod_info->block_type == SHORT_TYPE ) { + tab = scale_short; + if (cod_info->mixed_block_flag) + tab = scale_mixed; + } + else + { /* block_type == 1,2,or 3 */ + tab = scale_long; + if (!cod_info->preflag) { + for ( sfb = 11; sfb < SBPSY_l; sfb++ ) + if (scalefac[sfb] < pretab[sfb]) + break; + + if (sfb == SBPSY_l) { + cod_info->preflag = 1; + for ( sfb = 11; sfb < SBPSY_l; sfb++ ) + scalefac[sfb] -= pretab[sfb]; + } + } + } + + for (sfb = 0; sfb < cod_info->sfbdivide; sfb++) + if (max_slen1 < scalefac[sfb]) + max_slen1 = scalefac[sfb]; + + for (; sfb < cod_info->sfbmax; sfb++) + if (max_slen2 < scalefac[sfb]) + max_slen2 = scalefac[sfb]; + + /* from Takehiro TOMINAGA <tominaga@isoternet.org> 10/99 + * loop over *all* posible values of scalefac_compress to find the + * one which uses the smallest number of bits. ISO would stop + * at first valid index */ + cod_info->part2_length = LARGE_BITS; + for ( k = 0; k < 16; k++ ) { + if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k] + && cod_info->part2_length > tab[k]) { + cod_info->part2_length=tab[k]; + cod_info->scalefac_compress=k; + } + } + return cod_info->part2_length == LARGE_BITS; +} + + + +/* + table of largest scalefactor values for MPEG2 +*/ +static const int max_range_sfac_tab[6][4] = +{ + { 15, 15, 7, 7}, + { 15, 15, 7, 0}, + { 7, 3, 0, 0}, + { 15, 31, 31, 0}, + { 7, 7, 7, 0}, + { 3, 3, 0, 0} +}; + + + + +/*************************************************************************/ +/* scale_bitcount_lsf */ +/*************************************************************************/ + +/* Also counts the number of bits to encode the scalefacs but for MPEG 2 */ +/* Lower sampling frequencies (24, 22.05 and 16 kHz.) */ + +/* This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS, */ +/* "Audio Decoding Layer III" */ + +int scale_bitcount_lsf(const lame_internal_flags *gfc, + gr_info * const cod_info) +{ + int table_number, row_in_table, partition, nr_sfb, window, over; + int i, sfb, max_sfac[ 4 ]; + const int *partition_table; + int *scalefac = cod_info->scalefac; + + /* + Set partition table. Note that should try to use table one, + but do not yet... + */ + if ( cod_info->preflag ) + table_number = 2; + else + table_number = 0; + + for ( i = 0; i < 4; i++ ) + max_sfac[i] = 0; + + if ( cod_info->block_type == SHORT_TYPE ) + { + row_in_table = 1; + partition_table = &nr_of_sfb_block[table_number][row_in_table][0]; + for ( sfb = 0, partition = 0; partition < 4; partition++ ) + { + nr_sfb = partition_table[ partition ] / 3; + for ( i = 0; i < nr_sfb; i++, sfb++ ) + for ( window = 0; window < 3; window++ ) + if ( scalefac[sfb*3+window] > max_sfac[partition] ) + max_sfac[partition] = scalefac[sfb*3+window]; + } + } + else + { + row_in_table = 0; + partition_table = &nr_of_sfb_block[table_number][row_in_table][0]; + for ( sfb = 0, partition = 0; partition < 4; partition++ ) + { + nr_sfb = partition_table[ partition ]; + for ( i = 0; i < nr_sfb; i++, sfb++ ) + if ( scalefac[sfb] > max_sfac[partition] ) + max_sfac[partition] = scalefac[sfb]; + } + } + + for ( over = 0, partition = 0; partition < 4; partition++ ) + { + if ( max_sfac[partition] > max_range_sfac_tab[table_number][partition] ) + over++; + } + if ( !over ) + { + /* + Since no bands have been over-amplified, we can set scalefac_compress + and slen[] for the formatter + */ + static const int log2tab[] = { 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 }; + + int slen1, slen2, slen3, slen4; + + cod_info->sfb_partition_table = nr_of_sfb_block[table_number][row_in_table]; + for ( partition = 0; partition < 4; partition++ ) + cod_info->slen[partition] = log2tab[max_sfac[partition]]; + + /* set scalefac_compress */ + slen1 = cod_info->slen[ 0 ]; + slen2 = cod_info->slen[ 1 ]; + slen3 = cod_info->slen[ 2 ]; + slen4 = cod_info->slen[ 3 ]; + + switch ( table_number ) + { + case 0: + cod_info->scalefac_compress = (((slen1 * 5) + slen2) << 4) + + (slen3 << 2) + + slen4; + break; + + case 1: + cod_info->scalefac_compress = 400 + + (((slen1 * 5) + slen2) << 2) + + slen3; + break; + + case 2: + cod_info->scalefac_compress = 500 + (slen1 * 3) + slen2; + break; + + default: + ERRORF(gfc,"intensity stereo not implemented yet\n" ); + break; + } + } +#ifdef DEBUG + if ( over ) + ERRORF(gfc, "---WARNING !! Amplification of some bands over limits\n" ); +#endif + if (!over) { + assert( cod_info->sfb_partition_table ); + cod_info->part2_length=0; + for ( partition = 0; partition < 4; partition++ ) + cod_info->part2_length += cod_info->slen[partition] * cod_info->sfb_partition_table[partition]; + } + return over; +} + + + +void huffman_init(lame_internal_flags * const gfc) +{ + int i; + + gfc->choose_table = choose_table_nonMMX; + +#ifdef MMX_choose_table + if (gfc->CPU_features.MMX) { + extern int choose_table_MMX(const int *ix, const int * const end, int * const s); + gfc->choose_table = choose_table_MMX; + } +#endif + + for (i = 2; i <= 576; i += 2) { + int scfb_anz = 0, index; + while (gfc->scalefac_band.l[++scfb_anz] < i) + ; + + index = subdv_table[scfb_anz].region0_count; + while (gfc->scalefac_band.l[index + 1] > i) + index--; + + if (index < 0) { + /* this is an indication that everything is going to + be encoded as region0: bigvalues < region0 < region1 + so lets set region0, region1 to some value larger + than bigvalues */ + index = subdv_table[scfb_anz].region0_count; + } + + gfc->bv_scf[i-2] = index; + + index = subdv_table[scfb_anz].region1_count; + while (gfc->scalefac_band.l[index + gfc->bv_scf[i-2] + 2] > i) + index--; + + if (index < 0) { + index = subdv_table[scfb_anz].region1_count; + } + + gfc->bv_scf[i-1] = index; + } +} + diff --git a/lame-3.97/libmp3lame/.svn/text-base/util.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/util.c.svn-base new file mode 100644 index 0000000..3e6143f --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/util.c.svn-base @@ -0,0 +1,828 @@ +/* + * lame utility library source file + * + * Copyright (c) 1999 Albert L Faber + * Copyright (c) 2000-2005 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: util.c,v 1.117.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#define PRECOMPUTE + +#include "util.h" +#include <ctype.h> +#include <assert.h> +#include <stdarg.h> + +#if defined(__FreeBSD__) && !defined(__alpha__) +# include <machine/floatingpoint.h> +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/*********************************************************************** +* +* Global Function Definitions +* +***********************************************************************/ +/*empty and close mallocs in gfc */ + +void freegfc ( lame_internal_flags* const gfc ) /* bit stream structure */ +{ + int i; + + + for ( i = 0 ; i <= 2*BPC; i++ ) + if ( gfc->blackfilt[i] != NULL ) { + free ( gfc->blackfilt[i] ); + gfc->blackfilt[i] = NULL; + } + if ( gfc->inbuf_old[0] ) { + free ( gfc->inbuf_old[0] ); + gfc->inbuf_old[0] = NULL; + } + if ( gfc->inbuf_old[1] ) { + free ( gfc->inbuf_old[1] ); + gfc->inbuf_old[1] = NULL; + } + + if ( gfc->bs.buf != NULL ) { + free ( gfc->bs.buf ); + gfc->bs.buf = NULL; + } + + if ( gfc->VBR_seek_table.bag ) { + free ( gfc->VBR_seek_table.bag ); + gfc->VBR_seek_table.bag=NULL; + gfc->VBR_seek_table.size=0; + } + if ( gfc->ATH ) { + free ( gfc->ATH ); + } + if ( gfc->PSY ) { + free ( gfc->PSY ); + } + if ( gfc->rgdata ) { + free ( gfc->rgdata ); + } + if ( gfc->s3_ll ) { + /* XXX allocated in psymodel_init() */ + free ( gfc->s3_ll ); + } + if ( gfc->s3_ss ) { + /* XXX allocated in psymodel_init() */ + free ( gfc->s3_ss ); + } + if ( gfc->in_buffer_0 ) { + free ( gfc->in_buffer_0 ); + } + if ( gfc->in_buffer_1 ) { + free ( gfc->in_buffer_1 ); + } + + free ( gfc ); +} + + + +/*those ATH formulas are returning +their minimum value for input = -1*/ + +FLOAT ATHformula_GB(FLOAT f, FLOAT value) +{ + /* from Painter & Spanias + modified by Gabriel Bouvigne to better fit the reality + ath = 3.640 * pow(f,-0.8) + - 6.800 * exp(-0.6*pow(f-3.4,2.0)) + + 6.000 * exp(-0.15*pow(f-8.7,2.0)) + + 0.6* 0.001 * pow(f,4.0); + + + In the past LAME was using the Painter &Spanias formula. + But we had some recurrent problems with HF content. + We measured real ATH values, and found the older formula + to be inacurate in the higher part. So we made this new + formula and this solved most of HF problematic testcases. + The tradeoff is that in VBR mode it increases a lot the + bitrate.*/ + + +/*this curve can be udjusted according to the VBR scale: +it adjusts from something close to Painter & Spanias +on V9 up to Bouvigne's formula for V0. This way the VBR +bitrate is more balanced according to the -V value.*/ + + FLOAT ath; + + if (f < -.3) + f=3410; + + f /= 1000; /* convert to khz */ + f = Max(0.01, f); +/* f = Min(21.0, f); +*/ + ath = 3.640 * pow(f,-0.8) + - 6.800 * exp(-0.6*pow(f-3.4,2.0)) + + 6.000 * exp(-0.15*pow(f-8.7,2.0)) + + (0.6+0.04*value)* 0.001 * pow(f,4.0); + return ath; +} + + + +FLOAT ATHformula(FLOAT f,lame_global_flags *gfp) +{ + switch(gfp->ATHtype) + { + case 0: + return ATHformula_GB(f, 9); + case 1: + return ATHformula_GB(f, -1); /*over sensitive, should probably be removed*/ + case 2: + return ATHformula_GB(f, 0); + case 3: + return ATHformula_GB(f, 1) + 6; /*modification of GB formula by Roel*/ + case 4: + return ATHformula_GB(f,gfp->ATHcurve); + } + + return ATHformula_GB(f, 0); +} + +/* see for example "Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7 */ +FLOAT freq2bark(FLOAT freq) +{ + /* input: freq in hz output: barks */ + if (freq<0) freq=0; + freq = freq * 0.001; + return 13.0*atan(.76*freq) + 3.5*atan(freq*freq/(7.5*7.5)); +} + +/* see for example "Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7 */ +FLOAT freq2cbw(FLOAT freq) +{ + /* input: freq in hz output: critical band width */ + freq = freq * 0.001; + return 25+75*pow(1+1.4*(freq*freq),0.69); +} + + + + + + +#define ABS(A) (((A)>0) ? (A) : -(A)) + +int FindNearestBitrate( +int bRate, /* legal rates from 8 to 320 */ +int version) /* MPEG-1 or MPEG-2 LSF */ +{ + int bitrate = 0; + int i; + + for ( i = 1; i <= 14; i++ ) + if ( ABS (bitrate_table[version][i] - bRate) < ABS (bitrate - bRate) ) + bitrate = bitrate_table [version] [i]; + + return bitrate; +} + + + + + +#ifndef Min +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#endif +#ifndef Max +#define Max(A, B) ((A) > (B) ? (A) : (B)) +#endif + + +/* Used to find table index when + * we need bitrate-based values + * determined using tables + * + * bitrate in kbps + * + * Gabriel Bouvigne 2002-11-03 + */ +int nearestBitrateFullIndex(const int bitrate) +{ + /* borrowed from DM abr presets*/ + + int index; /* resolved range */ + + const int bitrate_table[] = {8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320}; + + + int lower_range = 0, lower_range_kbps = 0, + upper_range = 0, upper_range_kbps = 0; + + + int b; + + + /* We assume specified bitrate will be 320kbps */ + upper_range_kbps = bitrate_table[16]; + upper_range = 16; + lower_range_kbps = bitrate_table[16]; + lower_range = 16; + + /* Determine which significant bitrates the value specified falls between, + * if loop ends without breaking then we were correct above that the value was 320 + */ + for (b = 0; b < 16; b++) { + if ((Max(bitrate, bitrate_table[b+1])) != bitrate) { + upper_range_kbps = bitrate_table[b+1]; + upper_range = b+1; + lower_range_kbps = bitrate_table[b]; + lower_range = (b); + break; /* We found upper range */ + } + } + + /* Determine which range the value specified is closer to */ + if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) + index = lower_range; + else + index = upper_range; + + return index; +} + + + + + +/* map frequency to a valid MP3 sample frequency + * + * Robert Hegemann 2000-07-01 + */ +int map2MP3Frequency(int freq) +{ + if (freq <= 8000) return 8000; + if (freq <= 11025) return 11025; + if (freq <= 12000) return 12000; + if (freq <= 16000) return 16000; + if (freq <= 22050) return 22050; + if (freq <= 24000) return 24000; + if (freq <= 32000) return 32000; + if (freq <= 44100) return 44100; + + return 48000; +} + +int BitrateIndex( +int bRate, /* legal rates from 32 to 448 kbps */ +int version, /* MPEG-1 or MPEG-2/2.5 LSF */ +int samplerate) /* convert bitrate in kbps to index */ +{ + int i; + + for ( i = 0; i <= 14; i++) + if ( bitrate_table [version] [i] == bRate ) + return i; + + return -1; +} + +/* convert samp freq in Hz to index */ + +int SmpFrqIndex ( int sample_freq, int* const version ) +{ + switch ( sample_freq ) { + case 44100: *version = 1; return 0; + case 48000: *version = 1; return 1; + case 32000: *version = 1; return 2; + case 22050: *version = 0; return 0; + case 24000: *version = 0; return 1; + case 16000: *version = 0; return 2; + case 11025: *version = 0; return 0; + case 12000: *version = 0; return 1; + case 8000: *version = 0; return 2; + default: *version = 0; return -1; + } +} + + +/***************************************************************************** +* +* End of bit_stream.c package +* +*****************************************************************************/ + + + + + + + + + + +/* resampling via FIR filter, blackman window */ +inline static FLOAT blackman(FLOAT x,FLOAT fcn,int l) +{ + /* This algorithm from: +SIGNAL PROCESSING ALGORITHMS IN FORTRAN AND C +S.D. Stearns and R.A. David, Prentice-Hall, 1992 + */ + FLOAT bkwn,x2; + FLOAT wcn = (PI * fcn); + + x /= l; + if (x<0) x=0; + if (x>1) x=1; + x2 = x - .5; + + bkwn = 0.42 - 0.5*cos(2*x*PI) + 0.08*cos(4*x*PI); + if (fabs(x2)<1e-9) return wcn/PI; + else + return ( bkwn*sin(l*wcn*x2) / (PI*l*x2) ); + + +} + +/* gcd - greatest common divisor */ +/* Joint work of Euclid and M. Hendry */ + +int gcd ( int i, int j ) +{ +/* assert ( i > 0 && j > 0 ); */ + return j ? gcd(j, i % j) : i; +} + + + +/* copy in new samples from in_buffer into mfbuf, with resampling + if necessary. n_in = number of samples from the input buffer that + were used. n_out = number of samples copied into mfbuf */ + +void fill_buffer(lame_global_flags *gfp, + sample_t *mfbuf[2], + sample_t *in_buffer[2], + int nsamples, int *n_in, int *n_out) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int ch,i; + + /* copy in new samples into mfbuf, with resampling if necessary */ + if ( (gfc->resample_ratio < .9999) || (gfc->resample_ratio > 1.0001) ){ + for (ch = 0; ch < gfc->channels_out; ch++) { + *n_out = + fill_buffer_resample(gfp, &mfbuf[ch][gfc->mf_size], + gfp->framesize, in_buffer[ch], + nsamples, n_in, ch); + } + } + else { + *n_out = Min(gfp->framesize, nsamples); + *n_in = *n_out; + for (i = 0; i < *n_out; ++i) { + mfbuf[0][gfc->mf_size + i] = in_buffer[0][i]; + if (gfc->channels_out == 2) + mfbuf[1][gfc->mf_size + i] = in_buffer[1][i]; + } + } +} + + + + +int fill_buffer_resample( + lame_global_flags *gfp, + sample_t *outbuf, + int desired_len, + sample_t *inbuf, + int len, + int *num_used, + int ch) +{ + + + lame_internal_flags *gfc=gfp->internal_flags; + int BLACKSIZE; + FLOAT offset,xvalue; + int i,j=0,k; + int filter_l; + FLOAT fcn,intratio; + FLOAT *inbuf_old; + int bpc; /* number of convolution functions to pre-compute */ + bpc = gfp->out_samplerate/gcd(gfp->out_samplerate,gfp->in_samplerate); + if (bpc>BPC) bpc = BPC; + + intratio=( fabs(gfc->resample_ratio - floor(.5+gfc->resample_ratio)) < .0001 ); + fcn = 1.00/gfc->resample_ratio; + if (fcn>1.00) fcn=1.00; + filter_l = gfp->quality < 7 ? 31 : 7; + filter_l = 31; + if (0==filter_l % 2 ) --filter_l;/* must be odd */ + filter_l += intratio; /* unless resample_ratio=int, it must be even */ + + + BLACKSIZE = filter_l+1; /* size of data needed for FIR */ + + if ( gfc->fill_buffer_resample_init == 0 ) { + gfc->inbuf_old[0]=calloc(BLACKSIZE,sizeof(gfc->inbuf_old[0][0])); + gfc->inbuf_old[1]=calloc(BLACKSIZE,sizeof(gfc->inbuf_old[0][0])); + for (i=0; i<=2*bpc; ++i) + gfc->blackfilt[i]=calloc(BLACKSIZE,sizeof(gfc->blackfilt[0][0])); + + gfc->itime[0]=0; + gfc->itime[1]=0; + + /* precompute blackman filter coefficients */ + for ( j = 0; j <= 2*bpc; j++ ) { + FLOAT sum = 0.; + offset = (j-bpc) / (2.*bpc); + for ( i = 0; i <= filter_l; i++ ) + sum += + gfc->blackfilt[j][i] = blackman(i-offset,fcn,filter_l); + for ( i = 0; i <= filter_l; i++ ) + gfc->blackfilt[j][i] /= sum; + } + gfc->fill_buffer_resample_init = 1; + } + + inbuf_old=gfc->inbuf_old[ch]; + + /* time of j'th element in inbuf = itime + j/ifreq; */ + /* time of k'th element in outbuf = j/ofreq */ + for (k=0;k<desired_len;k++) { + FLOAT time0; + int joff; + + time0 = k*gfc->resample_ratio; /* time of k'th output sample */ + j = floor( time0 -gfc->itime[ch] ); + + /* check if we need more input data */ + if ((filter_l + j - filter_l/2) >= len) break; + + /* blackman filter. by default, window centered at j+.5(filter_l%2) */ + /* but we want a window centered at time0. */ + offset = ( time0 -gfc->itime[ch] - (j + .5*(filter_l%2))); + assert(fabs(offset)<=.501); + + /* find the closest precomputed window for this offset: */ + joff = floor((offset*2*bpc) + bpc +.5); + + xvalue = 0.; + for (i=0 ; i<=filter_l ; ++i) { + int j2 = i+j-filter_l/2; + sample_t y; + assert(j2<len); + assert(j2+BLACKSIZE >= 0); + y = (j2<0) ? inbuf_old[BLACKSIZE+j2] : inbuf[j2]; +#define PRECOMPUTE +#ifdef PRECOMPUTE + xvalue += y*gfc->blackfilt[joff][i]; +#else + xvalue += y*blackman(i-offset,fcn,filter_l); /* very slow! */ +#endif + } + outbuf[k]=xvalue; + } + + + /* k = number of samples added to outbuf */ + /* last k sample used data from [j-filter_l/2,j+filter_l-filter_l/2] */ + + /* how many samples of input data were used: */ + *num_used = Min(len,filter_l+j-filter_l/2); + + /* adjust our input time counter. Incriment by the number of samples used, + * then normalize so that next output sample is at time 0, next + * input buffer is at time itime[ch] */ + gfc->itime[ch] += *num_used - k*gfc->resample_ratio; + + /* save the last BLACKSIZE samples into the inbuf_old buffer */ + if (*num_used >= BLACKSIZE) { + for (i=0;i<BLACKSIZE;i++) + inbuf_old[i]=inbuf[*num_used + i -BLACKSIZE]; + }else{ + /* shift in *num_used samples into inbuf_old */ + int n_shift = BLACKSIZE-*num_used; /* number of samples to shift */ + + /* shift n_shift samples by *num_used, to make room for the + * num_used new samples */ + for (i=0; i<n_shift; ++i ) + inbuf_old[i] = inbuf_old[i+ *num_used]; + + /* shift in the *num_used samples */ + for (j=0; i<BLACKSIZE; ++i, ++j ) + inbuf_old[i] = inbuf[j]; + + assert(j==*num_used); + } + return k; /* return the number samples created at the new samplerate */ +} + + + + + +/*********************************************************************** +* +* Message Output +* +***********************************************************************/ +void lame_debugf (const lame_internal_flags *gfc, const char* format, ... ) +{ + va_list args; + + va_start ( args, format ); + + if ( gfc->report.debugf != NULL ) { + gfc->report.debugf( format, args ); + } else { + (void) vfprintf ( stderr, format, args ); + fflush ( stderr ); /* an debug function should flush immediately */ + } + + va_end ( args ); +} + + +void lame_msgf (const lame_internal_flags *gfc, const char* format, ... ) +{ + va_list args; + + va_start ( args, format ); + + if ( gfc->report.msgf != NULL ) { + gfc->report.msgf( format, args ); + } else { + (void) vfprintf ( stderr, format, args ); + fflush ( stderr ); /* we print to stderr, so me may want to flush */ + } + + va_end ( args ); +} + + +void lame_errorf (const lame_internal_flags *gfc, const char* format, ... ) +{ + va_list args; + + va_start ( args, format ); + + if ( gfc->report.errorf != NULL ) { + gfc->report.errorf( format, args ); + } else { + (void) vfprintf ( stderr, format, args ); + fflush ( stderr ); /* an error function should flush immediately */ + } + + va_end ( args ); +} + + + +/*********************************************************************** + * + * routines to detect CPU specific features like 3DNow, MMX, SSE + * + * donated by Frank Klemm + * added Robert Hegemann 2000-10-10 + * + ***********************************************************************/ + + +int has_MMX ( void ) +{ +#ifdef HAVE_NASM + extern int has_MMX_nasm ( void ); + return has_MMX_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +int has_3DNow ( void ) +{ +#ifdef HAVE_NASM + extern int has_3DNow_nasm ( void ); + return has_3DNow_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +int has_SSE ( void ) +{ +#ifdef HAVE_NASM + extern int has_SSE_nasm ( void ); + return has_SSE_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +int has_SSE2 ( void ) +{ +#ifdef HAVE_NASM + extern int has_SSE2_nasm ( void ); + return has_SSE2_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +void disable_FPE(void) { +/* extremly system dependent stuff, move to a lib to make the code readable */ +/*==========================================================================*/ + + + + /* + * Disable floating point exceptions + */ + + + + +#if defined(__FreeBSD__) && !defined(__alpha__) + { + /* seet floating point mask to the Linux default */ + fp_except_t mask; + mask = fpgetmask(); + /* if bit is set, we get SIGFPE on that error! */ + fpsetmask(mask & ~(FP_X_INV | FP_X_DZ)); + /* DEBUGF("FreeBSD mask is 0x%x\n",mask); */ + } +#endif + +#if defined(__riscos__) && !defined(ABORTFP) + /* Disable FPE's under RISC OS */ + /* if bit is set, we disable trapping that error! */ + /* _FPE_IVO : invalid operation */ + /* _FPE_DVZ : divide by zero */ + /* _FPE_OFL : overflow */ + /* _FPE_UFL : underflow */ + /* _FPE_INX : inexact */ + DisableFPETraps(_FPE_IVO | _FPE_DVZ | _FPE_OFL); +#endif + + /* + * Debugging stuff + * The default is to ignore FPE's, unless compiled with -DABORTFP + * so add code below to ENABLE FPE's. + */ + +#if defined(ABORTFP) +#if defined(_MSC_VER) + { + + /* set affinity to a single CPU. Fix for EAC/lame on SMP systems from + "Todd Richmond" <todd.richmond@openwave.com> */ + SYSTEM_INFO si; + GetSystemInfo(&si); + SetProcessAffinityMask(GetCurrentProcess(), si.dwActiveProcessorMask); + +#include <float.h> + unsigned int mask; + mask = _controlfp(0, 0); + mask &= ~(_EM_OVERFLOW | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_INVALID); + mask = _controlfp(mask, _MCW_EM); + } +#elif defined(__CYGWIN__) +# define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) +# define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) + +# define _EM_INEXACT 0x00000020 /* inexact (precision) */ +# define _EM_UNDERFLOW 0x00000010 /* underflow */ +# define _EM_OVERFLOW 0x00000008 /* overflow */ +# define _EM_ZERODIVIDE 0x00000004 /* zero divide */ +# define _EM_INVALID 0x00000001 /* invalid */ + { + unsigned int mask; + _FPU_GETCW(mask); + /* Set the FPU control word to abort on most FPEs */ + mask &= ~(_EM_OVERFLOW | _EM_ZERODIVIDE | _EM_INVALID); + _FPU_SETCW(mask); + } +# elif defined(__linux__) + { + +# include <fpu_control.h> +# ifndef _FPU_GETCW +# define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) +# endif +# ifndef _FPU_SETCW +# define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) +# endif + + /* + * Set the Linux mask to abort on most FPE's + * if bit is set, we _mask_ SIGFPE on that error! + * mask &= ~( _FPU_MASK_IM | _FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM ); + */ + + unsigned int mask; + _FPU_GETCW(mask); + mask &= ~(_FPU_MASK_IM | _FPU_MASK_ZM | _FPU_MASK_OM); + _FPU_SETCW(mask); + } +#endif +#endif /* ABORTFP */ +} + + + + + +#ifdef USE_FAST_LOG +/*********************************************************************** + * + * Fast Log Approximation for log2, used to approximate every other log + * (log10 and log) + * maximum absolute error for log10 is around 10-6 + * maximum *relative* error can be high when x is almost 1 because error/log10(x) tends toward x/e + * + * use it if typical RESULT values are > 1e-5 (for example if x>1.00001 or x<0.99999) + * or if the relative precision in the domain around 1 is not important (result in 1 is exact and 0) + * + ***********************************************************************/ + + +#define LOG2_SIZE (512) +#define LOG2_SIZE_L2 (9) + +static ieee754_float32_t log_table[LOG2_SIZE+1]; + + + +void init_log_table(void) +{ + int j; + static int init = 0; + + /* Range for log2(x) over [1,2[ is [0,1[ */ + assert((1<<LOG2_SIZE_L2)==LOG2_SIZE); + + if(!init) { + for(j=0; j<LOG2_SIZE+1; j++) + log_table[j] = log(1.0f+j/(ieee754_float32_t)LOG2_SIZE)/log(2.0f); + } + init = 1; +} + + + +ieee754_float32_t fast_log2(ieee754_float32_t x) +{ + ieee754_float32_t log2val, partial; + union { + ieee754_float32_t f; + int i; + } fi; + int mantisse; + fi.f = x; + mantisse = fi.i & 0x7fffff; + log2val = ((fi.i>>23) & 0xFF)-0x7f; + partial = (mantisse & ((1<<(23-LOG2_SIZE_L2))-1)); + partial *= 1.0f/((1<<(23-LOG2_SIZE_L2))); + + + mantisse >>= (23-LOG2_SIZE_L2); + + /* log2val += log_table[mantisse]; without interpolation the results are not good */ + log2val += log_table[mantisse] * (1.0f-partial) + log_table[mantisse+1]*partial; + + return log2val; +} + +#else /* Don't use FAST_LOG */ + + +void init_log_table(void) +{ +} + + +#endif + +/* end of util.c */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/util.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/util.h.svn-base new file mode 100644 index 0000000..206c490 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/util.h.svn-base @@ -0,0 +1,551 @@ +/* + * lame utility library include file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_UTIL_H +#define LAME_UTIL_H + +/*********************************************************************** +* +* Global Include Files +* +***********************************************************************/ +#include "machine.h" +#include "encoder.h" +#include "lame.h" +#include "lame_global_flags.h" +#include "lame-analysis.h" +#include "id3tag.h" +#include "gain_analysis.h" + +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*********************************************************************** +* +* Global Definitions +* +***********************************************************************/ + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE (!FALSE) +#endif + +#ifdef UINT_MAX +# define MAX_U_32_NUM UINT_MAX +#else +# define MAX_U_32_NUM 0xFFFFFFFF +#endif + +#ifndef PI +# ifdef M_PI +# define PI M_PI +# else +# define PI 3.14159265358979323846 +# endif +#endif + + +#ifdef M_LN2 +# define LOG2 M_LN2 +#else +# define LOG2 0.69314718055994530942 +#endif + +#ifdef M_LN10 +# define LOG10 M_LN10 +#else +# define LOG10 2.30258509299404568402 +#endif + + +#ifdef M_SQRT2 +# define SQRT2 M_SQRT2 +#else +# define SQRT2 1.41421356237309504880 +#endif + + +#define HAN_SIZE 512 +#define CRC16_POLYNOMIAL 0x8005 +#define MAX_BITS 4095 + +/* "bit_stream.h" Definitions */ +#define BUFFER_SIZE LAME_MAXMP3BUFFER + +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#define Max(A, B) ((A) > (B) ? (A) : (B)) + +/* log/log10 approximations */ +#ifdef USE_FAST_LOG +#define FAST_LOG10(x) (fast_log2(x)*(LOG2/LOG10)) +#define FAST_LOG(x) (fast_log2(x)*LOG2) +#define FAST_LOG10_X(x,y) (fast_log2(x)*(LOG2/LOG10*(y))) +#define FAST_LOG_X(x,y) (fast_log2(x)*(LOG2*(y))) +#else +#define FAST_LOG10(x) log10(x) +#define FAST_LOG(x) log(x) +#define FAST_LOG10_X(x,y) (log10(x)*(y)) +#define FAST_LOG_X(x,y) (log(x)*(y)) +#endif + + + + +/*********************************************************************** +* +* Global Type Definitions +* +***********************************************************************/ + + + + /* "bit_stream.h" Type Definitions */ + + typedef struct bit_stream_struc { + unsigned char *buf; /* bit stream buffer */ + int buf_size; /* size of buffer (in number of bytes) */ + int totbit; /* bit counter of bit stream */ + int buf_byte_idx; /* pointer to top byte in buffer */ + int buf_bit_idx; /* pointer to top bit of top byte in buffer */ + + /* format of file in rd mode (BINARY/ASCII) */ + } Bit_stream_struc; + +#include "l3side.h" + + + /* variables used for --nspsytune */ + typedef struct { + /* variables for nspsytune */ + FLOAT last_en_subshort[4][9]; + int last_attacks[4]; + FLOAT pefirbuf[19]; + FLOAT longfact[SBMAX_l]; + FLOAT shortfact[SBMAX_s]; + + /* short block tuning */ + FLOAT attackthre; + FLOAT attackthre_s; + + /* variables for nspsytune2 */ + FILE *pass1fp; + } nsPsy_t; + + + typedef struct { + int sum; /* what we have seen so far */ + int seen; /* how many frames we have seen in this chunk */ + int want; /* how many frames we want to collect into one chunk */ + int pos; /* actual position in our bag */ + int size; /* size of our bag */ + int *bag; /* pointer to our bag */ + } VBR_seek_info_t; + + + /** + * ATH related stuff, if something new ATH related has to be added, + * please plugg it here into the ATH_t struct + */ + typedef struct { + int use_adjust; /* method for the auto adjustment */ + FLOAT aa_sensitivity_p; /* factor for tuning the (sample power) + point below which adaptive threshold + of hearing adjustment occurs */ + FLOAT adjust; /* lowering based on peak volume, 1 = no lowering */ + FLOAT adjust_limit; /* limit for dynamic ATH adjust */ + FLOAT decay; /* determined to lower x dB each second */ + FLOAT floor; /* lowest ATH value */ + FLOAT l[SBMAX_l]; /* ATH for sfbs in long blocks */ + FLOAT s[SBMAX_s]; /* ATH for sfbs in short blocks */ + FLOAT psfb21[PSFB21]; /* ATH for partitionned sfb21 in long blocks */ + FLOAT psfb12[PSFB12]; /* ATH for partitionned sfb12 in short blocks */ + FLOAT cb[CBANDS]; /* ATH for convolution bands */ + FLOAT eql_w[BLKSIZE / 2]; /* equal loudness weights (based on ATH) */ + } ATH_t; + + /** + * PSY Model related stuff + */ + typedef struct { + FLOAT mask_adjust; /* the dbQ stuff */ + FLOAT mask_adjust_short; /* the dbQ stuff */ + int tonalityPatch; /* temporaly needed by VBR */ + FLOAT cwlimit; + FLOAT prvTonRed[CBANDS]; + } PSY_t; + + +#define MAX_CHANNELS 2 + + + + + + struct lame_internal_flags { + + /******************************************************************** + * internal variables NOT set by calling program, and should not be * + * modified by the calling program * + ********************************************************************/ + + /* + * Some remarks to the Class_ID field: + * The Class ID is an Identifier for a pointer to this struct. + * It is very unlikely that a pointer to lame_global_flags has the same 32 bits + * in it's structure (large and other special properties, for instance prime). + * + * To test that the structure is right and initialized, use: + * if ( gfc -> Class_ID == LAME_ID ) ... + * Other remark: + * If you set a flag to 0 for uninit data and 1 for init data, the right test + * should be "if (flag == 1)" and NOT "if (flag)". Unintended modification + * of this element will be otherwise misinterpreted as an init. + */ +# define LAME_ID 0xFFF88E3B + unsigned long Class_ID; + + int lame_encode_frame_init; + int iteration_init_init; + int fill_buffer_resample_init; + +#ifndef MFSIZE +# define MFSIZE ( 3*1152 + ENCDELAY - MDCTDELAY ) +#endif + sample_t mfbuf[2][MFSIZE]; + + + struct { + void (*msgf) (const char *format, va_list ap); + void (*debugf) (const char *format, va_list ap); + void (*errorf) (const char *format, va_list ap); + } report; + + int mode_gr; /* granules per frame */ + int channels_in; /* number of channels in the input data stream (PCM or decoded PCM) */ + int channels_out; /* number of channels in the output data stream (not used for decoding) */ + FLOAT resample_ratio; /* input_samp_rate/output_samp_rate */ + + int mf_samples_to_encode; + int mf_size; + int VBR_min_bitrate; /* min bitrate index */ + int VBR_max_bitrate; /* max bitrate index */ + int bitrate_index; + int samplerate_index; + int mode_ext; + + + /* lowpass and highpass filter control */ + FLOAT lowpass1, lowpass2; /* normalized frequency bounds of passband */ + FLOAT highpass1, highpass2; /* normalized frequency bounds of passband */ + + int filter_type; /* 0=polyphase filter, 1= FIR filter 2=MDCT filter(bad) */ + int quantization; /* 0 = ISO formual, 1=best amplitude */ + int noise_shaping; /* 0 = none + 1 = ISO AAC model + 2 = allow scalefac_select=1 + */ + + int noise_shaping_amp; /* 0 = ISO model: amplify all distorted bands + 1 = amplify within 50% of max (on db scale) + 2 = amplify only most distorted band + 3 = method 1 and refine with method 2 + */ + int substep_shaping; /* 0 = no substep + 1 = use substep shaping at last step(VBR only) + (not implemented yet) + 2 = use substep inside loop + 3 = use substep inside loop and last step + */ + + int psymodel; /* 1 = gpsycho. 0 = none */ + int noise_shaping_stop; /* 0 = stop at over=0, all scalefacs amplified or + a scalefac has reached max value + 1 = stop when all scalefacs amplified or + a scalefac has reached max value + 2 = stop when all scalefacs amplified + */ + + int subblock_gain; /* 0 = no, 1 = yes */ + int use_best_huffman; /* 0 = no. 1=outside loop 2=inside loop(slow) */ + + int full_outer_loop; /* 0 = stop early after 0 distortion found. 1 = full search */ + + + /* variables used by lame.c */ + Bit_stream_struc bs; + III_side_info_t l3_side; + FLOAT ms_ratio[2]; + + /* used for padding */ + int padding; /* padding for the current frame? */ + int frac_SpF; + int slot_lag; + + + /* optional ID3 tags, used in id3tag.c */ + struct id3tag_spec tag_spec; + uint16_t nMusicCRC; + + + /* variables used by quantize.c */ + int OldValue[2]; + int CurrentStep[2]; + + FLOAT masking_lower; + char bv_scf[576]; + int pseudohalf[SFBMAX]; + + int sfb21_extra; /* will be set in lame_init_params */ + + int sparsing; + FLOAT sparseA; + FLOAT sparseB; + + /* variables used by util.c */ + /* BPC = maximum number of filter convolution windows to precompute */ +#define BPC 320 + sample_t *inbuf_old[2]; + sample_t *blackfilt[2 * BPC + 1]; + FLOAT itime[2]; + int sideinfo_len; + + /* variables for newmdct.c */ + FLOAT sb_sample[2][2][18][SBLIMIT]; + FLOAT amp_filter[32]; + + /* variables for bitstream.c */ + /* mpeg1: buffer=511 bytes smallest frame: 96-38(sideinfo)=58 + * max number of frames in reservoir: 8 + * mpeg2: buffer=255 bytes. smallest frame: 24-23bytes=1 + * with VBR, if you are encoding all silence, it is possible to + * have 8kbs/24khz frames with 1byte of data each, which means we need + * to buffer up to 255 headers! */ + /* also, max_header_buf has to be a power of two */ +#define MAX_HEADER_BUF 256 +#define MAX_HEADER_LEN 40 /* max size of header is 38 */ + struct { + int write_timing; + int ptr; + char buf[MAX_HEADER_LEN]; + } header[MAX_HEADER_BUF]; + + int h_ptr; + int w_ptr; + int ancillary_flag; + + /* variables for reservoir.c */ + int ResvSize; /* in bits */ + int ResvMax; /* in bits */ + + scalefac_struct scalefac_band; + + /* DATA FROM PSYMODEL.C */ +/* The static variables "r", "phi_sav", "new", "old" and "oldest" have */ +/* to be remembered for the unpredictability measure. For "r" and */ +/* "phi_sav", the first index from the left is the channel select and */ +/* the second index is the "age" of the data. */ + FLOAT minval[CBANDS]; + FLOAT nb_1[4][CBANDS], nb_2[4][CBANDS]; + FLOAT nb_s1[4][CBANDS], nb_s2[4][CBANDS]; + FLOAT *s3_ss; + FLOAT *s3_ll; + FLOAT decay; + + III_psy_xmin thm[4]; + III_psy_xmin en[4]; + + /* unpredictability calculation + */ + int cw_upper_index; + FLOAT ax_sav[4][2][HBLKSIZE]; + FLOAT bx_sav[4][2][HBLKSIZE]; + FLOAT rx_sav[4][2][HBLKSIZE]; + FLOAT cw[HBLKSIZE]; + + + /* fft and energy calculation */ + FLOAT tot_ener[4]; + + /* loudness calculation (for adaptive threshold of hearing) */ + FLOAT loudness_sq[2][2]; /* loudness^2 approx. per granule and channel */ + FLOAT loudness_sq_save[2]; /* account for granule delay of L3psycho_anal */ + + + /* Scale Factor Bands */ + FLOAT mld_l[SBMAX_l], mld_s[SBMAX_s]; + int bm_l[SBMAX_l], bo_l[SBMAX_l]; + int bm_s[SBMAX_s], bo_s[SBMAX_s]; + int npart_l, npart_s; + + int s3ind[CBANDS][2]; + int s3ind_s[CBANDS][2]; + + int numlines_s[CBANDS]; + int numlines_l[CBANDS]; + FLOAT rnumlines_l[CBANDS]; + + /* ratios */ + FLOAT pe[4]; + FLOAT ms_ratio_s_old, ms_ratio_l_old; + FLOAT ms_ener_ratio_old; + + /* block type */ + int blocktype_old[2]; + + /* CPU features */ + struct { + unsigned int MMX:1; /* Pentium MMX, Pentium II...IV, K6, K6-2, + K6-III, Athlon */ + unsigned int AMD_3DNow:1; /* K6-2, K6-III, Athlon */ + unsigned int SSE:1; /* Pentium III, Pentium 4 */ + unsigned int SSE2:1; /* Pentium 4, K8 */ + } CPU_features; + + /* functions to replace with CPU feature optimized versions in takehiro.c */ + int (*choose_table) (const int *ix, const int *const end, int *const s); + void (*fft_fht) (FLOAT *, int); + void (*quantize_lines_xrpow) (int l, FLOAT istep, const FLOAT * xp, int *pi); + void (*init_xrpow_core) (gr_info * const cod_info, FLOAT xrpow[576], int upper, + FLOAT * sum); + + + + nsPsy_t nsPsy; /* variables used for --nspsytune */ + + VBR_seek_info_t VBR_seek_table; /* used for Xing VBR header */ + + ATH_t *ATH; /* all ATH related stuff */ + PSY_t *PSY; + + int nogap_total; + int nogap_current; + + + /* ReplayGain */ + int decode_on_the_fly : 1; + int findReplayGain : 1; + int findPeakSample : 1; + sample_t PeakSample; + int RadioGain; + int AudiophileGain; + replaygain_t *rgdata; + + int noclipGainChange; /* gain change required for preventing clipping */ + FLOAT noclipScale; /* user-specified scale factor required for preventing clipping */ + + +#ifdef BRHIST + /* simple statistics */ + int bitrate_stereoMode_Hist[16][4 + 1]; + int bitrate_blockType_Hist[16][4 + 1 + 1]; /*norm/start/short/stop/mixed(short)/sum */ +#endif +#ifdef HAVE_GTK + /* used by the frame analyzer */ + plotting_data *pinfo; + FLOAT energy_save[4][HBLKSIZE]; + FLOAT ers_save[4]; +#endif + + int in_buffer_nsamples; + sample_t *in_buffer_0; + sample_t *in_buffer_1; + }; + + + + + +/*********************************************************************** +* +* Global Function Prototype Declarations +* +***********************************************************************/ + void freegfc(lame_internal_flags * const gfc); + extern int BitrateIndex(int, int, int); + extern int FindNearestBitrate(int, int); + extern int map2MP3Frequency(int freq); + extern int SmpFrqIndex(int, int *const); + extern int nearestBitrateFullIndex(const int brate); + extern FLOAT ATHformula(FLOAT freq, lame_global_flags * gfp); + extern FLOAT freq2bark(FLOAT freq); + extern FLOAT freq2cbw(FLOAT freq); + void disable_FPE(void); + +/* log/log10 approximations */ + extern void init_log_table(void); + extern ieee754_float32_t fast_log2(ieee754_float32_t x); + + + void fill_buffer(lame_global_flags * gfp, + sample_t * mfbuf[2], + sample_t * in_buffer[2], int nsamples, int *n_in, int *n_out); + + int fill_buffer_resample(lame_global_flags * gfp, + sample_t * outbuf, + int desired_len, + sample_t * inbuf, int len, int *num_used, int channels); + +/* same as lame_decode1 (look in lame.h), but returns + unclipped raw floating-point samples. It is declared + here, not in lame.h, because it returns LAME's + internal type sample_t. No more than 1152 samples + per channel are allowed. */ + int lame_decode1_unclipped(unsigned char *mp3buf, + int len, sample_t pcm_l[], sample_t pcm_r[]); + + + extern int has_MMX(void); + extern int has_3DNow(void); + extern int has_SSE(void); + extern int has_SSE2(void); + + + +/*********************************************************************** +* +* Macros about Message Printing and Exit +* +***********************************************************************/ + extern void lame_errorf(const lame_internal_flags * gfc, const char *, ...); + extern void lame_debugf(const lame_internal_flags * gfc, const char *, ...); + extern void lame_msgf(const lame_internal_flags * gfc, const char *, ...); +#define DEBUGF lame_debugf +#define ERRORF lame_errorf +#define MSGF lame_msgf + + +#ifdef __cplusplus +} +#endif +#endif /* LAME_UTIL_H */ diff --git a/lame-3.97/libmp3lame/.svn/text-base/vbrquantize.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/vbrquantize.c.svn-base new file mode 100644 index 0000000..1548c86 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/vbrquantize.c.svn-base @@ -0,0 +1,1367 @@ +/* + * MP3 quantization + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2000-2005 Robert Hegemann + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: vbrquantize.c,v 1.103.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "l3side.h" +#include "quantize_pvt.h" +#include "vbrquantize.h" + +#ifdef WITH_DMALLOC +# include <dmalloc.h> +#endif + + + +struct algo_s; +typedef struct algo_s algo_t; + +typedef void (*quantize_f) (const algo_t *); + +typedef int (*find_f) (const FLOAT *, const FLOAT *, FLOAT, int, int); + +typedef int (*alloc_sf_f) (const algo_t *, int *, const int *, int); + +struct algo_s { + find_f find; + quantize_f quantize; + alloc_sf_f alloc; + const FLOAT *xr34orig; + lame_internal_flags *gfc; + gr_info *cod_info; + int mingain_l; + int mingain_s[3]; +}; + + + +/* Remarks on optimizing compilers: + * + * the MSVC compiler may get into aliasing problems when accessing + * memory through the fi_union. declaring it volatile does the trick here + * + * the calc_sfb_noise_* functions are not inlined because the intel compiler + * optimized executeables won't work as expected anymore + */ + +#ifdef _MSC_VER +# define VOLATILE volatile +#else +# define VOLATILE +#endif + +typedef VOLATILE union { + float f; + int i; +} fi_union; + + + +#define DOUBLEX double + +#define MAGIC_FLOAT_def (65536*(128)) +#define MAGIC_INT_def 0x4b000000 + +#ifdef TAKEHIRO_IEEE754_HACK +# define ROUNDFAC_def -0.0946f +#else +/********************************************************************* + * XRPOW_FTOI is a macro to convert floats to ints. + * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x] + * ROUNDFAC= -0.0946 + * + * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x] + * ROUNDFAC=0.4054 + *********************************************************************/ +# define QUANTFAC(rx) adj43[rx] +# define ROUNDFAC_def 0.4054f +# define XRPOW_FTOI(src,dest) ((dest) = (int)(src)) +#endif + +static int const MAGIC_INT = MAGIC_INT_def; +static DOUBLEX const ROUNDFAC = ROUNDFAC_def; +static DOUBLEX const MAGIC_FLOAT = (65536 * (128)); +static DOUBLEX const ROUNDFAC_plus_MAGIC_FLOAT = ROUNDFAC_def + MAGIC_FLOAT_def; + + + +static int +valid_sf(int sf) +{ + return (sf >= 0 ? (sf <= 255 ? sf : 255) : 0); +} + + + +static FLOAT +max_x34(const FLOAT * xr34, unsigned int bw) +{ + FLOAT xfsf = 0; + int j = bw >> 1; + int remaining = j % 2; + assert(bw >= 0); + for (j >>= 1; j > 0; --j) { + if (xfsf < xr34[0]) { + xfsf = xr34[0]; + } + if (xfsf < xr34[1]) { + xfsf = xr34[1]; + } + if (xfsf < xr34[2]) { + xfsf = xr34[2]; + } + if (xfsf < xr34[3]) { + xfsf = xr34[3]; + } + xr34 += 4; + } + if (remaining) { + if (xfsf < xr34[0]) { + xfsf = xr34[0]; + } + if (xfsf < xr34[1]) { + xfsf = xr34[1]; + } + } + return xfsf; +} + + + +static int +find_lowest_scalefac(const FLOAT xr34) +{ + FLOAT xfsf; + int sf = 128, sf_ok = 10000, delsf = 128, i; + for (i = 0; i < 8; ++i) { + delsf >>= 1; + xfsf = IPOW20(sf) * xr34; + if (xfsf <= IXMAX_VAL) { + sf_ok = sf; + sf -= delsf; + } + else { + sf += delsf; + } + } + if (sf_ok < 255) { + sf = sf_ok; + } + return sf; +} + + + +static void +k_34_4(DOUBLEX x[4], int l3[4]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[4]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); + x[0] += MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += MAGIC_FLOAT; + fi[1].f = x[1]; + x[2] += MAGIC_FLOAT; + fi[2].f = x[2]; + x[3] += MAGIC_FLOAT; + fi[3].f = x[3]; + fi[0].f = x[0] + adj43asm[fi[0].i - MAGIC_INT]; + fi[1].f = x[1] + adj43asm[fi[1].i - MAGIC_INT]; + fi[2].f = x[2] + adj43asm[fi[2].i - MAGIC_INT]; + fi[3].f = x[3] + adj43asm[fi[3].i - MAGIC_INT]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; + l3[2] = fi[2].i - MAGIC_INT; + l3[3] = fi[3].i - MAGIC_INT; +#else + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); + XRPOW_FTOI(x[2], l3[2]); + XRPOW_FTOI(x[3], l3[3]); + x[0] += QUANTFAC(l3[0]); + x[1] += QUANTFAC(l3[1]); + x[2] += QUANTFAC(l3[2]); + x[3] += QUANTFAC(l3[3]); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); + XRPOW_FTOI(x[2], l3[2]); + XRPOW_FTOI(x[3], l3[3]); +#endif +} + + + +static void +k_34_2(DOUBLEX x[2], int l3[2]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[2]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL); + x[0] += MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += MAGIC_FLOAT; + fi[1].f = x[1]; + fi[0].f = x[0] + adj43asm[fi[0].i - MAGIC_INT]; + fi[1].f = x[1] + adj43asm[fi[1].i - MAGIC_INT]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; +#else + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); + x[0] += QUANTFAC(l3[0]); + x[1] += QUANTFAC(l3[1]); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); +#endif +} + + + +static void +k_iso_4(DOUBLEX x[4], int l3[4]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[4]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); + x[0] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[1].f = x[1]; + x[2] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[2].f = x[2]; + x[3] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[3].f = x[3]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; + l3[2] = fi[2].i - MAGIC_INT; + l3[3] = fi[3].i - MAGIC_INT; +#else + l3[0] = x[0] + ROUNDFAC; + l3[1] = x[1] + ROUNDFAC; + l3[2] = x[2] + ROUNDFAC; + l3[3] = x[3] + ROUNDFAC; +#endif +} + + + +static void +k_iso_2(DOUBLEX x[2], int l3[2]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[2]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL); + x[0] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[1].f = x[1]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; +#else + l3[0] = x[0] + ROUNDFAC; + l3[1] = x[1] + ROUNDFAC; +#endif +} + + + +/* do call the calc_sfb_noise_* functions only with sf values + * for which holds: sfpow34*xr34 <= IXMAX_VAL + */ + +static FLOAT +calc_sfb_noise_x34(const FLOAT * xr, const FLOAT * xr34, unsigned int bw, int sf) +{ + DOUBLEX x[4]; + int l3[4]; + const int SF = valid_sf(sf); + const FLOAT sfpow = POW20(SF); /*pow(2.0,sf/4.0); */ + const FLOAT sfpow34 = IPOW20(SF); /*pow(sfpow,-3.0/4.0); */ + + FLOAT xfsf = 0; + int j = bw >> 1; + int remaining = j % 2; + assert(bw >= 0); + for (j >>= 1; j > 0; --j) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + x[2] = sfpow34 * xr34[2]; + x[3] = sfpow34 * xr34[3]; + + k_34_4(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + x[2] = fabs(xr[2]) - sfpow * pow43[l3[2]]; + x[3] = fabs(xr[3]) - sfpow * pow43[l3[3]]; + xfsf += (x[0] * x[0] + x[1] * x[1]) + (x[2] * x[2] + x[3] * x[3]); + + xr += 4; + xr34 += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + + k_34_2(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + xfsf += x[0] * x[0] + x[1] * x[1]; + } + return xfsf; +} + + + +static FLOAT +calc_sfb_noise_ISO(const FLOAT * xr, const FLOAT * xr34, unsigned int bw, int sf) +{ + DOUBLEX x[4]; + int l3[4]; + const int SF = valid_sf(sf); + const FLOAT sfpow = POW20(SF); /*pow(2.0,sf/4.0); */ + const FLOAT sfpow34 = IPOW20(SF); /*pow(sfpow,-3.0/4.0); */ + + FLOAT xfsf = 0; + int j = bw >> 1; + int remaining = j % 2; + assert(bw >= 0); + for (j >>= 1; j > 0; --j) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + x[2] = sfpow34 * xr34[2]; + x[3] = sfpow34 * xr34[3]; + + k_iso_4(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + x[2] = fabs(xr[2]) - sfpow * pow43[l3[2]]; + x[3] = fabs(xr[3]) - sfpow * pow43[l3[3]]; + + xfsf += (x[0] * x[0] + x[1] * x[1]) + (x[2] * x[2] + x[3] * x[3]); + + xr += 4; + xr34 += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + + k_iso_2(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + xfsf += x[0] * x[0] + x[1] * x[1]; + } + return xfsf; +} + + + +/* the find_scalefac* routines calculate + * a quantization step size which would + * introduce as much noise as is allowed. + * The larger the step size the more + * quantization noise we'll get. The + * scalefactors are there to lower the + * global step size, allowing limited + * differences in quantization step sizes + * per band (shaping the noise). + */ + +static int +find_scalefac_x34(const FLOAT * xr, const FLOAT * xr34, FLOAT l3_xmin, int bw, int sf_min) +{ + int sf = 128, sf_ok = 10000, delsf = 128, i; + for (i = 0; i < 8; ++i) { + delsf >>= 1; + if (sf <= sf_min) { + sf += delsf; + } + else { + if ((sf < 255 && calc_sfb_noise_x34(xr, xr34, bw, sf + 1) > l3_xmin) + || calc_sfb_noise_x34(xr, xr34, bw, sf) > l3_xmin + || calc_sfb_noise_x34(xr, xr34, bw, sf - 1) > l3_xmin) { + /* distortion. try a smaller scalefactor */ + sf -= delsf; + } + else { + sf_ok = sf; + sf += delsf; + } + } + } + /* returning a scalefac without distortion, if possible + */ + if (sf_ok <= 255) { + sf = sf_ok; + } + return sf; +} + + + +static int +find_scalefac_ISO(const FLOAT * xr, const FLOAT * xr34, FLOAT l3_xmin, int bw, int sf_min) +{ + int sf = 128, sf_ok = 10000, delsf = 128, i; + for (i = 0; i < 8; ++i) { + delsf >>= 1; + if (sf <= sf_min) { + sf += delsf; + } + else { + if ((sf < 255 && calc_sfb_noise_ISO(xr, xr34, bw, sf + 1) > l3_xmin) + || calc_sfb_noise_ISO(xr, xr34, bw, sf) > l3_xmin + || calc_sfb_noise_ISO(xr, xr34, bw, sf - 1) > l3_xmin) { + /* distortion. try a smaller scalefactor */ + sf -= delsf; + } + else { + sf_ok = sf; + sf += delsf; + } + } + } + /* returning a scalefac without distortion, if possible + */ + if (sf_ok <= 255) { + sf = sf_ok; + } + return sf; +} + + + +/*********************************************************************** + * + * calc_short_block_vbr_sf() + * calc_long_block_vbr_sf() + * + * Mark Taylor 2000-??-?? + * Robert Hegemann 2000-10-25 made functions of it + * + ***********************************************************************/ + +/* a variation for vbr-mtrh */ +static int +block_sf(algo_t * that, const FLOAT l3_xmin[576], int vbrsf[SFBMAX], int vbrsfmin[SFBMAX]) +{ + FLOAT max_xr34; + const FLOAT *xr = &that->cod_info->xr[0]; + const FLOAT *xr34_orig = &that->xr34orig[0]; + const int *width = &that->cod_info->width[0]; + const int max_nonzero_coeff = that->cod_info->max_nonzero_coeff; + int maxsf = 0; + int sfb = 0, j = 0, i = 0; + int const psymax = that->cod_info->psymax; + + that->mingain_l = 0; + that->mingain_s[0] = 0; + that->mingain_s[1] = 0; + that->mingain_s[2] = 0; + while (j <= max_nonzero_coeff) { + int l, w = l = width[sfb]; + int m = max_nonzero_coeff - j + 1, m1, m2; + if (l > m) { + l = m; + } + max_xr34 = max_x34(&xr34_orig[j], l); + + m1 = find_lowest_scalefac(max_xr34); + vbrsfmin[sfb] = m1; + if (that->mingain_l < m1) { + that->mingain_l = m1; + } + if (that->mingain_s[i] < m1) { + that->mingain_s[i] = m1; + } + if (i < 2) { + ++i; + } + else { + i = 0; + } + if (sfb < psymax) { + m2 = that->find(&xr[j], &xr34_orig[j], l3_xmin[sfb], l, m1); + if (maxsf < m2) { + maxsf = m2; + } + } + else { + if (maxsf < m1) { + maxsf = m1; + } + m2 = maxsf; + } + vbrsf[sfb] = m2; + ++sfb; + j += w; + } + for (; sfb < SFBMAX; ++sfb) { + vbrsf[sfb] = maxsf; + vbrsfmin[sfb] = 0; + } + return maxsf; +} + + + +/*********************************************************************** + * + * quantize xr34 based on scalefactors + * + * block_xr34 + * + * Mark Taylor 2000-??-?? + * Robert Hegemann 2000-10-20 made functions of them + * + ***********************************************************************/ + +static void +quantize_x34(const algo_t * that) +{ + DOUBLEX x[4]; + const FLOAT *xr34_orig = that->xr34orig; + gr_info *cod_info = that->cod_info; + int *l3 = cod_info->l3_enc; + int j = 0, sfb = 0; + const int max_nonzero_coeff = cod_info->max_nonzero_coeff; + + while (j <= max_nonzero_coeff) { + const int s = ((cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + const int sfac = valid_sf(cod_info->global_gain - s); + const FLOAT sfpow34 = IPOW20(sfac); + int remaining; + int l , w = l = cod_info->width[sfb]; + int m = max_nonzero_coeff - j + 1; + if (l > m) { + l = m; + } + j += w; + ++sfb; + l >>= 1; + remaining = l % 2; + + for (l >>= 1; l > 0; --l) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + x[2] = sfpow34 * xr34_orig[2]; + x[3] = sfpow34 * xr34_orig[3]; + + k_34_4(x, l3); + + l3 += 4; + xr34_orig += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + + k_34_2(x, l3); + + l3 += 2; + xr34_orig += 2; + } + } +} + + + +static void +quantize_ISO(const algo_t * that) +{ + DOUBLEX x[4]; + const FLOAT *xr34_orig = that->xr34orig; + gr_info *cod_info = that->cod_info; + int *l3 = cod_info->l3_enc; + int j = 0, sfb = 0; + const int max_nonzero_coeff = cod_info->max_nonzero_coeff; + + while (j <= max_nonzero_coeff) { + const int s = ((cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + const int sfac = valid_sf(cod_info->global_gain - s); + const FLOAT sfpow34 = IPOW20(sfac); + int remaining; + int l, w = l = cod_info->width[sfb]; + int m = max_nonzero_coeff - j + 1; + if (l > m) { + l = m; + } + j += w; + ++sfb; + l >>= 1; + remaining = l % 2; + + for (l >>= 1; l > 0; --l) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + x[2] = sfpow34 * xr34_orig[2]; + x[3] = sfpow34 * xr34_orig[3]; + + k_iso_4(x, l3); + + l3 += 4; + xr34_orig += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + + k_iso_2(x, l3); + + l3 += 2; + xr34_orig += 2; + } + } +} + + + + +static const int max_range_short[SBMAX_s * 3] = { + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0, 0, 0 +}; + +static const int max_range_long[SBMAX_l] = + { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0 +}; + +static const int max_range_long_lsf_pretab[SBMAX_l] = + { 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + + + +/* + sfb=0..5 scalefac < 16 + sfb>5 scalefac < 8 + + ifqstep = ( cod_info->scalefac_scale == 0 ) ? 2 : 4; + ol_sf = (cod_info->global_gain-210.0); + ol_sf -= 8*cod_info->subblock_gain[i]; + ol_sf -= ifqstep*scalefac[gr][ch].s[sfb][i]; +*/ + +static void +set_subblock_gain(gr_info * cod_info, const int mingain_s[3], int sf[]) +{ + const int maxrange1 = 15, maxrange2 = 7; + const int ifqstepShift = (cod_info->scalefac_scale == 0) ? 1 : 2; + int *sbg = cod_info->subblock_gain; + int psymax = cod_info->psymax; + int psydiv = 18; + int sbg0, sbg1, sbg2; + int sfb, i; + + if (psydiv > psymax) { + psydiv = psymax; + } + for (i = 0; i < 3; ++i) { + int maxsf1 = 0, maxsf2 = 0, minsf = 1000; + /* see if we should use subblock gain */ + for (sfb = i; sfb < psydiv; sfb += 3) { /* part 1 */ + int v = -sf[sfb]; + if (maxsf1 < v) { + maxsf1 = v; + } + if (minsf > v) { + minsf = v; + } + } + for (; sfb < SFBMAX; sfb += 3) { /* part 2 */ + int v = -sf[sfb]; + if (maxsf2 < v) { + maxsf2 = v; + } + if (minsf > v) { + minsf = v; + } + } + + /* boost subblock gain as little as possible so we can + * reach maxsf1 with scalefactors + * 8*sbg >= maxsf1 + */ + { + int m1 = maxsf1 - (maxrange1 << ifqstepShift); + int m2 = maxsf2 - (maxrange2 << ifqstepShift); + + maxsf1 = Max(m1, m2); + } + if (minsf > 0) { + sbg[i] = minsf >> 3; + } + else { + sbg[i] = 0; + } + if (maxsf1 > 0) { + int m1 = sbg[i]; + int m2 = (maxsf1 + 7) >> 3; + sbg[i] = Max(m1, m2); + } + if (sbg[i] > 0 && mingain_s[i] > (cod_info->global_gain - sbg[i] * 8)) { + sbg[i] = (cod_info->global_gain - mingain_s[i]) >> 3; + } + if (sbg[i] > 7) { + sbg[i] = 7; + } + } + sbg0 = sbg[0] << 3; + sbg1 = sbg[1] << 3; + sbg2 = sbg[2] << 3; + for (sfb = 0; sfb < SFBMAX; sfb += 3) { + sf[sfb + 0] += sbg0; + sf[sfb + 1] += sbg1; + sf[sfb + 2] += sbg2; + } +} + + + +/* + ifqstep = ( cod_info->scalefac_scale == 0 ) ? 2 : 4; + ol_sf = (cod_info->global_gain-210.0); + ol_sf -= ifqstep*scalefac[gr][ch].l[sfb]; + if (cod_info->preflag && sfb>=11) + ol_sf -= ifqstep*pretab[sfb]; +*/ +static void +set_scalefacs(gr_info * cod_info, const int *vbrsfmin, int sf[], const int *max_range) +{ + const int ifqstep = (cod_info->scalefac_scale == 0) ? 2 : 4; + const int ifqstepShift = (cod_info->scalefac_scale == 0) ? 1 : 2; + int *scalefac = cod_info->scalefac; + int sfb, sfbmax = cod_info->sfbmax; + int *sbg = cod_info->subblock_gain; + int *window = cod_info->window; + int preflag = cod_info->preflag; + + if (preflag) { + for (sfb = 11; sfb < sfbmax; ++sfb) { + sf[sfb] += pretab[sfb] << ifqstepShift; + } + } + for (sfb = 0; sfb < sfbmax; ++sfb) { + int gain = cod_info->global_gain - (sbg[window[sfb]] << 3) + - ((preflag ? pretab[sfb] : 0) << ifqstepShift); + + if (sf[sfb] < 0) { + int m = gain - vbrsfmin[sfb]; + /* ifqstep*scalefac >= -sf[sfb], so round UP */ + scalefac[sfb] = (ifqstep - 1 - sf[sfb]) >> ifqstepShift; + + if (scalefac[sfb] > max_range[sfb]) { + scalefac[sfb] = max_range[sfb]; + } + if (scalefac[sfb] > 0 && (scalefac[sfb] << ifqstepShift) > m) { + scalefac[sfb] = m >> ifqstepShift; + } + } + else { + scalefac[sfb] = 0; + } + } + for (; sfb < SFBMAX; ++sfb) { + scalefac[sfb] = 0; /* sfb21 */ + } +} + + + +static int +checkScalefactor(const gr_info * cod_info, const int vbrsfmin[SFBMAX]) +{ + int sfb; + for (sfb = 0; sfb < cod_info->psymax; ++sfb) { + const int s = + ((cod_info->scalefac[sfb] + + (cod_info->preflag ? pretab[sfb] : 0)) << (cod_info-> + scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + + if ((cod_info->global_gain - s) < vbrsfmin[sfb]) { + /* + fprintf( stdout, "sf %d\n", sfb ); + fprintf( stdout, "min %d\n", vbrsfmin[sfb] ); + fprintf( stdout, "ggain %d\n", cod_info->global_gain ); + fprintf( stdout, "scalefac %d\n", cod_info->scalefac[sfb] ); + fprintf( stdout, "pretab %d\n", (cod_info->preflag ? pretab[sfb] : 0) ); + fprintf( stdout, "scale %d\n", (cod_info->scalefac_scale + 1) ); + fprintf( stdout, "subgain %d\n", cod_info->subblock_gain[cod_info->window[sfb]] * 8 ); + fflush( stdout ); + exit(-1); + */ + return 0; + } + } + return 1; +} + + + +/****************************************************************** + * + * short block scalefacs + * + ******************************************************************/ + +static int +short_block_constrain(const algo_t * that, int vbrsf[SFBMAX], + const int vbrsfmin[SFBMAX], int vbrmax) +{ + gr_info *cod_info = that->cod_info; + lame_internal_flags *gfc = that->gfc; + int const maxminsfb = that->mingain_l; + int mover, maxover0 = 0, maxover1 = 0, delta = 0; + int v, v0, v1; + int sfb; + int psymax = cod_info->psymax; + + for (sfb = 0; sfb < psymax; ++sfb) { + assert( vbrsf[sfb] >= vbrsfmin[sfb] ); + v = vbrmax - vbrsf[sfb]; + if (delta < v) { + delta = v; + } + v0 = v - (4 * 14 + 2 * max_range_short[sfb]); + v1 = v - (4 * 14 + 4 * max_range_short[sfb]); + if (maxover0 < v0) { + maxover0 = v0; + } + if (maxover1 < v1) { + maxover1 = v1; + } + } + if (gfc->noise_shaping == 2) { + /* allow scalefac_scale=1 */ + mover = Min(maxover0, maxover1); + } + else { + mover = maxover0; + } + if (delta > mover) { + delta = mover; + } + vbrmax -= delta; + maxover0 -= mover; + maxover1 -= mover; + + if (maxover0 == 0) { + cod_info->scalefac_scale = 0; + } + else if (maxover1 == 0) { + cod_info->scalefac_scale = 1; + } + if (vbrmax < maxminsfb) { + vbrmax = maxminsfb; + } + cod_info->global_gain = vbrmax; + + if (cod_info->global_gain < 0) { + cod_info->global_gain = 0; + } + else if (cod_info->global_gain > 255) { + cod_info->global_gain = 255; + } + for (sfb = 0; sfb < SFBMAX; ++sfb) { + vbrsf[sfb] -= vbrmax; + } + set_subblock_gain(cod_info, &that->mingain_s[0], vbrsf); + set_scalefacs(cod_info, vbrsfmin, vbrsf, max_range_short); + assert(checkScalefactor(cod_info, vbrsfmin)); + return checkScalefactor(cod_info, vbrsfmin); +} + + + +/****************************************************************** + * + * long block scalefacs + * + ******************************************************************/ + +static int +long_block_constrain(const algo_t * that, int vbrsf[SFBMAX], const int vbrsfmin[SFBMAX], int vbrmax) +{ + gr_info *cod_info = that->cod_info; + lame_internal_flags *gfc = that->gfc; + const int *max_rangep; + int const maxminsfb = that->mingain_l; + int sfb; + int maxover0, maxover1, maxover0p, maxover1p, mover, delta = 0; + int v, v0, v1, v0p, v1p, vm0p = 1, vm1p = 1; + int psymax = cod_info->psymax; + + max_rangep = gfc->mode_gr == 2 ? max_range_long : max_range_long_lsf_pretab; + + maxover0 = 0; + maxover1 = 0; + maxover0p = 0; /* pretab */ + maxover1p = 0; /* pretab */ + + for (sfb = 0; sfb < psymax; ++sfb) { + assert( vbrsf[sfb] >= vbrsfmin[sfb] ); + v = vbrmax - vbrsf[sfb]; + if (delta < v) { + delta = v; + } + v0 = v - 2 * max_range_long[sfb]; + v1 = v - 4 * max_range_long[sfb]; + v0p = v - 2 * (max_rangep[sfb] + pretab[sfb]); + v1p = v - 4 * (max_rangep[sfb] + pretab[sfb]); + if (maxover0 < v0) { + maxover0 = v0; + } + if (maxover1 < v1) { + maxover1 = v1; + } + if (maxover0p < v0p) { + maxover0p = v0p; + } + if (maxover1p < v1p) { + maxover1p = v1p; + } + } + if (vm0p == 1) { + int gain = vbrmax - maxover0p; + if (gain < maxminsfb) { + gain = maxminsfb; + } + for (sfb = 0; sfb < psymax; ++sfb) { + int a = (gain - vbrsfmin[sfb]) - 2 * pretab[sfb]; + if (a <= 0) { + vm0p = 0; + vm1p = 0; + break; + } + } + } + if (vm1p == 1) { + int gain = vbrmax - maxover1p; + if (gain < maxminsfb) { + gain = maxminsfb; + } + for (sfb = 0; sfb < psymax; ++sfb) { + int b = (gain - vbrsfmin[sfb]) - 4 * pretab[sfb]; + if (b <= 0) { + vm1p = 0; + break; + } + } + } + if (vm0p == 0) { + maxover0p = maxover0; + } + if (vm1p == 0) { + maxover1p = maxover1; + } + if (gfc->noise_shaping != 2) { + maxover1 = maxover0; + maxover1p = maxover0p; + } + mover = Min(maxover0, maxover0p); + mover = Min(mover, maxover1); + mover = Min(mover, maxover1p); + + if (delta > mover) { + delta = mover; + } + vbrmax -= delta; + if (vbrmax < maxminsfb) { + vbrmax = maxminsfb; + } + maxover0 -= mover; + maxover0p -= mover; + maxover1 -= mover; + maxover1p -= mover; + + if (maxover0 == 0) { + cod_info->scalefac_scale = 0; + cod_info->preflag = 0; + max_rangep = max_range_long; + } + else if (maxover0p == 0) { + cod_info->scalefac_scale = 0; + cod_info->preflag = 1; + } + else if (maxover1 == 0) { + cod_info->scalefac_scale = 1; + cod_info->preflag = 0; + max_rangep = max_range_long; + } + else if (maxover1p == 0) { + cod_info->scalefac_scale = 1; + cod_info->preflag = 1; + } + else { + assert(0); /* this should not happen */ + } + cod_info->global_gain = vbrmax; + if (cod_info->global_gain < 0) { + cod_info->global_gain = 0; + } + else if (cod_info->global_gain > 255) { + cod_info->global_gain = 255; + } + for (sfb = 0; sfb < SFBMAX; ++sfb) { + vbrsf[sfb] -= vbrmax; + } + set_scalefacs(cod_info, vbrsfmin, vbrsf, max_rangep); + assert(checkScalefactor(cod_info, vbrsfmin)); + return checkScalefactor(cod_info, vbrsfmin); +} + + + +static int +bitcount(const algo_t * that) +{ + if (that->gfc->mode_gr == 2) { + return scale_bitcount(that->cod_info); + } + else { + return scale_bitcount_lsf(that->gfc, that->cod_info); + } +} + + + +static int +quantizeAndCountBits(const algo_t * that) +{ + that->quantize(that); + that->cod_info->part2_3_length = noquant_count_bits(that->gfc, that->cod_info, 0); + return that->cod_info->part2_3_length; +} + + + +static int +tryScalefacColor(const algo_t * that, int vbrsf[SFBMAX], + const int vbrsf2[SFBMAX], const int vbrsfmin[SFBMAX], int I, int M, int target) +{ + FLOAT xrpow_max = that->cod_info->xrpow_max; + int i, nbits; + int gain, vbrmax = 0; + + for (i = 0; i < SFBMAX; ++i) { + gain = target + (vbrsf2[i] - target) * I / M; + if (gain < vbrsfmin[i]) { + gain = vbrsfmin[i]; + } + if (gain > 255) { + gain = 255; + } + if (vbrmax < gain) { + vbrmax = gain; + } + vbrsf[i] = gain; + } + if (!that->alloc(that, vbrsf, vbrsfmin, vbrmax)) { + return LARGE_BITS; + } + bitcount(that); + nbits = quantizeAndCountBits(that); + that->cod_info->xrpow_max = xrpow_max; + return nbits; +} + + + +static void +searchScalefacColorMax(const algo_t * that, int sfwork[SFBMAX], + const int sfcalc[SFBMAX], const int vbrsfmin[SFBMAX], int bits) +{ + int const psymax = that->cod_info->psymax; + int nbits, last, i, ok = -1, l = 0, r, vbrmin = 255, vbrmax = 0, M, target; + for (i = 0; i < psymax; ++i) { + if (vbrmin > sfcalc[i]) { + vbrmin = sfcalc[i]; + } + if (vbrmax < sfcalc[i]) { + vbrmax = sfcalc[i]; + } + } + M = vbrmax - vbrmin; + + if (M == 0) { + return; + } + target = vbrmax; + for (l = 0, r = M, last = i = M / 2; l <= r; i = (l + r) / 2) { + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, i, M, target); + if (nbits < bits) { + ok = i; + l = i + 1; + } + else { + r = i - 1; + } + last = i; + } + if (last != ok) { + if (ok == -1) { + ok = 0; + } + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, ok, M, target); + } +} + + +#if 0 +static void +searchScalefacColorMin(const algo_t * that, int sfwork[SFBMAX], + const int sfcalc[SFBMAX], const int vbrsfmin[SFBMAX], int bits) +{ + int const psymax = that->cod_info->psymax; + int nbits, last, i, ok = -1, l = 0, r, vbrmin = 255, vbrmax = 0, M, target; + for (i = 0; i < psymax; ++i) { + if (vbrmin > sfcalc[i]) { + vbrmin = sfcalc[i]; + } + if (vbrmax < sfcalc[i]) { + vbrmax = sfcalc[i]; + } + } + M = vbrmax - vbrmin; + + if (M == 0) { + return; + } + target = vbrmin; + for (l = 0, r = M, last = i = M / 2; l <= r; i = (l + r) / 2) { + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, i, M, target); + if (nbits > bits) { + ok = i; + r = i - 1; + } + else { + l = i + 1; + } + last = i; + } + if (last != ok) { + if (ok == -1) { + ok = 0; + } + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, ok, M, target); + } +} +#endif + + +static int +tryGlobalStepsize(const algo_t * that, const int sfwork[SFBMAX], + const int vbrsfmin[SFBMAX], int delta) +{ + FLOAT xrpow_max = that->cod_info->xrpow_max; + int sftemp[SFBMAX], i, nbits; + int gain, vbrmax = 0; + for (i = 0; i < SFBMAX; ++i) { + gain = sfwork[i] + delta; + if (gain < vbrsfmin[i]) { + gain = vbrsfmin[i]; + } + if (gain > 255) { + gain = 255; + } + if (vbrmax < gain) { + vbrmax = gain; + } + sftemp[i] = gain; + } + if (!that->alloc(that, sftemp, vbrsfmin, vbrmax)) { + return LARGE_BITS; + } + bitcount(that); + nbits = quantizeAndCountBits(that); + that->cod_info->xrpow_max = xrpow_max; + return nbits; +} + + + +static void +searchGlobalStepsizeMax(const algo_t * that, const int sfwork[SFBMAX], + const int vbrsfmin[SFBMAX], int target) +{ + gr_info *cod_info = that->cod_info; + const int gain = cod_info->global_gain; + int curr = gain; + int gain_ok = 1024; + int nbits = LARGE_BITS; + int l = gain, r = 512; + + assert(gain >= 0); + while (l <= r) { + curr = (l + r) >> 1; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + if (cod_info->part2_length >= LARGE_BITS || nbits >= LARGE_BITS) { + l = curr + 1; + continue; + } + if (nbits + cod_info->part2_length < target) { + r = curr - 1; + gain_ok = curr; + } + else { + l = curr + 1; + if (gain_ok == 1024) { + gain_ok = curr; + } + } + } + if (gain_ok != curr) { + curr = gain_ok; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + } +} + +#if 0 +static void +searchGlobalStepsizeMin(const algo_t * that, const int sfwork[SFBMAX], + const int vbrsfmin[SFBMAX], int target) +{ + gr_info *cod_info = that->cod_info; + const int gain = cod_info->global_gain; + int curr = gain; + int gain_ok = 1024; + int nbits = LARGE_BITS; + int l = 0, r = gain; + + assert(gain >= 0); + while (l <= r) { + curr = (l + r) >> 1; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + if (cod_info->part2_length >= LARGE_BITS || nbits >= LARGE_BITS) { + l = curr + 1; + continue; + } + if (nbits + cod_info->part2_length < target) { + l = curr + 1; + if (gain_ok == 1024) { + gain_ok = curr; + } + } + else { + r = curr - 1; + gain_ok = curr; + } + } + if (gain_ok != curr) { + curr = gain_ok; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + } +} +#endif + + +/************************************************************************ + * + * VBR_noise_shaping() + * + * may result in a need of too many bits, then do it CBR like + * + * Robert Hegemann 2000-10-25 + * + ***********************************************************************/ + +int +VBR_noise_shaping(lame_internal_flags * gfc, const FLOAT xr34orig[576], + const FLOAT l3_xmin[576], int maxbits, int gr, int ch) +{ + int sfwork[SFBMAX]; + int sfcalc[SFBMAX]; + int vbrsfmin[SFBMAX]; + algo_t that; + int vbrmax; + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + + that.xr34orig = xr34orig; + if (gfc->quantization) { + that.find = find_scalefac_x34; + that.quantize = quantize_x34; + } + else { + that.find = find_scalefac_ISO; + that.quantize = quantize_ISO; + } + if (cod_info->block_type == SHORT_TYPE) { + that.alloc = short_block_constrain; + } + else { + that.alloc = long_block_constrain; + } + that.gfc = gfc; + that.cod_info = &gfc->l3_side.tt[gr][ch]; + + memset(cod_info->l3_enc, 0, 576 * sizeof(int)); + + vbrmax = block_sf(&that, l3_xmin, sfcalc, vbrsfmin); + memcpy(sfwork, sfcalc, SFBMAX * sizeof(int)); + that.alloc(&that, sfwork, vbrsfmin, vbrmax); + if (0 != bitcount(&that)) { + /* this should not happen due to the way the scalefactors are selected + */ + cod_info->part2_3_length = LARGE_BITS; + return -1; + } + quantizeAndCountBits(&that); + if (cod_info->part2_3_length > maxbits - cod_info->part2_length) { + searchScalefacColorMax(&that, sfwork, sfcalc, vbrsfmin, maxbits); + } + if (cod_info->part2_3_length > maxbits - cod_info->part2_length) { + searchGlobalStepsizeMax(&that, sfwork, vbrsfmin, maxbits); + } + if (gfc->use_best_huffman == 2) { + best_huffman_divide(gfc, cod_info); + } + assert(cod_info->global_gain < 256u); + + if (cod_info->part2_3_length + cod_info->part2_length >= LARGE_BITS) { + cod_info->part2_3_length = LARGE_BITS; + return -2; /* Houston, we have a problem */ + } + return 0; +} diff --git a/lame-3.97/libmp3lame/.svn/text-base/vbrquantize.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/vbrquantize.h.svn-base new file mode 100644 index 0000000..3219d57 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/vbrquantize.h.svn-base @@ -0,0 +1,28 @@ +/* + * MP3 VBR quantization + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_VBRQUANTIZE_H +#define LAME_VBRQUANTIZE_H + +int VBR_noise_shaping(lame_internal_flags * gfc, const FLOAT xr34orig[576], + const FLOAT l3_xmin[576], int maxbits, int gr, int ch); + +#endif /* LAME_VBRQUANTIZE_H */ diff --git a/lame-3.97/libmp3lame/.svn/text-base/version.c.svn-base b/lame-3.97/libmp3lame/.svn/text-base/version.c.svn-base new file mode 100644 index 0000000..49ee6ea --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/version.c.svn-base @@ -0,0 +1,234 @@ +/* + * Version numbering for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/*! + \file version.c + \brief Version numbering for LAME. + + Contains functions which describe the version of LAME. + + \author A.L. Faber + \version \$Id: version.c,v 1.24 2005/08/28 17:02:11 bouvigne Exp $ + \ingroup libmp3lame +*/ + + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + + +#include <stdio.h> +#include "version.h" /* macros of version numbers */ + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/*! Stringify \a x. */ +#define STR(x) #x +/*! Stringify \a x, perform macro expansion. */ +#define XSTR(x) STR(x) + + + +/*! Get the LAME version string. */ +/*! + \param void + \return a pointer to a string which describes the version of LAME. +*/ +const char* get_lame_version ( void ) /* primary to write screen reports */ +{ + /* Here we can also add informations about compile time configurations */ + +#if LAME_ALPHA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " " + "(alpha " XSTR(LAME_PATCH_VERSION) ", " __DATE__ " " __TIME__ ")"; +#elif LAME_BETA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " " + "(beta " XSTR(LAME_PATCH_VERSION) ", " __DATE__ ")"; +#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "." XSTR(LAME_PATCH_VERSION); +#else + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION); +#endif + + return str; +} + + +/*! Get the short LAME version string. */ +/*! + It's mainly for inclusion into the MP3 stream. + + \param void + \return a pointer to the short version of the LAME version string. +*/ +const char* get_lame_short_version ( void ) +{ + /* adding date and time to version string makes it harder for output + validation */ + +#if LAME_ALPHA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " (alpha)"; +#elif LAME_BETA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " (beta)"; +#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "." XSTR(LAME_PATCH_VERSION); +#else + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION); +#endif + + return str; +} + +/*! Get the _very_ short LAME version string. */ +/*! + It's used in the LAME VBR tag only. + + \param void + \return a pointer to the short version of the LAME version string. +*/ +const char* get_lame_very_short_version ( void ) +{ + /* adding date and time to version string makes it harder for output + validation */ + +#if LAME_ALPHA_VERSION + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "a"; +#elif LAME_BETA_VERSION + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "b"; +#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "r"; +#else + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " "; +#endif + + return str; +} + +/*! Get the version string for GPSYCHO. */ +/*! + \param void + \return a pointer to a string which describes the version of GPSYCHO. +*/ +const char* get_psy_version ( void ) +{ +#if PSY_ALPHA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(PSY_MAJOR_VERSION) "." XSTR(PSY_MINOR_VERSION) + " (alpha " XSTR(PSY_ALPHA_VERSION) ", " __DATE__ " " __TIME__ ")"; +#elif PSY_BETA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(PSY_MAJOR_VERSION) "." XSTR(PSY_MINOR_VERSION) + " (beta " XSTR(PSY_BETA_VERSION) ", " __DATE__ ")"; +#else + static /*@observer@*/ const char *const str = + XSTR(PSY_MAJOR_VERSION) "." XSTR(PSY_MINOR_VERSION); +#endif + + return str; +} + + +/*! Get the URL for the LAME website. */ +/*! + \param void + \return a pointer to a string which is a URL for the LAME website. +*/ +const char* get_lame_url ( void ) +{ + static /*@observer@*/ const char *const str = LAME_URL; + + return str; +} + + +/*! Get the numerical representation of the version. */ +/*! + Writes the numerical representation of the version of LAME and + GPSYCHO into lvp. + + \param lvp +*/ +void get_lame_version_numerical ( lame_version_t *const lvp ) +{ + static /*@observer@*/ const char *const features = ""; /* obsolete */ + + /* generic version */ + lvp->major = LAME_MAJOR_VERSION; + lvp->minor = LAME_MINOR_VERSION; +#if LAME_ALPHA_VERSION + lvp->alpha = LAME_PATCH_VERSION; + lvp->beta = 0; +#elif LAME_BETA_VERSION + lvp->alpha = 0; + lvp->beta = LAME_PATCH_VERSION; +#else + lvp->alpha = 0; + lvp->beta = 0; +#endif + + /* psy version */ + lvp->psy_major = PSY_MAJOR_VERSION; + lvp->psy_minor = PSY_MINOR_VERSION; + lvp->psy_alpha = PSY_ALPHA_VERSION; + lvp->psy_beta = PSY_BETA_VERSION; + + /* compile time features */ + /*@-mustfree@*/ + lvp->features = features; + /*@=mustfree@*/ +} + + +const char* get_lame_os_bitness ( void ) +{ + static /*@observer@*/ const char *const strXX = ""; + static /*@observer@*/ const char *const str32 = "32bits"; + static /*@observer@*/ const char *const str64 = "64bits"; + + switch (sizeof(void*)){ + case 4: + return str32; + break; + case 8: + return str64; + break; + default: + return strXX; + } +} + +/* end of version.c */ + diff --git a/lame-3.97/libmp3lame/.svn/text-base/version.h.svn-base b/lame-3.97/libmp3lame/.svn/text-base/version.h.svn-base new file mode 100644 index 0000000..7607ec7 --- /dev/null +++ b/lame-3.97/libmp3lame/.svn/text-base/version.h.svn-base @@ -0,0 +1,61 @@ +/* + * Version numbering for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_VERSION_H +#define LAME_VERSION_H + +# include <lame.h> + +/* + * To make a string from a token, use the # operator: + * + * #define __STR(x) #x + * #define STR(x) __STR(x) + */ + +# define LAME_URL "http://www.mp3dev.org/" + + +# define LAME_MAJOR_VERSION 3 /* Major version number */ +# define LAME_MINOR_VERSION 97 /* Minor version number */ +# define LAME_TYPE_VERSION 2 /* 0:alpha 1:beta 2:release */ +# define LAME_PATCH_VERSION 0 /* Patch level */ +# define LAME_ALPHA_VERSION (LAME_TYPE_VERSION==0) +# define LAME_BETA_VERSION (LAME_TYPE_VERSION==1) +# define LAME_RELEASE_VERSION (LAME_TYPE_VERSION==2) + +# define PSY_MAJOR_VERSION 0 /* Major version number */ +# define PSY_MINOR_VERSION 90 /* Minor version number */ +# define PSY_ALPHA_VERSION 0 /* Set number if this is an alpha version, otherwise zero */ +# define PSY_BETA_VERSION 0 /* Set number if this is a beta version, otherwise zero */ + + +const char* get_lame_version ( void ); +const char* get_lame_short_version ( void ); +const char* get_psy_version ( void ); +const char* get_lame_url ( void ); +void get_lame_version_numerical ( lame_version_t *const lvp ); +const char* get_lame_os_bitness ( void ); + +#endif /* LAME_VERSION_H */ + +/* End of version.h */ + diff --git a/lame-3.97/libmp3lame/Makefile.am b/lame-3.97/libmp3lame/Makefile.am new file mode 100644 index 0000000..09c5ce9 --- /dev/null +++ b/lame-3.97/libmp3lame/Makefile.am @@ -0,0 +1,98 @@ +## $Id: Makefile.am,v 1.33 2005/08/21 17:32:09 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +SUBDIRS = i386 + +lib_LTLIBRARIES = libmp3lame.la + +if HAVE_NASM +nasm_ldadd = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la +else +nasm_ldadd = +endif + +if LIB_WITH_DECODER +decoder_ldadd = $(top_builddir)/mpglib/libmpgdecoder.la +else +decoder_ldadd = +endif + +libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd) +libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \ + -no-undefined + +INCLUDES = @INCLUDES@ -I$(top_srcdir)/mpglib -I$(top_builddir) + +DEFS = @DEFS@ @CONFIG_DEFS@ + +EXTRA_DIST = \ + libmp3lame_vc6.dsp \ + libmp3lame_vc7.vcproj \ + vbrquantize.h + +libmp3lame_la_SOURCES = \ + VbrTag.c \ + bitstream.c \ + encoder.c \ + fft.c \ + gain_analysis.c \ + id3tag.c \ + lame.c \ + newmdct.c \ + presets.c \ + psymodel.c \ + quantize.c \ + quantize_pvt.c \ + reservoir.c \ + set_get.c \ + tables.c \ + takehiro.c \ + util.c \ + vbrquantize.c \ + version.c \ + mpglib_interface.c + +noinst_HEADERS= \ + VbrTag.h \ + bitstream.h \ + encoder.h \ + fft.h \ + gain_analysis.h \ + id3tag.h \ + l3side.h \ + lame-analysis.h \ + lame_global_flags.h \ + machine.h \ + newmdct.h \ + psymodel.h \ + quantize.h \ + quantize_pvt.h \ + reservoir.h \ + set_get.h \ + tables.h \ + util.h \ + vbrquantize.h \ + version.h + +CLEANFILES = lclint.txt + +LCLINTFLAGS= \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +lclint.txt: ${libmp3lame_la_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmp3lame_la_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/lame-3.97/libmp3lame/Makefile.in b/lame-3.97/libmp3lame/Makefile.in new file mode 100644 index 0000000..0dda407 --- /dev/null +++ b/lame-3.97/libmp3lame/Makefile.in @@ -0,0 +1,763 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global depcomp +subdir = libmp3lame +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +@HAVE_NASM_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la +@LIB_WITH_DECODER_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/mpglib/libmpgdecoder.la +libmp3lame_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_2) +am_libmp3lame_la_OBJECTS = VbrTag$U.lo bitstream$U.lo encoder$U.lo \ + fft$U.lo gain_analysis$U.lo id3tag$U.lo lame$U.lo newmdct$U.lo \ + presets$U.lo psymodel$U.lo quantize$U.lo quantize_pvt$U.lo \ + reservoir$U.lo set_get$U.lo tables$U.lo takehiro$U.lo \ + util$U.lo vbrquantize$U.lo version$U.lo mpglib_interface$U.lo +libmp3lame_la_OBJECTS = $(am_libmp3lame_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libmp3lame_la_SOURCES) +DIST_SOURCES = $(libmp3lame_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ -I$(top_srcdir)/mpglib -I$(top_builddir) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +SUBDIRS = i386 +lib_LTLIBRARIES = libmp3lame.la +@HAVE_NASM_FALSE@nasm_ldadd = +@HAVE_NASM_TRUE@nasm_ldadd = $(top_builddir)/libmp3lame/@CPUTYPE@/liblameasmroutines.la +@LIB_WITH_DECODER_FALSE@decoder_ldadd = +@LIB_WITH_DECODER_TRUE@decoder_ldadd = $(top_builddir)/mpglib/libmpgdecoder.la +libmp3lame_la_LIBADD = $(nasm_ldadd) $(decoder_ldadd) +libmp3lame_la_LDFLAGS = -version-info @LIB_MAJOR_VERSION@:@LIB_MINOR_VERSION@ \ + -no-undefined + +EXTRA_DIST = \ + libmp3lame_vc6.dsp \ + libmp3lame_vc7.vcproj \ + vbrquantize.h + +libmp3lame_la_SOURCES = \ + VbrTag.c \ + bitstream.c \ + encoder.c \ + fft.c \ + gain_analysis.c \ + id3tag.c \ + lame.c \ + newmdct.c \ + presets.c \ + psymodel.c \ + quantize.c \ + quantize_pvt.c \ + reservoir.c \ + set_get.c \ + tables.c \ + takehiro.c \ + util.c \ + vbrquantize.c \ + version.c \ + mpglib_interface.c + +noinst_HEADERS = \ + VbrTag.h \ + bitstream.h \ + encoder.h \ + fft.h \ + gain_analysis.h \ + id3tag.h \ + l3side.h \ + lame-analysis.h \ + lame_global_flags.h \ + machine.h \ + newmdct.h \ + psymodel.h \ + quantize.h \ + quantize_pvt.h \ + reservoir.h \ + set_get.h \ + tables.h \ + util.h \ + vbrquantize.h \ + version.h + +CLEANFILES = lclint.txt +LCLINTFLAGS = \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmp3lame/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign libmp3lame/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libmp3lame.la: $(libmp3lame_la_OBJECTS) $(libmp3lame_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libmp3lame_la_LDFLAGS) $(libmp3lame_la_OBJECTS) $(libmp3lame_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VbrTag$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitstream$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encoder$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fft$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gain_analysis$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id3tag$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lame$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpglib_interface$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newmdct$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/presets$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/psymodel$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantize$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quantize_pvt$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reservoir$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_get$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tables$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/takehiro$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vbrquantize$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version$U.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +VbrTag_.c: VbrTag.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/VbrTag.c; then echo $(srcdir)/VbrTag.c; else echo VbrTag.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +bitstream_.c: bitstream.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/bitstream.c; then echo $(srcdir)/bitstream.c; else echo bitstream.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +encoder_.c: encoder.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/encoder.c; then echo $(srcdir)/encoder.c; else echo encoder.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +fft_.c: fft.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fft.c; then echo $(srcdir)/fft.c; else echo fft.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +gain_analysis_.c: gain_analysis.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gain_analysis.c; then echo $(srcdir)/gain_analysis.c; else echo gain_analysis.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +id3tag_.c: id3tag.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/id3tag.c; then echo $(srcdir)/id3tag.c; else echo id3tag.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +lame_.c: lame.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lame.c; then echo $(srcdir)/lame.c; else echo lame.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +mpglib_interface_.c: mpglib_interface.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mpglib_interface.c; then echo $(srcdir)/mpglib_interface.c; else echo mpglib_interface.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +newmdct_.c: newmdct.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/newmdct.c; then echo $(srcdir)/newmdct.c; else echo newmdct.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +presets_.c: presets.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/presets.c; then echo $(srcdir)/presets.c; else echo presets.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +psymodel_.c: psymodel.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/psymodel.c; then echo $(srcdir)/psymodel.c; else echo psymodel.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +quantize_.c: quantize.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quantize.c; then echo $(srcdir)/quantize.c; else echo quantize.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +quantize_pvt_.c: quantize_pvt.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quantize_pvt.c; then echo $(srcdir)/quantize_pvt.c; else echo quantize_pvt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +reservoir_.c: reservoir.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/reservoir.c; then echo $(srcdir)/reservoir.c; else echo reservoir.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +set_get_.c: set_get.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/set_get.c; then echo $(srcdir)/set_get.c; else echo set_get.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +tables_.c: tables.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tables.c; then echo $(srcdir)/tables.c; else echo tables.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +takehiro_.c: takehiro.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/takehiro.c; then echo $(srcdir)/takehiro.c; else echo takehiro.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +util_.c: util.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/util.c; then echo $(srcdir)/util.c; else echo util.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +vbrquantize_.c: vbrquantize.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/vbrquantize.c; then echo $(srcdir)/vbrquantize.c; else echo vbrquantize.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +version_.c: version.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/version.c; then echo $(srcdir)/version.c; else echo version.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +VbrTag_.$(OBJEXT) VbrTag_.lo bitstream_.$(OBJEXT) bitstream_.lo \ +encoder_.$(OBJEXT) encoder_.lo fft_.$(OBJEXT) fft_.lo \ +gain_analysis_.$(OBJEXT) gain_analysis_.lo id3tag_.$(OBJEXT) \ +id3tag_.lo lame_.$(OBJEXT) lame_.lo mpglib_interface_.$(OBJEXT) \ +mpglib_interface_.lo newmdct_.$(OBJEXT) newmdct_.lo presets_.$(OBJEXT) \ +presets_.lo psymodel_.$(OBJEXT) psymodel_.lo quantize_.$(OBJEXT) \ +quantize_.lo quantize_pvt_.$(OBJEXT) quantize_pvt_.lo \ +reservoir_.$(OBJEXT) reservoir_.lo set_get_.$(OBJEXT) set_get_.lo \ +tables_.$(OBJEXT) tables_.lo takehiro_.$(OBJEXT) takehiro_.lo \ +util_.$(OBJEXT) util_.lo vbrquantize_.$(OBJEXT) vbrquantize_.lo \ +version_.$(OBJEXT) version_.lo : $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ + clean clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-recursive ctags ctags-recursive distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-recursive distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLTLIBRARIES install-man \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + maintainer-clean-recursive mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-kr mostlyclean-libtool \ + mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-info-am \ + uninstall-libLTLIBRARIES + + +# end global section + +lclint.txt: ${libmp3lame_la_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmp3lame_la_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/libmp3lame/VbrTag.c b/lame-3.97/libmp3lame/VbrTag.c new file mode 100644 index 0000000..81c5e40 --- /dev/null +++ b/lame-3.97/libmp3lame/VbrTag.c @@ -0,0 +1,980 @@ +/* + * Xing VBR tagging for LAME. + * + * Copyright (c) 1999 A.L. Faber + * Copyright (c) 2001 Jonathan Dee + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: VbrTag.c,v 1.80.2.2 2005/11/27 10:20:35 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "machine.h" +#include "bitstream.h" +#include "lame.h" +#include "VbrTag.h" +#include "version.h" + +#include <assert.h> + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include <unistd.h> +#endif + + +#ifdef _DEBUG +/* #define DEBUG_VBRTAG */ +#endif + +/* + * 4 bytes for Header Tag + * 4 bytes for Header Flags + * 100 bytes for entry (NUMTOCENTRIES) + * 4 bytes for FRAME SIZE + * 4 bytes for STREAM_SIZE + * 4 bytes for VBR SCALE. a VBR quality indicator: 0=best 100=worst + * 20 bytes for LAME tag. for example, "LAME3.12 (beta 6)" + * ___________ + * 140 bytes +*/ +#define VBRHEADERSIZE (NUMTOCENTRIES+4+4+4+4+4) + +#define LAMEHEADERSIZE (VBRHEADERSIZE + 9 + 1 + 1 + 8 + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2) + +/* the size of the Xing header (MPEG1 and MPEG2) in kbps */ +#define XING_BITRATE1 128 +#define XING_BITRATE2 64 +#define XING_BITRATE25 32 + + + +const static char VBRTag0[]={"Xing"}; +const static char VBRTag1[]={"Info"}; + + + + +/* Lookup table for fast CRC computation + * See 'CRC_update_lookup' + * Uses the polynomial x^16+x^15+x^2+1 */ + +unsigned int crc16_lookup[256] = +{ + 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, + 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, + 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, + 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, + 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, + 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, + 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, + 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, + 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, + 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, + 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, + 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, + 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, + 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, + 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, + 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, + 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, + 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, + 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, + 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, + 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, + 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, + 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, + 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, + 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, + 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, + 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, + 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, + 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, + 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, + 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, + 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 +}; + + + + + +/*********************************************************************** + * Robert Hegemann 2001-01-17 + ***********************************************************************/ + +static void addVbr(VBR_seek_info_t * v, int bitrate) +{ + int i; + + v->sum += bitrate; + v->seen ++; + + if (v->seen < v->want) { + return; + } + + if (v->pos < v->size) { + v->bag[v->pos] = v->sum; + v->pos ++; + v->seen = 0; + } + if (v->pos == v->size) { + for (i = 1; i < v->size; i += 2) { + v->bag[i/2] = v->bag[i]; + } + v->want *= 2; + v->pos /= 2; + } +} + +static void Xing_seek_table(VBR_seek_info_t * v, unsigned char *t) +{ + int i, index; + int seek_point; + + if (v->pos <= 0) + return; + + for (i = 1; i < NUMTOCENTRIES; ++i) { + float j = i/(float)NUMTOCENTRIES, act, sum; + index = (int)(floor(j * v->pos)); + if (index > v->pos-1) + index = v->pos-1; + act = v->bag[index]; + sum = v->sum; + seek_point = (int)(256. * act / sum); + if (seek_point > 255) + seek_point = 255; + t[i] = seek_point; + } +} + +void print_seeking(unsigned char *t) +{ + int i; + + printf("seeking table "); + for (i = 0; i < NUMTOCENTRIES; ++i) { + printf(" %d ", t[i]); + } + printf("\n"); +} + + + +/**************************************************************************** + * AddVbrFrame: Add VBR entry, used to fill the VBR the TOC entries + * Paramters: + * nStreamPos: how many bytes did we write to the bitstream so far + * (in Bytes NOT Bits) + **************************************************************************** +*/ +void AddVbrFrame(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + int kbps = bitrate_table[gfp->version][gfc->bitrate_index]; + assert(gfc->VBR_seek_table.bag); + addVbr(&gfc->VBR_seek_table, kbps); + gfp->nVbrNumFrames++; +} + + +/*-------------------------------------------------------------*/ +static int ExtractI4(unsigned char *buf) +{ + int x; + /* big endian extract */ + x = buf[0]; + x <<= 8; + x |= buf[1]; + x <<= 8; + x |= buf[2]; + x <<= 8; + x |= buf[3]; + return x; +} + +static void CreateI4(unsigned char *buf, int nValue) +{ + /* big endian create */ + buf[0]=(nValue>>24)&0xff; + buf[1]=(nValue>>16)&0xff; + buf[2]=(nValue>> 8)&0xff; + buf[3]=(nValue )&0xff; +} + + + +static void CreateI2(unsigned char *buf, int nValue) +{ + /* big endian create */ + buf[0]=(nValue>> 8)&0xff; + buf[1]=(nValue )&0xff; +} + +/* check for magic strings*/ +int IsVbrTag(const unsigned char* buf) +{ + int isTag0, isTag1; + + isTag0 = ((buf[0]==VBRTag0[0]) && (buf[1]==VBRTag0[1]) && (buf[2]==VBRTag0[2]) && (buf[3]==VBRTag0[3])); + isTag1 = ((buf[0]==VBRTag1[0]) && (buf[1]==VBRTag1[1]) && (buf[2]==VBRTag1[2]) && (buf[3]==VBRTag1[3])); + + return (isTag0 || isTag1); +} + + +/*-------------------------------------------------------------*/ +/* Same as GetVbrTag below, but only checks for the Xing tag. + requires buf to contain only 40 bytes */ +/*-------------------------------------------------------------*/ +int CheckVbrTag(unsigned char *buf) +{ + int h_id, h_mode, h_sr_index; + + /* get selected MPEG header data */ + h_id = (buf[1] >> 3) & 1; + h_sr_index = (buf[2] >> 2) & 3; + h_mode = (buf[3] >> 6) & 3; + + /* determine offset of header */ + if( h_id ) + { + /* mpeg1 */ + if( h_mode != 3 ) buf+=(32+4); + else buf+=(17+4); + } + else + { + /* mpeg2 */ + if( h_mode != 3 ) buf+=(17+4); + else buf+=(9+4); + } + + return IsVbrTag(buf); +} + +int GetVbrTag(VBRTAGDATA *pTagData, unsigned char *buf) +{ + int i, head_flags; + int h_bitrate,h_id, h_mode, h_sr_index; + int enc_delay,enc_padding; + + /* get Vbr header data */ + pTagData->flags = 0; + + /* get selected MPEG header data */ + h_id = (buf[1] >> 3) & 1; + h_sr_index = (buf[2] >> 2) & 3; + h_mode = (buf[3] >> 6) & 3; + h_bitrate = ((buf[2]>>4)&0xf); + h_bitrate = bitrate_table[h_id][h_bitrate]; + + /* check for FFE syncword */ + if ((buf[1]>>4)==0xE) + pTagData->samprate = samplerate_table[2][h_sr_index]; + else + pTagData->samprate = samplerate_table[h_id][h_sr_index]; + /* if( h_id == 0 ) */ + /* pTagData->samprate >>= 1; */ + + + + /* determine offset of header */ + if( h_id ) + { + /* mpeg1 */ + if( h_mode != 3 ) buf+=(32+4); + else buf+=(17+4); + } + else + { + /* mpeg2 */ + if( h_mode != 3 ) buf+=(17+4); + else buf+=(9+4); + } + + if (!IsVbrTag(buf)) + return 0; + + buf+=4; + + pTagData->h_id = h_id; + + head_flags = pTagData->flags = ExtractI4(buf); buf+=4; /* get flags */ + + if( head_flags & FRAMES_FLAG ) + { + pTagData->frames = ExtractI4(buf); buf+=4; + } + + if( head_flags & BYTES_FLAG ) + { + pTagData->bytes = ExtractI4(buf); buf+=4; + } + + if( head_flags & TOC_FLAG ) + { + if( pTagData->toc != NULL ) + { + for(i=0;i<NUMTOCENTRIES;i++) + pTagData->toc[i] = buf[i]; + } + buf+=NUMTOCENTRIES; + } + + pTagData->vbr_scale = -1; + + if( head_flags & VBR_SCALE_FLAG ) + { + pTagData->vbr_scale = ExtractI4(buf); buf+=4; + } + + pTagData->headersize = + ((h_id+1)*72000*h_bitrate) / pTagData->samprate; + + buf+=21; + enc_delay = buf[0] << 4; + enc_delay += buf[1] >> 4; + enc_padding= (buf[1] & 0x0F)<<8; + enc_padding += buf[2]; + /* check for reasonable values (this may be an old Xing header, */ + /* not a INFO tag) */ + if (enc_delay<0 || enc_delay > 3000) enc_delay=-1; + if (enc_padding<0 || enc_padding > 3000) enc_padding=-1; + + pTagData->enc_delay=enc_delay; + pTagData->enc_padding=enc_padding; + +#ifdef DEBUG_VBRTAG + fprintf(stderr,"\n\n********************* VBR TAG INFO *****************\n"); + fprintf(stderr,"tag :%s\n",VBRTag); + fprintf(stderr,"head_flags :%d\n",head_flags); + fprintf(stderr,"bytes :%d\n",pTagData->bytes); + fprintf(stderr,"frames :%d\n",pTagData->frames); + fprintf(stderr,"VBR Scale :%d\n",pTagData->vbr_scale); + fprintf(stderr,"enc_delay = %i \n",enc_delay); + fprintf(stderr,"enc_padding= %i \n",enc_padding); + fprintf(stderr,"toc:\n"); + if( pTagData->toc != NULL ) + { + for(i=0;i<NUMTOCENTRIES;i++) + { + if( (i%10) == 0 ) fprintf(stderr,"\n"); + fprintf(stderr," %3d", (int)(pTagData->toc[i])); + } + } + fprintf(stderr,"\n***************** END OF VBR TAG INFO ***************\n"); +#endif + return 1; /* success */ +} + + +/**************************************************************************** + * InitVbrTag: Initializes the header, and write empty frame to stream + * Paramters: + * fpStream: pointer to output file stream + * nMode : Channel Mode: 0=STEREO 1=JS 2=DS 3=MONO + **************************************************************************** +*/ +int InitVbrTag(lame_global_flags *gfp) +{ + int nMode,SampIndex; + int i,kbps_header,tot; + lame_internal_flags *gfc = gfp->internal_flags; +#define MAXFRAMESIZE 2880 /* or 0xB40, the max freeformat 640 32kHz framesize */ + /* uint8_t pbtStreamBuffer[MAXFRAMESIZE]; */ + nMode = gfp->mode; + SampIndex = gfc->samplerate_index; + + + + gfp->nVbrNumFrames=0; + /*gfp->nVbrFrameBufferSize=0;*/ + + + /* Clear stream buffer */ + /* memset(pbtStreamBuffer,0x00,sizeof(pbtStreamBuffer)); */ + + + + /* + * Xing VBR pretends to be a 48kbs layer III frame. (at 44.1kHz). + * (at 48kHz they use 56kbs since 48kbs frame not big enough for + * table of contents) + * let's always embed Xing header inside a 64kbs layer III frame. + * this gives us enough room for a LAME version string too. + * size determined by sampling frequency (MPEG1) + * 32kHz: 216 bytes@48kbs 288bytes@ 64kbs + * 44.1kHz: 156 bytes 208bytes@64kbs (+1 if padding = 1) + * 48kHz: 144 bytes 192 + * + * MPEG 2 values are the same since the framesize and samplerate + * are each reduced by a factor of 2. + */ + + + if (1==gfp->version) { + kbps_header = XING_BITRATE1; + } else { + if (gfp->out_samplerate < 16000 ) + kbps_header = XING_BITRATE25; + else + kbps_header = XING_BITRATE2; + } + + if (gfp->VBR==vbr_off) + kbps_header = gfp->brate; + + gfp->TotalFrameSize= + ((gfp->version+1)*72000*kbps_header) / gfp->out_samplerate; + + tot = (gfc->sideinfo_len+LAMEHEADERSIZE); + + if (gfp->TotalFrameSize < tot || + gfp->TotalFrameSize > MAXFRAMESIZE ) { + /* disable tag, it wont fit */ + gfp->bWriteVbrTag = 0; + return 0; + } + + /* write dummy VBR tag of all 0's into bitstream */ + for (i=0; i<gfp->TotalFrameSize; ++i) + add_dummy_byte(gfp,0); + + + gfc->VBR_seek_table.sum = 0; + + gfc->VBR_seek_table.seen = 0; + gfc->VBR_seek_table.want = 1; + gfc->VBR_seek_table.pos = 0; + + if (gfc->VBR_seek_table.bag == NULL) { + gfc->VBR_seek_table.bag = malloc (400*sizeof(int)); + if (gfc->VBR_seek_table.bag != NULL) { + gfc->VBR_seek_table.size = 400; + } + else { + gfc->VBR_seek_table.size = 0; + ERRORF (gfc,"Error: can't allocate VbrFrames buffer\n"); + return -1; + } + } + /* Success */ + return 0; +} + + + +/* fast CRC-16 computation - uses table crc16_lookup 8*/ +int CRC_update_lookup(int value, int crc) +{ + int tmp; + tmp=crc^value; + crc=(crc>>8)^crc16_lookup[tmp & 0xff]; + return crc; +} + +void UpdateMusicCRC(uint16_t *crc,unsigned char *buffer, int size){ + int i; + for (i=0; i<size; ++i) + *crc = CRC_update_lookup(buffer[i],*crc); +} + + + + + +/**************************************************************************** + * Jonathan Dee 2001/08/31 + * + * PutLameVBR: Write LAME info: mini version + info on various switches used + * Paramters: + * pbtStreamBuffer : pointer to output buffer + * id3v2size : size of id3v2 tag in bytes + * crc : computation of crc-16 of Lame Tag so far (starting at frame sync) + * + **************************************************************************** +*/ +int PutLameVBR(lame_global_flags *gfp, FILE *fpStream, uint8_t *pbtStreamBuffer, uint32_t id3v2size, uint16_t crc) +{ + lame_internal_flags *gfc = gfp->internal_flags; +/* FLOAT fVersion = LAME_MAJOR_VERSION + 0.01 * LAME_MINOR_VERSION; */ + + int nBytesWritten = 0; + int nFilesize = 0; /*size of fpStream. Will be equal to size after process finishes. */ + int i; + + int enc_delay=lame_get_encoder_delay(gfp); /* encoder delay */ + int enc_padding=lame_get_encoder_padding(gfp); /* encoder padding */ + + /*recall: gfp->VBR_q is for example set by the switch -V */ + /* gfp->quality by -q, -h, -f, etc */ + + int nQuality = (100 - 10 * gfp->VBR_q - gfp->quality); + + + const char *szVersion = get_lame_very_short_version(); + uint8_t nVBR; + uint8_t nRevision = 0x00; + uint8_t nRevMethod; + uint8_t vbr_type_translator[] = {1,5,3,2,4,0,3}; /*numbering different in vbr_mode vs. Lame tag */ + + uint8_t nLowpass = ( ((gfp->lowpassfreq / 100.0)+.5) > 255 ? 255 : (gfp->lowpassfreq / 100.0)+.5 ); + + uint32_t nPeakSignalAmplitude = 0; + + uint16_t nRadioReplayGain = 0; + uint16_t nAudiophileReplayGain = 0; + + uint8_t nNoiseShaping = gfp->internal_flags->noise_shaping; + uint8_t nStereoMode = 0; + int bNonOptimal = 0; + uint8_t nSourceFreq = 0; + uint8_t nMisc = 0; + uint32_t nMusicLength = 0; + int bId3v1Present = ((gfp->internal_flags->tag_spec.flags & CHANGED_FLAG) + && !(gfp->internal_flags->tag_spec.flags & V2_ONLY_FLAG)); + uint16_t nMusicCRC = 0; + + /*psy model type: Gpsycho or NsPsytune */ + unsigned char bExpNPsyTune = gfp->exp_nspsytune & 1; + unsigned char bSafeJoint = (gfp->exp_nspsytune & 2)!=0; + + unsigned char bNoGapMore = 0; + unsigned char bNoGapPrevious = 0; + + int nNoGapCount = gfp->internal_flags->nogap_total; + int nNoGapCurr = gfp->internal_flags->nogap_current; + + + uint8_t nAthType = gfp->ATHtype; /*4 bits. */ + + uint8_t nFlags = 0; + + /* if ABR, {store bitrate <=255} else { store "-b"} */ + int nABRBitrate; + switch (gfp->VBR) { + case vbr_abr:{ + nABRBitrate = gfp->VBR_mean_bitrate_kbps; + break; + } + case vbr_off:{ + nABRBitrate = gfp->brate; + break; + } + default:{ /*vbr modes*/ + nABRBitrate = gfp->VBR_min_bitrate_kbps; + } + } + + + /*revision and vbr method */ + if (gfp->VBR>=0 && gfp->VBR < sizeof(vbr_type_translator)) + nVBR = vbr_type_translator[gfp->VBR]; + else + nVBR = 0x00; /*unknown. */ + + nRevMethod = 0x10 * nRevision + nVBR; + + + /* ReplayGain */ + if (gfc->findReplayGain) { + if (gfc->RadioGain > 0x1FE) + gfc->RadioGain = 0x1FE; + if (gfc->RadioGain < -0x1FE) + gfc->RadioGain = -0x1FE; + + nRadioReplayGain = 0x2000; /* set name code */ + nRadioReplayGain |= 0xC00; /* set originator code to `determined automatically' */ + + if (gfc->RadioGain >= 0) + nRadioReplayGain |= gfc->RadioGain; /* set gain adjustment */ + else { + nRadioReplayGain |= 0x200; /* set the sign bit */ + nRadioReplayGain |= -gfc->RadioGain; /* set gain adjustment */ + } + } + + /* peak sample */ + if(gfc->findPeakSample) + nPeakSignalAmplitude = abs((int)((((FLOAT)gfc->PeakSample) / 32767.0 ) * pow(2,23) +.5)); + + /*nogap */ + if (nNoGapCount != -1) + { + if (nNoGapCurr > 0) + bNoGapPrevious = 1; + + if (nNoGapCurr < nNoGapCount-1) + bNoGapMore = 1; + } + + /*flags */ + + nFlags = nAthType + (bExpNPsyTune << 4) + + (bSafeJoint << 5) + + (bNoGapMore << 6) + + (bNoGapPrevious << 7); + + + if (nQuality < 0) + nQuality = 0; + + /*stereo mode field... a bit ugly.*/ + + switch(gfp->mode) + { + case MONO: + nStereoMode = 0; + break; + case STEREO: + nStereoMode = 1; + break; + case DUAL_CHANNEL: + nStereoMode = 2; + break; + case JOINT_STEREO: + if (gfp->force_ms) + nStereoMode = 4; + else + nStereoMode = 3; + break; + case NOT_SET: + /* FALLTHROUGH */ + default: + nStereoMode = 7; + break; + } + + /*Intensity stereo : nStereoMode = 6. IS is not implemented */ + + if (gfp->in_samplerate <= 32000) + nSourceFreq = 0x00; + else if (gfp->in_samplerate ==48000) + nSourceFreq = 0x02; + else if (gfp->in_samplerate > 48000) + nSourceFreq = 0x03; + else + nSourceFreq = 0x01; /*default is 44100Hz. */ + + + /*Check if the user overrided the default LAME behaviour with some nasty options */ + + if (gfp->short_blocks == short_block_forced || + gfp->short_blocks == short_block_dispensed || + ((gfp->lowpassfreq == -1) && (gfp->highpassfreq == -1)) || /* "-k" */ + (gfp->scale_left != gfp->scale_right) || + (gfp->disable_reservoir && gfp->brate < 320) || + gfp->noATH || + gfp->ATHonly || + (nAthType == 0) || + gfp->in_samplerate <= 32000) + bNonOptimal = 1; + + nMisc = nNoiseShaping + + (nStereoMode << 2) + + (bNonOptimal << 5) + + (nSourceFreq << 6); + + + + /*get filesize */ + fseek(fpStream, 0, SEEK_END); + nFilesize = ftell(fpStream); + + + nMusicLength = nFilesize - id3v2size; /*omit current frame */ + if (bId3v1Present) + nMusicLength-=128; /*id3v1 present. */ + nMusicCRC = gfc->nMusicCRC; + + + /*Write all this information into the stream*/ + CreateI4(&pbtStreamBuffer[nBytesWritten], nQuality); + nBytesWritten+=4; + + strncpy(&pbtStreamBuffer[nBytesWritten], szVersion, 9); + nBytesWritten+=9; + + pbtStreamBuffer[nBytesWritten] = nRevMethod ; + nBytesWritten++; + + pbtStreamBuffer[nBytesWritten] = nLowpass; + nBytesWritten++; + + CreateI4(&pbtStreamBuffer[nBytesWritten], nPeakSignalAmplitude); + nBytesWritten+=4; + + CreateI2(&pbtStreamBuffer[nBytesWritten],nRadioReplayGain); + nBytesWritten+=2; + + CreateI2(&pbtStreamBuffer[nBytesWritten],nAudiophileReplayGain); + nBytesWritten+=2; + + pbtStreamBuffer[nBytesWritten] = nFlags; + nBytesWritten++; + + if (nABRBitrate >= 255) + pbtStreamBuffer[nBytesWritten] = 0xFF; + else + pbtStreamBuffer[nBytesWritten] = nABRBitrate; + nBytesWritten++; + + pbtStreamBuffer[nBytesWritten ] = enc_delay >> 4; /* works for win32, does it for unix? */ + pbtStreamBuffer[nBytesWritten +1] = (enc_delay << 4) + (enc_padding >> 8); + pbtStreamBuffer[nBytesWritten +2] = enc_padding; + + nBytesWritten+=3; + + pbtStreamBuffer[nBytesWritten] = nMisc; + nBytesWritten++; + + + pbtStreamBuffer[nBytesWritten++] = 0; /*unused in rev0 */ + + CreateI2(&pbtStreamBuffer[nBytesWritten], gfp->preset); + nBytesWritten+=2; + + CreateI4(&pbtStreamBuffer[nBytesWritten], nMusicLength); + nBytesWritten+=4; + + CreateI2(&pbtStreamBuffer[nBytesWritten], nMusicCRC); + nBytesWritten+=2; + + /*Calculate tag CRC.... must be done here, since it includes + *previous information*/ + + for (i = 0;i<nBytesWritten;i++) + crc = CRC_update_lookup(pbtStreamBuffer[i], crc); + + CreateI2(&pbtStreamBuffer[nBytesWritten], crc); + nBytesWritten+=2; + + return nBytesWritten; +} + +/*********************************************************************** + * + * PutVbrTag: Write final VBR tag to the file + * Paramters: + * lpszFileName: filename of MP3 bit stream + * nVbrScale : encoder quality indicator (0..100) + **************************************************************************** +*/ +int PutVbrTag(lame_global_flags *gfp,FILE *fpStream,int nVbrScale) +{ + lame_internal_flags * gfc = gfp->internal_flags; + + long lFileSize; + int nStreamIndex; + char abyte,bbyte; + uint8_t btToc[NUMTOCENTRIES]; + uint8_t pbtStreamBuffer[MAXFRAMESIZE]; + + int i; + uint16_t crc = 0x00; + + unsigned char id3v2Header[10]; + size_t id3v2TagSize; + + if (gfc->VBR_seek_table.pos <= 0) + return -1; + + + /* Clear stream buffer */ + memset(pbtStreamBuffer,0x00,sizeof(pbtStreamBuffer)); + + /* Seek to end of file*/ + fseek(fpStream,0,SEEK_END); + + /* Get file size */ + lFileSize=ftell(fpStream); + + /* Abort if file has zero length. Yes, it can happen :) */ + if (lFileSize==0) + return -1; + + /* + * The VBR tag may NOT be located at the beginning of the stream. + * If an ID3 version 2 tag was added, then it must be skipped to write + * the VBR tag data. + */ + + /* seek to the beginning of the stream */ + fseek(fpStream,0,SEEK_SET); + /* read 10 bytes in case there's an ID3 version 2 header here */ + fread(id3v2Header,1,sizeof id3v2Header,fpStream); + /* does the stream begin with the ID3 version 2 file identifier? */ + if (!strncmp((char *)id3v2Header,"ID3",3)) { + /* the tag size (minus the 10-byte header) is encoded into four + * bytes where the most significant bit is clear in each byte */ + id3v2TagSize=(((id3v2Header[6] & 0x7f)<<21) + | ((id3v2Header[7] & 0x7f)<<14) + | ((id3v2Header[8] & 0x7f)<<7) + | (id3v2Header[9] & 0x7f)) + + sizeof id3v2Header; + } else { + /* no ID3 version 2 tag in this stream */ + id3v2TagSize=0; + } + + /* Seek to first real frame */ + fseek(fpStream,id3v2TagSize+gfp->TotalFrameSize,SEEK_SET); + + /* Read the header (first valid frame) */ + fread(pbtStreamBuffer,4,1,fpStream); + + /* the default VBR header. 48 kbps layer III, no padding, no crc */ + /* but sampling freq, mode andy copyright/copy protection taken */ + /* from first valid frame */ + pbtStreamBuffer[0]=(uint8_t) 0xff; + abyte = (pbtStreamBuffer[1] & (char) 0xf1); + { + int bitrate; + if (1==gfp->version) { + bitrate = XING_BITRATE1; + } else { + if (gfp->out_samplerate < 16000 ) + bitrate = XING_BITRATE25; + else + bitrate = XING_BITRATE2; + } + + if (gfp->VBR==vbr_off) + bitrate = gfp->brate; + + if (gfp->free_format) + bbyte = 0x00; + else + bbyte = 16*BitrateIndex(bitrate,gfp->version,gfp->out_samplerate); + } + + /* Use as much of the info from the real frames in the + * Xing header: samplerate, channels, crc, etc... + */ + if (gfp->version==1) { + /* MPEG1 */ + pbtStreamBuffer[1]=abyte | (char) 0x0a; /* was 0x0b; */ + abyte = pbtStreamBuffer[2] & (char) 0x0d; /* AF keep also private bit */ + pbtStreamBuffer[2]=(char) bbyte | abyte; /* 64kbs MPEG1 frame */ + }else{ + /* MPEG2 */ + pbtStreamBuffer[1]=abyte | (char) 0x02; /* was 0x03; */ + abyte = pbtStreamBuffer[2] & (char) 0x0d; /* AF keep also private bit */ + pbtStreamBuffer[2]=(char) bbyte | abyte; /* 64kbs MPEG2 frame */ + } + + /* Clear all TOC entries */ + memset(btToc,0,sizeof(btToc)); + + if (gfp->free_format) { + int i; + for (i = 1; i < NUMTOCENTRIES; ++i) + btToc[i] = 255*i/100; + } else { + Xing_seek_table(&gfc->VBR_seek_table, btToc); + } + /*print_seeking (btToc);*/ + + /* Start writing the tag after the zero frame */ + nStreamIndex=gfc->sideinfo_len; + /* note! Xing header specifies that Xing data goes in the + * ancillary data with NO ERROR PROTECTION. If error protecton + * in enabled, the Xing data still starts at the same offset, + * and now it is in sideinfo data block, and thus will not + * decode correctly by non-Xing tag aware players */ + if (gfp->error_protection) nStreamIndex -= 2; + + /* Put Vbr tag */ + if (gfp->VBR == vbr_off) + { + pbtStreamBuffer[nStreamIndex++]=VBRTag1[0]; + pbtStreamBuffer[nStreamIndex++]=VBRTag1[1]; + pbtStreamBuffer[nStreamIndex++]=VBRTag1[2]; + pbtStreamBuffer[nStreamIndex++]=VBRTag1[3]; + + } + else + { + pbtStreamBuffer[nStreamIndex++]=VBRTag0[0]; + pbtStreamBuffer[nStreamIndex++]=VBRTag0[1]; + pbtStreamBuffer[nStreamIndex++]=VBRTag0[2]; + pbtStreamBuffer[nStreamIndex++]=VBRTag0[3]; + } + + /* Put header flags */ + CreateI4(&pbtStreamBuffer[nStreamIndex],FRAMES_FLAG+BYTES_FLAG+TOC_FLAG+VBR_SCALE_FLAG); + nStreamIndex+=4; + + /* Put Total Number of frames */ + CreateI4(&pbtStreamBuffer[nStreamIndex],gfp->nVbrNumFrames); + nStreamIndex+=4; + + /* Put Total file size */ + CreateI4(&pbtStreamBuffer[nStreamIndex],(int)lFileSize); + nStreamIndex+=4; + + /* Put TOC */ + memcpy(&pbtStreamBuffer[nStreamIndex],btToc,sizeof(btToc)); + nStreamIndex+=sizeof(btToc); + + + if (gfp->error_protection) { + /* (jo) error_protection: add crc16 information to header */ + CRC_writeheader(gfc, (char*)pbtStreamBuffer); + } + + + + /*work out CRC so far: initially crc = 0 */ + for (i = 0;i< nStreamIndex ;i++) + crc = CRC_update_lookup(pbtStreamBuffer[i], crc); + + /*Put LAME VBR info*/ + nStreamIndex+=PutLameVBR(gfp, fpStream, pbtStreamBuffer + nStreamIndex, id3v2TagSize,crc); + +#ifdef DEBUG_VBRTAG + { + VBRTAGDATA TestHeader; + GetVbrTag(&TestHeader,pbtStreamBuffer); + } +#endif + + /*Seek to the beginning of the stream */ + fseek(fpStream,id3v2TagSize,SEEK_SET); + + /* Put it all to disk again */ + if (fwrite(pbtStreamBuffer,(unsigned int)gfp->TotalFrameSize,1,fpStream)!=1) + { + return -1; + } + + + return 0; /* success */ +} + + diff --git a/lame-3.97/libmp3lame/VbrTag.h b/lame-3.97/libmp3lame/VbrTag.h new file mode 100644 index 0000000..cd5a32d --- /dev/null +++ b/lame-3.97/libmp3lame/VbrTag.h @@ -0,0 +1,90 @@ +/* + * Xing VBR tagging for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_VRBTAG_H +#define LAME_VRBTAG_H + +#include "lame.h" + +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + +/* ----------------------------------------------------------- + * A Vbr header may be present in the ancillary + * data field of the first frame of an mp3 bitstream + * The Vbr header (optionally) contains + * frames total number of audio frames in the bitstream + * bytes total number of bytes in the bitstream + * toc table of contents + + * toc (table of contents) gives seek points + * for random access + * the ith entry determines the seek point for + * i-percent duration + * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes + * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes + */ + + +#define FRAMES_FLAG 0x0001 +#define BYTES_FLAG 0x0002 +#define TOC_FLAG 0x0004 +#define VBR_SCALE_FLAG 0x0008 + +#define NUMTOCENTRIES 100 + +#define FRAMES_AND_BYTES (FRAMES_FLAG | BYTES_FLAG) + + + +/*structure to receive extracted header */ +/* toc may be NULL*/ +typedef struct +{ + int h_id; /* from MPEG header, 0=MPEG2, 1=MPEG1 */ + int samprate; /* determined from MPEG header */ + int flags; /* from Vbr header data */ + int frames; /* total bit stream frames from Vbr header data */ + int bytes; /* total bit stream bytes from Vbr header data*/ + int vbr_scale; /* encoded vbr scale from Vbr header data*/ + unsigned char toc[NUMTOCENTRIES]; /* may be NULL if toc not desired*/ + int headersize; /* size of VBR header, in bytes */ + int enc_delay; /* encoder delay */ + int enc_padding; /* encoder paddign added at end of stream */ +} VBRTAGDATA; + +int CheckVbrTag(unsigned char *buf); +int GetVbrTag(VBRTAGDATA *pTagData, unsigned char *buf); + +int SeekPoint(unsigned char TOC[NUMTOCENTRIES], int file_bytes, float percent); +int InitVbrTag(lame_global_flags *gfp); +int PutVbrTag(lame_global_flags *gfp,FILE *fid,int nVbrScale); +int PutLameVBR(lame_global_flags *gfp, FILE *fpStream, uint8_t *pbtStreamBuffer, uint32_t id3v2size, uint16_t crc); +void AddVbrFrame(lame_global_flags *gfp); +void UpdateMusicCRC(uint16_t *crc,unsigned char *buffer, int size); + +#endif + diff --git a/lame-3.97/libmp3lame/bitstream.c b/lame-3.97/libmp3lame/bitstream.c new file mode 100644 index 0000000..bff4089 --- /dev/null +++ b/lame-3.97/libmp3lame/bitstream.c @@ -0,0 +1,1047 @@ +/* + * MP3 bitstream Output interface for LAME + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 1999-2002 Takehiro Tominaga + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * $Id: bitstream.c,v 1.69.2.1 2005/11/20 14:08:24 bouvigne Exp $ + */ + + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdlib.h> +#include <assert.h> +#include <stdio.h> +#include "tables.h" +#include "bitstream.h" +#include "quantize.h" +#include "quantize_pvt.h" +#include "version.h" +#include "VbrTag.h" +#include "machine.h" +#include "gain_analysis.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* unsigned int is at least this large: */ +/* we work with ints, so when doing bit manipulation, we limit + * ourselves to MAX_LENGTH-2 just to be on the safe side */ +#define MAX_LENGTH 32 + + + +#ifdef DEBUG +static int hoge, hogege; +#endif + + + + + +/*********************************************************************** + * compute bitsperframe and mean_bits for a layer III frame + **********************************************************************/ +int getframebits(const lame_global_flags * gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int bit_rate; + + /* get bitrate in kbps [?] */ + if (gfc->bitrate_index) + bit_rate = bitrate_table[gfp->version][gfc->bitrate_index]; + else + bit_rate = gfp->brate; + assert ( bit_rate <= 550 ); + + /* main encoding routine toggles padding on and off */ + /* one Layer3 Slot consists of 8 bits */ + return 8 * ((gfp->version+1)*72000*bit_rate / gfp->out_samplerate + + gfc->padding); +} + + + + +void putheader_bits(lame_internal_flags *gfc) +{ + Bit_stream_struc *bs; + bs = &gfc->bs; +#ifdef DEBUG + hoge += gfc->sideinfo_len * 8; + hogege += gfc->sideinfo_len * 8; +#endif + memcpy(&bs->buf[bs->buf_byte_idx], gfc->header[gfc->w_ptr].buf, + gfc->sideinfo_len); + bs->buf_byte_idx += gfc->sideinfo_len; + bs->totbit += gfc->sideinfo_len * 8; + gfc->w_ptr = (gfc->w_ptr + 1) & (MAX_HEADER_BUF - 1); +} + + + + +/*write j bits into the bit stream */ +inline static void +putbits2(lame_internal_flags *gfc, int val, int j) +{ + Bit_stream_struc *bs; + bs = &gfc->bs; + + assert(j < MAX_LENGTH-2); + + while (j > 0) { + int k; + if (bs->buf_bit_idx == 0) { + bs->buf_bit_idx = 8; + bs->buf_byte_idx++; + assert(bs->buf_byte_idx < BUFFER_SIZE); + assert(gfc->header[gfc->w_ptr].write_timing >= bs->totbit); + if (gfc->header[gfc->w_ptr].write_timing == bs->totbit) { + putheader_bits(gfc); + } + bs->buf[bs->buf_byte_idx] = 0; + } + + k = Min(j, bs->buf_bit_idx); + j -= k; + + bs->buf_bit_idx -= k; + + assert (j < MAX_LENGTH); /* 32 too large on 32 bit machines */ + assert (bs->buf_bit_idx < MAX_LENGTH); + + bs->buf[bs->buf_byte_idx] |= ((val >> j) << bs->buf_bit_idx); + bs->totbit += k; + } +} + +/*write j bits into the bit stream, ignoring frame headers */ +inline static void +putbits_noheaders(lame_internal_flags *gfc, int val, int j) +{ + Bit_stream_struc *bs; + bs = &gfc->bs; + + assert(j < MAX_LENGTH-2); + + while (j > 0) { + int k; + if (bs->buf_bit_idx == 0) { + bs->buf_bit_idx = 8; + bs->buf_byte_idx++; + assert(bs->buf_byte_idx < BUFFER_SIZE); + bs->buf[bs->buf_byte_idx] = 0; + } + + k = Min(j, bs->buf_bit_idx); + j -= k; + + bs->buf_bit_idx -= k; + + assert (j < MAX_LENGTH); /* 32 too large on 32 bit machines */ + assert (bs->buf_bit_idx < MAX_LENGTH); + + bs->buf[bs->buf_byte_idx] |= ((val >> j) << bs->buf_bit_idx); + bs->totbit += k; + } +} + + +/* + Some combinations of bitrate, Fs, and stereo make it impossible to stuff + out a frame using just main_data, due to the limited number of bits to + indicate main_data_length. In these situations, we put stuffing bits into + the ancillary data... +*/ + +inline static void +drain_into_ancillary(lame_global_flags *gfp, int remainingBits) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int i; + assert(remainingBits >= 0); + + if (remainingBits >= 8) { + putbits2(gfc,0x4c,8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc,0x41,8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc,0x4d,8); + remainingBits -= 8; + } + if (remainingBits >= 8) { + putbits2(gfc,0x45,8); + remainingBits -= 8; + } + + if (remainingBits >= 32) { + const char *version = get_lame_short_version (); + if (remainingBits >= 32) + for (i=0; i<(int)strlen(version) && remainingBits >=8 ; ++i) { + remainingBits -= 8; + putbits2(gfc,version[i],8); + } + } + + for (; remainingBits >= 1; remainingBits -= 1 ) { + putbits2(gfc, gfc->ancillary_flag, 1 ); + gfc->ancillary_flag ^= !gfp->disable_reservoir; + } + + assert (remainingBits == 0); + +} + +/*write N bits into the header */ +inline static void +writeheader(lame_internal_flags *gfc,int val, int j) +{ + int ptr = gfc->header[gfc->h_ptr].ptr; + + while (j > 0) { + int k = Min(j, 8 - (ptr & 7)); + j -= k; + assert (j < MAX_LENGTH); /* >> 32 too large for 32 bit machines */ + gfc->header[gfc->h_ptr].buf[ptr >> 3] + |= ((val >> j)) << (8 - (ptr & 7) - k); + ptr += k; + } + gfc->header[gfc->h_ptr].ptr = ptr; +} + + +static int +CRC_update(int value, int crc) +{ + int i; + value <<= 8; + for (i = 0; i < 8; i++) { + value <<= 1; + crc <<= 1; + + if (((crc ^ value) & 0x10000)) + crc ^= CRC16_POLYNOMIAL; + } + return crc; +} + + +void +CRC_writeheader(lame_internal_flags *gfc, char *header) +{ + int crc = 0xffff; /* (jo) init crc16 for error_protection */ + int i; + + crc = CRC_update(((unsigned char*)header)[2], crc); + crc = CRC_update(((unsigned char*)header)[3], crc); + for (i = 6; i < gfc->sideinfo_len; i++) { + crc = CRC_update(((unsigned char*)header)[i], crc); + } + + header[4] = crc >> 8; + header[5] = crc & 255; +} + +inline static void +encodeSideInfo2(lame_global_flags *gfp,int bitsPerFrame) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side; + int gr, ch; + + l3_side = &gfc->l3_side; + gfc->header[gfc->h_ptr].ptr = 0; + memset(gfc->header[gfc->h_ptr].buf, 0, gfc->sideinfo_len); + if (gfp->out_samplerate < 16000) + writeheader(gfc,0xffe, 12); + else + writeheader(gfc,0xfff, 12); + writeheader(gfc,(gfp->version), 1); + writeheader(gfc,4 - 3, 2); + writeheader(gfc,(!gfp->error_protection), 1); + writeheader(gfc,(gfc->bitrate_index), 4); + writeheader(gfc,(gfc->samplerate_index), 2); + writeheader(gfc,(gfc->padding), 1); + writeheader(gfc,(gfp->extension), 1); + writeheader(gfc,(gfp->mode), 2); + writeheader(gfc,(gfc->mode_ext), 2); + writeheader(gfc,(gfp->copyright), 1); + writeheader(gfc,(gfp->original), 1); + writeheader(gfc,(gfp->emphasis), 2); + if (gfp->error_protection) { + writeheader(gfc,0, 16); /* dummy */ + } + + if (gfp->version == 1) { + /* MPEG1 */ + assert(l3_side->main_data_begin >= 0); + writeheader(gfc,(l3_side->main_data_begin), 9); + + if (gfc->channels_out == 2) + writeheader(gfc,l3_side->private_bits, 3); + else + writeheader(gfc,l3_side->private_bits, 5); + + for (ch = 0; ch < gfc->channels_out; ch++) { + int band; + for (band = 0; band < 4; band++) { + writeheader(gfc,l3_side->scfsi[ch][band], 1); + } + } + + for (gr = 0; gr < 2; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + writeheader(gfc,gi->part2_3_length+gi->part2_length, 12); + writeheader(gfc,gi->big_values / 2, 9); + writeheader(gfc,gi->global_gain, 8); + writeheader(gfc,gi->scalefac_compress, 4); + + if (gi->block_type != NORM_TYPE) { + writeheader(gfc, 1, 1); /* window_switching_flag */ + writeheader(gfc,gi->block_type, 2); + writeheader(gfc,gi->mixed_block_flag, 1); + + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + + writeheader(gfc,gi->subblock_gain[0], 3); + writeheader(gfc,gi->subblock_gain[1], 3); + writeheader(gfc,gi->subblock_gain[2], 3); + } else { + writeheader(gfc, 0, 1); /* window_switching_flag */ + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + if (gi->table_select[2] == 14) + gi->table_select[2] = 16; + writeheader(gfc,gi->table_select[2], 5); + + assert(gi->region0_count < 16U); + assert(gi->region1_count < 8U); + writeheader(gfc,gi->region0_count, 4); + writeheader(gfc,gi->region1_count, 3); + } + writeheader(gfc,gi->preflag, 1); + writeheader(gfc,gi->scalefac_scale, 1); + writeheader(gfc,gi->count1table_select, 1); + } + } + } else { + /* MPEG2 */ + assert(l3_side->main_data_begin >= 0); + writeheader(gfc,(l3_side->main_data_begin), 8); + writeheader(gfc,l3_side->private_bits, gfc->channels_out); + + gr = 0; + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + writeheader(gfc,gi->part2_3_length+gi->part2_length, 12); + writeheader(gfc,gi->big_values / 2, 9); + writeheader(gfc,gi->global_gain, 8); + writeheader(gfc,gi->scalefac_compress, 9); + + if (gi->block_type != NORM_TYPE) { + writeheader(gfc, 1, 1); /* window_switching_flag */ + writeheader(gfc,gi->block_type, 2); + writeheader(gfc,gi->mixed_block_flag, 1); + + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + + writeheader(gfc,gi->subblock_gain[0], 3); + writeheader(gfc,gi->subblock_gain[1], 3); + writeheader(gfc,gi->subblock_gain[2], 3); + } else { + writeheader(gfc, 0, 1); /* window_switching_flag */ + if (gi->table_select[0] == 14) + gi->table_select[0] = 16; + writeheader(gfc,gi->table_select[0], 5); + if (gi->table_select[1] == 14) + gi->table_select[1] = 16; + writeheader(gfc,gi->table_select[1], 5); + if (gi->table_select[2] == 14) + gi->table_select[2] = 16; + writeheader(gfc,gi->table_select[2], 5); + + assert(gi->region0_count < 16U); + assert(gi->region1_count < 8U); + writeheader(gfc,gi->region0_count, 4); + writeheader(gfc,gi->region1_count, 3); + } + + writeheader(gfc,gi->scalefac_scale, 1); + writeheader(gfc,gi->count1table_select, 1); + } + } + + if (gfp->error_protection) { + /* (jo) error_protection: add crc16 information to header */ + CRC_writeheader(gfc, gfc->header[gfc->h_ptr].buf); + } + + { + int old = gfc->h_ptr; + assert(gfc->header[old].ptr == gfc->sideinfo_len * 8); + + gfc->h_ptr = (old + 1) & (MAX_HEADER_BUF - 1); + gfc->header[gfc->h_ptr].write_timing = + gfc->header[old].write_timing + bitsPerFrame; + + if (gfc->h_ptr == gfc->w_ptr) { + /* yikes! we are out of header buffer space */ + ERRORF(gfc,"Error: MAX_HEADER_BUF too small in bitstream.c \n"); + } + + } +} + + +inline static int +huffman_coder_count1(lame_internal_flags *gfc, gr_info *gi) +{ + /* Write count1 area */ + const struct huffcodetab *h = &ht[gi->count1table_select + 32]; + int i,bits=0; +#ifdef DEBUG + int gegebo = gfc->bs.totbit; +#endif + + int *ix = &gi->l3_enc[gi->big_values]; + FLOAT *xr = &gi->xr[gi->big_values]; + assert(gi->count1table_select < 2); + + for (i = (gi->count1 - gi->big_values) / 4; i > 0; --i) { + int huffbits = 0; + int p = 0, v; + + v = ix[0]; + if (v) { + p += 8; + if (xr[0] < 0) + huffbits++; + assert(v <= 1u); + } + + v = ix[1]; + if (v) { + p += 4; + huffbits *= 2; + if (xr[1] < 0) + huffbits++; + assert(v <= 1u); + } + + v = ix[2]; + if (v) { + p += 2; + huffbits *= 2; + if (xr[2] < 0) + huffbits++; + assert(v <= 1u); + } + + v = ix[3]; + if (v) { + p++; + huffbits *= 2; + if (xr[3] < 0) + huffbits++; + assert(v <= 1u); + } + + ix += 4; + xr += 4; + putbits2(gfc, huffbits + h->table[p], h->hlen[p]); + bits += h->hlen[p]; + } +#ifdef DEBUG + DEBUGF(gfc,"count1: real: %ld counted:%d (bigv %d count1len %d)\n", + gfc->bs.totbit -gegebo, gi->count1bits, gi->big_values, gi->count1); +#endif + return bits; +} + + + +/* + Implements the pseudocode of page 98 of the IS + */ +inline static int +Huffmancode( lame_internal_flags* const gfc, const int tableindex, + int start, int end, gr_info *gi) +{ + const struct huffcodetab* h = &ht[tableindex]; + int index, bits = 0; + + assert(tableindex < 32u); + if (!tableindex) + return bits; + + for (index = start; index < end; index += 2) { + int cbits = 0; + int xbits = 0; + int linbits = h->xlen; + int xlen = h->xlen; + int ext = 0; + int x1 = gi->l3_enc[index]; + int x2 = gi->l3_enc[index+1]; + + if (x1 != 0) { + if (gi->xr[index] < 0) + ext++; + cbits--; + } + + if (tableindex > 15) { + /* use ESC-words */ + if (x1 > 14) { + int linbits_x1 = x1 - 15; + assert ( linbits_x1 <= h->linmax ); + ext |= linbits_x1 << 1; + xbits = linbits; + x1 = 15; + } + + if (x2 > 14) { + int linbits_x2 = x2 - 15; + assert ( linbits_x2 <= h->linmax ); + ext <<= linbits; + ext |= linbits_x2; + xbits += linbits; + x2 = 15; + } + xlen = 16; + } + + if (x2 != 0) { + ext <<= 1; + if (gi->xr[index+1] < 0) + ext++; + cbits--; + } + + assert ( (x1|x2) < 16u ); + + x1 = x1 * xlen + x2; + xbits -= cbits; + cbits += h->hlen [x1]; + + assert ( cbits <= MAX_LENGTH ); + assert ( xbits <= MAX_LENGTH ); + + putbits2(gfc, h->table [x1], cbits ); + putbits2(gfc, ext, xbits ); + bits += cbits + xbits; + } + return bits; +} + +/* + Note the discussion of huffmancodebits() on pages 28 + and 29 of the IS, as well as the definitions of the side + information on pages 26 and 27. + */ +static int +ShortHuffmancodebits(lame_internal_flags *gfc, gr_info *gi) +{ + int bits; + int region1Start; + + region1Start = 3*gfc->scalefac_band.s[3]; + if (region1Start > gi->big_values) + region1Start = gi->big_values; + + /* short blocks do not have a region2 */ + bits = Huffmancode(gfc, gi->table_select[0], 0, region1Start, gi); + bits += Huffmancode(gfc, gi->table_select[1], region1Start, gi->big_values, gi); + return bits; +} + +static int +LongHuffmancodebits(lame_internal_flags *gfc, gr_info *gi) +{ + int i, bigvalues, bits; + int region1Start, region2Start; + + bigvalues = gi->big_values; + assert(0 <= bigvalues && bigvalues <= 576); + + i = gi->region0_count + 1; + assert(i < 23); + region1Start = gfc->scalefac_band.l[i]; + i += gi->region1_count + 1; + assert(i < 23); + region2Start = gfc->scalefac_band.l[i]; + + if (region1Start > bigvalues) + region1Start = bigvalues; + + if (region2Start > bigvalues) + region2Start = bigvalues; + + bits =Huffmancode(gfc, gi->table_select[0], 0, region1Start, gi); + bits +=Huffmancode(gfc, gi->table_select[1], region1Start, region2Start, gi); + bits +=Huffmancode(gfc, gi->table_select[2], region2Start, bigvalues, gi); + return bits; +} + +inline static int +writeMainData ( lame_global_flags * const gfp) +{ + int gr, ch, sfb,data_bits,tot_bits=0; + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side; + + l3_side = &gfc->l3_side; + if (gfp->version == 1) { + /* MPEG 1 */ + for (gr = 0; gr < 2; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + int slen1 = slen1_tab[gi->scalefac_compress]; + int slen2 = slen2_tab[gi->scalefac_compress]; + data_bits=0; +#ifdef DEBUG + hogege = gfc->bs.totbit; +#endif + for (sfb = 0; sfb < gi->sfbdivide; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; /* scfsi is used */ + putbits2(gfc, gi->scalefac[sfb], slen1); + data_bits += slen1; + } + for (; sfb < gi->sfbmax; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; /* scfsi is used */ + putbits2(gfc, gi->scalefac[sfb], slen2); + data_bits += slen2; + } + assert(data_bits == gi->part2_length); + + if (gi->block_type == SHORT_TYPE) { + data_bits += ShortHuffmancodebits(gfc, gi); + } else { + data_bits += LongHuffmancodebits(gfc, gi); + } + data_bits += huffman_coder_count1(gfc, gi); +#ifdef DEBUG + DEBUGF(gfc,"<%ld> ", gfc->bs.totbit-hogege); +#endif + /* does bitcount in quantize.c agree with actual bit count?*/ + assert(data_bits == gi->part2_3_length + gi->part2_length); + tot_bits += data_bits; + } /* for ch */ + } /* for gr */ + } else { + /* MPEG 2 */ + gr = 0; + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &l3_side->tt[gr][ch]; + int i, sfb_partition, scale_bits=0; + assert(gi->sfb_partition_table); + data_bits = 0; +#ifdef DEBUG + hogege = gfc->bs.totbit; +#endif + sfb = 0; + sfb_partition = 0; + + if (gi->block_type == SHORT_TYPE) { + for (; sfb_partition < 4; sfb_partition++) { + int sfbs = gi->sfb_partition_table[sfb_partition] / 3; + int slen = gi->slen[sfb_partition]; + for (i = 0; i < sfbs; i++, sfb++) { + putbits2(gfc, Max(gi->scalefac[sfb*3+0], 0U), slen); + putbits2(gfc, Max(gi->scalefac[sfb*3+1], 0U), slen); + putbits2(gfc, Max(gi->scalefac[sfb*3+2], 0U), slen); + scale_bits += 3*slen; + } + } + data_bits += ShortHuffmancodebits(gfc, gi); + } else { + for (; sfb_partition < 4; sfb_partition++) { + int sfbs = gi->sfb_partition_table[sfb_partition]; + int slen = gi->slen[sfb_partition]; + for (i = 0; i < sfbs; i++, sfb++) { + putbits2(gfc, Max(gi->scalefac[sfb], 0U), slen); + scale_bits += slen; + } + } + data_bits +=LongHuffmancodebits(gfc, gi); + } + data_bits +=huffman_coder_count1(gfc, gi); +#ifdef DEBUG + DEBUGF(gfc,"<%ld> ", gfc->bs.totbit-hogege); +#endif + /* does bitcount in quantize.c agree with actual bit count?*/ + assert(data_bits==gi->part2_3_length); + assert(scale_bits==gi->part2_length); + tot_bits += scale_bits + data_bits; + } /* for ch */ + } /* for gf */ + return tot_bits; +} /* main_data */ + + + +/* compute the number of bits required to flush all mp3 frames + currently in the buffer. This should be the same as the + reservoir size. Only call this routine between frames - i.e. + only after all headers and data have been added to the buffer + by format_bitstream(). + + Also compute total_bits_output = + size of mp3 buffer (including frame headers which may not + have yet been send to the mp3 buffer) + + number of bits needed to flush all mp3 frames. + + total_bytes_output is the size of the mp3 output buffer if + lame_encode_flush_nogap() was called right now. + + */ +int +compute_flushbits( const lame_global_flags * gfp, int *total_bytes_output ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int flushbits,remaining_headers; + int bitsPerFrame; + int last_ptr,first_ptr; + first_ptr=gfc->w_ptr; /* first header to add to bitstream */ + last_ptr = gfc->h_ptr - 1; /* last header to add to bitstream */ + if (last_ptr==-1) last_ptr=MAX_HEADER_BUF-1; + + /* add this many bits to bitstream so we can flush all headers */ + flushbits = gfc->header[last_ptr].write_timing - gfc->bs.totbit; + *total_bytes_output=flushbits; + + if (flushbits >= 0) { + /* if flushbits >= 0, some headers have not yet been written */ + /* reduce flushbits by the size of the headers */ + remaining_headers= 1+last_ptr - first_ptr; + if (last_ptr < first_ptr) + remaining_headers= 1+last_ptr - first_ptr + MAX_HEADER_BUF; + flushbits -= remaining_headers*8*gfc->sideinfo_len; + } + + + /* finally, add some bits so that the last frame is complete + * these bits are not necessary to decode the last frame, but + * some decoders will ignore last frame if these bits are missing + */ + bitsPerFrame = getframebits(gfp); + flushbits += bitsPerFrame; + *total_bytes_output += bitsPerFrame; + /* round up: */ + if (*total_bytes_output % 8) + *total_bytes_output = 1 + (*total_bytes_output/8); + else + *total_bytes_output = (*total_bytes_output/8); + *total_bytes_output += gfc->bs.buf_byte_idx + 1; + + + if (flushbits<0) { +#if 0 + /* if flushbits < 0, this would mean that the buffer looks like: + * (data...) last_header (data...) (extra data that should not be here...) + */ + DEBUGF(gfc,"last header write_timing = %i \n",gfc->header[last_ptr].write_timing); + DEBUGF(gfc,"first header write_timing = %i \n",gfc->header[first_ptr].write_timing); + DEBUGF(gfc,"bs.totbit: %i \n",gfc->bs.totbit); + DEBUGF(gfc,"first_ptr, last_ptr %i %i \n",first_ptr,last_ptr); + DEBUGF(gfc,"remaining_headers = %i \n",remaining_headers); + DEBUGF(gfc,"bitsperframe: %i \n",bitsPerFrame); + DEBUGF(gfc,"sidelen: %i \n",gfc->sideinfo_len); +#endif + ERRORF(gfc,"strange error flushing buffer ... \n"); + } + return flushbits; +} + + + +void +flush_bitstream(lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side; + int nbytes; + int flushbits; + int last_ptr,first_ptr; + first_ptr=gfc->w_ptr; /* first header to add to bitstream */ + last_ptr = gfc->h_ptr - 1; /* last header to add to bitstream */ + if (last_ptr==-1) last_ptr=MAX_HEADER_BUF-1; + l3_side = &gfc->l3_side; + + + if ((flushbits = compute_flushbits(gfp,&nbytes)) < 0) return; + drain_into_ancillary(gfp, flushbits); + + /* check that the 100% of the last frame has been written to bitstream */ + assert (gfc->header[last_ptr].write_timing + getframebits(gfp) + == gfc->bs.totbit); + + /* we have padded out all frames with ancillary data, which is the + same as filling the bitreservoir with ancillary data, so : */ + gfc->ResvSize=0; + l3_side->main_data_begin = 0; + + + /* save the ReplayGain value */ + if (gfc->findReplayGain) { + FLOAT RadioGain = (FLOAT) GetTitleGain(gfc->rgdata); + assert(RadioGain != GAIN_NOT_ENOUGH_SAMPLES); + gfc->RadioGain = (int) floor( RadioGain * 10.0 + 0.5 ); /* round to nearest */ + } + + /* find the gain and scale change required for no clipping */ + if (gfc->findPeakSample) { + gfc->noclipGainChange = (int) ceil(log10(gfc->PeakSample / 32767.0) *20.0*10.0); /* round up */ + + if (gfc->noclipGainChange > 0) { /* clipping occurs */ + if (gfp->scale == 1.0 || gfp->scale == 0.0) + gfc->noclipScale = floor( (32767.0 / gfc->PeakSample) * 100.0 ) / 100.0; /* round down */ + else + /* the user specified his own scaling factor. We could suggest + * the scaling factor of (32767.0/gfp->PeakSample)*(gfp->scale) + * but it's usually very inaccurate. So we'd rather not advice him + * on the scaling factor. */ + gfc->noclipScale = -1; + } + else /* no clipping */ + gfc->noclipScale = -1; + } +} + + + + +void add_dummy_byte ( lame_global_flags* const gfp, unsigned char val ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + + putbits_noheaders(gfc, val, 8); + + for (i=0 ; i< MAX_HEADER_BUF ; ++i) + gfc->header[i].write_timing += 8; +} + + +/* + format_bitstream() + + This is called after a frame of audio has been quantized and coded. + It will write the encoded audio to the bitstream. Note that + from a layer3 encoder's perspective the bit stream is primarily + a series of main_data() blocks, with header and side information + inserted at the proper locations to maintain framing. (See Figure A.7 + in the IS). + */ +int +format_bitstream(lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int bits,nbytes; + III_side_info_t *l3_side; + int bitsPerFrame; + l3_side = &gfc->l3_side; + + bitsPerFrame = getframebits(gfp); + drain_into_ancillary(gfp, l3_side->resvDrain_pre); + + encodeSideInfo2(gfp,bitsPerFrame); + bits = 8*gfc->sideinfo_len; + bits+=writeMainData(gfp); + drain_into_ancillary(gfp, l3_side->resvDrain_post); + bits += l3_side->resvDrain_post; + + l3_side->main_data_begin += (bitsPerFrame-bits)/8; + + /* compare number of bits needed to clear all buffered mp3 frames + * with what we think the resvsize is: */ + if (compute_flushbits(gfp,&nbytes) != gfc->ResvSize) { + ERRORF(gfc,"Internal buffer inconsistency. flushbits <> ResvSize"); + } + + + /* compare main_data_begin for the next frame with what we + * think the resvsize is: */ + if ((l3_side->main_data_begin * 8) != gfc->ResvSize ) { + ERRORF(gfc,"bit reservoir error: \n" + "l3_side->main_data_begin: %i \n" + "Resvoir size: %i \n" + "resv drain (post) %i \n" + "resv drain (pre) %i \n" + "header and sideinfo: %i \n" + "data bits: %i \n" + "total bits: %i (remainder: %i) \n" + "bitsperframe: %i \n", + + 8*l3_side->main_data_begin, + gfc->ResvSize, + l3_side->resvDrain_post, + l3_side->resvDrain_pre, + 8*gfc->sideinfo_len, + bits-l3_side->resvDrain_post-8*gfc->sideinfo_len, + bits, bits % 8, + bitsPerFrame + ); + + ERRORF(gfc,"This is a fatal error. It has several possible causes:"); + ERRORF(gfc,"90% LAME compiled with buggy version of gcc using advanced optimizations"); + ERRORF(gfc," 9% Your system is overclocked"); + ERRORF(gfc," 1% bug in LAME encoding library"); + + gfc->ResvSize = l3_side->main_data_begin*8; + }; + assert(gfc->bs.totbit % 8 == 0); + + if (gfc->bs.totbit > 1000000000 ) { + /* to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset bit counter*/ + int i; + for (i=0 ; i< MAX_HEADER_BUF ; ++i) + gfc->header[i].write_timing -= gfc->bs.totbit; + gfc->bs.totbit=0; + } + + + return 0; +} + + + + + +/* copy data out of the internal MP3 bit buffer into a user supplied + unsigned char buffer. + + mp3data=0 indicates data in buffer is an id3tags and VBR tags + mp3data=1 data is real mp3 frame data. + + +*/ +int copy_buffer(lame_internal_flags *gfc,unsigned char *buffer,int size,int mp3data) +{ + Bit_stream_struc *bs=&gfc->bs; + int minimum = bs->buf_byte_idx + 1; + if (minimum <= 0) return 0; + if (size!=0 && minimum>size) return -1; /* buffer is too small */ + memcpy(buffer,bs->buf,minimum); + bs->buf_byte_idx = -1; + bs->buf_bit_idx = 0; + + if (mp3data) { + UpdateMusicCRC(&gfc->nMusicCRC,buffer,minimum); + +#ifdef DECODE_ON_THE_FLY + if (gfc->decode_on_the_fly) { /* decode the frame */ + sample_t pcm_buf[2][1152]; + int mp3_in = minimum; + int samples_out = -1; + int i; + + /* re-synthesis to pcm. Repeat until we get a samples_out=0 */ + while(samples_out != 0) { + + samples_out=lame_decode1_unclipped(buffer,mp3_in,pcm_buf[0],pcm_buf[1]); + /* samples_out = 0: need more data to decode + * samples_out = -1: error. Lets assume 0 pcm output + * samples_out = number of samples output */ + + /* set the lenght of the mp3 input buffer to zero, so that in the + * next iteration of the loop we will be querying mpglib about + * buffered data */ + mp3_in = 0; + + if (samples_out==-1) { + /* error decoding. Not fatal, but might screw up + * the ReplayGain tag. What should we do? Ignore for now */ + samples_out=0; + } + if (samples_out>0) { + /* process the PCM data */ + + /* this should not be possible, and indicates we have + * overflown the pcm_buf buffer */ + assert(samples_out <= 1152); + + if (gfc->findPeakSample) { + for (i=0; i<samples_out; i++) { + if (pcm_buf[0][i] > gfc->PeakSample) + gfc->PeakSample = pcm_buf[0][i]; + else if (-pcm_buf[0][i] > gfc->PeakSample) + gfc->PeakSample = -pcm_buf[0][i]; + } + if (gfc->channels_out > 1) + for (i=0; i<samples_out; i++) { + if (pcm_buf[1][i] > gfc->PeakSample) + gfc->PeakSample = pcm_buf[1][i]; + else if (-pcm_buf[1][i] > gfc->PeakSample) + gfc->PeakSample = -pcm_buf[1][i]; + } + } + + if (gfc->findReplayGain) + if (AnalyzeSamples(gfc->rgdata, pcm_buf[0], pcm_buf[1], samples_out, gfc->channels_out) == GAIN_ANALYSIS_ERROR) + return -6; + + } /* if (samples_out>0) */ + } /* while (samples_out!=0) */ + } /* if (gfc->decode_on_the_fly) */ +#endif + + } /* if (mp3data) */ + return minimum; +} + + +void init_bit_stream_w(lame_internal_flags *gfc) +{ + gfc->bs.buf = (unsigned char *) malloc(BUFFER_SIZE); + gfc->bs.buf_size = BUFFER_SIZE; + + gfc->h_ptr = gfc->w_ptr = 0; + gfc->header[gfc->h_ptr].write_timing = 0; + gfc->bs.buf_byte_idx = -1; + gfc->bs.buf_bit_idx = 0; + gfc->bs.totbit = 0; +} + +/* end of bitstream.c */ + diff --git a/lame-3.97/libmp3lame/bitstream.h b/lame-3.97/libmp3lame/bitstream.h new file mode 100644 index 0000000..6edc6d5 --- /dev/null +++ b/lame-3.97/libmp3lame/bitstream.h @@ -0,0 +1,40 @@ +/* + * MP3 bitstream Output interface for LAME + * + * Copyright (c) 1999 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_BITSTREAM_H +#define LAME_BITSTREAM_H +#include "util.h" + +int getframebits(const lame_global_flags *gfp); + +int format_bitstream(lame_global_flags *gfp); + +void flush_bitstream(lame_global_flags *gfp); +void add_dummy_byte ( lame_global_flags* const gfp, unsigned char val ); + +int copy_buffer(lame_internal_flags *gfc,unsigned char *buffer,int buffer_size,int update_crc); +void init_bit_stream_w(lame_internal_flags *gfc); +void CRC_writeheader (lame_internal_flags *gfc, char *buffer); +int compute_flushbits(const lame_global_flags *gfp, int *nbytes); + + +#endif + diff --git a/lame-3.97/libmp3lame/depcomp b/lame-3.97/libmp3lame/depcomp new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/libmp3lame/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/libmp3lame/encoder.c b/lame-3.97/libmp3lame/encoder.c new file mode 100644 index 0000000..ed00b4e --- /dev/null +++ b/lame-3.97/libmp3lame/encoder.c @@ -0,0 +1,625 @@ +/* + * LAME MP3 encoding engine + * + * Copyright (c) 1999 Mark Taylor + * Copyright (c) 2000-2002 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2001 Gabriel Bouvigne + * Copyright (c) 2001 John Dahlstrom + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: encoder.c,v 1.90.2.1 2005/11/20 14:08:24 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <assert.h> + +#include "lame.h" +#include "util.h" +#include "newmdct.h" +#include "psymodel.h" +#include "quantize.h" +#include "quantize_pvt.h" +#include "bitstream.h" +#include "VbrTag.h" +#include "vbrquantize.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +/* + * auto-adjust of ATH, useful for low volume + * Gabriel Bouvigne 3 feb 2001 + * + * modifies some values in + * gfp->internal_flags->ATH + * (gfc->ATH) + */ +static void +adjust_ATH(lame_internal_flags * const gfc) +{ + FLOAT gr2_max, max_pow; + + if (gfc->ATH->use_adjust == 0) { + gfc->ATH->adjust = 1.0; /* no adjustment */ + return; + } + + /* jd - 2001 mar 12, 27, jun 30 */ + /* loudness based on equal loudness curve; */ + /* use granule with maximum combined loudness */ + max_pow = gfc->loudness_sq[0][0]; + gr2_max = gfc->loudness_sq[1][0]; + if (gfc->channels_out == 2) { + max_pow += gfc->loudness_sq[0][1]; + gr2_max += gfc->loudness_sq[1][1]; + } + else { + max_pow += max_pow; + gr2_max += gr2_max; + } + if (gfc->mode_gr == 2) { + max_pow = Max(max_pow, gr2_max); + } + max_pow *= 0.5; /* max_pow approaches 1.0 for full band noise */ + + /* jd - 2001 mar 31, jun 30 */ + /* user tuning of ATH adjustment region */ + max_pow *= gfc->ATH->aa_sensitivity_p; + + /* adjust ATH depending on range of maximum value + */ + + /* jd - 2001 feb27, mar12,20, jun30, jul22 */ + /* continuous curves based on approximation */ + /* to GB's original values. */ + /* For an increase in approximate loudness, */ + /* set ATH adjust to adjust_limit immediately */ + /* after a delay of one frame. */ + /* For a loudness decrease, reduce ATH adjust */ + /* towards adjust_limit gradually. */ + /* max_pow is a loudness squared or a power. */ + if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */ + if (gfc->ATH->adjust >= 1.0) { + gfc->ATH->adjust = 1.0; + } + else { + /* preceding frame has lower ATH adjust; */ + /* ascend only to the preceding adjust_limit */ + /* in case there is leading low volume */ + if (gfc->ATH->adjust < gfc->ATH->adjust_limit) { + gfc->ATH->adjust = gfc->ATH->adjust_limit; + } + } + gfc->ATH->adjust_limit = 1.0; + } + else { /* adjustment curve */ + /* about 32 dB maximum adjust (0.000625) */ + FLOAT adj_lim_new = 31.98 * max_pow + 0.000625; + if (gfc->ATH->adjust >= adj_lim_new) { /* descend gradually */ + gfc->ATH->adjust *= adj_lim_new * 0.075 + 0.925; + if (gfc->ATH->adjust < adj_lim_new) { /* stop descent */ + gfc->ATH->adjust = adj_lim_new; + } + } + else { /* ascend */ + if (gfc->ATH->adjust_limit >= adj_lim_new) { + gfc->ATH->adjust = adj_lim_new; + } + else { /* preceding frame has lower ATH adjust; */ + /* ascend only to the preceding adjust_limit */ + if (gfc->ATH->adjust < gfc->ATH->adjust_limit) { + gfc->ATH->adjust = gfc->ATH->adjust_limit; + } + } + } + gfc->ATH->adjust_limit = adj_lim_new; + } +} + +/*********************************************************************** + * + * some simple statistics + * + * bitrate index 0: free bitrate -> not allowed in VBR mode + * : bitrates, kbps depending on MPEG version + * bitrate index 15: forbidden + * + * mode_ext: + * 0: LR + * 1: LR-i + * 2: MS + * 3: MS-i + * + ***********************************************************************/ + +static void +updateStats(lame_internal_flags * const gfc) +{ + int gr, ch; + assert(gfc->bitrate_index < 16u); + assert(gfc->mode_ext < 4u); + + /* count bitrate indices */ + gfc->bitrate_stereoMode_Hist[gfc->bitrate_index][4]++; + gfc->bitrate_stereoMode_Hist[15][4]++; + + /* count 'em for every mode extension in case of 2 channel encoding */ + if (gfc->channels_out == 2) { + gfc->bitrate_stereoMode_Hist[gfc->bitrate_index][gfc->mode_ext]++; + gfc->bitrate_stereoMode_Hist[15][gfc->mode_ext]++; + } + for (gr = 0; gr < gfc->mode_gr; ++gr) { + for (ch = 0; ch < gfc->channels_out; ++ch) { + int bt = gfc->l3_side.tt[gr][ch].block_type; + int mf = gfc->l3_side.tt[gr][ch].mixed_block_flag; + if (mf) + bt = 4; + gfc->bitrate_blockType_Hist[gfc->bitrate_index][bt]++; + gfc->bitrate_blockType_Hist[gfc->bitrate_index][5]++; + gfc->bitrate_blockType_Hist[15][bt]++; + gfc->bitrate_blockType_Hist[15][5]++; + } + } +} + + + + +static void +lame_encode_frame_init(lame_global_flags * const gfp, const sample_t * inbuf[2]) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + int ch, gr; + + if (gfc->lame_encode_frame_init == 0) { + /* prime the MDCT/polyphase filterbank with a short block */ + int i, j; + sample_t primebuff0[286 + 1152 + 576]; + sample_t primebuff1[286 + 1152 + 576]; + gfc->lame_encode_frame_init = 1; + for (i = 0, j = 0; i < 286 + 576 * (1 + gfc->mode_gr); ++i) { + if (i < 576 * gfc->mode_gr) { + primebuff0[i] = 0; + if (gfc->channels_out == 2) + primebuff1[i] = 0; + } + else { + primebuff0[i] = inbuf[0][j]; + if (gfc->channels_out == 2) + primebuff1[i] = inbuf[1][j]; + ++j; + } + } + /* polyphase filtering / mdct */ + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gfc->l3_side.tt[gr][ch].block_type = SHORT_TYPE; + } + } + mdct_sub48(gfc, primebuff0, primebuff1); + + /* check FFT will not use a negative starting offset */ +#if 576 < FFTOFFSET +# error FFTOFFSET greater than 576: FFT uses a negative offset +#endif + /* check if we have enough data for FFT */ + assert(gfc->mf_size >= (BLKSIZE + gfp->framesize - FFTOFFSET)); + /* check if we have enough data for polyphase filterbank */ + assert(gfc->mf_size >= (512 + gfp->framesize - 32)); + } + +} + + + + + + + +/************************************************************************ +* +* encodeframe() Layer 3 +* +* encode a single frame +* +************************************************************************ +lame_encode_frame() + + + gr 0 gr 1 +inbuf: |--------------|--------------|--------------| + + +Polyphase (18 windows, each shifted 32) +gr 0: +window1 <----512----> +window18 <----512----> + +gr 1: +window1 <----512----> +window18 <----512----> + + + +MDCT output: |--------------|--------------|--------------| + +FFT's <---------1024----------> + <---------1024--------> + + + + inbuf = buffer of PCM data size=MP3 framesize + encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY + so the MDCT coefficints are from inbuf[ch][-MDCTDELAY] + + psy-model FFT has a 1 granule delay, so we feed it data for the + next granule. + FFT is centered over granule: 224+576+224 + So FFT starts at: 576-224-MDCTDELAY + + MPEG2: FFT ends at: BLKSIZE+576-224-MDCTDELAY (1328) + MPEG1: FFT ends at: BLKSIZE+2*576-224-MDCTDELAY (1904) + + MPEG2: polyphase first window: [0..511] + 18th window: [544..1055] (1056) + MPEG1: 36th window: [1120..1631] (1632) + data needed: 512+framesize-32 + + A close look newmdct.c shows that the polyphase filterbank + only uses data from [0..510] for each window. Perhaps because the window + used by the filterbank is zero for the last point, so Takehiro's + code doesn't bother to compute with it. + + FFT starts at 576-224-MDCTDELAY (304) = 576-FFTOFFSET + +*/ + +typedef FLOAT chgrdata[2][2]; + + +int +lame_encode_mp3_frame( /* Output */ + lame_global_flags * const gfp, /* Context */ + sample_t * inbuf_l, /* Input */ + sample_t * inbuf_r, /* Input */ + unsigned char *mp3buf, /* Output */ + int mp3buf_size) +{ /* Output */ + int mp3count; + III_psy_ratio masking_LR[2][2]; /*LR masking & energy */ + III_psy_ratio masking_MS[2][2]; /*MS masking & energy */ + III_psy_ratio(*masking)[2][2]; /*pointer to selected maskings */ + const sample_t *inbuf[2]; + lame_internal_flags *gfc = gfp->internal_flags; + + FLOAT tot_ener[2][4]; + FLOAT ms_ener_ratio[2] = { .5, .5 }; + chgrdata pe, pe_MS; + chgrdata *pe_use; + + int ch, gr; + + FLOAT ms_ratio_next = 0.; + FLOAT ms_ratio_prev = 0.; + + + inbuf[0] = inbuf_l; + inbuf[1] = inbuf_r; + + if (gfc->lame_encode_frame_init == 0) { + /*first run? */ + lame_encode_frame_init(gfp, inbuf); + + } + + + /********************** padding *****************************/ + /* padding method as described in + * "MPEG-Layer3 / Bitstream Syntax and Decoding" + * by Martin Sieler, Ralph Sperschneider + * + * note: there is no padding for the very first frame + * + * Robert Hegemann 2000-06-22 + */ + gfc->padding = FALSE; + if ((gfc->slot_lag -= gfc->frac_SpF) < 0) { + gfc->slot_lag += gfp->out_samplerate; + gfc->padding = TRUE; + } + + + + /**************************************** + * Stage 1: psychoacoustic model * + ****************************************/ + + if (gfc->psymodel) { + /* psychoacoustic model + * psy model has a 1 granule (576) delay that we must compensate for + * (mt 6/99). + */ + int ret; + const sample_t *bufp[2]; /* address of beginning of left & right granule */ + int blocktype[2]; + + ms_ratio_prev = gfc->ms_ratio[gfc->mode_gr - 1]; + for (gr = 0; gr < gfc->mode_gr; gr++) { + + for (ch = 0; ch < gfc->channels_out; ch++) + bufp[ch] = &inbuf[ch][576 + gr * 576 - FFTOFFSET]; + + if (gfp->psymodel == PSY_NSPSYTUNE) { + ret = L3psycho_anal_ns(gfp, bufp, gr, + &gfc->ms_ratio[gr], &ms_ratio_next, + masking_LR, masking_MS, + pe[gr], pe_MS[gr], tot_ener[gr], blocktype); + } + else { + ret = L3psycho_anal(gfp, bufp, gr, + &gfc->ms_ratio[gr], &ms_ratio_next, + masking_LR, masking_MS, + pe[gr], pe_MS[gr], tot_ener[gr], blocktype); + } + if (ret != 0) + return -4; + + if (gfp->mode == JOINT_STEREO) { + ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3]; + if (ms_ener_ratio[gr] > 0) + ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr]; + } + + /* block type flags */ + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + cod_info->block_type = blocktype[ch]; + cod_info->mixed_block_flag = 0; + } + } + } + else { + /*no psy model */ + memset((char *) masking_LR, 0, sizeof(masking_LR)); + memset((char *) masking_MS, 0, sizeof(masking_MS)); + for (gr = 0; gr < gfc->mode_gr; gr++) + for (ch = 0; ch < gfc->channels_out; ch++) { + gfc->l3_side.tt[gr][ch].block_type = NORM_TYPE; + gfc->l3_side.tt[gr][ch].mixed_block_flag = 0; + pe_MS[gr][ch] = pe[gr][ch] = 700; + } + } + + + + /* auto-adjust of ATH, useful for low volume */ + adjust_ATH(gfc); + + + /**************************************** + * Stage 2: MDCT * + ****************************************/ + + /* polyphase filtering / mdct */ + mdct_sub48(gfc, inbuf[0], inbuf[1]); + + + /**************************************** + * Stage 3: MS/LR decision * + ****************************************/ + + /* Here will be selected MS or LR coding of the 2 stereo channels */ + gfc->mode_ext = MPG_MD_LR_LR; + + if (gfp->force_ms) { + gfc->mode_ext = MPG_MD_MS_LR; + } + else if (gfp->mode == JOINT_STEREO) { + int check_ms_stereo = 1; + /* ms_ratio = is scaled, for historical reasons, to look like + a ratio of side_channel / total. + 0 = signal is 100% mono + .5 = L & R uncorrelated + */ + + /* [0] and [1] are the results for the two granules in MPEG-1, + * in MPEG-2 it's only a faked averaging of the same value + * _prev is the value of the last granule of the previous frame + * _next is the value of the first granule of the next frame + */ + if (gfp->psymodel == PSY_GPSYCHO) { + FLOAT ms_ratio_ave1; + FLOAT ms_ratio_ave2; + FLOAT threshold1 = 0.35; + FLOAT threshold2 = 0.45; + + /* take an average */ + if (gfc->mode_gr == 1) { + /* MPEG2 - no second granule */ + ms_ratio_ave1 = 0.33 * (gfc->ms_ratio[0] + ms_ratio_prev + ms_ratio_next); + ms_ratio_ave2 = gfc->ms_ratio[0]; + } + else { + ms_ratio_ave1 = + 0.25 * (gfc->ms_ratio[0] + gfc->ms_ratio[1] + ms_ratio_prev + ms_ratio_next); + ms_ratio_ave2 = 0.50 * (gfc->ms_ratio[0] + gfc->ms_ratio[1]); + } + + + if (ms_ratio_ave1 >= threshold1 || ms_ratio_ave2 >= threshold2) + check_ms_stereo = 0; + } + + if (check_ms_stereo) { + FLOAT sum_pe_MS = 0; + FLOAT sum_pe_LR = 0; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + sum_pe_MS += pe_MS[gr][ch]; + sum_pe_LR += pe[gr][ch]; + } + } + + /* based on PE: M/S coding would not use much more bits than L/R */ + if (((gfp->psymodel == PSY_GPSYCHO) && sum_pe_MS <= 1.07 * sum_pe_LR) || + ((gfp->psymodel == PSY_NSPSYTUNE) && sum_pe_MS <= 1.00 * sum_pe_LR)) { + + gr_info *gi0 = &gfc->l3_side.tt[0][0]; + gr_info *gi1 = &gfc->l3_side.tt[gfc->mode_gr - 1][0]; + + if (gi0[0].block_type == gi0[1].block_type && + gi1[0].block_type == gi1[1].block_type) { + + gfc->mode_ext = MPG_MD_MS_LR; + } + } + } + } + + /* bit and noise allocation */ + if (gfc->mode_ext == MPG_MD_MS_LR) { + masking = &masking_MS; /* use MS masking */ + pe_use = &pe_MS; + } + else { + masking = &masking_LR; /* use LR masking */ + pe_use = &pe; + } + + +#if defined(HAVE_GTK) + /* copy data for MP3 frame analyzer */ + if (gfp->analysis && gfc->pinfo != NULL) { + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gfc->pinfo->ms_ratio[gr] = gfc->ms_ratio[gr]; + gfc->pinfo->ms_ener_ratio[gr] = ms_ener_ratio[gr]; + gfc->pinfo->blocktype[gr][ch] = gfc->l3_side.tt[gr][ch].block_type; + gfc->pinfo->pe[gr][ch] = (*pe_use)[gr][ch]; + memcpy(gfc->pinfo->xr[gr][ch], &gfc->l3_side.tt[gr][ch].xr, sizeof(FLOAT) * 576); + /* in psymodel, LR and MS data was stored in pinfo. + switch to MS data: */ + if (gfc->mode_ext == MPG_MD_MS_LR) { + gfc->pinfo->ers[gr][ch] = gfc->pinfo->ers[gr][ch + 2]; + memcpy(gfc->pinfo->energy[gr][ch], gfc->pinfo->energy[gr][ch + 2], + sizeof(gfc->pinfo->energy[gr][ch])); + } + } + } + } +#endif + + + /**************************************** + * Stage 4: quantization loop * + ****************************************/ + + if (gfp->psymodel == PSY_NSPSYTUNE) { + if (gfp->VBR == vbr_off || gfp->VBR == vbr_abr) { + static FLOAT fircoef[9] = { + -0.0207887 * 5, -0.0378413 * 5, -0.0432472 * 5, -0.031183 * 5, + 7.79609e-18 * 5, 0.0467745 * 5, 0.10091 * 5, 0.151365 * 5, + 0.187098 * 5 + }; + + int i; + FLOAT f; + + for (i = 0; i < 18; i++) + gfc->nsPsy.pefirbuf[i] = gfc->nsPsy.pefirbuf[i + 1]; + + f = 0.0; + for (gr = 0; gr < gfc->mode_gr; gr++) + for (ch = 0; ch < gfc->channels_out; ch++) + f += (*pe_use)[gr][ch]; + gfc->nsPsy.pefirbuf[18] = f; + + f = gfc->nsPsy.pefirbuf[9]; + for (i = 0; i < 9; i++) + f += (gfc->nsPsy.pefirbuf[i] + gfc->nsPsy.pefirbuf[18 - i]) * fircoef[i]; + + f = (670 * 5 * gfc->mode_gr * gfc->channels_out) / f; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + (*pe_use)[gr][ch] *= f; + } + } + } + } + + switch (gfp->VBR) { + default: + case vbr_off: + CBR_iteration_loop(gfp, *pe_use, ms_ener_ratio, *masking); + break; + case vbr_mt: + case vbr_rh: + case vbr_mtrh: + VBR_iteration_loop(gfp, *pe_use, ms_ener_ratio, *masking); + break; + case vbr_abr: + ABR_iteration_loop(gfp, *pe_use, ms_ener_ratio, *masking); + break; + } + + + + /**************************************** + * Stage 5: bitstream formatting * + ****************************************/ + + + /* write the frame to the bitstream */ + format_bitstream(gfp); + + /* copy mp3 bit buffer into array */ + mp3count = copy_buffer(gfc, mp3buf, mp3buf_size, 1); + + + + + if (gfp->bWriteVbrTag) + AddVbrFrame(gfp); + + +#if defined(HAVE_GTK) + if (gfp->analysis && gfc->pinfo != NULL) { + for (ch = 0; ch < gfc->channels_out; ch++) { + int j; + for (j = 0; j < FFTOFFSET; j++) + gfc->pinfo->pcmdata[ch][j] = gfc->pinfo->pcmdata[ch][j + gfp->framesize]; + for (j = FFTOFFSET; j < 1600; j++) { + gfc->pinfo->pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET]; + } + } + set_frame_pinfo(gfp, *masking); + } +#endif + +#ifdef BRHIST + updateStats(gfc); +#endif + + return mp3count; +} diff --git a/lame-3.97/libmp3lame/encoder.h b/lame-3.97/libmp3lame/encoder.h new file mode 100644 index 0000000..bf92059 --- /dev/null +++ b/lame-3.97/libmp3lame/encoder.h @@ -0,0 +1,151 @@ +/* + * encoder.h include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + + +#ifndef LAME_ENCODER_H +#define LAME_ENCODER_H + +/*********************************************************************** +* +* encoder and decoder delays +* +***********************************************************************/ + +/* + * layer III enc->dec delay: 1056 (1057?) (observed) + * layer II enc->dec delay: 480 (481?) (observed) + * + * polyphase 256-16 (dec or enc) = 240 + * mdct 256+32 (9*32) (dec or enc) = 288 + * total: 512+16 + * + * My guess is that delay of polyphase filterbank is actualy 240.5 + * (there are technical reasons for this, see postings in mp3encoder). + * So total Encode+Decode delay = ENCDELAY + 528 + 1 + */ + +/* + * ENCDELAY The encoder delay. + * + * Minimum allowed is MDCTDELAY (see below) + * + * The first 96 samples will be attenuated, so using a value less than 96 + * will result in corrupt data for the first 96-ENCDELAY samples. + * + * suggested: 576 + * set to 1160 to sync with FhG. + */ + +#define ENCDELAY 576 + + + +/* + * make sure there is at least one complete frame after the + * last frame containing real data + * + * Using a value of 288 would be sufficient for a + * a very sophisticated decoder that can decode granule-by-granule instead + * of frame by frame. But lets not assume this, and assume the decoder + * will not decode frame N unless it also has data for frame N+1 + * + */ +/*#define POSTDELAY 288*/ +#define POSTDELAY 1152 + + + +/* + * delay of the MDCT used in mdct.c + * original ISO routines had a delay of 528! + * Takehiro's routines: + */ + +#define MDCTDELAY 48 +#define FFTOFFSET (224+MDCTDELAY) + +/* + * Most decoders, including the one we use, have a delay of 528 samples. + */ + +#define DECDELAY 528 + + +/* number of subbands */ +#define SBLIMIT 32 + +/* parition bands bands */ +#define CBANDS 64 + +/* number of critical bands/scale factor bands where masking is computed*/ +#define SBPSY_l 21 +#define SBPSY_s 12 + +/* total number of scalefactor bands encoded */ +#define SBMAX_l 22 +#define SBMAX_s 13 +#define PSFB21 6 +#define PSFB12 6 + + + +/* FFT sizes */ +#define BLKSIZE 1024 +#define HBLKSIZE (BLKSIZE/2 + 1) +#define BLKSIZE_s 256 +#define HBLKSIZE_s (BLKSIZE_s/2 + 1) + + +/* #define switch_pe 1800 */ +#define NORM_TYPE 0 +#define START_TYPE 1 +#define SHORT_TYPE 2 +#define STOP_TYPE 3 + +/* + * Mode Extention: + * When we are in stereo mode, there are 4 possible methods to store these + * two channels. The stereo modes -m? are using a subset of them. + * + * -ms: MPG_MD_LR_LR + * -mj: MPG_MD_LR_LR and MPG_MD_MS_LR + * -mf: MPG_MD_MS_LR + * -mi: all + */ + +#define MPG_MD_LR_LR 0 +#define MPG_MD_LR_I 1 +#define MPG_MD_MS_LR 2 +#define MPG_MD_MS_I 3 + + +#include "machine.h" +#include "lame.h" + +int lame_encode_mp3_frame ( + lame_global_flags* const gfp, + sample_t* inbuf_l, + sample_t* inbuf_r, + unsigned char* mp3buf, + int mp3buf_size ); + +#endif /* LAME_ENCODER_H */ + diff --git a/lame-3.97/libmp3lame/fft.c b/lame-3.97/libmp3lame/fft.c new file mode 100644 index 0000000..ae9b245 --- /dev/null +++ b/lame-3.97/libmp3lame/fft.c @@ -0,0 +1,292 @@ +/* +** FFT and FHT routines +** Copyright 1988, 1993; Ron Mayer +** Copyright (c) 1999-2000 Takehiro Tominaga +** +** fht(fz,n); +** Does a hartley transform of "n" points in the array "fz". +** +** NOTE: This routine uses at least 2 patented algorithms, and may be +** under the restrictions of a bunch of different organizations. +** Although I wrote it completely myself; it is kind of a derivative +** of a routine I once authored and released under the GPL, so it +** may fall under the free software foundation's restrictions; +** it was worked on as a Stanford Univ project, so they claim +** some rights to it; it was further optimized at work here, so +** I think this company claims parts of it. The patents are +** held by R. Bracewell (the FHT algorithm) and O. Buneman (the +** trig generator), both at Stanford Univ. +** If it were up to me, I'd say go do whatever you want with it; +** but it would be polite to give credit to the following people +** if you use this anywhere: +** Euler - probable inventor of the fourier transform. +** Gauss - probable inventor of the FFT. +** Hartley - probable inventor of the hartley transform. +** Buneman - for a really cool trig generator +** Mayer(me) - for authoring this particular version and +** including all the optimizations in one package. +** Thanks, +** Ron Mayer; mayer@acuson.com +** and added some optimization by +** Mather - idea of using lookup table +** Takehiro - some dirty hack for speed up +*/ + +/* $Id: fft.c,v 1.25.4.1 2005/11/20 14:08:24 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <math.h> +#include "util.h" +#include "fft.h" + + + + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#define TRI_SIZE (5-1) /* 1024 = 4**5 */ + +/* fft.c */ +static FLOAT window[BLKSIZE], window_s[BLKSIZE_s/2]; + +static const FLOAT costab[TRI_SIZE*2] = { + 9.238795325112867e-01, 3.826834323650898e-01, + 9.951847266721969e-01, 9.801714032956060e-02, + 9.996988186962042e-01, 2.454122852291229e-02, + 9.999811752826011e-01, 6.135884649154475e-03 +}; + +static void fht(FLOAT *fz, int n) +{ + const FLOAT *tri = costab; + int k4; + FLOAT *fi, *fn, *gi; + + n <<= 1; /* to get BLKSIZE, because of 3DNow! ASM routine */ + fn = fz + n; + k4 = 4; + do { + FLOAT s1, c1; + int i, k1, k2, k3, kx; + kx = k4 >> 1; + k1 = k4; + k2 = k4 << 1; + k3 = k2 + k1; + k4 = k2 << 1; + fi = fz; + gi = fi + kx; + do { + FLOAT f0,f1,f2,f3; + f1 = fi[0] - fi[k1]; + f0 = fi[0] + fi[k1]; + f3 = fi[k2] - fi[k3]; + f2 = fi[k2] + fi[k3]; + fi[k2] = f0 - f2; + fi[0 ] = f0 + f2; + fi[k3] = f1 - f3; + fi[k1] = f1 + f3; + f1 = gi[0] - gi[k1]; + f0 = gi[0] + gi[k1]; + f3 = SQRT2 * gi[k3]; + f2 = SQRT2 * gi[k2]; + gi[k2] = f0 - f2; + gi[0 ] = f0 + f2; + gi[k3] = f1 - f3; + gi[k1] = f1 + f3; + gi += k4; + fi += k4; + } while (fi<fn); + c1 = tri[0]; + s1 = tri[1]; + for (i = 1; i < kx; i++) { + FLOAT c2,s2; + c2 = 1 - (2*s1)*s1; + s2 = (2*s1)*c1; + fi = fz + i; + gi = fz + k1 - i; + do { + FLOAT a,b,g0,f0,f1,g1,f2,g2,f3,g3; + b = s2*fi[k1] - c2*gi[k1]; + a = c2*fi[k1] + s2*gi[k1]; + f1 = fi[0 ] - a; + f0 = fi[0 ] + a; + g1 = gi[0 ] - b; + g0 = gi[0 ] + b; + b = s2*fi[k3] - c2*gi[k3]; + a = c2*fi[k3] + s2*gi[k3]; + f3 = fi[k2] - a; + f2 = fi[k2] + a; + g3 = gi[k2] - b; + g2 = gi[k2] + b; + b = s1*f2 - c1*g3; + a = c1*f2 + s1*g3; + fi[k2] = f0 - a; + fi[0 ] = f0 + a; + gi[k3] = g1 - b; + gi[k1] = g1 + b; + b = c1*g2 - s1*f3; + a = s1*g2 + c1*f3; + gi[k2] = g0 - a; + gi[0 ] = g0 + a; + fi[k3] = f1 - b; + fi[k1] = f1 + b; + gi += k4; + fi += k4; + } while (fi<fn); + c2 = c1; + c1 = c2 * tri[0] - s1 * tri[1]; + s1 = c2 * tri[1] + s1 * tri[0]; + } + tri += 2; + } while (k4<n); +} + +static const unsigned char rv_tbl[] = { + 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, + 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, + 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, + 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, + 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, + 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, + 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, + 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, + 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, + 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, + 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, + 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, + 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, + 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, + 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, + 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe +}; + +#define ch01(index) (buffer[chn][index]) + +#define ml00(f) (window[i ] * f(i)) +#define ml10(f) (window[i + 0x200] * f(i + 0x200)) +#define ml20(f) (window[i + 0x100] * f(i + 0x100)) +#define ml30(f) (window[i + 0x300] * f(i + 0x300)) + +#define ml01(f) (window[i + 0x001] * f(i + 0x001)) +#define ml11(f) (window[i + 0x201] * f(i + 0x201)) +#define ml21(f) (window[i + 0x101] * f(i + 0x101)) +#define ml31(f) (window[i + 0x301] * f(i + 0x301)) + +#define ms00(f) (window_s[i ] * f(i + k)) +#define ms10(f) (window_s[0x7f - i] * f(i + k + 0x80)) +#define ms20(f) (window_s[i + 0x40] * f(i + k + 0x40)) +#define ms30(f) (window_s[0x3f - i] * f(i + k + 0xc0)) + +#define ms01(f) (window_s[i + 0x01] * f(i + k + 0x01)) +#define ms11(f) (window_s[0x7e - i] * f(i + k + 0x81)) +#define ms21(f) (window_s[i + 0x41] * f(i + k + 0x41)) +#define ms31(f) (window_s[0x3e - i] * f(i + k + 0xc1)) + + +void fft_short(lame_internal_flags * const gfc, + FLOAT x_real[3][BLKSIZE_s], int chn, const sample_t *buffer[2]) +{ + int i; + int j; + int b; + + for (b = 0; b < 3; b++) { + FLOAT *x = &x_real[b][BLKSIZE_s / 2]; + short k = (576 / 3) * (b + 1); + j = BLKSIZE_s / 8 - 1; + do { + FLOAT f0,f1,f2,f3, w; + + i = rv_tbl[j << 2]; + + f0 = ms00(ch01); w = ms10(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ms20(ch01); w = ms30(ch01); f3 = f2 - w; f2 = f2 + w; + + x -= 4; + x[0] = f0 + f2; + x[2] = f0 - f2; + x[1] = f1 + f3; + x[3] = f1 - f3; + + f0 = ms01(ch01); w = ms11(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ms21(ch01); w = ms31(ch01); f3 = f2 - w; f2 = f2 + w; + + x[BLKSIZE_s / 2 + 0] = f0 + f2; + x[BLKSIZE_s / 2 + 2] = f0 - f2; + x[BLKSIZE_s / 2 + 1] = f1 + f3; + x[BLKSIZE_s / 2 + 3] = f1 - f3; + } while (--j >= 0); + + gfc->fft_fht(x, BLKSIZE_s/2); + /* BLKSIZE_s/2 because of 3DNow! ASM routine */ + } +} + +void fft_long(lame_internal_flags * const gfc, + FLOAT x[BLKSIZE], int chn, const sample_t *buffer[2] ) +{ + int i; + int jj = BLKSIZE / 8 - 1; + x += BLKSIZE / 2; + + do { + FLOAT f0,f1,f2,f3, w; + + i = rv_tbl[jj]; + f0 = ml00(ch01); w = ml10(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ml20(ch01); w = ml30(ch01); f3 = f2 - w; f2 = f2 + w; + + x -= 4; + x[0] = f0 + f2; + x[2] = f0 - f2; + x[1] = f1 + f3; + x[3] = f1 - f3; + + f0 = ml01(ch01); w = ml11(ch01); f1 = f0 - w; f0 = f0 + w; + f2 = ml21(ch01); w = ml31(ch01); f3 = f2 - w; f2 = f2 + w; + + x[BLKSIZE / 2 + 0] = f0 + f2; + x[BLKSIZE / 2 + 2] = f0 - f2; + x[BLKSIZE / 2 + 1] = f1 + f3; + x[BLKSIZE / 2 + 3] = f1 - f3; + } while (--jj >= 0); + + gfc->fft_fht(x, BLKSIZE/2); + /* BLKSIZE/2 because of 3DNow! ASM routine */ +} + + +void init_fft(lame_internal_flags * const gfc) +{ + int i; + + /* The type of window used here will make no real difference, but */ + /* in the interest of merging nspsytune stuff - switch to blackman window */ + for (i = 0; i < BLKSIZE ; i++) + /* blackman window */ + window[i] = 0.42-0.5*cos(2*PI*(i+.5)/BLKSIZE)+ + 0.08*cos(4*PI*(i+.5)/BLKSIZE); + + for (i = 0; i < BLKSIZE_s/2 ; i++) + window_s[i] = 0.5 * (1.0 - cos(2.0 * PI * (i + 0.5) / BLKSIZE_s)); + +#ifdef HAVE_NASM + if (gfc->CPU_features.AMD_3DNow) { + extern void fht_3DN(FLOAT *fz, int n); + gfc->fft_fht = fht_3DN; + } else +#endif +#ifdef USE_FFTSSE + if (gfc->CPU_features.SSE) { + extern void fht_SSE(FLOAT *fz, int n); + gfc->fft_fht = fht_SSE; + } else +#endif + gfc->fft_fht = fht; +} + diff --git a/lame-3.97/libmp3lame/fft.h b/lame-3.97/libmp3lame/fft.h new file mode 100644 index 0000000..6aab6a0 --- /dev/null +++ b/lame-3.97/libmp3lame/fft.h @@ -0,0 +1,38 @@ +/* + * Fast Fourier Transform include file + * + * Copyright (c) 2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_FFT_H +#define LAME_FFT_H + +#include "encoder.h" + +void fft_long(lame_internal_flags* const gfc, FLOAT x_real[BLKSIZE], + int chn, const sample_t *data[2] ); + +void fft_short(lame_internal_flags* const gfc, FLOAT x_real[3][BLKSIZE_s], + int chn, const sample_t *data[2] ); + +void init_fft(lame_internal_flags* const gfc ); + +#endif + +/* End of fft.h */ + diff --git a/lame-3.97/libmp3lame/gain_analysis.c b/lame-3.97/libmp3lame/gain_analysis.c new file mode 100644 index 0000000..dd0a912 --- /dev/null +++ b/lame-3.97/libmp3lame/gain_analysis.c @@ -0,0 +1,426 @@ +/* + * ReplayGainAnalysis - analyzes input samples and give the recommended dB change + * Copyright (C) 2001 David Robinson and Glen Sawyer + * Improvements and optimizations added by Frank Klemm, and by Marcel Muller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * concept and filter values by David Robinson (David@Robinson.org) + * -- blame him if you think the idea is flawed + * original coding by Glen Sawyer (mp3gain@hotmail.com) + * -- blame him if you think this runs too slowly, or the coding is otherwise flawed + * + * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ ) + * -- credit him for all the _good_ programming ;) + * + * + * For an explanation of the concepts and the basic algorithms involved, go to: + * http://www.replaygain.org/ + */ + +/* + * Here's the deal. Call + * + * InitGainAnalysis ( long samplefreq ); + * + * to initialize everything. Call + * + * AnalyzeSamples ( const Float_t* left_samples, + * const Float_t* right_samples, + * size_t num_samples, + * int num_channels ); + * + * as many times as you want, with as many or as few samples as you want. + * If mono, pass the sample buffer in through left_samples, leave + * right_samples NULL, and make sure num_channels = 1. + * + * GetTitleGain() + * + * will return the recommended dB level change for all samples analyzed + * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis(). + * + * GetAlbumGain() + * + * will return the recommended dB level change for all samples analyzed + * since InitGainAnalysis() was called and finalized with GetTitleGain(). + * + * Pseudo-code to process an album: + * + * Float_t l_samples [4096]; + * Float_t r_samples [4096]; + * size_t num_samples; + * unsigned int num_songs; + * unsigned int i; + * + * InitGainAnalysis ( 44100 ); + * for ( i = 1; i <= num_songs; i++ ) { + * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 ) + * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 ); + * fprintf ("Recommended dB change for song %2d: %+6.2f dB\n", i, GetTitleGain() ); + * } + * fprintf ("Recommended dB change for whole album: %+6.2f dB\n", GetAlbumGain() ); + */ + +/* + * So here's the main source of potential code confusion: + * + * The filters applied to the incoming samples are IIR filters, + * meaning they rely on up to <filter order> number of previous samples + * AND up to <filter order> number of previous filtered samples. + * + * I set up the AnalyzeSamples routine to minimize memory usage and interface + * complexity. The speed isn't compromised too much (I don't think), but the + * internal complexity is higher than it should be for such a relatively + * simple routine. + * + * Optimization/clarity suggestions are welcome. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include "machine.h" +#include "gain_analysis.h" + +/* for each filter: */ +/* [0] 48 kHz, [1] 44.1 kHz, [2] 32 kHz, [3] 24 kHz, [4] 22050 Hz, [5] 16 kHz, [6] 12 kHz, [7] is 11025 Hz, [8] 8 kHz */ + +#ifdef WIN32 +#pragma warning ( disable : 4305 ) +#endif + +static const Float_t ABYule[9][2*YULE_ORDER + 1] = { + {0.03857599435200, -3.84664617118067, -0.02160367184185, 7.81501653005538, -0.00123395316851,-11.34170355132042, -0.00009291677959, 13.05504219327545, -0.01655260341619,-12.28759895145294, 0.02161526843274, 9.48293806319790, -0.02074045215285, -5.87257861775999, 0.00594298065125, 2.75465861874613, 0.00306428023191, -0.86984376593551, 0.00012025322027, 0.13919314567432, 0.00288463683916 }, + {0.05418656406430, -3.47845948550071, -0.02911007808948, 6.36317777566148, -0.00848709379851, -8.54751527471874, -0.00851165645469, 9.47693607801280, -0.00834990904936, -8.81498681370155, 0.02245293253339, 6.85401540936998, -0.02596338512915, -4.39470996079559, 0.01624864962975, 2.19611684890774, -0.00240879051584, -0.75104302451432, 0.00674613682247, 0.13149317958808, -0.00187763777362 }, + {0.15457299681924, -2.37898834973084, -0.09331049056315, 2.84868151156327, -0.06247880153653, -2.64577170229825, 0.02163541888798, 2.23697657451713, -0.05588393329856, -1.67148153367602, 0.04781476674921, 1.00595954808547, 0.00222312597743, -0.45953458054983, 0.03174092540049, 0.16378164858596, -0.01390589421898, -0.05032077717131, 0.00651420667831, 0.02347897407020, -0.00881362733839 }, + {0.30296907319327, -1.61273165137247, -0.22613988682123, 1.07977492259970, -0.08587323730772, -0.25656257754070, 0.03282930172664, -0.16276719120440, -0.00915702933434, -0.22638893773906, -0.02364141202522, 0.39120800788284, -0.00584456039913, -0.22138138954925, 0.06276101321749, 0.04500235387352, -0.00000828086748, 0.02005851806501, 0.00205861885564, 0.00302439095741, -0.02950134983287 }, + {0.33642304856132, -1.49858979367799, -0.25572241425570, 0.87350271418188, -0.11828570177555, 0.12205022308084, 0.11921148675203, -0.80774944671438, -0.07834489609479, 0.47854794562326, -0.00469977914380, -0.12453458140019, -0.00589500224440, -0.04067510197014, 0.05724228140351, 0.08333755284107, 0.00832043980773, -0.04237348025746, -0.01635381384540, 0.02977207319925, -0.01760176568150 }, + {0.44915256608450, -0.62820619233671, -0.14351757464547, 0.29661783706366, -0.22784394429749, -0.37256372942400, -0.01419140100551, 0.00213767857124, 0.04078262797139, -0.42029820170918, -0.12398163381748, 0.22199650564824, 0.04097565135648, 0.00613424350682, 0.10478503600251, 0.06747620744683, -0.01863887810927, 0.05784820375801, -0.03193428438915, 0.03222754072173, 0.00541907748707 }, + {0.56619470757641, -1.04800335126349, -0.75464456939302, 0.29156311971249, 0.16242137742230, -0.26806001042947, 0.16744243493672, 0.00819999645858, -0.18901604199609, 0.45054734505008, 0.30931782841830, -0.33032403314006, -0.27562961986224, 0.06739368333110, 0.00647310677246, -0.04784254229033, 0.08647503780351, 0.01639907836189, -0.03788984554840, 0.01807364323573, -0.00588215443421 }, + {0.58100494960553, -0.51035327095184, -0.53174909058578, -0.31863563325245, -0.14289799034253, -0.20256413484477, 0.17520704835522, 0.14728154134330, 0.02377945217615, 0.38952639978999, 0.15558449135573, -0.23313271880868, -0.25344790059353, -0.05246019024463, 0.01628462406333, -0.02505961724053, 0.06920467763959, 0.02442357316099, -0.03721611395801, 0.01818801111503, -0.00749618797172 }, + {0.53648789255105, -0.25049871956020, -0.42163034350696, -0.43193942311114, -0.00275953611929, -0.03424681017675, 0.04267842219415, -0.04678328784242, -0.10214864179676, 0.26408300200955, 0.14590772289388, 0.15113130533216, -0.02459864859345, -0.17556493366449, -0.11202315195388, -0.18823009262115, -0.04060034127000, 0.05477720428674, 0.04788665548180, 0.04704409688120, -0.02217936801134 } +}; + +static const Float_t ABButter[9][2*BUTTER_ORDER + 1] = { + {0.98621192462708, -1.97223372919527, -1.97242384925416, 0.97261396931306, 0.98621192462708 }, + {0.98500175787242, -1.96977855582618, -1.97000351574484, 0.97022847566350, 0.98500175787242 }, + {0.97938932735214, -1.95835380975398, -1.95877865470428, 0.95920349965459, 0.97938932735214 }, + {0.97531843204928, -1.95002759149878, -1.95063686409857, 0.95124613669835, 0.97531843204928 }, + {0.97316523498161, -1.94561023566527, -1.94633046996323, 0.94705070426118, 0.97316523498161 }, + {0.96454515552826, -1.92783286977036, -1.92909031105652, 0.93034775234268, 0.96454515552826 }, + {0.96009142950541, -1.91858953033784, -1.92018285901082, 0.92177618768381, 0.96009142950541 }, + {0.95856916599601, -1.91542108074780, -1.91713833199203, 0.91885558323625, 0.95856916599601 }, + {0.94597685600279, -1.88903307939452, -1.89195371200558, 0.89487434461664, 0.94597685600279 } +}; + + +#ifdef WIN32 +#pragma warning ( default : 4305 ) +#endif + +/* When calling this procedure, make sure that ip[-order] and op[-order] point to real data! */ + +static void +filterYule (const Float_t* input, Float_t* output, size_t nSamples, const Float_t* kernel) +{ + /*register double y;*/ + + while (nSamples--) { + *output = 1e-10 /* 1e-10 is a hack to avoid slowdown because of denormals */ + + input [0] * kernel[0] + - output[-1] * kernel[1] + + input [-1] * kernel[2] + - output[-2] * kernel[3] + + input [-2] * kernel[4] + - output[-3] * kernel[5] + + input [-3] * kernel[6] + - output[-4] * kernel[7] + + input [-4] * kernel[8] + - output[-5] * kernel[9] + + input [-5] * kernel[10] + - output[-6] * kernel[11] + + input [-6] * kernel[12] + - output[-7] * kernel[13] + + input [-7] * kernel[14] + - output[-8] * kernel[15] + + input [-8] * kernel[16] + - output[-9] * kernel[17] + + input [-9] * kernel[18] + - output[-10]* kernel[19] + + input [-10]* kernel[20]; + ++output; + ++input; + /* *output++ = (Float_t)y; */ + } +} + +static void +filterButter (const Float_t* input, Float_t* output, size_t nSamples, const Float_t* kernel) +{ /*register double y;*/ + + while (nSamples--) { + *output = input [0] * kernel[0] + - output[-1] * kernel[1] + + input [-1] * kernel[2] + - output[-2] * kernel[3] + + input [-2] * kernel[4]; + ++output; + ++input; + /* *output++ = (Float_t)y; */ + } +} + + +/* returns a INIT_GAIN_ANALYSIS_OK if successful, INIT_GAIN_ANALYSIS_ERROR if not */ + +int +ResetSampleFrequency (replaygain_t* rgData, long samplefreq ) { + int i; + + /* zero out initial values */ + for ( i = 0; i < MAX_ORDER; i++ ) + rgData->linprebuf[i] = rgData->lstepbuf[i] + = rgData->loutbuf[i] + = rgData->rinprebuf[i] + = rgData->rstepbuf[i] + = rgData->routbuf[i] = 0.; + + switch ( (int)(samplefreq) ) { + case 48000: rgData->freqindex = 0; break; + case 44100: rgData->freqindex = 1; break; + case 32000: rgData->freqindex = 2; break; + case 24000: rgData->freqindex = 3; break; + case 22050: rgData->freqindex = 4; break; + case 16000: rgData->freqindex = 5; break; + case 12000: rgData->freqindex = 6; break; + case 11025: rgData->freqindex = 7; break; + case 8000: rgData->freqindex = 8; break; + default: return INIT_GAIN_ANALYSIS_ERROR; + } + + rgData->sampleWindow = (samplefreq * RMS_WINDOW_TIME_NUMERATOR + RMS_WINDOW_TIME_DENOMINATOR-1) / RMS_WINDOW_TIME_DENOMINATOR; + + rgData->lsum = 0.; + rgData->rsum = 0.; + rgData->totsamp = 0; + + memset ( rgData->A, 0, sizeof(rgData->A) ); + + return INIT_GAIN_ANALYSIS_OK; +} + +int +InitGainAnalysis (replaygain_t* rgData, long samplefreq ) +{ + if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) { + return INIT_GAIN_ANALYSIS_ERROR; + } + + rgData->linpre = rgData->linprebuf + MAX_ORDER; + rgData->rinpre = rgData->rinprebuf + MAX_ORDER; + rgData->lstep = rgData->lstepbuf + MAX_ORDER; + rgData->rstep = rgData->rstepbuf + MAX_ORDER; + rgData->lout = rgData->loutbuf + MAX_ORDER; + rgData->rout = rgData->routbuf + MAX_ORDER; + + memset ( rgData->B, 0, sizeof(rgData->B) ); + + return INIT_GAIN_ANALYSIS_OK; +} + +/* returns GAIN_ANALYSIS_OK if successful, GAIN_ANALYSIS_ERROR if not */ + +static __inline double fsqr(const double d) +{ return d*d; +} + +int +AnalyzeSamples (replaygain_t* rgData, const Float_t* left_samples, const Float_t* right_samples, size_t num_samples, int num_channels ) +{ + const Float_t* curleft; + const Float_t* curright; + long batchsamples; + long cursamples; + long cursamplepos; + int i; + + if ( num_samples == 0 ) + return GAIN_ANALYSIS_OK; + + cursamplepos = 0; + batchsamples = num_samples; + + switch ( num_channels) { + case 1: right_samples = left_samples; + case 2: break; + default: return GAIN_ANALYSIS_ERROR; + } + + if ( num_samples < MAX_ORDER ) { + memcpy ( rgData->linprebuf + MAX_ORDER, left_samples , num_samples * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf + MAX_ORDER, right_samples, num_samples * sizeof(Float_t) ); + } + else { + memcpy ( rgData->linprebuf + MAX_ORDER, left_samples, MAX_ORDER * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf + MAX_ORDER, right_samples, MAX_ORDER * sizeof(Float_t) ); + } + + while ( batchsamples > 0 ) { + cursamples = batchsamples > rgData->sampleWindow - rgData->totsamp ? + rgData->sampleWindow - rgData->totsamp : + batchsamples; + if ( cursamplepos < MAX_ORDER ) { + curleft = rgData->linpre+cursamplepos; + curright = rgData->rinpre+cursamplepos; + if (cursamples > MAX_ORDER - cursamplepos ) + cursamples = MAX_ORDER - cursamplepos; + } + else { + curleft = left_samples + cursamplepos; + curright = right_samples + cursamplepos; + } + + YULE_FILTER ( curleft , rgData->lstep + rgData->totsamp, cursamples, ABYule[rgData->freqindex]); + YULE_FILTER ( curright, rgData->rstep + rgData->totsamp, cursamples, ABYule[rgData->freqindex]); + + BUTTER_FILTER ( rgData->lstep + rgData->totsamp, rgData->lout + rgData->totsamp, cursamples, ABButter[rgData->freqindex]); + BUTTER_FILTER ( rgData->rstep + rgData->totsamp, rgData->rout + rgData->totsamp, cursamples, ABButter[rgData->freqindex]); + + curleft = rgData->lout + rgData->totsamp; /* Get the squared values */ + curright = rgData->rout + rgData->totsamp; + + i = cursamples % 8; + while (i--) + { rgData->lsum += fsqr(*curleft++); + rgData->rsum += fsqr(*curright++); + } + i = cursamples / 8; + while (i--) + { rgData->lsum += fsqr(curleft[0]) + + fsqr(curleft[1]) + + fsqr(curleft[2]) + + fsqr(curleft[3]) + + fsqr(curleft[4]) + + fsqr(curleft[5]) + + fsqr(curleft[6]) + + fsqr(curleft[7]); + curleft += 8; + rgData->rsum += fsqr(curright[0]) + + fsqr(curright[1]) + + fsqr(curright[2]) + + fsqr(curright[3]) + + fsqr(curright[4]) + + fsqr(curright[5]) + + fsqr(curright[6]) + + fsqr(curright[7]); + curright += 8; + } + + batchsamples -= cursamples; + cursamplepos += cursamples; + rgData->totsamp += cursamples; + if ( rgData->totsamp == rgData->sampleWindow ) { /* Get the Root Mean Square (RMS) for this set of samples */ + double val = STEPS_per_dB * 10. * log10 ( (rgData->lsum+rgData->rsum) / rgData->totsamp * 0.5 + 1.e-37 ); + int ival = (int) val; + if ( ival < 0 ) ival = 0; + if ( ival >= sizeof(rgData->A)/sizeof(*(rgData->A)) ) ival = sizeof(rgData->A)/sizeof(*(rgData->A)) - 1; + rgData->A [ival]++; + rgData->lsum = rgData->rsum = 0.; + memmove ( rgData->loutbuf , rgData->loutbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + memmove ( rgData->routbuf , rgData->routbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + memmove ( rgData->lstepbuf, rgData->lstepbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + memmove ( rgData->rstepbuf, rgData->rstepbuf + rgData->totsamp, MAX_ORDER * sizeof(Float_t) ); + rgData->totsamp = 0; + } + if ( rgData->totsamp > rgData->sampleWindow ) /* somehow I really screwed up: Error in programming! Contact author about totsamp > sampleWindow */ + return GAIN_ANALYSIS_ERROR; + } + if ( num_samples < MAX_ORDER ) { + memmove ( rgData->linprebuf, rgData->linprebuf + num_samples, (MAX_ORDER-num_samples) * sizeof(Float_t) ); + memmove ( rgData->rinprebuf, rgData->rinprebuf + num_samples, (MAX_ORDER-num_samples) * sizeof(Float_t) ); + memcpy ( rgData->linprebuf + MAX_ORDER - num_samples, left_samples, num_samples * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf + MAX_ORDER - num_samples, right_samples, num_samples * sizeof(Float_t) ); + } + else { + memcpy ( rgData->linprebuf, left_samples + num_samples - MAX_ORDER, MAX_ORDER * sizeof(Float_t) ); + memcpy ( rgData->rinprebuf, right_samples + num_samples - MAX_ORDER, MAX_ORDER * sizeof(Float_t) ); + } + + return GAIN_ANALYSIS_OK; +} + + +static Float_t +analyzeResult ( uint32_t* Array, size_t len ) +{ + uint32_t elems; + int32_t upper; + size_t i; + + elems = 0; + for ( i = 0; i < len; i++ ) + elems += Array[i]; + if ( elems == 0 ) + return GAIN_NOT_ENOUGH_SAMPLES; + + upper = (int32_t) ceil (elems * (1. - RMS_PERCENTILE)); + for ( i = len; i-- > 0; ) { + if ( (upper -= Array[i]) <= 0 ) + break; + } + + return (Float_t) ((Float_t)PINK_REF - (Float_t)i / (Float_t)STEPS_per_dB); +} + + +Float_t +GetTitleGain (replaygain_t* rgData) +{ + Float_t retval; + int i; + + retval = analyzeResult ( rgData->A, sizeof(rgData->A)/sizeof(*(rgData->A)) ); + + for ( i = 0; i < sizeof(rgData->A)/sizeof(*(rgData->A)); i++ ) { + rgData->B[i] += rgData->A[i]; + rgData->A[i] = 0; + } + + for ( i = 0; i < MAX_ORDER; i++ ) + rgData->linprebuf[i] = rgData->lstepbuf[i] + = rgData->loutbuf[i] + = rgData->rinprebuf[i] + = rgData->rstepbuf[i] + = rgData->routbuf[i] = 0.f; + + rgData->totsamp = 0; + rgData->lsum = rgData->rsum = 0.; + return retval; +} + + +Float_t +GetAlbumGain (replaygain_t* rgData) +{ + return analyzeResult ( rgData->B, sizeof(rgData->B)/sizeof(*(rgData->B)) ); +} + +/* end of gain_analysis.c */ diff --git a/lame-3.97/libmp3lame/gain_analysis.h b/lame-3.97/libmp3lame/gain_analysis.h new file mode 100644 index 0000000..93cc1b2 --- /dev/null +++ b/lame-3.97/libmp3lame/gain_analysis.h @@ -0,0 +1,114 @@ +/* + * ReplayGainAnalysis - analyzes input samples and give the recommended dB change + * Copyright (C) 2001 David Robinson and Glen Sawyer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * concept and filter values by David Robinson (David@Robinson.org) + * -- blame him if you think the idea is flawed + * coding by Glen Sawyer (mp3gain@hotmail.com) 735 W 255 N, Orem, UT 84057-4505 USA + * -- blame him if you think this runs too slowly, or the coding is otherwise flawed + * + * For an explanation of the concepts and the basic algorithms involved, go to: + * http://www.replaygain.org/ + */ + +#ifndef GAIN_ANALYSIS_H +#define GAIN_ANALYSIS_H + +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef sample_t Float_t; /* Type used for filtering */ + +#define GAIN_NOT_ENOUGH_SAMPLES -24601 +#define GAIN_ANALYSIS_ERROR 0 +#define GAIN_ANALYSIS_OK 1 + +#define INIT_GAIN_ANALYSIS_ERROR 0 +#define INIT_GAIN_ANALYSIS_OK 1 + +#define PINK_REF 64.82 /* 298640883795 */ /* calibration value for 89dB*/ + + +#define YULE_ORDER 10 +#define BUTTER_ORDER 2 +#define YULE_FILTER filterYule +#define BUTTER_FILTER filterButter +#define RMS_PERCENTILE 0.95 /* percentile which is louder than the proposed level */ +#define MAX_SAMP_FREQ 48000L /* maximum allowed sample frequency [Hz] */ +#define RMS_WINDOW_TIME_NUMERATOR 1L +#define RMS_WINDOW_TIME_DENOMINATOR 20L /* numerator / denominator = time slice size [s] */ +#define STEPS_per_dB 100. /* Table entries per dB */ +#define MAX_dB 120. /* Table entries for 0...MAX_dB (normal max. values are 70...80 dB) */ + +#define MAX_ORDER (BUTTER_ORDER > YULE_ORDER ? BUTTER_ORDER : YULE_ORDER) +#define MAX_SAMPLES_PER_WINDOW (size_t) ((MAX_SAMP_FREQ * RMS_WINDOW_TIME_NUMERATOR) / RMS_WINDOW_TIME_DENOMINATOR + 1) /* max. Samples per Time slice */ + + + + +typedef struct +{ + Float_t linprebuf [MAX_ORDER * 2]; + Float_t* linpre; /* left input samples, with pre-buffer */ + Float_t lstepbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* lstep; /* left "first step" (i.e. post first filter) samples */ + Float_t loutbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* lout; /* left "out" (i.e. post second filter) samples */ + Float_t rinprebuf [MAX_ORDER * 2]; + Float_t* rinpre; /* right input samples ... */ + Float_t rstepbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* rstep; + Float_t routbuf [MAX_SAMPLES_PER_WINDOW + MAX_ORDER]; + Float_t* rout; + long sampleWindow; /* number of samples required to reach number of milliseconds required for RMS window */ + long totsamp; + double lsum; + double rsum; + int freqindex; + int first; + uint32_t A [(size_t)(STEPS_per_dB * MAX_dB)]; + uint32_t B [(size_t)(STEPS_per_dB * MAX_dB)]; + +} replaygain_t; + + + + + + +int InitGainAnalysis (replaygain_t* rgData, long samplefreq ); +int AnalyzeSamples (replaygain_t* rgData, const Float_t* left_samples, const Float_t* right_samples, size_t num_samples, int num_channels ); +int ResetSampleFrequency (replaygain_t* rgData, long samplefreq ); +Float_t GetTitleGain (replaygain_t* rgData); +Float_t GetAlbumGain (replaygain_t* rgData); + + +#ifdef __cplusplus +} +#endif + +#endif /* GAIN_ANALYSIS_H */ diff --git a/lame-3.97/libmp3lame/i386/.svn/all-wcprops b/lame-3.97/libmp3lame/i386/.svn/all-wcprops new file mode 100644 index 0000000..4fd0da5 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/328/monitor/trunk/lame-3.97/libmp3lame/i386 +END +fft.nas +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/fft.nas +END +ffttbl.nas +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/ffttbl.nas +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/328/monitor/trunk/lame-3.97/libmp3lame/i386/Makefile.in +END +fft3dn.nas +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/fft3dn.nas +END +nasm.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/321/monitor/trunk/lame-3.97/libmp3lame/i386/nasm.h +END +cpu_feat.nas +K 25 +svn:wc:ra_dav:version-url +V 66 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/cpu_feat.nas +END +choose_table.nas +K 25 +svn:wc:ra_dav:version-url +V 70 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/choose_table.nas +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/Makefile.am +END +fftfpu.nas +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/fftfpu.nas +END +fftsse.nas +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/238/monitor/trunk/lame-3.97/libmp3lame/i386/fftsse.nas +END diff --git a/lame-3.97/libmp3lame/i386/.svn/entries b/lame-3.97/libmp3lame/i386/.svn/entries new file mode 100644 index 0000000..adef8e9 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/entries @@ -0,0 +1,368 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/libmp3lame/i386 +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +fft.nas +file + + + + +2012-01-23T14:07:04.205505Z +f1ea59bbd9fb74adecbd9bf64c1b11a0 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +6763 + +ffttbl.nas +file + + + + +2012-01-23T14:07:04.205505Z +8938e0d1ddaaf997e6f64d75857dd7d5 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1859 + +Makefile.in +file + + + + +2012-01-23T14:07:04.208486Z +afc4e5fe0883b50f0dfab3284383c105 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +14259 + +fft3dn.nas +file + + + + +2012-01-23T14:07:04.208486Z +d04e795bcfe67d97446f1f78effa1126 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +5330 + +nasm.h +file + + + + +2012-01-23T14:07:04.209487Z +c5d1b26ce092f044c0c53b175745c49e +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3010 + +cpu_feat.nas +file + + + + +2012-01-23T14:07:04.209487Z +5479573882c4657c5e84769a21ed795b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1871 + +choose_table.nas +file + + + + +2012-01-23T14:07:04.209487Z +911db921dc0fac5b817e519023bffbed +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +12734 + +Makefile.am +file + + + + +2012-01-23T14:07:04.210486Z +06d7c1ca3097693debd288a6827a68fd +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1623 + +fftfpu.nas +file + + + + +2012-01-23T14:07:04.210486Z +914890b0c4dd5d31663ace1e94d3889f +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +10188 + +fftsse.nas +file + + + + +2012-01-23T14:07:04.210486Z +03813aa1e16784f058a2a646cb5fce4a +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15658 + diff --git a/lame-3.97/libmp3lame/i386/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/libmp3lame/i386/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/i386/.svn/prop-base/nasm.h.svn-base b/lame-3.97/libmp3lame/i386/.svn/prop-base/nasm.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/prop-base/nasm.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/Makefile.am.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..11df178 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,67 @@ +## $Id: Makefile.am,v 1.18 2003/11/29 12:03:21 aleidinger Exp $ + +AUTOMAKE_OPTIONS = foreign $(top_srcdir)/ansi2knr + +DEFS = @DEFS@ @CONFIG_DEFS@ + +nasm_sources = \ + choose_table.nas \ + cpu_feat.nas \ + fft3dn.nas + +if HAVE_NASM +noinst_LTLIBRARIES = liblameasmroutines.la +liblameasmroutines_la_SOURCES = $(nasm_sources) +am_liblameasmroutines_la_OBJECTS = \ + choose_table$U.lo \ + cpu_feat$U.lo \ + fft3dn$U.lo +endif + +noinst_HEADERS = nasm.h + +INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame/@CPUTYPE@ + +SUFFIXES = .nas .lo + +EXTRA_liblameasmroutines_la_SOURCES = $(nasm_sources) + +CLEANFILES = \ + choose_table.o.lst \ + choose_table.lo.lst \ + cpu_feat.o.lst \ + cpu_feat.lo.lst \ + fft3dn.o.lst \ + fft3dn.lo.lst + +EXTRA_DIST = \ + fft.nas \ + fftfpu.nas \ + fftsse.nas \ + ffttbl.nas + +NASM = @NASM@ +NASMFLAGS=@NASM_FORMAT@ -i $(top_srcdir)/libmp3lame/@CPUTYPE@/ + +.nas.o: $< nasm.h + $(NASM) $(NASMFLAGS) $< -o $@ -l $@.lst + +.nas.lo: $< nasm.h + test -d .libs || mkdir .libs + $(ECHO) '# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)' >$@ + $(ECHO) "pic_object='.libs/$*.o'" >>$@ + $(ECHO) "non_pic_object='$*.o'" >>$@ + $(NASM) $(NASMFLAGS) $< -o .libs/$*.o -l $@.lst + +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ + + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/Makefile.in.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..2f6eec4 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,483 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +subdir = libmp3lame/i386 +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +liblameasmroutines_la_LIBADD = +am__liblameasmroutines_la_SOURCES_DIST = choose_table.nas cpu_feat.nas \ + fft3dn.nas +am__objects_1 = choose_table.lo cpu_feat.lo fft3dn.lo +liblameasmroutines_la_OBJECTS = $(am_liblameasmroutines_la_OBJECTS) +@HAVE_NASM_TRUE@am_liblameasmroutines_la_rpath = +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +SOURCES = $(liblameasmroutines_la_SOURCES) \ + $(EXTRA_liblameasmroutines_la_SOURCES) +DIST_SOURCES = $(am__liblameasmroutines_la_SOURCES_DIST) \ + $(EXTRA_liblameasmroutines_la_SOURCES) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame/@CPUTYPE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = foreign $(top_srcdir)/ansi2knr +nasm_sources = \ + choose_table.nas \ + cpu_feat.nas \ + fft3dn.nas + +@HAVE_NASM_TRUE@noinst_LTLIBRARIES = liblameasmroutines.la +@HAVE_NASM_TRUE@liblameasmroutines_la_SOURCES = $(nasm_sources) +@HAVE_NASM_TRUE@am_liblameasmroutines_la_OBJECTS = \ +@HAVE_NASM_TRUE@ choose_table$U.lo \ +@HAVE_NASM_TRUE@ cpu_feat$U.lo \ +@HAVE_NASM_TRUE@ fft3dn$U.lo + +noinst_HEADERS = nasm.h +SUFFIXES = .nas .lo +EXTRA_liblameasmroutines_la_SOURCES = $(nasm_sources) +CLEANFILES = \ + choose_table.o.lst \ + choose_table.lo.lst \ + cpu_feat.o.lst \ + cpu_feat.lo.lst \ + fft3dn.o.lst \ + fft3dn.lo.lst + +EXTRA_DIST = \ + fft.nas \ + fftfpu.nas \ + fftsse.nas \ + ffttbl.nas + +NASMFLAGS = @NASM_FORMAT@ -i $(top_srcdir)/libmp3lame/@CPUTYPE@/ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ + +all: all-am + +.SUFFIXES: +.SUFFIXES: .nas .lo .o +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmp3lame/i386/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign libmp3lame/i386/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +liblameasmroutines.la: $(liblameasmroutines_la_OBJECTS) $(liblameasmroutines_la_DEPENDENCIES) + $(LINK) $(am_liblameasmroutines_la_rpath) $(liblameasmroutines_la_LDFLAGS) $(liblameasmroutines_la_OBJECTS) $(liblameasmroutines_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + + +.nas.o: $< nasm.h + $(NASM) $(NASMFLAGS) $< -o $@ -l $@.lst + +.nas.lo: $< nasm.h + test -d .libs || mkdir .libs + $(ECHO) '# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)' >$@ + $(ECHO) "pic_object='.libs/$*.o'" >>$@ + $(ECHO) "non_pic_object='$*.o'" >>$@ + $(NASM) $(NASMFLAGS) $< -o .libs/$*.o -l $@.lst + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/choose_table.nas.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/choose_table.nas.svn-base new file mode 100644 index 0000000..816d194 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/choose_table.nas.svn-base @@ -0,0 +1,433 @@ +; new count bit routine +; part of this code is origined from +; new GOGO-no-coda (1999, 2000) +; Copyright (C) 1999 shigeo +; modified by Keiichi SAKAI + +%include "nasm.h" + + globaldef choose_table_MMX + globaldef MMX_masking + + externdef largetbl + externdef t1l + externdef table23 + externdef table56 + + segment_data + align 16 +D14_14_14_14 dd 0x000E000E, 0x000E000E +D15_15_15_15 dd 0xfff0fff0, 0xfff0fff0 +mul_add dd 0x00010010, 0x00010010 +mul_add23 dd 0x00010003, 0x00010003 +mul_add56 dd 0x00010004, 0x00010004 +tableDEF + dd 0x00010003,0x01,0x00050005,0x05,0x00070006,0x07,0x00090008,0x08,0x000a0008, 0x09 + dd 0x000a0009,0x0a,0x000b000a,0x0a,0x000b000a,0x0b,0x000c000a,0x0a,0x000c000b, 0x0b + dd 0x000c000b,0x0c,0x000d000c,0x0c,0x000d000c,0x0d,0x000d000c,0x0d,0x000e000d, 0x0e + dd 0x000b000e,0x0e,0x00040005,0x04,0x00060005,0x06,0x00080007,0x08,0x00090008, 0x09 + dd 0x000a0009,0x0a,0x000b0009,0x0a,0x000b000a,0x0b,0x000b000a,0x0b,0x000c000a, 0x0b + dd 0x000c000b,0x0b,0x000c000b,0x0c,0x000d000c,0x0c,0x000e000c,0x0d,0x000d000c, 0x0e + dd 0x000e000d,0x0e,0x000b000d,0x0e,0x00070006,0x07,0x00080007,0x08,0x00090007, 0x09 + dd 0x000a0008,0x0a,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c + dd 0x000d000a,0x0b,0x000c000b,0x0c,0x000d000b,0x0c,0x000d000c,0x0d,0x000d000c, 0x0d + dd 0x000e000d,0x0e,0x000e000d,0x0f,0x000c000d,0x0f,0x00090007,0x08,0x00090008, 0x09 + dd 0x000a0008,0x0a,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c + dd 0x000c000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000c,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0d,0x000f000d,0x0e,0x000f000d,0x0f,0x000d000d,0x0f,0x000a0008, 0x09 + dd 0x000a0008,0x09,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c + dd 0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0c,0x000e000b,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000d,0x0f,0x000f000d,0x0f,0x000c000d, 0x10 + dd 0x000a0009,0x0a,0x000a0009,0x0a,0x000b0009,0x0b,0x000b000a,0x0c,0x000c000a, 0x0c + dd 0x000d000a,0x0c,0x000d000b,0x0d,0x000e000b,0x0d,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000f000c,0x0d,0x000f000d,0x0f,0x000f000d,0x0f,0x0010000d, 0x10 + dd 0x000d000e,0x10,0x000b000a,0x0a,0x000b0009,0x0b,0x000b000a,0x0c,0x000c000a, 0x0c + dd 0x000d000a,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000e000c,0x0e,0x000f000d,0x0f,0x000f000d, 0x0f + dd 0x0010000e,0x10,0x000d000e,0x10,0x000b000a,0x0b,0x000b000a,0x0b,0x000c000a, 0x0c + dd 0x000c000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0e,0x000e000c, 0x0e + dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0f,0x000f000c,0x0f,0x000f000d, 0x0f + dd 0x0011000d,0x10,0x0011000d,0x12,0x000d000e,0x12,0x000b000a,0x0a,0x000c000a, 0x0a + dd 0x000c000a,0x0b,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0e,0x000f000d, 0x0f + dd 0x0010000d,0x0f,0x0010000e,0x10,0x0010000e,0x11,0x000d000e,0x11,0x000c000a, 0x0b + dd 0x000c000a,0x0b,0x000c000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0d,0x000f000c,0x0f,0x000f000c,0x0e,0x000f000d,0x0f,0x000f000d, 0x0f + dd 0x0010000d,0x10,0x000f000d,0x10,0x0010000e,0x10,0x000f000e,0x12,0x000e000e, 0x11 + dd 0x000c000b,0x0b,0x000d000b,0x0c,0x000c000b,0x0c,0x000d000b,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000e000c,0x0f,0x000f000c,0x0e,0x0010000d, 0x0f + dd 0x0010000d,0x10,0x0010000d,0x0f,0x0011000d,0x10,0x0011000e,0x11,0x0010000f, 0x12 + dd 0x000d000e,0x13,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000f000c,0x0e,0x0010000c,0x0e,0x0010000d, 0x0f + dd 0x0010000d,0x0f,0x0010000d,0x0f,0x0010000d,0x10,0x0010000e,0x11,0x000f000e, 0x11 + dd 0x0010000e,0x11,0x000e000f,0x12,0x000d000c,0x0c,0x000e000c,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000f000c,0x0f,0x000f000d,0x0e,0x000f000d, 0x0f + dd 0x000f000d,0x10,0x0011000d,0x10,0x0010000d,0x11,0x0010000d,0x11,0x0010000e, 0x11 + dd 0x0010000e,0x12,0x0012000f,0x12,0x000e000f,0x12,0x000f000c,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0f,0x000f000c,0x0f,0x000f000d,0x0f,0x0010000d, 0x10 + dd 0x0010000d,0x10,0x0010000d,0x10,0x0012000e,0x10,0x0011000e,0x10,0x0011000e, 0x11 + dd 0x0011000e,0x12,0x0013000e,0x11,0x0011000f,0x12,0x000e000f,0x12,0x000e000d, 0x0e + dd 0x000f000d,0x0e,0x000d000d,0x0e,0x000e000d,0x0f,0x0010000d,0x0f,0x0010000d, 0x0f + dd 0x000f000d,0x11,0x0010000d,0x10,0x0010000e,0x10,0x0011000e,0x13,0x0012000e, 0x11 + dd 0x0011000e,0x11,0x0013000f,0x11,0x0011000f,0x13,0x0010000e,0x12,0x000e000f, 0x12 + dd 0x000b000d,0x0d,0x000b000d,0x0e,0x000b000d,0x0f,0x000c000d,0x10,0x000c000d, 0x10 + dd 0x000d000d,0x10,0x000d000d,0x11,0x000d000e,0x10,0x000e000e,0x11,0x000e000e, 0x11 + dd 0x000e000e,0x12,0x000e000e,0x12,0x000e000f,0x15,0x000e000f,0x14,0x000e000f, 0x15 + dd 0x000c000f,0x12 + +tableABC + dd 0x00020004,0x1,0x00040004,0x4,0x00060006,0x7,0x00080008,0x9,0x00090009,0xa,0x000a000a,0xa + dd 0x0009000a,0xa,0x000a000a,0xb,0x00000000,0x0,0x00020003,0x1,0x00040004,0x4,0x00070006,0x7 + dd 0x00090007,0x9,0x00090009,0x9,0x000a000a,0xa,0x00000000,0x0,0x00040004,0x4,0x00050005,0x6 + dd 0x00060006,0x8,0x00080007,0x9,0x000a0009,0xa,0x000a0009,0xb,0x0009000a,0xa,0x000a000a,0xa + dd 0x00000000,0x0,0x00040004,0x4,0x00040005,0x6,0x00060006,0x8,0x000a0007,0x9,0x000a0008,0x9 + dd 0x000a000a,0xa,0x00000000,0x0,0x00060006,0x7,0x00070006,0x8,0x00080007,0x9,0x00090008,0xa + dd 0x000a0009,0xb,0x000b000a,0xc,0x000a0009,0xb,0x000a000a,0xb,0x00000000,0x0,0x00070005,0x7 + dd 0x00060006,0x7,0x00080007,0x9,0x000a0008,0xa,0x000a0009,0xa,0x000b000a,0xb,0x00000000,0x0 + dd 0x00080007,0x8,0x00080007,0x9,0x00090008,0xa,0x000b0008,0xb,0x000a0009,0xc,0x000c000a,0xc + dd 0x000a000a,0xb,0x000b000a,0xc,0x00000000,0x0,0x00090007,0x8,0x000a0007,0x9,0x000a0008,0xa + dd 0x000b0009,0xb,0x000b0009,0xb,0x000c000a,0xb,0x00000000,0x0,0x00090008,0x9,0x000a0008,0xa + dd 0x000a0009,0xb,0x000b0009,0xc,0x000b000a,0xc,0x000c000a,0xc,0x000b000a,0xc,0x000c000b,0xc + dd 0x00000000,0x0,0x00090008,0x8,0x00090008,0x9,0x000a0009,0xa,0x000b0009,0xb,0x000c000a,0xb + dd 0x000c000b,0xc,0x00000000,0x0,0x00090009,0xa,0x000a0009,0xb,0x000b000a,0xc,0x000c000a,0xc + dd 0x000c000a,0xd,0x000d000b,0xd,0x000c000a,0xc,0x000d000b,0xd,0x00000000,0x0,0x000a0009,0x9 + dd 0x000a0009,0xa,0x000b000a,0xb,0x000b000a,0xc,0x000d000b,0xc,0x000d000b,0xc,0x00000000,0x0 + dd 0x00090009,0x9,0x00090009,0xa,0x00090009,0xb,0x000a000a,0xc,0x000b000a,0xc,0x000c000b,0xc + dd 0x000c000b,0xd,0x000c000c,0xd,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0 + dd 0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x0009000a,0xa,0x0009000a,0xa + dd 0x000a000a,0xb,0x000b000b,0xc,0x000c000b,0xc,0x000c000b,0xd,0x000c000b,0xd,0x000c000c,0xd + dd 0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0 + dd 0x0,0x00000000, 0x0,0x00000000 + +linbits32 + dd 0x00040004,0x10001,0x00040004,0x20002,0x00040004,0x30003,0x00040004,0x40004 + dd 0x00050005,0x60006,0x00060006,0x60006,0x00070007,0x80008,0x00080008,0x80008 + dd 0x00090009,0xa000a,0x000b000b,0xa000a,0x000b000b,0xd000d,0x000d000d,0xd000d + dd 0x000d000d,0xd000d + + +choose_table_H + dw 0x1810, 0x1811, 0x1812, 0x1813, 0x1914, 0x1a14, 0x1b15, 0x1c15 + dw 0x1d16, 0x1e16, 0x1e17, 0x1f17, 0x1f17 + +choose_jump_table_L: + dd table_MMX.L_case_0 + dd table_MMX.L_case_1 + dd table_MMX.L_case_2 + dd table_MMX.L_case_3 + dd table_MMX.L_case_45 + dd table_MMX.L_case_45 + dd table_MMX.L_case_67 + dd table_MMX.L_case_67 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + + segment_code +; +; use MMX +; + + align 16 +; int choose_table(int *ix, int *end, int *s) +choose_table_MMX: + mov ecx,[esp+4] ;ecx = begin + mov edx,[esp+8] ;edx = end + sub ecx,edx ;ecx = begin-end(should be minus) + test ecx,8 + pxor mm0,mm0 ;mm0=[0:0] + movq mm1,[edx+ecx] + jz .lp + + add ecx,8 + jz .exit + + align 4 +.lp: + movq mm4,[edx+ecx] + movq mm5,[edx+ecx+8] + add ecx,16 + psubusw mm4,mm0 ; $BK\Ev$O(B dword $B$G$J$$$H$$$1$J$$$N$@$,(B + psubusw mm5,mm1 ; $B$=$s$J%3%^%s%I$O$J$$(B :-p + paddw mm0,mm4 ; $B$,(B, $B$3$3$G07$&CM$NHO0O$O(B 8191+15 $B0J2<$J$N$GLdBj$J$$(B + paddw mm1,mm5 + jnz .lp +.exit: + psubusw mm1,mm0 ; $B$3$l$bK\Ev$O(B dword $B$G$J$$$H$$$1$J$$(B + paddw mm0,mm1 + + movq mm4,mm0 + punpckhdq mm4,mm4 + psubusw mm4,mm0 ; $B$3$l$bK\Ev$O(B dword $B$G$J$$$H$$$1$J$$(B + paddw mm0,mm4 + movd eax,mm0 + + cmp eax,15 + ja .with_ESC + jmp [choose_jump_table_L+eax*4] + +.with_ESC1: + emms + mov ecx, [esp+12] ; *s + mov [ecx], eax + or eax,-1 + ret + +.with_ESC: + cmp eax, 8191+15 + ja .with_ESC1 + + sub eax,15 + push ebx + push esi + bsr eax, eax +%assign _P 4*2 + movq mm5, [D15_15_15_15] + movq mm6, [D14_14_14_14] + movq mm3, [mul_add] + + mov ecx, [esp+_P+4] ; = ix +; mov edx, [esp+_P+8] ; = end + sub ecx, edx + + xor esi, esi ; sum = 0 + test ecx, 8 + pxor mm7, mm7 ; linbits_sum, 14$B$r1[$($?$b$N$N?t(B + jz .H_dual_lp1 + + movq mm0, [edx+ecx] + add ecx,8 + packssdw mm0,mm7 + movq mm2, mm0 + paddusw mm0, mm5 ; mm0 = min(ix, 15)+0xfff0 + pcmpgtw mm2, mm6 ; 14$B$h$jBg$-$$$+!)(B + psubw mm7, mm2 ; 14$B$h$jBg$-$$$H$-(B linbits_sum++; + pmaddwd mm0, mm3 ; {0, 0, y, x}*{1, 16, 1, 16} + movd ebx, mm0 + mov esi, [largetbl+ebx*4+(16*16+16)*4] + + jz .H_dual_exit + + align 4 +.H_dual_lp1: + movq mm0, [edx+ecx] + movq mm1, [edx+ecx+8] + packssdw mm0,mm1 + movq mm2, mm0 + paddusw mm0, mm5 ; mm0 = min(ix, 15)+0xfff0 + pcmpgtw mm2, mm6 ; 14$B$h$jBg$-$$$+!)(B + pmaddwd mm0, mm3 ; {y, x, y, x}*{1, 16, 1, 16} + movd ebx, mm0 + punpckhdq mm0,mm0 + add esi, [largetbl+ebx*4+(16*16+16)*4] + movd ebx, mm0 + add esi, [largetbl+ebx*4+(16*16+16)*4] + add ecx, 16 + psubw mm7, mm2 ; 14$B$h$jBg$-$$$H$-(B linbits_sum++; + jnz .H_dual_lp1 + +.H_dual_exit: + pmov mm1,mm7 + punpckhdq mm7,mm7 + paddd mm7,mm1 + punpckldq mm7,mm7 + + pmaddwd mm7, [linbits32+eax*8] ; linbits + mov ax, [choose_table_H+eax*2] + + movd ecx, mm7 + punpckhdq mm7,mm7 + movd edx,mm7 + emms + shl edx, 16 + add ecx, edx + + add ecx, esi + + pop esi + pop ebx + + mov edx, ecx + and ecx, 0xffff ; ecx = sum2 + shr edx, 16 ; edx = sum + + cmp edx, ecx + jle .chooseE_s1 + mov edx, ecx + shr eax, 8 +.chooseE_s1: + mov ecx, [esp+12] ; *s + and eax, 0xff + add [ecx], edx + ret + +table_MMX.L_case_0: + emms + ret + +table_MMX.L_case_1: + emms + mov eax, [esp+12] ; *s + mov ecx, [esp+4] ; *ix + sub ecx, edx + push ebx +.lp: + mov ebx, [edx+ecx] + add ebx, ebx + add ebx, [edx+ecx+4] + movzx ebx, byte [ebx+t1l] + add [eax], ebx + add ecx, 8 + jnz .lp + pop ebx + mov eax, 1 + ret + +table_MMX.L_case_45: + push dword 7 + mov ecx, tableABC+9*8 + jmp from3 + +table_MMX.L_case_67: + push dword 10 + mov ecx, tableABC + jmp from3 + +table_MMX.L_case_8_15: + push dword 13 + mov ecx, tableDEF +from3: + mov eax,[esp+8] ;eax = *begin +; mov edx,[esp+12] ;edx = *end + + push ebx + sub eax, edx + + movq mm5,[mul_add] + pxor mm2,mm2 ;mm2 = sum + + test eax, 8 + jz .choose3_lp1 +; odd length + movq mm0,[edx+eax] ;mm0 = ix[0] | ix[1] + add eax,8 + packssdw mm0,mm2 + + pmaddwd mm0,mm5 + movd ebx,mm0 + + movq mm2, [ecx+ebx*8] + + jz .choose3_exit + + align 4 +.choose3_lp1 + movq mm0,[edx+eax] + movq mm1,[edx+eax+8] + add eax,16 + packssdw mm0,mm1 ;mm0 = ix[0]|ix[1]|ix[2]|ix[3] + pmaddwd mm0,mm5 + movd ebx,mm0 + punpckhdq mm0,mm0 + paddd mm2, [ecx+ebx*8] + movd ebx,mm0 + paddd mm2, [ecx+ebx*8] + jnz .choose3_lp1 +.choose3_exit +; xor eax,eax + movd ebx, mm2 + punpckhdq mm2,mm2 + mov ecx, ebx + and ecx, 0xffff ; ecx = sum2 + shr ebx, 16 ; ebx = sum1 + movd edx, mm2 ; edx = sum + + cmp edx, ebx + jle .choose3_s1 + mov edx, ebx + inc eax +.choose3_s1: + emms + pop ebx + cmp edx, ecx + jle .choose3_s2 + mov edx, ecx + mov eax, 2 +.choose3_s2: + pop ecx + add eax, ecx + mov ecx, [esp+12] ; *s + add [ecx], edx + ret + +table_MMX.L_case_2: + push dword 2 + mov ecx,table23 + pmov mm5,[mul_add23] + jmp from2 +table_MMX.L_case_3: + push dword 5 + mov ecx,table56 + pmov mm5,[mul_add56] +from2: + mov eax,[esp+8] ;eax = *begin +; mov edx,[esp+12] ;edx = *end + push ebx + push edi + + sub eax, edx + xor edi, edi + test eax, 8 + jz .choose2_lp1 +; odd length + movq mm0,[edx+eax] ;mm0 = ix[0] | ix[1] + pxor mm2,mm2 ;mm2 = sum + packssdw mm0,mm2 + + pmaddwd mm0,mm5 + movd ebx,mm0 + + mov edi, [ecx+ebx*4] + + add eax,8 + jz .choose2_exit + + align 4 +.choose2_lp1 + movq mm0,[edx+eax] + movq mm1,[edx+eax+8] + packssdw mm0,mm1 ;mm0 = ix[0]|ix[1]|ix[2]|ix[3] + pmaddwd mm0,mm5 + movd ebx,mm0 + punpckhdq mm0,mm0 + add edi, [ecx+ebx*4] + movd ebx, mm0 + add edi, [ecx+ebx*4] + add eax,16 + jnc .choose2_lp1 +.choose2_exit + mov ecx, edi + pop edi + pop ebx + pop eax ; table num. + emms + + mov edx, ecx + and ecx, 0xffff ; ecx = sum2 + shr edx, 16 ; edx = sum1 + + cmp edx, ecx + jle .choose2_s1 + mov edx, ecx + inc eax +.choose2_s1: + mov ecx, [esp+12] ; *s + add [ecx], edx + ret + + end diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/cpu_feat.nas.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/cpu_feat.nas.svn-base new file mode 100644 index 0000000..b5b09c1 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/cpu_feat.nas.svn-base @@ -0,0 +1,107 @@ +; +; +; assembler routines to detect CPU-features +; +; MMX / 3DNow! / SSE / SSE2 +; +; for the LAME project +; Frank Klemm, Robert Hegemann 2000-10-12 +; + +%include "nasm.h" + + globaldef has_MMX_nasm + globaldef has_3DNow_nasm + globaldef has_SSE_nasm + globaldef has_SSE2_nasm + + segment_code + +testCPUID: + pushfd + pop eax + mov ecx,eax + xor eax,0x200000 + push eax + popfd + pushfd + pop eax + cmp eax,ecx + ret + +;--------------------------------------- +; int has_MMX_nasm (void) +;--------------------------------------- + +has_MMX_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no MMX + + mov eax,0x1 + CPUID + test edx,0x800000 + jz return0 ; no MMX support + jmp return1 ; MMX support + +;--------------------------------------- +; int has_SSE_nasm (void) +;--------------------------------------- + +has_SSE_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no SSE + + mov eax,0x1 + CPUID + test edx,0x02000000 + jz return0 ; no SSE support + jmp return1 ; SSE support + +;--------------------------------------- +; int has_SSE2_nasm (void) +;--------------------------------------- + +has_SSE2_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no SSE2 + + mov eax,0x1 + CPUID + test edx,0x04000000 + jz return0 ; no SSE2 support + jmp return1 ; SSE2 support + +;--------------------------------------- +; int has_3DNow_nasm (void) +;--------------------------------------- + +has_3DNow_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no 3DNow! + + mov eax,0x80000000 + CPUID + cmp eax,0x80000000 + jbe return0 ; no extended MSR(1), so no 3DNow! + + mov eax,0x80000001 + CPUID + test edx,0x80000000 + jz return0 ; no 3DNow! support + ; 3DNow! support +return1: + popad + xor eax,eax + inc eax + ret + +return0: + popad + xor eax,eax + ret + + end diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/fft.nas.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/fft.nas.svn-base new file mode 100644 index 0000000..7928b33 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/fft.nas.svn-base @@ -0,0 +1,267 @@ + +; for new GOGO-no-coda (1999/09) +; Copyright (C) 1999 shigeo +; special thanks to Keiichi SAKAI, URURI +%include "nasm.h" + + globaldef fht_3DN + globaldef fht + externdef costab_fft + externdef sintab_fft + externdef gray_index + + segment_data + align 16 +D_MSB1_0 dd 0 ,0x80000000 +D_SQRT2 dd 1.414213562,1.414213562 +t_s0 dd 0 ;[ t_c:t_s] +t_c0 dd 0 +t_c1 dd 0 ;[-t_s:t_c] +t_s1 dd 0 +D_s1c1 dd 0, 0 +D_Mc1s1 dd 0, 0 +D_s2c2 dd 0, 0 +D_Mc2s2 dd 0, 0 +D_0_1 dd 1.0, 0.0 +S_05 DD 0.5 +S_00005 DD 0.0005 +fht dd 0 ;�ؿ��ݥ��� + + segment_code + +;************************************************************************ + +; by shigeo +; 99/08/16 +; 23000clk �ɤ��ä��� +; 18500clk bit reversal from gogo1 by URURI + +;void fht(float *fz, int n); + align 16 +fht_3DN: + push ebx + push esi + push edi + push ebp +%assign _P 4*4 + ;�ޤ��ǽ�Υ롼��... ��fht()�γ��ذ�ư + + mov esi,[esp+_P+4] ;esi=fz + mov ecx,[esp+_P+8] ;ecx=n + + ;�ᥤ��롼�� + movq mm7,[D_MSB1_0] ;mm7=[1<<31:0] + +%assign LOCAL_STACK 16 + sub esp,LOCAL_STACK +%assign _P (_P+LOCAL_STACK) + xor eax,eax + mov [esp],eax ;k=0 +%define k dword [esp] +%define kx dword [esp+4] +%define fn dword [esp+8] + +.lp30: ;k=0; do{ + mov ecx,k + add ecx,2 + mov k,ecx + mov eax,1 + shl eax,cl ;eax=k1 = 1<<k + lea ebx,[eax+eax] ;ebx=k2 = k1*2 + lea ecx,[eax+eax*2] ;ecx=k3 = k2 + k1 = k1*3 + lea edx,[ebx+ebx] ;edx=k4 = k1*4 + mov esi,eax + shr esi,1 ;esi=kx=k1>>1 + mov kx,esi ;��¸(��ǻȤ�) + mov edi,[esp+_P+4] ;edi=fi=fz + lea ebp,[edi+esi*4] ;ebp=gi=fz+kx + mov esi,[esp+_P+8] ;esi=n + lea esi,[edi+esi*4] ;esi=fn=fz+n + movq mm6,[D_SQRT2] ;mm6=[��2:��2] + +.lp31: ;fn=fz+n; do{ FLOAT g0,f0,f1,... + movd mm0,[edi] ;mm0=[0:fi[ 0]] + movd mm1,[edi+eax*4] ;mm1=[0:fi[k1]] + punpckldq mm0,mm0 ;mm0=[fi_0 :fi_0 ] + punpckldq mm1,mm1 ;mm1=[fi_k1:fi_k1] + movd mm2,[edi+ebx*4] + movd mm3,[edi+ecx*4] + punpckldq mm2,mm2 ;mm2=[fi_k2:fi_k2] + punpckldq mm3,mm3 ;mm3=[fi_k3:fi_k3] + pxor mm1,mm7 ;mm1=[-fi_k1:fi_k1] + pxor mm3,mm7 ;mm3=[-fi_k3:fi_k3] + pfadd mm0,mm1 ;mm0=[f1:f0]=[fi_0 -fi_k1 : fi_0 +fi_k1] + pfadd mm2,mm3 ;mm2=[f3:f2]=[fi_k2-fi_k3 : fi_k2+fi_k3] + movq mm3,mm0 ;mm3=[f1:f0] + pfadd mm0,mm2 ;mm0=[f1+f3:f0+f2] + movd [edi],mm0 ;fi[0]=f0+f2 + psrlq mm0,32 ;mm0=[0:f1+f3] + pfsub mm3,mm2 ;mm3=[f1-f3:f0-f2] + movd [edi+eax*4],mm0 ;fi[k1]=f1+f3 + movd [edi+ebx*4],mm3 ;fi[k2]=f0-f2 + psrlq mm3,32 ;mm3=[0:f1-f3] + movd [edi+ecx*4],mm3 ;fi[k3]=f1-f3 + + movd mm0,[ebp] ;mm0=[0:gi_0] + movd mm1,[ebp+eax*4] ;mm1=[0:gi_k1] + punpckldq mm0,mm0 ;mm0=[gi_0 :gi_0 ] + punpckldq mm1,mm1 ;mm1=[gi_k1:gi_k1] + movd mm2,[ebp+ebx*4] ;mm2=[0:gi_k2] + pxor mm1,mm7 ;mm1=[-gi_k1:gi_k1] + punpckldq mm2,[ebp+ecx*4] ;mm2=[gi_k3:gi_k2] + pfadd mm0,mm1 ;mm0=[g1:g0]=[gi_0 -gi_k1:gi_0 +gi_k1] + pfmul mm2,mm6 ;mm2=[g3:g2]=sqrt2 * [gi_k3:gi_k2] + movq mm1,mm0 ;mm1=[g1:g0] + pfadd mm0,mm2 ;mm0=[g1+g3:g0+g2] + movd [ebp],mm0 ;gi[0]=g0+g2 + psrlq mm0,32 ;mm0=[0:g1+g3] + pfsub mm1,mm2 ;mm1=[g1-g3:g0-g2] + movd [ebp+eax*4],mm0 ;gi[k1]=g1+g3 + movd [ebp+ebx*4],mm1 ;gi[k2]=g0-g2 + psrlq mm1,32 ;mm1=[0:g1-g3] + movd [ebp+ecx*4],mm1 ;gi[k3]=g1-g3 + lea edi,[edi+edx*4] ;fi += k4 + lea ebp,[ebp+edx*4] ;gi += k4 + cmp edi,esi + jc near .lp31 ;}while(fi<fn); + +; �����ޤǤ�¿ʬO.K. + + mov fn,esi ;fn=fz+n + ;�����ͤϰ���³���Ȥ� + ;eax=k1,ebx=k2,ecx=k3,edx=k4 + + mov edi,k + lea ebp,[costab_fft+edi*4] + mov ebp,[ebp] ;ebp=t_c + mov [t_c0],ebp + mov [t_c1],ebp ;t_c + lea ebp,[sintab_fft+edi*4] + mov ebp,[ebp] ;ebx=t_s + mov [t_s0],ebp + xor ebp,0x80000000 + mov [t_s1],ebp ;-t_s + + movq mm1,[D_0_1] ;mm1=[0:1] + movq [D_s1c1],mm1 ;mm1=[s1:c1] + mov esi,1 ;esi=i=1 + +.lp32: ; for(i=1;i<kx;i++){ + movq mm0,[D_s1c1] ;mm1=[s1:t]=[s1:c1] + movq mm2,mm0 + pfmul mm0,[t_c1] ;mm0=[-s1*t_s: t*t_c] + pfmul mm2,[t_s0] ;mm2=[ s1*t_c: t*t_s] + pfacc mm0,mm2 ;mm0=[s1:c1]=[ s1*t_c+t*t_s:-s1*t_s+t*t_c] + movq mm2,mm0 ;mm2=[s1:c1] + movq [D_s1c1],mm0 ;��¸ + movq mm6,mm2 + punpckldq mm5,mm6 + punpckhdq mm6,mm5 ;mm6=[ c1:s1] + pxor mm6,mm7 ;mm6=[-c1:s1] + movq [D_Mc1s1],mm6 ;��¸ + pfmul mm2,mm2 ;mm2=[s1*s1:c1*c1] + movq mm3,mm0 ;mm3=[s1:c1] + pxor mm2,mm7 ;mm2=[-s1*s1:c1*c1] + psrlq mm3,32 ;mm3=[ 0:s1] + pfacc mm2,mm2 ;mm2=[c2:c2]=[c1*c1-s1*s1:<] + pfmul mm0,mm3 ;mm0=[ 0:c1*s1] + pfadd mm0,mm0 ;mm0=[0:s2]=[ 0:2*c1*s1] + punpckldq mm2,mm0 ;mm2=[s2:c2] + movq [D_s2c2],mm2 ;��¸ + + punpckldq mm0,mm2 + punpckhdq mm2,mm0 ;mm2=[c2:s2] + pxor mm2,mm7 ;mm2=[-c2:s2] + movq [D_Mc2s2],mm2 ;��¸ + + mov edi,[esp+_P+4] ;edi=fz + lea edi,[edi+esi*4] ;edi=fz+i + + mov ebp,[esp+_P+4] ;ebp=fz + neg esi ;esi=-i + lea ebp,[ebp+eax*4] ;ebp=fz+k1 + lea ebp,[ebp+esi*4] ;ebp=gi=fz+k1-i + neg esi ;esi=i + +.lp33: ; do{ FLOAT a,b,g0,f0,f1,g1,f2,g2,f3,g3; + + movd mm0,[edi+eax*4] ;mm0=[0:fi_k1] + punpckldq mm0,[ebp+eax*4] ;mm0=[gi_k1:fi_k1] + movq mm1,mm0 + pfmul mm0,[D_s2c2] ;mm0=[ s2*gi_k1:c2*fi_k1] + pfmul mm1,[D_Mc2s2] ;mm1=[-c2*gi_k1:s2*fi_k1] + pfacc mm0,mm1 ;mm0=[b:a] + movd mm4,[edi] ;mm4=[0:fi_0] + movq mm3,mm0 ;mm3=[b:a] + punpckldq mm4,[ebp] ;mm4=[gi_0:fi_0] + pfadd mm3,mm4 ;mm3=[g0:f0]=[gi_0+b:fi_0+a] + pfsub mm4,mm0 ;mm4=[g1:f1]=[gi_0-b:fi_0-a] + + movd mm0,[edi+ecx*4] ;mm0=[0:fi_k3] + punpckldq mm0,[ebp+ecx*4] ;mm0=[gi_k3:fi_k3] + movq mm1,mm0 + pfmul mm0,[D_s2c2] ;mm0=[ s2*gi_k3:c2*fi_k3] + pfmul mm1,[D_Mc2s2] ;mm1=[-c2*gi_k3:s2*fi_k3] + pfacc mm0,mm1 ;mm0=[b:a] + movd mm5,[edi+ebx*4] ;mm5=[0:fi_k2] + movq mm6,mm0 ;mm6=[b:a] + punpckldq mm5,[ebp+ebx*4] ;mm5=[gi_k2:fi_k2] + pfadd mm6,mm5 ;mm6=[g2:f2]=[gi_k2+b:fi_k2+a] + pfsub mm5,mm0 ;mm5=[g3:f3]=[gi_k2-b:fi_k2-a] + + punpckldq mm1,mm6 ;mm1=[f2:*] + movq mm0,[D_s1c1] ;mm0=[s1:c1] + punpckhdq mm1,mm5 ;mm1=[g3:f2] + pfmul mm0,mm1 ;mm0=[ s1*g3:c1*f2] + movq mm2,[D_Mc1s1] ;mm2=[-c1:s1] + pfmul mm2,mm1 ;mm2=[-c1*g3:s1*f2] + pfacc mm0,mm2 ;mm0=[b:a] + + punpckldq mm1,mm3 ;mm1=[f0:*] + punpckhdq mm1,mm4 ;mm1=[g1:f0] + movq mm2,mm0 ;mm2=[b:a] + pfadd mm0,mm1 ;mm0=[g1+b:f0+a] + pfsubr mm2,mm1 ;mm2=[g1-b:f0-a] + movd [edi],mm0 ;fi[0]=f0+a + psrlq mm0,32 ;mm0=[0:g1+b] + movd [edi+ebx*4],mm2 ;fi[k2]=f0-a + psrlq mm2,32 ;mm2=[0:g1-b] + movd [ebp+eax*4],mm0 ;gi[k1]=g1+b + movd [ebp+ecx*4],mm2 ;gi[k3]=g1-b + psrlq mm6,32 ;mm6=[0:g2] + movq mm0,[D_s1c1] ;mm0=[s1:c1] + punpckldq mm5,mm6 ;mm5=[g2:f3] + pfmul mm0,mm5 ;mm0=[g2* s1:f3*c1] + pfmul mm5,[D_Mc1s1] ;mm5=[g2*-c1:f3*s1] + pfacc mm0,mm5 ;mm0=[-b:a] + psrlq mm3,32 ;mm3=[0:g0] + movq mm1,mm0 ;mm1=[-b:a] + punpckldq mm3,mm4 ;mm3=[f1:g0] + pfadd mm0,mm3 ;mm0=[f1-b:g0+a] + pfsubr mm1,mm3 ;mm1=[f1+b:g0-a] + movd [ebp],mm0 ;gi[0]=g0+a + psrlq mm0,32 ;mm0=[0:f1-b] + movd [ebp+ebx*4],mm1 ;gi[k2]=g0-a + psrlq mm1,32 ;mm1=[0:f1+b] + movd [edi+ecx*4],mm0 ;fi[k3]=f1-b + movd [edi+eax*4],mm1 ;fi[k1]=f1+b + + lea edi,[edi+edx*4] ;fi += k4 + lea ebp,[ebp+edx*4] ;gi += k4 + cmp edi,fn + jc near .lp33 ;}while(fi<fn) + inc esi + cmp esi,kx + jnz near .lp32 ;} + cmp edx,[esp+_P+8] + jnz near .lp30 ;}while(k4<n) + + +.exit: + add esp,LOCAL_STACK + femms + pop ebp + pop edi + pop esi + pop ebx + ret diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/fft3dn.nas.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/fft3dn.nas.svn-base new file mode 100644 index 0000000..4ec3869 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/fft3dn.nas.svn-base @@ -0,0 +1,277 @@ +; from a new GOGO-no-coda (1999/09) +; Copyright (C) 1999 shigeo +; special thanks to Keiichi SAKAI, URURI +; hacked and back-ported to LAME +; by Takehiro TOMINAGA Nov 2000 + +%include "nasm.h" + + globaldef fht_3DN + + segment_data + align 16 +costab dd 0x80000000, 0 + dd 1.414213562,1.414213562 + dd 9.238795283293805e-01, 9.238795283293805e-01 + dd 3.826834424611044e-01, 3.826834424611044e-01 + dd 9.951847264044178e-01, 9.951847264044178e-01 + dd 9.801714304836734e-02, 9.801714304836734e-02 + dd 9.996988186794428e-01, 9.996988186794428e-01 + dd 2.454122920569705e-02, 2.454122920569705e-02 + dd 9.999811752815535e-01, 9.999811752815535e-01 + dd 6.135884819898878e-03, 6.135884819898878e-03 +D_1_0_0_0 dd 0.0 , 1.0 + + segment_code + +;void fht_3DN(float *fz, int nn); + +proc fht_3DN + + pushd ebp, ebx, esi, edi + + mov r0, [esp+20] ;fi + mov r1, [esp+24] ;r1 = nn + sub esp, 16 + + mov r4, 8 ;kx = k1/2 + mov r3, costab ;tri = costab + lea r6, [r0+r1*8] ;r6 = fn = &fz[n] + + pmov mm7, [r3] + +.do1 + lea r3, [r3+16] ;tri += 2; + pmov mm6, [costab+8] + lea r2, [r4+r4*2] ;k3*fsize/2 + mov r5, 4 ;i = 1*fsize + +; jmp .do2 + align 16 +.do2: + lea r1, [r0+r4] ;gi = fi + kx + ;f + pmov mm0, [r0] ;fi0 + pmov mm1, [r0+r4*2] ;fi1 + pmov mm2, [r0+r2*2] ;fi3 + pmov mm3, [r0+r4*4] ;fi2 + + pupldq mm0, mm0 ;fi0 | fi0 + pupldq mm1, mm1 ;fi1 | fi1 + pupldq mm2, mm2 ;fi2 | fi2 + pupldq mm3, mm3 ;fi3 | fi3 + + pxor mm1, mm7 ;fi1 | -fi1 + pxor mm3, mm7 ;fi3 | -fi3 + + pfsub mm0, mm1 ;f1 | f0 + pfsub mm2, mm3 ;f3 | f2 + + pmov mm4, mm0 + pfadd mm0, mm2 ;f1+f3|f0+f2 = fi1 | fi0 + pfsub mm4, mm2 ;f1-f3|f0-f2 = fi3 | fi2 + + pmovd [r0], mm0 ;fi[0] + puphdq mm0, mm0 + pmovd [r0+r4*4], mm4 ;fi[k2] + puphdq mm4, mm4 + + pmovd [r0+r4*2], mm4 ;fi[k1] + pmovd [r0+r2*2], mm0 ;fi[k3] + lea r0, [r0+r4*8] + + ;g + pmov mm0, [r1] ;gi0 + pmov mm1, [r1+r4*2] ;gi1 + pmov mm2, [r1+r4*4] ;gi2 + pmov mm3, [r1+r2*2] ;gi3 + + pupldq mm1, mm1 + pupldq mm0, mm0 ;gi0 | gi0 + pupldq mm2, mm3 ;gi3 | gi2 + + pxor mm1, mm7 ;gi1 | -gi1 + + pfsub mm0, mm1 ;gi0-gi1|gi0+gi1 = g1 | g0 + pfmul mm2, mm6 ;gi3*SQRT2|gi2*SQRT2 = g3 | g2 + + pmov mm4, mm0 + pfadd mm0, mm2 ;g1+g3|g0+g2 = gi1 | gi0 + pfsub mm4, mm2 ;g1-g3|g0-g2 = gi3 | gi2 + + pmovd [r1], mm0 ;gi[0] + puphdq mm0, mm0 + pmovd [r1+r4*4], mm4 ;gi[k2] + puphdq mm4, mm4 + + cmp r0, r6 + pmovd [r1+r4*2], mm0 ;gi[k1] + pmovd [r1+r2*2], mm4 ;gi[k3] + + jb near .do2 + + pmov mm6, [r3+r5] ; this is not aligned address!! + + jmp .for + align 16 +.for: +; +; mm6 = c1 | s1 +; mm7 = 0x800000000 | 0 +; + pmov mm1, mm6 + mov r0, [esp+36] ; fz + puphdq mm1, mm1 ; c1 | c1 + lea r1, [r0+r4*2] + pfadd mm1, mm1 ; c1+c1 | c1+c1 + pfmul mm1, mm6 ; 2*c1*c1 | 2*c1*s1 + pfsub mm1, [D_1_0_0_0] ; 2*c1*c1-1.0 | 2*c1*s1 = -c2 | s2 + +%ifdef E3DN + pswapd mm0, mm1 ; s2 |-c2 + pxor mm0, mm7 ; s2 | c2 + pxor mm7, mm6 ; c1 |-s1 + pswapd mm6, mm6 ; s1 | c1 +%else + pmov mm0, mm1 + pxor mm7, mm6 ; c1 | -s1 + + pupldq mm2, mm0 + pupldq mm3, mm6 ; ** | c1 + puphdq mm0, mm2 ; s2 | c2 + puphdq mm6, mm3 ;-s1 | c1 + + pxor mm0, [costab] ; c2 | -s2 +%endif + +; mm0 = s2| c2 +; mm1 = -c2| s2 +; mm6 = c1| s1 +; mm7 = s1|-c1 <-GOGO$B$HId9f5U(B + + pmov [esp], mm0 + pmov [esp+8], mm1 + + sub r1, r5 ;r1 = gi + add r0, r5 ;r0 = fi +; jmp .do3 + + align 16 +.do3: + pmov mm2, [r0+r4*2] ; fi[k1] + pmov mm4, [r1+r4*2] ; gi[k1] + pmov mm3, [r0+r2*2] ; fi[k3] + pmov mm5, [r1+r2*2] ; gi[k3] + + pupldq mm2, mm2 ; fi1 | fi1 + pupldq mm4, mm4 ; gi1 | gi1 + pupldq mm3, mm3 ; fi3 | fi3 + pupldq mm5, mm5 ; gi3 | gi3 + + pfmul mm2, mm0 ; s2 * fi1 | c2 * fi1 + pfmul mm4, mm1 ;-c2 * gi1 | s2 * gi1 + pfmul mm3, mm0 ; s2 * fi3 | c2 * fi3 + pfmul mm5, mm1 ;-c2 * gi3 | s2 * gi3 + + pfadd mm2, mm4 ;b | a + pfadd mm3, mm5 ;d | c + + pmov mm0, [r0] + pmov mm4, [r1] + pmov mm1, [r0+r4*4] + pmov mm5, [r1+r4*4] + + pupldq mm0, mm4 ;gi0 | fi0 + pupldq mm1, mm5 ;gi2 | fi2 + + pmov mm4, mm2 + pmov mm5, mm3 + + pfadd mm2, mm0 ;g0 | f0 + pfadd mm3, mm1 ;g2 | f2 + + pfsub mm0, mm4 ;g1 | f1 + pfsub mm1, mm5 ;g3 | f3 + + pmov mm4, mm3 + pmov mm5, mm1 + + pupldq mm4, mm4 ;f2 | f2 + puphdq mm5, mm5 ;g3 | g3 + puphdq mm3, mm3 ;g2 | g2 + pupldq mm1, mm1 ;f3 | f3 + + pfmul mm4, mm6 ;f2 * c1 | f2 * s1 + pfmul mm5, mm7 ;g3 * s1 | g3 *-c1 + pfmul mm3, mm6 ;g2 * c1 | g2 * s1 + pfmul mm1, mm7 ;f3 * s1 | f3 *-c1 + + pfadd mm4, mm5 ;a | b + pfsub mm3, mm1 ;d | c + + pmov mm5, mm2 + pmov mm1, mm0 + + pupldq mm2, mm2 ;f0 | f0 + pupldq mm0, mm0 ;f1 | f1 + + puphdq mm1, mm2 ;f0 | g1 + puphdq mm5, mm0 ;f1 | g0 + + pmov mm2, mm4 + pmov mm0, mm3 + + pfadd mm4, mm1 ;fi0 | gi1 + pfadd mm3, mm5 ;fi1 | gi0 + pfsub mm1, mm2 ;fi2 | gi3 + pfsub mm5, mm0 ;fi3 | gi2 + + pmovd [r1+r4*2], mm4 ;gi[k1] + puphdq mm4, mm4 + pmovd [r1], mm3 ;gi[0] + puphdq mm3, mm3 + pmovd [r1+r2*2], mm1 ;gi[k3] + puphdq mm1, mm1 + pmovd [r1+r4*4], mm5 ;gi[k2] + puphdq mm5, mm5 + + pmovd [r0], mm4 ;fi[0] + pmovd [r0+r4*2], mm3 ;fi[k1] + pmovd [r0+r4*4], mm1 ;fi[k2] + pmovd [r0+r2*2], mm5 ;fi[k3] + + lea r0, [r0+r4*8] + lea r1, [r1+r4*8] + cmp r0, r6 + pmov mm0, [esp] + pmov mm1, [esp+8] + + jb near .do3 + + add r5, 4 +; mm6 = c1| s1 +; mm7 = s1|-c1 <-GOGO$B$HId9f5U(B + pfmul mm6, [r3] ; c1*a | s1*a + pfmul mm7, [r3+8] ; s1*b |-c1*b + cmp r5, r4 + + pfsub mm6, mm7 ; c1*a-s1*b | s1*a+c1*b +%ifdef E3DN + pswapd mm6, mm6 ; ??? ; s1*a+c1*b | c1*a-s1*b +%else + pupldq mm7,mm6 + puphdq mm6,mm7 +%endif + pmov mm7, [costab] + jb near .for + + mov r0, [esp+36] ;fi + cmp r4, [esp+36+4] + lea r4, [r4*4] ;kx *= 4 + + jb near .do1 +.exitttt + femms + add esp,16 + popd ebp, ebx, esi, edi +endproc diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/fftfpu.nas.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/fftfpu.nas.svn-base new file mode 100644 index 0000000..2ae89bd --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/fftfpu.nas.svn-base @@ -0,0 +1,619 @@ +; back port from GOGO-no coda 2.24b by Takehiro TOMINAGA + +; GOGO-no-coda +; Copyright (C) 1999 shigeo +; special thanks to URURI + +%include "nasm.h" + + externdef costab_fft + externdef sintab_fft + + segment_data + align 32 +D_1_41421 dd 1.41421356 +D_1_0 dd 1.0 +D_0_5 dd 0.5 +D_0_25 dd 0.25 +D_0_0005 dd 0.0005 +D_0_0 dd 0.0 + + segment_code + +;void fht(float *fz, int n); +proc fht_FPU + +%$fz arg 4 +%$n arg 4 + +%$k local 4 + +%$f0 local 4 +%$f1 local 4 +%$f2 local 4 +%$f3 local 4 + +%$g0 local 4 +%$g1 local 4 +%$g2 local 4 +%$g3 local 4 + +%$s1 local 4 +%$c1 local 4 +%$s2 local 4 +%$c2 local 4 + +%$t_s local 4 +%$t_c local 4 + alloc + + pushd ebp, ebx, esi, edi + +fht_FPU_1st_part: + +fht_FPU_2nd_part: + +fht_FPU_3rd_part: + +.do_init: + mov r3, 16 ;k1*fsize = 4*fsize = k4 + mov r4, 8 ;kx = k1/2 + mov r2, 48 ;k3*fsize + mov dword [sp(%$k)], 2 ;k = 2 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+8] ;gi = fi + kx + +.do: +.do2: + ;f + fld dword [r0] + fsub dword [r0+r3] + + fld dword [r0] + fadd dword [r0+r3] + + fld dword [r0+r3*2] + fsub dword [r0+r2] + + fld dword [r0+r3*2] + fadd dword [r0+r2] ;f2 f3 f0 f1 + + fld st2 ;f0 f2 f3 f0 f1 + fadd st0, st1 + fstp dword [r0] ;fi[0] + + fld st3 ;f1 f2 f3 f0 f1 + fadd st0, st2 + fstp dword [r0+r3] ;fi[k1] + + fsubr st0, st2 ;f0-f2 f3 f0 f1 + fstp dword [r0+r3*2] ;fi[k2] + + fsubr st0, st2 ;f1-f3 f0 f1 + fstp dword [r0+r2] ;fi[k3] + fcompp + + ;g + fld dword [r1] + fsub dword [r1+r3] + + fld dword [r1] + fadd dword [r1+r3] + + fld dword [D_1_41421] + fmul dword [r1+r2] + + fld dword [D_1_41421] + fmul dword [r1+r3*2] ;g2 g3 g0 g1 + + fld st2 ;g0 g2 g3 g0 g1 + fadd st0, st1 + fstp dword [r1] ;gi[0] + + fld st3 ;g1 g2 g3 g0 g1 + fadd st0, st2 + fstp dword [r1+r3] ;gi[k1] + + fsubr st0, st2 ;g0-g2 g3 g0 g1 + fstp dword [r1+r3*2] ;gi[k2] + + fsubr st0, st2 ;g1-g3 g0 g1 + fstp dword [r1+r2] ;gi[k3] + fcompp + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb .do2 + + + mov r0, [sp(%$k)] + fld dword [costab_fft +r0*4] + fstp dword [sp(%$t_c)] + fld dword [sintab_fft +r0*4] + fstp dword [sp(%$t_s)] + fld dword [D_1_0] + fstp dword [sp(%$c1)] + fld dword [D_0_0] + fstp dword [sp(%$s1)] + +.for_init: + mov r5, 4 ;i = 1*fsize + +.for: + fld dword [sp(%$c1)] + fmul dword [sp(%$t_c)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_s)] + fsubp st1, st0 ;c1 + + fld dword [sp(%$c1)] + fmul dword [sp(%$t_s)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_c)] + faddp st1, st0 ;s1 c1 + + fld st1 + fmul st0, st0 ;c1c1 s1 c1 + fld st1 + fmul st0, st0 ;s1s1 c1c1 s1 c1 + fsubp st1, st0 ;c2 s1 c1 + fstp dword [sp(%$c2)] ;s1 c1 + + fld st1 ;c1 s1 c1 + fmul st0, st1 ;c1s1 s1 c1 + fadd st0, st0 ;s2 s1 c1 + fstp dword [sp(%$s2)] ;s1 c1 + + fstp dword [sp(%$s1)] ;c1 + fstp dword [sp(%$c1)] ; + + mov r0, [sp(%$fz)] + add r0, r5 ;r0 = fi + mov r1, [sp(%$fz)] + add r1, r3 + sub r1, r5 ;r1 = gi + +.do3: + fld dword [sp(%$s2)] + fmul dword [r0+r3] + fld dword [sp(%$c2)] + fmul dword [r1+r3] + fsubp st1, st0 ;b = s2*fi[k1] - c2*gi[k1] + + fld dword [sp(%$c2)] + fmul dword [r0+r3] + fld dword [sp(%$s2)] + fmul dword [r1+r3] + faddp st1, st0 ;a = c2*fi[k1] + s2*gi[k1] b + + fld dword [r0] + fsub st0, st1 ;f1 a b + fstp dword [sp(%$f1)] ;a b + + fadd dword [r0] ;f0 b + fstp dword [sp(%$f0)] ;b + + fld dword [r1] + fsub st0, st1 ;g1 b + fstp dword [sp(%$g1)] ;b + + fadd dword [r1] ;g0 + fstp dword [sp(%$g0)] ; + + + fld dword [sp(%$s2)] + fmul dword [r0+r2] + fld dword [sp(%$c2)] + fmul dword [r1+r2] + fsubp st1, st0 ;b = s2*fi[k3] - c2*gi[k3] + + fld dword [sp(%$c2)] + fmul dword [r0+r2] + fld dword [sp(%$s2)] + fmul dword [r1+r2] + faddp st1, st0 ;a = c2*fi[k3] + s2*gi[k3] b + + fld dword [r0+r3*2] + fsub st0, st1 ;f3 a b + fstp dword [sp(%$f3)] ;a b + + fadd dword [r0+r3*2] ;f2 b + fstp dword [sp(%$f2)] ;b + + fld dword [r1+r3*2] + fsub st0, st1 ;g3 b + fstp dword [sp(%$g3)] ;b + + fadd dword [r1+r3*2] ;g2 + fstp dword [sp(%$g2)] ; + + + fld dword [sp(%$s1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$g3)] + fsubp st1, st0 ;b = s1*f2 - c1*g3 + + fld dword [sp(%$c1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$g3)] + faddp st1, st0 ;a = c1*f2 + s1*g3 b + + fld dword [sp(%$f0)] + fsub st0, st1 ;fi[k2] a b + fstp dword [r0+r3*2] + + fadd dword [sp(%$f0)] ;fi[0] b + fstp dword [r0] + + fld dword [sp(%$g1)] + fsub st0, st1 ;gi[k3] b + fstp dword [r1+r2] + + fadd dword [sp(%$g1)] ;gi[k1] + fstp dword [r1+r3] + + + fld dword [sp(%$c1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$f3)] + fsubp st1, st0 ;b = c1*g2 - s1*f3 + + fld dword [sp(%$s1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$f3)] + faddp st1, st0 ;a = s1*g2 + c1*f3 b + + fld dword [sp(%$g0)] + fsub st0, st1 ;gi[k2] a b + fstp dword [r1+r3*2] + + fadd dword [sp(%$g0)] ;gi[0] b + fstp dword [r1] + + fld dword [sp(%$f1)] + fsub st0, st1 ;fi[k3] b + fstp dword [r0+r2] + + fadd dword [sp(%$f1)] ;fi[k1] + fstp dword [r0+r3] + + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb near .do3 + + add r5, 4 + cmp r5, r4 + jb near .for + + cmp r3, [sp(%$n)] + jae .exit + + add dword [sp(%$k)], 2 ;k += 2; + lea r3, [r3*4] ;k1 *= 4 + lea r2, [r2*4] ;k3 *= 4 + lea r4, [r4*4] ;kx *= 4 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+r4] ;gi = fi + kx + jmp .do + +.exit: + popd ebp, ebx, esi, edi +endproc + +;************************************************************* + +;void fht_FPU_FXCH(float *fz, int n); +proc fht_FPU_FXCH + +%$fz arg 4 +%$n arg 4 + +%$k local 4 + +%$f0 local 4 +%$f1 local 4 +%$f2 local 4 +%$f3 local 4 + +%$g0 local 4 +%$g1 local 4 +%$g2 local 4 +%$g3 local 4 + +%$s1 local 4 +%$c1 local 4 +%$s2 local 4 +%$c2 local 4 + +%$t_s local 4 +%$t_c local 4 + alloc + + pushd ebp, ebx, esi, edi + +fht_FPU_FXCH_1st_part: + +fht_FPU_FXCH_2nd_part: + +fht_FPU_FXCH_3rd_part: + +.do_init: + mov r3, 16 ;k1*fsize = 4*fsize = k4 + mov r4, 8 ;kx = k1/2 + mov r2, 48 ;k3*fsize + mov dword [sp(%$k)], 2 ;k = 2 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+8] ;gi = fi + kx + +.do: +.do2: + ;f + fld dword [r0] + fsub dword [r0+r3] + fld dword [r0] + fadd dword [r0+r3] + + fld dword [r0+r3*2] + fsub dword [r0+r2] + fld dword [r0+r3*2] + fadd dword [r0+r2] ;f2 f3 f0 f1 + + fld st3 + fld st3 + fxch st5 + fadd st0, st3 + fxch st4 + fadd st0, st2 + fxch st3 + fsubp st1, st0 + fxch st1 + fsubp st4, st0 + fxch st2 + + fstp dword [r0+r3] ;fi[k1] + fstp dword [r0] ;fi[0] + fstp dword [r0+r2] ;fi[k3] + fstp dword [r0+r3*2] ;fi[k2] + + ;g + fld dword [r1] + fsub dword [r1+r3] + fld dword [r1] + fadd dword [r1+r3] + + fld dword [D_1_41421] + fmul dword [r1+r2] + fld dword [D_1_41421] + fmul dword [r1+r3*2] ;g2 g3 g0 g1 + + fld st3 + fld st3 + fxch st5 + fadd st0, st3 + fxch st4 + fadd st0, st2 + fxch st3 + fsubp st1, st0 + fxch st1 + fsubp st4, st0 + fxch st2 + + fstp dword [r1+r3] ;gi[k1] + fstp dword [r1] ;gi[0] + fstp dword [r1+r2] ;gi[k3] + fstp dword [r1+r3*2] ;gi[k2] + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb .do2 + + + mov r0, [sp(%$k)] + fld dword [costab_fft +r0*4] + fld dword [sintab_fft +r0*4] + fld dword [D_1_0] + fld dword [D_0_0] + fxch st3 + fstp dword [sp(%$t_c)] + fxch st1 + fstp dword [sp(%$t_s)] + fstp dword [sp(%$c1)] + fstp dword [sp(%$s1)] + +.for_init: + mov r5, 4 ;i = 1*fsize + +.for: + fld dword [sp(%$c1)] + fmul dword [sp(%$t_c)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_s)] + + fld dword [sp(%$c1)] + fmul dword [sp(%$t_s)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_c)] + fxch st2 + fsubp st3, st0 ;c1 + faddp st1, st0 ;s1 c1 + + fld st1 + fxch st2 + fmul st0, st0 ;c1c1 s1 c1 + fld st1 + fxch st2 + fmul st0, st0 ;s1s1 c1c1 s1 c1 + + fxch st3 + fst dword [sp(%$c1)] ;c1 + fxch st2 + fst dword [sp(%$s1)] ;s1 c1c1 c1 s1s1 + + fmulp st2, st0 + fsubrp st2, st0 + fadd st0, st0 ;s2 c2 + fxch st1 + fstp dword [sp(%$c2)] + fstp dword [sp(%$s2)] + + mov r0, [sp(%$fz)] + mov r1, [sp(%$fz)] + add r0, r5 ;r0 = fi + add r1, r3 + sub r1, r5 ;r1 = gi + +.do3: + fld dword [sp(%$s2)] + fmul dword [r0+r3] + fld dword [sp(%$c2)] + fmul dword [r1+r3] + + fld dword [sp(%$c2)] + fmul dword [r0+r3] + fld dword [sp(%$s2)] + fmul dword [r1+r3] + fxch st2 + fsubp st3, st0 ;b = s2*fi[k1] - c2*gi[k1] + faddp st1, st0 ;a = c2*fi[k1] + s2*gi[k1] b + + fld dword [r1] + fsub st0, st2 ;g1 a b + fxch st2 + fadd dword [r1] ;g0 a g1 + + fld dword [r0] + fsub st0, st2 ;f1 g0 a g1 + fxch st2 + fadd dword [r0] ;f0 g0 f1 g1 + + fxch st3 + fstp dword [sp(%$g1)] + fstp dword [sp(%$g0)] + fstp dword [sp(%$f1)] + fstp dword [sp(%$f0)] + + + fld dword [sp(%$s2)] + fmul dword [r0+r2] + fld dword [sp(%$c2)] + fmul dword [r1+r2] + + fld dword [sp(%$c2)] + fmul dword [r0+r2] + fld dword [sp(%$s2)] + fmul dword [r1+r2] + fxch st2 + fsubp st3, st0 ;b = s2*fi[k3] - c2*gi[k3] + faddp st1, st0 ;a = c2*fi[k3] + s2*gi[k3] b + + + fld dword [r1+r3*2] + fsub st0, st2 ;g3 a b + fxch st2 + fadd dword [r1+r3*2] ;g2 a g3 + + fld dword [r0+r3*2] + fsub st0, st2 ;f3 g2 a g3 + fxch st2 + fadd dword [r0+r3*2] ;f2 g2 f3 g3 + + fxch st3 + fstp dword [sp(%$g3)] + fstp dword [sp(%$g2)] + fstp dword [sp(%$f3)] + fstp dword [sp(%$f2)] + + + fld dword [sp(%$s1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$g3)] + + fld dword [sp(%$c1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$g3)] + fxch st2 + fsubp st3, st0 ;b = s1*f2 - c1*g3 + faddp st1, st0 ;a = c1*f2 + s1*g3 b + + fld dword [sp(%$g1)] + fsub st0, st2 ;gi[k3] a b + fxch st2 + fadd dword [sp(%$g1)] ;gi[k1] a gi[k3] + + fld dword [sp(%$f0)] + fsub st0, st2 ;fi[k2] gi[k1] a gi[k3] + fxch st2 + fadd dword [sp(%$f0)] ;fi[0] gi[k1] fi[k2] gi[k3] + + fxch st3 + fstp dword [r1+r2] + fstp dword [r1+r3] + fstp dword [r0+r3*2] + fstp dword [r0] + + + fld dword [sp(%$c1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$f3)] + + fld dword [sp(%$s1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$f3)] + fxch st2 + fsubp st3, st0 ;b = c1*g2 - s1*f3 + faddp st1, st0 ;a = s1*g2 + c1*f3 b + + fld dword [sp(%$f1)] + fsub st0, st2 ;fi[k3] a b + fxch st2 + fadd dword [sp(%$f1)] ;fi[k1] a fi[k3] + + fld dword [sp(%$g0)] + fsub st0, st2 ;gi[k2] fi[k1] a fi[k3] + fxch st2 + fadd dword [sp(%$g0)] ;gi[0] fi[k1] gi[k2] fi[k3] + + fxch st3 + fstp dword [r0+r2] + fstp dword [r0+r3] + fstp dword [r1+r3*2] + fstp dword [r1] + + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb near .do3 + + add r5, 4 + cmp r5, r4 + jb near .for + + cmp r3, [sp(%$n)] + jae .exit + + add dword [sp(%$k)], 2 ;k += 2; + lea r3, [r3*4] ;k1 *= 4 + lea r2, [r2*4] ;k3 *= 4 + lea r4, [r4*4] ;kx *= 4 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+r4] ;gi = fi + kx + jmp .do + +.exit: + popd ebp, ebx, esi, edi +endproc + + end diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/fftsse.nas.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/fftsse.nas.svn-base new file mode 100644 index 0000000..02ed14c --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/fftsse.nas.svn-base @@ -0,0 +1,538 @@ +; back port from GOGO-no coda 2.24b by Takehiro TOMINAGA + +; GOGO-no-coda +; Copyright (C) 1999 shigeo +; special thanks to Keiichi SAKAI + +%include "nasm.h" + + globaldef fht_SSE + globaldef fft_side_SSE + externdef costab_fft + externdef sintab_fft + + segment_data + align 16 +Q_MMPP dd 0x0,0x0,0x80000000,0x80000000 +Q_MPMP dd 0x0,0x80000000,0x0,0x80000000 +Q_002 dd 0.02236068, 0.02236068, 0.02236068, 0.02236068 +D_SQRT2 dd 1.414213562,1.414213562 +S_025 dd 0.25 +S_05 DD 0.5 +S_00005 DD 0.0005 + + segment_code +;------------------------------------------------------------------------ +; by K. SAKAI +; 99/08/18 PIII 23k[clk] +; 99/08/19 ̿�������촹�� PIII 22k[clk] +; 99/08/20 bit reversal ����夫��ܿ����� PIII 17k[clk] +; 99/08/23 ���� unroll PIII 14k[clk] +; 99/11/12 clean up +; +;void fht_SSE(float *fz, int n); + align 16 +fht_SSE: + push ebx + push esi + push edi + push ebp +%assign _P 4*4 + + ;2���ܤΥ롼�� + mov eax,[esp+_P+4] ;eax=fz + mov ebp,[esp+_P+8] ;=n + shl ebp,2 + add ebp,eax ; fn = fz + n, ���δؿ���λ�ޤ����� + + xor ecx,ecx ; ecx=k=0 + xor eax,eax + mov al,4 ; =k1=1*(sizeof float) // 4, 16, 64, 256,... + xor edx,edx + mov dl,12 ; =k3=3*k1 + jmp short .lp2 + + align 16 +.lp2: ; do{ + add cl,2 ; k += 2; + shl eax,2 + shl edx,2 + + mov esi,[esp+_P+4] ;esi=fi=fz + mov edi,eax + shr edi,1 + add edi,esi ; edi=gi=fi+ki/2 + +; ��������2���󤷤����ԤǤ��ʤ���ʬ��FPU�Τۤ���®���� + movss xmm7,[D_SQRT2] + jmp short .lp20 + + align 16 +.lp20: ; do{ +; f0 = fi[0 ] + fi[k1]; +; f2 = fi[k2] + fi[k3]; +; f1 = fi[0 ] - fi[k1]; +; f3 = fi[k2] - fi[k3]; +; fi[0 ] = f0 + f2; +; fi[k1] = f1 + f3; +; fi[k2] = f0 - f2; +; fi[k3] = f1 - f3; + fld dword [esi] + fadd dword [esi+eax] + fld dword [esi+eax*2] + fadd dword [esi+edx] + + fld dword [esi] + fsub dword [esi+eax] + fld dword [esi+eax*2] + fsub dword [esi+edx] + + fld st1 + fadd st0,st1 + fstp dword [esi+eax] + fsubp st1,st0 + fstp dword [esi+edx] + + fld st1 + fadd st0,st1 + fstp dword [esi] + fsubp st1,st0 + fstp dword [esi+eax*2] + + lea esi,[esi + eax*4] ; = fi += (k1 * 4); +; add esi,eax +; add esi,edx +; g0 = gi[0 ] + gi[k1]; +; g2 = SQRT2 * gi[k2]; +; g1 = gi[0 ] - gi[k1]; +; g3 = SQRT2 * gi[k3]; +; gi[0 ] = g0 + g2; +; gi[k2] = g0 - g2; +; gi[k1] = g1 + g3; +; gi[k3] = g1 - g3; + fld dword [edi] + fadd dword [edi+eax] + fld dword [D_SQRT2] + fmul dword [edi+eax*2] + + fld dword [edi] + fsub dword [edi+eax] + fld dword [D_SQRT2] + fmul dword [edi+edx] + + fld st1 + fadd st0,st1 + fstp dword [edi+eax] + fsubp st1,st0 + fstp dword [edi+edx] + + fld st1 + fadd st0,st1 + fstp dword [edi] + fsubp st1,st0 + fstp dword [edi+eax*2] + + lea edi,[edi + eax*4] ; = gi += (k1 * 4); + cmp esi,ebp + jl near .lp20 ; while (fi<fn); + +; i = 1; //for (i=1;i<kx;i++){ +; c1 = 1.0*t_c - 0.0*t_s; +; s1 = 0.0*t_c + 1.0*t_s; + movss xmm6,[costab_fft + ecx*4] + movss xmm1,[sintab_fft + ecx*4] + shufps xmm6,xmm1,0x00 ; = {s1, s1, c1, c1} + shufps xmm6,xmm6,0x28 ; = {+c1, +s1, +s1, +c1} +; c2 = c1*c1 - s1*s1; +; s2 = c1*s1 + s1*c1; + movaps xmm4,xmm6 + movaps xmm7,xmm6 + unpcklps xmm4,xmm4 ; = {s1, s1, c1, c1} + shufps xmm7,xmm7,0x41 + mulps xmm4,xmm6 ; = {s1*c1, s1*s1, c1*s1, c1*c1} + xorps xmm7,[Q_MMPP] ; = {-s1, -c1, +c1, +s1} + movhlps xmm3,xmm4 + xorps xmm3,[Q_MPMP] + subps xmm4,xmm3 ; = {--, --, s2, c2} + movlhps xmm4,xmm4 ; = {+s2, +c2, +s2, +c2} + movaps xmm5,xmm4 + shufps xmm5,xmm5,0x11 + xorps xmm5,[Q_MPMP] ; = {-c2, +s2, -c2, +s2} + mov esi,[esp+_P+4] ; = fz + lea edi,[esi + eax - 4] ; edi = gi = fz +k1-i + add esi,4 ; esi = fi = fz + i + jmp short .lp21 + + align 16 +.lp21: ; do{ +; a = c2*fi[k1] + s2*gi[k1]; +; b = s2*fi[k1] - c2*gi[k1]; +; c = c2*fi[k3] + s2*gi[k3]; +; d = s2*fi[k3] - c2*gi[k3]; +; f0 = fi[0 ] + a; +; g0 = gi[0 ] + b; +; f2 = fi[k1 * 2] + c; +; g2 = gi[k1 * 2] + d; +; f1 = fi[0 ] - a; +; g1 = gi[0 ] - b; +; f3 = fi[k1 * 2] - c; +; g3 = gi[k1 * 2] - d; + + movss xmm0,[esi + eax] ; = fi[k1] + movss xmm2,[esi + edx] ; = fi[k3] + shufps xmm0,xmm2,0x00 ; = {fi[k3], fi[k3], fi[k1], fi[k1]} + movss xmm1,[edi + eax] ; = fi[k1] + movss xmm3,[edi + edx] ; = fi[k3] + shufps xmm1,xmm3,0x00 ; = {gi[k3], gi[k3], gi[k1], gi[k1]} + movss xmm2,[esi] ; = fi[0] + mulps xmm0,xmm4 ; *= {+s2, +c2, +s2, +c2} + movss xmm3,[esi + eax*2] ; = fi[k2] + unpcklps xmm2,xmm3 ; = {--, --, fi[k2], fi[0]} + mulps xmm1,xmm5 ; *= {-c2, +s2, -c2, +s2} + movss xmm3,[edi + eax*2] ; = gi[k2] + addps xmm0,xmm1 ; = {d, c, b, a} + movss xmm1,[edi] ; = gi[0] + unpcklps xmm1,xmm3 ; = {--, --, gi[k2], gi[0]} + unpcklps xmm2,xmm1 ; = {gi[k2], fi[k2], gi[0], fi[0]} + movaps xmm1,xmm2 + addps xmm1,xmm0 ; = {g2, f2, g0, f0} + subps xmm2,xmm0 ; = {g3, f3, g1, f1} + +; a = c1*f2 + s1*g3; +; c = s1*g2 + c1*f3; +; b = s1*f2 - c1*g3; +; d = c1*g2 - s1*f3; +; fi[0 ] = f0 + a; +; gi[0 ] = g0 + c; +; gi[k1] = g1 + b; +; fi[k1] = f1 + d; +; fi[k1 * 2] = f0 - a; +; gi[k1 * 2] = g0 - c; +; gi[k3] = g1 - b; +; fi[k3] = f1 - d; + movaps xmm3,xmm1 + movhlps xmm1,xmm1 ; = {g2, f2, g2, f2} + shufps xmm3,xmm2,0x14 ; = {f1, g1, g0, f0} + mulps xmm1,xmm6 ; *= {+c1, +s1, +s1, +c1} + shufps xmm2,xmm2,0xBB ; = {f3, g3, f3, g3} + mulps xmm2,xmm7 ; *= {-s1, -c1, +c1, +s1} + addps xmm1,xmm2 ; = {d, b, c, a} + movaps xmm2,xmm3 + addps xmm3,xmm1 ; = {fi[k1], gi[k1], gi[0], fi[0]} + subps xmm2,xmm1 ; = {fi[k3], gi[k3], gi[k1*2], fi[k1*2]} + movhlps xmm0,xmm3 + movss [esi],xmm3 + shufps xmm3,xmm3,0x55 + movss [edi+eax],xmm0 + shufps xmm0,xmm0,0x55 + movss [edi],xmm3 + movss [esi+eax],xmm0 + movhlps xmm0,xmm2 + movss [esi+eax*2],xmm2 + shufps xmm2,xmm2,0x55 + movss [edi+edx],xmm0 + shufps xmm0,xmm0,0x55 + movss [edi+eax*2],xmm2 + lea edi,[edi + eax*4] ; gi += (k1 * 4); + movss [esi+edx],xmm0 + lea esi,[esi + eax*4] ; fi += (k1 * 4); + cmp esi,ebp + jl near .lp21 ; while (fi<fn); +; unroll����do loop��43+4̿�� + +; ������ǤϤʤ�for�롼�פ�unrolling���� +; kx= 2, 8, 32, 128 +; k4= 16, 64, 256, 1024 +; 0, 6/2,30/2,126/2 +; at here +; xmm6 = {--, --, s1, c1} +; c3 = c1; s3 = s1; + xor ebx,ebx + mov bl,4*4 ; = i = 4 + cmp ebx,eax ; i < k1 + jnl near .F22 + + shufps xmm6,xmm6,0x14 ; = {c1, s1, s1, c1} + jmp short .F220 + + align 16 +; for (i=4;i<k1;i+=4){ // for (i=2;i<k1/2;i+=2){ +.lp22: + shufps xmm6,xmm6,0x69 ; xmm6 = {c3, s3, s3, c3} +.F220: +; at here, xmm6 is {c3, s3, s3, c3} +; c1 = c3*t_c - s3*t_s; +; s1 = c3*t_s + s3*t_c; + movss xmm0,[costab_fft + ecx*4] + movss xmm1,[sintab_fft + ecx*4] + shufps xmm0,xmm1,0x00 ; = {t_s, t_s, t_c, t_c} + mulps xmm6,xmm0 + movhlps xmm4,xmm6 + xorps xmm4,[Q_MPMP] + subps xmm6,xmm4 ; = {--, --, s1, c1} + +; c3 = c1*t_c - s1*t_s; +; s3 = s1*t_c + c1*t_s; + shufps xmm6,xmm6,0x14 ; = {c1, s1, s1, c1} + mulps xmm0,xmm6 + movhlps xmm3,xmm0 + xorps xmm3,[Q_MPMP] + subps xmm0,xmm3 ; = {--, --, s3, c3} + + unpcklps xmm6,xmm0 ; xmm6 = {s3, s1, c3, c1} + shufps xmm6,xmm6,0xB4 ; xmm6 = {s1, s3, c3, c1} + +; c2 = c1*c1 - s1*s1; +; c4 = c3*c3 - s3*s3; +; s4 = s3*c3 + s3*c3; +; s2 = s1*c1 + s1*c1; + movaps xmm7,xmm6 + movaps xmm4,xmm6 + shufps xmm7,xmm7,0x14 + shufps xmm4,xmm4,0xEB + xorps xmm4,[Q_MMPP] ; = {-c3,-c1, s3, s1} + mulps xmm7,xmm6 + mulps xmm4,xmm6 + shufps xmm4,xmm4,0x1B + addps xmm7,xmm4 ; xmm7 = {s2, s4, c4, c2} + +; fi = fz +i; +; gi = fz +k1-i; + mov edi,[esp+_P+4] ; = fz + mov esi,ebx + shr esi,1 + sub edi,esi ; edi = fz - i/2 + lea esi,[edi + ebx] ; esi = fi = fz +i/2 + add edi,eax ; edi = gi = fz +k1-i/2 + sub edi,4 +; do{ +.lp220: +; unroll���do loop��51+4̿�� +; a = c2*fi[k1 ] + s2*gi[k1 ]; +; e = c4*fi[k1+1] + s4*gi[k1-1]; +; f = s4*fi[k1+1] - c4*gi[k1-1]; +; b = s2*fi[k1 ] - c2*gi[k1 ]; +; c = c2*fi[k3 ] + s2*gi[k3 ]; +; g = c4*fi[k3+1] + s4*gi[k3-1]; +; h = s4*fi[k3+1] - c4*gi[k3-1]; +; d = s2*fi[k3 ] - c2*gi[k3 ]; + + movaps xmm4,xmm7 ; xmm7 = {s2, s4, c4, c2} + shufps xmm4,xmm4,0x1B + xorps xmm4,[Q_MMPP] + movlps xmm0,[esi+eax] + movlps xmm1,[edi+eax] + movlps xmm2,[esi+edx] + movlps xmm3,[edi+edx] + shufps xmm0,xmm0,0x14 + shufps xmm1,xmm1,0x41 + shufps xmm2,xmm2,0x14 + shufps xmm3,xmm3,0x41 + mulps xmm0,xmm7 + mulps xmm1,xmm4 + mulps xmm2,xmm7 + mulps xmm3,xmm4 + addps xmm0,xmm1 ; xmm0 = {b, f, e, a} + addps xmm2,xmm3 ; xmm2 = {d, h, g, c} +;17 + +; f0 = fi[0 ] + a; +; f4 = fi[0 +1] + e; +; g4 = gi[0 -1] + f; +; g0 = gi[0 ] + b; +; f1 = fi[0 ] - a; +; f5 = fi[0 +1] - e; +; g5 = gi[0 -1] - f; +; g1 = gi[0 ] - b; +; f2 = fi[k2 ] + c; +; f6 = fi[k2+1] + g; +; g6 = gi[k2-1] + h; +; g2 = gi[k2 ] + d; +; f3 = fi[k2 ] - c; +; f7 = fi[k2+1] - g; +; g7 = gi[k2-1] - h; +; g3 = gi[k2 ] - d; + movlps xmm4,[esi ] + movhps xmm4,[edi ] + movaps xmm1,xmm4 + subps xmm1,xmm0 ; xmm1 = {g1, g5, f5, f1} + movlps xmm5,[esi+eax*2] + movhps xmm5,[edi+eax*2] + movaps xmm3,xmm5 + subps xmm3,xmm2 ; xmm3 = {g3, g7, f7, f3} + addps xmm0,xmm4 ; xmm0 = {g0, g4, f4, f0} + addps xmm2,xmm5 ; xmm2 = {g2, g6, f6, f2} +;10 + +; a = c1*f2 + s1*g3; ��*�� + ��*�� +; e = c3*f6 + s3*g7; +; g = s3*g6 + c3*f7; +; c = s1*g2 + c1*f3; +; d = c1*g2 - s1*f3; ��*�� - ��*�� +; h = c3*g6 - s3*f7; +; f = s3*f6 - c3*g7; +; b = s1*f2 - c1*g3; + + movaps xmm5,xmm6 ; xmm6 = {s1, s3, c3, c1} + shufps xmm5,xmm5,0x1B ; = {c1, c3, s3, s1} + movaps xmm4,xmm2 + mulps xmm4,xmm6 + shufps xmm2,xmm2,0x1B ; xmm2 = {f2, f6, g6, g2} + mulps xmm2,xmm6 + mulps xmm5,xmm3 + mulps xmm3,xmm6 + shufps xmm3,xmm3,0x1B + addps xmm4,xmm3 ; = {c, g, e, a} + subps xmm2,xmm5 ; = {b, f, h, d} +;10 + +; fi[0 ] = f0 + a; +; fi[0 +1] = f4 + e; +; gi[0 -1] = g4 + g; +; gi[0 ] = g0 + c; +; fi[k2 ] = f0 - a; +; fi[k2+1] = f4 - e; +; gi[k2-1] = g4 - g; +; gi[k2 ] = g0 - c; +; fi[k1 ] = f1 + d; +; fi[k1+1] = f5 + h; +; gi[k1-1] = g5 + f; +; gi[k1 ] = g1 + b; +; fi[k3 ] = f1 - d; +; fi[k3+1] = f5 - h; +; gi[k3-1] = g5 - f; +; gi[k3 ] = g1 - b; + movaps xmm3,xmm0 + subps xmm0,xmm4 + movlps [esi+eax*2],xmm0 + movhps [edi+eax*2],xmm0 + addps xmm4,xmm3 + movlps [esi ],xmm4 + movhps [edi ],xmm4 + + movaps xmm5,xmm1 + subps xmm1,xmm2 + movlps [esi+edx ],xmm1 + movhps [edi+edx ],xmm1 + addps xmm2,xmm5 + movlps [esi+eax ],xmm2 + movhps [edi+eax ],xmm2 +; 14 +; gi += k4; +; fi += k4; + lea edi,[edi + eax*4] ; gi += (k1 * 4); + lea esi,[esi + eax*4] ; fi += (k1 * 4); + cmp esi,ebp + jl near .lp220 ; while (fi<fn); +; } while (fi<fn); + + add ebx,4*4 ; i+= 4 + cmp ebx,eax ; i < k1 + jl near .lp22 +; } +.F22: + + cmp eax,[esp+_P+8] ; while ((k1 * 4)<n); + jl near .lp2 + + pop ebp + pop edi + pop esi + pop ebx + ret + +;------------------------------------------------------------------------ +; 99/11/12 Initial version for SSE by K. SAKAI, 4300clk@P3 +; This routine is very slow when wsamp_r_int is not aligned to 16byte boundary. +; +;void fft_side_SSE( float in[2][1024], int s, float *ret) +; energy = (in[0][512] - in[1][512])^2; +; energy = (in[0][1024-s] - in[1][1024-s])^2; +; for (i=s,j=1024-s;i<512;i++,j--){ +; a = in[0][i] - in[1][i]; +; energy += a*a; +; b = in[0][j-1] - in[1][j-1]; +; energy += b*b; +; } +; *ret = energy * 0.25; + + align 16 +fft_side_SSE: + mov ecx,[esp+8] ; = i = s + mov edx,1024 + sub edx,ecx ; = j + mov eax,[esp+4] ; = in + movss xmm7,[eax+1024*0*4+512*4] + movss xmm1,[eax+1024*1*4+512*4] + subss xmm7,xmm1 + mulss xmm7,xmm7 + movss xmm2,[eax+1024*0*4+edx*4] + movss xmm3,[eax+1024*1*4+edx*4] + subss xmm2,xmm3 + mulss xmm2,xmm2 + addss xmm7,xmm2 + + test cl,1 + jz .even + +.odd: dec edx + movss xmm0,[eax+1024*0*4+ecx*4] + movss xmm1,[eax+1024*1*4+ecx*4] + inc ecx + movss xmm2,[eax+1024*0*4+edx*4] + movss xmm3,[eax+1024*1*4+edx*4] + cmp ecx,edx + subss xmm0,xmm1 + subss xmm2,xmm3 + mulss xmm0,xmm0 + mulss xmm2,xmm2 + addss xmm7,xmm0 + addss xmm7,xmm2 + je near .exit1 + +.even: test cl,2 + jz .f0 + sub edx,2 + movlps xmm0,[eax+1024*0*4+ecx*4] + movlps xmm1,[eax+1024*1*4+ecx*4] + add ecx,2 + movhps xmm0,[eax+1024*0*4+edx*4] + movhps xmm1,[eax+1024*1*4+edx*4] + cmp ecx,edx + subps xmm0,xmm1 + mulps xmm0,xmm0 + addps xmm7,xmm0 + je .exit4 + jmp short .f0 + + align 16 +.f0: +.lp0: + sub edx,4 + movaps xmm0,[eax+1024*0*4+ecx*4] + movaps xmm1,[eax+1024*1*4+ecx*4] + add ecx,4 + subps xmm0,xmm1 + mulps xmm0,xmm0 + addps xmm7,xmm0 + movaps xmm2,[eax+1024*0*4+edx*4] + movaps xmm3,[eax+1024*1*4+edx*4] + cmp ecx,edx + subps xmm2,xmm3 + mulps xmm2,xmm2 + addps xmm7,xmm2 + jne .lp0 + +.exit4: movhlps xmm6,xmm7 + addps xmm7,xmm6 + movaps xmm6,xmm7 + shufps xmm6,xmm6,01010101B + addss xmm7,xmm6 + +.exit1: mulss xmm7,[S_025] + mov eax,[esp+12] + movss [eax],xmm7 + ret + + + end diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/ffttbl.nas.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/ffttbl.nas.svn-base new file mode 100644 index 0000000..14dd9ae --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/ffttbl.nas.svn-base @@ -0,0 +1,78 @@ + +; for new GOGO-no-coda (1999/09) +; Copyright (C) 1999 shigeo +; special thanks to URURI, Keiichi SAKAI + + +; fft sin,cos,gray�ơ��֥� +; 99/08/21 +; 99/09/01(�����)���ӥå�ȿž�ơ��֥��� +; 99/09/14 ���쥤�����ɥ���ǥå���ɽ�����Х벽 + +%include "nasm.h" + + globaldef costab_fft + globaldef sintab_fft + globaldef gray_index + + segment_data + align 16 + +costab_fft: + dd 0.000000000000 + dd 0.707106781187 + dd 0.923879532511 + dd 0.980785280403 + dd 0.995184726672 + dd 0.998795456205 + dd 0.999698818696 + dd 0.999924701839 + dd 0.999981175283 + dd 0.999995293810 + dd 0.999998823452 + dd 0.999999705863 + dd 0.999999926466 + dd 0.999999981616 + dd 0.999999995404 + dd 0.999999998851 + +sintab_fft: + dd 1.000000000000 + dd 0.707106781187 + dd 0.382683432365 + dd 0.195090322016 + dd 0.098017140330 + dd 0.049067674327 + dd 0.024541228523 + dd 0.012271538286 + dd 0.006135884649 + dd 0.003067956763 + dd 0.001533980186 + dd 0.000766990319 + dd 0.000383495188 + dd 0.000191747597 + dd 0.000095873799 + dd 0.000047936900 + + align 16 +gray_index: + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 8 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 9 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 8 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 10 + + segment_code + + end diff --git a/lame-3.97/libmp3lame/i386/.svn/text-base/nasm.h.svn-base b/lame-3.97/libmp3lame/i386/.svn/text-base/nasm.h.svn-base new file mode 100644 index 0000000..b4e6451 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/.svn/text-base/nasm.h.svn-base @@ -0,0 +1,178 @@ + +; Copyright (C) 1999 URURI + +; nasm�ѥޥ��� +; 1999/08/21 ���� +; 1999/10/10 ���Ĥ��ɲ� +; 1999/10/27 aout�б� +; 1999/11/07 pushf, popf ��NASM�ΥХ��б� +; 1999/12/02 for BCC ( Thanks to Miquel ) + +; for Windows Visual C++ -> define WIN32 +; Borland or cygwin -> WIN32 and COFF +; for FreeBSD 2.x -> AOUT +; for TownsOS -> __tos__ +; otherwise -> none + +;̾�����դ��� + +BITS 32 + +%ifdef WIN32 + %define _NAMING + %define segment_code segment .text align=16 class=CODE use32 + %define segment_data segment .data align=16 class=DATA use32 +%ifdef __BORLANDC__ + %define segment_bss segment .data align=16 class=DATA use32 +%else + %define segment_bss segment .bss align=16 class=DATA use32 +%endif +%elifdef AOUT + %define _NAMING + %define segment_code segment .text + %define segment_data segment .data + %define segment_bss segment .bss +%else + %define segment_code segment .text align=16 class=CODE use32 + %define segment_data segment .data align=16 class=DATA use32 + %define segment_bss segment .bss align=16 class=DATA use32 +%endif + +%ifdef __tos__ +group CGROUP text +group DGROUP data +%endif + +;ñ������ư���������� + +%idefine float dword +%idefine fsize 4 +%idefine fsizen(a) (fsize*(a)) + +;��ɷ��� + +%idefine wsize 2 +%idefine wsizen(a) (wsize*(a)) +%idefine dwsize 4 +%idefine dwsizen(a) (dwsize*(a)) + +;REG + +%define r0 eax +%define r1 ebx +%define r2 ecx +%define r3 edx +%define r4 esi +%define r5 edi +%define r6 ebp +%define r7 esp + +;MMX,3DNow!,SSE + +%define pmov movq +%define pmovd movd + +%define pupldq punpckldq +%define puphdq punpckhdq +%define puplwd punpcklwd +%define puphwd punpckhwd + +%define xm0 xmm0 +%define xm1 xmm1 +%define xm2 xmm2 +%define xm3 xmm3 +%define xm4 xmm4 +%define xm5 xmm5 +%define xm6 xmm6 +%define xm7 xmm7 + +;����åե��Ѥ�4�ʥޥ��� + +%define R4(a,b,c,d) (a*64+b*16+c*4+d) + +;C�饤���ʴʰץޥ��� + +%imacro globaldef 1 + %ifdef _NAMING + %define %1 _%1 + %endif + global %1 +%endmacro + +%imacro externdef 1 + %ifdef _NAMING + %define %1 _%1 + %endif + extern %1 +%endmacro + +%imacro proc 1 + %push proc + %ifdef _NAMING + global _%1 + %else + global %1 + %endif + + align 32 +%1: +_%1: + + %assign %$STACK 0 + %assign %$STACKN 0 + %assign %$ARG 4 +%endmacro + +%imacro endproc 0 + %ifnctx proc + %error expected 'proc' before 'endproc'. + %else + %if %$STACK > 0 + add esp, %$STACK + %endif + + %if %$STACK <> (-%$STACKN) + %error STACKLEVEL mismatch check 'local', 'alloc', 'pushd', 'popd' + %endif + + ret + %pop + %endif +%endmacro + +%idefine sp(a) esp+%$STACK+a + +%imacro arg 1 + %00 equ %$ARG + %assign %$ARG %$ARG+%1 +%endmacro + +%imacro local 1 + %assign %$STACKN %$STACKN-%1 + %00 equ %$STACKN +%endmacro + +%imacro alloc 0 + sub esp, (-%$STACKN)-%$STACK + %assign %$STACK (-%$STACKN) +%endmacro + +%imacro pushd 1-* + %rep %0 + push %1 + %assign %$STACK %$STACK+4 + %rotate 1 + %endrep +%endmacro + +%imacro popd 1-* + %rep %0 + %rotate -1 + pop %1 + %assign %$STACK %$STACK-4 + %endrep +%endmacro + +; bug of NASM-0.98 +%define pushf db 0x66, 0x9C +%define popf db 0x66, 0x9D diff --git a/lame-3.97/libmp3lame/i386/Makefile.am b/lame-3.97/libmp3lame/i386/Makefile.am new file mode 100644 index 0000000..11df178 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/Makefile.am @@ -0,0 +1,67 @@ +## $Id: Makefile.am,v 1.18 2003/11/29 12:03:21 aleidinger Exp $ + +AUTOMAKE_OPTIONS = foreign $(top_srcdir)/ansi2knr + +DEFS = @DEFS@ @CONFIG_DEFS@ + +nasm_sources = \ + choose_table.nas \ + cpu_feat.nas \ + fft3dn.nas + +if HAVE_NASM +noinst_LTLIBRARIES = liblameasmroutines.la +liblameasmroutines_la_SOURCES = $(nasm_sources) +am_liblameasmroutines_la_OBJECTS = \ + choose_table$U.lo \ + cpu_feat$U.lo \ + fft3dn$U.lo +endif + +noinst_HEADERS = nasm.h + +INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame/@CPUTYPE@ + +SUFFIXES = .nas .lo + +EXTRA_liblameasmroutines_la_SOURCES = $(nasm_sources) + +CLEANFILES = \ + choose_table.o.lst \ + choose_table.lo.lst \ + cpu_feat.o.lst \ + cpu_feat.lo.lst \ + fft3dn.o.lst \ + fft3dn.lo.lst + +EXTRA_DIST = \ + fft.nas \ + fftfpu.nas \ + fftsse.nas \ + ffttbl.nas + +NASM = @NASM@ +NASMFLAGS=@NASM_FORMAT@ -i $(top_srcdir)/libmp3lame/@CPUTYPE@/ + +.nas.o: $< nasm.h + $(NASM) $(NASMFLAGS) $< -o $@ -l $@.lst + +.nas.lo: $< nasm.h + test -d .libs || mkdir .libs + $(ECHO) '# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)' >$@ + $(ECHO) "pic_object='.libs/$*.o'" >>$@ + $(ECHO) "non_pic_object='$*.o'" >>$@ + $(NASM) $(NASMFLAGS) $< -o .libs/$*.o -l $@.lst + +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ + + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/lame-3.97/libmp3lame/i386/Makefile.in b/lame-3.97/libmp3lame/i386/Makefile.in new file mode 100644 index 0000000..2f6eec4 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/Makefile.in @@ -0,0 +1,483 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +subdir = libmp3lame/i386 +DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +liblameasmroutines_la_LIBADD = +am__liblameasmroutines_la_SOURCES_DIST = choose_table.nas cpu_feat.nas \ + fft3dn.nas +am__objects_1 = choose_table.lo cpu_feat.lo fft3dn.lo +liblameasmroutines_la_OBJECTS = $(am_liblameasmroutines_la_OBJECTS) +@HAVE_NASM_TRUE@am_liblameasmroutines_la_rpath = +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +SOURCES = $(liblameasmroutines_la_SOURCES) \ + $(EXTRA_liblameasmroutines_la_SOURCES) +DIST_SOURCES = $(am__liblameasmroutines_la_SOURCES_DIST) \ + $(EXTRA_liblameasmroutines_la_SOURCES) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame/@CPUTYPE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = foreign $(top_srcdir)/ansi2knr +nasm_sources = \ + choose_table.nas \ + cpu_feat.nas \ + fft3dn.nas + +@HAVE_NASM_TRUE@noinst_LTLIBRARIES = liblameasmroutines.la +@HAVE_NASM_TRUE@liblameasmroutines_la_SOURCES = $(nasm_sources) +@HAVE_NASM_TRUE@am_liblameasmroutines_la_OBJECTS = \ +@HAVE_NASM_TRUE@ choose_table$U.lo \ +@HAVE_NASM_TRUE@ cpu_feat$U.lo \ +@HAVE_NASM_TRUE@ fft3dn$U.lo + +noinst_HEADERS = nasm.h +SUFFIXES = .nas .lo +EXTRA_liblameasmroutines_la_SOURCES = $(nasm_sources) +CLEANFILES = \ + choose_table.o.lst \ + choose_table.lo.lst \ + cpu_feat.o.lst \ + cpu_feat.lo.lst \ + fft3dn.o.lst \ + fft3dn.lo.lst + +EXTRA_DIST = \ + fft.nas \ + fftfpu.nas \ + fftsse.nas \ + ffttbl.nas + +NASMFLAGS = @NASM_FORMAT@ -i $(top_srcdir)/libmp3lame/@CPUTYPE@/ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ + +all: all-am + +.SUFFIXES: +.SUFFIXES: .nas .lo .o +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmp3lame/i386/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign libmp3lame/i386/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +liblameasmroutines.la: $(liblameasmroutines_la_OBJECTS) $(liblameasmroutines_la_DEPENDENCIES) + $(LINK) $(am_liblameasmroutines_la_rpath) $(liblameasmroutines_la_LDFLAGS) $(liblameasmroutines_la_OBJECTS) $(liblameasmroutines_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + + +.nas.o: $< nasm.h + $(NASM) $(NASMFLAGS) $< -o $@ -l $@.lst + +.nas.lo: $< nasm.h + test -d .libs || mkdir .libs + $(ECHO) '# Generated by ltmain.sh - GNU libtool 1.5 (1.1220 2003/04/05 19:32:58)' >$@ + $(ECHO) "pic_object='.libs/$*.o'" >>$@ + $(ECHO) "non_pic_object='$*.o'" >>$@ + $(NASM) $(NASMFLAGS) $< -o .libs/$*.o -l $@.lst + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/libmp3lame/i386/choose_table.nas b/lame-3.97/libmp3lame/i386/choose_table.nas new file mode 100644 index 0000000..816d194 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/choose_table.nas @@ -0,0 +1,433 @@ +; new count bit routine +; part of this code is origined from +; new GOGO-no-coda (1999, 2000) +; Copyright (C) 1999 shigeo +; modified by Keiichi SAKAI + +%include "nasm.h" + + globaldef choose_table_MMX + globaldef MMX_masking + + externdef largetbl + externdef t1l + externdef table23 + externdef table56 + + segment_data + align 16 +D14_14_14_14 dd 0x000E000E, 0x000E000E +D15_15_15_15 dd 0xfff0fff0, 0xfff0fff0 +mul_add dd 0x00010010, 0x00010010 +mul_add23 dd 0x00010003, 0x00010003 +mul_add56 dd 0x00010004, 0x00010004 +tableDEF + dd 0x00010003,0x01,0x00050005,0x05,0x00070006,0x07,0x00090008,0x08,0x000a0008, 0x09 + dd 0x000a0009,0x0a,0x000b000a,0x0a,0x000b000a,0x0b,0x000c000a,0x0a,0x000c000b, 0x0b + dd 0x000c000b,0x0c,0x000d000c,0x0c,0x000d000c,0x0d,0x000d000c,0x0d,0x000e000d, 0x0e + dd 0x000b000e,0x0e,0x00040005,0x04,0x00060005,0x06,0x00080007,0x08,0x00090008, 0x09 + dd 0x000a0009,0x0a,0x000b0009,0x0a,0x000b000a,0x0b,0x000b000a,0x0b,0x000c000a, 0x0b + dd 0x000c000b,0x0b,0x000c000b,0x0c,0x000d000c,0x0c,0x000e000c,0x0d,0x000d000c, 0x0e + dd 0x000e000d,0x0e,0x000b000d,0x0e,0x00070006,0x07,0x00080007,0x08,0x00090007, 0x09 + dd 0x000a0008,0x0a,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c + dd 0x000d000a,0x0b,0x000c000b,0x0c,0x000d000b,0x0c,0x000d000c,0x0d,0x000d000c, 0x0d + dd 0x000e000d,0x0e,0x000e000d,0x0f,0x000c000d,0x0f,0x00090007,0x08,0x00090008, 0x09 + dd 0x000a0008,0x0a,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c + dd 0x000c000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000c,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0d,0x000f000d,0x0e,0x000f000d,0x0f,0x000d000d,0x0f,0x000a0008, 0x09 + dd 0x000a0008,0x09,0x000b0009,0x0b,0x000b0009,0x0b,0x000c000a,0x0c,0x000c000a, 0x0c + dd 0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0c,0x000e000b,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000d,0x0f,0x000f000d,0x0f,0x000c000d, 0x10 + dd 0x000a0009,0x0a,0x000a0009,0x0a,0x000b0009,0x0b,0x000b000a,0x0c,0x000c000a, 0x0c + dd 0x000d000a,0x0c,0x000d000b,0x0d,0x000e000b,0x0d,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000f000c,0x0d,0x000f000d,0x0f,0x000f000d,0x0f,0x0010000d, 0x10 + dd 0x000d000e,0x10,0x000b000a,0x0a,0x000b0009,0x0b,0x000b000a,0x0c,0x000c000a, 0x0c + dd 0x000d000a,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000e000c,0x0e,0x000f000d,0x0f,0x000f000d, 0x0f + dd 0x0010000e,0x10,0x000d000e,0x10,0x000b000a,0x0b,0x000b000a,0x0b,0x000c000a, 0x0c + dd 0x000c000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0d,0x000d000b,0x0e,0x000e000c, 0x0e + dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0f,0x000f000c,0x0f,0x000f000d, 0x0f + dd 0x0011000d,0x10,0x0011000d,0x12,0x000d000e,0x12,0x000b000a,0x0a,0x000c000a, 0x0a + dd 0x000c000a,0x0b,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0e,0x000f000c,0x0e,0x000f000d, 0x0f + dd 0x0010000d,0x0f,0x0010000e,0x10,0x0010000e,0x11,0x000d000e,0x11,0x000c000a, 0x0b + dd 0x000c000a,0x0b,0x000c000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0d,0x000f000c,0x0f,0x000f000c,0x0e,0x000f000d,0x0f,0x000f000d, 0x0f + dd 0x0010000d,0x10,0x000f000d,0x10,0x0010000e,0x10,0x000f000e,0x12,0x000e000e, 0x11 + dd 0x000c000b,0x0b,0x000d000b,0x0c,0x000c000b,0x0c,0x000d000b,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000e000c,0x0f,0x000f000c,0x0e,0x0010000d, 0x0f + dd 0x0010000d,0x10,0x0010000d,0x0f,0x0011000d,0x10,0x0011000e,0x11,0x0010000f, 0x12 + dd 0x000d000e,0x13,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b,0x0c,0x000d000b, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000f000c,0x0e,0x0010000c,0x0e,0x0010000d, 0x0f + dd 0x0010000d,0x0f,0x0010000d,0x0f,0x0010000d,0x10,0x0010000e,0x11,0x000f000e, 0x11 + dd 0x0010000e,0x11,0x000e000f,0x12,0x000d000c,0x0c,0x000e000c,0x0d,0x000e000b, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0e,0x000f000c,0x0f,0x000f000d,0x0e,0x000f000d, 0x0f + dd 0x000f000d,0x10,0x0011000d,0x10,0x0010000d,0x11,0x0010000d,0x11,0x0010000e, 0x11 + dd 0x0010000e,0x12,0x0012000f,0x12,0x000e000f,0x12,0x000f000c,0x0d,0x000e000c, 0x0d + dd 0x000e000c,0x0e,0x000e000c,0x0f,0x000f000c,0x0f,0x000f000d,0x0f,0x0010000d, 0x10 + dd 0x0010000d,0x10,0x0010000d,0x10,0x0012000e,0x10,0x0011000e,0x10,0x0011000e, 0x11 + dd 0x0011000e,0x12,0x0013000e,0x11,0x0011000f,0x12,0x000e000f,0x12,0x000e000d, 0x0e + dd 0x000f000d,0x0e,0x000d000d,0x0e,0x000e000d,0x0f,0x0010000d,0x0f,0x0010000d, 0x0f + dd 0x000f000d,0x11,0x0010000d,0x10,0x0010000e,0x10,0x0011000e,0x13,0x0012000e, 0x11 + dd 0x0011000e,0x11,0x0013000f,0x11,0x0011000f,0x13,0x0010000e,0x12,0x000e000f, 0x12 + dd 0x000b000d,0x0d,0x000b000d,0x0e,0x000b000d,0x0f,0x000c000d,0x10,0x000c000d, 0x10 + dd 0x000d000d,0x10,0x000d000d,0x11,0x000d000e,0x10,0x000e000e,0x11,0x000e000e, 0x11 + dd 0x000e000e,0x12,0x000e000e,0x12,0x000e000f,0x15,0x000e000f,0x14,0x000e000f, 0x15 + dd 0x000c000f,0x12 + +tableABC + dd 0x00020004,0x1,0x00040004,0x4,0x00060006,0x7,0x00080008,0x9,0x00090009,0xa,0x000a000a,0xa + dd 0x0009000a,0xa,0x000a000a,0xb,0x00000000,0x0,0x00020003,0x1,0x00040004,0x4,0x00070006,0x7 + dd 0x00090007,0x9,0x00090009,0x9,0x000a000a,0xa,0x00000000,0x0,0x00040004,0x4,0x00050005,0x6 + dd 0x00060006,0x8,0x00080007,0x9,0x000a0009,0xa,0x000a0009,0xb,0x0009000a,0xa,0x000a000a,0xa + dd 0x00000000,0x0,0x00040004,0x4,0x00040005,0x6,0x00060006,0x8,0x000a0007,0x9,0x000a0008,0x9 + dd 0x000a000a,0xa,0x00000000,0x0,0x00060006,0x7,0x00070006,0x8,0x00080007,0x9,0x00090008,0xa + dd 0x000a0009,0xb,0x000b000a,0xc,0x000a0009,0xb,0x000a000a,0xb,0x00000000,0x0,0x00070005,0x7 + dd 0x00060006,0x7,0x00080007,0x9,0x000a0008,0xa,0x000a0009,0xa,0x000b000a,0xb,0x00000000,0x0 + dd 0x00080007,0x8,0x00080007,0x9,0x00090008,0xa,0x000b0008,0xb,0x000a0009,0xc,0x000c000a,0xc + dd 0x000a000a,0xb,0x000b000a,0xc,0x00000000,0x0,0x00090007,0x8,0x000a0007,0x9,0x000a0008,0xa + dd 0x000b0009,0xb,0x000b0009,0xb,0x000c000a,0xb,0x00000000,0x0,0x00090008,0x9,0x000a0008,0xa + dd 0x000a0009,0xb,0x000b0009,0xc,0x000b000a,0xc,0x000c000a,0xc,0x000b000a,0xc,0x000c000b,0xc + dd 0x00000000,0x0,0x00090008,0x8,0x00090008,0x9,0x000a0009,0xa,0x000b0009,0xb,0x000c000a,0xb + dd 0x000c000b,0xc,0x00000000,0x0,0x00090009,0xa,0x000a0009,0xb,0x000b000a,0xc,0x000c000a,0xc + dd 0x000c000a,0xd,0x000d000b,0xd,0x000c000a,0xc,0x000d000b,0xd,0x00000000,0x0,0x000a0009,0x9 + dd 0x000a0009,0xa,0x000b000a,0xb,0x000b000a,0xc,0x000d000b,0xc,0x000d000b,0xc,0x00000000,0x0 + dd 0x00090009,0x9,0x00090009,0xa,0x00090009,0xb,0x000a000a,0xc,0x000b000a,0xc,0x000c000b,0xc + dd 0x000c000b,0xd,0x000c000c,0xd,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0 + dd 0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x0009000a,0xa,0x0009000a,0xa + dd 0x000a000a,0xb,0x000b000b,0xc,0x000c000b,0xc,0x000c000b,0xd,0x000c000b,0xd,0x000c000c,0xd + dd 0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0,0x00000000,0x0 + dd 0x0,0x00000000, 0x0,0x00000000 + +linbits32 + dd 0x00040004,0x10001,0x00040004,0x20002,0x00040004,0x30003,0x00040004,0x40004 + dd 0x00050005,0x60006,0x00060006,0x60006,0x00070007,0x80008,0x00080008,0x80008 + dd 0x00090009,0xa000a,0x000b000b,0xa000a,0x000b000b,0xd000d,0x000d000d,0xd000d + dd 0x000d000d,0xd000d + + +choose_table_H + dw 0x1810, 0x1811, 0x1812, 0x1813, 0x1914, 0x1a14, 0x1b15, 0x1c15 + dw 0x1d16, 0x1e16, 0x1e17, 0x1f17, 0x1f17 + +choose_jump_table_L: + dd table_MMX.L_case_0 + dd table_MMX.L_case_1 + dd table_MMX.L_case_2 + dd table_MMX.L_case_3 + dd table_MMX.L_case_45 + dd table_MMX.L_case_45 + dd table_MMX.L_case_67 + dd table_MMX.L_case_67 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + dd table_MMX.L_case_8_15 + + segment_code +; +; use MMX +; + + align 16 +; int choose_table(int *ix, int *end, int *s) +choose_table_MMX: + mov ecx,[esp+4] ;ecx = begin + mov edx,[esp+8] ;edx = end + sub ecx,edx ;ecx = begin-end(should be minus) + test ecx,8 + pxor mm0,mm0 ;mm0=[0:0] + movq mm1,[edx+ecx] + jz .lp + + add ecx,8 + jz .exit + + align 4 +.lp: + movq mm4,[edx+ecx] + movq mm5,[edx+ecx+8] + add ecx,16 + psubusw mm4,mm0 ; $BK\Ev$O(B dword $B$G$J$$$H$$$1$J$$$N$@$,(B + psubusw mm5,mm1 ; $B$=$s$J%3%^%s%I$O$J$$(B :-p + paddw mm0,mm4 ; $B$,(B, $B$3$3$G07$&CM$NHO0O$O(B 8191+15 $B0J2<$J$N$GLdBj$J$$(B + paddw mm1,mm5 + jnz .lp +.exit: + psubusw mm1,mm0 ; $B$3$l$bK\Ev$O(B dword $B$G$J$$$H$$$1$J$$(B + paddw mm0,mm1 + + movq mm4,mm0 + punpckhdq mm4,mm4 + psubusw mm4,mm0 ; $B$3$l$bK\Ev$O(B dword $B$G$J$$$H$$$1$J$$(B + paddw mm0,mm4 + movd eax,mm0 + + cmp eax,15 + ja .with_ESC + jmp [choose_jump_table_L+eax*4] + +.with_ESC1: + emms + mov ecx, [esp+12] ; *s + mov [ecx], eax + or eax,-1 + ret + +.with_ESC: + cmp eax, 8191+15 + ja .with_ESC1 + + sub eax,15 + push ebx + push esi + bsr eax, eax +%assign _P 4*2 + movq mm5, [D15_15_15_15] + movq mm6, [D14_14_14_14] + movq mm3, [mul_add] + + mov ecx, [esp+_P+4] ; = ix +; mov edx, [esp+_P+8] ; = end + sub ecx, edx + + xor esi, esi ; sum = 0 + test ecx, 8 + pxor mm7, mm7 ; linbits_sum, 14$B$r1[$($?$b$N$N?t(B + jz .H_dual_lp1 + + movq mm0, [edx+ecx] + add ecx,8 + packssdw mm0,mm7 + movq mm2, mm0 + paddusw mm0, mm5 ; mm0 = min(ix, 15)+0xfff0 + pcmpgtw mm2, mm6 ; 14$B$h$jBg$-$$$+!)(B + psubw mm7, mm2 ; 14$B$h$jBg$-$$$H$-(B linbits_sum++; + pmaddwd mm0, mm3 ; {0, 0, y, x}*{1, 16, 1, 16} + movd ebx, mm0 + mov esi, [largetbl+ebx*4+(16*16+16)*4] + + jz .H_dual_exit + + align 4 +.H_dual_lp1: + movq mm0, [edx+ecx] + movq mm1, [edx+ecx+8] + packssdw mm0,mm1 + movq mm2, mm0 + paddusw mm0, mm5 ; mm0 = min(ix, 15)+0xfff0 + pcmpgtw mm2, mm6 ; 14$B$h$jBg$-$$$+!)(B + pmaddwd mm0, mm3 ; {y, x, y, x}*{1, 16, 1, 16} + movd ebx, mm0 + punpckhdq mm0,mm0 + add esi, [largetbl+ebx*4+(16*16+16)*4] + movd ebx, mm0 + add esi, [largetbl+ebx*4+(16*16+16)*4] + add ecx, 16 + psubw mm7, mm2 ; 14$B$h$jBg$-$$$H$-(B linbits_sum++; + jnz .H_dual_lp1 + +.H_dual_exit: + pmov mm1,mm7 + punpckhdq mm7,mm7 + paddd mm7,mm1 + punpckldq mm7,mm7 + + pmaddwd mm7, [linbits32+eax*8] ; linbits + mov ax, [choose_table_H+eax*2] + + movd ecx, mm7 + punpckhdq mm7,mm7 + movd edx,mm7 + emms + shl edx, 16 + add ecx, edx + + add ecx, esi + + pop esi + pop ebx + + mov edx, ecx + and ecx, 0xffff ; ecx = sum2 + shr edx, 16 ; edx = sum + + cmp edx, ecx + jle .chooseE_s1 + mov edx, ecx + shr eax, 8 +.chooseE_s1: + mov ecx, [esp+12] ; *s + and eax, 0xff + add [ecx], edx + ret + +table_MMX.L_case_0: + emms + ret + +table_MMX.L_case_1: + emms + mov eax, [esp+12] ; *s + mov ecx, [esp+4] ; *ix + sub ecx, edx + push ebx +.lp: + mov ebx, [edx+ecx] + add ebx, ebx + add ebx, [edx+ecx+4] + movzx ebx, byte [ebx+t1l] + add [eax], ebx + add ecx, 8 + jnz .lp + pop ebx + mov eax, 1 + ret + +table_MMX.L_case_45: + push dword 7 + mov ecx, tableABC+9*8 + jmp from3 + +table_MMX.L_case_67: + push dword 10 + mov ecx, tableABC + jmp from3 + +table_MMX.L_case_8_15: + push dword 13 + mov ecx, tableDEF +from3: + mov eax,[esp+8] ;eax = *begin +; mov edx,[esp+12] ;edx = *end + + push ebx + sub eax, edx + + movq mm5,[mul_add] + pxor mm2,mm2 ;mm2 = sum + + test eax, 8 + jz .choose3_lp1 +; odd length + movq mm0,[edx+eax] ;mm0 = ix[0] | ix[1] + add eax,8 + packssdw mm0,mm2 + + pmaddwd mm0,mm5 + movd ebx,mm0 + + movq mm2, [ecx+ebx*8] + + jz .choose3_exit + + align 4 +.choose3_lp1 + movq mm0,[edx+eax] + movq mm1,[edx+eax+8] + add eax,16 + packssdw mm0,mm1 ;mm0 = ix[0]|ix[1]|ix[2]|ix[3] + pmaddwd mm0,mm5 + movd ebx,mm0 + punpckhdq mm0,mm0 + paddd mm2, [ecx+ebx*8] + movd ebx,mm0 + paddd mm2, [ecx+ebx*8] + jnz .choose3_lp1 +.choose3_exit +; xor eax,eax + movd ebx, mm2 + punpckhdq mm2,mm2 + mov ecx, ebx + and ecx, 0xffff ; ecx = sum2 + shr ebx, 16 ; ebx = sum1 + movd edx, mm2 ; edx = sum + + cmp edx, ebx + jle .choose3_s1 + mov edx, ebx + inc eax +.choose3_s1: + emms + pop ebx + cmp edx, ecx + jle .choose3_s2 + mov edx, ecx + mov eax, 2 +.choose3_s2: + pop ecx + add eax, ecx + mov ecx, [esp+12] ; *s + add [ecx], edx + ret + +table_MMX.L_case_2: + push dword 2 + mov ecx,table23 + pmov mm5,[mul_add23] + jmp from2 +table_MMX.L_case_3: + push dword 5 + mov ecx,table56 + pmov mm5,[mul_add56] +from2: + mov eax,[esp+8] ;eax = *begin +; mov edx,[esp+12] ;edx = *end + push ebx + push edi + + sub eax, edx + xor edi, edi + test eax, 8 + jz .choose2_lp1 +; odd length + movq mm0,[edx+eax] ;mm0 = ix[0] | ix[1] + pxor mm2,mm2 ;mm2 = sum + packssdw mm0,mm2 + + pmaddwd mm0,mm5 + movd ebx,mm0 + + mov edi, [ecx+ebx*4] + + add eax,8 + jz .choose2_exit + + align 4 +.choose2_lp1 + movq mm0,[edx+eax] + movq mm1,[edx+eax+8] + packssdw mm0,mm1 ;mm0 = ix[0]|ix[1]|ix[2]|ix[3] + pmaddwd mm0,mm5 + movd ebx,mm0 + punpckhdq mm0,mm0 + add edi, [ecx+ebx*4] + movd ebx, mm0 + add edi, [ecx+ebx*4] + add eax,16 + jnc .choose2_lp1 +.choose2_exit + mov ecx, edi + pop edi + pop ebx + pop eax ; table num. + emms + + mov edx, ecx + and ecx, 0xffff ; ecx = sum2 + shr edx, 16 ; edx = sum1 + + cmp edx, ecx + jle .choose2_s1 + mov edx, ecx + inc eax +.choose2_s1: + mov ecx, [esp+12] ; *s + add [ecx], edx + ret + + end diff --git a/lame-3.97/libmp3lame/i386/cpu_feat.nas b/lame-3.97/libmp3lame/i386/cpu_feat.nas new file mode 100644 index 0000000..b5b09c1 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/cpu_feat.nas @@ -0,0 +1,107 @@ +; +; +; assembler routines to detect CPU-features +; +; MMX / 3DNow! / SSE / SSE2 +; +; for the LAME project +; Frank Klemm, Robert Hegemann 2000-10-12 +; + +%include "nasm.h" + + globaldef has_MMX_nasm + globaldef has_3DNow_nasm + globaldef has_SSE_nasm + globaldef has_SSE2_nasm + + segment_code + +testCPUID: + pushfd + pop eax + mov ecx,eax + xor eax,0x200000 + push eax + popfd + pushfd + pop eax + cmp eax,ecx + ret + +;--------------------------------------- +; int has_MMX_nasm (void) +;--------------------------------------- + +has_MMX_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no MMX + + mov eax,0x1 + CPUID + test edx,0x800000 + jz return0 ; no MMX support + jmp return1 ; MMX support + +;--------------------------------------- +; int has_SSE_nasm (void) +;--------------------------------------- + +has_SSE_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no SSE + + mov eax,0x1 + CPUID + test edx,0x02000000 + jz return0 ; no SSE support + jmp return1 ; SSE support + +;--------------------------------------- +; int has_SSE2_nasm (void) +;--------------------------------------- + +has_SSE2_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no SSE2 + + mov eax,0x1 + CPUID + test edx,0x04000000 + jz return0 ; no SSE2 support + jmp return1 ; SSE2 support + +;--------------------------------------- +; int has_3DNow_nasm (void) +;--------------------------------------- + +has_3DNow_nasm: + pushad + call testCPUID + jz return0 ; no CPUID command, so no 3DNow! + + mov eax,0x80000000 + CPUID + cmp eax,0x80000000 + jbe return0 ; no extended MSR(1), so no 3DNow! + + mov eax,0x80000001 + CPUID + test edx,0x80000000 + jz return0 ; no 3DNow! support + ; 3DNow! support +return1: + popad + xor eax,eax + inc eax + ret + +return0: + popad + xor eax,eax + ret + + end diff --git a/lame-3.97/libmp3lame/i386/fft.nas b/lame-3.97/libmp3lame/i386/fft.nas new file mode 100644 index 0000000..7928b33 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/fft.nas @@ -0,0 +1,267 @@ + +; for new GOGO-no-coda (1999/09) +; Copyright (C) 1999 shigeo +; special thanks to Keiichi SAKAI, URURI +%include "nasm.h" + + globaldef fht_3DN + globaldef fht + externdef costab_fft + externdef sintab_fft + externdef gray_index + + segment_data + align 16 +D_MSB1_0 dd 0 ,0x80000000 +D_SQRT2 dd 1.414213562,1.414213562 +t_s0 dd 0 ;[ t_c:t_s] +t_c0 dd 0 +t_c1 dd 0 ;[-t_s:t_c] +t_s1 dd 0 +D_s1c1 dd 0, 0 +D_Mc1s1 dd 0, 0 +D_s2c2 dd 0, 0 +D_Mc2s2 dd 0, 0 +D_0_1 dd 1.0, 0.0 +S_05 DD 0.5 +S_00005 DD 0.0005 +fht dd 0 ;�ؿ��ݥ��� + + segment_code + +;************************************************************************ + +; by shigeo +; 99/08/16 +; 23000clk �ɤ��ä��� +; 18500clk bit reversal from gogo1 by URURI + +;void fht(float *fz, int n); + align 16 +fht_3DN: + push ebx + push esi + push edi + push ebp +%assign _P 4*4 + ;�ޤ��ǽ�Υ롼��... ��fht()�γ��ذ�ư + + mov esi,[esp+_P+4] ;esi=fz + mov ecx,[esp+_P+8] ;ecx=n + + ;�ᥤ��롼�� + movq mm7,[D_MSB1_0] ;mm7=[1<<31:0] + +%assign LOCAL_STACK 16 + sub esp,LOCAL_STACK +%assign _P (_P+LOCAL_STACK) + xor eax,eax + mov [esp],eax ;k=0 +%define k dword [esp] +%define kx dword [esp+4] +%define fn dword [esp+8] + +.lp30: ;k=0; do{ + mov ecx,k + add ecx,2 + mov k,ecx + mov eax,1 + shl eax,cl ;eax=k1 = 1<<k + lea ebx,[eax+eax] ;ebx=k2 = k1*2 + lea ecx,[eax+eax*2] ;ecx=k3 = k2 + k1 = k1*3 + lea edx,[ebx+ebx] ;edx=k4 = k1*4 + mov esi,eax + shr esi,1 ;esi=kx=k1>>1 + mov kx,esi ;��¸(��ǻȤ�) + mov edi,[esp+_P+4] ;edi=fi=fz + lea ebp,[edi+esi*4] ;ebp=gi=fz+kx + mov esi,[esp+_P+8] ;esi=n + lea esi,[edi+esi*4] ;esi=fn=fz+n + movq mm6,[D_SQRT2] ;mm6=[��2:��2] + +.lp31: ;fn=fz+n; do{ FLOAT g0,f0,f1,... + movd mm0,[edi] ;mm0=[0:fi[ 0]] + movd mm1,[edi+eax*4] ;mm1=[0:fi[k1]] + punpckldq mm0,mm0 ;mm0=[fi_0 :fi_0 ] + punpckldq mm1,mm1 ;mm1=[fi_k1:fi_k1] + movd mm2,[edi+ebx*4] + movd mm3,[edi+ecx*4] + punpckldq mm2,mm2 ;mm2=[fi_k2:fi_k2] + punpckldq mm3,mm3 ;mm3=[fi_k3:fi_k3] + pxor mm1,mm7 ;mm1=[-fi_k1:fi_k1] + pxor mm3,mm7 ;mm3=[-fi_k3:fi_k3] + pfadd mm0,mm1 ;mm0=[f1:f0]=[fi_0 -fi_k1 : fi_0 +fi_k1] + pfadd mm2,mm3 ;mm2=[f3:f2]=[fi_k2-fi_k3 : fi_k2+fi_k3] + movq mm3,mm0 ;mm3=[f1:f0] + pfadd mm0,mm2 ;mm0=[f1+f3:f0+f2] + movd [edi],mm0 ;fi[0]=f0+f2 + psrlq mm0,32 ;mm0=[0:f1+f3] + pfsub mm3,mm2 ;mm3=[f1-f3:f0-f2] + movd [edi+eax*4],mm0 ;fi[k1]=f1+f3 + movd [edi+ebx*4],mm3 ;fi[k2]=f0-f2 + psrlq mm3,32 ;mm3=[0:f1-f3] + movd [edi+ecx*4],mm3 ;fi[k3]=f1-f3 + + movd mm0,[ebp] ;mm0=[0:gi_0] + movd mm1,[ebp+eax*4] ;mm1=[0:gi_k1] + punpckldq mm0,mm0 ;mm0=[gi_0 :gi_0 ] + punpckldq mm1,mm1 ;mm1=[gi_k1:gi_k1] + movd mm2,[ebp+ebx*4] ;mm2=[0:gi_k2] + pxor mm1,mm7 ;mm1=[-gi_k1:gi_k1] + punpckldq mm2,[ebp+ecx*4] ;mm2=[gi_k3:gi_k2] + pfadd mm0,mm1 ;mm0=[g1:g0]=[gi_0 -gi_k1:gi_0 +gi_k1] + pfmul mm2,mm6 ;mm2=[g3:g2]=sqrt2 * [gi_k3:gi_k2] + movq mm1,mm0 ;mm1=[g1:g0] + pfadd mm0,mm2 ;mm0=[g1+g3:g0+g2] + movd [ebp],mm0 ;gi[0]=g0+g2 + psrlq mm0,32 ;mm0=[0:g1+g3] + pfsub mm1,mm2 ;mm1=[g1-g3:g0-g2] + movd [ebp+eax*4],mm0 ;gi[k1]=g1+g3 + movd [ebp+ebx*4],mm1 ;gi[k2]=g0-g2 + psrlq mm1,32 ;mm1=[0:g1-g3] + movd [ebp+ecx*4],mm1 ;gi[k3]=g1-g3 + lea edi,[edi+edx*4] ;fi += k4 + lea ebp,[ebp+edx*4] ;gi += k4 + cmp edi,esi + jc near .lp31 ;}while(fi<fn); + +; �����ޤǤ�¿ʬO.K. + + mov fn,esi ;fn=fz+n + ;�����ͤϰ���³���Ȥ� + ;eax=k1,ebx=k2,ecx=k3,edx=k4 + + mov edi,k + lea ebp,[costab_fft+edi*4] + mov ebp,[ebp] ;ebp=t_c + mov [t_c0],ebp + mov [t_c1],ebp ;t_c + lea ebp,[sintab_fft+edi*4] + mov ebp,[ebp] ;ebx=t_s + mov [t_s0],ebp + xor ebp,0x80000000 + mov [t_s1],ebp ;-t_s + + movq mm1,[D_0_1] ;mm1=[0:1] + movq [D_s1c1],mm1 ;mm1=[s1:c1] + mov esi,1 ;esi=i=1 + +.lp32: ; for(i=1;i<kx;i++){ + movq mm0,[D_s1c1] ;mm1=[s1:t]=[s1:c1] + movq mm2,mm0 + pfmul mm0,[t_c1] ;mm0=[-s1*t_s: t*t_c] + pfmul mm2,[t_s0] ;mm2=[ s1*t_c: t*t_s] + pfacc mm0,mm2 ;mm0=[s1:c1]=[ s1*t_c+t*t_s:-s1*t_s+t*t_c] + movq mm2,mm0 ;mm2=[s1:c1] + movq [D_s1c1],mm0 ;��¸ + movq mm6,mm2 + punpckldq mm5,mm6 + punpckhdq mm6,mm5 ;mm6=[ c1:s1] + pxor mm6,mm7 ;mm6=[-c1:s1] + movq [D_Mc1s1],mm6 ;��¸ + pfmul mm2,mm2 ;mm2=[s1*s1:c1*c1] + movq mm3,mm0 ;mm3=[s1:c1] + pxor mm2,mm7 ;mm2=[-s1*s1:c1*c1] + psrlq mm3,32 ;mm3=[ 0:s1] + pfacc mm2,mm2 ;mm2=[c2:c2]=[c1*c1-s1*s1:<] + pfmul mm0,mm3 ;mm0=[ 0:c1*s1] + pfadd mm0,mm0 ;mm0=[0:s2]=[ 0:2*c1*s1] + punpckldq mm2,mm0 ;mm2=[s2:c2] + movq [D_s2c2],mm2 ;��¸ + + punpckldq mm0,mm2 + punpckhdq mm2,mm0 ;mm2=[c2:s2] + pxor mm2,mm7 ;mm2=[-c2:s2] + movq [D_Mc2s2],mm2 ;��¸ + + mov edi,[esp+_P+4] ;edi=fz + lea edi,[edi+esi*4] ;edi=fz+i + + mov ebp,[esp+_P+4] ;ebp=fz + neg esi ;esi=-i + lea ebp,[ebp+eax*4] ;ebp=fz+k1 + lea ebp,[ebp+esi*4] ;ebp=gi=fz+k1-i + neg esi ;esi=i + +.lp33: ; do{ FLOAT a,b,g0,f0,f1,g1,f2,g2,f3,g3; + + movd mm0,[edi+eax*4] ;mm0=[0:fi_k1] + punpckldq mm0,[ebp+eax*4] ;mm0=[gi_k1:fi_k1] + movq mm1,mm0 + pfmul mm0,[D_s2c2] ;mm0=[ s2*gi_k1:c2*fi_k1] + pfmul mm1,[D_Mc2s2] ;mm1=[-c2*gi_k1:s2*fi_k1] + pfacc mm0,mm1 ;mm0=[b:a] + movd mm4,[edi] ;mm4=[0:fi_0] + movq mm3,mm0 ;mm3=[b:a] + punpckldq mm4,[ebp] ;mm4=[gi_0:fi_0] + pfadd mm3,mm4 ;mm3=[g0:f0]=[gi_0+b:fi_0+a] + pfsub mm4,mm0 ;mm4=[g1:f1]=[gi_0-b:fi_0-a] + + movd mm0,[edi+ecx*4] ;mm0=[0:fi_k3] + punpckldq mm0,[ebp+ecx*4] ;mm0=[gi_k3:fi_k3] + movq mm1,mm0 + pfmul mm0,[D_s2c2] ;mm0=[ s2*gi_k3:c2*fi_k3] + pfmul mm1,[D_Mc2s2] ;mm1=[-c2*gi_k3:s2*fi_k3] + pfacc mm0,mm1 ;mm0=[b:a] + movd mm5,[edi+ebx*4] ;mm5=[0:fi_k2] + movq mm6,mm0 ;mm6=[b:a] + punpckldq mm5,[ebp+ebx*4] ;mm5=[gi_k2:fi_k2] + pfadd mm6,mm5 ;mm6=[g2:f2]=[gi_k2+b:fi_k2+a] + pfsub mm5,mm0 ;mm5=[g3:f3]=[gi_k2-b:fi_k2-a] + + punpckldq mm1,mm6 ;mm1=[f2:*] + movq mm0,[D_s1c1] ;mm0=[s1:c1] + punpckhdq mm1,mm5 ;mm1=[g3:f2] + pfmul mm0,mm1 ;mm0=[ s1*g3:c1*f2] + movq mm2,[D_Mc1s1] ;mm2=[-c1:s1] + pfmul mm2,mm1 ;mm2=[-c1*g3:s1*f2] + pfacc mm0,mm2 ;mm0=[b:a] + + punpckldq mm1,mm3 ;mm1=[f0:*] + punpckhdq mm1,mm4 ;mm1=[g1:f0] + movq mm2,mm0 ;mm2=[b:a] + pfadd mm0,mm1 ;mm0=[g1+b:f0+a] + pfsubr mm2,mm1 ;mm2=[g1-b:f0-a] + movd [edi],mm0 ;fi[0]=f0+a + psrlq mm0,32 ;mm0=[0:g1+b] + movd [edi+ebx*4],mm2 ;fi[k2]=f0-a + psrlq mm2,32 ;mm2=[0:g1-b] + movd [ebp+eax*4],mm0 ;gi[k1]=g1+b + movd [ebp+ecx*4],mm2 ;gi[k3]=g1-b + psrlq mm6,32 ;mm6=[0:g2] + movq mm0,[D_s1c1] ;mm0=[s1:c1] + punpckldq mm5,mm6 ;mm5=[g2:f3] + pfmul mm0,mm5 ;mm0=[g2* s1:f3*c1] + pfmul mm5,[D_Mc1s1] ;mm5=[g2*-c1:f3*s1] + pfacc mm0,mm5 ;mm0=[-b:a] + psrlq mm3,32 ;mm3=[0:g0] + movq mm1,mm0 ;mm1=[-b:a] + punpckldq mm3,mm4 ;mm3=[f1:g0] + pfadd mm0,mm3 ;mm0=[f1-b:g0+a] + pfsubr mm1,mm3 ;mm1=[f1+b:g0-a] + movd [ebp],mm0 ;gi[0]=g0+a + psrlq mm0,32 ;mm0=[0:f1-b] + movd [ebp+ebx*4],mm1 ;gi[k2]=g0-a + psrlq mm1,32 ;mm1=[0:f1+b] + movd [edi+ecx*4],mm0 ;fi[k3]=f1-b + movd [edi+eax*4],mm1 ;fi[k1]=f1+b + + lea edi,[edi+edx*4] ;fi += k4 + lea ebp,[ebp+edx*4] ;gi += k4 + cmp edi,fn + jc near .lp33 ;}while(fi<fn) + inc esi + cmp esi,kx + jnz near .lp32 ;} + cmp edx,[esp+_P+8] + jnz near .lp30 ;}while(k4<n) + + +.exit: + add esp,LOCAL_STACK + femms + pop ebp + pop edi + pop esi + pop ebx + ret diff --git a/lame-3.97/libmp3lame/i386/fft3dn.nas b/lame-3.97/libmp3lame/i386/fft3dn.nas new file mode 100644 index 0000000..4ec3869 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/fft3dn.nas @@ -0,0 +1,277 @@ +; from a new GOGO-no-coda (1999/09) +; Copyright (C) 1999 shigeo +; special thanks to Keiichi SAKAI, URURI +; hacked and back-ported to LAME +; by Takehiro TOMINAGA Nov 2000 + +%include "nasm.h" + + globaldef fht_3DN + + segment_data + align 16 +costab dd 0x80000000, 0 + dd 1.414213562,1.414213562 + dd 9.238795283293805e-01, 9.238795283293805e-01 + dd 3.826834424611044e-01, 3.826834424611044e-01 + dd 9.951847264044178e-01, 9.951847264044178e-01 + dd 9.801714304836734e-02, 9.801714304836734e-02 + dd 9.996988186794428e-01, 9.996988186794428e-01 + dd 2.454122920569705e-02, 2.454122920569705e-02 + dd 9.999811752815535e-01, 9.999811752815535e-01 + dd 6.135884819898878e-03, 6.135884819898878e-03 +D_1_0_0_0 dd 0.0 , 1.0 + + segment_code + +;void fht_3DN(float *fz, int nn); + +proc fht_3DN + + pushd ebp, ebx, esi, edi + + mov r0, [esp+20] ;fi + mov r1, [esp+24] ;r1 = nn + sub esp, 16 + + mov r4, 8 ;kx = k1/2 + mov r3, costab ;tri = costab + lea r6, [r0+r1*8] ;r6 = fn = &fz[n] + + pmov mm7, [r3] + +.do1 + lea r3, [r3+16] ;tri += 2; + pmov mm6, [costab+8] + lea r2, [r4+r4*2] ;k3*fsize/2 + mov r5, 4 ;i = 1*fsize + +; jmp .do2 + align 16 +.do2: + lea r1, [r0+r4] ;gi = fi + kx + ;f + pmov mm0, [r0] ;fi0 + pmov mm1, [r0+r4*2] ;fi1 + pmov mm2, [r0+r2*2] ;fi3 + pmov mm3, [r0+r4*4] ;fi2 + + pupldq mm0, mm0 ;fi0 | fi0 + pupldq mm1, mm1 ;fi1 | fi1 + pupldq mm2, mm2 ;fi2 | fi2 + pupldq mm3, mm3 ;fi3 | fi3 + + pxor mm1, mm7 ;fi1 | -fi1 + pxor mm3, mm7 ;fi3 | -fi3 + + pfsub mm0, mm1 ;f1 | f0 + pfsub mm2, mm3 ;f3 | f2 + + pmov mm4, mm0 + pfadd mm0, mm2 ;f1+f3|f0+f2 = fi1 | fi0 + pfsub mm4, mm2 ;f1-f3|f0-f2 = fi3 | fi2 + + pmovd [r0], mm0 ;fi[0] + puphdq mm0, mm0 + pmovd [r0+r4*4], mm4 ;fi[k2] + puphdq mm4, mm4 + + pmovd [r0+r4*2], mm4 ;fi[k1] + pmovd [r0+r2*2], mm0 ;fi[k3] + lea r0, [r0+r4*8] + + ;g + pmov mm0, [r1] ;gi0 + pmov mm1, [r1+r4*2] ;gi1 + pmov mm2, [r1+r4*4] ;gi2 + pmov mm3, [r1+r2*2] ;gi3 + + pupldq mm1, mm1 + pupldq mm0, mm0 ;gi0 | gi0 + pupldq mm2, mm3 ;gi3 | gi2 + + pxor mm1, mm7 ;gi1 | -gi1 + + pfsub mm0, mm1 ;gi0-gi1|gi0+gi1 = g1 | g0 + pfmul mm2, mm6 ;gi3*SQRT2|gi2*SQRT2 = g3 | g2 + + pmov mm4, mm0 + pfadd mm0, mm2 ;g1+g3|g0+g2 = gi1 | gi0 + pfsub mm4, mm2 ;g1-g3|g0-g2 = gi3 | gi2 + + pmovd [r1], mm0 ;gi[0] + puphdq mm0, mm0 + pmovd [r1+r4*4], mm4 ;gi[k2] + puphdq mm4, mm4 + + cmp r0, r6 + pmovd [r1+r4*2], mm0 ;gi[k1] + pmovd [r1+r2*2], mm4 ;gi[k3] + + jb near .do2 + + pmov mm6, [r3+r5] ; this is not aligned address!! + + jmp .for + align 16 +.for: +; +; mm6 = c1 | s1 +; mm7 = 0x800000000 | 0 +; + pmov mm1, mm6 + mov r0, [esp+36] ; fz + puphdq mm1, mm1 ; c1 | c1 + lea r1, [r0+r4*2] + pfadd mm1, mm1 ; c1+c1 | c1+c1 + pfmul mm1, mm6 ; 2*c1*c1 | 2*c1*s1 + pfsub mm1, [D_1_0_0_0] ; 2*c1*c1-1.0 | 2*c1*s1 = -c2 | s2 + +%ifdef E3DN + pswapd mm0, mm1 ; s2 |-c2 + pxor mm0, mm7 ; s2 | c2 + pxor mm7, mm6 ; c1 |-s1 + pswapd mm6, mm6 ; s1 | c1 +%else + pmov mm0, mm1 + pxor mm7, mm6 ; c1 | -s1 + + pupldq mm2, mm0 + pupldq mm3, mm6 ; ** | c1 + puphdq mm0, mm2 ; s2 | c2 + puphdq mm6, mm3 ;-s1 | c1 + + pxor mm0, [costab] ; c2 | -s2 +%endif + +; mm0 = s2| c2 +; mm1 = -c2| s2 +; mm6 = c1| s1 +; mm7 = s1|-c1 <-GOGO$B$HId9f5U(B + + pmov [esp], mm0 + pmov [esp+8], mm1 + + sub r1, r5 ;r1 = gi + add r0, r5 ;r0 = fi +; jmp .do3 + + align 16 +.do3: + pmov mm2, [r0+r4*2] ; fi[k1] + pmov mm4, [r1+r4*2] ; gi[k1] + pmov mm3, [r0+r2*2] ; fi[k3] + pmov mm5, [r1+r2*2] ; gi[k3] + + pupldq mm2, mm2 ; fi1 | fi1 + pupldq mm4, mm4 ; gi1 | gi1 + pupldq mm3, mm3 ; fi3 | fi3 + pupldq mm5, mm5 ; gi3 | gi3 + + pfmul mm2, mm0 ; s2 * fi1 | c2 * fi1 + pfmul mm4, mm1 ;-c2 * gi1 | s2 * gi1 + pfmul mm3, mm0 ; s2 * fi3 | c2 * fi3 + pfmul mm5, mm1 ;-c2 * gi3 | s2 * gi3 + + pfadd mm2, mm4 ;b | a + pfadd mm3, mm5 ;d | c + + pmov mm0, [r0] + pmov mm4, [r1] + pmov mm1, [r0+r4*4] + pmov mm5, [r1+r4*4] + + pupldq mm0, mm4 ;gi0 | fi0 + pupldq mm1, mm5 ;gi2 | fi2 + + pmov mm4, mm2 + pmov mm5, mm3 + + pfadd mm2, mm0 ;g0 | f0 + pfadd mm3, mm1 ;g2 | f2 + + pfsub mm0, mm4 ;g1 | f1 + pfsub mm1, mm5 ;g3 | f3 + + pmov mm4, mm3 + pmov mm5, mm1 + + pupldq mm4, mm4 ;f2 | f2 + puphdq mm5, mm5 ;g3 | g3 + puphdq mm3, mm3 ;g2 | g2 + pupldq mm1, mm1 ;f3 | f3 + + pfmul mm4, mm6 ;f2 * c1 | f2 * s1 + pfmul mm5, mm7 ;g3 * s1 | g3 *-c1 + pfmul mm3, mm6 ;g2 * c1 | g2 * s1 + pfmul mm1, mm7 ;f3 * s1 | f3 *-c1 + + pfadd mm4, mm5 ;a | b + pfsub mm3, mm1 ;d | c + + pmov mm5, mm2 + pmov mm1, mm0 + + pupldq mm2, mm2 ;f0 | f0 + pupldq mm0, mm0 ;f1 | f1 + + puphdq mm1, mm2 ;f0 | g1 + puphdq mm5, mm0 ;f1 | g0 + + pmov mm2, mm4 + pmov mm0, mm3 + + pfadd mm4, mm1 ;fi0 | gi1 + pfadd mm3, mm5 ;fi1 | gi0 + pfsub mm1, mm2 ;fi2 | gi3 + pfsub mm5, mm0 ;fi3 | gi2 + + pmovd [r1+r4*2], mm4 ;gi[k1] + puphdq mm4, mm4 + pmovd [r1], mm3 ;gi[0] + puphdq mm3, mm3 + pmovd [r1+r2*2], mm1 ;gi[k3] + puphdq mm1, mm1 + pmovd [r1+r4*4], mm5 ;gi[k2] + puphdq mm5, mm5 + + pmovd [r0], mm4 ;fi[0] + pmovd [r0+r4*2], mm3 ;fi[k1] + pmovd [r0+r4*4], mm1 ;fi[k2] + pmovd [r0+r2*2], mm5 ;fi[k3] + + lea r0, [r0+r4*8] + lea r1, [r1+r4*8] + cmp r0, r6 + pmov mm0, [esp] + pmov mm1, [esp+8] + + jb near .do3 + + add r5, 4 +; mm6 = c1| s1 +; mm7 = s1|-c1 <-GOGO$B$HId9f5U(B + pfmul mm6, [r3] ; c1*a | s1*a + pfmul mm7, [r3+8] ; s1*b |-c1*b + cmp r5, r4 + + pfsub mm6, mm7 ; c1*a-s1*b | s1*a+c1*b +%ifdef E3DN + pswapd mm6, mm6 ; ??? ; s1*a+c1*b | c1*a-s1*b +%else + pupldq mm7,mm6 + puphdq mm6,mm7 +%endif + pmov mm7, [costab] + jb near .for + + mov r0, [esp+36] ;fi + cmp r4, [esp+36+4] + lea r4, [r4*4] ;kx *= 4 + + jb near .do1 +.exitttt + femms + add esp,16 + popd ebp, ebx, esi, edi +endproc diff --git a/lame-3.97/libmp3lame/i386/fftfpu.nas b/lame-3.97/libmp3lame/i386/fftfpu.nas new file mode 100644 index 0000000..2ae89bd --- /dev/null +++ b/lame-3.97/libmp3lame/i386/fftfpu.nas @@ -0,0 +1,619 @@ +; back port from GOGO-no coda 2.24b by Takehiro TOMINAGA + +; GOGO-no-coda +; Copyright (C) 1999 shigeo +; special thanks to URURI + +%include "nasm.h" + + externdef costab_fft + externdef sintab_fft + + segment_data + align 32 +D_1_41421 dd 1.41421356 +D_1_0 dd 1.0 +D_0_5 dd 0.5 +D_0_25 dd 0.25 +D_0_0005 dd 0.0005 +D_0_0 dd 0.0 + + segment_code + +;void fht(float *fz, int n); +proc fht_FPU + +%$fz arg 4 +%$n arg 4 + +%$k local 4 + +%$f0 local 4 +%$f1 local 4 +%$f2 local 4 +%$f3 local 4 + +%$g0 local 4 +%$g1 local 4 +%$g2 local 4 +%$g3 local 4 + +%$s1 local 4 +%$c1 local 4 +%$s2 local 4 +%$c2 local 4 + +%$t_s local 4 +%$t_c local 4 + alloc + + pushd ebp, ebx, esi, edi + +fht_FPU_1st_part: + +fht_FPU_2nd_part: + +fht_FPU_3rd_part: + +.do_init: + mov r3, 16 ;k1*fsize = 4*fsize = k4 + mov r4, 8 ;kx = k1/2 + mov r2, 48 ;k3*fsize + mov dword [sp(%$k)], 2 ;k = 2 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+8] ;gi = fi + kx + +.do: +.do2: + ;f + fld dword [r0] + fsub dword [r0+r3] + + fld dword [r0] + fadd dword [r0+r3] + + fld dword [r0+r3*2] + fsub dword [r0+r2] + + fld dword [r0+r3*2] + fadd dword [r0+r2] ;f2 f3 f0 f1 + + fld st2 ;f0 f2 f3 f0 f1 + fadd st0, st1 + fstp dword [r0] ;fi[0] + + fld st3 ;f1 f2 f3 f0 f1 + fadd st0, st2 + fstp dword [r0+r3] ;fi[k1] + + fsubr st0, st2 ;f0-f2 f3 f0 f1 + fstp dword [r0+r3*2] ;fi[k2] + + fsubr st0, st2 ;f1-f3 f0 f1 + fstp dword [r0+r2] ;fi[k3] + fcompp + + ;g + fld dword [r1] + fsub dword [r1+r3] + + fld dword [r1] + fadd dword [r1+r3] + + fld dword [D_1_41421] + fmul dword [r1+r2] + + fld dword [D_1_41421] + fmul dword [r1+r3*2] ;g2 g3 g0 g1 + + fld st2 ;g0 g2 g3 g0 g1 + fadd st0, st1 + fstp dword [r1] ;gi[0] + + fld st3 ;g1 g2 g3 g0 g1 + fadd st0, st2 + fstp dword [r1+r3] ;gi[k1] + + fsubr st0, st2 ;g0-g2 g3 g0 g1 + fstp dword [r1+r3*2] ;gi[k2] + + fsubr st0, st2 ;g1-g3 g0 g1 + fstp dword [r1+r2] ;gi[k3] + fcompp + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb .do2 + + + mov r0, [sp(%$k)] + fld dword [costab_fft +r0*4] + fstp dword [sp(%$t_c)] + fld dword [sintab_fft +r0*4] + fstp dword [sp(%$t_s)] + fld dword [D_1_0] + fstp dword [sp(%$c1)] + fld dword [D_0_0] + fstp dword [sp(%$s1)] + +.for_init: + mov r5, 4 ;i = 1*fsize + +.for: + fld dword [sp(%$c1)] + fmul dword [sp(%$t_c)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_s)] + fsubp st1, st0 ;c1 + + fld dword [sp(%$c1)] + fmul dword [sp(%$t_s)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_c)] + faddp st1, st0 ;s1 c1 + + fld st1 + fmul st0, st0 ;c1c1 s1 c1 + fld st1 + fmul st0, st0 ;s1s1 c1c1 s1 c1 + fsubp st1, st0 ;c2 s1 c1 + fstp dword [sp(%$c2)] ;s1 c1 + + fld st1 ;c1 s1 c1 + fmul st0, st1 ;c1s1 s1 c1 + fadd st0, st0 ;s2 s1 c1 + fstp dword [sp(%$s2)] ;s1 c1 + + fstp dword [sp(%$s1)] ;c1 + fstp dword [sp(%$c1)] ; + + mov r0, [sp(%$fz)] + add r0, r5 ;r0 = fi + mov r1, [sp(%$fz)] + add r1, r3 + sub r1, r5 ;r1 = gi + +.do3: + fld dword [sp(%$s2)] + fmul dword [r0+r3] + fld dword [sp(%$c2)] + fmul dword [r1+r3] + fsubp st1, st0 ;b = s2*fi[k1] - c2*gi[k1] + + fld dword [sp(%$c2)] + fmul dword [r0+r3] + fld dword [sp(%$s2)] + fmul dword [r1+r3] + faddp st1, st0 ;a = c2*fi[k1] + s2*gi[k1] b + + fld dword [r0] + fsub st0, st1 ;f1 a b + fstp dword [sp(%$f1)] ;a b + + fadd dword [r0] ;f0 b + fstp dword [sp(%$f0)] ;b + + fld dword [r1] + fsub st0, st1 ;g1 b + fstp dword [sp(%$g1)] ;b + + fadd dword [r1] ;g0 + fstp dword [sp(%$g0)] ; + + + fld dword [sp(%$s2)] + fmul dword [r0+r2] + fld dword [sp(%$c2)] + fmul dword [r1+r2] + fsubp st1, st0 ;b = s2*fi[k3] - c2*gi[k3] + + fld dword [sp(%$c2)] + fmul dword [r0+r2] + fld dword [sp(%$s2)] + fmul dword [r1+r2] + faddp st1, st0 ;a = c2*fi[k3] + s2*gi[k3] b + + fld dword [r0+r3*2] + fsub st0, st1 ;f3 a b + fstp dword [sp(%$f3)] ;a b + + fadd dword [r0+r3*2] ;f2 b + fstp dword [sp(%$f2)] ;b + + fld dword [r1+r3*2] + fsub st0, st1 ;g3 b + fstp dword [sp(%$g3)] ;b + + fadd dword [r1+r3*2] ;g2 + fstp dword [sp(%$g2)] ; + + + fld dword [sp(%$s1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$g3)] + fsubp st1, st0 ;b = s1*f2 - c1*g3 + + fld dword [sp(%$c1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$g3)] + faddp st1, st0 ;a = c1*f2 + s1*g3 b + + fld dword [sp(%$f0)] + fsub st0, st1 ;fi[k2] a b + fstp dword [r0+r3*2] + + fadd dword [sp(%$f0)] ;fi[0] b + fstp dword [r0] + + fld dword [sp(%$g1)] + fsub st0, st1 ;gi[k3] b + fstp dword [r1+r2] + + fadd dword [sp(%$g1)] ;gi[k1] + fstp dword [r1+r3] + + + fld dword [sp(%$c1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$f3)] + fsubp st1, st0 ;b = c1*g2 - s1*f3 + + fld dword [sp(%$s1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$f3)] + faddp st1, st0 ;a = s1*g2 + c1*f3 b + + fld dword [sp(%$g0)] + fsub st0, st1 ;gi[k2] a b + fstp dword [r1+r3*2] + + fadd dword [sp(%$g0)] ;gi[0] b + fstp dword [r1] + + fld dword [sp(%$f1)] + fsub st0, st1 ;fi[k3] b + fstp dword [r0+r2] + + fadd dword [sp(%$f1)] ;fi[k1] + fstp dword [r0+r3] + + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb near .do3 + + add r5, 4 + cmp r5, r4 + jb near .for + + cmp r3, [sp(%$n)] + jae .exit + + add dword [sp(%$k)], 2 ;k += 2; + lea r3, [r3*4] ;k1 *= 4 + lea r2, [r2*4] ;k3 *= 4 + lea r4, [r4*4] ;kx *= 4 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+r4] ;gi = fi + kx + jmp .do + +.exit: + popd ebp, ebx, esi, edi +endproc + +;************************************************************* + +;void fht_FPU_FXCH(float *fz, int n); +proc fht_FPU_FXCH + +%$fz arg 4 +%$n arg 4 + +%$k local 4 + +%$f0 local 4 +%$f1 local 4 +%$f2 local 4 +%$f3 local 4 + +%$g0 local 4 +%$g1 local 4 +%$g2 local 4 +%$g3 local 4 + +%$s1 local 4 +%$c1 local 4 +%$s2 local 4 +%$c2 local 4 + +%$t_s local 4 +%$t_c local 4 + alloc + + pushd ebp, ebx, esi, edi + +fht_FPU_FXCH_1st_part: + +fht_FPU_FXCH_2nd_part: + +fht_FPU_FXCH_3rd_part: + +.do_init: + mov r3, 16 ;k1*fsize = 4*fsize = k4 + mov r4, 8 ;kx = k1/2 + mov r2, 48 ;k3*fsize + mov dword [sp(%$k)], 2 ;k = 2 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+8] ;gi = fi + kx + +.do: +.do2: + ;f + fld dword [r0] + fsub dword [r0+r3] + fld dword [r0] + fadd dword [r0+r3] + + fld dword [r0+r3*2] + fsub dword [r0+r2] + fld dword [r0+r3*2] + fadd dword [r0+r2] ;f2 f3 f0 f1 + + fld st3 + fld st3 + fxch st5 + fadd st0, st3 + fxch st4 + fadd st0, st2 + fxch st3 + fsubp st1, st0 + fxch st1 + fsubp st4, st0 + fxch st2 + + fstp dword [r0+r3] ;fi[k1] + fstp dword [r0] ;fi[0] + fstp dword [r0+r2] ;fi[k3] + fstp dword [r0+r3*2] ;fi[k2] + + ;g + fld dword [r1] + fsub dword [r1+r3] + fld dword [r1] + fadd dword [r1+r3] + + fld dword [D_1_41421] + fmul dword [r1+r2] + fld dword [D_1_41421] + fmul dword [r1+r3*2] ;g2 g3 g0 g1 + + fld st3 + fld st3 + fxch st5 + fadd st0, st3 + fxch st4 + fadd st0, st2 + fxch st3 + fsubp st1, st0 + fxch st1 + fsubp st4, st0 + fxch st2 + + fstp dword [r1+r3] ;gi[k1] + fstp dword [r1] ;gi[0] + fstp dword [r1+r2] ;gi[k3] + fstp dword [r1+r3*2] ;gi[k2] + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb .do2 + + + mov r0, [sp(%$k)] + fld dword [costab_fft +r0*4] + fld dword [sintab_fft +r0*4] + fld dword [D_1_0] + fld dword [D_0_0] + fxch st3 + fstp dword [sp(%$t_c)] + fxch st1 + fstp dword [sp(%$t_s)] + fstp dword [sp(%$c1)] + fstp dword [sp(%$s1)] + +.for_init: + mov r5, 4 ;i = 1*fsize + +.for: + fld dword [sp(%$c1)] + fmul dword [sp(%$t_c)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_s)] + + fld dword [sp(%$c1)] + fmul dword [sp(%$t_s)] + fld dword [sp(%$s1)] + fmul dword [sp(%$t_c)] + fxch st2 + fsubp st3, st0 ;c1 + faddp st1, st0 ;s1 c1 + + fld st1 + fxch st2 + fmul st0, st0 ;c1c1 s1 c1 + fld st1 + fxch st2 + fmul st0, st0 ;s1s1 c1c1 s1 c1 + + fxch st3 + fst dword [sp(%$c1)] ;c1 + fxch st2 + fst dword [sp(%$s1)] ;s1 c1c1 c1 s1s1 + + fmulp st2, st0 + fsubrp st2, st0 + fadd st0, st0 ;s2 c2 + fxch st1 + fstp dword [sp(%$c2)] + fstp dword [sp(%$s2)] + + mov r0, [sp(%$fz)] + mov r1, [sp(%$fz)] + add r0, r5 ;r0 = fi + add r1, r3 + sub r1, r5 ;r1 = gi + +.do3: + fld dword [sp(%$s2)] + fmul dword [r0+r3] + fld dword [sp(%$c2)] + fmul dword [r1+r3] + + fld dword [sp(%$c2)] + fmul dword [r0+r3] + fld dword [sp(%$s2)] + fmul dword [r1+r3] + fxch st2 + fsubp st3, st0 ;b = s2*fi[k1] - c2*gi[k1] + faddp st1, st0 ;a = c2*fi[k1] + s2*gi[k1] b + + fld dword [r1] + fsub st0, st2 ;g1 a b + fxch st2 + fadd dword [r1] ;g0 a g1 + + fld dword [r0] + fsub st0, st2 ;f1 g0 a g1 + fxch st2 + fadd dword [r0] ;f0 g0 f1 g1 + + fxch st3 + fstp dword [sp(%$g1)] + fstp dword [sp(%$g0)] + fstp dword [sp(%$f1)] + fstp dword [sp(%$f0)] + + + fld dword [sp(%$s2)] + fmul dword [r0+r2] + fld dword [sp(%$c2)] + fmul dword [r1+r2] + + fld dword [sp(%$c2)] + fmul dword [r0+r2] + fld dword [sp(%$s2)] + fmul dword [r1+r2] + fxch st2 + fsubp st3, st0 ;b = s2*fi[k3] - c2*gi[k3] + faddp st1, st0 ;a = c2*fi[k3] + s2*gi[k3] b + + + fld dword [r1+r3*2] + fsub st0, st2 ;g3 a b + fxch st2 + fadd dword [r1+r3*2] ;g2 a g3 + + fld dword [r0+r3*2] + fsub st0, st2 ;f3 g2 a g3 + fxch st2 + fadd dword [r0+r3*2] ;f2 g2 f3 g3 + + fxch st3 + fstp dword [sp(%$g3)] + fstp dword [sp(%$g2)] + fstp dword [sp(%$f3)] + fstp dword [sp(%$f2)] + + + fld dword [sp(%$s1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$g3)] + + fld dword [sp(%$c1)] + fmul dword [sp(%$f2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$g3)] + fxch st2 + fsubp st3, st0 ;b = s1*f2 - c1*g3 + faddp st1, st0 ;a = c1*f2 + s1*g3 b + + fld dword [sp(%$g1)] + fsub st0, st2 ;gi[k3] a b + fxch st2 + fadd dword [sp(%$g1)] ;gi[k1] a gi[k3] + + fld dword [sp(%$f0)] + fsub st0, st2 ;fi[k2] gi[k1] a gi[k3] + fxch st2 + fadd dword [sp(%$f0)] ;fi[0] gi[k1] fi[k2] gi[k3] + + fxch st3 + fstp dword [r1+r2] + fstp dword [r1+r3] + fstp dword [r0+r3*2] + fstp dword [r0] + + + fld dword [sp(%$c1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$s1)] + fmul dword [sp(%$f3)] + + fld dword [sp(%$s1)] + fmul dword [sp(%$g2)] + fld dword [sp(%$c1)] + fmul dword [sp(%$f3)] + fxch st2 + fsubp st3, st0 ;b = c1*g2 - s1*f3 + faddp st1, st0 ;a = s1*g2 + c1*f3 b + + fld dword [sp(%$f1)] + fsub st0, st2 ;fi[k3] a b + fxch st2 + fadd dword [sp(%$f1)] ;fi[k1] a fi[k3] + + fld dword [sp(%$g0)] + fsub st0, st2 ;gi[k2] fi[k1] a fi[k3] + fxch st2 + fadd dword [sp(%$g0)] ;gi[0] fi[k1] gi[k2] fi[k3] + + fxch st3 + fstp dword [r0+r2] + fstp dword [r0+r3] + fstp dword [r1+r3*2] + fstp dword [r1] + + + lea r0, [r0+r3*4] + lea r1, [r1+r3*4] + cmp r0, r6 + jb near .do3 + + add r5, 4 + cmp r5, r4 + jb near .for + + cmp r3, [sp(%$n)] + jae .exit + + add dword [sp(%$k)], 2 ;k += 2; + lea r3, [r3*4] ;k1 *= 4 + lea r2, [r2*4] ;k3 *= 4 + lea r4, [r4*4] ;kx *= 4 + mov r0, [sp(%$fz)] ;fi + lea r1, [r0+r4] ;gi = fi + kx + jmp .do + +.exit: + popd ebp, ebx, esi, edi +endproc + + end diff --git a/lame-3.97/libmp3lame/i386/fftsse.nas b/lame-3.97/libmp3lame/i386/fftsse.nas new file mode 100644 index 0000000..02ed14c --- /dev/null +++ b/lame-3.97/libmp3lame/i386/fftsse.nas @@ -0,0 +1,538 @@ +; back port from GOGO-no coda 2.24b by Takehiro TOMINAGA + +; GOGO-no-coda +; Copyright (C) 1999 shigeo +; special thanks to Keiichi SAKAI + +%include "nasm.h" + + globaldef fht_SSE + globaldef fft_side_SSE + externdef costab_fft + externdef sintab_fft + + segment_data + align 16 +Q_MMPP dd 0x0,0x0,0x80000000,0x80000000 +Q_MPMP dd 0x0,0x80000000,0x0,0x80000000 +Q_002 dd 0.02236068, 0.02236068, 0.02236068, 0.02236068 +D_SQRT2 dd 1.414213562,1.414213562 +S_025 dd 0.25 +S_05 DD 0.5 +S_00005 DD 0.0005 + + segment_code +;------------------------------------------------------------------------ +; by K. SAKAI +; 99/08/18 PIII 23k[clk] +; 99/08/19 ̿�������촹�� PIII 22k[clk] +; 99/08/20 bit reversal ����夫��ܿ����� PIII 17k[clk] +; 99/08/23 ���� unroll PIII 14k[clk] +; 99/11/12 clean up +; +;void fht_SSE(float *fz, int n); + align 16 +fht_SSE: + push ebx + push esi + push edi + push ebp +%assign _P 4*4 + + ;2���ܤΥ롼�� + mov eax,[esp+_P+4] ;eax=fz + mov ebp,[esp+_P+8] ;=n + shl ebp,2 + add ebp,eax ; fn = fz + n, ���δؿ���λ�ޤ����� + + xor ecx,ecx ; ecx=k=0 + xor eax,eax + mov al,4 ; =k1=1*(sizeof float) // 4, 16, 64, 256,... + xor edx,edx + mov dl,12 ; =k3=3*k1 + jmp short .lp2 + + align 16 +.lp2: ; do{ + add cl,2 ; k += 2; + shl eax,2 + shl edx,2 + + mov esi,[esp+_P+4] ;esi=fi=fz + mov edi,eax + shr edi,1 + add edi,esi ; edi=gi=fi+ki/2 + +; ��������2���󤷤����ԤǤ��ʤ���ʬ��FPU�Τۤ���®���� + movss xmm7,[D_SQRT2] + jmp short .lp20 + + align 16 +.lp20: ; do{ +; f0 = fi[0 ] + fi[k1]; +; f2 = fi[k2] + fi[k3]; +; f1 = fi[0 ] - fi[k1]; +; f3 = fi[k2] - fi[k3]; +; fi[0 ] = f0 + f2; +; fi[k1] = f1 + f3; +; fi[k2] = f0 - f2; +; fi[k3] = f1 - f3; + fld dword [esi] + fadd dword [esi+eax] + fld dword [esi+eax*2] + fadd dword [esi+edx] + + fld dword [esi] + fsub dword [esi+eax] + fld dword [esi+eax*2] + fsub dword [esi+edx] + + fld st1 + fadd st0,st1 + fstp dword [esi+eax] + fsubp st1,st0 + fstp dword [esi+edx] + + fld st1 + fadd st0,st1 + fstp dword [esi] + fsubp st1,st0 + fstp dword [esi+eax*2] + + lea esi,[esi + eax*4] ; = fi += (k1 * 4); +; add esi,eax +; add esi,edx +; g0 = gi[0 ] + gi[k1]; +; g2 = SQRT2 * gi[k2]; +; g1 = gi[0 ] - gi[k1]; +; g3 = SQRT2 * gi[k3]; +; gi[0 ] = g0 + g2; +; gi[k2] = g0 - g2; +; gi[k1] = g1 + g3; +; gi[k3] = g1 - g3; + fld dword [edi] + fadd dword [edi+eax] + fld dword [D_SQRT2] + fmul dword [edi+eax*2] + + fld dword [edi] + fsub dword [edi+eax] + fld dword [D_SQRT2] + fmul dword [edi+edx] + + fld st1 + fadd st0,st1 + fstp dword [edi+eax] + fsubp st1,st0 + fstp dword [edi+edx] + + fld st1 + fadd st0,st1 + fstp dword [edi] + fsubp st1,st0 + fstp dword [edi+eax*2] + + lea edi,[edi + eax*4] ; = gi += (k1 * 4); + cmp esi,ebp + jl near .lp20 ; while (fi<fn); + +; i = 1; //for (i=1;i<kx;i++){ +; c1 = 1.0*t_c - 0.0*t_s; +; s1 = 0.0*t_c + 1.0*t_s; + movss xmm6,[costab_fft + ecx*4] + movss xmm1,[sintab_fft + ecx*4] + shufps xmm6,xmm1,0x00 ; = {s1, s1, c1, c1} + shufps xmm6,xmm6,0x28 ; = {+c1, +s1, +s1, +c1} +; c2 = c1*c1 - s1*s1; +; s2 = c1*s1 + s1*c1; + movaps xmm4,xmm6 + movaps xmm7,xmm6 + unpcklps xmm4,xmm4 ; = {s1, s1, c1, c1} + shufps xmm7,xmm7,0x41 + mulps xmm4,xmm6 ; = {s1*c1, s1*s1, c1*s1, c1*c1} + xorps xmm7,[Q_MMPP] ; = {-s1, -c1, +c1, +s1} + movhlps xmm3,xmm4 + xorps xmm3,[Q_MPMP] + subps xmm4,xmm3 ; = {--, --, s2, c2} + movlhps xmm4,xmm4 ; = {+s2, +c2, +s2, +c2} + movaps xmm5,xmm4 + shufps xmm5,xmm5,0x11 + xorps xmm5,[Q_MPMP] ; = {-c2, +s2, -c2, +s2} + mov esi,[esp+_P+4] ; = fz + lea edi,[esi + eax - 4] ; edi = gi = fz +k1-i + add esi,4 ; esi = fi = fz + i + jmp short .lp21 + + align 16 +.lp21: ; do{ +; a = c2*fi[k1] + s2*gi[k1]; +; b = s2*fi[k1] - c2*gi[k1]; +; c = c2*fi[k3] + s2*gi[k3]; +; d = s2*fi[k3] - c2*gi[k3]; +; f0 = fi[0 ] + a; +; g0 = gi[0 ] + b; +; f2 = fi[k1 * 2] + c; +; g2 = gi[k1 * 2] + d; +; f1 = fi[0 ] - a; +; g1 = gi[0 ] - b; +; f3 = fi[k1 * 2] - c; +; g3 = gi[k1 * 2] - d; + + movss xmm0,[esi + eax] ; = fi[k1] + movss xmm2,[esi + edx] ; = fi[k3] + shufps xmm0,xmm2,0x00 ; = {fi[k3], fi[k3], fi[k1], fi[k1]} + movss xmm1,[edi + eax] ; = fi[k1] + movss xmm3,[edi + edx] ; = fi[k3] + shufps xmm1,xmm3,0x00 ; = {gi[k3], gi[k3], gi[k1], gi[k1]} + movss xmm2,[esi] ; = fi[0] + mulps xmm0,xmm4 ; *= {+s2, +c2, +s2, +c2} + movss xmm3,[esi + eax*2] ; = fi[k2] + unpcklps xmm2,xmm3 ; = {--, --, fi[k2], fi[0]} + mulps xmm1,xmm5 ; *= {-c2, +s2, -c2, +s2} + movss xmm3,[edi + eax*2] ; = gi[k2] + addps xmm0,xmm1 ; = {d, c, b, a} + movss xmm1,[edi] ; = gi[0] + unpcklps xmm1,xmm3 ; = {--, --, gi[k2], gi[0]} + unpcklps xmm2,xmm1 ; = {gi[k2], fi[k2], gi[0], fi[0]} + movaps xmm1,xmm2 + addps xmm1,xmm0 ; = {g2, f2, g0, f0} + subps xmm2,xmm0 ; = {g3, f3, g1, f1} + +; a = c1*f2 + s1*g3; +; c = s1*g2 + c1*f3; +; b = s1*f2 - c1*g3; +; d = c1*g2 - s1*f3; +; fi[0 ] = f0 + a; +; gi[0 ] = g0 + c; +; gi[k1] = g1 + b; +; fi[k1] = f1 + d; +; fi[k1 * 2] = f0 - a; +; gi[k1 * 2] = g0 - c; +; gi[k3] = g1 - b; +; fi[k3] = f1 - d; + movaps xmm3,xmm1 + movhlps xmm1,xmm1 ; = {g2, f2, g2, f2} + shufps xmm3,xmm2,0x14 ; = {f1, g1, g0, f0} + mulps xmm1,xmm6 ; *= {+c1, +s1, +s1, +c1} + shufps xmm2,xmm2,0xBB ; = {f3, g3, f3, g3} + mulps xmm2,xmm7 ; *= {-s1, -c1, +c1, +s1} + addps xmm1,xmm2 ; = {d, b, c, a} + movaps xmm2,xmm3 + addps xmm3,xmm1 ; = {fi[k1], gi[k1], gi[0], fi[0]} + subps xmm2,xmm1 ; = {fi[k3], gi[k3], gi[k1*2], fi[k1*2]} + movhlps xmm0,xmm3 + movss [esi],xmm3 + shufps xmm3,xmm3,0x55 + movss [edi+eax],xmm0 + shufps xmm0,xmm0,0x55 + movss [edi],xmm3 + movss [esi+eax],xmm0 + movhlps xmm0,xmm2 + movss [esi+eax*2],xmm2 + shufps xmm2,xmm2,0x55 + movss [edi+edx],xmm0 + shufps xmm0,xmm0,0x55 + movss [edi+eax*2],xmm2 + lea edi,[edi + eax*4] ; gi += (k1 * 4); + movss [esi+edx],xmm0 + lea esi,[esi + eax*4] ; fi += (k1 * 4); + cmp esi,ebp + jl near .lp21 ; while (fi<fn); +; unroll����do loop��43+4̿�� + +; ������ǤϤʤ�for�롼�פ�unrolling���� +; kx= 2, 8, 32, 128 +; k4= 16, 64, 256, 1024 +; 0, 6/2,30/2,126/2 +; at here +; xmm6 = {--, --, s1, c1} +; c3 = c1; s3 = s1; + xor ebx,ebx + mov bl,4*4 ; = i = 4 + cmp ebx,eax ; i < k1 + jnl near .F22 + + shufps xmm6,xmm6,0x14 ; = {c1, s1, s1, c1} + jmp short .F220 + + align 16 +; for (i=4;i<k1;i+=4){ // for (i=2;i<k1/2;i+=2){ +.lp22: + shufps xmm6,xmm6,0x69 ; xmm6 = {c3, s3, s3, c3} +.F220: +; at here, xmm6 is {c3, s3, s3, c3} +; c1 = c3*t_c - s3*t_s; +; s1 = c3*t_s + s3*t_c; + movss xmm0,[costab_fft + ecx*4] + movss xmm1,[sintab_fft + ecx*4] + shufps xmm0,xmm1,0x00 ; = {t_s, t_s, t_c, t_c} + mulps xmm6,xmm0 + movhlps xmm4,xmm6 + xorps xmm4,[Q_MPMP] + subps xmm6,xmm4 ; = {--, --, s1, c1} + +; c3 = c1*t_c - s1*t_s; +; s3 = s1*t_c + c1*t_s; + shufps xmm6,xmm6,0x14 ; = {c1, s1, s1, c1} + mulps xmm0,xmm6 + movhlps xmm3,xmm0 + xorps xmm3,[Q_MPMP] + subps xmm0,xmm3 ; = {--, --, s3, c3} + + unpcklps xmm6,xmm0 ; xmm6 = {s3, s1, c3, c1} + shufps xmm6,xmm6,0xB4 ; xmm6 = {s1, s3, c3, c1} + +; c2 = c1*c1 - s1*s1; +; c4 = c3*c3 - s3*s3; +; s4 = s3*c3 + s3*c3; +; s2 = s1*c1 + s1*c1; + movaps xmm7,xmm6 + movaps xmm4,xmm6 + shufps xmm7,xmm7,0x14 + shufps xmm4,xmm4,0xEB + xorps xmm4,[Q_MMPP] ; = {-c3,-c1, s3, s1} + mulps xmm7,xmm6 + mulps xmm4,xmm6 + shufps xmm4,xmm4,0x1B + addps xmm7,xmm4 ; xmm7 = {s2, s4, c4, c2} + +; fi = fz +i; +; gi = fz +k1-i; + mov edi,[esp+_P+4] ; = fz + mov esi,ebx + shr esi,1 + sub edi,esi ; edi = fz - i/2 + lea esi,[edi + ebx] ; esi = fi = fz +i/2 + add edi,eax ; edi = gi = fz +k1-i/2 + sub edi,4 +; do{ +.lp220: +; unroll���do loop��51+4̿�� +; a = c2*fi[k1 ] + s2*gi[k1 ]; +; e = c4*fi[k1+1] + s4*gi[k1-1]; +; f = s4*fi[k1+1] - c4*gi[k1-1]; +; b = s2*fi[k1 ] - c2*gi[k1 ]; +; c = c2*fi[k3 ] + s2*gi[k3 ]; +; g = c4*fi[k3+1] + s4*gi[k3-1]; +; h = s4*fi[k3+1] - c4*gi[k3-1]; +; d = s2*fi[k3 ] - c2*gi[k3 ]; + + movaps xmm4,xmm7 ; xmm7 = {s2, s4, c4, c2} + shufps xmm4,xmm4,0x1B + xorps xmm4,[Q_MMPP] + movlps xmm0,[esi+eax] + movlps xmm1,[edi+eax] + movlps xmm2,[esi+edx] + movlps xmm3,[edi+edx] + shufps xmm0,xmm0,0x14 + shufps xmm1,xmm1,0x41 + shufps xmm2,xmm2,0x14 + shufps xmm3,xmm3,0x41 + mulps xmm0,xmm7 + mulps xmm1,xmm4 + mulps xmm2,xmm7 + mulps xmm3,xmm4 + addps xmm0,xmm1 ; xmm0 = {b, f, e, a} + addps xmm2,xmm3 ; xmm2 = {d, h, g, c} +;17 + +; f0 = fi[0 ] + a; +; f4 = fi[0 +1] + e; +; g4 = gi[0 -1] + f; +; g0 = gi[0 ] + b; +; f1 = fi[0 ] - a; +; f5 = fi[0 +1] - e; +; g5 = gi[0 -1] - f; +; g1 = gi[0 ] - b; +; f2 = fi[k2 ] + c; +; f6 = fi[k2+1] + g; +; g6 = gi[k2-1] + h; +; g2 = gi[k2 ] + d; +; f3 = fi[k2 ] - c; +; f7 = fi[k2+1] - g; +; g7 = gi[k2-1] - h; +; g3 = gi[k2 ] - d; + movlps xmm4,[esi ] + movhps xmm4,[edi ] + movaps xmm1,xmm4 + subps xmm1,xmm0 ; xmm1 = {g1, g5, f5, f1} + movlps xmm5,[esi+eax*2] + movhps xmm5,[edi+eax*2] + movaps xmm3,xmm5 + subps xmm3,xmm2 ; xmm3 = {g3, g7, f7, f3} + addps xmm0,xmm4 ; xmm0 = {g0, g4, f4, f0} + addps xmm2,xmm5 ; xmm2 = {g2, g6, f6, f2} +;10 + +; a = c1*f2 + s1*g3; ��*�� + ��*�� +; e = c3*f6 + s3*g7; +; g = s3*g6 + c3*f7; +; c = s1*g2 + c1*f3; +; d = c1*g2 - s1*f3; ��*�� - ��*�� +; h = c3*g6 - s3*f7; +; f = s3*f6 - c3*g7; +; b = s1*f2 - c1*g3; + + movaps xmm5,xmm6 ; xmm6 = {s1, s3, c3, c1} + shufps xmm5,xmm5,0x1B ; = {c1, c3, s3, s1} + movaps xmm4,xmm2 + mulps xmm4,xmm6 + shufps xmm2,xmm2,0x1B ; xmm2 = {f2, f6, g6, g2} + mulps xmm2,xmm6 + mulps xmm5,xmm3 + mulps xmm3,xmm6 + shufps xmm3,xmm3,0x1B + addps xmm4,xmm3 ; = {c, g, e, a} + subps xmm2,xmm5 ; = {b, f, h, d} +;10 + +; fi[0 ] = f0 + a; +; fi[0 +1] = f4 + e; +; gi[0 -1] = g4 + g; +; gi[0 ] = g0 + c; +; fi[k2 ] = f0 - a; +; fi[k2+1] = f4 - e; +; gi[k2-1] = g4 - g; +; gi[k2 ] = g0 - c; +; fi[k1 ] = f1 + d; +; fi[k1+1] = f5 + h; +; gi[k1-1] = g5 + f; +; gi[k1 ] = g1 + b; +; fi[k3 ] = f1 - d; +; fi[k3+1] = f5 - h; +; gi[k3-1] = g5 - f; +; gi[k3 ] = g1 - b; + movaps xmm3,xmm0 + subps xmm0,xmm4 + movlps [esi+eax*2],xmm0 + movhps [edi+eax*2],xmm0 + addps xmm4,xmm3 + movlps [esi ],xmm4 + movhps [edi ],xmm4 + + movaps xmm5,xmm1 + subps xmm1,xmm2 + movlps [esi+edx ],xmm1 + movhps [edi+edx ],xmm1 + addps xmm2,xmm5 + movlps [esi+eax ],xmm2 + movhps [edi+eax ],xmm2 +; 14 +; gi += k4; +; fi += k4; + lea edi,[edi + eax*4] ; gi += (k1 * 4); + lea esi,[esi + eax*4] ; fi += (k1 * 4); + cmp esi,ebp + jl near .lp220 ; while (fi<fn); +; } while (fi<fn); + + add ebx,4*4 ; i+= 4 + cmp ebx,eax ; i < k1 + jl near .lp22 +; } +.F22: + + cmp eax,[esp+_P+8] ; while ((k1 * 4)<n); + jl near .lp2 + + pop ebp + pop edi + pop esi + pop ebx + ret + +;------------------------------------------------------------------------ +; 99/11/12 Initial version for SSE by K. SAKAI, 4300clk@P3 +; This routine is very slow when wsamp_r_int is not aligned to 16byte boundary. +; +;void fft_side_SSE( float in[2][1024], int s, float *ret) +; energy = (in[0][512] - in[1][512])^2; +; energy = (in[0][1024-s] - in[1][1024-s])^2; +; for (i=s,j=1024-s;i<512;i++,j--){ +; a = in[0][i] - in[1][i]; +; energy += a*a; +; b = in[0][j-1] - in[1][j-1]; +; energy += b*b; +; } +; *ret = energy * 0.25; + + align 16 +fft_side_SSE: + mov ecx,[esp+8] ; = i = s + mov edx,1024 + sub edx,ecx ; = j + mov eax,[esp+4] ; = in + movss xmm7,[eax+1024*0*4+512*4] + movss xmm1,[eax+1024*1*4+512*4] + subss xmm7,xmm1 + mulss xmm7,xmm7 + movss xmm2,[eax+1024*0*4+edx*4] + movss xmm3,[eax+1024*1*4+edx*4] + subss xmm2,xmm3 + mulss xmm2,xmm2 + addss xmm7,xmm2 + + test cl,1 + jz .even + +.odd: dec edx + movss xmm0,[eax+1024*0*4+ecx*4] + movss xmm1,[eax+1024*1*4+ecx*4] + inc ecx + movss xmm2,[eax+1024*0*4+edx*4] + movss xmm3,[eax+1024*1*4+edx*4] + cmp ecx,edx + subss xmm0,xmm1 + subss xmm2,xmm3 + mulss xmm0,xmm0 + mulss xmm2,xmm2 + addss xmm7,xmm0 + addss xmm7,xmm2 + je near .exit1 + +.even: test cl,2 + jz .f0 + sub edx,2 + movlps xmm0,[eax+1024*0*4+ecx*4] + movlps xmm1,[eax+1024*1*4+ecx*4] + add ecx,2 + movhps xmm0,[eax+1024*0*4+edx*4] + movhps xmm1,[eax+1024*1*4+edx*4] + cmp ecx,edx + subps xmm0,xmm1 + mulps xmm0,xmm0 + addps xmm7,xmm0 + je .exit4 + jmp short .f0 + + align 16 +.f0: +.lp0: + sub edx,4 + movaps xmm0,[eax+1024*0*4+ecx*4] + movaps xmm1,[eax+1024*1*4+ecx*4] + add ecx,4 + subps xmm0,xmm1 + mulps xmm0,xmm0 + addps xmm7,xmm0 + movaps xmm2,[eax+1024*0*4+edx*4] + movaps xmm3,[eax+1024*1*4+edx*4] + cmp ecx,edx + subps xmm2,xmm3 + mulps xmm2,xmm2 + addps xmm7,xmm2 + jne .lp0 + +.exit4: movhlps xmm6,xmm7 + addps xmm7,xmm6 + movaps xmm6,xmm7 + shufps xmm6,xmm6,01010101B + addss xmm7,xmm6 + +.exit1: mulss xmm7,[S_025] + mov eax,[esp+12] + movss [eax],xmm7 + ret + + + end diff --git a/lame-3.97/libmp3lame/i386/ffttbl.nas b/lame-3.97/libmp3lame/i386/ffttbl.nas new file mode 100644 index 0000000..14dd9ae --- /dev/null +++ b/lame-3.97/libmp3lame/i386/ffttbl.nas @@ -0,0 +1,78 @@ + +; for new GOGO-no-coda (1999/09) +; Copyright (C) 1999 shigeo +; special thanks to URURI, Keiichi SAKAI + + +; fft sin,cos,gray�ơ��֥� +; 99/08/21 +; 99/09/01(�����)���ӥå�ȿž�ơ��֥��� +; 99/09/14 ���쥤�����ɥ���ǥå���ɽ�����Х벽 + +%include "nasm.h" + + globaldef costab_fft + globaldef sintab_fft + globaldef gray_index + + segment_data + align 16 + +costab_fft: + dd 0.000000000000 + dd 0.707106781187 + dd 0.923879532511 + dd 0.980785280403 + dd 0.995184726672 + dd 0.998795456205 + dd 0.999698818696 + dd 0.999924701839 + dd 0.999981175283 + dd 0.999995293810 + dd 0.999998823452 + dd 0.999999705863 + dd 0.999999926466 + dd 0.999999981616 + dd 0.999999995404 + dd 0.999999998851 + +sintab_fft: + dd 1.000000000000 + dd 0.707106781187 + dd 0.382683432365 + dd 0.195090322016 + dd 0.098017140330 + dd 0.049067674327 + dd 0.024541228523 + dd 0.012271538286 + dd 0.006135884649 + dd 0.003067956763 + dd 0.001533980186 + dd 0.000766990319 + dd 0.000383495188 + dd 0.000191747597 + dd 0.000095873799 + dd 0.000047936900 + + align 16 +gray_index: + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 8 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 9 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 8 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 7 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 6 + db 2, 3, 2, 4, 2, 3, 2, 5, 2, 3, 2, 4, 2, 3, 2, 10 + + segment_code + + end diff --git a/lame-3.97/libmp3lame/i386/nasm.h b/lame-3.97/libmp3lame/i386/nasm.h new file mode 100644 index 0000000..b4e6451 --- /dev/null +++ b/lame-3.97/libmp3lame/i386/nasm.h @@ -0,0 +1,178 @@ + +; Copyright (C) 1999 URURI + +; nasm�ѥޥ��� +; 1999/08/21 ���� +; 1999/10/10 ���Ĥ��ɲ� +; 1999/10/27 aout�б� +; 1999/11/07 pushf, popf ��NASM�ΥХ��б� +; 1999/12/02 for BCC ( Thanks to Miquel ) + +; for Windows Visual C++ -> define WIN32 +; Borland or cygwin -> WIN32 and COFF +; for FreeBSD 2.x -> AOUT +; for TownsOS -> __tos__ +; otherwise -> none + +;̾�����դ��� + +BITS 32 + +%ifdef WIN32 + %define _NAMING + %define segment_code segment .text align=16 class=CODE use32 + %define segment_data segment .data align=16 class=DATA use32 +%ifdef __BORLANDC__ + %define segment_bss segment .data align=16 class=DATA use32 +%else + %define segment_bss segment .bss align=16 class=DATA use32 +%endif +%elifdef AOUT + %define _NAMING + %define segment_code segment .text + %define segment_data segment .data + %define segment_bss segment .bss +%else + %define segment_code segment .text align=16 class=CODE use32 + %define segment_data segment .data align=16 class=DATA use32 + %define segment_bss segment .bss align=16 class=DATA use32 +%endif + +%ifdef __tos__ +group CGROUP text +group DGROUP data +%endif + +;ñ������ư���������� + +%idefine float dword +%idefine fsize 4 +%idefine fsizen(a) (fsize*(a)) + +;��ɷ��� + +%idefine wsize 2 +%idefine wsizen(a) (wsize*(a)) +%idefine dwsize 4 +%idefine dwsizen(a) (dwsize*(a)) + +;REG + +%define r0 eax +%define r1 ebx +%define r2 ecx +%define r3 edx +%define r4 esi +%define r5 edi +%define r6 ebp +%define r7 esp + +;MMX,3DNow!,SSE + +%define pmov movq +%define pmovd movd + +%define pupldq punpckldq +%define puphdq punpckhdq +%define puplwd punpcklwd +%define puphwd punpckhwd + +%define xm0 xmm0 +%define xm1 xmm1 +%define xm2 xmm2 +%define xm3 xmm3 +%define xm4 xmm4 +%define xm5 xmm5 +%define xm6 xmm6 +%define xm7 xmm7 + +;����åե��Ѥ�4�ʥޥ��� + +%define R4(a,b,c,d) (a*64+b*16+c*4+d) + +;C�饤���ʴʰץޥ��� + +%imacro globaldef 1 + %ifdef _NAMING + %define %1 _%1 + %endif + global %1 +%endmacro + +%imacro externdef 1 + %ifdef _NAMING + %define %1 _%1 + %endif + extern %1 +%endmacro + +%imacro proc 1 + %push proc + %ifdef _NAMING + global _%1 + %else + global %1 + %endif + + align 32 +%1: +_%1: + + %assign %$STACK 0 + %assign %$STACKN 0 + %assign %$ARG 4 +%endmacro + +%imacro endproc 0 + %ifnctx proc + %error expected 'proc' before 'endproc'. + %else + %if %$STACK > 0 + add esp, %$STACK + %endif + + %if %$STACK <> (-%$STACKN) + %error STACKLEVEL mismatch check 'local', 'alloc', 'pushd', 'popd' + %endif + + ret + %pop + %endif +%endmacro + +%idefine sp(a) esp+%$STACK+a + +%imacro arg 1 + %00 equ %$ARG + %assign %$ARG %$ARG+%1 +%endmacro + +%imacro local 1 + %assign %$STACKN %$STACKN-%1 + %00 equ %$STACKN +%endmacro + +%imacro alloc 0 + sub esp, (-%$STACKN)-%$STACK + %assign %$STACK (-%$STACKN) +%endmacro + +%imacro pushd 1-* + %rep %0 + push %1 + %assign %$STACK %$STACK+4 + %rotate 1 + %endrep +%endmacro + +%imacro popd 1-* + %rep %0 + %rotate -1 + pop %1 + %assign %$STACK %$STACK-4 + %endrep +%endmacro + +; bug of NASM-0.98 +%define pushf db 0x66, 0x9C +%define popf db 0x66, 0x9D diff --git a/lame-3.97/libmp3lame/id3tag.c b/lame-3.97/libmp3lame/id3tag.c new file mode 100644 index 0000000..04ae7b8 --- /dev/null +++ b/lame-3.97/libmp3lame/id3tag.c @@ -0,0 +1,557 @@ +/* + * id3tag.c -- Write ID3 version 1 and 2 tags. + * + * Copyright (C) 2000 Don Melton. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +/* + * HISTORY: This source file is part of LAME (see http://www.mp3dev.org/mp3/) + * and was originally adapted by Conrad Sanderson <c.sanderson@me.gu.edu.au> + * from mp3info by Ricardo Cerqueira <rmc@rccn.net> to write only ID3 version 1 + * tags. Don Melton <don@blivet.com> COMPLETELY rewrote it to support version + * 2 tags and be more conformant to other standards while remaining flexible. + * + * NOTE: See http://id3.org/ for more information about ID3 tag formats. + */ + +/* $Id: id3tag.c,v 1.23.4.1 2006/01/21 16:29:37 takehiro Exp $ */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#ifdef STDC_HEADERS +# include <stddef.h> +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + + +#ifdef _MSC_VER +#define snprintf _snprintf +#endif + + +#include "lame.h" +#include "id3tag.h" +#include "util.h" +#include "bitstream.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +static const char *const genre_names[] = +{ + /* + * NOTE: The spelling of these genre names is identical to those found in + * Winamp and mp3info. + */ + "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", + "Hip-Hop", "Jazz", "Metal", "New Age", "Oldies", "Other", "Pop", "R&B", + "Rap", "Reggae", "Rock", "Techno", "Industrial", "Alternative", "Ska", + "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", + "Vocal", "Jazz+Funk", "Fusion", "Trance", "Classical", "Instrumental", + "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise", "Alt. Rock", + "Bass", "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", + "Instrumental Rock", "Ethnic", "Gothic", "Darkwave", "Techno-Industrial", + "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", + "Cult", "Gangsta Rap", "Top 40", "Christian Rap", "Pop/Funk", "Jungle", + "Native American", "Cabaret", "New Wave", "Psychedelic", "Rave", + "Showtunes", "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", + "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock", "Folk", + "Folk/Rock", "National Folk", "Swing", "Fast-Fusion", "Bebob", "Latin", + "Revival", "Celtic", "Bluegrass", "Avantgarde", "Gothic Rock", + "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", + "Big Band", "Chorus", "Easy Listening", "Acoustic", "Humour", "Speech", + "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", + "Primus", "Porn Groove", "Satire", "Slow Jam", "Club", "Tango", "Samba", + "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle", "Duet", + "Punk Rock", "Drum Solo", "A Cappella", "Euro-House", "Dance Hall", + "Goa", "Drum & Bass", "Club-House", "Hardcore", "Terror", "Indie", + "BritPop", "Negerpunk", "Polsk Punk", "Beat", "Christian Gangsta Rap", + "Heavy Metal", "Black Metal", "Crossover", "Contemporary Christian", + "Christian Rock", "Merengue", "Salsa", "Thrash Metal", "Anime", "JPop", + "Synthpop" +}; + +#define GENRE_NAME_COUNT \ + ((int)(sizeof genre_names / sizeof (const char *const))) + +static const int genre_alpha_map [] = { + 123, 34, 74, 73, 99, 20, 40, 26, 145, 90, 116, 41, 135, 85, 96, 138, 89, 0, + 107, 132, 65, 88, 104, 102, 97, 136, 61, 141, 32, 1, 112, 128, 57, 140, 2, + 139, 58, 3, 125, 50, 22, 4, 55, 127, 122, 120, 98, 52, 48, 54, 124, 25, 84, + 80, 115, 81, 119, 5, 30, 36, 59, 126, 38, 49, 91, 6, 129, 79, 137, 7, 35, + 100, 131, 19, 33, 46, 47, 8, 29, 146, 63, 86, 71, 45, 142, 9, 77, 82, 64, + 133, 10, 66, 39, 11, 103, 12, 75, 134, 13, 53, 62, 109, 117, 23, 108, 92, + 67, 93, 43, 121, 15, 68, 14, 16, 76, 87, 118, 17, 78, 143, 114, 110, 69, 21, + 111, 95, 105, 42, 37, 24, 56, 44, 101, 83, 94, 106, 147, 113, 18, 51, 130, + 144, 60, 70, 31, 72, 27, 28 +}; + +#define GENRE_ALPHA_COUNT ((int)(sizeof genre_alpha_map / sizeof (int))) + +void +id3tag_genre_list(void (*handler)(int, const char *, void *), void *cookie) +{ + if (handler) { + int i; + for (i = 0; i < GENRE_NAME_COUNT; ++i) { + if (i < GENRE_ALPHA_COUNT) { + int j = genre_alpha_map[i]; + handler(j, genre_names[j], cookie); + } + } + } +} + +#define GENRE_NUM_UNKNOWN 255 + +void +id3tag_init(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + memset(&gfc->tag_spec, 0, sizeof gfc->tag_spec); + gfc->tag_spec.genre = GENRE_NUM_UNKNOWN; +} + + + +void +id3tag_add_v2(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V1_ONLY_FLAG; + gfc->tag_spec.flags |= ADD_V2_FLAG; +} + +void +id3tag_v1_only(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~(ADD_V2_FLAG | V2_ONLY_FLAG); + gfc->tag_spec.flags |= V1_ONLY_FLAG; +} + +void +id3tag_v2_only(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V1_ONLY_FLAG; + gfc->tag_spec.flags |= V2_ONLY_FLAG; +} + +void +id3tag_space_v1(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V2_ONLY_FLAG; + gfc->tag_spec.flags |= SPACE_V1_FLAG; +} + +void +id3tag_pad_v2(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->tag_spec.flags &= ~V1_ONLY_FLAG; + gfc->tag_spec.flags |= PAD_V2_FLAG; +} + +void +id3tag_set_title(lame_global_flags *gfp, const char *title) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (title && *title) { + gfc->tag_spec.title = title; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_artist(lame_global_flags *gfp, const char *artist) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (artist && *artist) { + gfc->tag_spec.artist = artist; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_album(lame_global_flags *gfp, const char *album) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (album && *album) { + gfc->tag_spec.album = album; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_year(lame_global_flags *gfp, const char *year) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (year && *year) { + int num = atoi(year); + if (num < 0) { + num = 0; + } + /* limit a year to 4 digits so it fits in a version 1 tag */ + if (num > 9999) { + num = 9999; + } + if (num) { + gfc->tag_spec.year = num; + gfc->tag_spec.flags |= CHANGED_FLAG; + } + } +} + +void +id3tag_set_comment(lame_global_flags *gfp, const char *comment) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (comment && *comment) { + gfc->tag_spec.comment = comment; + gfc->tag_spec.flags |= CHANGED_FLAG; + } +} + +void +id3tag_set_track(lame_global_flags *gfp, const char *track) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (track && *track) { + int num = atoi(track); + if (num < 0) { + num = 0; + } + /* limit a track to 255 so it fits in a version 1 tag even though CD + * audio doesn't allow more than 99 tracks */ + if (num > 255) { + num = 255; + } + if (num) { + gfc->tag_spec.track = num; + gfc->tag_spec.flags |= CHANGED_FLAG; + } + } +} + +/* would use real "strcasecmp" but it isn't portable */ +static int +local_strcasecmp(const char *s1, const char *s2) +{ + unsigned char c1; + unsigned char c2; + do { + c1 = tolower(*s1); + c2 = tolower(*s2); + if (!c1) { + break; + } + ++s1; + ++s2; + } while (c1 == c2); + return c1 - c2; +} + +int +id3tag_set_genre(lame_global_flags *gfp, const char *genre) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if (genre && *genre) { + char *str; + int num = strtol(genre, &str, 10); + /* is the input a string or a valid number? */ + if (*str) { + int i; + for (i = 0; i < GENRE_NAME_COUNT; ++i) { + if (!local_strcasecmp(genre, genre_names[i])) { + num = i; + break; + } + } + if (i == GENRE_NAME_COUNT) { + return -1; + } + } else if ((num < 0) || (num >= GENRE_NAME_COUNT)) { + return -1; + } + gfc->tag_spec.genre = num; + gfc->tag_spec.flags |= CHANGED_FLAG; + } + return 0; +} + +static unsigned char * +set_4_byte_value(unsigned char *bytes, unsigned long value) +{ + int index; + for (index = 3; index >= 0; --index) { + bytes[index] = value & 0xfful; + value >>= 8; + } + return bytes + 4; +} + +#define FRAME_ID(a, b, c, d) \ + ( ((unsigned long)(a) << 24) \ + | ((unsigned long)(b) << 16) \ + | ((unsigned long)(c) << 8) \ + | ((unsigned long)(d) << 0) ) +#define TITLE_FRAME_ID FRAME_ID('T', 'I', 'T', '2') +#define ARTIST_FRAME_ID FRAME_ID('T', 'P', 'E', '1') +#define ALBUM_FRAME_ID FRAME_ID('T', 'A', 'L', 'B') +#define YEAR_FRAME_ID FRAME_ID('T', 'Y', 'E', 'R') +#define COMMENT_FRAME_ID FRAME_ID('C', 'O', 'M', 'M') +#define TRACK_FRAME_ID FRAME_ID('T', 'R', 'C', 'K') +#define GENRE_FRAME_ID FRAME_ID('T', 'C', 'O', 'N') +#define ENCODER_FRAME_ID FRAME_ID('T', 'S', 'S', 'E') + +static unsigned char * +set_frame(unsigned char *frame, unsigned long id, const char *text, + size_t length) +{ + if (length) { + frame = set_4_byte_value(frame, id); + /* Set frame size = total size - header size. Frame header and field + * bytes include 2-byte header flags, 1 encoding descriptor byte, and + * for comment frames: 3-byte language descriptor and 1 content + * descriptor byte */ + frame = set_4_byte_value(frame, ((id == COMMENT_FRAME_ID) ? 5 : 1) + + length); + /* clear 2-byte header flags */ + *frame++ = 0; + *frame++ = 0; + /* clear 1 encoding descriptor byte to indicate ISO-8859-1 format */ + *frame++ = 0; + if (id == COMMENT_FRAME_ID) { + /* use id3lib-compatible bogus language descriptor */ + *frame++ = 'X'; + *frame++ = 'X'; + *frame++ = 'X'; + /* clear 1 byte to make content descriptor empty string */ + *frame++ = 0; + } + while (length--) { + *frame++ = *text++; + } + } + return frame; +} + +int +id3tag_write_v2(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if ((gfc->tag_spec.flags & CHANGED_FLAG) + && !(gfc->tag_spec.flags & V1_ONLY_FLAG)) { + /* calculate length of four fields which may not fit in verion 1 tag */ + size_t title_length = gfc->tag_spec.title + ? strlen(gfc->tag_spec.title) : 0; + size_t artist_length = gfc->tag_spec.artist + ? strlen(gfc->tag_spec.artist) : 0; + size_t album_length = gfc->tag_spec.album + ? strlen(gfc->tag_spec.album) : 0; + size_t comment_length = gfc->tag_spec.comment + ? strlen(gfc->tag_spec.comment) : 0; + /* write tag if explicitly requested or if fields overflow */ + if ((gfc->tag_spec.flags & (ADD_V2_FLAG | V2_ONLY_FLAG)) + || (title_length > 30) + || (artist_length > 30) || (album_length > 30) + || (comment_length > 30) + || (gfc->tag_spec.track && (comment_length > 28))) { + size_t tag_size; + char encoder[20]; + size_t encoder_length; + char year[5]; + size_t year_length; + char track[4]; + size_t track_length; + char genre[6]; + size_t genre_length; + unsigned char *tag; + unsigned char *p; + size_t adjusted_tag_size; + unsigned int index; + /* calulate size of tag starting with 10-byte tag header */ + tag_size = 10; +#if defined(__hpux) || defined(__svr4__) || defined(M_UNIX) || defined(_AIX) + encoder_length = sprintf(encoder, + "LAME v%s", get_lame_short_version()); +#else +#if defined(__sun__) + (void) sprintf(encoder, "LAME v%s", get_lame_short_version()); + encoder_length = strlen(encoder); +#else + encoder_length = snprintf(encoder, sizeof(encoder), + "LAME v%s", get_lame_short_version()); +#endif +#endif + tag_size += 11 + encoder_length; + if (title_length) { + /* add 10-byte frame header, 1 encoding descriptor byte ... */ + tag_size += 11 + title_length; + } + if (artist_length) { + tag_size += 11 + artist_length; + } + if (album_length) { + tag_size += 11 + album_length; + } + if (gfc->tag_spec.year) { + year_length = sprintf(year, "%d", gfc->tag_spec.year); + tag_size += 11 + year_length; + } else { + year_length = 0; + } + if (comment_length) { + /* add 10-byte frame header, 1 encoding descriptor byte, + * 3-byte language descriptor, 1 content descriptor byte ... */ + tag_size += 15 + comment_length; + } + if (gfc->tag_spec.track) { + track_length = sprintf(track, "%d", gfc->tag_spec.track); + tag_size += 11 + track_length; + } else { + track_length = 0; + } + if (gfc->tag_spec.genre != GENRE_NUM_UNKNOWN) { + genre_length = sprintf(genre, "(%d)", gfc->tag_spec.genre); + tag_size += 11 + genre_length; + } else { + genre_length = 0; + } + if (gfc->tag_spec.flags & PAD_V2_FLAG) { + /* add 128 bytes of padding */ + tag_size += 128; + } + tag = (unsigned char *)malloc(tag_size); + if (!tag) { + return -1; + } + p = tag; + /* set tag header starting with file identifier */ + *p++ = 'I'; *p++ = 'D'; *p++ = '3'; + /* set version number word */ + *p++ = 3; *p++ = 0; + /* clear flags byte */ + *p++ = 0; + /* calculate and set tag size = total size - header size */ + adjusted_tag_size = tag_size - 10; + /* encode adjusted size into four bytes where most significant + * bit is clear in each byte, for 28-bit total */ + *p++ = (adjusted_tag_size >> 21) & 0x7fu; + *p++ = (adjusted_tag_size >> 14) & 0x7fu; + *p++ = (adjusted_tag_size >> 7) & 0x7fu; + *p++ = adjusted_tag_size & 0x7fu; + + /* + * NOTE: The remainder of the tag (frames and padding, if any) + * are not "unsynchronized" to prevent false MPEG audio headers + * from appearing in the bitstream. Why? Well, most players + * and utilities know how to skip the ID3 version 2 tag by now + * even if they don't read its contents, and it's actually + * very unlikely that such a false "sync" pattern would occur + * in just the simple text frames added here. + */ + + /* set each frame in tag */ + p = set_frame(p, ENCODER_FRAME_ID, encoder, encoder_length); + p = set_frame(p, TITLE_FRAME_ID, gfc->tag_spec.title, title_length); + p = set_frame(p, ARTIST_FRAME_ID, gfc->tag_spec.artist, + artist_length); + p = set_frame(p, ALBUM_FRAME_ID, gfc->tag_spec.album, album_length); + p = set_frame(p, YEAR_FRAME_ID, year, year_length); + p = set_frame(p, COMMENT_FRAME_ID, gfc->tag_spec.comment, + comment_length); + p = set_frame(p, TRACK_FRAME_ID, track, track_length); + p = set_frame(p, GENRE_FRAME_ID, genre, genre_length); + /* clear any padding bytes */ + memset(p, 0, tag_size - (p - tag)); + /* write tag directly into bitstream at current position */ + for (index = 0; index < tag_size; ++index) { + add_dummy_byte(gfp, tag[index]); + } + free(tag); + return tag_size; + } + } + return 0; +} + +static unsigned char * +set_text_field(unsigned char *field, const char *text, size_t size, int pad) +{ + while (size--) { + if (text && *text) { + *field++ = *text++; + } else { + *field++ = pad; + } + } + return field; +} + +int +id3tag_write_v1(lame_global_flags *gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + if ((gfc->tag_spec.flags & CHANGED_FLAG) + && !(gfc->tag_spec.flags & V2_ONLY_FLAG)) { + unsigned char tag[128]; + unsigned char *p = tag; + int pad = (gfc->tag_spec.flags & SPACE_V1_FLAG) ? ' ' : 0; + char year[5]; + unsigned int index; + /* set tag identifier */ + *p++ = 'T'; *p++ = 'A'; *p++ = 'G'; + /* set each field in tag */ + p = set_text_field(p, gfc->tag_spec.title, 30, pad); + p = set_text_field(p, gfc->tag_spec.artist, 30, pad); + p = set_text_field(p, gfc->tag_spec.album, 30, pad); + sprintf(year, "%d", gfc->tag_spec.year); + p = set_text_field(p, gfc->tag_spec.year ? year : NULL, 4, pad); + /* limit comment field to 28 bytes if a track is specified */ + p = set_text_field(p, gfc->tag_spec.comment, gfc->tag_spec.track + ? 28 : 30, pad); + if (gfc->tag_spec.track) { + /* clear the next byte to indicate a version 1.1 tag */ + *p++ = 0; + *p++ = gfc->tag_spec.track; + } + *p++ = gfc->tag_spec.genre; + /* write tag directly into bitstream at current position */ + for (index = 0; index < 128; ++index) { + add_dummy_byte(gfp, tag[index]); + } + return 128; + } + return 0; +} diff --git a/lame-3.97/libmp3lame/id3tag.h b/lame-3.97/libmp3lame/id3tag.h new file mode 100644 index 0000000..70f679d --- /dev/null +++ b/lame-3.97/libmp3lame/id3tag.h @@ -0,0 +1,39 @@ + +#ifndef LAME_ID3_H +#define LAME_ID3_H + +#include "lame.h" + + +#define CHANGED_FLAG (1U << 0) +#define ADD_V2_FLAG (1U << 1) +#define V1_ONLY_FLAG (1U << 2) +#define V2_ONLY_FLAG (1U << 3) +#define SPACE_V1_FLAG (1U << 4) +#define PAD_V2_FLAG (1U << 5) + +struct id3tag_spec +{ + /* private data members */ + int flags; + const char *title; + const char *artist; + const char *album; + int year; + const char *comment; + int track; + int genre; +}; + + +/* write tag into stream at current position */ +extern int id3tag_write_v2(lame_global_flags *gfp); +extern int id3tag_write_v1(lame_global_flags *gfp); +/* + * NOTE: A version 2 tag will NOT be added unless one of the text fields won't + * fit in a version 1 tag (e.g. the title string is longer than 30 characters), + * or the "id3tag_add_v2" or "id3tag_v2_only" functions are used. + */ + +#endif + diff --git a/lame-3.97/libmp3lame/l3side.h b/lame-3.97/libmp3lame/l3side.h new file mode 100644 index 0000000..3d89a66 --- /dev/null +++ b/lame-3.97/libmp3lame/l3side.h @@ -0,0 +1,99 @@ +/* + * Layer 3 side include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_L3SIDE_H +#define LAME_L3SIDE_H + +#include "encoder.h" +#include "machine.h" + +/* max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8) */ +#define SFBMAX (SBMAX_s*3) + +/* Layer III side information. */ +typedef struct +{ + int l[1+SBMAX_l]; + int s[1+SBMAX_s]; + int psfb21[1+PSFB21]; + int psfb12[1+PSFB12]; +} scalefac_struct; + + +typedef struct { + FLOAT l[SBMAX_l]; + FLOAT s[SBMAX_s][3]; +} III_psy_xmin; + +typedef struct { + III_psy_xmin thm; + III_psy_xmin en; +} III_psy_ratio; + +typedef struct { + FLOAT xr[576]; + int l3_enc[576]; + int scalefac[SFBMAX]; + FLOAT xrpow_max; + + int part2_3_length; + int big_values; + int count1; + int global_gain; + int scalefac_compress; + int block_type; + int mixed_block_flag; + int table_select[3]; + int subblock_gain[3+1]; + int region0_count; + int region1_count; + int preflag; + int scalefac_scale; + int count1table_select; + + int part2_length; + int sfb_lmax; + int sfb_smin; + int psy_lmax; + int sfbmax; + int psymax; + int sfbdivide; + int width[SFBMAX]; + int window[SFBMAX]; + int count1bits; + /* added for LSF */ + const int *sfb_partition_table; + int slen[4]; + + int max_nonzero_coeff; +} gr_info; + +typedef struct { + gr_info tt[2][2]; + int main_data_begin; + int private_bits; + int resvDrain_pre; + int resvDrain_post; + int scfsi[2][4]; +} III_side_info_t; + +#endif + diff --git a/lame-3.97/libmp3lame/lame-analysis.h b/lame-3.97/libmp3lame/lame-analysis.h new file mode 100644 index 0000000..1f2407c --- /dev/null +++ b/lame-3.97/libmp3lame/lame-analysis.h @@ -0,0 +1,93 @@ +/* + * GTK plotting routines source file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_GTKANAL_H +#define LAME_GTKANAL_H + +#include "encoder.h" + +#define READ_AHEAD 40 /* number of frames to read ahead */ +#define MAXMPGLAG READ_AHEAD /* if the mpg123 lag becomes bigger than this + we have to stop */ +#define NUMBACK 6 /* number of frames we can back up */ +#define NUMPINFO (NUMBACK+READ_AHEAD+1) + + + +typedef struct { + int frameNum; /* current frame number */ + int frameNum123; + int num_samples; /* number of pcm samples read for this frame */ + double frametime; /* starting time of frame, in seconds */ + double pcmdata[2][1600]; + double pcmdata2[2][1152+1152-DECDELAY]; + double xr[2][2][576]; + double mpg123xr[2][2][576]; + double ms_ratio[2]; + double ms_ener_ratio[2]; + + /* L,R, M and S values */ + double energy[2][4][BLKSIZE]; + double pe[2][4]; + double thr[2][4][SBMAX_l]; + double en[2][4][SBMAX_l]; + double thr_s[2][4][3*SBMAX_s]; + double en_s[2][4][3*SBMAX_s]; + double ers[2][4]; + + double sfb[2][2][SBMAX_l]; + double sfb_s[2][2][3*SBMAX_s]; + double LAMEsfb[2][2][SBMAX_l]; + double LAMEsfb_s[2][2][3*SBMAX_s]; + + int LAMEqss[2][2]; + int qss[2][2]; + int big_values[2][2]; + int sub_gain[2][2][3]; + + double xfsf[2][2][SBMAX_l]; + double xfsf_s[2][2][3*SBMAX_s]; + + int over[2][2]; + double tot_noise[2][2]; + double max_noise[2][2]; + double over_noise[2][2]; + int over_SSD[2][2]; + int blocktype[2][2]; + int scalefac_scale[2][2]; + int preflag[2][2]; + int mpg123blocktype[2][2]; + int mixed[2][2]; + int mainbits[2][2]; + int sfbits[2][2]; + int LAMEmainbits[2][2]; + int LAMEsfbits[2][2]; + int framesize,stereo,js,ms_stereo,i_stereo,emph,bitrate,sampfreq,maindata; + int crc,padding; + int scfsi[2],mean_bits,resvsize; + int totbits; +} plotting_data; + + +extern plotting_data *pinfo; + +#endif + diff --git a/lame-3.97/libmp3lame/lame.c b/lame-3.97/libmp3lame/lame.c new file mode 100644 index 0000000..145f05a --- /dev/null +++ b/lame-3.97/libmp3lame/lame.c @@ -0,0 +1,2274 @@ +/* -*- mode: C; mode: fold -*- */ +/* + * LAME MP3 encoding engine + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2000-2005 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2000-2005 Gabriel Bouvigne + * Copyright (c) 2000-2004 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: lame.c,v 1.278.2.2 2005/11/20 14:08:24 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + + +#include <assert.h> +#include "lame-analysis.h" +#include "lame.h" +#include "util.h" +#include "bitstream.h" +#include "version.h" +#include "tables.h" +#include "quantize_pvt.h" +#include "psymodel.h" +#include "VbrTag.h" +#include "machine.h" +#include "gain_analysis.h" +#include "set_get.h" + +#if defined(__FreeBSD__) && !defined(__alpha__) +#include <floatingpoint.h> +#endif +#ifdef __riscos__ +#include "asmstuff.h" +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#ifdef __sun__ +/* woraround for SunOS 4.x, it has SEEK_* defined here */ +#include <unistd.h> +#endif + + +#define LAME_DEFAULT_QUALITY 3 + +static FLOAT +filter_coef(FLOAT x) +{ + if (x > 1.0) return 0.0; + if (x <= 0.0) return 1.0; + + return cos(PI/2 * x); +} + +static void +lame_init_params_ppflt(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + /***************************************************************/ + /* compute info needed for polyphase filter (filter type==0, default) */ + /***************************************************************/ + + int band, maxband, minband; + FLOAT freq; + int lowpass_band = 32; + int highpass_band = -1; + + if (gfc->lowpass1 > 0) { + minband = 999; + for (band = 0; band <= 31; band++) { + freq = band / 31.0; + /* this band and above will be zeroed: */ + if (freq >= gfc->lowpass2) { + lowpass_band = Min(lowpass_band, band); + } + if (gfc->lowpass1 < freq && freq < gfc->lowpass2) { + minband = Min(minband, band); + } + } + + /* compute the *actual* transition band implemented by + * the polyphase filter */ + if (minband == 999) { + gfc->lowpass1 = (lowpass_band - .75) / 31.0; + } + else { + gfc->lowpass1 = (minband - .75) / 31.0; + } + gfc->lowpass2 = lowpass_band / 31.0; + } + + /* make sure highpass filter is within 90% of what the effective + * highpass frequency will be */ + if (gfc->highpass2 > 0) { + if (gfc->highpass2 < .9 * (.75 / 31.0)) { + gfc->highpass1 = 0; + gfc->highpass2 = 0; + MSGF(gfc, "Warning: highpass filter disabled. " + "highpass frequency too small\n"); + } + } + + if (gfc->highpass2 > 0) { + maxband = -1; + for (band = 0; band <= 31; band++) { + freq = band / 31.0; + /* this band and below will be zereod */ + if (freq <= gfc->highpass1) { + highpass_band = Max(highpass_band, band); + } + if (gfc->highpass1 < freq && freq < gfc->highpass2) { + maxband = Max(maxband, band); + } + } + /* compute the *actual* transition band implemented by + * the polyphase filter */ + gfc->highpass1 = highpass_band / 31.0; + if (maxband == -1) { + gfc->highpass2 = (highpass_band + .75) / 31.0; + } + else { + gfc->highpass2 = (maxband + .75) / 31.0; + } + } + + for (band = 0; band < 32; band++) { + freq = band / 31.0; + gfc->amp_filter[band] + = filter_coef((gfc->highpass2 - freq) + / (gfc->highpass2 - gfc->highpass1 + 1e-37)) + * filter_coef((freq - gfc->lowpass1) + / (gfc->lowpass2 - gfc->lowpass1 - 1e-37)); + } +} + + +static void +optimum_bandwidth(double *const lowerlimit, + double *const upperlimit, + const unsigned bitrate) +{ +/* + * Input: + * bitrate total bitrate in kbps + * + * Output: + * lowerlimit: best lowpass frequency limit for input filter in Hz + * upperlimit: best highpass frequency limit for input filter in Hz + */ + int index; + + typedef struct { + int bitrate; /* only indicative value */ + int lowpass; + } band_pass_t; + + const band_pass_t freq_map[] = { + { 8, 2000}, + { 16, 3700}, + { 24, 3900}, + { 32, 5500}, + { 40, 7000}, + { 48, 7500}, + { 56, 10000}, + { 64, 11000}, + { 80, 13500}, + { 96, 15100}, + {112, 15600}, + {128, 17000}, + {160, 17500}, + {192, 18600}, + {224, 19400}, + {256, 19700}, + {320, 20500} + }; + + + index = nearestBitrateFullIndex(bitrate); + + *lowerlimit = freq_map[index].lowpass; + + +/* + * Now we try to choose a good high pass filtering frequency. + * This value is currently not used. + * For fu < 16 kHz: sqrt(fu*fl) = 560 Hz + * For fu = 18 kHz: no high pass filtering + * This gives: + * + * 2 kHz => 160 Hz + * 3 kHz => 107 Hz + * 4 kHz => 80 Hz + * 8 kHz => 40 Hz + * 16 kHz => 20 Hz + * 17 kHz => 10 Hz + * 18 kHz => 0 Hz + * + * These are ad hoc values and these can be optimized if a high pass is available. + */ +/* if (f_low <= 16000) + f_high = 16000. * 20. / f_low; + else if (f_low <= 18000) + f_high = 180. - 0.01 * f_low; + else + f_high = 0.;*/ + + /* + * When we sometimes have a good highpass filter, we can add the highpass + * frequency to the lowpass frequency + */ + + /*if (upperlimit != NULL) + *upperlimit = f_high;*/ +} + + +static int +optimum_samplefreq(int lowpassfreq, int input_samplefreq) +{ +/* + * Rules: + * - if possible, sfb21 should NOT be used + * + */ + int suggested_samplefreq; + + if (input_samplefreq >= 48000) + suggested_samplefreq = 48000; + else if (input_samplefreq >= 44100) + suggested_samplefreq = 44100; + else if (input_samplefreq >= 32000) + suggested_samplefreq = 32000; + else if (input_samplefreq >= 24000) + suggested_samplefreq = 24000; + else if (input_samplefreq >= 22050) + suggested_samplefreq = 22050; + else if (input_samplefreq >= 16000) + suggested_samplefreq = 16000; + else if (input_samplefreq >= 12000) + suggested_samplefreq = 12000; + else if (input_samplefreq >= 11025) + suggested_samplefreq = 11025; + else if (input_samplefreq >= 8000) + suggested_samplefreq = 8000; + + if (lowpassfreq == -1) + return suggested_samplefreq; + + if (lowpassfreq <= 15960) + suggested_samplefreq = 44100; + if (lowpassfreq <= 15250) + suggested_samplefreq = 32000; + if (lowpassfreq <= 11220) + suggested_samplefreq = 24000; + if (lowpassfreq <= 9970) + suggested_samplefreq = 22050; + if (lowpassfreq <= 7230) + suggested_samplefreq = 16000; + if (lowpassfreq <= 5420) + suggested_samplefreq = 12000; + if (lowpassfreq <= 4510) + suggested_samplefreq = 11025; + if (lowpassfreq <= 3970) + suggested_samplefreq = 8000; + + if (input_samplefreq < suggested_samplefreq) + suggested_samplefreq = input_samplefreq; + return suggested_samplefreq; +} + + + + + +/* set internal feature flags. USER should not access these since + * some combinations will produce strange results */ +void +lame_init_qval(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + switch (gfp->quality) { + case 9: /* no psymodel, no noise shaping */ + gfc->filter_type = 0; + gfc->psymodel = 0; + gfc->quantization = 0; + gfc->noise_shaping = 0; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 8: + gfp->quality = 7; + case 7: /* use psymodel (for short block and m/s switching), but no noise shapping */ + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 0; + gfc->noise_shaping = 0; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 6: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 0; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 5: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 0; + gfc->full_outer_loop = 0; + break; + + case 4: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 0; + gfc->noise_shaping_stop = 0; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; + gfc->full_outer_loop = 0; + break; + + case 3: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + gfc->noise_shaping_amp = 1; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; + gfc->full_outer_loop = 0; + break; + + case 2: + gfc->filter_type = 0; + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + if (gfc->substep_shaping == 0) + gfc->substep_shaping = 2; + gfc->noise_shaping_amp = 1; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; /* inner loop */ + gfc->full_outer_loop = 0; + break; + + case 1: + gfc->filter_type = 0; /* 1 not yet coded */ + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + if (gfc->substep_shaping == 0) + gfc->substep_shaping = 2; + gfc->noise_shaping_amp = 2; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; + gfc->full_outer_loop = 0; + break; + + case 0: + gfc->filter_type = 0; /* 1 not yet coded */ + gfc->psymodel = 1; + gfc->quantization = 1; + if (gfc->noise_shaping == 0) + gfc->noise_shaping = 1; + if (gfc->substep_shaping == 0) + gfc->substep_shaping = 2; + gfc->noise_shaping_amp = 2; + gfc->noise_shaping_stop = 1; + if (gfc->subblock_gain == -1) + gfc->subblock_gain = 1; + gfc->use_best_huffman = 1; /*type 2 disabled because of it slowness, + in favor of full outer loop search */ + gfc->full_outer_loop = 1; + break; + } + +} + + + + + + + +/******************************************************************** + * initialize internal params based on data in gf + * (globalflags struct filled in by calling program) + * + * OUTLINE: + * + * We first have some complex code to determine bitrate, + * output samplerate and mode. It is complicated by the fact + * that we allow the user to set some or all of these parameters, + * and need to determine best possible values for the rest of them: + * + * 1. set some CPU related flags + * 2. check if we are mono->mono, stereo->mono or stereo->stereo + * 3. compute bitrate and output samplerate: + * user may have set compression ratio + * user may have set a bitrate + * user may have set a output samplerate + * 4. set some options which depend on output samplerate + * 5. compute the actual compression ratio + * 6. set mode based on compression ratio + * + * The remaining code is much simpler - it just sets options + * based on the mode & compression ratio: + * + * set allow_diff_short based on mode + * select lowpass filter based on compression ratio & mode + * set the bitrate index, and min/max bitrates for VBR modes + * disable VBR tag if it is not appropriate + * initialize the bitstream + * initialize scalefac_band data + * set sideinfo_len (based on channels, CRC, out_samplerate) + * write an id3v2 tag into the bitstream + * write VBR tag into the bitstream + * set mpeg1/2 flag + * estimate the number of frames (based on a lot of data) + * + * now we set more flags: + * nspsytune: + * see code + * VBR modes + * see code + * CBR/ABR + * see code + * + * Finally, we set the algorithm flags based on the gfp->quality value + * lame_init_qval(gfp); + * + ********************************************************************/ +int +lame_init_params(lame_global_flags * const gfp) +{ + + int i; + int j; + lame_internal_flags *gfc = gfp->internal_flags; + + gfc->Class_ID = 0; + + /* report functions */ + gfc->report.msgf = gfp->report.msgf; + gfc->report.debugf = gfp->report.debugf; + gfc->report.errorf = gfp->report.errorf; + + + if (gfp->asm_optimizations.amd3dnow ) + gfc->CPU_features.AMD_3DNow = has_3DNow(); + else + gfc->CPU_features.AMD_3DNow = 0; + + if (gfp->asm_optimizations.mmx ) + gfc->CPU_features.MMX = has_MMX(); + else + gfc->CPU_features.MMX = 0; + + if (gfp->asm_optimizations.sse ) { + gfc->CPU_features.SSE = has_SSE(); + gfc->CPU_features.SSE2 = has_SSE2(); + } else { + gfc->CPU_features.SSE = 0; + gfc->CPU_features.SSE2 = 0; + } + + + if (NULL == gfc->ATH) + gfc->ATH = calloc(1, sizeof(ATH_t)); + + if (NULL == gfc->ATH) + return -2; /* maybe error codes should be enumerated in lame.h ?? */ + + if (NULL == gfc->PSY) + gfc->PSY = calloc(1, sizeof(PSY_t)); + if (NULL == gfc->PSY) + return -2; + + if (NULL == gfc->rgdata) + gfc->rgdata = calloc(1, sizeof(replaygain_t)); + if (NULL == gfc->rgdata) + return -2; + + gfc->channels_in = gfp->num_channels; + if (gfc->channels_in == 1) + gfp->mode = MONO; + gfc->channels_out = (gfp->mode == MONO) ? 1 : 2; + gfc->mode_ext = MPG_MD_MS_LR; + if (gfp->mode == MONO) + gfp->force_ms = 0; /* don't allow forced mid/side stereo for mono output */ + + if (gfp->VBR == vbr_off && + gfp->VBR_mean_bitrate_kbps != 128 && gfp->brate == 0) + gfp->brate = gfp->VBR_mean_bitrate_kbps; + + + if (gfp->VBR != vbr_off) + gfp->free_format = 0; /* VBR can't be mixed with free format */ + + if (gfp->VBR == vbr_off && gfp->brate == 0) { + /* no bitrate or compression ratio specified, use 11.025 */ + if (gfp->compression_ratio == 0) + gfp->compression_ratio = 11.025; /* rate to compress a CD down to exactly 128000 bps */ + } + + /* find bitrate if user specify a compression ratio */ + if (gfp->VBR == vbr_off && gfp->compression_ratio > 0) { + + if (gfp->out_samplerate == 0) + gfp->out_samplerate = map2MP3Frequency( (int)( 0.97 * gfp->in_samplerate ) ); /* round up with a margin of 3% */ + + /* choose a bitrate for the output samplerate which achieves + * specified compression ratio + */ + gfp->brate = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp-> + compression_ratio); + + /* we need the version for the bitrate table look up */ + gfc->samplerate_index = SmpFrqIndex(gfp->out_samplerate, &gfp->version); + + if (!gfp->free_format) /* for non Free Format find the nearest allowed bitrate */ + gfp->brate = + FindNearestBitrate(gfp->brate, gfp->version); + } + + if (gfp->VBR != vbr_off && gfp->brate >= 320) + gfp->VBR = vbr_off; /* at 160 kbps (MPEG-2/2.5)/ 320 kbps (MPEG-1) only Free format or CBR are possible, no VBR */ + + + + + /****************************************************************/ + /* if a filter has not been enabled, see if we should add one: */ + /****************************************************************/ + if (gfp->lowpassfreq == 0) { + double lowpass = 16000; + double highpass; + + switch (gfp->VBR) { + case vbr_off: { + optimum_bandwidth(&lowpass, + &highpass, + gfp->brate); + break; + } + case vbr_abr: { + optimum_bandwidth(&lowpass, + &highpass, + gfp->VBR_mean_bitrate_kbps); + break; + } + default: { + switch (gfp->VBR_q) { + case 9: { + lowpass = 10000; + break; + } + case 8: { + lowpass = 12500; + break; + } + case 7: { + lowpass = 14900; + break; + } + case 6: { + lowpass = 15600; + break; + } + case 5: { + lowpass = 16000; + break; + } + case 4: { + lowpass = 17500; + break; + } + case 3: { + lowpass = 18000; + break; + } + case 2: { + lowpass = 18600; + break; + } + case 1: { + lowpass = 19000; + break; + } + case 0: { + lowpass = 19500; + break; + } + } + } + } + + if (gfp->mode == MONO && (gfp->VBR == vbr_off || gfp->VBR == vbr_abr)) + lowpass *= 1.5; + + gfp->lowpassfreq = lowpass; + } + + + if (gfp->out_samplerate == 0) + gfp->out_samplerate = optimum_samplefreq( (int)gfp->lowpassfreq, gfp->in_samplerate); + + gfp->lowpassfreq = Min(20500, gfp->lowpassfreq); + gfp->lowpassfreq = Min(gfp->out_samplerate / 2, gfp->lowpassfreq); + + if (gfp->VBR == vbr_off) { + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp->brate); + } + if (gfp->VBR == vbr_abr) { + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp-> + VBR_mean_bitrate_kbps); + } + + /* do not compute ReplayGain values and do not find the peak sample + if we can't store them */ + if (!gfp->bWriteVbrTag){ + gfp->findReplayGain = 0; + gfp->decode_on_the_fly = 0; + gfc->findPeakSample = 0; + } + gfc->findReplayGain = gfp->findReplayGain; + gfc->decode_on_the_fly = gfp->decode_on_the_fly; + + if (gfc->decode_on_the_fly) + gfc->findPeakSample = 1; + + if (gfc->findReplayGain) { + if (InitGainAnalysis(gfc->rgdata, gfp->out_samplerate) == INIT_GAIN_ANALYSIS_ERROR) + return -6; + } + +#ifdef DECODE_ON_THE_FLY + if (gfc->decode_on_the_fly && !gfp->decode_only) + lame_decode_init(); /* initialize the decoder */ +#endif + + gfc->mode_gr = gfp->out_samplerate <= 24000 ? 1 : 2; /* Number of granules per frame */ + gfp->framesize = 576 * gfc->mode_gr; + gfp->encoder_delay = ENCDELAY; + + gfc->resample_ratio = (double) gfp->in_samplerate / gfp->out_samplerate; + + /* + * sample freq bitrate compression ratio + * [kHz] [kbps/channel] for 16 bit input + * 44.1 56 12.6 + * 44.1 64 11.025 + * 44.1 80 8.82 + * 22.05 24 14.7 + * 22.05 32 11.025 + * 22.05 40 8.82 + * 16 16 16.0 + * 16 24 10.667 + * + */ + /* + * For VBR, take a guess at the compression_ratio. + * For example: + * + * VBR_q compression like + * - 4.4 320 kbps/44 kHz + * 0...1 5.5 256 kbps/44 kHz + * 2 7.3 192 kbps/44 kHz + * 4 8.8 160 kbps/44 kHz + * 6 11 128 kbps/44 kHz + * 9 14.7 96 kbps + * + * for lower bitrates, downsample with --resample + */ + + switch (gfp->VBR) { + case vbr_mt: + case vbr_rh: + case vbr_mtrh: + { + /*numbers are a bit strange, but they determine the lowpass value*/ + FLOAT cmp[] = { 5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14, 15, 16.5 }; + gfp->compression_ratio = cmp[gfp->VBR_q]; + } + break; + case vbr_abr: + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * + gfp-> + VBR_mean_bitrate_kbps); + break; + default: + gfp->compression_ratio = + gfp->out_samplerate * 16 * gfc->channels_out / (1.e3 * gfp->brate); + break; + } + + + /* mode = -1 (not set by user) or + * mode = MONO (because of only 1 input channel). + * If mode has not been set, then select J-STEREO + */ + if (gfp->mode == NOT_SET) { + gfp->mode = JOINT_STEREO; + } + + + /* apply user driven high pass filter */ + if (gfp->highpassfreq > 0) { + gfc->highpass1 = 2. * gfp->highpassfreq; + + if (gfp->highpasswidth >= 0) + gfc->highpass2 = + 2. * (gfp->highpassfreq + gfp->highpasswidth); + else /* 0% above on default */ + gfc->highpass2 = + (1 + 0.00) * 2. * gfp->highpassfreq; + + gfc->highpass1 /= gfp->out_samplerate; + gfc->highpass2 /= gfp->out_samplerate; + } + + /* apply user driven low pass filter */ + if (gfp->lowpassfreq > 0) { + gfc->lowpass2 = 2. * gfp->lowpassfreq; + if (gfp->lowpasswidth >= 0) { + gfc->lowpass1 = + 2. * (gfp->lowpassfreq - gfp->lowpasswidth); + if (gfc->lowpass1 < 0) /* has to be >= 0 */ + gfc->lowpass1 = 0; + } + else { /* 0% below on default */ + gfc->lowpass1 = + (1 - 0.00) * 2. * gfp->lowpassfreq; + } + gfc->lowpass1 /= gfp->out_samplerate; + gfc->lowpass2 /= gfp->out_samplerate; + } + + + + + /**********************************************************************/ + /* compute info needed for polyphase filter (filter type==0, default) */ + /**********************************************************************/ + lame_init_params_ppflt(gfp); + + + /*******************************************************/ + /* compute info needed for FIR filter (filter_type==1) */ + /*******************************************************/ + /* not yet coded */ + + + + /******************************************************* + * samplerate and bitrate index + *******************************************************/ + gfc->samplerate_index = SmpFrqIndex(gfp->out_samplerate, &gfp->version); + if (gfc->samplerate_index < 0) + return -1; + + if (gfp->VBR == vbr_off) { + if (gfp->free_format) { + gfc->bitrate_index = 0; + } + else { + gfc->bitrate_index = BitrateIndex(gfp->brate, gfp->version, + gfp->out_samplerate); + if (gfc->bitrate_index < 0) + return -1; + } + } + + /* for CBR, we will write an "info" tag. */ + /* if ((gfp->VBR == vbr_off)) */ + /* gfp->bWriteVbrTag = 0; */ + +#if defined(HAVE_GTK) + if (gfp->analysis) + gfp->bWriteVbrTag = 0; + + /* some file options not allowed if output is: not specified or stdout */ + if (gfc->pinfo != NULL) + gfp->bWriteVbrTag = 0; /* disable Xing VBR tag */ +#endif + + init_bit_stream_w(gfc); + + j = gfc->samplerate_index + + (3 * gfp->version) + 6 * (gfp->out_samplerate < 16000); + for (i = 0; i < SBMAX_l + 1; i++) + gfc->scalefac_band.l[i] = sfBandIndex[j].l[i]; + + for (i = 0; i < PSFB21 + 1; i++){ + int size = (gfc->scalefac_band.l[ 22 ] - gfc->scalefac_band.l[ 21 ])/PSFB21; + int start = gfc->scalefac_band.l[ 21 ] + i*size; + gfc->scalefac_band.psfb21[i] = start; + } + gfc->scalefac_band.psfb21[PSFB21] = 576; + + for (i = 0; i < SBMAX_s + 1; i++) + gfc->scalefac_band.s[i] = sfBandIndex[j].s[i]; + + for (i = 0; i < PSFB12 + 1; i++){ + int size = (gfc->scalefac_band.s[ 13 ] - gfc->scalefac_band.s[ 12 ])/PSFB12; + int start = gfc->scalefac_band.s[ 12 ] + i*size; + gfc->scalefac_band.psfb12[i] = start; + } + gfc->scalefac_band.psfb12[PSFB12] = 192; + + /* determine the mean bitrate for main data */ + if (gfp->version == 1) /* MPEG 1 */ + gfc->sideinfo_len = (gfc->channels_out == 1) ? 4 + 17 : 4 + 32; + else /* MPEG 2 */ + gfc->sideinfo_len = (gfc->channels_out == 1) ? 4 + 9 : 4 + 17; + + if (gfp->error_protection) + gfc->sideinfo_len += 2; + + lame_init_bitstream(gfp); + + gfc->Class_ID = LAME_ID; + + /*if (gfp->exp_nspsytune & 1)*/ { + int i; + + for (i = 0; i < 19; i++) + gfc->nsPsy.pefirbuf[i] = 700*gfc->mode_gr*gfc->channels_out; + + if (gfp->ATHtype == -1) + gfp->ATHtype = 4; + + if (gfp->exp_nspsytune2.pointer[0]) + gfc->nsPsy.pass1fp = gfp->exp_nspsytune2.pointer[0]; + else + gfc->nsPsy.pass1fp = NULL; + } + + assert( gfp->VBR_q <= 9 ); + assert( gfp->VBR_q >= 0 ); + + gfc->PSY->tonalityPatch = 0; + + switch (gfp->VBR) { + + case vbr_mt: + gfp->VBR = vbr_mtrh; + + case vbr_mtrh: { + + apply_preset(gfp, 500 - (gfp->VBR_q*10), 0); + + if (gfp->quality < 0) gfp->quality = LAME_DEFAULT_QUALITY; + if (gfp->quality > 7) { + gfp->quality = 7; /* needs psymodel */ + ERRORF( gfc, "VBR needs a psymodel, switching to quality level 7\n"); + } + + /* tonality + */ + if (gfp->cwlimit <= 0) gfp->cwlimit = 0.42 * gfp->out_samplerate; + gfc->PSY->tonalityPatch = 1; + + gfc->PSY->mask_adjust = gfp->maskingadjust; + gfc->PSY->mask_adjust_short = gfp->maskingadjust_short; + + /* sfb21 extra only with MPEG-1 at higher sampling rates + */ + if ( gfp->experimentalY ) + gfc->sfb21_extra = 0; + else + gfc->sfb21_extra = (gfp->out_samplerate > 44000); + + break; + + } + case vbr_rh: { + + apply_preset(gfp, 500 - (gfp->VBR_q*10), 0); + + gfc->PSY->mask_adjust = gfp->maskingadjust; + gfc->PSY->mask_adjust_short = gfp->maskingadjust_short; + + if ( gfp->psymodel == PSY_GPSYCHO ) + gfc->PSY->tonalityPatch = 1; + + /* sfb21 extra only with MPEG-1 at higher sampling rates + */ + if ( gfp->experimentalY ) + gfc->sfb21_extra = 0; + else + gfc->sfb21_extra = (gfp->out_samplerate > 44000); + + /* VBR needs at least the output of GPSYCHO, + * so we have to garantee that by setting a minimum + * quality level, actually level 6 does it. + * down to level 6 + */ + if (gfp->quality > 6) + gfp->quality = 6; + + + if (gfp->quality < 0) + gfp->quality = LAME_DEFAULT_QUALITY; + + break; + } + + default: /* cbr/abr */{ + vbr_mode vbrmode; + + /* no sfb21 extra with CBR code + */ + gfc->sfb21_extra = 0; + + if (gfp->quality < 0) + gfp->quality = LAME_DEFAULT_QUALITY; + + + vbrmode = lame_get_VBR(gfp); + if (vbrmode == vbr_off) + lame_set_VBR_mean_bitrate_kbps(gfp, gfp->brate); + /* second, set parameters depending on bitrate */ + apply_preset(gfp, gfp->VBR_mean_bitrate_kbps, 0); + lame_set_VBR(gfp, vbrmode); + + gfc->PSY->mask_adjust = gfp->maskingadjust; + gfc->PSY->mask_adjust_short = gfp->maskingadjust_short; + + break; + } + } + + /*initialize default values common for all modes*/ + + + if (lame_get_VBR(gfp) != vbr_off) { /* choose a min/max bitrate for VBR */ + /* if the user didn't specify VBR_max_bitrate: */ + gfc->VBR_min_bitrate = 1; /* default: allow 8 kbps (MPEG-2) or 32 kbps (MPEG-1) */ + gfc->VBR_max_bitrate = 14; /* default: allow 160 kbps (MPEG-2) or 320 kbps (MPEG-1) */ + + if (gfp->VBR_min_bitrate_kbps) + if ( + (gfc->VBR_min_bitrate = + BitrateIndex(gfp->VBR_min_bitrate_kbps, gfp->version, + gfp->out_samplerate)) < 0) return -1; + if (gfp->VBR_max_bitrate_kbps) + if ( + (gfc->VBR_max_bitrate = + BitrateIndex(gfp->VBR_max_bitrate_kbps, gfp->version, + gfp->out_samplerate)) < 0) return -1; + + gfp->VBR_min_bitrate_kbps = + bitrate_table[gfp->version][gfc->VBR_min_bitrate]; + gfp->VBR_max_bitrate_kbps = + bitrate_table[gfp->version][gfc->VBR_max_bitrate]; + + gfp->VBR_mean_bitrate_kbps = + Min(bitrate_table[gfp->version][gfc->VBR_max_bitrate], + gfp->VBR_mean_bitrate_kbps); + gfp->VBR_mean_bitrate_kbps = + Max(bitrate_table[gfp->version][gfc->VBR_min_bitrate], + gfp->VBR_mean_bitrate_kbps); + + + } + + + /* just another daily changing developer switch */ + if ( gfp->tune ) gfc->PSY->mask_adjust = gfp->tune_value_a; + + /* initialize internal qval settings */ + lame_init_qval(gfp); + + + /* automatic ATH adjustment on + */ + if ( gfp->athaa_type < 0 ) + gfc->ATH->use_adjust = 3; + else + gfc->ATH->use_adjust = gfp->athaa_type; + + + /* initialize internal adaptive ATH settings -jd */ + gfc->ATH->aa_sensitivity_p = pow( 10.0, gfp->athaa_sensitivity / -10.0 ); + + + gfc->PSY->cwlimit = gfp->cwlimit <= 0 ? 8871.7f : gfp->cwlimit; + + if (gfp->short_blocks == short_block_not_set) { + gfp->short_blocks = short_block_allowed; + } + + /*Note Jan/2003: Many hardware decoders cannot handle short blocks in regular + stereo mode unless they are coupled (same type in both channels) + it is a rare event (1 frame per min. or so) that LAME would use + uncoupled short blocks, so lets turn them off until we decide + how to handle this. No other encoders allow uncoupled short blocks, + even though it is in the standard. */ + /* rh 20040217: coupling makes no sense for mono and dual-mono streams + */ + if (gfp->short_blocks == short_block_allowed && (gfp->mode == JOINT_STEREO || gfp->mode == STEREO) ) { + gfp->short_blocks = short_block_coupled; + } + + + if (lame_get_quant_comp(gfp) < 0 ) lame_set_quant_comp(gfp, 1); + if (lame_get_quant_comp_short(gfp) < 0 ) lame_set_quant_comp_short(gfp, 0); + + if (lame_get_msfix(gfp) < 0 ) lame_set_msfix(gfp, 0); + + /* select psychoacoustic model */ + if ((lame_get_psy_model(gfp) < 0) || + (lame_get_psy_model(gfp) == PSY_NSPSYTUNE)) { + lame_set_psy_model(gfp, PSY_NSPSYTUNE); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 1); + } else { + lame_set_psy_model(gfp, PSY_GPSYCHO); + lame_set_exp_nspsytune(gfp, (lame_get_exp_nspsytune(gfp) >> 1) << 1); + } + + + if (lame_get_short_threshold_lrm(gfp) < 0 ) lame_set_short_threshold_lrm(gfp, NSATTACKTHRE); + if (lame_get_short_threshold_s(gfp) < 0 ) lame_set_short_threshold_s(gfp, NSATTACKTHRE_S); + + if ( gfp->scale < 0 ) gfp->scale = 1; + + if (gfp->ATHtype < 0) gfp->ATHtype = 4; + + if ( gfp->ATHcurve < 0 ) gfp->ATHcurve = 4; + + if ( gfp->athaa_loudapprox < 0 ) gfp->athaa_loudapprox = 2; + + if (gfp->interChRatio < 0 ) gfp->interChRatio = 0; + + if (gfp->useTemporal < 0 ) gfp->useTemporal = 1; /* on by default */ + + + + /* padding method as described in + * "MPEG-Layer3 / Bitstream Syntax and Decoding" + * by Martin Sieler, Ralph Sperschneider + * + * note: there is no padding for the very first frame + * + * Robert Hegemann 2000-06-22 + */ + gfc->slot_lag = gfc->frac_SpF = 0; + if (gfp->VBR == vbr_off) + gfc->slot_lag = gfc->frac_SpF + = ((gfp->version+1)*72000L*gfp->brate) % gfp->out_samplerate; + + /* mid side sparsing */ + gfc->sparsing = gfp->sparsing; + gfc->sparseA = gfp->sparse_low; + gfc->sparseB = gfp->sparse_low-gfp->sparse_high; + if ( gfc->sparseA < 0 ) gfc->sparseA = 0; + if ( gfc->sparseB < 0 ) gfc->sparseB = 0; + if ( gfc->sparseB > gfc->sparseA ) gfc->sparseB = gfc->sparseA; + + iteration_init(gfp); + psymodel_init(gfp); + + return 0; +} + +/* + * print_config + * + * Prints some selected information about the coding parameters via + * the macro command MSGF(), which is currently mapped to lame_errorf + * (reports via a error function?), which is a printf-like function + * for <stderr>. + */ + +void +lame_print_config(const lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + double out_samplerate = gfp->out_samplerate; + double in_samplerate = gfp->out_samplerate * gfc->resample_ratio; + + MSGF(gfc, "LAME %s %s (%s)\n", get_lame_version(), get_lame_os_bitness(), get_lame_url()); + + if (LAME_ALPHA_VERSION) + MSGF(gfc, "warning: alpha versions should be used for testing only\n"); + + if (gfc->CPU_features.MMX + || gfc->CPU_features.AMD_3DNow + || gfc->CPU_features.SSE || gfc->CPU_features.SSE2) { + MSGF(gfc, "CPU features: "); + + if (gfc->CPU_features.MMX) +#ifdef MMX_choose_table + MSGF(gfc, "MMX (ASM used)"); +#else + MSGF(gfc, "MMX"); +#endif + if (gfc->CPU_features.AMD_3DNow) +#ifdef HAVE_NASM + MSGF(gfc, ", 3DNow! (ASM used)"); +#else + MSGF(gfc, ", 3DNow!"); +#endif + if (gfc->CPU_features.SSE) +#ifdef HAVE_XMMINTRIN_H + MSGF(gfc, ", SSE (ASM used)"); +#else + MSGF(gfc, ", SSE"); +#endif + if (gfc->CPU_features.SSE2) + MSGF(gfc, ", SSE2"); + MSGF(gfc, "\n"); + } + + if (gfp->num_channels == 2 && gfc->channels_out == 1 /* mono */ ) { + MSGF + (gfc, + "Autoconverting from stereo to mono. Setting encoding to mono mode.\n"); + } + + if (gfc->resample_ratio != 1.) { + MSGF(gfc, "Resampling: input %g kHz output %g kHz\n", + 1.e-3 * in_samplerate, 1.e-3 * out_samplerate); + } + + if (gfc->filter_type == 0) { + if (gfc->highpass2 > 0.) + MSGF + (gfc, + "Using polyphase highpass filter, transition band: %5.0f Hz - %5.0f Hz\n", + 0.5 * gfc->highpass1 * out_samplerate, + 0.5 * gfc->highpass2 * out_samplerate); + if (0. < gfc->lowpass1 && gfc->lowpass1 < 1.) { + MSGF + (gfc, + "Using polyphase lowpass filter, transition band: %5.0f Hz - %5.0f Hz\n", + 0.5 * gfc->lowpass1 * out_samplerate, + 0.5 * gfc->lowpass2 * out_samplerate); + } + else { + MSGF(gfc, "polyphase lowpass filter disabled\n"); + } + } + else { + MSGF(gfc, "polyphase filters disabled\n"); + } + + if (gfp->free_format) { + MSGF(gfc, + "Warning: many decoders cannot handle free format bitstreams\n"); + if (gfp->brate > 320) { + MSGF + (gfc, + "Warning: many decoders cannot handle free format bitrates >320 kbps (see documentation)\n"); + } + } +} + + +/** rh: + * some pretty printing is very welcome at this point! + * so, if someone is willing to do so, please do it! + * add more, if you see more... + */ +void +lame_print_internals( const lame_global_flags * gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + const char * pc = ""; + + /* compiler/processor optimizations, operational, etc. + */ + MSGF( gfc, "\nmisc:\n\n" ); + + MSGF( gfc, "\tscaling: %g\n", gfp->scale ); + MSGF( gfc, "\tch0 (left) scaling: %g\n", gfp->scale_left ); + MSGF( gfc, "\tch1 (right) scaling: %g\n", gfp->scale_right ); + MSGF( gfc, "\tfilter type: %d\n", gfc->filter_type ); + pc = gfc->quantization ? "xr^3/4" : "ISO"; + MSGF( gfc, "\tquantization: %s\n", pc ); + switch( gfc->use_best_huffman ) { + default: pc = "normal"; break; + case 1: pc = "best (outside loop)"; break; + case 2: pc = "best (inside loop, slow)"; break; + } + MSGF( gfc, "\thuffman search: %s\n", pc ); + MSGF( gfc, "\texperimental Y=%d\n", gfp->experimentalY); + MSGF( gfc, "\t...\n" ); + + /* everything controlling the stream format + */ + MSGF( gfc, "\nstream format:\n\n" ); + switch ( gfp->version ) { + case 0: pc = "2.5"; break; + case 1: pc = "1"; break; + case 2: pc = "2"; break; + default: pc = "?"; break; + } + MSGF( gfc, "\tMPEG-%s Layer 3\n", pc ); + switch ( gfp->mode ) { + case JOINT_STEREO: pc = "joint stereo"; break; + case STEREO : pc = "stereo"; break; + case DUAL_CHANNEL: pc = "dual channel"; break; + case MONO : pc = "mono"; break; + case NOT_SET : pc = "not set (error)"; break; + default : pc = "unknown (error)"; break; + } + MSGF( gfc, "\t%d channel - %s\n", gfc->channels_out, pc ); + + switch (gfp->VBR) { + case vbr_off : pc = "off"; break; + default : pc = "all"; break; + } + MSGF( gfc, "\tpadding: %s\n", pc ); + + if ( vbr_default == gfp->VBR ) pc = "(default)"; + else if ( gfp->free_format ) pc = "(free format)"; + else pc = ""; + switch ( gfp->VBR ) { + case vbr_off : MSGF( gfc, "\tconstant bitrate - CBR %s\n", pc ); break; + case vbr_abr : MSGF( gfc, "\tvariable bitrate - ABR %s\n", pc ); break; + case vbr_rh : MSGF( gfc, "\tvariable bitrate - VBR rh %s\n", pc ); break; + case vbr_mt : MSGF( gfc, "\tvariable bitrate - VBR mt %s\n", pc ); break; + case vbr_mtrh: MSGF( gfc, "\tvariable bitrate - VBR mtrh %s\n", pc ); break; + default : MSGF( gfc, "\t ?? oops, some new one ?? \n" ); break; + } + if (gfp->bWriteVbrTag) + MSGF( gfc, "\tusing LAME Tag\n" ); + MSGF( gfc, "\t...\n" ); + + /* everything controlling psychoacoustic settings, like ATH, etc. + */ + MSGF( gfc, "\npsychoacoustic:\n\n" ); + + MSGF( gfc, "\tusing psychoacoustic model: %d\n", gfc->psymodel); + MSGF( gfc, "\tpsychoacoustic model: %s\n", (gfp->psymodel == PSY_NSPSYTUNE) ? "NSPsytune" : "GPsycho" ); + MSGF( gfc, "\ttonality estimation limit: %f Hz %s\n", gfc->PSY->cwlimit, (gfp->psymodel == PSY_NSPSYTUNE) ? "(not relevant)" : ""); + switch ( gfp->short_blocks ) { + default: + case short_block_not_set: pc = "?"; break; + case short_block_allowed: pc = "allowed"; break; + case short_block_coupled: pc = "channel coupled"; break; + case short_block_dispensed: pc = "dispensed"; break; + case short_block_forced: pc = "forced"; break; + } + MSGF( gfc, "\tusing short blocks: %s\n", pc ); + MSGF( gfc, "\tsubblock gain: %d\n", gfc->subblock_gain ); + MSGF( gfc, "\tadjust masking: %g dB\n", gfp->maskingadjust ); + MSGF( gfc, "\tadjust masking short: %g dB\n", gfp->maskingadjust_short ); + MSGF( gfc, "\tquantization comparison: %d\n", gfp->quant_comp ); + MSGF( gfc, "\t ^ comparison short blocks: %d\n", gfp->quant_comp_short ); + MSGF( gfc, "\tnoise shaping: %d\n", gfc->noise_shaping ); + MSGF( gfc, "\t ^ amplification: %d\n", gfc->noise_shaping_amp ); + MSGF( gfc, "\t ^ stopping: %d\n", gfc->noise_shaping_stop ); + + pc = "using"; + if ( gfp->ATHshort ) pc = "the only masking for short blocks"; + if ( gfp->ATHonly ) pc = "the only masking"; + if ( gfp->noATH ) pc = "not used"; + MSGF( gfc, "\tATH: %s\n", pc ); + MSGF( gfc, "\t ^ type: %d\n", gfp->ATHtype ); + MSGF( gfc, "\t ^ shape: %g%s\n", gfp->ATHcurve, " (only for type 4)" ); + MSGF( gfc, "\t ^ level adjustement: %g\n", gfp->ATHlower ); + MSGF( gfc, "\t ^ adjust type: %d\n", gfc->ATH->use_adjust ); + MSGF( gfc, "\t ^ adjust sensitivity power: %f\n", gfc->ATH->aa_sensitivity_p ); + MSGF( gfc, "\t ^ adapt threshold type: %d\n", gfp->athaa_loudapprox ); + + if ( gfp->psymodel == PSY_NSPSYTUNE ) { + MSGF(gfc, "\texperimental psy tunings by Naoki Shibata\n" ); + MSGF(gfc, "\t adjust masking bass=%g dB, alto=%g dB, treble=%g dB, sfb21=%g dB\n", + 10*log10(gfc->nsPsy.longfact[ 0]), + 10*log10(gfc->nsPsy.longfact[ 7]), + 10*log10(gfc->nsPsy.longfact[14]), + 10*log10(gfc->nsPsy.longfact[21])); + } + pc = gfp->useTemporal ? "yes" : "no"; + MSGF( gfc, "\tusing temporal masking effect: %s\n", pc ); + MSGF( gfc, "\tinterchannel masking ratio: %g\n", gfp->interChRatio ); + MSGF( gfc, "\t...\n" ); + + /* that's all ? + */ + MSGF( gfc, "\n" ); + return; +} + + + +/* routine to feed exactly one frame (gfp->framesize) worth of data to the +encoding engine. All buffering, resampling, etc, handled by calling +program. +*/ +int +lame_encode_frame(lame_global_flags * gfp, + sample_t inbuf_l[], sample_t inbuf_r[], + unsigned char *mp3buf, int mp3buf_size) +{ + int ret; + ret = lame_encode_mp3_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3buf_size); + gfp->frameNum++; + return ret; +} + +static int +update_inbuffer_size(lame_internal_flags * gfc, const int nsamples) +{ + if (gfc->in_buffer_0 == 0 || gfc->in_buffer_nsamples < nsamples) { + if (gfc->in_buffer_0) { + free(gfc->in_buffer_0); + } + if (gfc->in_buffer_1) { + free(gfc->in_buffer_1); + } + gfc->in_buffer_0 = calloc(sizeof(sample_t), nsamples); + gfc->in_buffer_1 = calloc(sizeof(sample_t), nsamples); + gfc->in_buffer_nsamples = nsamples; + } + if (gfc->in_buffer_0 == NULL || gfc->in_buffer_1 == NULL) { + if (gfc->in_buffer_0) { + free(gfc->in_buffer_0); + } + if (gfc->in_buffer_1) { + free(gfc->in_buffer_1); + } + gfc->in_buffer_0 = 0; + gfc->in_buffer_1 = 0; + gfc->in_buffer_nsamples = 0; + ERRORF(gfc, "Error: can't allocate in_buffer buffer\n"); + return -2; + } + return 0; +} + + +/* + * THE MAIN LAME ENCODING INTERFACE + * mt 3/00 + * + * input pcm data, output (maybe) mp3 frames. + * This routine handles all buffering, resampling and filtering for you. + * The required mp3buffer_size can be computed from num_samples, + * samplerate and encoding rate, but here is a worst case estimate: + * + * mp3buffer_size in bytes = 1.25*num_samples + 7200 + * + * return code = number of bytes output in mp3buffer. can be 0 + * + * NOTE: this routine uses LAME's internal PCM data representation, + * 'sample_t'. It should not be used by any application. + * applications should use lame_encode_buffer(), + * lame_encode_buffer_float() + * lame_encode_buffer_int() + * etc... depending on what type of data they are working with. +*/ +int +lame_encode_buffer_sample_t(lame_global_flags * gfp, + sample_t buffer_l[], + sample_t buffer_r[], + int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int mp3size = 0, ret, i, ch, mf_needed; + int mp3out; + sample_t *mfbuf[2]; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + /* copy out any tags that may have been written into bitstream */ + mp3out = copy_buffer(gfc,mp3buf,mp3buf_size,0); + if (mp3out<0) return mp3out; /* not enough buffer space */ + mp3buf += mp3out; + mp3size += mp3out; + + + in_buffer[0]=buffer_l; + in_buffer[1]=buffer_r; + + + /* Apply user defined re-scaling */ + + /* user selected scaling of the samples */ + if (gfp->scale != 0 && gfp->scale != 1.0) { + for (i=0 ; i<nsamples; ++i) { + in_buffer[0][i] *= gfp->scale; + if (gfc->channels_out == 2) + in_buffer[1][i] *= gfp->scale; + } + } + + /* user selected scaling of the channel 0 (left) samples */ + if (gfp->scale_left != 0 && gfp->scale_left != 1.0) { + for (i=0 ; i<nsamples; ++i) { + in_buffer[0][i] *= gfp->scale_left; + } + } + + /* user selected scaling of the channel 1 (right) samples */ + if (gfp->scale_right != 0 && gfp->scale_right != 1.0) { + for (i=0 ; i<nsamples; ++i) { + in_buffer[1][i] *= gfp->scale_right; + } + } + + /* Downsample to Mono if 2 channels in and 1 channel out */ + if (gfp->num_channels == 2 && gfc->channels_out == 1) { + for (i=0; i<nsamples; ++i) { + in_buffer[0][i] = + 0.5 * ((FLOAT) in_buffer[0][i] + in_buffer[1][i]); + in_buffer[1][i] = 0.0; + } + } + + + /* some sanity checks */ +#if ENCDELAY < MDCTDELAY +# error ENCDELAY is less than MDCTDELAY, see encoder.h +#endif +#if FFTOFFSET > BLKSIZE +# error FFTOFFSET is greater than BLKSIZE, see encoder.h +#endif + + mf_needed = BLKSIZE + gfp->framesize - FFTOFFSET; /* amount needed for FFT */ + /*mf_needed = Max(mf_needed, 286 + 576 * (1 + gfc->mode_gr)); */ + mf_needed = Max(mf_needed, 512+gfp->framesize-32 ); + + assert(MFSIZE >= mf_needed); + + mfbuf[0] = gfc->mfbuf[0]; + mfbuf[1] = gfc->mfbuf[1]; + + while (nsamples > 0) { + int n_in = 0; /* number of input samples processed with fill_buffer */ + int n_out = 0; /* number of samples output with fill_buffer */ + /* n_in <> n_out if we are resampling */ + + /* copy in new samples into mfbuf, with resampling */ + fill_buffer(gfp, mfbuf, in_buffer, nsamples, &n_in, &n_out); + + /* compute ReplayGain of resampled input if requested */ + if (gfc->findReplayGain && !gfc->decode_on_the_fly) + if (AnalyzeSamples(gfc->rgdata, &mfbuf[0][gfc->mf_size], &mfbuf[1][gfc->mf_size], n_out, gfc->channels_out) == GAIN_ANALYSIS_ERROR) + return -6; + + + + /* update in_buffer counters */ + nsamples -= n_in; + in_buffer[0] += n_in; + if (gfc->channels_out == 2) + in_buffer[1] += n_in; + + /* update mfbuf[] counters */ + gfc->mf_size += n_out; + assert(gfc->mf_size <= MFSIZE); + gfc->mf_samples_to_encode += n_out; + + + if (gfc->mf_size >= mf_needed) { + /* encode the frame. */ + /* mp3buf = pointer to current location in buffer */ + /* mp3buf_size = size of original mp3 output buffer */ + /* = 0 if we should not worry about the */ + /* buffer size because calling program is */ + /* to lazy to compute it */ + /* mp3size = size of data written to buffer so far */ + /* mp3buf_size-mp3size = amount of space avalable */ + + int buf_size=mp3buf_size - mp3size; + if (mp3buf_size==0) buf_size=0; + + ret = + lame_encode_frame(gfp, mfbuf[0], mfbuf[1], mp3buf,buf_size); + + if (ret < 0) return ret; + mp3buf += ret; + mp3size += ret; + + /* shift out old samples */ + gfc->mf_size -= gfp->framesize; + gfc->mf_samples_to_encode -= gfp->framesize; + for (ch = 0; ch < gfc->channels_out; ch++) + for (i = 0; i < gfc->mf_size; i++) + mfbuf[ch][i] = mfbuf[ch][i + gfp->framesize]; + } + } + assert(nsamples == 0); + + return mp3size; +} + + +int +lame_encode_buffer(lame_global_flags * gfp, + const short int buffer_l[], + const short int buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer_l[i]; + if (gfc->channels_in>1) in_buffer[1][i] = buffer_r[i]; + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + +int +lame_encode_buffer_float(lame_global_flags * gfp, + const float buffer_l[], + const float buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer_l[i]; + if (gfc->channels_in>1) in_buffer[1][i] = buffer_r[i]; + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + +int +lame_encode_buffer_int(lame_global_flags * gfp, + const int buffer_l[], + const int buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + /* internal code expects +/- 32768.0 */ + in_buffer[0][i] = buffer_l[i] * (1.0 / ( 1L << (8 * sizeof(int) - 16))); + if (gfc->channels_in>1) + in_buffer[1][i] = buffer_r[i] * (1.0 / ( 1L << (8 * sizeof(int) - 16))); + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + + + +int +lame_encode_buffer_long2(lame_global_flags * gfp, + const long buffer_l[], + const long buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + /* internal code expects +/- 32768.0 */ + in_buffer[0][i] = buffer_l[i] * (1.0 / ( 1L << (8 * sizeof(long) - 16))); + if (gfc->channels_in>1) + in_buffer[1][i] = buffer_r[i] * (1.0 / ( 1L << (8 * sizeof(long) - 16))); + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); + +} + + + +int +lame_encode_buffer_long(lame_global_flags * gfp, + const long buffer_l[], + const long buffer_r[], + const int nsamples, unsigned char *mp3buf, const int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (nsamples == 0) + return 0; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + /* make a copy of input buffer, changing type to sample_t */ + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer_l[i]; + if (gfc->channels_in>1) + in_buffer[1][i] = buffer_r[i]; + } + + return lame_encode_buffer_sample_t(gfp,in_buffer[0],in_buffer[1], + nsamples, mp3buf, mp3buf_size); +} + + + + + + + + + + + +int +lame_encode_buffer_interleaved(lame_global_flags * gfp, + short int buffer[], + int nsamples, + unsigned char *mp3buf, int mp3buf_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int i; + sample_t *in_buffer[2]; + + if (update_inbuffer_size( gfc, nsamples ) != 0) { + return -2; + } + + in_buffer[0] = gfc->in_buffer_0; + in_buffer[1] = gfc->in_buffer_1; + + for (i = 0; i < nsamples; i++) { + in_buffer[0][i] = buffer[2 * i]; + in_buffer[1][i] = buffer[2 * i + 1]; + } + return lame_encode_buffer_sample_t(gfp, in_buffer[0], in_buffer[1], nsamples, mp3buf, + mp3buf_size); +} + + +int +lame_encode(lame_global_flags * const gfp, + const short int in_buffer[2][1152], + unsigned char *const mp3buf, const int size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + if (gfc->Class_ID != LAME_ID) + return -3; + + return lame_encode_buffer(gfp, in_buffer[0], in_buffer[1], gfp->framesize, + mp3buf, size); +} + +/***************************************************************** + Flush mp3 buffer, pad with ancillary data so last frame is complete. + Reset reservoir size to 0 + but keep all PCM samples and MDCT data in memory + This option is used to break a large file into several mp3 files + that when concatenated together will decode with no gaps + Because we set the reservoir=0, they will also decode seperately + with no errors. +*********************************************************************/ +int +lame_encode_flush_nogap(lame_global_flags * gfp, + unsigned char *mp3buffer, int mp3buffer_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + flush_bitstream(gfp); + return copy_buffer(gfc,mp3buffer, mp3buffer_size,1); +} + + +/* called by lame_init_params. You can also call this after flush_nogap + if you want to write new id3v2 and Xing VBR tags into the bitstream */ +int +lame_init_bitstream(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfp->frameNum=0; + + id3tag_write_v2(gfp); +#ifdef BRHIST + /* initialize histogram data optionally used by frontend */ + memset(gfc->bitrate_stereoMode_Hist, 0, + sizeof(gfc->bitrate_stereoMode_Hist)); + memset(gfc->bitrate_blockType_Hist, 0, + sizeof(gfc->bitrate_blockType_Hist)); +#endif + + gfc->PeakSample = 0.0; + + /* Write initial VBR Header to bitstream and init VBR data */ + if (gfp->bWriteVbrTag) + InitVbrTag(gfp); + + + return 0; +} + + +/*****************************************************************/ +/* flush internal PCM sample buffers, then mp3 buffers */ +/* then write id3 v1 tags into bitstream. */ +/*****************************************************************/ + +int +lame_encode_flush(lame_global_flags * gfp, + unsigned char *mp3buffer, int mp3buffer_size) +{ + lame_internal_flags *gfc = gfp->internal_flags; + short int buffer[2][1152]; + int imp3 = 0, mp3count, mp3buffer_size_remaining; + + /* we always add POSTDELAY=288 padding to make sure granule with real + * data can be complety decoded (because of 50% overlap with next granule */ + int end_padding=POSTDELAY; + + memset(buffer, 0, sizeof(buffer)); + mp3count = 0; + + + while (gfc->mf_samples_to_encode > 0) { + + mp3buffer_size_remaining = mp3buffer_size - mp3count; + + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + /* send in a frame of 0 padding until all internal sample buffers + * are flushed + */ + imp3 = lame_encode_buffer(gfp, buffer[0], buffer[1], gfp->framesize, + mp3buffer, mp3buffer_size_remaining); + + /* don't count the above padding: */ + gfc->mf_samples_to_encode -= gfp->framesize; + if (gfc->mf_samples_to_encode < 0) { + /* we added extra padding to the end */ + end_padding += -gfc->mf_samples_to_encode; + } + + + if (imp3 < 0) { + /* some type of fatal error */ + return imp3; + } + mp3buffer += imp3; + mp3count += imp3; + } + + mp3buffer_size_remaining = mp3buffer_size - mp3count; + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + /* mp3 related stuff. bit buffer might still contain some mp3 data */ + flush_bitstream(gfp); + imp3 = copy_buffer(gfc,mp3buffer, mp3buffer_size_remaining, 1); + if (imp3 < 0) { + /* some type of fatal error */ + return imp3; + } + mp3buffer += imp3; + mp3count += imp3; + mp3buffer_size_remaining = mp3buffer_size - mp3count; + /* if user specifed buffer size = 0, dont check size */ + if (mp3buffer_size == 0) + mp3buffer_size_remaining = 0; + + /* write a id3 tag to the bitstream */ + id3tag_write_v1(gfp); + imp3 = copy_buffer(gfc,mp3buffer, mp3buffer_size_remaining, 0); + + if (imp3 < 0) { + return imp3; + } + mp3count += imp3; + gfp->encoder_padding=end_padding; + return mp3count; +} + +/*********************************************************************** + * + * lame_close () + * + * frees internal buffers + * + ***********************************************************************/ + +int +lame_close(lame_global_flags * gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + + if (gfc->Class_ID != LAME_ID) + return -3; + + if (gfp->exp_nspsytune2.pointer[0]) { + fclose((FILE *)gfp->exp_nspsytune2.pointer[0]); + gfp->exp_nspsytune2.pointer[0] = NULL; + } + + gfc->Class_ID = 0; + + /* this routien will free all malloc'd data in gfc, and then free gfc: */ + freegfc(gfc); + + gfp->internal_flags = NULL; + + if (gfp->lame_allocated_gfp) { + gfp->lame_allocated_gfp = 0; + free(gfp); + } + + return 0; +} + +/*****************************************************************/ +/* flush internal mp3 buffers, and free internal buffers */ +/*****************************************************************/ + +int +lame_encode_finish(lame_global_flags * gfp, + unsigned char *mp3buffer, int mp3buffer_size) +{ + int ret = lame_encode_flush(gfp, mp3buffer, mp3buffer_size); + + lame_close(gfp); + + return ret; +} + +/*****************************************************************/ +/* write VBR Xing header, and ID3 version 1 tag, if asked for */ +/*****************************************************************/ +void +lame_mp3_tags_fid(lame_global_flags * gfp, FILE * fpStream) +{ + if (gfp->bWriteVbrTag) { + /* Map VBR_q to Xing quality value: 0=worst, 100=best */ + int nQuality = ((9-gfp->VBR_q) * 100) / 9; + + /* Write Xing header again */ + if (fpStream && !fseek(fpStream, 0, SEEK_SET)) + PutVbrTag(gfp, fpStream, nQuality); + } +} + +lame_global_flags * +lame_init(void) +{ + lame_global_flags *gfp; + int ret; + + init_log_table(); + + gfp = calloc(1, sizeof(lame_global_flags)); + if (gfp == NULL) + return NULL; + + ret = lame_init_old(gfp); + if (ret != 0) { + free(gfp); + return NULL; + } + + gfp->lame_allocated_gfp = 1; + return gfp; +} + +/* initialize mp3 encoder */ +int +lame_init_old(lame_global_flags * gfp) +{ + lame_internal_flags *gfc; + + disable_FPE(); /* disable floating point exceptions */ + + memset(gfp, 0, sizeof(lame_global_flags)); + + if (NULL == + (gfc = gfp->internal_flags = + calloc(1, sizeof(lame_internal_flags)))) return -1; + + /* Global flags. set defaults here for non-zero values */ + /* see lame.h for description */ + /* set integer values to -1 to mean that LAME will compute the + * best value, UNLESS the calling program as set it + * (and the value is no longer -1) + */ + + + gfp->mode = NOT_SET; + gfp->original = 1; + gfp->in_samplerate = 1000 * 44.1; + gfp->num_channels = 2; + gfp->num_samples = MAX_U_32_NUM; + + gfp->bWriteVbrTag = 1; + gfp->quality = -1; + gfp->short_blocks = short_block_not_set; + gfc->subblock_gain = -1; + + gfp->lowpassfreq = 0; + gfp->highpassfreq = 0; + gfp->lowpasswidth = -1; + gfp->highpasswidth = -1; + + gfp->VBR = vbr_off; + gfp->VBR_q = 4; + gfp->ATHcurve = -1; + gfp->VBR_mean_bitrate_kbps = 128; + gfp->VBR_min_bitrate_kbps = 0; + gfp->VBR_max_bitrate_kbps = 0; + gfp->VBR_hard_min = 0; + gfc->VBR_min_bitrate = 1; /* not 0 ????? */ + gfc->VBR_max_bitrate = 13; /* not 14 ????? */ + + gfp->quant_comp = -1; + gfp->quant_comp_short = -1; + + gfp->msfix = -1; + + gfc->resample_ratio = 1; + + gfc->OldValue[0] = 180; + gfc->OldValue[1] = 180; + gfc->CurrentStep[0] = 4; + gfc->CurrentStep[1] = 4; + gfc->masking_lower = 1; + gfc->nsPsy.attackthre = -1; + gfc->nsPsy.attackthre_s = -1; + + gfp->scale = -1; + + gfp->athaa_type = -1; + gfp->ATHtype = -1; /* default = -1 = set in lame_init_params */ + gfp->athaa_loudapprox = -1; /* 1 = flat loudness approx. (total energy) */ + /* 2 = equal loudness curve */ + gfp->athaa_sensitivity = 0.0; /* no offset */ + gfp->useTemporal = -1; + gfp->interChRatio = -1; + + /* The reason for + * int mf_samples_to_encode = ENCDELAY + POSTDELAY; + * ENCDELAY = internal encoder delay. And then we have to add POSTDELAY=288 + * because of the 50% MDCT overlap. A 576 MDCT granule decodes to + * 1152 samples. To synthesize the 576 samples centered under this granule + * we need the previous granule for the first 288 samples (no problem), and + * the next granule for the next 288 samples (not possible if this is last + * granule). So we need to pad with 288 samples to make sure we can + * encode the 576 samples we are interested in. + */ + gfc->mf_samples_to_encode = ENCDELAY + POSTDELAY; + gfp->encoder_padding = 0; + gfc->mf_size = ENCDELAY - MDCTDELAY; /* we pad input with this many 0's */ + + gfp->findReplayGain = 0; + gfp->decode_on_the_fly = 0; + + gfc->decode_on_the_fly = 0; + gfc->findReplayGain = 0; + gfc->findPeakSample = 0; + + gfc->RadioGain = 0; + gfc->AudiophileGain = 0; + gfc->noclipGainChange = 0; + gfc->noclipScale = -1.0; + + gfp->asm_optimizations.mmx = 1; + gfp->asm_optimizations.amd3dnow = 1; + gfp->asm_optimizations.sse = 1; + + gfp->preset = 0; + + gfp->psymodel = -1; + + gfp->sparsing = 0; + gfp->sparse_low = 9.0; + gfp->sparse_high = 3.0; + + return 0; +} + +/*********************************************************************** + * + * some simple statistics + * + * Robert Hegemann 2000-10-11 + * + ***********************************************************************/ + +/* histogram of used bitrate indexes: + * One has to weight them to calculate the average bitrate in kbps + * + * bitrate indices: + * there are 14 possible bitrate indices, 0 has the special meaning + * "free format" which is not possible to mix with VBR and 15 is forbidden + * anyway. + * + * stereo modes: + * 0: LR number of left-right encoded frames + * 1: LR-I number of left-right and intensity encoded frames + * 2: MS number of mid-side encoded frames + * 3: MS-I number of mid-side and intensity encoded frames + * + * 4: number of encoded frames + * + */ + +void +lame_bitrate_kbps(const lame_global_flags * const gfp, int bitrate_kbps[14]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == bitrate_kbps) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 14; i++) + bitrate_kbps[i] = bitrate_table[gfp->version][i + 1]; +} + + +#ifdef BRHIST +void +lame_bitrate_hist(const lame_global_flags * const gfp, int bitrate_count[14]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == bitrate_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 14; i++) + bitrate_count[i] = gfc->bitrate_stereoMode_Hist[i + 1][4]; +} + + +void +lame_stereo_mode_hist(const lame_global_flags * const gfp, int stmode_count[4]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == stmode_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 4; i++) { + stmode_count[i] = gfc->bitrate_stereoMode_Hist[15][i]; + } +} + + + +void +lame_bitrate_stereo_mode_hist(const lame_global_flags * const gfp, + int bitrate_stmode_count[14][4]) +{ + const lame_internal_flags *gfc; + int i; + int j; + + if (NULL == bitrate_stmode_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (j = 0; j < 14; j++) + for (i = 0; i < 4; i++) + bitrate_stmode_count[j][i] = gfc->bitrate_stereoMode_Hist[j + 1][i]; +} + + +void +lame_block_type_hist(const lame_global_flags * const gfp, int btype_count[6]) +{ + const lame_internal_flags *gfc; + int i; + + if (NULL == btype_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (i = 0; i < 6; ++i) { + btype_count[i] = gfc->bitrate_blockType_Hist[15][i]; + } +} + + + +void +lame_bitrate_block_type_hist(const lame_global_flags * const gfp, + int bitrate_btype_count[14][6]) +{ + const lame_internal_flags * gfc; + int i, j; + + if (NULL == bitrate_btype_count) + return; + if (NULL == gfp) + return; + gfc = gfp->internal_flags; + if (NULL == gfc) + return; + + for (j = 0; j < 14; ++j) + for (i = 0; i < 6; ++i) + bitrate_btype_count[j][i] = gfc->bitrate_blockType_Hist[j+1][i]; +} + +#endif + +/* end of lame.c */ + diff --git a/lame-3.97/libmp3lame/lame_global_flags.h b/lame-3.97/libmp3lame/lame_global_flags.h new file mode 100644 index 0000000..ab4b0de --- /dev/null +++ b/lame-3.97/libmp3lame/lame_global_flags.h @@ -0,0 +1,194 @@ + +#ifndef LAME_GLOBAL_FLAGS_H +#define LAME_GLOBAL_FLAGS_H + +struct lame_internal_flags; +typedef struct lame_internal_flags lame_internal_flags; + + +typedef enum short_block_e { + short_block_not_set = -1, /* allow LAME to decide */ + short_block_allowed = 0, /* LAME may use them, even different block types for L/R */ + short_block_coupled, /* LAME may use them, but always same block types in L/R */ + short_block_dispensed, /* LAME will not use short blocks, long blocks only */ + short_block_forced /* LAME will not use long blocks, short blocks only */ +} short_block_t; + +/*********************************************************************** +* +* Control Parameters set by User. These parameters are here for +* backwards compatibility with the old, non-shared lib API. +* Please use the lame_set_variablename() functions below +* +* +***********************************************************************/ +struct lame_global_struct { + /* input description */ + unsigned long num_samples; /* number of samples. default=2^32-1 */ + int num_channels; /* input number of channels. default=2 */ + int in_samplerate; /* input_samp_rate in Hz. default=44.1 kHz */ + int out_samplerate; /* output_samp_rate. + default: LAME picks best value + at least not used for MP3 decoding: + Remember 44.1 kHz MP3s and AC97 */ + float scale; /* scale input by this amount before encoding + at least not used for MP3 decoding */ + float scale_left; /* scale input of channel 0 (left) by this + amount before encoding */ + float scale_right; /* scale input of channel 1 (right) by this + amount before encoding */ + + /* general control params */ + int analysis; /* collect data for a MP3 frame analyzer? */ + int bWriteVbrTag; /* add Xing VBR tag? */ + int decode_only; /* use lame/mpglib to convert mp3 to wav */ + int quality; /* quality setting 0=best, 9=worst default=5 */ + MPEG_mode mode; /* see enum in lame.h + default = LAME picks best value */ + int mode_fixed; /* ignored */ + int force_ms; /* force M/S mode. requires mode=1 */ + int free_format; /* use free format? default=0 */ + int findReplayGain; /* find the RG value? default=0 */ + int decode_on_the_fly; /* decode on the fly? default=0 */ + + /* + * set either brate>0 or compression_ratio>0, LAME will compute + * the value of the variable not set. + * Default is compression_ratio = 11.025 + */ + int brate; /* bitrate */ + float compression_ratio; /* sizeof(wav file)/sizeof(mp3 file) */ + + + /* frame params */ + int copyright; /* mark as copyright. default=0 */ + int original; /* mark as original. default=1 */ + int error_protection; /* use 2 bytes per frame for a CRC + checksum. default=0 */ + int extension; /* the MP3 'private extension' bit. + Meaningless */ + int strict_ISO; /* enforce ISO spec as much as possible */ + + int disable_reservoir; /* use bit reservoir? */ + + /* quantization/noise shaping */ + int quant_comp; + int quant_comp_short; + int experimentalY; + int exp_nspsytune; + + double newmsfix; + int preset_expopts; + int preset; + + /* VBR control */ + vbr_mode VBR; + int VBR_q; + int VBR_mean_bitrate_kbps; + int VBR_min_bitrate_kbps; + int VBR_max_bitrate_kbps; + int VBR_hard_min; /* strictly enforce VBR_min_bitrate + normaly, it will be violated for analog + silence */ + + + /* resampling and filtering */ + int lowpassfreq; /* freq in Hz. 0=lame choses. + -1=no filter */ + int highpassfreq; /* freq in Hz. 0=lame choses. + -1=no filter */ + int lowpasswidth; /* freq width of filter, in Hz + (default=15%) */ + int highpasswidth; /* freq width of filter, in Hz + (default=15%) */ + + + + /* + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + */ + int psymodel; /* select psychoacoustic model */ + float maskingadjust; + float maskingadjust_short; + int ATHonly; /* only use ATH */ + int ATHshort; /* only use ATH for short blocks */ + int noATH; /* disable ATH */ + int ATHtype; /* select ATH formula */ + float ATHcurve; /* change ATH formula 4 shape */ + float ATHlower; /* lower ATH by this many db */ + int athaa_type; /* select ATH auto-adjust scheme */ + int athaa_loudapprox; /* select ATH auto-adjust loudness calc */ + float athaa_sensitivity; /* dB, tune active region of auto-level */ + int cwlimit; /* predictability limit */ + short_block_t short_blocks; +/* int allow_diff_short; allow blocktypes to differ between + channels? */ + int useTemporal; /* use temporal masking effect */ + float interChRatio; +/* int no_short_blocks; disable short blocks */ + int emphasis; /* Input PCM is emphased PCM (for + instance from one of the rarely + emphased CDs), it is STRONGLY not + recommended to use this, because + psycho does not take it into account, + and last but not least many decoders + don't care about these bits */ + float msfix; /* Naoki's adjustment of Mid/Side maskings */ + + int tune; /* 0 off, 1 on */ + float tune_value_a; /* used to pass values for debugging and stuff */ + + int sparsing; + FLOAT sparse_low; + FLOAT sparse_high; + + struct { + void (*msgf) (const char *format, va_list ap); + void (*debugf)(const char *format, va_list ap); + void (*errorf)(const char *format, va_list ap); + } report; + + /************************************************************************/ + /* internal variables, do not set... */ + /* provided because they may be of use to calling application */ + /************************************************************************/ + + int version; /* 0=MPEG-2/2.5 1=MPEG-1 */ + int encoder_delay; + int encoder_padding; /* number of samples of padding appended to input */ + int framesize; + int frameNum; /* number of frames encoded */ + int lame_allocated_gfp; /* is this struct owned by calling + program or lame? */ + + + + /**************************************************************************/ + /* more internal variables are stored in this structure: */ + /**************************************************************************/ + lame_internal_flags *internal_flags; + + + /* VBR tag data */ + int TotalFrameSize; + int nVbrNumFrames; + /*int nVbrFrameBufferSize;*/ + /*int* pVbrFrames; */ + + struct { + int integer[16]; + float real[16]; + void *pointer[16]; + } exp_nspsytune2; + + struct { + int mmx; + int amd3dnow; + int sse; + + } asm_optimizations; +} ; + +#endif /* LAME_GLOBAL_FLAGS_H */ + diff --git a/lame-3.97/libmp3lame/libmp3lame_vc6.dsp b/lame-3.97/libmp3lame/libmp3lame_vc6.dsp new file mode 100644 index 0000000..dcac1d9 --- /dev/null +++ b/lame-3.97/libmp3lame/libmp3lame_vc6.dsp @@ -0,0 +1,585 @@ +# Microsoft Developer Studio Project File - Name="libmp3lame" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=libmp3lame - Win32 Debug GTK +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "libmp3lame_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "libmp3lame_vc6.mak" CFG="libmp3lame - Win32 Debug GTK" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "libmp3lame - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Release NASM" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Debug GTK" (based on "Win32 (x86) Static Library") +!MESSAGE "libmp3lame - Win32 Release GTK" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libmp3la" +# PROP BASE Intermediate_Dir "libmp3la" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /Ob2 /D "WIN32" /D "HAVE_CONFIG_H" /D "NDEBUG" /D "_WINDOWS" /YX /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Release\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "HAVE_CONFIG_H" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /ZI /Od /I "../" /I "../mpglib" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Debug\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libmp3la" +# PROP BASE Intermediate_Dir "libmp3la" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release_NASM" +# PROP Intermediate_Dir "Release_NASM" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /D "HAVE_NASM" /D "MMX_choose_table" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Release_NASM\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "libmp3lame___Win32_Debug_GTK" +# PROP BASE Intermediate_Dir "libmp3lame___Win32_Debug_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "libmp3lame___Win32_Debug_GTK" +# PROP Intermediate_Dir "libmp3lame___Win32_Debug_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /ZI /Od /I "../" /I "../mpglib" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /ZI /Od /I "../" /I "../mpglib" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /D "HAVE_GTK" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Debug\libmp3lame.lib" +# ADD LIB32 /nologo /out:"Debug\libmp3lame.lib" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "libmp3lame___Win32_Release_GTK" +# PROP BASE Intermediate_Dir "libmp3lame___Win32_Release_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "libmp3lame___Win32_Release_GTK" +# PROP Intermediate_Dir "libmp3lame___Win32_Release_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../" /I "../mpglib" /I "../include" /I ".." /D "NDEBUG" /D "_WINDOWS" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /D "HAVE_GTK" /Gs1024 /FD /GAy /QIfdiv /QI0f /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Release\libmp3lame.lib" +# ADD LIB32 /nologo /out:"Release\libmp3lame.lib" + +!ENDIF + +# Begin Target + +# Name "libmp3lame - Win32 Release" +# Name "libmp3lame - Win32 Debug" +# Name "libmp3lame - Win32 Release NASM" +# Name "libmp3lame - Win32 Debug GTK" +# Name "libmp3lame - Win32 Release GTK" +# Begin Group "Source" + +# PROP Default_Filter "c" +# Begin Source File + +SOURCE=.\bitstream.c +# End Source File +# Begin Source File + +SOURCE=.\encoder.c +# End Source File +# Begin Source File + +SOURCE=.\fft.c +# End Source File +# Begin Source File + +SOURCE=.\gain_analysis.c +# End Source File +# Begin Source File + +SOURCE=.\id3tag.c +# End Source File +# Begin Source File + +SOURCE=.\lame.c +# End Source File +# Begin Source File + +SOURCE=.\mpglib_interface.c +# End Source File +# Begin Source File + +SOURCE=.\newmdct.c +# End Source File +# Begin Source File + +SOURCE=.\presets.c +# End Source File +# Begin Source File + +SOURCE=.\psymodel.c +# End Source File +# Begin Source File + +SOURCE=.\quantize.c +# End Source File +# Begin Source File + +SOURCE=.\quantize_pvt.c +# End Source File +# Begin Source File + +SOURCE=.\reservoir.c +# End Source File +# Begin Source File + +SOURCE=.\set_get.c +# End Source File +# Begin Source File + +SOURCE=.\tables.c +# ADD CPP /W1 +# End Source File +# Begin Source File + +SOURCE=.\takehiro.c +# End Source File +# Begin Source File + +SOURCE=.\util.c +# End Source File +# Begin Source File + +SOURCE=.\vbrquantize.c +# End Source File +# Begin Source File + +SOURCE=.\VbrTag.c +# End Source File +# Begin Source File + +SOURCE=.\version.c +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\bitstream.h +# End Source File +# Begin Source File + +SOURCE=..\configMS.h + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\encoder.h +# End Source File +# Begin Source File + +SOURCE=.\fft.h +# End Source File +# Begin Source File + +SOURCE=.\gain_analysis.h +# End Source File +# Begin Source File + +SOURCE=.\id3tag.h +# End Source File +# Begin Source File + +SOURCE=.\l3side.h +# End Source File +# Begin Source File + +SOURCE=".\lame-analysis.h" +# End Source File +# Begin Source File + +SOURCE=.\lame_global_flags.h +# End Source File +# Begin Source File + +SOURCE=.\lameerror.h +# End Source File +# Begin Source File + +SOURCE=.\machine.h +# End Source File +# Begin Source File + +SOURCE=.\newmdct.h +# End Source File +# Begin Source File + +SOURCE=.\psymodel.h +# End Source File +# Begin Source File + +SOURCE=.\quantize.h +# End Source File +# Begin Source File + +SOURCE=.\quantize_pvt.h +# End Source File +# Begin Source File + +SOURCE=.\reservoir.h +# End Source File +# Begin Source File + +SOURCE=.\set_get.h +# End Source File +# Begin Source File + +SOURCE=.\tables.h +# End Source File +# Begin Source File + +SOURCE=.\util.h +# End Source File +# Begin Source File + +SOURCE=.\vbrquantize.h +# End Source File +# Begin Source File + +SOURCE=.\VbrTag.h +# End Source File +# Begin Source File + +SOURCE=.\version.h +# End Source File +# End Group +# Begin Group "Asm" + +# PROP Default_Filter ".nas" +# Begin Source File + +SOURCE=.\i386\choose_table.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Assembling $(InputName)... +InputDir=.\i386 +OutDir=.\Release_NASM +InputPath=.\i386\choose_table.nas +InputName=choose_table + +"$(OutDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + nasmw -f win32 -i $(InputDir)/ -DWIN32 $(InputPath) -o $(OutDir)/$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\cpu_feat.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Assembling $(InputName)... +InputDir=.\i386 +OutDir=.\Release_NASM +InputPath=.\i386\cpu_feat.nas +InputName=cpu_feat + +"$(OutDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + nasmw -f win32 -i $(InputDir)/ -DWIN32 $(InputPath) -o $(OutDir)/$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fft.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fft3dn.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# Begin Custom Build - Assembling $(InputName)... +InputDir=.\i386 +OutDir=.\Release_NASM +InputPath=.\i386\fft3dn.nas +InputName=fft3dn + +"$(OutDir)/$(InputName).obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + nasmw -f win32 -i $(InputDir)/ -DWIN32 $(InputPath) -o $(OutDir)/$(InputName).obj + +# End Custom Build + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fftfpu.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\fftsse.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\ffttbl.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\i386\scalar.nas + +!IF "$(CFG)" == "libmp3lame - Win32 Release" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release NASM" + +# PROP Exclude_From_Build 1 + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Debug GTK" + +!ELSEIF "$(CFG)" == "libmp3lame - Win32 Release GTK" + +!ENDIF + +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/libmp3lame/libmp3lame_vc7.vcproj b/lame-3.97/libmp3lame/libmp3lame_vc7.vcproj new file mode 100644 index 0000000..2e61c40 --- /dev/null +++ b/lame-3.97/libmp3lame/libmp3lame_vc7.vcproj @@ -0,0 +1,2641 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="libmp3lame" + ProjectGUID="{E316772F-5D8F-4F2A-8F71-094C3E859D34}" + SccProjectName="" + SccLocalPath=""> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Release NASM|Win32" + OutputDirectory=".\Release_NASM" + IntermediateDirectory=".\Release_NASM" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f" + Optimization="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H;HAVE_NASM;MMX_choose_table" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release_NASM/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release_NASM/" + ObjectFile=".\Release_NASM/" + ProgramDataBaseFileName=".\Release_NASM/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release_NASM\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f" + Optimization="2" + OptimizeForProcessor="3" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Release GTK|Win32" + OutputDirectory=".\libmp3lame___Win32_Release_GTK" + IntermediateDirectory=".\libmp3lame___Win32_Release_GTK" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f " + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H;HAVE_GTK" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\libmp3lame___Win32_Release_GTK/libmp3lame_vc6.pch" + AssemblerListingLocation=".\libmp3lame___Win32_Release_GTK/" + ObjectFile=".\libmp3lame___Win32_Release_GTK/" + ProgramDataBaseFileName=".\libmp3lame___Win32_Release_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug GTK|Win32" + OutputDirectory=".\libmp3lame___Win32_Debug_GTK" + IntermediateDirectory=".\libmp3lame___Win32_Debug_GTK" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H;HAVE_GTK" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\libmp3lame___Win32_Debug_GTK/libmp3lame_vc6.pch" + AssemblerListingLocation=".\libmp3lame___Win32_Debug_GTK/" + ObjectFile=".\libmp3lame___Win32_Debug_GTK/" + ProgramDataBaseFileName=".\libmp3lame___Win32_Debug_GTK/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="LAME release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f " + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll debug|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="_DEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + RuntimeLibrary="5" + PrecompiledHeaderFile=".\Debug/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Debug/" + ObjectFile=".\Debug/" + ProgramDataBaseFileName=".\Debug/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + DebugInformationFormat="4" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Debug\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + <Configuration + Name="dll release Nasm|Win32" + OutputDirectory="$(ConfigurationName)" + IntermediateDirectory="$(ConfigurationName)" + ConfigurationType="4" + UseOfMFC="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GAy /QIfdiv /QI0f " + Optimization="2" + InlineFunctionExpansion="2" + AdditionalIncludeDirectories="../,../mpglib,../include,.." + PreprocessorDefinitions="NDEBUG;_WINDOWS;HAVE_MPGLIB;WIN32;HAVE_CONFIG_H" + StringPooling="TRUE" + RuntimeLibrary="4" + EnableFunctionLevelLinking="TRUE" + PrecompiledHeaderFile=".\Release/libmp3lame_vc6.pch" + AssemblerListingLocation=".\Release/" + ObjectFile=".\Release/" + ProgramDataBaseFileName=".\Release/" + WarningLevel="3" + SuppressStartupBanner="TRUE" + CompileAs="0"/> + <Tool + Name="VCCustomBuildTool"/> + <Tool + Name="VCLibrarianTool" + OutputFile="Release\libmp3lame.lib" + SuppressStartupBanner="TRUE"/> + <Tool + Name="VCMIDLTool"/> + <Tool + Name="VCPostBuildEventTool"/> + <Tool + Name="VCPreBuildEventTool"/> + <Tool + Name="VCPreLinkEventTool"/> + <Tool + Name="VCResourceCompilerTool" + Culture="1033"/> + <Tool + Name="VCWebServiceProxyGeneratorTool"/> + <Tool + Name="VCXMLDataGeneratorTool"/> + <Tool + Name="VCManagedWrapperGeneratorTool"/> + <Tool + Name="VCAuxiliaryManagedWrapperGeneratorTool"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="Source" + Filter="c"> + <File + RelativePath="bitstream.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="encoder.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="fft.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="gain_analysis.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="id3tag.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="lame.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="mpglib_interface.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="newmdct.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="presets.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="psymodel.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="quantize.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="quantize_pvt.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="reservoir.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="set_get.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="tables.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions="" + WarningLevel="1"/> + </FileConfiguration> + </File> + <File + RelativePath="takehiro.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="util.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="vbrquantize.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="VbrTag.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + <File + RelativePath="version.c"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCLCompilerTool" + Optimization="2" + AdditionalIncludeDirectories="" + PreprocessorDefinitions=""/> + </FileConfiguration> + </File> + </Filter> + <Filter + Name="Include" + Filter="h"> + <File + RelativePath="bitstream.h"> + </File> + <File + RelativePath="..\configMS.h"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Release GTK|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Debug GTK|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="Debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="LAME debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="LAME release Nasm|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="dll debug|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="dll release|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + <FileConfiguration + Name="dll release Nasm|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Performing Custom Build Step on $(InputName)" + CommandLine="copy ..\configMS.h ..\config.h +" + Outputs="..\config.h"/> + </FileConfiguration> + </File> + <File + RelativePath="encoder.h"> + </File> + <File + RelativePath="fft.h"> + </File> + <File + RelativePath="gain_analysis.h"> + </File> + <File + RelativePath="id3tag.h"> + </File> + <File + RelativePath="l3side.h"> + </File> + <File + RelativePath="lame-analysis.h"> + </File> + <File + RelativePath="lame_global_flags.h"> + </File> + <File + RelativePath="lameerror.h"> + </File> + <File + RelativePath="machine.h"> + </File> + <File + RelativePath="newmdct.h"> + </File> + <File + RelativePath="psymodel.h"> + </File> + <File + RelativePath="quantize.h"> + </File> + <File + RelativePath="quantize_pvt.h"> + </File> + <File + RelativePath="reservoir.h"> + </File> + <File + RelativePath="set_get.h"> + </File> + <File + RelativePath="tables.h"> + </File> + <File + RelativePath="util.h"> + </File> + <File + RelativePath="vbrquantize.h"> + </File> + <File + RelativePath="VbrTag.h"> + </File> + <File + RelativePath="version.h"> + </File> + </Filter> + <Filter + Name="Asm" + Filter=".nas"> + <File + RelativePath="i386\choose_table.nas"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Assembling $(InputName)..." + CommandLine="nasmw -f win32 -I $(InputDir) -DWIN32 $(InputPath) -o $(OutDir)\$(InputName).obj +" + Outputs="$(OutDir)/$(InputName).obj"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\cpu_feat.nas"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Assembling $(InputName)..." + CommandLine="nasmw -f win32 -I $(InputDir) -DWIN32 $(InputPath) -o $(OutDir)\$(InputName).obj +" + Outputs="$(OutDir)/$(InputName).obj"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fft.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fft3dn.nas"> + <FileConfiguration + Name="Release NASM|Win32"> + <Tool + Name="VCCustomBuildTool" + Description="Assembling $(InputName)..." + CommandLine="nasmw -f win32 -I $(InputDir) -DWIN32 $(InputPath) -o $(OutDir)\$(InputName).obj +" + Outputs="$(OutDir)/$(InputName).obj"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fftfpu.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\fftsse.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\ffttbl.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + <File + RelativePath="i386\scalar.nas"> + <FileConfiguration + Name="Release NASM|Win32" + ExcludedFromBuild="TRUE"> + <Tool + Name="VCCustomBuildTool"/> + </FileConfiguration> + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/lame-3.97/libmp3lame/machine.h b/lame-3.97/libmp3lame/machine.h new file mode 100644 index 0000000..122acfa --- /dev/null +++ b/lame-3.97/libmp3lame/machine.h @@ -0,0 +1,146 @@ +/* + * Machine dependent defines/includes for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_MACHINE_H +#define LAME_MACHINE_H + +#include <stdio.h> + +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <string.h> +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#if defined(__riscos__) && defined(FPA10) +# include "ymath.h" +#else +# include <math.h> +#endif + +#include <ctype.h> + +#ifdef HAVE_ERRNO_H +# include <errno.h> +#endif +#ifdef HAVE_FCNTL_H +# include <fcntl.h> +#endif + +#if defined(macintosh) +# include <types.h> +# include <stat.h> +#else +# include <sys/types.h> +# include <sys/stat.h> +#endif + +/* + * 3 different types of pow() functions: + * - table lookup + * - pow() + * - exp() on some machines this is claimed to be faster than pow() + */ + +#define POW20(x) (assert(-Q_MAX2 <= x && x < Q_MAX), pow20[x+Q_MAX2]) +/*#define POW20(x) pow(2.0,((double)(x)-210)*.25) */ +/*#define POW20(x) exp( ((double)(x)-210)*(.25*LOG2) ) */ + +#define IPOW20(x) (assert(0 <= x && x < Q_MAX), ipow20[x]) +/*#define IPOW20(x) exp( -((double)(x)-210)*.1875*LOG2 ) */ +/*#define IPOW20(x) pow(2.0,-((double)(x)-210)*.1875) */ + +/* in case this is used without configure */ +#ifndef inline +# define inline +#endif + +#if defined(_MSC_VER) +# undef inline +# define inline _inline +#elif defined(__SASC) || defined(__GNUC__) || defined(__ICC) || defined(__ECC) +/* if __GNUC__ we always want to inline, not only if the user requests it */ +# undef inline +# define inline __inline +#endif + +#if defined(_MSC_VER) +# pragma warning( disable : 4244 ) +/*# pragma warning( disable : 4305 ) */ +#endif + +/* + * FLOAT for variables which require at least 32 bits + * FLOAT8 for variables which require at least 64 bits + * + * On some machines, 64 bit will be faster than 32 bit. Also, some math + * routines require 64 bit float, so setting FLOAT=float will result in a + * lot of conversions. + */ + +#if ( defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__) ) +# define WIN32_LEAN_AND_MEAN +# include <windows.h> +# include <float.h> +# define FLOAT_MAX FLT_MAX +#else +# ifndef FLOAT +typedef float FLOAT; +# ifdef FLT_MAX +# define FLOAT_MAX FLT_MAX +# else +# define FLOAT_MAX 1e37 /* approx */ +# endif +# endif +#endif + +#ifndef FLOAT8 /* NOTE: RH: 7/00: if FLOAT8=float, it breaks resampling and VBR code */ +typedef double FLOAT8; +# ifdef DBL_MAX +# define FLOAT8_MAX DBL_MAX +# else +# define FLOAT8_MAX 1e99 /* approx */ +# endif +#else +# ifdef FLT_MAX +# define FLOAT8_MAX FLT_MAX +# else +# define FLOAT8_MAX 1e37 /* approx */ +# endif +#endif + +/* sample_t must be floating point, at least 32 bits */ +typedef FLOAT sample_t; +typedef sample_t stereo_t [2]; + +#endif + +/* end of machine.h */ + diff --git a/lame-3.97/libmp3lame/mpglib_interface.c b/lame-3.97/libmp3lame/mpglib_interface.c new file mode 100644 index 0000000..268d496 --- /dev/null +++ b/lame-3.97/libmp3lame/mpglib_interface.c @@ -0,0 +1,306 @@ +/* -*- mode: C; mode: fold -*- */ +/* + * LAME MP3 encoding engine + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2003 Olcios + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: mpglib_interface.c,v 1.26.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#ifdef HAVE_MPGLIB + +#include <limits.h> +#include <stdlib.h> +#include <assert.h> + +#include "interface.h" +#include "lame.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +MPSTR mp; +plotting_data *mpg123_pinfo = NULL; + +int +lame_decode_exit(void) +{ + ExitMP3(&mp); + return 0; +} + + +int +lame_decode_init(void) +{ + InitMP3(&mp); + return 0; +} + + + + +/* copy mono samples */ +#define COPY_MONO(DST_TYPE, SRC_TYPE) \ + DST_TYPE *pcm_l = (DST_TYPE *)pcm_l_raw; \ + SRC_TYPE *p_samples = (SRC_TYPE *)p; \ + for (i = 0; i < processed_samples; i++) \ + *pcm_l++ = (DST_TYPE)*p_samples++; + +/* copy stereo samples */ +#define COPY_STEREO(DST_TYPE, SRC_TYPE) \ + DST_TYPE *pcm_l = (DST_TYPE *)pcm_l_raw, *pcm_r = (DST_TYPE *)pcm_r_raw; \ + SRC_TYPE *p_samples = (SRC_TYPE *)p; \ + for (i = 0; i < processed_samples; i++) { \ + *pcm_l++ = (DST_TYPE)*p_samples++; \ + *pcm_r++ = (DST_TYPE)*p_samples++; \ + } + + + +/* + * For lame_decode: return code + * -1 error + * 0 ok, but need more data before outputing any samples + * n number of samples output. either 576 or 1152 depending on MP3 file. + */ + +int +lame_decode1_headersB_clipchoice(unsigned char *buffer, int len, + char pcm_l_raw[], char pcm_r_raw[], mp3data_struct * mp3data, + int *enc_delay, int *enc_padding, + char *p, size_t psize, int decoded_sample_size, + int (*decodeMP3_ptr)(PMPSTR,unsigned char *,int,char *,int,int*) ) +{ + static const int smpls[2][4] = { + /* Layer I II III */ + {0, 384, 1152, 1152}, /* MPEG-1 */ + {0, 384, 1152, 576} /* MPEG-2(.5) */ + }; + + int processed_bytes; + int processed_samples; /* processed samples per channel */ + int ret; + int i; + + mp3data->header_parsed = 0; + + ret = + (*decodeMP3_ptr)(&mp, buffer, len, p, psize, &processed_bytes); + /* three cases: + * 1. headers parsed, but data not complete + * mp.header_parsed==1 + * mp.framesize=0 + * mp.fsizeold=size of last frame, or 0 if this is first frame + * + * 2. headers, data parsed, but ancillary data not complete + * mp.header_parsed==1 + * mp.framesize=size of frame + * mp.fsizeold=size of last frame, or 0 if this is first frame + * + * 3. frame fully decoded: + * mp.header_parsed==0 + * mp.framesize=0 + * mp.fsizeold=size of frame (which is now the last frame) + * + */ + if (mp.header_parsed || mp.fsizeold > 0 || mp.framesize > 0) { + mp3data->header_parsed = 1; + mp3data->stereo = mp.fr.stereo; + mp3data->samplerate = freqs[mp.fr.sampling_frequency]; + mp3data->mode = mp.fr.mode; + mp3data->mode_ext = mp.fr.mode_ext; + mp3data->framesize = smpls[mp.fr.lsf][mp.fr.lay]; + + /* free format, we need the entire frame before we can determine + * the bitrate. If we haven't gotten the entire frame, bitrate=0 */ + if (mp.fsizeold > 0) /* works for free format and fixed, no overrun, temporal results are < 400.e6 */ + mp3data->bitrate = 8 * (4 + mp.fsizeold) * mp3data->samplerate / + (1.e3 * mp3data->framesize) + 0.5; + else if (mp.framesize > 0) + mp3data->bitrate = 8 * (4 + mp.framesize) * mp3data->samplerate / + (1.e3 * mp3data->framesize) + 0.5; + else + mp3data->bitrate = + tabsel_123[mp.fr.lsf][mp.fr.lay - 1][mp.fr.bitrate_index]; + + + + if (mp.num_frames > 0) { + /* Xing VBR header found and num_frames was set */ + mp3data->totalframes = mp.num_frames; + mp3data->nsamp = mp3data->framesize * mp.num_frames; + *enc_delay = mp.enc_delay; + *enc_padding = mp.enc_padding; + } + } + + switch (ret) { + case MP3_OK: + switch (mp.fr.stereo) { + case 1: + processed_samples = processed_bytes / decoded_sample_size; + if (decoded_sample_size == sizeof(short)) { + COPY_MONO(short,short) + } + else { + COPY_MONO(sample_t,FLOAT) + } + break; + case 2: + processed_samples = (processed_bytes / decoded_sample_size) >> 1; + if (decoded_sample_size == sizeof(short)) { + COPY_STEREO(short,short) + } + else { + COPY_STEREO(sample_t,FLOAT) + } + break; + default: + processed_samples = -1; + assert(0); + break; + } + break; + + case MP3_NEED_MORE: + processed_samples = 0; + break; + + default: + assert(0); + case MP3_ERR: + processed_samples = -1; + break; + + } + + /*fprintf(stderr,"ok, more, err: %i %i %i\n", MP3_OK, MP3_NEED_MORE, MP3_ERR );*/ + /*fprintf(stderr,"ret = %i out=%i\n", ret, processed_samples );*/ + return processed_samples; +} + + +#define OUTSIZE_CLIPPED 4096*sizeof(short) + +int +lame_decode1_headersB(unsigned char *buffer, + int len, + short pcm_l[], short pcm_r[], mp3data_struct * mp3data, + int *enc_delay, int *enc_padding) +{ + static char out[OUTSIZE_CLIPPED]; + + return lame_decode1_headersB_clipchoice(buffer, len, (char *)pcm_l, (char *)pcm_r, mp3data, enc_delay, enc_padding, out, OUTSIZE_CLIPPED, sizeof(short), decodeMP3 ); +} + + +/* we forbid input with more than 1152 samples per channel for output in the unclipped mode */ +#define OUTSIZE_UNCLIPPED 1152*2*sizeof(FLOAT) + +int +lame_decode1_unclipped(unsigned char *buffer, int len, sample_t pcm_l[], sample_t pcm_r[]) +{ + static char out[OUTSIZE_UNCLIPPED]; + mp3data_struct mp3data; + int enc_delay,enc_padding; + + return lame_decode1_headersB_clipchoice(buffer, len, (char *)pcm_l, (char *)pcm_r, &mp3data, &enc_delay, &enc_padding, out, OUTSIZE_UNCLIPPED, sizeof(FLOAT), decodeMP3_unclipped ); +} + + + +/* + * For lame_decode: return code + * -1 error + * 0 ok, but need more data before outputing any samples + * n number of samples output. Will be at most one frame of + * MPEG data. + */ + +int +lame_decode1_headers(unsigned char *buffer, + int len, + short pcm_l[], short pcm_r[], mp3data_struct * mp3data) +{ + int enc_delay,enc_padding; + return lame_decode1_headersB(buffer,len,pcm_l,pcm_r,mp3data,&enc_delay,&enc_padding); +} + + +int +lame_decode1(unsigned char *buffer, int len, short pcm_l[], short pcm_r[]) +{ + mp3data_struct mp3data; + + return lame_decode1_headers(buffer, len, pcm_l, pcm_r, &mp3data); +} + + +/* + * For lame_decode: return code + * -1 error + * 0 ok, but need more data before outputing any samples + * n number of samples output. a multiple of 576 or 1152 depending on MP3 file. + */ + +int +lame_decode_headers(unsigned char *buffer, + int len, + short pcm_l[], short pcm_r[], mp3data_struct * mp3data) +{ + int ret; + int totsize = 0; /* number of decoded samples per channel */ + + while (1) { + switch (ret = + lame_decode1_headers(buffer, len, pcm_l + totsize, + pcm_r + totsize, mp3data)) { + case -1: + return ret; + case 0: + return totsize; + default: + totsize += ret; + len = 0; /* future calls to decodeMP3 are just to flush buffers */ + break; + } + } +} + + +int +lame_decode(unsigned char *buffer, int len, short pcm_l[], short pcm_r[]) +{ + mp3data_struct mp3data; + + return lame_decode_headers(buffer, len, pcm_l, pcm_r, &mp3data); +} + + +#endif + +/* end of mpglib_interface.c */ + diff --git a/lame-3.97/libmp3lame/newmdct.c b/lame-3.97/libmp3lame/newmdct.c new file mode 100644 index 0000000..cf06575 --- /dev/null +++ b/lame-3.97/libmp3lame/newmdct.c @@ -0,0 +1,779 @@ +/* + * MP3 window subband -> subband filtering -> mdct routine + * + * Copyright (c) 1999-2000 Takehiro Tominaga + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * Special Thanks to Patrick De Smet for your advices. + */ + +/* $Id: newmdct.c,v 1.29.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "util.h" +#include "l3side.h" +#include "newmdct.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#define SCALE (32768.0/ 2.384e-06) + +#ifndef USE_GOGO_SUBBAND +static const FLOAT enwindow[] = +{ + -4.77e-07*0.740951125354959/2.384e-06, 1.03951e-04*0.740951125354959/2.384e-06, 9.53674e-04*0.740951125354959/2.384e-06, 2.841473e-03*0.740951125354959/2.384e-06, + 3.5758972e-02*0.740951125354959/2.384e-06, 3.401756e-03*0.740951125354959/2.384e-06, 9.83715e-04*0.740951125354959/2.384e-06, 9.9182e-05*0.740951125354959/2.384e-06, /* 15*/ + 1.2398e-05*0.740951125354959/2.384e-06, 1.91212e-04*0.740951125354959/2.384e-06, 2.283096e-03*0.740951125354959/2.384e-06,1.6994476e-02*0.740951125354959/2.384e-06, + -1.8756866e-02*0.740951125354959/2.384e-06,-2.630711e-03*0.740951125354959/2.384e-06, -2.47478e-04*0.740951125354959/2.384e-06, -1.4782e-05*0.740951125354959/2.384e-06, + 9.063471690191471e-01, + 1.960342806591213e-01, + + + -4.77e-07*0.773010453362737/2.384e-06, 1.05858e-04*0.773010453362737/2.384e-06, 9.30786e-04*0.773010453362737/2.384e-06, 2.521515e-03*0.773010453362737/2.384e-06, + 3.5694122e-02*0.773010453362737/2.384e-06, 3.643036e-03*0.773010453362737/2.384e-06, 9.91821e-04*0.773010453362737/2.384e-06, 9.6321e-05*0.773010453362737/2.384e-06, /* 14*/ + 1.1444e-05*0.773010453362737/2.384e-06, 1.65462e-04*0.773010453362737/2.384e-06, 2.110004e-03*0.773010453362737/2.384e-06,1.6112804e-02*0.773010453362737/2.384e-06, + -1.9634247e-02*0.773010453362737/2.384e-06,-2.803326e-03*0.773010453362737/2.384e-06, -2.77042e-04*0.773010453362737/2.384e-06, -1.6689e-05*0.773010453362737/2.384e-06, + 8.206787908286602e-01, + 3.901806440322567e-01, + + + -4.77e-07*0.803207531480645/2.384e-06, 1.07288e-04*0.803207531480645/2.384e-06, 9.02653e-04*0.803207531480645/2.384e-06, 2.174854e-03*0.803207531480645/2.384e-06, + 3.5586357e-02*0.803207531480645/2.384e-06, 3.858566e-03*0.803207531480645/2.384e-06, 9.95159e-04*0.803207531480645/2.384e-06, 9.3460e-05*0.803207531480645/2.384e-06, /* 13*/ + 1.0014e-05*0.803207531480645/2.384e-06, 1.40190e-04*0.803207531480645/2.384e-06, 1.937389e-03*0.803207531480645/2.384e-06,1.5233517e-02*0.803207531480645/2.384e-06, + -2.0506859e-02*0.803207531480645/2.384e-06,-2.974033e-03*0.803207531480645/2.384e-06, -3.07560e-04*0.803207531480645/2.384e-06, -1.8120e-05*0.803207531480645/2.384e-06, + 7.416505462720353e-01, + 5.805693545089249e-01, + + + -4.77e-07*0.831469612302545/2.384e-06, 1.08242e-04*0.831469612302545/2.384e-06, 8.68797e-04*0.831469612302545/2.384e-06, 1.800537e-03*0.831469612302545/2.384e-06, + 3.5435200e-02*0.831469612302545/2.384e-06, 4.049301e-03*0.831469612302545/2.384e-06, 9.94205e-04*0.831469612302545/2.384e-06, 9.0599e-05*0.831469612302545/2.384e-06, /* 12*/ + 9.060e-06*0.831469612302545/2.384e-06, 1.16348e-04*0.831469612302545/2.384e-06, 1.766682e-03*0.831469612302545/2.384e-06,1.4358521e-02*0.831469612302545/2.384e-06, + -2.1372318e-02*0.831469612302545/2.384e-06, -3.14188e-03*0.831469612302545/2.384e-06, -3.39031e-04*0.831469612302545/2.384e-06, -1.9550e-05*0.831469612302545/2.384e-06, + 6.681786379192989e-01, + 7.653668647301797e-01, + + + -4.77e-07*0.857728610000272/2.384e-06, 1.08719e-04*0.857728610000272/2.384e-06, 8.29220e-04*0.857728610000272/2.384e-06, 1.399517e-03*0.857728610000272/2.384e-06, + 3.5242081e-02*0.857728610000272/2.384e-06, 4.215240e-03*0.857728610000272/2.384e-06, 9.89437e-04*0.857728610000272/2.384e-06, 8.7261e-05*0.857728610000272/2.384e-06, /* 11*/ + 8.106e-06*0.857728610000272/2.384e-06, 9.3937e-05*0.857728610000272/2.384e-06, 1.597881e-03*0.857728610000272/2.384e-06,1.3489246e-02*0.857728610000272/2.384e-06, + -2.2228718e-02*0.857728610000272/2.384e-06,-3.306866e-03*0.857728610000272/2.384e-06, -3.71456e-04*0.857728610000272/2.384e-06, -2.1458e-05*0.857728610000272/2.384e-06, + 5.993769336819237e-01, + 9.427934736519954e-01, + + + -4.77e-07*0.881921264348355/2.384e-06, 1.08719e-04*0.881921264348355/2.384e-06, 7.8392e-04*0.881921264348355/2.384e-06, 9.71317e-04*0.881921264348355/2.384e-06, + 3.5007000e-02*0.881921264348355/2.384e-06, 4.357815e-03*0.881921264348355/2.384e-06, 9.80854e-04*0.881921264348355/2.384e-06, 8.3923e-05*0.881921264348355/2.384e-06, /* 10*/ + 7.629e-06*0.881921264348355/2.384e-06, 7.2956e-05*0.881921264348355/2.384e-06, 1.432419e-03*0.881921264348355/2.384e-06,1.2627602e-02*0.881921264348355/2.384e-06, + -2.3074150e-02*0.881921264348355/2.384e-06,-3.467083e-03*0.881921264348355/2.384e-06, -4.04358e-04*0.881921264348355/2.384e-06, -2.3365e-05*0.881921264348355/2.384e-06, + 5.345111359507916e-01, + 1.111140466039205e+00, + + + -9.54e-07*0.903989293123443/2.384e-06, 1.08242e-04*0.903989293123443/2.384e-06, 7.31945e-04*0.903989293123443/2.384e-06, 5.15938e-04*0.903989293123443/2.384e-06, + 3.4730434e-02*0.903989293123443/2.384e-06, 4.477024e-03*0.903989293123443/2.384e-06, 9.68933e-04*0.903989293123443/2.384e-06, 8.0585e-05*0.903989293123443/2.384e-06, /* 9*/ + 6.676e-06*0.903989293123443/2.384e-06, 5.2929e-05*0.903989293123443/2.384e-06, 1.269817e-03*0.903989293123443/2.384e-06,1.1775017e-02*0.903989293123443/2.384e-06, + -2.3907185e-02*0.903989293123443/2.384e-06,-3.622532e-03*0.903989293123443/2.384e-06, -4.38213e-04*0.903989293123443/2.384e-06, -2.5272e-05*0.903989293123443/2.384e-06, + 4.729647758913199e-01, + 1.268786568327291e+00, + + + -9.54e-07*0.92387953251128675613/2.384e-06, 1.06812e-04*0.92387953251128675613/2.384e-06, 6.74248e-04*0.92387953251128675613/2.384e-06, 3.3379e-05*0.92387953251128675613/2.384e-06, + 3.4412861e-02*0.92387953251128675613/2.384e-06, 4.573822e-03*0.92387953251128675613/2.384e-06, 9.54151e-04*0.92387953251128675613/2.384e-06, 7.6771e-05*0.92387953251128675613/2.384e-06, + 6.199e-06*0.92387953251128675613/2.384e-06, 3.4332e-05*0.92387953251128675613/2.384e-06, 1.111031e-03*0.92387953251128675613/2.384e-06,1.0933399e-02*0.92387953251128675613/2.384e-06, + -2.4725437e-02*0.92387953251128675613/2.384e-06,-3.771782e-03*0.92387953251128675613/2.384e-06, -4.72546e-04*0.92387953251128675613/2.384e-06, -2.7657e-05*0.92387953251128675613/2.384e-06, + 4.1421356237309504879e-01, /* tan(PI/8) */ + 1.414213562373095e+00, + + + -9.54e-07*0.941544065183021/2.384e-06, 1.05381e-04*0.941544065183021/2.384e-06, 6.10352e-04*0.941544065183021/2.384e-06, -4.75883e-04*0.941544065183021/2.384e-06, + 3.4055710e-02*0.941544065183021/2.384e-06, 4.649162e-03*0.941544065183021/2.384e-06, 9.35555e-04*0.941544065183021/2.384e-06, 7.3433e-05*0.941544065183021/2.384e-06, /* 7*/ + 5.245e-06*0.941544065183021/2.384e-06, 1.7166e-05*0.941544065183021/2.384e-06, 9.56535e-04*0.941544065183021/2.384e-06,1.0103703e-02*0.941544065183021/2.384e-06, + -2.5527000e-02*0.941544065183021/2.384e-06,-3.914356e-03*0.941544065183021/2.384e-06, -5.07355e-04*0.941544065183021/2.384e-06, -3.0041e-05*0.941544065183021/2.384e-06, + 3.578057213145241e-01, + 1.546020906725474e+00, + + + -9.54e-07*0.956940335732209/2.384e-06, 1.02520e-04*0.956940335732209/2.384e-06, 5.39303e-04*0.956940335732209/2.384e-06,-1.011848e-03*0.956940335732209/2.384e-06, + 3.3659935e-02*0.956940335732209/2.384e-06, 4.703045e-03*0.956940335732209/2.384e-06, 9.15051e-04*0.956940335732209/2.384e-06, 7.0095e-05*0.956940335732209/2.384e-06, /* 6*/ + 4.768e-06*0.956940335732209/2.384e-06, 9.54e-07*0.956940335732209/2.384e-06, 8.06808e-04*0.956940335732209/2.384e-06, 9.287834e-03*0.956940335732209/2.384e-06, + -2.6310921e-02*0.956940335732209/2.384e-06,-4.048824e-03*0.956940335732209/2.384e-06, -5.42164e-04*0.956940335732209/2.384e-06, -3.2425e-05*0.956940335732209/2.384e-06, + 3.033466836073424e-01, + 1.662939224605090e+00, + + + -1.431e-06*0.970031253194544/2.384e-06, 9.9182e-05*0.970031253194544/2.384e-06, 4.62532e-04*0.970031253194544/2.384e-06,-1.573563e-03*0.970031253194544/2.384e-06, + 3.3225536e-02*0.970031253194544/2.384e-06, 4.737377e-03*0.970031253194544/2.384e-06, 8.91685e-04*0.970031253194544/2.384e-06, 6.6280e-05*0.970031253194544/2.384e-06, /* 5*/ + 4.292e-06*0.970031253194544/2.384e-06, -1.3828e-05*0.970031253194544/2.384e-06, 6.61850e-04*0.970031253194544/2.384e-06, 8.487225e-03*0.970031253194544/2.384e-06, + -2.7073860e-02*0.970031253194544/2.384e-06,-4.174709e-03*0.970031253194544/2.384e-06, -5.76973e-04*0.970031253194544/2.384e-06, -3.4809e-05*0.970031253194544/2.384e-06, + 2.504869601913055e-01, + 1.763842528696710e+00, + + + -1.431e-06*0.98078528040323/2.384e-06, 9.5367e-05*0.98078528040323/2.384e-06, 3.78609e-04*0.98078528040323/2.384e-06,-2.161503e-03*0.98078528040323/2.384e-06, + 3.2754898e-02*0.98078528040323/2.384e-06, 4.752159e-03*0.98078528040323/2.384e-06, 8.66413e-04*0.98078528040323/2.384e-06, 6.2943e-05*0.98078528040323/2.384e-06, /* 4*/ + 3.815e-06*0.98078528040323/2.384e-06, -2.718e-05*0.98078528040323/2.384e-06, 5.22137e-04*0.98078528040323/2.384e-06, 7.703304e-03*0.98078528040323/2.384e-06, + -2.7815342e-02*0.98078528040323/2.384e-06,-4.290581e-03*0.98078528040323/2.384e-06, -6.11782e-04*0.98078528040323/2.384e-06, -3.7670e-05*0.98078528040323/2.384e-06, + 1.989123673796580e-01, + 1.847759065022573e+00, + + + -1.907e-06*0.989176509964781/2.384e-06, 9.0122e-05*0.989176509964781/2.384e-06, 2.88486e-04*0.989176509964781/2.384e-06,-2.774239e-03*0.989176509964781/2.384e-06, + 3.2248020e-02*0.989176509964781/2.384e-06, 4.748821e-03*0.989176509964781/2.384e-06, 8.38757e-04*0.989176509964781/2.384e-06, 5.9605e-05*0.989176509964781/2.384e-06, /* 3*/ + 3.338e-06*0.989176509964781/2.384e-06, -3.9577e-05*0.989176509964781/2.384e-06, 3.88145e-04*0.989176509964781/2.384e-06, 6.937027e-03*0.989176509964781/2.384e-06, + -2.8532982e-02*0.989176509964781/2.384e-06,-4.395962e-03*0.989176509964781/2.384e-06, -6.46591e-04*0.989176509964781/2.384e-06, -4.0531e-05*0.989176509964781/2.384e-06, + 1.483359875383474e-01, + 1.913880671464418e+00, + + + -1.907e-06*0.995184726672197/2.384e-06, 8.4400e-05*0.995184726672197/2.384e-06, 1.91689e-04*0.995184726672197/2.384e-06,-3.411293e-03*0.995184726672197/2.384e-06, + 3.1706810e-02*0.995184726672197/2.384e-06, 4.728317e-03*0.995184726672197/2.384e-06, 8.09669e-04*0.995184726672197/2.384e-06, 5.579e-05*0.995184726672197/2.384e-06, + 3.338e-06*0.995184726672197/2.384e-06, -5.0545e-05*0.995184726672197/2.384e-06, 2.59876e-04*0.995184726672197/2.384e-06, 6.189346e-03*0.995184726672197/2.384e-06, + -2.9224873e-02*0.995184726672197/2.384e-06,-4.489899e-03*0.995184726672197/2.384e-06, -6.80923e-04*0.995184726672197/2.384e-06, -4.3392e-05*0.995184726672197/2.384e-06, + 9.849140335716425e-02, + 1.961570560806461e+00, + + + -2.384e-06*0.998795456205172/2.384e-06, 7.7724e-05*0.998795456205172/2.384e-06, 8.8215e-05*0.998795456205172/2.384e-06,-4.072189e-03*0.998795456205172/2.384e-06, + 3.1132698e-02*0.998795456205172/2.384e-06, 4.691124e-03*0.998795456205172/2.384e-06, 7.79152e-04*0.998795456205172/2.384e-06, 5.2929e-05*0.998795456205172/2.384e-06, + 2.861e-06*0.998795456205172/2.384e-06, -6.0558e-05*0.998795456205172/2.384e-06, 1.37329e-04*0.998795456205172/2.384e-06, 5.462170e-03*0.998795456205172/2.384e-06, + -2.9890060e-02*0.998795456205172/2.384e-06,-4.570484e-03*0.998795456205172/2.384e-06, -7.14302e-04*0.998795456205172/2.384e-06, -4.6253e-05*0.998795456205172/2.384e-06, + 4.912684976946725e-02, + 1.990369453344394e+00, + + + 3.5780907e-02 * SQRT2*0.5/2.384e-06,1.7876148e-02 * SQRT2*0.5/2.384e-06, 3.134727e-03 * SQRT2*0.5/2.384e-06, 2.457142e-03 * SQRT2*0.5/2.384e-06, + 9.71317e-04 * SQRT2*0.5/2.384e-06, 2.18868e-04 * SQRT2*0.5/2.384e-06, 1.01566e-04 * SQRT2*0.5/2.384e-06, 1.3828e-05 * SQRT2*0.5/2.384e-06, + + 3.0526638e-02/2.384e-06, 4.638195e-03/2.384e-06, 7.47204e-04/2.384e-06, 4.9591e-05/2.384e-06, + 4.756451e-03/2.384e-06, 2.1458e-05/2.384e-06, -6.9618e-05/2.384e-06,/* 2.384e-06/2.384e-06*/ +}; +#endif + + +#define NS 12 +#define NL 36 + +static const FLOAT win[4][NL] = { + { + 2.382191739347913e-13, + 6.423305872147834e-13, + 9.400849094049688e-13, + 1.122435026096556e-12, + 1.183840321267481e-12, + 1.122435026096556e-12, + 9.400849094049690e-13, + 6.423305872147839e-13, + 2.382191739347918e-13, + + 5.456116108943412e-12, + 4.878985199565852e-12, + 4.240448995017367e-12, + 3.559909094758252e-12, + 2.858043359288075e-12, + 2.156177623817898e-12, + 1.475637723558783e-12, + 8.371015190102974e-13, + 2.599706096327376e-13, + + -5.456116108943412e-12, + -4.878985199565852e-12, + -4.240448995017367e-12, + -3.559909094758252e-12, + -2.858043359288076e-12, + -2.156177623817898e-12, + -1.475637723558783e-12, + -8.371015190102975e-13, + -2.599706096327376e-13, + + -2.382191739347923e-13, + -6.423305872147843e-13, + -9.400849094049696e-13, + -1.122435026096556e-12, + -1.183840321267481e-12, + -1.122435026096556e-12, + -9.400849094049694e-13, + -6.423305872147840e-13, + -2.382191739347918e-13, + }, + { + 2.382191739347913e-13, + 6.423305872147834e-13, + 9.400849094049688e-13, + 1.122435026096556e-12, + 1.183840321267481e-12, + 1.122435026096556e-12, + 9.400849094049688e-13, + 6.423305872147841e-13, + 2.382191739347918e-13, + + 5.456116108943413e-12, + 4.878985199565852e-12, + 4.240448995017367e-12, + 3.559909094758253e-12, + 2.858043359288075e-12, + 2.156177623817898e-12, + 1.475637723558782e-12, + 8.371015190102975e-13, + 2.599706096327376e-13, + + -5.461314069809755e-12, + -4.921085770524055e-12, + -4.343405037091838e-12, + -3.732668368707687e-12, + -3.093523840190885e-12, + -2.430835727329465e-12, + -1.734679010007751e-12, + -9.748253656609281e-13, + -2.797435120168326e-13, + + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + -2.283748241799531e-13, + -4.037858874020686e-13, + -2.146547464825323e-13, + }, + { + 1.316524975873958e-01, /* win[SHORT_TYPE] */ + 4.142135623730950e-01, + 7.673269879789602e-01, + + 1.091308501069271e+00, /* tantab_l */ + 1.303225372841206e+00, + 1.569685577117490e+00, + 1.920982126971166e+00, + 2.414213562373094e+00, + 3.171594802363212e+00, + 4.510708503662055e+00, + 7.595754112725146e+00, + 2.290376554843115e+01, + + 0.98480775301220802032, /* cx */ + 0.64278760968653936292, + 0.34202014332566882393, + 0.93969262078590842791, + -0.17364817766693030343, + -0.76604444311897790243, + 0.86602540378443870761, + 0.500000000000000e+00, + + -5.144957554275265e-01, /* ca */ + -4.717319685649723e-01, + -3.133774542039019e-01, + -1.819131996109812e-01, + -9.457419252642064e-02, + -4.096558288530405e-02, + -1.419856857247115e-02, + -3.699974673760037e-03, + + 8.574929257125442e-01, /* cs */ + 8.817419973177052e-01, + 9.496286491027329e-01, + 9.833145924917901e-01, + 9.955178160675857e-01, + 9.991605581781475e-01, + 9.998991952444470e-01, + 9.999931550702802e-01, + }, + { + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 0.000000000000000e+00, + 2.283748241799531e-13, + 4.037858874020686e-13, + 2.146547464825323e-13, + + 5.461314069809755e-12, + 4.921085770524055e-12, + 4.343405037091838e-12, + 3.732668368707687e-12, + 3.093523840190885e-12, + 2.430835727329466e-12, + 1.734679010007751e-12, + 9.748253656609281e-13, + 2.797435120168326e-13, + + -5.456116108943413e-12, + -4.878985199565852e-12, + -4.240448995017367e-12, + -3.559909094758253e-12, + -2.858043359288075e-12, + -2.156177623817898e-12, + -1.475637723558782e-12, + -8.371015190102975e-13, + -2.599706096327376e-13, + + -2.382191739347913e-13, + -6.423305872147834e-13, + -9.400849094049688e-13, + -1.122435026096556e-12, + -1.183840321267481e-12, + -1.122435026096556e-12, + -9.400849094049688e-13, + -6.423305872147841e-13, + -2.382191739347918e-13, + } +}; + +#define tantab_l (win[SHORT_TYPE]+3) +#define cx (win[SHORT_TYPE]+12) +#define ca (win[SHORT_TYPE]+20) +#define cs (win[SHORT_TYPE]+28) + +/************************************************************************ +* +* window_subband() +* +* PURPOSE: Overlapping window on PCM samples +* +* SEMANTICS: +* 32 16-bit pcm samples are scaled to fractional 2's complement and +* concatenated to the end of the window buffer #x#. The updated window +* buffer #x# is then windowed by the analysis window #c# to produce the +* windowed sample #z# +* +************************************************************************/ + +/* + * new IDCT routine written by Takehiro TOMINAGA + */ +static const int order[] = { + 0, 1,16,17, 8, 9,24,25, 4, 5,20,21,12,13,28,29, + 2, 3,18,19,10,11,26,27, 6, 7,22,23,14,15,30,31 +}; + + +/* returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32 */ +inline static void +window_subband(const sample_t *x1, FLOAT a[SBLIMIT]) +{ + int i; + FLOAT const *wp = enwindow+10; + + const sample_t *x2 = &x1[238-14-286]; + + for (i = -15; i < 0; i++) { + FLOAT w, s, t; + + w = wp[-10]; s = x2[-224] * w; t = x1[ 224] * w; + w = wp[-9]; s += x2[-160] * w; t += x1[ 160] * w; + w = wp[-8]; s += x2[- 96] * w; t += x1[ 96] * w; + w = wp[-7]; s += x2[- 32] * w; t += x1[ 32] * w; + w = wp[-6]; s += x2[ 32] * w; t += x1[- 32] * w; + w = wp[-5]; s += x2[ 96] * w; t += x1[- 96] * w; + w = wp[-4]; s += x2[ 160] * w; t += x1[-160] * w; + w = wp[-3]; s += x2[ 224] * w; t += x1[-224] * w; + + w = wp[-2]; s += x1[-256] * w; t -= x2[ 256] * w; + w = wp[-1]; s += x1[-192] * w; t -= x2[ 192] * w; + w = wp[ 0]; s += x1[-128] * w; t -= x2[ 128] * w; + w = wp[ 1]; s += x1[- 64] * w; t -= x2[ 64] * w; + w = wp[ 2]; s += x1[ 0] * w; t -= x2[ 0] * w; + w = wp[ 3]; s += x1[ 64] * w; t -= x2[- 64] * w; + w = wp[ 4]; s += x1[ 128] * w; t -= x2[-128] * w; + w = wp[ 5]; s += x1[ 192] * w; t -= x2[-192] * w; + + /* + * this multiplyer could be removed, but it needs more 256 FLOAT data. + * thinking about the data cache performance, I think we should not + * use such a huge table. tt 2000/Oct/25 + */ + s *= wp[6]; + w = t - s; + a[30+i*2] = t + s; + a[31+i*2] = wp[7] * w; + wp += 18; + x1--; + x2++; + } + { + FLOAT s,t,u,v; + t = x1[- 16] * wp[-10]; s = x1[ -32] * wp[-2]; + t += (x1[- 48] - x1[ 16]) * wp[-9]; s += x1[ -96] * wp[-1]; + t += (x1[- 80] + x1[ 48]) * wp[-8]; s += x1[-160] * wp[ 0]; + t += (x1[-112] - x1[ 80]) * wp[-7]; s += x1[-224] * wp[ 1]; + t += (x1[-144] + x1[112]) * wp[-6]; s -= x1[ 32] * wp[ 2]; + t += (x1[-176] - x1[144]) * wp[-5]; s -= x1[ 96] * wp[ 3]; + t += (x1[-208] + x1[176]) * wp[-4]; s -= x1[ 160] * wp[ 4]; + t += (x1[-240] - x1[208]) * wp[-3]; s -= x1[ 224]; + + u = s - t; + v = s + t; + + t = a[14]; + s = a[15] - t; + + a[31] = v + t; /* A0 */ + a[30] = u + s; /* A1 */ + a[15] = u - s; /* A2 */ + a[14] = v - t; /* A3 */ + } +{ + FLOAT xr; + xr = a[28] - a[ 0]; a[ 0] += a[28]; a[28] = xr * wp[-2*18+7]; + xr = a[29] - a[ 1]; a[ 1] += a[29]; a[29] = xr * wp[-2*18+7]; + + xr = a[26] - a[ 2]; a[ 2] += a[26]; a[26] = xr * wp[-4*18+7]; + xr = a[27] - a[ 3]; a[ 3] += a[27]; a[27] = xr * wp[-4*18+7]; + + xr = a[24] - a[ 4]; a[ 4] += a[24]; a[24] = xr * wp[-6*18+7]; + xr = a[25] - a[ 5]; a[ 5] += a[25]; a[25] = xr * wp[-6*18+7]; + + xr = a[22] - a[ 6]; a[ 6] += a[22]; a[22] = xr * SQRT2; + xr = a[23] - a[ 7]; a[ 7] += a[23]; a[23] = xr * SQRT2 - a[ 7]; + a[ 7] -= a[ 6]; + a[22] -= a[ 7]; + a[23] -= a[22]; + + xr = a[ 6]; a[ 6] = a[31] - xr; a[31] = a[31] + xr; + xr = a[ 7]; a[ 7] = a[30] - xr; a[30] = a[30] + xr; + xr = a[22]; a[22] = a[15] - xr; a[15] = a[15] + xr; + xr = a[23]; a[23] = a[14] - xr; a[14] = a[14] + xr; + + xr = a[20] - a[ 8]; a[ 8] += a[20]; a[20] = xr * wp[-10*18+7]; + xr = a[21] - a[ 9]; a[ 9] += a[21]; a[21] = xr * wp[-10*18+7]; + + xr = a[18] - a[10]; a[10] += a[18]; a[18] = xr * wp[-12*18+7]; + xr = a[19] - a[11]; a[11] += a[19]; a[19] = xr * wp[-12*18+7]; + + xr = a[16] - a[12]; a[12] += a[16]; a[16] = xr * wp[-14*18+7]; + xr = a[17] - a[13]; a[13] += a[17]; a[17] = xr * wp[-14*18+7]; + + xr = -a[20] + a[24]; a[20] += a[24]; a[24] = xr * wp[-12*18+7]; + xr = -a[21] + a[25]; a[21] += a[25]; a[25] = xr * wp[-12*18+7]; + + xr = a[ 4] - a[ 8]; a[ 4] += a[ 8]; a[ 8] = xr * wp[-12*18+7]; + xr = a[ 5] - a[ 9]; a[ 5] += a[ 9]; a[ 9] = xr * wp[-12*18+7]; + + xr = a[ 0] - a[12]; a[ 0] += a[12]; a[12] = xr * wp[-4*18+7]; + xr = a[ 1] - a[13]; a[ 1] += a[13]; a[13] = xr * wp[-4*18+7]; + xr = a[16] - a[28]; a[16] += a[28]; a[28] = xr * wp[-4*18+7]; + xr = -a[17] + a[29]; a[17] += a[29]; a[29] = xr * wp[-4*18+7]; + + xr = SQRT2 * (a[ 2] - a[10]); a[ 2] += a[10]; a[10] = xr; + xr = SQRT2 * (a[ 3] - a[11]); a[ 3] += a[11]; a[11] = xr; + xr = SQRT2 * (-a[18] + a[26]); a[18] += a[26]; a[26] = xr - a[18]; + xr = SQRT2 * (-a[19] + a[27]); a[19] += a[27]; a[27] = xr - a[19]; + + xr = a[ 2]; a[19] -= a[ 3]; a[ 3] -= xr; a[ 2] = a[31] - xr; a[31] += xr; + xr = a[ 3]; a[11] -= a[19]; a[18] -= xr; a[ 3] = a[30] - xr; a[30] += xr; + xr = a[18]; a[27] -= a[11]; a[19] -= xr; a[18] = a[15] - xr; a[15] += xr; + + xr = a[19]; a[10] -= xr; a[19] = a[14] - xr; a[14] += xr; + xr = a[10]; a[11] -= xr; a[10] = a[23] - xr; a[23] += xr; + xr = a[11]; a[26] -= xr; a[11] = a[22] - xr; a[22] += xr; + xr = a[26]; a[27] -= xr; a[26] = a[ 7] - xr; a[ 7] += xr; + + xr = a[27]; a[27] = a[ 6] - xr; a[ 6] += xr; + + xr = SQRT2 * (a[ 0] - a[ 4]); a[ 0] += a[ 4]; a[ 4] = xr; + xr = SQRT2 * (a[ 1] - a[ 5]); a[ 1] += a[ 5]; a[ 5] = xr; + xr = SQRT2 * (a[16] - a[20]); a[16] += a[20]; a[20] = xr; + xr = SQRT2 * (a[17] - a[21]); a[17] += a[21]; a[21] = xr; + + xr = -SQRT2 * (a[ 8] - a[12]); a[ 8] += a[12]; a[12] = xr - a[ 8]; + xr = -SQRT2 * (a[ 9] - a[13]); a[ 9] += a[13]; a[13] = xr - a[ 9]; + xr = -SQRT2 * (a[25] - a[29]); a[25] += a[29]; a[29] = xr - a[25]; + xr = -SQRT2 * (a[24] + a[28]); a[24] -= a[28]; a[28] = xr - a[24]; + + xr = a[24] - a[16]; a[24] = xr; + xr = a[20] - xr; a[20] = xr; + xr = a[28] - xr; a[28] = xr; + + xr = a[25] - a[17]; a[25] = xr; + xr = a[21] - xr; a[21] = xr; + xr = a[29] - xr; a[29] = xr; + + xr = a[17] - a[ 1]; a[17] = xr; + xr = a[ 9] - xr; a[ 9] = xr; + xr = a[25] - xr; a[25] = xr; + xr = a[ 5] - xr; a[ 5] = xr; + xr = a[21] - xr; a[21] = xr; + xr = a[13] - xr; a[13] = xr; + xr = a[29] - xr; a[29] = xr; + + xr = a[ 1] - a[ 0]; a[ 1] = xr; + xr = a[16] - xr; a[16] = xr; + xr = a[17] - xr; a[17] = xr; + xr = a[ 8] - xr; a[ 8] = xr; + xr = a[ 9] - xr; a[ 9] = xr; + xr = a[24] - xr; a[24] = xr; + xr = a[25] - xr; a[25] = xr; + xr = a[ 4] - xr; a[ 4] = xr; + xr = a[ 5] - xr; a[ 5] = xr; + xr = a[20] - xr; a[20] = xr; + xr = a[21] - xr; a[21] = xr; + xr = a[12] - xr; a[12] = xr; + xr = a[13] - xr; a[13] = xr; + xr = a[28] - xr; a[28] = xr; + xr = a[29] - xr; a[29] = xr; + + xr = a[ 0]; a[ 0] += a[31]; a[31] -= xr; + xr = a[ 1]; a[ 1] += a[30]; a[30] -= xr; + xr = a[16]; a[16] += a[15]; a[15] -= xr; + xr = a[17]; a[17] += a[14]; a[14] -= xr; + xr = a[ 8]; a[ 8] += a[23]; a[23] -= xr; + xr = a[ 9]; a[ 9] += a[22]; a[22] -= xr; + xr = a[24]; a[24] += a[ 7]; a[ 7] -= xr; + xr = a[25]; a[25] += a[ 6]; a[ 6] -= xr; + xr = a[ 4]; a[ 4] += a[27]; a[27] -= xr; + xr = a[ 5]; a[ 5] += a[26]; a[26] -= xr; + xr = a[20]; a[20] += a[11]; a[11] -= xr; + xr = a[21]; a[21] += a[10]; a[10] -= xr; + xr = a[12]; a[12] += a[19]; a[19] -= xr; + xr = a[13]; a[13] += a[18]; a[18] -= xr; + xr = a[28]; a[28] += a[ 3]; a[ 3] -= xr; + xr = a[29]; a[29] += a[ 2]; a[ 2] -= xr; +} + +} + + +/*-------------------------------------------------------------------*/ +/* */ +/* Function: Calculation of the MDCT */ +/* In the case of long blocks (type 0,1,3) there are */ +/* 36 coefficents in the time domain and 18 in the frequency */ +/* domain. */ +/* In the case of short blocks (type 2) there are 3 */ +/* transformations with short length. This leads to 12 coefficents */ +/* in the time and 6 in the frequency domain. In this case the */ +/* results are stored side by side in the vector out[]. */ +/* */ +/* New layer3 */ +/* */ +/*-------------------------------------------------------------------*/ + +inline static void mdct_short(FLOAT *inout) +{ + int l; + for ( l = 0; l < 3; l++ ) { + FLOAT tc0,tc1,tc2,ts0,ts1,ts2; + + ts0 = inout[2*3] * win[SHORT_TYPE][0] - inout[5*3]; + tc0 = inout[0*3] * win[SHORT_TYPE][2] - inout[3*3]; + tc1 = ts0 + tc0; + tc2 = ts0 - tc0; + + ts0 = inout[5*3] * win[SHORT_TYPE][0] + inout[2*3]; + tc0 = inout[3*3] * win[SHORT_TYPE][2] + inout[0*3]; + ts1 = ts0 + tc0; + ts2 = -ts0 + tc0; + + tc0 = (inout[1*3] * win[SHORT_TYPE][1] - inout[4*3]) * 2.069978111953089e-11; /* tritab_s[1] */ + ts0 = (inout[4*3] * win[SHORT_TYPE][1] + inout[1*3]) * 2.069978111953089e-11; /* tritab_s[1] */ + + inout[3*0] = tc1 * 1.907525191737280e-11 /* tritab_s[2] */ + tc0; + inout[3*5] = -ts1 * 1.907525191737280e-11 /* tritab_s[0] */ + ts0; + + tc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11 /* tritab_s[2] */; + ts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0; + inout[3*1] = tc2-ts1; + inout[3*2] = tc2+ts1; + + tc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0; + ts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11 /* tritab_s[0] */; + inout[3*3] = tc1+ts2; + inout[3*4] = tc1-ts2; + + inout++; + } +} + +inline static void mdct_long(FLOAT *out, FLOAT *in) +{ + FLOAT ct,st; + { + FLOAT tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8; + /* 1,2, 5,6, 9,10, 13,14, 17 */ + tc1 = in[17]-in[ 9]; + tc3 = in[15]-in[11]; + tc4 = in[14]-in[12]; + ts5 = in[ 0]+in[ 8]; + ts6 = in[ 1]+in[ 7]; + ts7 = in[ 2]+in[ 6]; + ts8 = in[ 3]+in[ 5]; + + out[17] = (ts5+ts7-ts8)-(ts6-in[4]); + st = (ts5+ts7-ts8)*cx[7]+(ts6-in[4]); + ct = (tc1-tc3-tc4)*cx[6]; + out[5] = ct+st; + out[6] = ct-st; + + tc2 = (in[16]-in[10])*cx[6]; + ts6 = ts6*cx[7] + in[4]; + ct = tc1*cx[0] + tc2 + tc3*cx[1] + tc4*cx[2]; + st = -ts5*cx[4] + ts6 - ts7*cx[5] + ts8*cx[3]; + out[1] = ct+st; + out[2] = ct-st; + + ct = tc1*cx[1] - tc2 - tc3*cx[2] + tc4*cx[0]; + st = -ts5*cx[5] + ts6 - ts7*cx[3] + ts8*cx[4]; + out[ 9] = ct+st; + out[10] = ct-st; + + ct = tc1*cx[2] - tc2 + tc3*cx[0] - tc4*cx[1]; + st = ts5*cx[3] - ts6 + ts7*cx[4] - ts8*cx[5]; + out[13] = ct+st; + out[14] = ct-st; + } + { + FLOAT ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8; + + ts1 = in[ 8]-in[ 0]; + ts3 = in[ 6]-in[ 2]; + ts4 = in[ 5]-in[ 3]; + tc5 = in[17]+in[ 9]; + tc6 = in[16]+in[10]; + tc7 = in[15]+in[11]; + tc8 = in[14]+in[12]; + + out[0] = (tc5+tc7+tc8)+(tc6+in[13]); + ct = (tc5+tc7+tc8)*cx[7]-(tc6+in[13]); + st = (ts1-ts3+ts4)*cx[6]; + out[11] = ct+st; + out[12] = ct-st; + + ts2 = (in[7]-in[1])*cx[6]; + tc6 = in[13] - tc6*cx[7]; + ct = tc5*cx[3] - tc6 + tc7*cx[4] + tc8*cx[5]; + st = ts1*cx[2] + ts2 + ts3*cx[0] + ts4*cx[1]; + out[3] = ct+st; + out[4] = ct-st; + + ct = -tc5*cx[5] + tc6 - tc7*cx[3] - tc8*cx[4]; + st = ts1*cx[1] + ts2 - ts3*cx[2] - ts4*cx[0]; + out[7] = ct+st; + out[8] = ct-st; + + ct = -tc5*cx[4] + tc6 - tc7*cx[5] - tc8*cx[3]; + st = ts1*cx[0] - ts2 + ts3*cx[1] - ts4*cx[2]; + out[15] = ct+st; + out[16] = ct-st; + } +} + + +void mdct_sub48( + lame_internal_flags *gfc, const sample_t *w0, const sample_t *w1 + ) +{ + int gr, k, ch; + const sample_t *wk; + + wk = w0 + 286; + /* thinking cache performance, ch->gr loop is better than gr->ch loop */ + for (ch = 0; ch < gfc->channels_out; ch++) { + for (gr = 0; gr < gfc->mode_gr; gr++) { + int band; + gr_info *gi = &(gfc->l3_side.tt[gr][ch]); + FLOAT *mdct_enc = gi->xr; + FLOAT *samp = gfc->sb_sample[ch][1 - gr][0]; + + for (k = 0; k < 18 / 2; k++) { + window_subband(wk, samp); + window_subband(wk + 32, samp + 32); + samp += 64; + wk += 64; + /* + * Compensate for inversion in the analysis filter + */ + for (band = 1; band < 32; band+=2) { + samp[band-32] *= -1; + } + } + + /* + * Perform imdct of 18 previous subband samples + * + 18 current subband samples + */ + for (band = 0; band < 32; band++, mdct_enc += 18) { + int type = gi->block_type; + FLOAT *band0, *band1; + band0 = gfc->sb_sample[ch][ gr][0] + order[band]; + band1 = gfc->sb_sample[ch][1-gr][0] + order[band]; + if (gi->mixed_block_flag && band < 2) + type = 0; + if (gfc->amp_filter[band] == 0.0) { + memset(mdct_enc, 0, 18*sizeof(FLOAT)); + } else { + if (gfc->amp_filter[band] != 1.0) { + for (k=0; k<18; k++) + band1[k*32] *= gfc->amp_filter[band]; + } + if (type == SHORT_TYPE) { + for (k = -NS/4; k < 0; k++) { + FLOAT w = win[SHORT_TYPE][k+3]; + mdct_enc[k*3+ 9] = band0[( 9+k)*32] * w - band0[( 8-k)*32]; + mdct_enc[k*3+18] = band0[(14-k)*32] * w + band0[(15+k)*32]; + mdct_enc[k*3+10] = band0[(15+k)*32] * w - band0[(14-k)*32]; + mdct_enc[k*3+19] = band1[( 2-k)*32] * w + band1[( 3+k)*32]; + mdct_enc[k*3+11] = band1[( 3+k)*32] * w - band1[( 2-k)*32]; + mdct_enc[k*3+20] = band1[( 8-k)*32] * w + band1[( 9+k)*32]; + } + mdct_short(mdct_enc); + } else { + FLOAT work[18]; + for (k = -NL/4; k < 0; k++) { + FLOAT a, b; + a = win[type][k+27] * band1[(k+9)*32] + + win[type][k+36] * band1[(8-k)*32]; + b = win[type][k+ 9] * band0[(k+9)*32] + - win[type][k+18] * band0[(8-k)*32]; + work[k+ 9] = a - b*tantab_l[k+9]; + work[k+18] = a*tantab_l[k+9] + b; + } + + mdct_long(mdct_enc, work); + } + } + /* + * Perform aliasing reduction butterfly + */ + if (type != SHORT_TYPE && band != 0) { + for (k = 7; k >= 0; --k) { + FLOAT bu,bd; + bu = mdct_enc[k] * ca[k] + mdct_enc[-1-k] * cs[k]; + bd = mdct_enc[k] * cs[k] - mdct_enc[-1-k] * ca[k]; + + mdct_enc[-1-k] = bu; + mdct_enc[k] = bd; + } + } + } + } + wk = w1 + 286; + if (gfc->mode_gr == 1) { + memcpy(gfc->sb_sample[ch][0], gfc->sb_sample[ch][1], 576 * sizeof(FLOAT)); + } + } +} + diff --git a/lame-3.97/libmp3lame/newmdct.h b/lame-3.97/libmp3lame/newmdct.h new file mode 100644 index 0000000..ec5a00a --- /dev/null +++ b/lame-3.97/libmp3lame/newmdct.h @@ -0,0 +1,28 @@ +/* + * New Modified DCT include file + * + * Copyright (c) 1999 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_NEWMDCT_H +#define LAME_NEWMDCT_H + +void mdct_sub48(lame_internal_flags *gfc,const sample_t *w0, const sample_t *w1); + +#endif /* LAME_NEWMDCT_H */ + diff --git a/lame-3.97/libmp3lame/presets.c b/lame-3.97/libmp3lame/presets.c new file mode 100644 index 0000000..22654de --- /dev/null +++ b/lame-3.97/libmp3lame/presets.c @@ -0,0 +1,613 @@ +/* + * presets.c -- Apply presets + * + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "set_get.h" + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif +#include "util.h" + + +#define SET_OPTION(opt, val, def) if (enforce) \ + lame_set_##opt(gfp, val); \ + else if (lame_get_##opt(gfp) == def) \ + lame_set_##opt(gfp, val); + + + +int apply_abr_preset(lame_global_flags* gfp, int preset, int enforce) +{ + int k; + + typedef struct { + int abr_kbps; + int quant_comp; + int quant_comp_s; + int safejoint; + FLOAT nsmsfix; + FLOAT st_lrm; /*short threshold*/ + FLOAT st_s; + FLOAT nsbass; + FLOAT scale; + FLOAT masking_adj; + FLOAT ath_lower; + FLOAT ath_curve; + FLOAT interch; + int sfscale; + } abr_presets_t; + + + + /* Switch mappings for ABR mode */ + const abr_presets_t abr_switch_map [] = { + /* kbps quant q_s safejoint nsmsfix st_lrm st_s ns-bass scale msk ath_lwr ath_curve interch , sfscale */ + { 8, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -30.0, 11, 0.0012 , 1}, /* 8, impossible to use in stereo */ + { 16, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -25.0, 11, 0.0010 , 1}, /* 16 */ + { 24, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -20.0, 11, 0.0010 , 1}, /* 24 */ + { 32, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -15.0, 11, 0.0010 , 1}, /* 32 */ + { 40, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -10.0, 11, 0.0009 , 1}, /* 40 */ + { 48, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -10.0, 11, 0.0009 , 1}, /* 48 */ + { 56, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -6.0, 11, 0.0008 , 1}, /* 56 */ + { 64, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, -2.0, 11, 0.0008 , 1}, /* 64 */ + { 80, 9, 9, 0, 0 , 6.60, 145 , 0, 0.95, 0, .0, 8, 0.0007 , 1}, /* 80 */ + { 96, 9, 9, 0, 2.50, 6.60, 145 , 0, 0.95, 0, 1.0, 5.5, 0.0006 , 1}, /* 96 */ + { 112, 9, 9, 0, 2.25, 6.60, 145 , 0, 0.95, 0, 2.0, 4.5, 0.0005 , 1}, /* 112 */ + { 128, 9, 9, 0, 1.95, 6.40, 140 , 0, 0.95, 0, 3.0, 4, 0.0002 , 1}, /* 128 */ + { 160, 9, 9, 1, 1.79, 6.00, 135 , 0, 0.95, -2, 5.0, 3.5, 0 , 1}, /* 160 */ + { 192, 9, 9, 1, 1.49, 5.60, 125 , 0, 0.97, -4, 7.0, 3, 0 , 0}, /* 192 */ + { 224, 9, 9, 1, 1.25, 5.20, 125 , 0, 0.98, -6, 9.0, 2, 0 , 0}, /* 224 */ + { 256, 9, 9, 1, 0.97, 5.20, 125 , 0, 1.00, -8, 10.0, 1, 0 , 0}, /* 256 */ + { 320, 9, 9, 1, 0.90, 5.20, 125 , 0, 1.00, -10, 12.0, 0, 0 , 0} /* 320 */ + }; + + + /* Variables for the ABR stuff */ + int r; + int actual_bitrate = preset; + + r= nearestBitrateFullIndex(preset); + + + lame_set_VBR(gfp, vbr_abr); + lame_set_VBR_mean_bitrate_kbps(gfp, (actual_bitrate)); + lame_set_VBR_mean_bitrate_kbps(gfp, Min(lame_get_VBR_mean_bitrate_kbps(gfp), 320)); + lame_set_VBR_mean_bitrate_kbps(gfp, Max(lame_get_VBR_mean_bitrate_kbps(gfp), 8)); + lame_set_brate(gfp, lame_get_VBR_mean_bitrate_kbps(gfp)); + + + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + + + /* parameters for which there is no proper set/get interface */ + if (abr_switch_map[r].safejoint > 0) + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + + if (abr_switch_map[r].sfscale > 0) + lame_set_sfscale(gfp, 1); + + /* ns-bass tweaks */ + if (abr_switch_map[r].nsbass != 0) { + k = (int)(abr_switch_map[r].nsbass * 4); + if (k < 0) k += 64; + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (k << 2)); + } + + + + + SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1); + SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1); + + SET_OPTION(msfix, abr_switch_map[r].nsmsfix, -1); + + SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1); + SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1); + + /* ABR seems to have big problems with clipping, especially at low bitrates */ + /* so we compensate for that here by using a scale value depending on bitrate */ + SET_OPTION(scale, abr_switch_map[r].scale, -1); + + SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj , 0); + if (abr_switch_map[r].masking_adj > 0) { + SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * .9 , 0); + } else { + SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj * 1.1 , 0); + } + + + SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0); + SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1); + + SET_OPTION(interChRatio, abr_switch_map[r].interch, -1); + + + return preset; +} + + + + + +int apply_preset(lame_global_flags* gfp, int preset, int enforce) +{ + /*translate legacy presets*/ + switch (preset) { + case R3MIX: { + preset = V3; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case MEDIUM: { + preset = V4; + lame_set_VBR(gfp, vbr_rh); + break; + } + case MEDIUM_FAST: { + preset = V4; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case STANDARD: { + preset = V2; + lame_set_VBR(gfp, vbr_rh); + break; + } + case STANDARD_FAST: { + preset = V2; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case EXTREME: { + preset = V0; + lame_set_VBR(gfp, vbr_rh); + break; + } + case EXTREME_FAST: { + preset = V0; + lame_set_VBR(gfp, vbr_mtrh); + break; + } + case INSANE: { + preset = 320; + break; + } + } + + + gfp->preset = preset; + + switch (preset) { + case V9: { + lame_set_VBR_q(gfp, 9); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.6, 0); + SET_OPTION(maskingadjust_short, 1.6, 0); + SET_OPTION(interChRatio, 0.0008, -1); + SET_OPTION(ATHlower, -36, 0); + SET_OPTION(ATHcurve, 11, -1); + SET_OPTION(athaa_sensitivity, -25, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.75, 0); + SET_OPTION(maskingadjust_short, 1.75, 0); + SET_OPTION(interChRatio, 0.0008, -1); + SET_OPTION(ATHlower, -39.5, 0); + SET_OPTION(ATHcurve, 11, -1); + SET_OPTION(athaa_sensitivity, -25, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V8: { + lame_set_VBR_q(gfp, 8); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.2, 0); + SET_OPTION(maskingadjust_short, 1.15, 0); + SET_OPTION(interChRatio, 0.0007, -1); + SET_OPTION(ATHlower, -27.5, 0); + SET_OPTION(ATHcurve, 10, -1); + SET_OPTION(athaa_sensitivity, -23, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(maskingadjust, 1.2, 0); + SET_OPTION(maskingadjust_short, 1.15, 0); + SET_OPTION(interChRatio, 0.0007, -1); + SET_OPTION(ATHlower, -30, 0); + SET_OPTION(ATHcurve, 10, -1); + SET_OPTION(athaa_sensitivity, -23, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V7: { + lame_set_VBR_q(gfp, 7); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.70, -1); + SET_OPTION(maskingadjust, .8, 0); + SET_OPTION(maskingadjust_short, .75, 0); + SET_OPTION(interChRatio, 0.0006, -1); + SET_OPTION(ATHlower, -19.7, 0); + SET_OPTION(ATHcurve, 8, -1); + SET_OPTION(athaa_sensitivity, -22, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.70, -1); + SET_OPTION(maskingadjust, 0.8, 0); + SET_OPTION(maskingadjust_short, 0.78, 0); + SET_OPTION(interChRatio, 0.0006, -1); + SET_OPTION(ATHlower, -22, 0); + SET_OPTION(ATHcurve, 8, -1); + SET_OPTION(athaa_sensitivity, -22, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V6: { + lame_set_VBR_q(gfp, 6); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.30, -1); + SET_OPTION(maskingadjust, .67, 0); + SET_OPTION(maskingadjust_short, .65, 0); + SET_OPTION(interChRatio, 0.0004, -1); + SET_OPTION(ATHlower, -14.7, 0); + SET_OPTION(ATHcurve, 6.5, -1); + SET_OPTION(athaa_sensitivity, -19, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.60f, -1); + SET_OPTION(short_threshold_s, 145.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 2.30, -1); + SET_OPTION(maskingadjust, 0.67, 0); + SET_OPTION(maskingadjust_short, 0.65, 0); + SET_OPTION(interChRatio, 0.0004, -1); + SET_OPTION(ATHlower, -14.5, 0); + SET_OPTION(ATHcurve, 6.5, -1); + SET_OPTION(athaa_sensitivity, -19, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V5: { + lame_set_VBR_q(gfp, 5); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.40f, -1); + SET_OPTION(short_threshold_s, 140.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 1.95, -1); + SET_OPTION(maskingadjust, .5, 0); + SET_OPTION(maskingadjust_short, .4, 0); + SET_OPTION(interChRatio, 0.0002, -1); + SET_OPTION(ATHlower, -7.5, 0); + SET_OPTION(ATHcurve, 4, -1); + SET_OPTION(athaa_sensitivity, -12, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.40f, -1); + SET_OPTION(short_threshold_s, 140.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + SET_OPTION(msfix, 1.95, -1); + SET_OPTION(maskingadjust, 0.45, 0); + SET_OPTION(maskingadjust_short, 0.35, 0); + SET_OPTION(interChRatio, 0.0002, -1); + SET_OPTION(ATHlower, -7.7, 0); + SET_OPTION(ATHcurve, 4, -1); + SET_OPTION(athaa_sensitivity, -12, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V4: { /*MEDIUM*/ + lame_set_VBR_q(gfp, 4); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 6.00f, -1); + SET_OPTION(short_threshold_s, 135.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.79, -1); + SET_OPTION(maskingadjust, -.7, 0); + SET_OPTION(maskingadjust_short, -1.1, 0); + SET_OPTION(ATHlower, 1.1, 0); + SET_OPTION(ATHcurve, 3.5, -1); + SET_OPTION(athaa_sensitivity, -8, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 6.00f, -1); + SET_OPTION(short_threshold_s, 135.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.79, -1); + SET_OPTION(maskingadjust, -.7, 0); + SET_OPTION(maskingadjust_short, -1.1, 0); + SET_OPTION(ATHlower, 0, 0); + SET_OPTION(ATHcurve, 3.5, -1); + SET_OPTION(athaa_sensitivity, -8, 0); + + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V3: { + lame_set_VBR_q(gfp, 3); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.80f, -1); + SET_OPTION(short_threshold_s, 130.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.64, -1); + SET_OPTION(maskingadjust, -1.8, 0); + SET_OPTION(maskingadjust_short, -2.8, 0); + SET_OPTION(ATHlower, 2.6, 0); + SET_OPTION(ATHcurve, 3, -1); + SET_OPTION(athaa_sensitivity, -4, 0); + + /* modify sfb21 by 5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (20 << 20)); + lame_set_experimentalY(gfp, 1); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.80f, -1); + SET_OPTION(short_threshold_s, 130.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.64, -1); + SET_OPTION(maskingadjust, -1.45, 0); + SET_OPTION(maskingadjust_short, -2.45, 0); + SET_OPTION(ATHlower, 1.1, 0); + SET_OPTION(ATHcurve, 3, -1); + SET_OPTION(athaa_sensitivity, -4, 0); + + /* modify sfb21 by 3.75 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (15 << 20)); + lame_set_experimentalY(gfp, 1); + + return preset; + } + } + } + case V2: { /*STANDARD*/ + lame_set_VBR_q(gfp, 2); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.6f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.49, -1); + SET_OPTION(maskingadjust, -2.2, 0); + SET_OPTION(maskingadjust_short, -3.5, 0); + SET_OPTION(ATHlower, 2.8, 0); + SET_OPTION(ATHcurve, 2, -1); + /* modify sfb21 by 5.25 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.6f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.49, -1); + SET_OPTION(maskingadjust, -1.7, 0); + SET_OPTION(maskingadjust_short, -3.2, 0); + SET_OPTION(ATHlower, 2, 0); + SET_OPTION(ATHcurve, 2, -1); + /* modify sfb21 by 4.5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (18 << 20)); + + return preset; + } + } + } + case V1: { + lame_set_VBR_q(gfp, 1); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.3f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.35, -1); + SET_OPTION(maskingadjust, -3.6, 0); + SET_OPTION(maskingadjust_short, -5.6, 0); + SET_OPTION(ATHlower, 4.5, 0); + SET_OPTION(ATHcurve, 1.5, -1); + /* modify sfb21 by 5.25 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.3f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, 1.35, -1); + SET_OPTION(maskingadjust, -3.4, 0); + SET_OPTION(maskingadjust_short, -5.4, 0); + SET_OPTION(ATHlower, 4.5, 0); + SET_OPTION(ATHcurve, 1.5, -1); + /* modify sfb21 by 5.25 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + } + } + case V0: { /*EXTREME*/ + lame_set_VBR_q(gfp, 0); + switch (lame_get_VBR(gfp)) { + case vbr_rh: { + SET_OPTION(short_threshold_lrm, 5.2f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 9, -1); + SET_OPTION(quant_comp_short, 9, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, .97, -1); + SET_OPTION(maskingadjust, -4.2, 0); + SET_OPTION(maskingadjust_short, -6.3, 0); + SET_OPTION(ATHlower, 4.8, 0); + SET_OPTION(ATHcurve, 1, -1); + /* modify sfb21 by 5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (21 << 20)); + + return preset; + } + default: { + SET_OPTION(short_threshold_lrm, 5.2f, -1); + SET_OPTION(short_threshold_s, 125.0f, -1); + SET_OPTION(quant_comp, 0, -1); + SET_OPTION(quant_comp_short, 0, -1); + SET_OPTION(psy_model, PSY_NSPSYTUNE, -1); + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | 2); /* safejoint */ + SET_OPTION(msfix, .97, -1); + SET_OPTION(maskingadjust, -3.6, 0); + SET_OPTION(maskingadjust_short, -5.6, 0); + SET_OPTION(ATHlower, 7.5, 0); + SET_OPTION(ATHcurve, 1, -1); + /* modify sfb21 by 6.5 dB plus ns-treble=0 */ + lame_set_exp_nspsytune(gfp, lame_get_exp_nspsytune(gfp) | (26 << 20)); + + return preset; + } + } + } + default: + break; + } + + if ((preset >= 8) && (preset <=320)) + return apply_abr_preset(gfp, preset, enforce); + + + gfp->preset = 0; /*no corresponding preset found*/ + return preset; +} + diff --git a/lame-3.97/libmp3lame/psymodel.c b/lame-3.97/libmp3lame/psymodel.c new file mode 100644 index 0000000..628dffa --- /dev/null +++ b/lame-3.97/libmp3lame/psymodel.c @@ -0,0 +1,2108 @@ +/* + * psymodel.c + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2001-2002 Naoki Shibata + * Copyright (c) 2000-2003 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2000-2005 Gabriel Bouvigne + * Copyright (c) 2000-2005 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: psymodel.c,v 1.142.2.2 2006/08/18 18:22:20 bouvigne Exp $ */ + + +/* +PSYCHO ACOUSTICS + + +This routine computes the psycho acoustics, delayed by one granule. + +Input: buffer of PCM data (1024 samples). + +This window should be centered over the 576 sample granule window. +The routine will compute the psycho acoustics for +this granule, but return the psycho acoustics computed +for the *previous* granule. This is because the block +type of the previous granule can only be determined +after we have computed the psycho acoustics for the following +granule. + +Output: maskings and energies for each scalefactor band. +block type, PE, and some correlation measures. +The PE is used by CBR modes to determine if extra bits +from the bit reservoir should be used. The correlation +measures are used to determine mid/side or regular stereo. +*/ +/* +Notation: + +barks: a non-linear frequency scale. Mapping from frequency to + barks is given by freq2bark() + +scalefactor bands: The spectrum (frequencies) are broken into + SBMAX "scalefactor bands". Thes bands + are determined by the MPEG ISO spec. In + the noise shaping/quantization code, we allocate + bits among the partition bands to achieve the + best possible quality + +partition bands: The spectrum is also broken into about + 64 "partition bands". Each partition + band is about .34 barks wide. There are about 2-5 + partition bands for each scalefactor band. + +LAME computes all psycho acoustic information for each partition +band. Then at the end of the computations, this information +is mapped to scalefactor bands. The energy in each scalefactor +band is taken as the sum of the energy in all partition bands +which overlap the scalefactor band. The maskings can be computed +in the same way (and thus represent the average masking in that band) +or by taking the minmum value multiplied by the number of +partition bands used (which represents a minimum masking in that band). +*/ +/* +The general outline is as follows: + +1. compute the energy in each partition band +2. compute the tonality in each partition band +3. compute the strength of each partion band "masker" +4. compute the masking (via the spreading function applied to each masker) +5. Modifications for mid/side masking. + +Each partition band is considiered a "masker". The strength +of the i'th masker in band j is given by: + + s3(bark(i)-bark(j))*strength(i) + +The strength of the masker is a function of the energy and tonality. +The more tonal, the less masking. LAME uses a simple linear formula +(controlled by NMT and TMN) which says the strength is given by the +energy divided by a linear function of the tonality. +*/ +/* +s3() is the "spreading function". It is given by a formula +determined via listening tests. + +The total masking in the j'th partition band is the sum over +all maskings i. It is thus given by the convolution of +the strength with s3(), the "spreading function." + +masking(j) = sum_over_i s3(i-j)*strength(i) = s3 o strength + +where "o" = convolution operator. s3 is given by a formula determined +via listening tests. It is normalized so that s3 o 1 = 1. + +Note: instead of a simple convolution, LAME also has the +option of using "additive masking" + +The most critical part is step 2, computing the tonality of each +partition band. LAME has two tonality estimators. The first +is based on the ISO spec, and measures how predictiable the +signal is over time. The more predictable, the more tonal. +The second measure is based on looking at the spectrum of +a single granule. The more peaky the spectrum, the more +tonal. By most indications, the latter approach is better. + +Finally, in step 5, the maskings for the mid and side +channel are possibly increased. Under certain circumstances, +noise in the mid & side channels is assumed to also +be masked by strong maskers in the L or R channels. + + +Other data computed by the psy-model: + +ms_ratio side-channel / mid-channel masking ratio (for previous granule) +ms_ratio_next side-channel / mid-channel masking ratio for this granule + +percep_entropy[2] L and R values (prev granule) of PE - A measure of how + much pre-echo is in the previous granule +percep_entropy_MS[2] mid and side channel values (prev granule) of percep_entropy +energy[4] L,R,M,S energy in each channel, prev granule +blocktype_d[2] block type to use for previous granule +*/ + + + + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "util.h" +#include "encoder.h" +#include "psymodel.h" +#include "l3side.h" +#include <assert.h> +#include "tables.h" +#include "fft.h" +#include "machine.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +#define NSFIRLEN 21 + +#ifdef M_LN10 +#define LN_TO_LOG10 (M_LN10/10) +#else +#define LN_TO_LOG10 0.2302585093 +#endif + +#ifdef NON_LINEAR_PSY + +static const float non_linear_psy_constant = .3; + +#define NON_LINEAR_SCALE_ITEM(x) pow((x), non_linear_psy_constant) +#define NON_LINEAR_SCALE_SUM(x) pow((x), 1/non_linear_psy_constant) + +#if 0 +#define NON_LINEAR_SCALE_ENERGY(x) pow(10, (x)/10) +#else +#define NON_LINEAR_SCALE_ENERGY(x) (x) +#endif + +#else + +#define NON_LINEAR_SCALE_ITEM(x) (x) +#define NON_LINEAR_SCALE_SUM(x) (x) +#define NON_LINEAR_SCALE_ENERGY(x) (x) + +#endif + + +/* + L3psycho_anal. Compute psycho acoustics. + + Data returned to the calling program must be delayed by one + granule. + + This is done in two places. + If we do not need to know the blocktype, the copying + can be done here at the top of the program: we copy the data for + the last granule (computed during the last call) before it is + overwritten with the new data. It looks like this: + + 0. static psymodel_data + 1. calling_program_data = psymodel_data + 2. compute psymodel_data + + For data which needs to know the blocktype, the copying must be + done at the end of this loop, and the old values must be saved: + + 0. static psymodel_data_old + 1. compute psymodel_data + 2. compute possible block type of this granule + 3. compute final block type of previous granule based on #2. + 4. calling_program_data = psymodel_data_old + 5. psymodel_data_old = psymodel_data +*/ + + + + + +/* psycho_loudness_approx + jd - 2001 mar 12 +in: energy - BLKSIZE/2 elements of frequency magnitudes ^ 2 + gfp - uses out_samplerate, ATHtype (also needed for ATHformula) +returns: loudness^2 approximation, a positive value roughly tuned for a value + of 1.0 for signals near clipping. +notes: When calibrated, feeding this function binary white noise at sample + values +32767 or -32768 should return values that approach 3. + ATHformula is used to approximate an equal loudness curve. +future: Data indicates that the shape of the equal loudness curve varies + with intensity. This function might be improved by using an equal + loudness curve shaped for typical playback levels (instead of the + ATH, that is shaped for the threshold). A flexible realization might + simply bend the existing ATH curve to achieve the desired shape. + However, the potential gain may not be enough to justify an effort. +*/ +static FLOAT +psycho_loudness_approx( FLOAT *energy, lame_internal_flags *gfc ) +{ + int i; + FLOAT loudness_power; + + loudness_power = 0.0; + /* apply weights to power in freq. bands*/ + for( i = 0; i < BLKSIZE/2; ++i ) + loudness_power += energy[i] * gfc->ATH->eql_w[i]; + loudness_power *= VO_SCALE; + + return loudness_power; +} + +static void +compute_ffts( + lame_global_flags *gfp, + FLOAT fftenergy[HBLKSIZE], + FLOAT (*fftenergy_s)[HBLKSIZE_s], + FLOAT (*wsamp_l)[BLKSIZE], + FLOAT (*wsamp_s)[3][BLKSIZE_s], + int gr_out, + int chn, + const sample_t *buffer[2] + ) +{ + int b, j; + lame_internal_flags *gfc=gfp->internal_flags; + if (chn<2) { + fft_long ( gfc, *wsamp_l, chn, buffer); + fft_short( gfc, *wsamp_s, chn, buffer); + } + /* FFT data for mid and side channel is derived from L & R */ + else if (chn == 2) { + for (j = BLKSIZE-1; j >=0 ; --j) { + FLOAT l = wsamp_l[0][j]; + FLOAT r = wsamp_l[1][j]; + wsamp_l[0][j] = (l+r)*(FLOAT)(SQRT2*0.5); + wsamp_l[1][j] = (l-r)*(FLOAT)(SQRT2*0.5); + } + for (b = 2; b >= 0; --b) { + for (j = BLKSIZE_s-1; j >= 0 ; --j) { + FLOAT l = wsamp_s[0][b][j]; + FLOAT r = wsamp_s[1][b][j]; + wsamp_s[0][b][j] = (l+r)*(FLOAT)(SQRT2*0.5); + wsamp_s[1][b][j] = (l-r)*(FLOAT)(SQRT2*0.5); + } + } + } + + /********************************************************************* + * compute energies + *********************************************************************/ + fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[0][0]); + fftenergy[0] *= fftenergy[0]; + + for (j=BLKSIZE/2-1; j >= 0; --j) { + FLOAT re = (*wsamp_l)[BLKSIZE/2-j]; + FLOAT im = (*wsamp_l)[BLKSIZE/2+j]; + fftenergy[BLKSIZE/2-j] = NON_LINEAR_SCALE_ENERGY((re * re + im * im) * 0.5f); + } + for (b = 2; b >= 0; --b) { + fftenergy_s[b][0] = (*wsamp_s)[b][0]; + fftenergy_s[b][0] *= fftenergy_s [b][0]; + for (j=BLKSIZE_s/2-1; j >= 0; --j) { + FLOAT re = (*wsamp_s)[b][BLKSIZE_s/2-j]; + FLOAT im = (*wsamp_s)[b][BLKSIZE_s/2+j]; + fftenergy_s[b][BLKSIZE_s/2-j] = NON_LINEAR_SCALE_ENERGY((re * re + im * im) * 0.5f); + } + } + /* total energy */ + {FLOAT totalenergy=0.0; + for (j=11;j < HBLKSIZE; j++) + totalenergy += fftenergy[j]; + + gfc->tot_ener[chn] = totalenergy; + } + +#if defined(HAVE_GTK) + if (gfp->analysis) { + for (j=0; j<HBLKSIZE ; j++) { + gfc->pinfo->energy[gr_out][chn][j]=gfc->energy_save[chn][j]; + gfc->energy_save[chn][j]=fftenergy[j]; + } + gfc->pinfo->pe[gr_out][chn]=gfc->pe[chn]; + } +#endif + /********************************************************************* + * compute loudness approximation (used for ATH auto-level adjustment) + *********************************************************************/ + if (gfp->athaa_loudapprox == 2 && chn < 2) {/*no loudness for mid/side ch*/ + gfc->loudness_sq[gr_out][chn] = gfc->loudness_sq_save[chn]; + gfc->loudness_sq_save[chn] + = psycho_loudness_approx(fftenergy, gfc); + } +} + +/*************************************************************** + * compute interchannel masking effects + ***************************************************************/ +static void +calc_interchannel_masking( + lame_global_flags * gfp, + FLOAT ratio + ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int sb, sblock; + FLOAT l, r; + if (gfc->channels_out > 1){ + for ( sb = 0; sb < SBMAX_l; sb++ ) { + l = gfc->thm[0].l[sb]; + r = gfc->thm[1].l[sb]; + gfc->thm[0].l[sb] += r*ratio; + gfc->thm[1].l[sb] += l*ratio; + } + for ( sb = 0; sb < SBMAX_s; sb++ ) { + for ( sblock = 0; sblock < 3; sblock++ ) { + l = gfc->thm[0].s[sb][sblock]; + r = gfc->thm[1].s[sb][sblock]; + gfc->thm[0].s[sb][sblock] += r*ratio; + gfc->thm[1].s[sb][sblock] += l*ratio; + } + } + } +} + + + +/*************************************************************** + * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper + ***************************************************************/ +static void +msfix1( + lame_internal_flags *gfc + ) +{ + int sb, sblock; + FLOAT rside,rmid,mld; + for ( sb = 0; sb < SBMAX_l; sb++ ) { + /* use this fix if L & R masking differs by 2db or less */ + /* if db = 10*log10(x2/x1) < 2 */ + /* if (x2 < 1.58*x1) { */ + if (gfc->thm[0].l[sb] > 1.58*gfc->thm[1].l[sb] + || gfc->thm[1].l[sb] > 1.58*gfc->thm[0].l[sb]) + continue; + + mld = gfc->mld_l[sb]*gfc->en[3].l[sb]; + rmid = Max(gfc->thm[2].l[sb], Min(gfc->thm[3].l[sb],mld)); + + mld = gfc->mld_l[sb]*gfc->en[2].l[sb]; + rside = Max(gfc->thm[3].l[sb], Min(gfc->thm[2].l[sb],mld)); + gfc->thm[2].l[sb]=rmid; + gfc->thm[3].l[sb]=rside; + } + + for ( sb = 0; sb < SBMAX_s; sb++ ) { + for ( sblock = 0; sblock < 3; sblock++ ) { + if (gfc->thm[0].s[sb][sblock] > 1.58*gfc->thm[1].s[sb][sblock] + || gfc->thm[1].s[sb][sblock] > 1.58*gfc->thm[0].s[sb][sblock]) + continue; + + mld = gfc->mld_s[sb]*gfc->en[3].s[sb][sblock]; + rmid = Max(gfc->thm[2].s[sb][sblock], + Min(gfc->thm[3].s[sb][sblock],mld)); + + mld = gfc->mld_s[sb]*gfc->en[2].s[sb][sblock]; + rside = Max(gfc->thm[3].s[sb][sblock], + Min(gfc->thm[2].s[sb][sblock],mld)); + + gfc->thm[2].s[sb][sblock]=rmid; + gfc->thm[3].s[sb][sblock]=rside; + } + } +} + +/*************************************************************** + * Adjust M/S maskings if user set "msfix" + ***************************************************************/ +/* Naoki Shibata 2000 */ +static void +ns_msfix( + lame_internal_flags *gfc, + FLOAT msfix, + FLOAT athadjust + ) +{ + int sb, sblock; + FLOAT msfix2 = msfix; + FLOAT athlower = pow(10, athadjust); + + msfix *= 2.0; + msfix2 *= 2.0; + for ( sb = 0; sb < SBMAX_l; sb++ ) { + FLOAT thmLR,thmM,thmS,ath; + ath = (gfc->ATH->cb[gfc->bm_l[sb]])*athlower; + thmLR = Min(Max(gfc->thm[0].l[sb],ath), Max(gfc->thm[1].l[sb],ath)); + thmM = Max(gfc->thm[2].l[sb],ath); + thmS = Max(gfc->thm[3].l[sb],ath); + + if (thmLR*msfix < thmM+thmS) { + FLOAT f = thmLR * msfix2 / (thmM+thmS); + thmM *= f; + thmS *= f; + } + gfc->thm[2].l[sb] = Min(thmM,gfc->thm[2].l[sb]); + gfc->thm[3].l[sb] = Min(thmS,gfc->thm[3].l[sb]); + } + + athlower *= ((FLOAT)BLKSIZE_s / BLKSIZE); + for ( sb = 0; sb < SBMAX_s; sb++ ) { + for ( sblock = 0; sblock < 3; sblock++ ) { + FLOAT thmLR,thmM,thmS,ath; + ath = (gfc->ATH->cb[gfc->bm_s[sb]])*athlower; + thmLR = Min(Max(gfc->thm[0].s[sb][sblock],ath), + Max(gfc->thm[1].s[sb][sblock],ath)); + thmM = Max(gfc->thm[2].s[sb][sblock],ath); + thmS = Max(gfc->thm[3].s[sb][sblock],ath); + + if (thmLR*msfix < thmM+thmS) { + FLOAT f = thmLR*msfix / (thmM+thmS); + thmM *= f; + thmS *= f; + } + gfc->thm[2].s[sb][sblock] = Min(gfc->thm[2].s[sb][sblock],thmM); + gfc->thm[3].s[sb][sblock] = Min(gfc->thm[3].s[sb][sblock],thmS); + } + } +} + +/* longblock threshold calculation (part 2) */ +static void convert_partition2scalefac_l( + lame_internal_flags *gfc, + FLOAT *eb, + FLOAT *thr, + int chn + ) +{ + FLOAT enn, thmm; + int sb, b; + enn = thmm = 0.0; + sb = b = 0; + for (;;) { + while (b < gfc->bo_l[sb]) { + enn += eb[b]; + thmm += thr[b]; + b++; + } + + if (sb == SBMAX_l - 1) + break; + + assert( enn >= 0 ); + assert( thmm >= 0 ); + gfc->en [chn].l[sb] = enn + 0.5 * eb [b]; + gfc->thm[chn].l[sb] = thmm + 0.5 * thr[b]; + + enn = 0.5 * eb[b]; + thmm = 0.5 * thr[b]; + assert( enn >= 0 ); + assert( thmm >= 0 ); + b++; + sb++; + } + + gfc->en [chn].l[SBMAX_l-1] = enn; + gfc->thm[chn].l[SBMAX_l-1] = thmm; +} + +static void +compute_masking_s( + lame_internal_flags *gfc, + FLOAT (*fftenergy_s)[HBLKSIZE_s], + FLOAT *eb, + FLOAT *thr, + int chn, + int sblock, + FLOAT athlower + ) +{ + int j, b; + athlower *= ((FLOAT)BLKSIZE_s / BLKSIZE); + for (j = b = 0; b < gfc->npart_s; b++) { + FLOAT ecb = fftenergy_s[sblock][j++]; + int kk = gfc->numlines_s[b]; + while (--kk > 0) + ecb += fftenergy_s[sblock][j++]; + eb[b] = ecb; + } + for (j = b = 0; b < gfc->npart_s; b++) { + int kk = gfc->s3ind_s[b][0]; + FLOAT ecb = gfc->s3_ss[j++] * eb[kk++]; + while (kk <= gfc->s3ind_s[b][1]) + ecb += gfc->s3_ss[j++] * eb[kk++]; + + thr[b] = Min( ecb, rpelev_s * gfc->nb_s1[chn][b] ); + if (gfc->blocktype_old[chn & 1] == SHORT_TYPE ) { + thr[b] = Min(thr[b], rpelev2_s * gfc->nb_s2[chn][b]); + } + thr[b] = Max( thr[b], + Min(gfc->ATH->cb[gfc->bm_s[b]] * athlower, + thr[b] * 2) ); + gfc->nb_s2[chn][b] = gfc->nb_s1[chn][b]; + gfc->nb_s1[chn][b] = ecb; + assert( thr[b] >= 0 ); + } +} + +static void +block_type_set( + lame_global_flags * gfp, + int *uselongblock, + int *blocktype_d, + int *blocktype + ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int chn; + + if (gfp->short_blocks == short_block_coupled + /* force both channels to use the same block type */ + /* this is necessary if the frame is to be encoded in ms_stereo. */ + /* But even without ms_stereo, FhG does this */ + && !(uselongblock[0] && uselongblock[1])) + uselongblock[0] = uselongblock[1] = 0; + + /* update the blocktype of the previous granule, since it depends on what + * happend in this granule */ + for (chn=0; chn<gfc->channels_out; chn++) { + blocktype[chn] = NORM_TYPE; + /* disable short blocks */ + if (gfp->short_blocks == short_block_dispensed) + uselongblock[chn]=1; + if (gfp->short_blocks == short_block_forced) + uselongblock[chn]=0; + + if (uselongblock[chn]) { + /* no attack : use long blocks */ + assert( gfc->blocktype_old[chn] != START_TYPE ); + if (gfc->blocktype_old[chn] == SHORT_TYPE) + blocktype[chn] = STOP_TYPE; + } else { + /* attack : use short blocks */ + blocktype[chn] = SHORT_TYPE; + if (gfc->blocktype_old[chn] == NORM_TYPE) { + gfc->blocktype_old[chn] = START_TYPE; + } + if (gfc->blocktype_old[chn] == STOP_TYPE) + gfc->blocktype_old[chn] = SHORT_TYPE; + } + + blocktype_d[chn] = gfc->blocktype_old[chn]; /* value returned to calling program */ + gfc->blocktype_old[chn] = blocktype[chn]; /* save for next call to l3psy_anal */ + } +} + +static void +determine_block_type( lame_global_flags * gfp, FLOAT fftenergy_s[3][HBLKSIZE_s], int uselongblock[], + int chn, int gr_out, FLOAT* pe ) +{ + lame_internal_flags* gfc = gfp->internal_flags; + int j; + /*************************************************************** + * determine the block type (window type) based on L & R channels + ***************************************************************/ + /* compute PE for all 4 channels */ + FLOAT mn,mx,ma=0,mb=0,mc=0; + for ( j = HBLKSIZE_s/2; j < HBLKSIZE_s; j ++) { + ma += fftenergy_s[0][j]; + mb += fftenergy_s[1][j]; + mc += fftenergy_s[2][j]; + } + mn = Min(ma,mb); + mn = Min(mn,mc); + mx = Max(ma,mb); + mx = Max(mx,mc); +#if defined(HAVE_GTK) + if (gfp->analysis) { + gfc->pinfo->ers[gr_out][chn]=gfc->ers_save[chn]; + gfc->ers_save[chn]=(mx/(1e-12+mn)); + } +#endif + /* bit allocation is based on pe. */ + if (mx>mn) { + FLOAT tmp = FAST_LOG_X(mx/(1e-12+mn), 400.0); + if (tmp > *pe) *pe = tmp; + } + + /* block type is based just on L or R channel */ + if (chn<2) { + uselongblock[chn] = 1; + + /* tuned for t1.wav. doesnt effect most other samples */ + if (*pe > 3000) + uselongblock[chn]=0; + + if ( mx > 30*mn ) + {/* big surge of energy - always use short blocks */ + uselongblock[chn] = 0; + } + else if ((mx > 10*mn) && (*pe > 1000)) + {/* medium surge, medium pe - use short blocks */ + uselongblock[chn] = 0; + } + } +} + +int L3psycho_anal( lame_global_flags * gfp, + const sample_t *buffer[2], int gr_out, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio masking_ratio[2][2], + III_psy_ratio masking_MS_ratio[2][2], + FLOAT percep_entropy[2],FLOAT percep_MS_entropy[2], + FLOAT energy[4], + int blocktype_d[2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + + /* fft and energy calculation */ + FLOAT wsamp_L[2][BLKSIZE]; + FLOAT wsamp_S[2][3][BLKSIZE_s]; + FLOAT fftenergy[HBLKSIZE]; + FLOAT fftenergy_s[3][HBLKSIZE_s]; + + /* convolution */ + FLOAT eb[CBANDS+1]; + FLOAT cb[CBANDS]; + FLOAT thr[CBANDS+1]; + + /* ratios */ + FLOAT ms_ratio_l=0, ms_ratio_s=0; + + /* block type */ + int blocktype[2],uselongblock[2]; + + /* usual variables like loop indices, etc.. */ + int numchn, chn; + int b, i, j, k; + int sb,sblock; + + /* rh 20040301: the following loops do access one off the limits + * so I increase the array dimensions by one and initialize the + * accessed values to zero + */ + assert( gfc->npart_s <= CBANDS ); + assert( gfc->npart_l <= CBANDS ); + eb [gfc->npart_s] = 0; + thr[gfc->npart_s] = 0; + eb [gfc->npart_l] = 0; + thr[gfc->npart_l] = 0; + + numchn = gfc->channels_out; + /* chn=2 and 3 = Mid and Side channels */ + if (gfp->mode == JOINT_STEREO) numchn=4; + + for (chn=0; chn<numchn; chn++) { + FLOAT (*wsamp_l)[BLKSIZE]; + FLOAT (*wsamp_s)[3][BLKSIZE_s]; + energy[chn] = gfc->tot_ener[chn]; + + /* there is a one granule delay. Copy maskings computed last call + * into masking_ratio to return to calling program. + */ + if (chn < 2) { + /* LR maskings */ + percep_entropy [chn] = gfc -> pe [chn]; + masking_ratio [gr_out] [chn] .en = gfc -> en [chn]; + masking_ratio [gr_out] [chn] .thm = gfc -> thm [chn]; + } else { + /* MS maskings */ + percep_MS_entropy [chn-2] = gfc -> pe [chn]; + masking_MS_ratio [gr_out] [chn-2].en = gfc -> en [chn]; + masking_MS_ratio [gr_out] [chn-2].thm = gfc -> thm [chn]; + } + + /********************************************************************* + * compute FFTs + *********************************************************************/ + wsamp_s = wsamp_S+(chn & 1); + wsamp_l = wsamp_L+(chn & 1); + compute_ffts(gfp, fftenergy, fftenergy_s, + wsamp_l, wsamp_s, gr_out, chn, buffer); + + /********************************************************************* + * compute unpredicatability of first six spectral lines + *********************************************************************/ + for ( j = 0; j < CW_LOWER_INDEX; j++ ) { + /* calculate unpredictability measure cw */ + FLOAT a2, b2, r1, r2; + FLOAT numre, numim, den; + + a2 = gfc-> ax_sav[chn][1][j]; + b2 = gfc-> bx_sav[chn][1][j]; + + r2 = gfc-> rx_sav[chn][1][j]; + r1 = gfc-> rx_sav[chn][1][j] = gfc-> rx_sav[chn][0][j]; + + /* square (x1,y1) */ + if (r1 != 0.0) { + FLOAT a1 = gfc-> ax_sav[chn][1][j] = gfc-> ax_sav[chn][0][j]; + FLOAT b1 = gfc-> bx_sav[chn][1][j] = gfc-> bx_sav[chn][0][j]; + den = r1*r1; + numre = a1*b1; + numim = den-b1*b1; + } else { + /* no aging is needed for ax_sav[chn][0][j] and that of bx + because if r1=0, r2 should be 0 for next time. */ + den = numre = 1.0; + numim = 0.0; + } + + /* multiply by (x2,-y2) */ + if (r2 != 0.0) { + FLOAT tmp2 = (numim+numre)*(a2+b2)*0.5f; + FLOAT tmp1 = -a2*numre+tmp2; + numre = -b2*numim+tmp2; + numim = tmp1; + den *= r2; + } + + r1 = 2.0f*r1-r2; + r2 = gfc-> rx_sav[chn][0][j] = sqrt(fftenergy[j]); + r2 = r2+fabs(r1); + if (r2 != 0) { + FLOAT an = gfc-> ax_sav[chn][0][j] = wsamp_l[0][j]; + FLOAT bn = gfc-> bx_sav[chn][0][j] = j==0 ? wsamp_l[0][0] : wsamp_l[0][BLKSIZE-j]; + den = r1/den*2.0; + numre = (an+bn)-numre*den; + numim = (an-bn)-numim*den; + r2 = sqrt(numre*numre+numim*numim)/(r2*2.0); + } + gfc->cw[j] = r2; + } + + /********************************************************************** + * compute unpredicatibility of next 200 spectral lines + *********************************************************************/ + for (; j < gfc->cw_upper_index; j += 4 ) { + /* calculate unpredictability measure cw */ + FLOAT rn, r1, r2; + FLOAT numre, numim, den; + k = (j+2) / 4; + /* square (x1,y1) */ + r1 = fftenergy_s[0][k]; + if (r1 != 0.0) { + FLOAT a1 = (*wsamp_s)[0][k]; + FLOAT b1 = (*wsamp_s)[0][BLKSIZE_s-k]; /* k is never 0 */ + numre = a1*b1; + numim = r1-b1*b1; + den = r1; + r1 = sqrt(r1); + } else { + den = numre = 1.0; + numim = 0.0; + } + + /* multiply by (x2,-y2) */ + r2 = fftenergy_s[2][k]; + if (r2 != 0.0) { + FLOAT a2 = (*wsamp_s)[2][k]; + FLOAT b2 = (*wsamp_s)[2][BLKSIZE_s-k]; + + FLOAT tmp2 = (numim+numre)*(a2+b2)*0.5f; + FLOAT tmp1 = tmp2-a2*numre; + numre = tmp2-b2*numim; + numim = tmp1; + + r2 = sqrt(r2); + den *= r2; + } + + /* r-prime factor */ + rn = sqrt(fftenergy_s[1][k])+fabs(2*r1-r2); + if (rn != 0) { + FLOAT an = (*wsamp_s)[1][k]; + FLOAT bn = (*wsamp_s)[1][BLKSIZE_s-k]; + den = (2*r1-r2)/den*2.0f; + numre = (an+bn)-numre*den; + numim = (an-bn)-numim*den; + rn = sqrt(numre*numre+numim*numim)/(rn*2.0f); + } + gfc->cw[j+1] = gfc->cw[j+2] = gfc->cw[j+3] = gfc->cw[j] = rn; + } + + /********************************************************************** + * Calculate the energy and the unpredictability in the threshold + * calculation partitions + *********************************************************************/ + b = 0; + for (j = 0; j < gfc->cw_upper_index + && gfc->numlines_l[b] && b < gfc->npart_l; ) { + FLOAT ebb, cbb; + + ebb = NON_LINEAR_SCALE_ITEM(fftenergy[j]); + cbb = NON_LINEAR_SCALE_ITEM(fftenergy[j] * gfc->cw[j]); + j++; + + for (i = gfc->numlines_l[b] - 1; i > 0; i--) { + ebb += NON_LINEAR_SCALE_ITEM(fftenergy[j]); + /* XXX: should "* gfc->cw[j])" be outside of the scaling? */ + cbb += NON_LINEAR_SCALE_ITEM(fftenergy[j] * gfc->cw[j]); + j++; + } + eb[b] = NON_LINEAR_SCALE_SUM(ebb); + cb[b] = NON_LINEAR_SCALE_SUM(cbb); + b++; + } + + for (; b < gfc->npart_l; b++ ) { + FLOAT ebb = NON_LINEAR_SCALE_ITEM(fftenergy[j++]); + assert(gfc->numlines_l[b]); + for (i = gfc->numlines_l[b] - 1; i > 0; i--) { + ebb += NON_LINEAR_SCALE_ITEM(fftenergy[j++]); + } + eb[b] = NON_LINEAR_SCALE_SUM(ebb); + /* XXX: should the "* .4" be outside of the scaling? */ + cb[b] = NON_LINEAR_SCALE_SUM(ebb * 0.4); + } + + /********************************************************************** + * convolve the partitioned energy and unpredictability + * with the spreading function, s3_l[b][k](packed into s3_ll) + *********************************************************************/ + /* calculate percetual entropy */ + gfc->pe[chn] = 0; + k = 0; + for ( b = 0;b < gfc->npart_l; b++ ) { + FLOAT tbb,ecb,ctb; + int kk; + ecb = ctb = 0.; + for (kk = gfc->s3ind[b][0]; kk <= gfc->s3ind[b][1]; kk++ ) { + /* sprdngf for Layer III */ + ecb += gfc->s3_ll[k] * eb[kk]; + ctb += gfc->s3_ll[k] * cb[kk]; + k++; + } + +/* calculate the tonality of each threshold calculation partition + * calculate the SNR in each threshold calculation partition + * tonality = -0.299 - .43*log(ctb/ecb); + * tonality = 0: use NMT (lots of masking) + * tonality = 1: use TMN (little masking) + */ + tbb = ecb; + if (tbb != 0.0) { + tbb = ctb / tbb; + /* convert to tonality index */ + /* tonality small: tbb=1 */ + /* tonality large: tbb=-.299 */ + tbb = CONV1 + FAST_LOG_X(tbb, CONV2); + if (tbb < 0.0) tbb = exp(-LN_TO_LOG10*NMT); + else if (tbb > 1.0) tbb = exp(-LN_TO_LOG10*TMN); + else tbb = exp(-LN_TO_LOG10 * ( (TMN-NMT)*tbb + NMT )); + } + +/* at this point, tbb represents the amount the spreading function + * will be reduced. The smaller the value, the less masking. + * minval[] = 1 (0db) says just use tbb. + * minval[]= .01 (-20db) says reduce spreading function by at least 20db. + */ + tbb = Min(gfc->minval[b], tbb); + /* stabilize tonality estimation */ + if (gfc->PSY->tonalityPatch && b > 5) { + FLOAT const x = 1.8699422; + FLOAT w = gfc->PSY->prvTonRed[b/2] * x; + if (tbb > w) + tbb = w; + gfc->PSY->prvTonRed[b] = tbb; + } + ecb *= tbb; + + /* long block pre-echo control. */ + /* rpelev=2.0, rpelev2=16.0 */ + /* note: all surges in PE are because of this pre-echo formula + * for thr[b]. If it this is not used, PE is always around 600 + */ + /* dont use long block pre-echo control if previous granule was + * a short block. This is to avoid the situation: + * frame0: quiet (very low masking) + * frame1: surge (triggers short blocks) + * frame2: regular frame. looks like pre-echo when compared to + * frame0, but all pre-echo was in frame1. + */ + /* chn=0,1 L and R channels + chn=2,3 S and M channels. + */ + thr[b] = Min(ecb, rpelev*gfc->nb_1[chn][b]); + if (gfc->blocktype_old[chn & 1] != SHORT_TYPE + && thr[b] > rpelev2*gfc->nb_2[chn][b]) + thr[b] = rpelev2*gfc->nb_2[chn][b]; + + gfc->nb_2[chn][b] = gfc->nb_1[chn][b]; + gfc->nb_1[chn][b] = ecb; + + ecb = Max(thr[b], gfc->ATH->cb[b]*gfc->ATH->adjust); + if (ecb < eb[b]) + gfc->pe[chn] -= gfc->numlines_l[b] * FAST_LOG(ecb / eb[b]); + } + + determine_block_type( gfp, fftenergy_s, uselongblock, chn, gr_out, &gfc->pe[chn] ); + + /* compute masking thresholds for long blocks */ + convert_partition2scalefac_l(gfc, eb, thr, chn); + + /* compute masking thresholds for short blocks */ + for (sblock = 0; sblock < 3; sblock++) { + FLOAT enn, thmm; + compute_masking_s(gfc, fftenergy_s, eb, thr, chn, + sblock,gfp->ATHlower*gfc->ATH->adjust); + b = -1; + enn = thmm = 0.0; + for (sb = 0; sb < SBMAX_s; sb++) { + while (++b < gfc->bo_s[sb]) { + enn += eb[b]; + thmm += thr[b]; + } + enn += 0.5 * eb[b]; /* for the last sfb b is larger than npart_s!! */ + thmm += 0.5 * thr[b]; /* rh 20040301 */ + assert( enn >= 0 ); + assert( thmm >= 0 ); + gfc->en [chn].s[sb][sblock] = enn; + gfc->thm[chn].s[sb][sblock] = thmm; + enn = 0.5 * eb[b]; + thmm = 0.5 * thr[b]; + assert( enn >= 0 ); + assert( thmm >= 0 ); + } + gfc->en [chn].s[sb-1][sblock] += enn; + gfc->thm[chn].s[sb-1][sblock] += thmm; + } + } /* end loop over chn */ + + if (gfp->interChRatio != 0.0) + calc_interchannel_masking(gfp, gfp->interChRatio); + + if (gfp->mode == JOINT_STEREO) { + FLOAT db,x1,x2,sidetot=0,tot=0; + msfix1(gfc); + if (gfp->msfix != 0.0) + ns_msfix(gfc, gfp->msfix, gfp->ATHlower*gfc->ATH->adjust); + + /* determin ms_ratio from masking thresholds*/ + /* use ms_stereo (ms_ratio < .35) if average thresh. diff < 5 db */ + for (sb= SBMAX_l/4 ; sb< SBMAX_l; sb ++ ) { + x1 = Min(gfc->thm[0].l[sb],gfc->thm[1].l[sb]); + x2 = Max(gfc->thm[0].l[sb],gfc->thm[1].l[sb]); + /* thresholds difference in db */ + if (x2 >= 1000*x1) db=3; + else db = FAST_LOG10(x2/x1); + /* DEBUGF(gfc,"db = %f %e %e \n",db,gfc->thm[0].l[sb],gfc->thm[1].l[sb]);*/ + sidetot += db; + tot++; + } + ms_ratio_l= (sidetot/tot)*0.7; /* was .35*(sidetot/tot)/5.0*10 */ + ms_ratio_l = Min(ms_ratio_l,0.5); + + sidetot=0; tot=0; + for ( sblock = 0; sblock < 3; sblock++ ) + for ( sb = SBMAX_s/4; sb < SBMAX_s; sb++ ) { + x1 = Min(gfc->thm[0].s[sb][sblock],gfc->thm[1].s[sb][sblock]); + x2 = Max(gfc->thm[0].s[sb][sblock],gfc->thm[1].s[sb][sblock]); + /* thresholds difference in db */ + if (x2 >= 1000*x1) db=3; + else db = FAST_LOG10(x2/x1); + sidetot += db; + tot++; + } + ms_ratio_s = (sidetot/tot)*0.7; /* was .35*(sidetot/tot)/5.0*10 */ + ms_ratio_s = Min(ms_ratio_s,.5); + } + + /*************************************************************** + * determine final block type + ***************************************************************/ + block_type_set(gfp, uselongblock, blocktype_d, blocktype); + + if (blocktype_d[0]==SHORT_TYPE && blocktype_d[1]==SHORT_TYPE) + *ms_ratio = gfc->ms_ratio_s_old; + else + *ms_ratio = gfc->ms_ratio_l_old; + + gfc->ms_ratio_s_old = ms_ratio_s; + gfc->ms_ratio_l_old = ms_ratio_l; + + /* we dont know the block type of this frame yet - assume long */ + *ms_ratio_next = ms_ratio_l; + + return 0; +} + + + +/* mask_add optimization */ +/* init the limit values used to avoid computing log in mask_add when it is not necessary */ + +/* For example, with i = 10*log10(m2/m1)/10*16 (= log10(m2/m1)*16) + * + * abs(i)>8 is equivalent (as i is an integer) to + * abs(i)>=9 + * i>=9 || i<=-9 + * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16 + * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16) + * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16 + * exp10 is strictly increasing thus this is equivalent to + * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants + */ + + +#define I1LIMIT 8 /* as in if(i>8) */ +#define I2LIMIT 23 /* as in if(i>24) -> changed 23 */ +#define MLIMIT 15 /* as in if(m<15) */ + +static FLOAT ma_max_i1; +static FLOAT ma_max_i2; +static FLOAT ma_max_m; + + + +static void init_mask_add_max_values(void) +{ + ma_max_i1 = pow(10,(I1LIMIT+1)/16.0); + ma_max_i2 = pow(10,(I2LIMIT+1)/16.0); + ma_max_m = pow(10,(MLIMIT)/10.0); +} + + + + + + +/* addition of simultaneous masking Naoki Shibata 2000/7 */ +inline static FLOAT mask_add(FLOAT m1,FLOAT m2,int k,int b, lame_internal_flags * const gfc) +{ + static const FLOAT table1[] = { + 3.3246 *3.3246 ,3.23837*3.23837,3.15437*3.15437,3.00412*3.00412,2.86103*2.86103,2.65407*2.65407,2.46209*2.46209,2.284 *2.284 , + 2.11879*2.11879,1.96552*1.96552,1.82335*1.82335,1.69146*1.69146,1.56911*1.56911,1.46658*1.46658,1.37074*1.37074,1.31036*1.31036, + 1.25264*1.25264,1.20648*1.20648,1.16203*1.16203,1.12765*1.12765,1.09428*1.09428,1.0659 *1.0659 ,1.03826*1.03826,1.01895*1.01895, + 1 + }; + + static const FLOAT table2[] = { + 1.33352*1.33352,1.35879*1.35879,1.38454*1.38454,1.39497*1.39497,1.40548*1.40548,1.3537 *1.3537 ,1.30382*1.30382,1.22321*1.22321, + 1.14758*1.14758, + 1 + }; + + static const FLOAT table3[] = { + 2.35364*2.35364,2.29259*2.29259,2.23313*2.23313,2.12675*2.12675,2.02545*2.02545,1.87894*1.87894,1.74303*1.74303,1.61695*1.61695, + 1.49999*1.49999,1.39148*1.39148,1.29083*1.29083,1.19746*1.19746,1.11084*1.11084,1.03826*1.03826 + }; + + + int i; + FLOAT ratio; + + + if (m2 > m1) { + if (m2 < (m1*ma_max_i2)) + ratio = m2/m1; + else + return (m1+m2); + } else { + if (m1 >= (m2*ma_max_i2)) + return (m1+m2); + ratio = m1/m2; + } + /*i = abs(10*log10(m2 / m1)/10*16); + m = 10*log10((m1+m2)/gfc->ATH->cb[k]);*/ + + + /* Should always be true, just checking */ + assert(m1>=0); + assert(m2>=0); + assert(gfc->ATH->cb[k]>=0); + + + m1 += m2; + + if ((unsigned int)(b+3) <= 3+3) { /* approximately, 1 bark = 3 partitions */ + /* 65% of the cases */ + /* originally 'if(i > 8)' */ + if (ratio >= ma_max_i1) { + /* 43% of the total */ + return m1; + } + + /* 22% of the total */ + i = FAST_LOG10_X(ratio,16.0); + return m1*table2[i]; + } + + /* m<15 equ log10((m1+m2)/gfc->ATH->cb[k])<1.5 + * equ (m1+m2)/gfc->ATH->cb[k]<10^1.5 + * equ (m1+m2)<10^1.5 * gfc->ATH->cb[k] + */ + + i = FAST_LOG10_X(ratio, 16.0); + m2 = gfc->ATH->cb[k]*gfc->ATH->adjust; + if (m1 < ma_max_m*m2) { + /* 3% of the total */ + /* Originally if (m > 0) { */ + if (m1 > m2) { + FLOAT f, r; + + f = 1.0; + if (i <= 13) f = table3[i]; + + r = FAST_LOG10_X(m1 / m2, 10.0/15.0); + return m1 * ((table1[i]-f)*r+f); + } + + if (i > 13) return m1; + + return m1*table3[i]; + } + + + /* 10% of total */ + return m1*table1[i]; +} + + + +static inline FLOAT NS_INTERP(FLOAT x, FLOAT y, FLOAT r) +{ + /* was pow((x),(r))*pow((y),1-(r))*/ + if(r==1.0) + return x; /* 99.7% of the time */ + if(r==0.0) + return y; + if(y>0.0) + return pow(x/y,r)*y; /* rest of the time */ + return 0.0; /* never happens */ +} + + + +static void nsPsy2dataRead( + FILE *fp, + FLOAT *eb2, + FLOAT *eb, + int chn, + int npart_l + ) +{ + int b; + for(;;) { + static const char chname[] = {'L','R','M','S'}; + char c; + + fscanf(fp, "%c",&c); + for (b=0; b < npart_l; b++) { + double e; + fscanf(fp, "%lf",&e); + eb2[b] = e; + } + + if (feof(fp)) abort(); + if (c == chname[chn]) break; + abort(); + } + + eb2[62] = eb2[61]; + for (b=0; b < npart_l; b++ ) + eb2[b] = eb2[b] * eb[b]; +} + +static FLOAT +pecalc_s( + III_psy_ratio *mr, + FLOAT masking_lower + ) +{ + FLOAT pe_s; + const static FLOAT regcoef_s[] = { + 11.8, /* these values are tuned only for 44.1kHz... */ + 13.6, + 17.2, + 32, + 46.5, + 51.3, + 57.5, + 67.1, + 71.5, + 84.6, + 97.6, + 130, +/* 255.8 */ + }; + int sb, sblock; + + pe_s = 1236.28/4; + for (sb = 0; sb < SBMAX_s - 1; sb++) { + for (sblock=0;sblock<3;sblock++) { + FLOAT x; + if (regcoef_s[sb] == 0.0 + || mr->thm.s[sb][sblock] <= 0.0 + || mr->en.s[sb][sblock] + <= (x = mr->thm.s[sb][sblock] * masking_lower)) + continue; + + if (mr->en.s[sb][sblock] > x*1e10) + pe_s += regcoef_s[sb] * (10.0 * LOG10); + else + pe_s += regcoef_s[sb] * FAST_LOG10(mr->en.s[sb][sblock] / x); + } + } + + return pe_s; +} + +static FLOAT +pecalc_l( + III_psy_ratio *mr, + FLOAT masking_lower + ) +{ + FLOAT pe_l; + const static FLOAT regcoef_l[] = { + 6.8, /* these values are tuned only for 44.1kHz... */ + 5.8, + 5.8, + 6.4, + 6.5, + 9.9, + 12.1, + 14.4, + 15, + 18.9, + 21.6, + 26.9, + 34.2, + 40.2, + 46.8, + 56.5, + 60.7, + 73.9, + 85.7, + 93.4, + 126.1, +/* 241.3 */ + }; + int sb; + + pe_l = 1124.23/4; + for (sb = 0; sb < SBMAX_l - 1; sb++) { + FLOAT x; + if (mr->thm.l[sb] <= 0.0 + || mr->en.l[sb] <= (x = mr->thm.l[sb]*masking_lower)) + continue; + + if (mr->en.l[sb] > x*1e10) + pe_l += regcoef_l[sb] * (10.0 * LOG10); + else + pe_l += regcoef_l[sb] * FAST_LOG10(mr->en.l[sb] / x); + } + + return pe_l; +} + + + + + +int L3psycho_anal_ns( lame_global_flags * gfp, + const sample_t *buffer[2], int gr_out, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio masking_ratio[2][2], + III_psy_ratio masking_MS_ratio[2][2], + FLOAT percep_entropy[2],FLOAT percep_MS_entropy[2], + FLOAT energy[4], + int blocktype_d[2]) +{ +/* to get a good cache performance, one has to think about + * the sequence, in which the variables are used. + * (Note: these static variables have been moved to the gfc-> struct, + * and their order in memory is layed out in util.h) + */ + lame_internal_flags *gfc=gfp->internal_flags; + + /* fft and energy calculation */ + FLOAT wsamp_L[2][BLKSIZE]; + FLOAT wsamp_S[2][3][BLKSIZE_s]; + + /* block type */ + int blocktype[2],uselongblock[2]; + + /* usual variables like loop indices, etc.. */ + int numchn, chn; + int b, i, j, k; + int sb,sblock; + + /* variables used for --nspsytune */ + FLOAT ns_hpfsmpl[2][576]; + FLOAT pcfact; + + numchn = gfc->channels_out; + /* chn=2 and 3 = Mid and Side channels */ + if (gfp->mode == JOINT_STEREO) numchn=4; + + if (gfp->VBR==vbr_off) pcfact = gfc->ResvMax == 0 ? 0 : ((FLOAT)gfc->ResvSize)/gfc->ResvMax*0.5; + else if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh || gfp->VBR == vbr_mt) { + /*static const FLOAT pcQns[10]={1.0,1.0,1.0,0.8,0.6,0.5,0.4,0.3,0.2,0.1}; + pcfact = pcQns[gfp->VBR_q];*/ + pcfact = 0.6; + } else pcfact = 1.0; + + /********************************************************************** + * Apply HPF of fs/4 to the input signal. + * This is used for attack detection / handling. + **********************************************************************/ + /* Don't copy the input buffer into a temporary buffer */ + /* unroll the loop 2 times */ + for(chn=0;chn<gfc->channels_out;chn++) { + static const FLOAT fircoef[] = { + -8.65163e-18*2, -0.00851586*2, -6.74764e-18*2, 0.0209036*2, + -3.36639e-17*2, -0.0438162 *2, -1.54175e-17*2, 0.0931738*2, + -5.52212e-17*2, -0.313819 *2 + }; + + /* apply high pass filter of fs/4 */ + const sample_t * const firbuf = &buffer[chn][576-350-NSFIRLEN+192]; + for (i=0;i<576;i++) { + FLOAT sum1, sum2; + sum1 = firbuf[i + 10]; + sum2 = 0.0; + for (j=0;j<(NSFIRLEN-1)/2;j+=2) { + sum1 += fircoef[j ] * (firbuf[i+j ]+firbuf[i+NSFIRLEN-j ]); + sum2 += fircoef[j+1] * (firbuf[i+j+1]+firbuf[i+NSFIRLEN-j-1]); + } + ns_hpfsmpl[chn][i] = sum1 + sum2; + } + masking_ratio [gr_out] [chn] .en = gfc -> en [chn]; + masking_ratio [gr_out] [chn] .thm = gfc -> thm [chn]; + if (numchn > 2) { + /* MS maskings */ + /*percep_MS_entropy [chn-2] = gfc -> pe [chn]; */ + masking_MS_ratio [gr_out] [chn].en = gfc -> en [chn+2]; + masking_MS_ratio [gr_out] [chn].thm = gfc -> thm [chn+2]; + } + } + + for (chn=0; chn<numchn; chn++) { + FLOAT (*wsamp_l)[BLKSIZE]; + FLOAT (*wsamp_s)[3][BLKSIZE_s]; + FLOAT en_subshort[12]; + FLOAT en_short[4] = { 0 }; + FLOAT attack_intensity[12]; + int ns_uselongblock = 1; + FLOAT attackThreshold; + FLOAT max[CBANDS],avg[CBANDS]; + int ns_attacks[4] = {0}; + FLOAT fftenergy[HBLKSIZE]; + FLOAT fftenergy_s[3][HBLKSIZE_s]; + /* convolution */ + FLOAT eb[CBANDS+1],eb2[CBANDS]; + FLOAT thr[CBANDS+1]; + + + /*This is the masking table: + According to tonality, values are going from 0dB (TMN) + to 9.3dB (NMT). + After additive masking computation, 8dB are added, so + final values are going from 8dB to 17.3dB + */ + static const FLOAT tab[] = { + 1.0/*pow(10, -0)*/, + 0.79433/*pow(10, -0.1)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.63096/*pow(10, -0.2)*/, + 0.25119/*pow(10, -0.6)*/, + 0.11749/*pow(10, -0.93)*/ + }; + + /* rh 20040301: the following loops do access one off the limits + * so I increase the array dimensions by one and initialize the + * accessed values to zero + */ + assert( gfc->npart_s <= CBANDS ); + assert( gfc->npart_l <= CBANDS ); + eb [gfc->npart_s] = 0; + thr[gfc->npart_s] = 0; + eb [gfc->npart_l] = 0; + thr[gfc->npart_l] = 0; + + /*************************************************************** + * determine the block type (window type) + ***************************************************************/ + /* calculate energies of each sub-shortblocks */ + for (i=0; i<3; i++) { + en_subshort[i] = gfc->nsPsy.last_en_subshort[chn][i+6]; + attack_intensity[i] + = en_subshort[i] / gfc->nsPsy.last_en_subshort[chn][i+4]; + en_short[0] += en_subshort[i]; + } + + if (chn == 2) { + for(i=0;i<576;i++) { + FLOAT l, r; + l = ns_hpfsmpl[0][i]; + r = ns_hpfsmpl[1][i]; + ns_hpfsmpl[0][i] = l+r; + ns_hpfsmpl[1][i] = l-r; + } + } + { + FLOAT const *pf = ns_hpfsmpl[chn & 1]; + for (i = 0; i < 9; i++) { + FLOAT const *const pfe = pf + 576 / 9; + FLOAT p = 1.; + for (; pf < pfe; pf++) + if (p < fabs(*pf)) + p = fabs(*pf); + + gfc->nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p; + en_short[1 + i / 3] += p; + if (p > en_subshort[i + 3 - 2]) + p = p / en_subshort[i + 3 - 2]; + else if (en_subshort[i + 3 - 2] > p * 10.0) + p = en_subshort[i + 3 - 2] / (p * 10.0); + else + p = 0.0; + attack_intensity[i + 3] = p; + } + } +#if defined(HAVE_GTK) + if (gfp->analysis) { + FLOAT x = attack_intensity[0]; + for (i=1;i<12;i++) + if (x < attack_intensity[i]) + x = attack_intensity[i]; + gfc->pinfo->ers[gr_out][chn] = gfc->ers_save[chn]; + gfc->ers_save[chn] = x; + } +#endif + /* compare energies between sub-shortblocks */ + attackThreshold = (chn == 3) + ? gfc->nsPsy.attackthre_s : gfc->nsPsy.attackthre; + for (i = 0; i < 12; i++) + if (!ns_attacks[i / 3] && attack_intensity[i] > attackThreshold) + ns_attacks[i / 3] = (i % 3) + 1; + + /* should have energy change between short blocks, + in order to avoid periodic signals */ + for (i = 1; i < 4; i++) { + float ratio; + if (en_short[i - 1] > en_short[i]) + ratio = en_short[i - 1] / en_short[i]; + else + ratio = en_short[i] / en_short[i - 1]; + if (ratio < 1.7) { + ns_attacks[i] = 0; + if (i == 1) + ns_attacks[0] = 0; + } + } + + if (ns_attacks[0] && gfc->nsPsy.last_attacks[chn]) + ns_attacks[0] = 0; + + if (gfc->nsPsy.last_attacks[chn] == 3 || + ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3]) { + ns_uselongblock = 0; + + if (ns_attacks[1] && ns_attacks[0]) + ns_attacks[1] = 0; + if (ns_attacks[2] && ns_attacks[1]) + ns_attacks[2] = 0; + if (ns_attacks[3] && ns_attacks[2]) + ns_attacks[3] = 0; + } + + if (chn < 2) { + uselongblock[chn] = ns_uselongblock; + } + else { + if (ns_uselongblock == 0) { + uselongblock[0] = uselongblock[1] = 0; + } + } + + /* there is a one granule delay. Copy maskings computed last call + * into masking_ratio to return to calling program. + */ + energy[chn]=gfc->tot_ener[chn]; + + /********************************************************************* + * compute FFTs + *********************************************************************/ + wsamp_s = wsamp_S+(chn & 1); + wsamp_l = wsamp_L+(chn & 1); + compute_ffts(gfp, fftenergy, fftenergy_s, + wsamp_l, wsamp_s, gr_out, chn, buffer); + + /* compute masking thresholds for short blocks */ + for (sblock = 0; sblock < 3; sblock++) { + FLOAT enn, thmm; + compute_masking_s(gfc, fftenergy_s, eb, thr, chn, sblock, + gfp->ATHlower*gfc->ATH->adjust); + b = -1; + for (sb = 0; sb < SBMAX_s; sb++) { + enn = thmm = 0.0; + while (++b < gfc->bo_s[sb]) { + enn += eb[b]; + thmm += thr[b]; + } + enn += 0.5 * eb[b]; /* for the last sfb b is larger than npart_s!! */ + thmm += 0.5 * thr[b]; /* rh 20040301 */ + gfc->en [chn].s[sb][sblock] = enn; + + assert( enn >= 0 ); + assert( thmm >= 0 ); + + /**** short block pre-echo control ****/ + thmm *= NS_PREECHO_ATT0; + if (ns_attacks[sblock] >= 2 || ns_attacks[sblock+1] == 1) { + int idx = (sblock != 0) ? sblock-1 : 2; + double p = NS_INTERP(gfc->thm[chn].s[sb][idx], + thmm, NS_PREECHO_ATT1*pcfact); + thmm = Min(thmm,p); + } + + if (ns_attacks[sblock] == 1) { + int idx = (sblock != 0) ? sblock-1 : 2; + double p = NS_INTERP(gfc->thm[chn].s[sb][idx], + thmm,NS_PREECHO_ATT2*pcfact); + thmm = Min(thmm,p); + } else if ((sblock != 0 && ns_attacks[sblock-1] == 3) + || (sblock == 0 && gfc->nsPsy.last_attacks[chn] == 3)) { + int idx = (sblock != 2) ? sblock+1 : 0; + double p = NS_INTERP(gfc->thm[chn].s[sb][idx], + thmm,NS_PREECHO_ATT2*pcfact); + thmm = Min(thmm,p); + } + + /* pulse like signal detection for fatboy.wav and so on */ + enn = en_subshort[sblock*3+3] + en_subshort[sblock*3+4] + + en_subshort[sblock*3+5]; + if (en_subshort[sblock*3+5]*6 < enn) { + thmm *= 0.5; + if (en_subshort[sblock*3+4]*6 < enn) + thmm *= 0.5; + } + + gfc->thm[chn].s[sb][sblock] = thmm; + } + } + gfc->nsPsy.last_attacks[chn] = ns_attacks[2]; + + /********************************************************************* + * Calculate the energy and the tonality of each partition. + *********************************************************************/ + for (b = j = 0; b<gfc->npart_l; b++) { + FLOAT ebb,m; + m = ebb = fftenergy[j++]; + for (i = gfc->numlines_l[b] - 1; i > 0; --i) { + FLOAT el = fftenergy[j++]; + ebb += el; + if (m < el) + m = el; + } + eb[b] = ebb; + max[b] = m; + avg[b] = ebb * gfc->rnumlines_l[b]; + } + + if (gfc->nsPsy.pass1fp) + nsPsy2dataRead(gfc->nsPsy.pass1fp, eb2, eb, chn, gfc->npart_l); + else { + FLOAT m,a; + a = avg[0] + avg[1]; + if (a != 0.0) { + m = max[0]; if (m < max[1]) m = max[1]; + a = 20.0 * (m*2.0-a) + / (a*(gfc->numlines_l[0] + gfc->numlines_l[1] - 1)); + k = (int) a; + if (k > sizeof(tab)/sizeof(tab[0]) - 1) + k = sizeof(tab)/sizeof(tab[0]) - 1; + a = eb[0] * tab[k]; + } + eb2[0] = a; + + for (b = 1; b < gfc->npart_l-1; b++) { + a = avg[b-1] + avg[b] + avg[b+1]; + if (a != 0.0) { + m = max[b-1]; + if (m < max[b ]) m = max[b]; + if (m < max[b+1]) m = max[b+1]; + a = 20.0 * (m*3.0-a) + / (a*(gfc->numlines_l[b-1] + gfc->numlines_l[b] + gfc->numlines_l[b+1] - 1)); + k = (int) a; + if (k > sizeof(tab)/sizeof(tab[0]) - 1) + k = sizeof(tab)/sizeof(tab[0]) - 1; + a = eb[b] * tab[k]; + } + eb2[b] = a; + } + + a = avg[gfc->npart_l-2] + avg[gfc->npart_l-1]; + if (a != 0.0) { + m = max[gfc->npart_l-2]; + if (m < max[gfc->npart_l-1]) + m = max[gfc->npart_l-1]; + + a = 20.0 * (m*2.0-a) + / (a*(gfc->numlines_l[gfc->npart_l-2] + gfc->numlines_l[gfc->npart_l-1] - 1)); + k = (int) a; + if (k > sizeof(tab)/sizeof(tab[0]) - 1) + k = sizeof(tab)/sizeof(tab[0]) - 1; + a = eb[b] * tab[k]; + } + eb2[b] = a; + } + + /********************************************************************* + * convolve the partitioned energy and unpredictability + * with the spreading function, s3_l[b][k] + ******************************************************************* */ +#undef GPSYCHO_BLOCK_TYPE_DECISION +#ifdef GPSYCHO_BLOCK_TYPE_DECISION + { + FLOAT pe = 0; +#endif + k = 0; + for ( b = 0;b < gfc->npart_l; b++ ) { + FLOAT ecb; + /* convolve the partitioned energy with the spreading function */ + int kk = gfc->s3ind[b][0]; + ecb = gfc->s3_ll[k++] * eb2[kk]; + while (++kk <= gfc->s3ind[b][1]) + ecb = mask_add(ecb, gfc->s3_ll[k++] * eb2[kk], kk, kk-b, gfc); + + ecb *= 0.158489319246111; /* pow(10,-0.8) */ + + /**** long block pre-echo control ****/ + /* dont use long block pre-echo control if previous granule was + * a short block. This is to avoid the situation: + * frame0: quiet (very low masking) + * frame1: surge (triggers short blocks) + * frame2: regular frame. looks like pre-echo when compared to + * frame0, but all pre-echo was in frame1. + */ + /* chn=0,1 L and R channels + chn=2,3 S and M channels. + */ + + if (gfc->blocktype_old[chn & 1] == SHORT_TYPE) + thr[b] = ecb; /* Min(ecb, rpelev*gfc->nb_1[chn][b]); */ + else + thr[b] = NS_INTERP(Min(ecb, + Min(rpelev*gfc->nb_1[chn][b], + rpelev2*gfc->nb_2[chn][b])), + ecb, pcfact); + + gfc->nb_2[chn][b] = gfc->nb_1[chn][b]; + gfc->nb_1[chn][b] = ecb; +#ifdef GPSYCHO_BLOCK_TYPE_DECISION + /* this pe does not match GPSYCHO's pe, because of difference in + * convolution calculation, (mask_add etc.). Therefore the block + * switching does not happen exactly as in GPSYCHO. + */ + pe -= gfc->numlines_l[b] * FAST_LOG(ecb / eb[b]); +#endif + } +#ifdef GPSYCHO_BLOCK_TYPE_DECISION + determine_block_type( gfp, fftenergy_s, uselongblock, chn, gr_out, &pe ); + } +#endif + /* compute masking thresholds for long blocks */ + convert_partition2scalefac_l(gfc, eb, thr, chn); + + } /* end loop over chn */ + + if (gfp->interChRatio != 0.0) + calc_interchannel_masking(gfp, gfp->interChRatio); + + if (gfp->mode == JOINT_STEREO) { + FLOAT msfix; + msfix1(gfc); + msfix = gfp->msfix; + if (msfix != 0.0) + ns_msfix(gfc, msfix, gfp->ATHlower*gfc->ATH->adjust); + } + + /*************************************************************** + * determine final block type + ***************************************************************/ + block_type_set(gfp, uselongblock, blocktype_d, blocktype); + + /********************************************************************* + * compute the value of PE to return ... no delay and advance + *********************************************************************/ + for(chn=0;chn<numchn;chn++) { + FLOAT *ppe; + int type; + III_psy_ratio *mr; + + if (chn > 1) { + ppe = percep_MS_entropy - 2; + type = NORM_TYPE; + if (blocktype_d[0] == SHORT_TYPE || blocktype_d[1] == SHORT_TYPE) + type = SHORT_TYPE; + mr = &masking_MS_ratio[gr_out][chn-2]; + } else { + ppe = percep_entropy; + type = blocktype_d[chn]; + mr = &masking_ratio[gr_out][chn]; + } + + if (type == SHORT_TYPE) + ppe[chn] = pecalc_s(mr, gfc->masking_lower); + else + ppe[chn] = pecalc_l(mr, gfc->masking_lower); + +#if defined(HAVE_GTK) + if (gfp->analysis) gfc->pinfo->pe[gr_out][chn] = ppe[chn]; +#endif + } + return 0; +} + + + + + +/* + * The spreading function. Values returned in units of energy + */ +static FLOAT s3_func(FLOAT bark) { + FLOAT tempx,x,tempy,temp; + tempx = bark; + if (tempx>=0) tempx *= 3; + else tempx *=1.5; + + if (tempx>=0.5 && tempx<=2.5) + { + temp = tempx - 0.5; + x = 8.0 * (temp*temp - 2.0 * temp); + } + else x = 0.0; + tempx += 0.474; + tempy = 15.811389 + 7.5*tempx - 17.5*sqrt(1.0+tempx*tempx); + + if (tempy <= -60.0) return 0.0; + + tempx = exp( (x + tempy)*LN_TO_LOG10 ); + + /* Normalization. The spreading function should be normalized so that: + +inf + / + | s3 [ bark ] d(bark) = 1 + / + -inf + */ + tempx /= .6609193; + return tempx; +} + +static int +init_numline( + int *numlines, int *bo, int *bm, + FLOAT *bval, FLOAT *bval_width, FLOAT *mld, + + FLOAT sfreq, int blksize, int *scalepos, + FLOAT deltafreq, int sbmax + ) +{ + int partition[HBLKSIZE]; + int i, j, k; + int sfb; + + sfreq /= blksize; + j = 0; + /* compute numlines, the number of spectral lines in each partition band */ + /* each partition band should be about DELBARK wide. */ + for (i=0;i<CBANDS;i++) { + FLOAT bark1; + int j2; + bark1 = freq2bark(sfreq*j); + for (j2 = j; freq2bark(sfreq*j2) - bark1 < DELBARK && j2 <= blksize/2; + j2++) + ; + + numlines[i] = j2 - j; + while (j<j2) + partition[j++]=i; + if (j > blksize/2) break; + } + + for ( sfb = 0; sfb < sbmax; sfb++ ) { + int i1,i2,start,end; + FLOAT arg; + start = scalepos[sfb]; + end = scalepos[sfb+1]; + + i1 = floor(.5 + deltafreq*(start-.5)); + if (i1<0) i1=0; + i2 = floor(.5 + deltafreq*(end-.5)); + if (i2>blksize/2) i2=blksize/2; + + bm[sfb] = (partition[i1]+partition[i2])/2; + bo[sfb] = partition[i2]; + + /* setup stereo demasking thresholds */ + /* formula reverse enginerred from plot in paper */ + arg = freq2bark(sfreq*scalepos[sfb]*deltafreq); + arg = (Min(arg, 15.5)/15.5); + + mld[sfb] = pow(10.0, 1.25*(1-cos(PI*arg))-2.5); + } + + /* compute bark values of each critical band */ + j = 0; + for (k = 0; k < i+1; k++) { + int w = numlines[k]; + FLOAT bark1,bark2; + + bark1 = freq2bark (sfreq*(j )); + bark2 = freq2bark (sfreq*(j+w-1)); + bval[k] = .5*(bark1+bark2); + + bark1 = freq2bark (sfreq*(j -.5)); + bark2 = freq2bark (sfreq*(j+w-.5)); + bval_width[k] = bark2-bark1; + j += w; + } + + return i+1; +} + +static int +init_s3_values( + lame_internal_flags *gfc, + FLOAT **p, + int (*s3ind)[2], + int npart, + FLOAT *bval, + FLOAT *bval_width, + FLOAT *norm + ) +{ + FLOAT s3[CBANDS][CBANDS]; + /* The s3 array is not linear in the bark scale. + * bval[x] should be used to get the bark value. + */ + int i, j, k; + int numberOfNoneZero = 0; + + /* s[i][j], the value of the spreading function, + * centered at band j (masker), for band i (maskee) + * + * i.e.: sum over j to spread into signal barkval=i + * NOTE: i and j are used opposite as in the ISO docs + */ + for (i = 0; i < npart; i++) + for (j = 0; j < npart; j++) + s3[i][j] = s3_func(bval[i] - bval[j]) * bval_width[j] * norm[i]; + + for (i = 0; i < npart; i++) { + for (j = 0; j < npart; j++) { + if (s3[i][j] != 0.0) + break; + } + s3ind[i][0] = j; + + for (j = npart - 1; j > 0; j--) { + if (s3[i][j] != 0.0) + break; + } + s3ind[i][1] = j; + numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1); + } + *p = malloc(sizeof(FLOAT)*numberOfNoneZero); + if (!*p) + return -1; + + k = 0; + for (i = 0; i < npart; i++) + for (j = s3ind[i][0]; j <= s3ind[i][1]; j++) + (*p)[k++] = s3[i][j]; + + return 0; +} + +int psymodel_init(lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int i,j,b,sb,k; + + FLOAT bval[CBANDS]; + FLOAT bval_width[CBANDS]; + FLOAT norm[CBANDS]; + FLOAT sfreq = gfp->out_samplerate; + + gfc->ms_ener_ratio_old=.25; + gfc->blocktype_old[0] = gfc->blocktype_old[1] = NORM_TYPE; /* the vbr header is long blocks*/ + + for (i=0; i<4; ++i) { + for (j=0; j<CBANDS; ++j) { + gfc->nb_1[i][j]=1e20; + gfc->nb_2[i][j]=1e20; + gfc->nb_s1[i][j] = gfc->nb_s2[i][j] = 1.0; + } + for ( sb = 0; sb < SBMAX_l; sb++ ) { + gfc->en[i].l[sb] = 1e20; + gfc->thm[i].l[sb] = 1e20; + } + for (j=0; j<3; ++j) { + for ( sb = 0; sb < SBMAX_s; sb++ ) { + gfc->en[i].s[sb][j] = 1e20; + gfc->thm[i].s[sb][j] = 1e20; + } + gfc->nsPsy.last_attacks[i] = 0; + } + for(j=0;j<9;j++) + gfc->nsPsy.last_en_subshort[i][j] = 10.; + } + + + + j = gfc->PSY->cwlimit/(sfreq/BLKSIZE); + if (j > HBLKSIZE-4) /* j+3 < HBLKSIZE-1 */ + j = HBLKSIZE-4; + if (j < CW_LOWER_INDEX) + j = CW_LOWER_INDEX; + gfc->cw_upper_index = j; + + for (j = 0; j < HBLKSIZE; j++) + gfc->cw[j] = 0.4f; + + /* init. for loudness approx. -jd 2001 mar 27*/ + gfc->loudness_sq_save[0] = gfc->loudness_sq_save[1] = 0.0; + + + + + /************************************************************************* + * now compute the psychoacoustic model specific constants + ************************************************************************/ + /* compute numlines, bo, bm, bval, bval_width, mld */ + gfc->npart_l + = init_numline(gfc->numlines_l, gfc->bo_l, gfc->bm_l, + bval, bval_width, gfc->mld_l, + sfreq, BLKSIZE, + gfc->scalefac_band.l, BLKSIZE/(2.0*576), SBMAX_l); + assert(gfc->npart_l <= CBANDS); + /* compute the spreading function */ + for(i=0;i<gfc->npart_l;i++) { + norm[i]=1.0; + gfc->rnumlines_l[i] = 1.0 / gfc->numlines_l[i]; + } + i = init_s3_values(gfc, &gfc->s3_ll, gfc->s3ind, + gfc->npart_l, bval, bval_width, norm); + if (i) + return i; + + /* compute long block specific values, ATH and MINVAL */ + j = 0; + for ( i = 0; i < gfc->npart_l; i++ ) { + double x; + + /* ATH */ + x = FLOAT_MAX; + for (k=0; k < gfc->numlines_l[i]; k++, j++) { + FLOAT freq = sfreq*j/(1000.0*BLKSIZE); + FLOAT level; + /* freq = Min(.1,freq);*/ /* ATH below 100 Hz constant, not further climbing */ + level = ATHformula (freq*1000, gfp) - 20; /* scale to FFT units; returned value is in dB */ + level = pow ( 10., 0.1*level ); /* convert from dB -> energy */ + level *= gfc->numlines_l [i]; + if (x > level) + x = level; + } + gfc->ATH->cb[i] = x; + + /* MINVAL. + For low freq, the strength of the masking is limited by minval + this is an ISO MPEG1 thing, dont know if it is really needed */ + x = (-20+bval[i]*20.0/10.0); + if (bval[i]>10) x = 0; + gfc->minval[i]=pow(10.0,x/10); + gfc->PSY->prvTonRed[i] = gfc->minval[i]; + } + + + /************************************************************************ + * do the same things for short blocks + ************************************************************************/ + gfc->npart_s + = init_numline(gfc->numlines_s, gfc->bo_s, gfc->bm_s, + bval, bval_width, gfc->mld_s, + sfreq, BLKSIZE_s, + gfc->scalefac_band.s, BLKSIZE_s/(2.0*192), SBMAX_s); + assert(gfc->npart_s <= CBANDS); + + /* SNR formula. short block is normalized by SNR. is it still right ? */ + for(i=0;i<gfc->npart_s;i++) { + double snr=-8.25; + if (bval[i]>=13) + snr = -4.5 * (bval[i]-13)/(24.0-13.0) + -8.25*(bval[i]-24)/(13.0-24.0); + + norm[i]=pow(10.0,snr/10.0); + } + i = init_s3_values(gfc, &gfc->s3_ss, gfc->s3ind_s, + gfc->npart_s, bval, bval_width, norm); + if (i) + return i; + + + init_mask_add_max_values(); + init_fft(gfc); + + /* setup temporal masking */ + gfc->decay = exp(-1.0*LOG10/(temporalmask_sustain_sec*sfreq/192.0)); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + FLOAT msfix; + msfix = NS_MSFIX; + if (gfp->exp_nspsytune & 2) msfix = 1.0; + if (gfp->msfix != 0.0) msfix = gfp->msfix; + gfp->msfix = msfix; + + /* spread only from npart_l bands. Normally, we use the spreading + * function to convolve from npart_l down to npart_l bands + */ + for (b=0;b<gfc->npart_l;b++) + if (gfc->s3ind[b][1] > gfc->npart_l-1) + gfc->s3ind[b][1] = gfc->npart_l-1; + } + + /* prepare for ATH auto adjustment: + * we want to decrease the ATH by 12 dB per second + */ +#define frame_duration (576. * gfc->mode_gr / sfreq) + gfc->ATH->decay = pow(10., -12./10. * frame_duration); + gfc->ATH->adjust = 0.01; /* minimum, for leading low loudness */ + gfc->ATH->adjust_limit = 1.0; /* on lead, allow adjust up to maximum */ +#undef frame_duration + + gfc->bo_s[SBMAX_s-1]--; + assert(gfc->bo_l[SBMAX_l-1] <= gfc->npart_l); + assert(gfc->bo_s[SBMAX_s-1] <= gfc->npart_s); + + if (gfp->ATHtype != -1) { + /* compute equal loudness weights (eql_w) */ + FLOAT freq; + FLOAT freq_inc = gfp->out_samplerate / (BLKSIZE); + FLOAT eql_balance = 0.0; + freq = 0.0; + for( i = 0; i < BLKSIZE/2; ++i ) { + /* convert ATH dB to relative power (not dB) */ + /* to determine eql_w */ + freq += freq_inc; + gfc->ATH->eql_w[i] = 1. / pow( 10, ATHformula( freq, gfp ) / 10 ); + eql_balance += gfc->ATH->eql_w[i]; + } + eql_balance = 1.0 / eql_balance; + for( i = BLKSIZE/2; --i >= 0; ) { /* scale weights */ + gfc->ATH->eql_w[i] *= eql_balance; + } + } + + return 0; +} + diff --git a/lame-3.97/libmp3lame/psymodel.h b/lame-3.97/libmp3lame/psymodel.h new file mode 100644 index 0000000..871c126 --- /dev/null +++ b/lame-3.97/libmp3lame/psymodel.h @@ -0,0 +1,87 @@ +/* + * psymodel.h + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_PSYMODEL_H +#define LAME_PSYMODEL_H + +#include "l3side.h" + +int L3psycho_anal( lame_global_flags *gfc, + const sample_t *buffer[2], int gr, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio ratio[2][2], + III_psy_ratio MS_ratio[2][2], + FLOAT pe[2], FLOAT pe_MS[2], FLOAT ener[2], + int blocktype_d[2]); + +int L3psycho_anal_ns( lame_global_flags *gfc, + const sample_t *buffer[2], int gr, + FLOAT *ms_ratio, + FLOAT *ms_ratio_next, + III_psy_ratio ratio[2][2], + III_psy_ratio MS_ratio[2][2], + FLOAT pe[2], FLOAT pe_MS[2], FLOAT ener[2], + int blocktype_d[2]); + + +int psymodel_init(lame_global_flags *gfp); + + +#define rpelev 2 +#define rpelev2 16 +#define rpelev_s 2 +#define rpelev2_s 16 + +/* size of each partition band, in barks: */ +#define DELBARK .34 +#define CW_LOWER_INDEX 6 + + +#if 1 + /* AAC values, results in more masking over MP3 values */ +# define TMN 18 +# define NMT 6 +#else + /* MP3 values */ +# define TMN 29 +# define NMT 6 +#endif + +/* ISO values */ +#define CONV1 (-.299) +#define CONV2 (-.43) + +/* tuned for output level (sensitive to energy scale) */ +#define VO_SCALE (1./( 14752*14752 )/(BLKSIZE/2)) + +#define temporalmask_sustain_sec 0.01 + +#define NS_PREECHO_ATT0 0.8 +#define NS_PREECHO_ATT1 0.6 +#define NS_PREECHO_ATT2 0.3 + +#define NS_MSFIX 3.5 +#define NSATTACKTHRE 4.4 +#define NSATTACKTHRE_S 25 + +#endif /* LAME_PSYMODEL_H */ + diff --git a/lame-3.97/libmp3lame/quantize.c b/lame-3.97/libmp3lame/quantize.c new file mode 100644 index 0000000..84d272a --- /dev/null +++ b/lame-3.97/libmp3lame/quantize.c @@ -0,0 +1,2180 @@ +/* + * MP3 quantization + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 1999-2003 Takehiro Tominaga + * Copyright (c) 2000-2005 Robert Hegemann + * Copyright (c) 2001-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: quantize.c,v 1.170.2.2 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <math.h> +#include <assert.h> +#include <stdlib.h> +#include "bitstream.h" +#include "l3side.h" +#include "quantize.h" +#include "reservoir.h" +#include "quantize_pvt.h" +#include "lame-analysis.h" +#include "vbrquantize.h" +#include "machine.h" +#include "util.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* Robert Hegemann - 2002-10-24 + * sparsing of mid side channels + * 2DO: replace mld by something with finer resolution + */ +static void +ms_sparsing(lame_internal_flags* gfc, int gr) +{ + int sfb, m, k, i, j = 0; + int width; + FLOAT treshold = 0; + + if ( gfc->sparsing == 0 ) return; + m = gfc->l3_side.tt[gr][0].sfb_lmax; + for ( sfb = 0; sfb < m; ++sfb ) { + width = gfc->scalefac_band.l[sfb+1] - gfc->scalefac_band.l[sfb]; + treshold = pow( 10, -(gfc->sparseA-gfc->mld_l[sfb]*gfc->sparseB)/10.); + for ( i = 0; i < width; i += 2, j += 2 ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+1; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+1; + FLOAT m02 = *m0 * *m0; + FLOAT m12 = *m1 * *m1; + FLOAT s02 = *s0 * *s0; + FLOAT s12 = *s1 * *s1; + FLOAT u0 = m02*treshold; + FLOAT u1 = m12*treshold; + FLOAT v0 = s02*treshold; + FLOAT v1 = s12*treshold; + if ( s02 < u0 && s12 < u1 ) { + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + if ( m02 < v0 && m12 < v1 ) { + *s0 += *m0; *m0 = 0; + *s1 += *m1; *m1 = 0; + } + } + } + for ( sfb = gfc->l3_side.tt[gr][0].sfb_smin; sfb < SBPSY_s; ++sfb ) { + width = gfc->scalefac_band.s[sfb+1] - gfc->scalefac_band.s[sfb]; + treshold = pow( 10, -(gfc->sparseA-gfc->mld_s[sfb]*gfc->sparseB)/10.); + for ( i = 0; i < width; i += 2, j += 6 ) + for ( k = 0; k < 3; ++k ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j+k; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+k+3; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j+k; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+k+3; + FLOAT m02 = *m0 * *m0; + FLOAT m12 = *m1 * *m1; + FLOAT s02 = *s0 * *s0; + FLOAT s12 = *s1 * *s1; + FLOAT u0 = m02*treshold; + FLOAT u1 = m12*treshold; + FLOAT v0 = s02*treshold; + FLOAT v1 = s12*treshold; + if ( s02 < u0 && s12 < u1 ) { + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + if ( m02 < v0 && m12 < v1 ) { + *s0 += *m0; *m0 = 0; + *s1 += *m1; *m1 = 0; + } + } + } + m = ( sfb == SBPSY_s ) ? 3 : 1; + if ( gfc->sparsing == 2 ) { + for ( ; j < 575; j += 2*m ) + for ( i = 0; i < m; ++i ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j+i; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+i+m; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j+i; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+i+m; + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + } + else { + for ( ; j < 575; j += 2*m ) + for ( i = 0; i < m; ++i ) { + FLOAT* m0 = gfc->l3_side.tt[gr][0].xr+j+i; + FLOAT* m1 = gfc->l3_side.tt[gr][0].xr+j+i+m; + FLOAT* s0 = gfc->l3_side.tt[gr][1].xr+j+i; + FLOAT* s1 = gfc->l3_side.tt[gr][1].xr+j+i+m; + FLOAT m02 = *m0 * *m0; + FLOAT m12 = *m1 * *m1; + FLOAT s02 = *s0 * *s0; + FLOAT s12 = *s1 * *s1; + FLOAT u0 = m02*treshold; + FLOAT u1 = m12*treshold; + FLOAT v0 = s02*treshold; + FLOAT v1 = s12*treshold; + if ( s02 < u0 && s12 < u1 ) { + *m0 += *s0; *s0 = 0; + *m1 += *s1; *s1 = 0; + } + if ( m02 < v0 && m12 < v1 ) { + *s0 += *m0; *m0 = 0; + *s1 += *m1; *m1 = 0; + } + } + } +} + + +/* convert from L/R <-> Mid/Side */ +static void +ms_convert(III_side_info_t *l3_side, int gr) +{ + int i; + for (i = 0; i < 576; ++i) { + FLOAT l, r; + l = l3_side->tt[gr][0].xr[i]; + r = l3_side->tt[gr][1].xr[i]; + l3_side->tt[gr][0].xr[i] = (l+r) * (FLOAT)(SQRT2*0.5); + l3_side->tt[gr][1].xr[i] = (l-r) * (FLOAT)(SQRT2*0.5); + } +} + +/************************************************************************ + * + * init_outer_loop() + * mt 6/99 + * + * initializes cod_info, scalefac and xrpow + * + * returns 0 if all energies in xr are zero, else 1 + * + ************************************************************************/ + + +void init_xrpow_core_c(gr_info *const cod_info, + FLOAT xrpow[576], + int upper, + FLOAT* sum) +{ + int i; + FLOAT tmp; + *sum = 0; + for (i = 0; i <= upper; ++i) { + tmp = fabs (cod_info->xr[i]); + *sum += tmp; + xrpow[i] = sqrt (tmp * sqrt(tmp)); + + if (xrpow[i] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[i]; + } +} + + +#ifdef HAVE_XMMINTRIN_H + +#include <xmmintrin.h> + +typedef union { + __m128 _m128; + float _float[4]; +} vecfloat_union; + + + +void init_xrpow_core_sse(gr_info *const cod_info, + FLOAT xrpow[576], + int upper, + FLOAT* sum) +{ + int i; + FLOAT tmp; + int upper4 = (upper/4)*4; + + + const int fabs_mask[4] = {0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF}; + const __m128 vec_fabs_mask = _mm_loadu_ps((float *) fabs_mask); + vecfloat_union vec_xrpow_max; + vecfloat_union vec_sum; + + _mm_prefetch((char*)cod_info->xr, _MM_HINT_T0); + _mm_prefetch((char*)xrpow, _MM_HINT_T0); + + vec_xrpow_max._m128 = _mm_set_ps1(0); + vec_sum._m128 = _mm_set_ps1(0); + + for (i = 0; i < upper4; i+=4) { + __m128 vec_tmp; + + vec_tmp = _mm_loadu_ps(&(cod_info->xr[i])); //load + vec_tmp = _mm_and_ps(vec_tmp, vec_fabs_mask); //fabs + + vec_sum._m128 = _mm_add_ps(vec_sum._m128, vec_tmp); + + vec_tmp = _mm_sqrt_ps(_mm_mul_ps(vec_tmp, _mm_sqrt_ps(vec_tmp))); + + _mm_storeu_ps(&(xrpow[i]), vec_tmp); //store into xrpow[] + + vec_xrpow_max._m128 = _mm_max_ps(vec_xrpow_max._m128, vec_tmp); //retrieve max + } + + *sum = vec_sum._float[0] + vec_sum._float[1] + vec_sum._float[2] + vec_sum._float[3]; + cod_info->xrpow_max = Max(vec_xrpow_max._float[0], + Max(vec_xrpow_max._float[1], + Max(vec_xrpow_max._float[2], vec_xrpow_max._float[3]))); + + + + for (i = upper4; i <= upper; ++i) { + tmp = fabs (cod_info->xr[i]); + *sum += tmp; + xrpow[i] = sqrt (tmp * sqrt(tmp)); + + if (xrpow[i] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[i]; + } +} + + +#endif + + + + + +void init_xrpow_core_init(lame_internal_flags * const gfc) +{ + gfc->init_xrpow_core = init_xrpow_core_c; + +#ifdef HAVE_XMMINTRIN_H + if (gfc->CPU_features.SSE) + gfc->init_xrpow_core = init_xrpow_core_sse; +#endif +} + + + +static int +init_xrpow( + lame_internal_flags *gfc, + gr_info *const cod_info, + FLOAT xrpow[576] ) +{ + FLOAT sum = 0; + int i; + int upper = cod_info->max_nonzero_coeff; + + assert( xrpow != NULL ); + cod_info->xrpow_max = 0; + + /* check if there is some energy we have to quantize + * and calculate xrpow matching our fresh scalefactors + */ + memset(&(xrpow[upper]), 0, (575-upper)*sizeof(xrpow[upper])); + + + gfc->init_xrpow_core(cod_info, xrpow, upper, &sum); + + /* return 1 if we have something to quantize, else 0 + */ + if (sum > (FLOAT)1E-20) { + int j = 0; + if (gfc->substep_shaping & 2) + j = 1; + + for (i = 0; i < cod_info->psymax; i++) + gfc->pseudohalf[i] = j; + + return 1; + } + + memset(&cod_info->l3_enc, 0, sizeof(int)*576); + return 0; +} + + + + + +extern FLOAT athAdjust( FLOAT a, FLOAT x, FLOAT athFloor ); + + + +/* +Gabriel Bouvigne feb/apr 2003 +Analog silence detection in partitionned sfb21 +or sfb12 for short blocks + +From top to bottom of sfb, changes to 0 +coeffs which are below ath. It stops on the first +coeff higher than ath. +*/ +void psfb21_analogsilence( + lame_global_flags *gfp, + lame_internal_flags *gfc, + gr_info *const cod_info + ) +{ + ATH_t * ATH = gfc->ATH; + FLOAT *xr = cod_info->xr; + + if (cod_info->block_type == NORM_TYPE) { + int gsfb; + int stop=0; + for (gsfb = PSFB21-1; gsfb>=0 && !stop; gsfb--) { + int start = gfc->scalefac_band.psfb21[ gsfb ]; + int end = gfc->scalefac_band.psfb21[ gsfb+1 ]; + int j; + FLOAT ath21; + ath21 = athAdjust(ATH->adjust, ATH->psfb21[gsfb], ATH->floor); + + if (gfc->nsPsy.longfact[21] != 0) + ath21 *= gfc->nsPsy.longfact[21]; + + for (j = end-1; j>=start; j--) { + if ( fabs(xr[j]) < ath21) + xr[j] = 0; + else { + stop = 1; + break; + } + } + } + } else if (cod_info->block_type == SHORT_TYPE) { + /*note: short blocks coeffs are reordered*/ + int block; + for (block = 0; block<3; block++) { + + int gsfb; + int stop=0; + for (gsfb = PSFB12-1; gsfb>=0 && !stop; gsfb--) { + int start = gfc->scalefac_band.s[12] * 3 + + (gfc->scalefac_band.s[13] - gfc->scalefac_band.s[12]) * block + + (gfc->scalefac_band.psfb12[gsfb] - gfc->scalefac_band.psfb12[0]); + int end = start + (gfc->scalefac_band.psfb12[gsfb+1] - gfc->scalefac_band.psfb12[gsfb]); + int j; + FLOAT ath12; + ath12 = athAdjust(ATH->adjust, ATH->psfb12[gsfb], ATH->floor); + + if (gfc->nsPsy.shortfact[12] != 0) + ath12 *= gfc->nsPsy.shortfact[12]; + + for (j = end-1; j>=start; j--) { + if ( fabs(xr[j]) < ath12) + xr[j] = 0; + else { + stop = 1; + break; + } + } + } + } + } + +} + + + + + +static void +init_outer_loop( + lame_global_flags *gfp, + lame_internal_flags *gfc, + gr_info *const cod_info) +{ + int sfb, j; + /* initialize fresh cod_info + */ + cod_info->part2_3_length = 0; + cod_info->big_values = 0; + cod_info->count1 = 0; + cod_info->global_gain = 210; + cod_info->scalefac_compress = 0; + /* mixed_block_flag, block_type was set in psymodel.c */ + cod_info->table_select [0] = 0; + cod_info->table_select [1] = 0; + cod_info->table_select [2] = 0; + cod_info->subblock_gain[0] = 0; + cod_info->subblock_gain[1] = 0; + cod_info->subblock_gain[2] = 0; + cod_info->subblock_gain[3] = 0; /* this one is always 0 */ + cod_info->region0_count = 0; + cod_info->region1_count = 0; + cod_info->preflag = 0; + cod_info->scalefac_scale = 0; + cod_info->count1table_select = 0; + cod_info->part2_length = 0; + cod_info->sfb_lmax = SBPSY_l; + cod_info->sfb_smin = SBPSY_s; + cod_info->psy_lmax = gfc->sfb21_extra ? SBMAX_l : SBPSY_l; + cod_info->psymax = cod_info->psy_lmax; + cod_info->sfbmax = cod_info->sfb_lmax; + cod_info->sfbdivide = 11; + for (sfb = 0; sfb < SBMAX_l; sfb++) { + cod_info->width[sfb] + = gfc->scalefac_band.l[sfb+1] - gfc->scalefac_band.l[sfb]; + cod_info->window[sfb] = 3; /* which is always 0. */ + } + if (cod_info->block_type == SHORT_TYPE) { + FLOAT ixwork[576]; + FLOAT *ix; + + cod_info->sfb_smin = 0; + cod_info->sfb_lmax = 0; + if (cod_info->mixed_block_flag) { + /* + * MPEG-1: sfbs 0-7 long block, 3-12 short blocks + * MPEG-2(.5): sfbs 0-5 long block, 3-12 short blocks + */ + cod_info->sfb_smin = 3; + cod_info->sfb_lmax = gfc->mode_gr*2 + 4; + } + cod_info->psymax + = cod_info->sfb_lmax + + 3*((gfc->sfb21_extra ? SBMAX_s : SBPSY_s) - cod_info->sfb_smin); + cod_info->sfbmax + = cod_info->sfb_lmax + 3*(SBPSY_s - cod_info->sfb_smin); + cod_info->sfbdivide = cod_info->sfbmax - 18; + cod_info->psy_lmax = cod_info->sfb_lmax; + /* re-order the short blocks, for more efficient encoding below */ + /* By Takehiro TOMINAGA */ + /* + Within each scalefactor band, data is given for successive + time windows, beginning with window 0 and ending with window 2. + Within each window, the quantized values are then arranged in + order of increasing frequency... + */ + ix = &cod_info->xr[gfc->scalefac_band.l[cod_info->sfb_lmax]]; + memcpy(ixwork, cod_info->xr, 576*sizeof(FLOAT)); + for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++) { + int start = gfc->scalefac_band.s[sfb]; + int end = gfc->scalefac_band.s[sfb + 1]; + int window, l; + for (window = 0; window < 3; window++) { + for (l = start; l < end; l++) { + *ix++ = ixwork[3*l+window]; + } + } + } + + j = cod_info->sfb_lmax; + for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++) { + cod_info->width[j] = cod_info->width[j+1] = cod_info->width[j + 2] + = gfc->scalefac_band.s[sfb+1] - gfc->scalefac_band.s[sfb]; + cod_info->window[j ] = 0; + cod_info->window[j+1] = 1; + cod_info->window[j+2] = 2; + j += 3; + } + } + + cod_info->count1bits = 0; + cod_info->sfb_partition_table = nr_of_sfb_block[0][0]; + cod_info->slen[0] = 0; + cod_info->slen[1] = 0; + cod_info->slen[2] = 0; + cod_info->slen[3] = 0; + + cod_info->max_nonzero_coeff = 575; + + /* fresh scalefactors are all zero + */ + memset(cod_info->scalefac, 0, sizeof(cod_info->scalefac)); + + psfb21_analogsilence(gfp, gfc, cod_info); +} + + + +/************************************************************************ + * + * bin_search_StepSize() + * + * author/date?? + * + * binary step size search + * used by outer_loop to get a quantizer step size to start with + * + ************************************************************************/ + +typedef enum { + BINSEARCH_NONE, + BINSEARCH_UP, + BINSEARCH_DOWN +} binsearchDirection_t; + +int +bin_search_StepSize( + lame_internal_flags * const gfc, + gr_info * const cod_info, + int desired_rate, + const int ch, + const FLOAT xrpow [576] ) +{ + int nBits; + int CurrentStep = gfc->CurrentStep[ch]; + int flag_GoneOver = 0; + int start = gfc->OldValue[ch]; + binsearchDirection_t Direction = BINSEARCH_NONE; + cod_info->global_gain = start; + desired_rate -= cod_info->part2_length; + + assert(CurrentStep); + do { + int step; + nBits = count_bits(gfc, xrpow, cod_info, 0); + + if (CurrentStep == 1 || nBits == desired_rate) + break; /* nothing to adjust anymore */ + + if (nBits > desired_rate) { + /* increase Quantize_StepSize */ + if (Direction == BINSEARCH_DOWN) + flag_GoneOver = 1; + + if (flag_GoneOver) CurrentStep /= 2; + Direction = BINSEARCH_UP; + step = CurrentStep; + } else { + /* decrease Quantize_StepSize */ + if (Direction == BINSEARCH_UP) + flag_GoneOver = 1; + + if (flag_GoneOver) CurrentStep /= 2; + Direction = BINSEARCH_DOWN; + step = -CurrentStep; + } + cod_info->global_gain += step; + } while (cod_info->global_gain < 256u); + + if (cod_info->global_gain < 0) { + cod_info->global_gain = 0; + nBits = count_bits(gfc, xrpow, cod_info, 0); + } else if (cod_info->global_gain > 255) { + cod_info->global_gain = 255; + nBits = count_bits(gfc, xrpow, cod_info, 0); + } else if (nBits > desired_rate) { + cod_info->global_gain++; + nBits = count_bits(gfc, xrpow, cod_info, 0); + } + gfc->CurrentStep[ch] = (start - cod_info->global_gain >= 4) ? 4 : 2; + gfc->OldValue[ch] = cod_info->global_gain; + cod_info->part2_3_length = nBits; + return nBits; +} + + + + +/************************************************************************ + * + * trancate_smallspectrums() + * + * Takehiro TOMINAGA 2002-07-21 + * + * trancate smaller nubmers into 0 as long as the noise threshold is allowed. + * + ************************************************************************/ +static int +floatcompare(const void * v1, const void * v2) +{ + const FLOAT *a = v1, *b = v2; + if (*a > *b) return 1; + if (*a == *b) return 0; + return -1; +} + +void +trancate_smallspectrums( + lame_internal_flags *gfc, + gr_info * const gi, + const FLOAT * const l3_xmin, + FLOAT * work + ) +{ + int sfb, j, width; + FLOAT distort[SFBMAX]; + calc_noise_result dummy; + + if ((!(gfc->substep_shaping & 4) && gi->block_type == SHORT_TYPE) + || gfc->substep_shaping & 0x80) + return; + calc_noise (gfc, gi, l3_xmin, distort, &dummy, 0); + for (j = 0; j < 576; j++) { + FLOAT xr = 0.0; + if (gi->l3_enc[j] != 0) + xr = fabs(gi->xr[j]); + work[j] = xr; + } + + j = 0; + sfb = 8; + if (gi->block_type == SHORT_TYPE) + sfb = 6; + do { + FLOAT allowedNoise, trancateThreshold; + int nsame, start; + + width = gi->width[sfb]; + j += width; + if (distort[sfb] >= 1.0) + continue; + + qsort(&work[j-width], width, sizeof(FLOAT), floatcompare); + if (work[j - 1] == 0.0) + continue; /* all zero sfb */ + + allowedNoise = (1.0 - distort[sfb]) * l3_xmin[sfb]; + trancateThreshold = 0.0; + start = 0; + do { + FLOAT noise; + for (nsame = 1; start + nsame < width; nsame++) + if (work[start + j-width] != work[start+j+nsame-width]) + break; + + noise = work[start+j-width] * work[start+j-width] * nsame; + if (allowedNoise < noise) { + if (start != 0) + trancateThreshold = work[start+j-width - 1]; + break; + } + allowedNoise -= noise; + start += nsame; + } while (start < width); + if (trancateThreshold == 0.0) + continue; + +/* printf("%e %e %e\n", */ +/* trancateThreshold/l3_xmin[sfb], */ +/* trancateThreshold/(l3_xmin[sfb]*start), */ +/* trancateThreshold/(l3_xmin[sfb]*(start+width)) */ +/* ); */ +/* if (trancateThreshold > 1000*l3_xmin[sfb]*start) */ +/* trancateThreshold = 1000*l3_xmin[sfb]*start; */ + + do { + if (fabs(gi->xr[j - width]) <= trancateThreshold) + gi->l3_enc[j - width] = 0; + } while (--width > 0); + } while (++sfb < gi->psymax); + + gi->part2_3_length = noquant_count_bits(gfc, gi, 0); +} + + +/************************************************************************* + * + * loop_break() + * + * author/date?? + * + * Function: Returns zero if there is a scalefac which has not been + * amplified. Otherwise it returns one. + * + *************************************************************************/ + +inline +static int +loop_break( + const gr_info * const cod_info) +{ + int sfb; + + for (sfb = 0; sfb < cod_info->sfbmax; sfb++) + if (cod_info->scalefac[sfb] + + cod_info->subblock_gain[cod_info->window[sfb]] == 0) + return 0; + + return 1; +} + + + + +/* mt 5/99: Function: Improved calc_noise for a single channel */ + +/************************************************************************* + * + * quant_compare() + * + * author/date?? + * + * several different codes to decide which quantization is better + * + *************************************************************************/ + +static double penalties ( double noise ) +{ + return FAST_LOG10( 0.368 + 0.632 * noise * noise * noise ); +} + +static double get_klemm_noise( + const FLOAT * distort, + const gr_info * const gi + ) +{ + int sfb; + double klemm_noise = 1E-37; + for (sfb = 0; sfb < gi->psymax; sfb++) + klemm_noise += penalties(distort[sfb]); + + return Max(1e-20, klemm_noise); +} + +inline +static int +quant_compare( + const int quant_comp, + lame_internal_flags * const gfc, + const calc_noise_result * const best, + calc_noise_result * const calc, + const gr_info * const gi, + const FLOAT * distort + ) +{ + /* + noise is given in decibels (dB) relative to masking thesholds. + + over_noise: ??? (the previous comment is fully wrong) + tot_noise: ??? (the previous comment is fully wrong) + max_noise: max quantization noise + + */ + int better; + + switch (quant_comp) { + default: + case 9: { + if (best->over_count > 0 ) { + /* there are distorted sfb*/ + better = calc->over_SSD <= best->over_SSD; + if (calc->over_SSD == best->over_SSD) + better = calc->bits < best->bits; + } else { + /* no distorted sfb*/ + better = ((calc->max_noise < 0) && + ((calc->max_noise*10 + calc->bits) <= (best->max_noise*10 + best->bits))); + } + break; + } + + case 0: + better = calc->over_count < best->over_count + || ( calc->over_count == best->over_count && + calc->over_noise < best->over_noise ) + || ( calc->over_count == best->over_count && + calc->over_noise == best->over_noise && + calc->tot_noise < best->tot_noise ); + break; + + case 8: + calc->max_noise = get_klemm_noise(distort, gi); + /* pass through */ + case 1: + better = calc->max_noise < best->max_noise; + break; + case 2: + better = calc->tot_noise < best->tot_noise; + break; + case 3: + better = (calc->tot_noise < best->tot_noise) + && (calc->max_noise < best->max_noise); + break; + case 4: + better = ( calc->max_noise <= 0.0 && + best->max_noise > 0.2 ) + || ( calc->max_noise <= 0.0 && + best->max_noise < 0.0 && + best->max_noise > calc->max_noise-0.2 && + calc->tot_noise < best->tot_noise ) + || ( calc->max_noise <= 0.0 && + best->max_noise > 0.0 && + best->max_noise > calc->max_noise-0.2 && + calc->tot_noise < best->tot_noise+best->over_noise ) + || ( calc->max_noise > 0.0 && + best->max_noise > -0.05 && + best->max_noise > calc->max_noise-0.1 && + calc->tot_noise+calc->over_noise < best->tot_noise+best->over_noise ) + || ( calc->max_noise > 0.0 && + best->max_noise > -0.1 && + best->max_noise > calc->max_noise-0.15 && + calc->tot_noise+calc->over_noise+calc->over_noise < best->tot_noise+best->over_noise+best->over_noise ); + break; + case 5: + better = calc->over_noise < best->over_noise + || ( calc->over_noise == best->over_noise && + calc->tot_noise < best->tot_noise ); + break; + case 6: + better = calc->over_noise < best->over_noise + || ( calc->over_noise == best->over_noise && + ( calc->max_noise < best->max_noise + || ( calc->max_noise == best->max_noise && + calc->tot_noise <= best->tot_noise ) + )); + break; + case 7: + better = calc->over_count < best->over_count + || calc->over_noise < best->over_noise; + break; + } + + + if (best->over_count == 0) { + /* + If no distorted bands, only use this quantization + if it is better, and if it uses less bits. + Unfortunately, part2_3_length is sometimes a poor + estimator of the final size at low bitrates. + */ + better = better && + calc->bits < best->bits; + } + + + return better; +} + + + +/************************************************************************* + * + * amp_scalefac_bands() + * + * author/date?? + * + * Amplify the scalefactor bands that violate the masking threshold. + * See ISO 11172-3 Section C.1.5.4.3.5 + * + * distort[] = noise/masking + * distort[] > 1 ==> noise is not masked + * distort[] < 1 ==> noise is masked + * max_dist = maximum value of distort[] + * + * Three algorithms: + * noise_shaping_amp + * 0 Amplify all bands with distort[]>1. + * + * 1 Amplify all bands with distort[] >= max_dist^(.5); + * ( 50% in the db scale) + * + * 2 Amplify first band with distort[] >= max_dist; + * + * + * For algorithms 0 and 1, if max_dist < 1, then amplify all bands + * with distort[] >= .95*max_dist. This is to make sure we always + * amplify at least one band. + * + * + *************************************************************************/ +static void +amp_scalefac_bands( + lame_global_flags *gfp, + gr_info *const cod_info, + FLOAT *distort, + FLOAT xrpow[576], + int bRefine) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int j, sfb; + FLOAT ifqstep34, trigger; + int noise_shaping_amp; + + if (cod_info->scalefac_scale == 0) { + ifqstep34 = 1.29683955465100964055; /* 2**(.75*.5)*/ + } else { + ifqstep34 = 1.68179283050742922612; /* 2**(.75*1) */ + } + + /* compute maximum value of distort[] */ + trigger = 0; + for (sfb = 0; sfb < cod_info->sfbmax; sfb++) { + if (trigger < distort[sfb]) + trigger = distort[sfb]; + } + + noise_shaping_amp = gfc->noise_shaping_amp; + if (noise_shaping_amp == 3) { + if (bRefine == 1) + noise_shaping_amp = 2; + else + noise_shaping_amp = 1; + } + switch (noise_shaping_amp) { + case 2: + /* amplify exactly 1 band */ + break; + + case 1: + /* amplify bands within 50% of max (on db scale) */ + if (trigger>1.0) + trigger = pow(trigger, .5); + else + trigger *= .95; + break; + + case 0: + default: + /* ISO algorithm. amplify all bands with distort>1 */ + if (trigger>1.0) + trigger=1.0; + else + trigger *= .95; + break; + } + + j = 0; + for (sfb = 0; sfb < cod_info->sfbmax; sfb++ ) { + int width = cod_info->width[sfb]; + int l; + j += width; + if (distort[sfb] < trigger) + continue; + + if (gfc->substep_shaping & 2) { + gfc->pseudohalf[sfb] = !gfc->pseudohalf[sfb]; + if (!gfc->pseudohalf[sfb] && gfc->noise_shaping_amp==2) + return; + } + cod_info->scalefac[sfb]++; + for (l = -width; l < 0; l++) { + xrpow[j+l] *= ifqstep34; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + + if (gfc->noise_shaping_amp==2) + return; + } +} + +/************************************************************************* + * + * inc_scalefac_scale() + * + * Takehiro Tominaga 2000-xx-xx + * + * turns on scalefac scale and adjusts scalefactors + * + *************************************************************************/ + +static void +inc_scalefac_scale ( + gr_info * const cod_info, + FLOAT xrpow[576] ) +{ + int l, j, sfb; + const FLOAT ifqstep34 = 1.29683955465100964055; + + j = 0; + for (sfb = 0; sfb < cod_info->sfbmax; sfb++) { + int width = cod_info->width[sfb]; + int s = cod_info->scalefac[sfb]; + if (cod_info->preflag) + s += pretab[sfb]; + j += width; + if (s & 1) { + s++; + for (l = -width; l < 0; l++) { + xrpow[j+l] *= ifqstep34; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + } + cod_info->scalefac[sfb] = s >> 1; + } + cod_info->preflag = 0; + cod_info->scalefac_scale = 1; +} + + + +/************************************************************************* + * + * inc_subblock_gain() + * + * Takehiro Tominaga 2000-xx-xx + * + * increases the subblock gain and adjusts scalefactors + * + *************************************************************************/ + +static int +inc_subblock_gain ( + const lame_internal_flags * const gfc, + gr_info * const cod_info, + FLOAT xrpow[576] ) +{ + int sfb, window; + int * const scalefac = cod_info->scalefac; + + /* subbloc_gain can't do anything in the long block region */ + for (sfb = 0; sfb < cod_info->sfb_lmax; sfb++) { + if (scalefac[sfb] >= 16) + return 1; + } + + for (window = 0; window < 3; window++) { + int s1, s2, l, j; + s1 = s2 = 0; + + for (sfb = cod_info->sfb_lmax+window; + sfb < cod_info->sfbdivide; sfb += 3) { + if (s1 < scalefac[sfb]) + s1 = scalefac[sfb]; + } + for (; sfb < cod_info->sfbmax; sfb += 3) { + if (s2 < scalefac[sfb]) + s2 = scalefac[sfb]; + } + + if (s1 < 16 && s2 < 8) + continue; + + if (cod_info->subblock_gain[window] >= 7) + return 1; + + /* even though there is no scalefactor for sfb12 + * subblock gain affects upper frequencies too, that's why + * we have to go up to SBMAX_s + */ + cod_info->subblock_gain[window]++; + j = gfc->scalefac_band.l[cod_info->sfb_lmax]; + for (sfb = cod_info->sfb_lmax+window; + sfb < cod_info->sfbmax; sfb += 3) { + FLOAT amp; + int width = cod_info->width[sfb], s = scalefac[sfb]; + assert(s >= 0); + s = s - (4 >> cod_info->scalefac_scale); + if (s >= 0) { + scalefac[sfb] = s; + j += width*3; + continue; + } + + scalefac[sfb] = 0; + amp = IPOW20(210 + (s << (cod_info->scalefac_scale + 1))); + j += width * (window+1); + for (l = -width; l < 0; l++) { + xrpow[j+l] *= amp; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + j += width*(3 - window - 1); + } + + { + FLOAT amp = IPOW20(210 - 8); + j += cod_info->width[sfb] * (window+1); + for (l = -cod_info->width[sfb]; l < 0; l++) { + xrpow[j+l] *= amp; + if (xrpow[j+l] > cod_info->xrpow_max) + cod_info->xrpow_max = xrpow[j+l]; + } + } + } + return 0; +} + + + +/******************************************************************** + * + * balance_noise() + * + * Takehiro Tominaga /date?? + * Robert Hegemann 2000-09-06: made a function of it + * + * amplifies scalefactor bands, + * - if all are already amplified returns 0 + * - if some bands are amplified too much: + * * try to increase scalefac_scale + * * if already scalefac_scale was set + * try on short blocks to increase subblock gain + * + ********************************************************************/ +inline +static int +balance_noise ( + lame_global_flags *const gfp, + gr_info * const cod_info, + FLOAT * distort, + FLOAT xrpow[576], + int bRefine) +{ + lame_internal_flags *const gfc = gfp->internal_flags; + int status; + + amp_scalefac_bands ( gfp, cod_info, distort, xrpow, bRefine); + + /* check to make sure we have not amplified too much + * loop_break returns 0 if there is an unamplified scalefac + * scale_bitcount returns 0 if no scalefactors are too large + */ + + status = loop_break (cod_info); + + if (status) + return 0; /* all bands amplified */ + + /* not all scalefactors have been amplified. so these + * scalefacs are possibly valid. encode them: + */ + if (gfc->mode_gr == 2) + status = scale_bitcount (cod_info); + else + status = scale_bitcount_lsf (gfc, cod_info); + + if (!status) + return 1; /* amplified some bands not exceeding limits */ + + /* some scalefactors are too large. + * lets try setting scalefac_scale=1 + */ + if (gfc->noise_shaping > 1) { + memset(&gfc->pseudohalf, 0, sizeof(gfc->pseudohalf)); + if (!cod_info->scalefac_scale) { + inc_scalefac_scale (cod_info, xrpow); + status = 0; + } else { + if (cod_info->block_type == SHORT_TYPE && gfc->subblock_gain > 0) { + status = inc_subblock_gain (gfc, cod_info, xrpow) + || loop_break (cod_info); + } + } + } + + if (!status) { + if (gfc->mode_gr == 2) + status = scale_bitcount (cod_info); + else + status = scale_bitcount_lsf (gfc, cod_info); + } + return !status; +} + + + +/************************************************************************ + * + * outer_loop () + * + * Function: The outer iteration loop controls the masking conditions + * of all scalefactorbands. It computes the best scalefac and + * global gain. This module calls the inner iteration loop + * + * mt 5/99 completely rewritten to allow for bit reservoir control, + * mid/side channels with L/R or mid/side masking thresholds, + * and chooses best quantization instead of last quantization when + * no distortion free quantization can be found. + * + * added VBR support mt 5/99 + * + * some code shuffle rh 9/00 + ************************************************************************/ + +static int +outer_loop ( + lame_global_flags *gfp, + gr_info * const cod_info, + const FLOAT * const l3_xmin, /* allowed distortion */ + FLOAT xrpow[576], /* coloured magnitudes of spectral */ + const int ch, + const int targ_bits ) /* maximum allowed bits */ +{ + lame_internal_flags *gfc=gfp->internal_flags; + gr_info cod_info_w; + FLOAT save_xrpow[576]; + FLOAT distort[SFBMAX]; + calc_noise_result best_noise_info; + int huff_bits; + int better; + int over; + int age; + calc_noise_data prev_noise; + int best_part2_3_length = 9999999; + int bEndOfSearch = 0; + int bRefine = 0; + int best_ggain_pass1 = 0; + + bin_search_StepSize (gfc, cod_info, targ_bits, ch, xrpow); + + if (!gfc->noise_shaping) + /* fast mode, no noise shaping, we are ready */ + return 100; /* default noise_info.over_count */ + + memset(&prev_noise, 0, sizeof(calc_noise_data)); + + + /* compute the distortion in this quantization */ + /* coefficients and thresholds both l/r (or both mid/side) */ + over = calc_noise (gfc, cod_info, l3_xmin, distort, &best_noise_info, &prev_noise); + best_noise_info.bits = cod_info->part2_3_length; + + cod_info_w = *cod_info; + age = 0; + /* if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh)*/ + memcpy(save_xrpow, xrpow, sizeof(FLOAT)*576); + + while (!bEndOfSearch) { + /* BEGIN MAIN LOOP */ + do { + calc_noise_result noise_info; + int search_limit; + int maxggain = 255; + + /* When quantization with no distorted bands is found, + * allow up to X new unsuccesful tries in serial. This + * gives us more possibilities for different quant_compare modes. + * Much more than 3 makes not a big difference, it is only slower. + */ + + if (gfc->substep_shaping & 2) { + search_limit = 20; + }else { + search_limit = 3; + } + + + + /* Check if the last scalefactor band is distorted. + * in VBR mode we can't get rid of the distortion, so quit now + * and VBR mode will try again with more bits. + * (makes a 10% speed increase, the files I tested were + * binary identical, 2000/05/20 Robert Hegemann) + * distort[] > 1 means noise > allowed noise + */ + if (gfc->sfb21_extra) { + if (distort[cod_info_w.sfbmax] > 1.0) + break; + if (cod_info_w.block_type == SHORT_TYPE + && (distort[cod_info_w.sfbmax+1] > 1.0 + || distort[cod_info_w.sfbmax+2] > 1.0)) + break; + } + + /* try a new scalefactor conbination on cod_info_w */ + if (balance_noise (gfp, &cod_info_w, distort, xrpow, bRefine) == 0) + break; + if (cod_info_w.scalefac_scale) + maxggain = 254; + + /* inner_loop starts with the initial quantization step computed above + * and slowly increases until the bits < huff_bits. + * Thus it is important not to start with too large of an inital + * quantization step. Too small is ok, but inner_loop will take longer + */ + huff_bits = targ_bits - cod_info_w.part2_length; + if (huff_bits <= 0) + break; + + /* increase quantizer stepsize until needed bits are below maximum + */ + while ((cod_info_w.part2_3_length + = count_bits(gfc, xrpow, &cod_info_w, &prev_noise)) > huff_bits + && cod_info_w.global_gain <= maxggain) + cod_info_w.global_gain++; + + if (cod_info_w.global_gain > maxggain) + break; + + if (best_noise_info.over_count == 0) { + + while ((cod_info_w.part2_3_length + = count_bits(gfc, xrpow, &cod_info_w, &prev_noise)) > best_part2_3_length + && cod_info_w.global_gain <= maxggain) + cod_info_w.global_gain++; + + if (cod_info_w.global_gain > maxggain) + break; + } + + /* compute the distortion in this quantization */ + over = calc_noise (gfc, &cod_info_w, l3_xmin, distort, &noise_info, &prev_noise); + noise_info.bits = cod_info_w.part2_3_length; + + /* check if this quantization is better + * than our saved quantization */ + if (cod_info->block_type == NORM_TYPE) + better = gfp->quant_comp; + else + better = gfp->quant_comp_short; + + + better = quant_compare(better, gfc, &best_noise_info, &noise_info, + &cod_info_w, distort); + + + /* save data so we can restore this quantization later */ + if (better) { + best_part2_3_length = cod_info->part2_3_length; + best_noise_info = noise_info; + *cod_info = cod_info_w; + age = 0; + /* save data so we can restore this quantization later */ + /*if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh)*/{ + /* store for later reuse */ + memcpy(save_xrpow, xrpow, sizeof(FLOAT)*576); + } + } else { + /* early stop? */ + if (gfc->full_outer_loop == 0) { + if (++age > search_limit && best_noise_info.over_count == 0) + break; + if ((gfc->noise_shaping_amp == 3) && bRefine && + age>30) + break; + if ((gfc->noise_shaping_amp == 3) && bRefine && + (cod_info_w.global_gain - best_ggain_pass1)>15) + break; + } + } + } + while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255); + + if (gfc->noise_shaping_amp == 3) { + if (!bRefine) { + /* refine search*/ + cod_info_w = *cod_info; + memcpy( xrpow, save_xrpow, sizeof(FLOAT)*576); + age = 0; + best_ggain_pass1 = cod_info_w.global_gain; + + bRefine = 1; + } else { + /* search already refined, stop*/ + bEndOfSearch = 1; + } + + } else { + bEndOfSearch = 1; + } + } + + assert ((cod_info->global_gain + cod_info->scalefac_scale) <= 255); + /* finish up + */ + if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh) + /* restore for reuse on next try */ + memcpy(xrpow, save_xrpow, sizeof(FLOAT)*576); + /* do the 'substep shaping' + */ + else if (gfc->substep_shaping & 1) + trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow); + + return best_noise_info.over_count; +} + + + + + +/************************************************************************ + * + * iteration_finish_one() + * + * Robert Hegemann 2000-09-06 + * + * update reservoir status after FINAL quantization/bitrate + * + ************************************************************************/ + +static void +iteration_finish_one ( + lame_internal_flags *gfc, + int gr, int ch) +{ + III_side_info_t *l3_side = &gfc->l3_side; + gr_info *cod_info = &l3_side->tt[gr][ch]; + + /* try some better scalefac storage + */ + best_scalefac_store (gfc, gr, ch, l3_side); + + /* best huffman_divide may save some bits too + */ + if (gfc->use_best_huffman == 1) + best_huffman_divide (gfc, cod_info); + + /* update reservoir status after FINAL quantization/bitrate + */ + ResvAdjust (gfc, cod_info); +} + + + +/********************************************************************* + * + * VBR_encode_granule() + * + * 2000-09-04 Robert Hegemann + * + *********************************************************************/ + +static void +VBR_encode_granule ( + lame_global_flags *gfp, + gr_info * const cod_info, + const FLOAT * const l3_xmin, /* allowed distortion of the scalefactor */ + FLOAT xrpow[576], /* coloured magnitudes of spectral values */ + const int ch, + int min_bits, + int max_bits ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + gr_info bst_cod_info; + FLOAT bst_xrpow [576]; + int Max_bits = max_bits; + int real_bits = max_bits+1; + int this_bits = (max_bits+min_bits)/2; + int dbits, over, found = 0; + int sfb21_extra = gfc->sfb21_extra; + + assert(Max_bits <= MAX_BITS); + + /* search within round about 40 bits of optimal + */ + do { + assert(this_bits >= min_bits); + assert(this_bits <= max_bits); + assert(min_bits <= max_bits); + + if (this_bits > Max_bits-42) + gfc->sfb21_extra = 0; + else + gfc->sfb21_extra = sfb21_extra; + + over = outer_loop ( gfp, cod_info, l3_xmin, xrpow, ch, this_bits ); + + /* is quantization as good as we are looking for ? + * in this case: is no scalefactor band distorted? + */ + if (over <= 0) { + found = 1; + /* now we know it can be done with "real_bits" + * and maybe we can skip some iterations + */ + real_bits = cod_info->part2_3_length; + + /* store best quantization so far + */ + bst_cod_info = *cod_info; + memcpy(bst_xrpow, xrpow, sizeof(FLOAT)*576); + + /* try with fewer bits + */ + max_bits = real_bits-32; + dbits = max_bits-min_bits; + this_bits = (max_bits+min_bits)/2; + } + else { + /* try with more bits + */ + min_bits = this_bits+32; + dbits = max_bits-min_bits; + this_bits = (max_bits+min_bits)/2; + + if (found) { + found = 2; + /* start again with best quantization so far + */ + *cod_info = bst_cod_info; + memcpy(xrpow, bst_xrpow, sizeof(FLOAT)*576); + } + } + } while (dbits>12); + + gfc->sfb21_extra = sfb21_extra; + + /* found=0 => nothing found, use last one + * found=1 => we just found the best and left the loop + * found=2 => we restored a good one and have now l3_enc to restore too + */ + if (found==2) { + memcpy(cod_info->l3_enc, bst_cod_info.l3_enc, sizeof(int)*576); + } + assert(cod_info->part2_3_length <= Max_bits); + +} + + + +/************************************************************************ + * + * get_framebits() + * + * Robert Hegemann 2000-09-05 + * + * calculates + * * how many bits are available for analog silent granules + * * how many bits to use for the lowest allowed bitrate + * * how many bits each bitrate would provide + * + ************************************************************************/ + +static void +get_framebits ( + lame_global_flags *gfp, + int * const analog_mean_bits, + int * const min_mean_bits, + int frameBits[15] ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int bitsPerFrame, i; + + /* always use at least this many bits per granule per channel + * unless we detect analog silence, see below + */ + gfc->bitrate_index = gfc->VBR_min_bitrate; + bitsPerFrame = getframebits(gfp); + *min_mean_bits = (bitsPerFrame - gfc->sideinfo_len * 8) / (gfc->mode_gr*gfc->channels_out); + + /* bits for analog silence + */ + gfc->bitrate_index = 1; + bitsPerFrame = getframebits(gfp); + *analog_mean_bits = (bitsPerFrame - gfc->sideinfo_len * 8) / (gfc->mode_gr*gfc->channels_out); + + for (i = 1; i <= gfc->VBR_max_bitrate; i++) { + gfc->bitrate_index = i; + frameBits[i] = ResvFrameBegin (gfp, &bitsPerFrame); + } +} + + + +/************************************************************************ + * + * calc_min_bits() + * + * Robert Hegemann 2000-09-04 + * + * determine minimal bit skeleton + * + ************************************************************************/ +inline +static int +calc_min_bits ( + lame_global_flags *gfp, + const gr_info * const cod_info, + const int pe, + const FLOAT ms_ener_ratio, + const int bands, + const int mch_bits, + const int analog_mean_bits, + const int min_mean_bits, + const int analog_silence, + const int ch ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int min_bits, min_pe_bits; + + if (gfp->psymodel == PSY_NSPSYTUNE) return 126; + /* changed minimum from 1 to 126 bits + * the iteration loops require a minimum of bits + * for each granule to start with; robert 2001-07-02 */ + + /* base amount of minimum bits + */ + min_bits = Max (126, min_mean_bits); + + if (gfc->mode_ext == MPG_MD_MS_LR && ch == 1) + min_bits = Max (min_bits, mch_bits/5); + + /* bit skeleton based on PE + */ + if (cod_info->block_type == SHORT_TYPE) + /* if LAME switches to short blocks then pe is + * >= 1000 on medium surge + * >= 3000 on big surge + */ + min_pe_bits = (pe-350) * bands/(cod_info->sfbmax+3); + else + min_pe_bits = (pe-350) * bands/(cod_info->sfbmax+1); + + if (gfc->mode_ext == MPG_MD_MS_LR && ch == 1) { + /* side channel will use a lower bit skeleton based on PE + */ + FLOAT fac = .33 * (.5 - ms_ener_ratio) / .5; + min_pe_bits = (int)(min_pe_bits * ((1-fac)/(1+fac))); + } + min_pe_bits = Min (min_pe_bits, (1820 * gfp->out_samplerate / 44100)); + + /* determine final minimum bits + */ + if (analog_silence && !gfp->VBR_hard_min) + min_bits = analog_mean_bits; + else + min_bits = Max (min_bits, min_pe_bits); + + return min_bits; +} + + + +/********************************************************************* + * + * VBR_prepare() + * + * 2000-09-04 Robert Hegemann + * + * * converts LR to MS coding when necessary + * * calculates allowed/adjusted quantization noise amounts + * * detects analog silent frames + * + * some remarks: + * - lower masking depending on Quality setting + * - quality control together with adjusted ATH MDCT scaling + * on lower quality setting allocate more noise from + * ATH masking, and on higher quality setting allocate + * less noise from ATH masking. + * - experiments show that going more than 2dB over GPSYCHO's + * limits ends up in very annoying artefacts + * + *********************************************************************/ + +/* RH: this one needs to be overhauled sometime */ + +static int +VBR_prepare ( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio [2], + III_psy_ratio ratio [2][2], + FLOAT l3_xmin [2][2][SFBMAX], + int frameBits [16], + int *analog_mean_bits, + int *min_mean_bits, + int min_bits [2][2], + int max_bits [2][2], + int bands [2][2] ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + + + FLOAT masking_lower_db, adjust = 0.0; + int gr, ch; + int analog_silence = 1; + int avg, mxb, bits = 0; + + gfc->bitrate_index = gfc->VBR_max_bitrate; + avg = ResvFrameBegin (gfp, &avg) / gfc->mode_gr; + + get_framebits (gfp, analog_mean_bits, min_mean_bits, frameBits); + + for (gr = 0; gr < gfc->mode_gr; gr++) { + mxb = on_pe (gfp, pe, &gfc->l3_side, max_bits[gr], avg, gr, 0); + if (gfc->mode_ext == MPG_MD_MS_LR) { + ms_convert (&gfc->l3_side, gr); + ms_sparsing( gfc, gr ); + reduce_side (max_bits[gr], ms_ener_ratio[gr], avg, mxb); + } + for (ch = 0; ch < gfc->channels_out; ++ch) { + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + + if (cod_info->block_type == NORM_TYPE) { + adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05; + masking_lower_db = gfc->PSY->mask_adjust - adjust; + } else { + adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14; + masking_lower_db = gfc->PSY->mask_adjust_short - adjust; + } + gfc->masking_lower = pow (10.0, masking_lower_db * 0.1); + + init_outer_loop(gfp, gfc, cod_info); + bands[gr][ch] = calc_xmin (gfp, &ratio[gr][ch], + cod_info, l3_xmin[gr][ch]); + if (bands[gr][ch]) + analog_silence = 0; + + min_bits[gr][ch] = calc_min_bits (gfp, cod_info, (int)pe[gr][ch], + ms_ener_ratio[gr], bands[gr][ch], + 0, *analog_mean_bits, + *min_mean_bits, analog_silence, ch); + + bits += max_bits[gr][ch]; + } + } + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + if (bits > frameBits[gfc->VBR_max_bitrate]) { + max_bits[gr][ch] *= frameBits[gfc->VBR_max_bitrate]; + max_bits[gr][ch] /= bits; + } + if (min_bits[gr][ch] > max_bits[gr][ch]) + min_bits[gr][ch] = max_bits[gr][ch]; + + } /* for ch */ + } /* for gr */ + + *min_mean_bits = Max(*min_mean_bits, 126); + + return analog_silence; +} + + +static void +bitpressure_strategy( + lame_internal_flags * gfc, + FLOAT l3_xmin[2][2][SFBMAX], + int min_bits[2][2], + int max_bits[2][2] ) +{ + int gr, ch, sfb; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + gr_info *gi = &gfc->l3_side.tt[gr][ch]; + FLOAT *pxmin = l3_xmin[gr][ch]; + for (sfb = 0; sfb < gi->psy_lmax; sfb++) + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_l/SBMAX_l; + + if (gi->block_type == SHORT_TYPE) { + for (sfb = gi->sfb_smin; sfb < SBMAX_s; sfb++) { + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_s/SBMAX_s; + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_s/SBMAX_s; + *pxmin++ *= 1.+.029*sfb*sfb/SBMAX_s/SBMAX_s; + } + } + max_bits[gr][ch] = Max(min_bits[gr][ch], 0.9*max_bits[gr][ch]); + } + } +} + +/************************************************************************ + * + * VBR_iteration_loop() + * + * tries to find out how many bits are needed for each granule and channel + * to get an acceptable quantization. An appropriate bitrate will then be + * choosed for quantization. rh 8/99 + * + * Robert Hegemann 2000-09-06 rewrite + * + ************************************************************************/ + +void +VBR_iteration_loop ( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio[2], + III_psy_ratio ratio[2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + FLOAT l3_xmin[2][2][SFBMAX]; + + FLOAT xrpow[576]; + int bands[2][2]; + int frameBits[15]; + int save_bits[2][2]; + int used_bits, used_bits2; + int bits; + int min_bits[2][2], max_bits[2][2]; + int analog_mean_bits, min_mean_bits; + int mean_bits; + int ch, gr, analog_silence; + III_side_info_t *l3_side = &gfc->l3_side; + + analog_silence = VBR_prepare (gfp, pe, ms_ener_ratio, ratio, + l3_xmin, frameBits, &analog_mean_bits, + &min_mean_bits, min_bits, max_bits, bands); + + /*---------------------------------*/ + for(;;) { + + /* quantize granules with lowest possible number of bits + */ + + used_bits = 0; + used_bits2 = 0; + + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + int ret; + gr_info *cod_info = &l3_side->tt[gr][ch]; + + /* init_outer_loop sets up cod_info, scalefac and xrpow + */ + ret = init_xrpow(gfc, cod_info, xrpow); + if (ret == 0 || max_bits[gr][ch] == 0) { + /* xr contains no energy + * l3_enc, our encoding data, will be quantized to zero + */ + save_bits[gr][ch] = 0; + continue; /* with next channel */ + } + + if (gfp->VBR == vbr_mtrh) { + VBR_noise_shaping (gfc, xrpow, l3_xmin[gr][ch], + max_bits[gr][ch], gr, ch ); + } + else + VBR_encode_granule (gfp, cod_info, l3_xmin[gr][ch], xrpow, + ch, min_bits[gr][ch], max_bits[gr][ch] ); + + /* do the 'substep shaping' + */ + if (gfc->substep_shaping & 1) { + trancate_smallspectrums(gfc, &l3_side->tt[gr][ch], + l3_xmin[gr][ch], xrpow); + } + + ret = cod_info->part2_3_length + cod_info->part2_length; + used_bits += ret; + save_bits[gr][ch] = Min(MAX_BITS, ret); + used_bits2 += Min(MAX_BITS, ret); + } /* for ch */ + } /* for gr */ + + /* find lowest bitrate able to hold used bits + */ + if (analog_silence && !gfp->VBR_hard_min) + /* we detected analog silence and the user did not specify + * any hard framesize limit, so start with smallest possible frame + */ + gfc->bitrate_index = 1; + else + gfc->bitrate_index = gfc->VBR_min_bitrate; + + for( ; gfc->bitrate_index < gfc->VBR_max_bitrate; gfc->bitrate_index++) { + if (used_bits <= frameBits[gfc->bitrate_index]) break; + } + bits = ResvFrameBegin (gfp, &mean_bits); + + if (used_bits <= bits) break; + + bitpressure_strategy( gfc, l3_xmin, min_bits, max_bits ); + + } /* breaks adjusted */ + /*--------------------------------------*/ + + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + iteration_finish_one(gfc, gr, ch); + } /* for ch */ + } /* for gr */ + ResvFrameEnd (gfc, mean_bits); +} + + + + + + +/******************************************************************** + * + * calc_target_bits() + * + * calculates target bits for ABR encoding + * + * mt 2000/05/31 + * + ********************************************************************/ + +static void +calc_target_bits ( + lame_global_flags * gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio [2], + int targ_bits [2][2], + int *analog_silence_bits, + int *max_frame_bits ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t *l3_side = &gfc->l3_side; + FLOAT res_factor; + int gr, ch, totbits, mean_bits; + + gfc->bitrate_index = gfc->VBR_max_bitrate; + *max_frame_bits = ResvFrameBegin (gfp, &mean_bits); + + gfc->bitrate_index = 1; + mean_bits = getframebits(gfp) - gfc->sideinfo_len * 8; + *analog_silence_bits = mean_bits / (gfc->mode_gr * gfc->channels_out); + + mean_bits = gfp->VBR_mean_bitrate_kbps * gfp->framesize * 1000; + if (gfc->substep_shaping & 1) + mean_bits *= 1.09; + mean_bits /= gfp->out_samplerate; + mean_bits -= gfc->sideinfo_len*8; + mean_bits /= (gfc->mode_gr * gfc->channels_out); + + /* + res_factor is the percentage of the target bitrate that should + be used on average. the remaining bits are added to the + bitreservoir and used for difficult to encode frames. + + Since we are tracking the average bitrate, we should adjust + res_factor "on the fly", increasing it if the average bitrate + is greater than the requested bitrate, and decreasing it + otherwise. Reasonable ranges are from .9 to 1.0 + + Until we get the above suggestion working, we use the following + tuning: + compression ratio res_factor + 5.5 (256kbps) 1.0 no need for bitreservoir + 11 (128kbps) .93 7% held for reservoir + + with linear interpolation for other values. + + */ + res_factor = .93 + .07 * (11.0 - gfp->compression_ratio) / (11.0 - 5.5); + if (res_factor < .90) + res_factor = .90; + if (res_factor > 1.00) + res_factor = 1.00; + + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + targ_bits[gr][ch] = res_factor * mean_bits; + + if (pe[gr][ch] > 700) { + int add_bits = (pe[gr][ch] - 700) / 1.4; + + gr_info *cod_info = &l3_side->tt[gr][ch]; + targ_bits[gr][ch] = res_factor * mean_bits; + + /* short blocks use a little extra, no matter what the pe */ + if (cod_info->block_type == SHORT_TYPE) { + if (add_bits < mean_bits/2) + add_bits = mean_bits/2; + } + /* at most increase bits by 1.5*average */ + if (add_bits > mean_bits*3/2) + add_bits = mean_bits*3/2; + else + if (add_bits < 0) + add_bits = 0; + + targ_bits[gr][ch] += add_bits; + } + }/* for ch */ + } /* for gr */ + + if (gfc->mode_ext == MPG_MD_MS_LR) + for (gr = 0; gr < gfc->mode_gr; gr++) { + reduce_side (targ_bits[gr], ms_ener_ratio[gr], mean_bits*gfc->channels_out, + MAX_BITS); + } + + /* sum target bits + */ + totbits=0; + for (gr = 0; gr < gfc->mode_gr; gr++) { + for (ch = 0; ch < gfc->channels_out; ch++) { + if (targ_bits[gr][ch] > MAX_BITS) + targ_bits[gr][ch] = MAX_BITS; + totbits += targ_bits[gr][ch]; + } + } + + /* repartion target bits if needed + */ + if (totbits > *max_frame_bits) { + for(gr = 0; gr < gfc->mode_gr; gr++) { + for(ch = 0; ch < gfc->channels_out; ch++) { + targ_bits[gr][ch] *= *max_frame_bits; + targ_bits[gr][ch] /= totbits; + } + } + } +} + + + + + + +/******************************************************************** + * + * ABR_iteration_loop() + * + * encode a frame with a disired average bitrate + * + * mt 2000/05/31 + * + ********************************************************************/ + +void +ABR_iteration_loop( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio[2], + III_psy_ratio ratio [2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + FLOAT l3_xmin[SFBMAX]; + FLOAT xrpow[576]; + int targ_bits[2][2]; + int mean_bits, max_frame_bits; + int ch, gr, ath_over; + int analog_silence_bits; + gr_info *cod_info; + III_side_info_t *l3_side = &gfc->l3_side; + + calc_target_bits (gfp, pe, ms_ener_ratio, targ_bits, + &analog_silence_bits, &max_frame_bits); + + /* encode granules + */ + for (gr = 0; gr < gfc->mode_gr; gr++) { + + if (gfc->mode_ext == MPG_MD_MS_LR) { + ms_convert (&gfc->l3_side, gr); + ms_sparsing( gfc, gr ); + } + for (ch = 0; ch < gfc->channels_out; ch++) { + FLOAT adjust, masking_lower_db; + cod_info = &l3_side->tt[gr][ch]; + + if (cod_info->block_type == NORM_TYPE) { + /* adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust - adjust; + } else { + /* adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust_short - adjust; + } + gfc->masking_lower = pow (10.0, masking_lower_db * 0.1); + + + /* cod_info, scalefac and xrpow get initialized in init_outer_loop + */ + init_outer_loop(gfp, gfc, cod_info); + if (init_xrpow(gfc, cod_info, xrpow)) { + /* xr contains energy we will have to encode + * calculate the masking abilities + * find some good quantization in outer_loop + */ + ath_over = calc_xmin (gfp, &ratio[gr][ch], cod_info, l3_xmin); + if (0 == ath_over) /* analog silence */ + targ_bits[gr][ch] = analog_silence_bits; + + outer_loop (gfp, cod_info, l3_xmin, + xrpow, ch, targ_bits[gr][ch]); + } + iteration_finish_one(gfc, gr, ch); + } /* ch */ + } /* gr */ + + /* find a bitrate which can refill the resevoir to positive size. + */ + for (gfc->bitrate_index = gfc->VBR_min_bitrate ; + gfc->bitrate_index <= gfc->VBR_max_bitrate; + gfc->bitrate_index++ ) { + if (ResvFrameBegin (gfp, &mean_bits) >= 0) break; + } + assert (gfc->bitrate_index <= gfc->VBR_max_bitrate); + + ResvFrameEnd (gfc, mean_bits); +} + + + + + + +/************************************************************************ + * + * CBR_iteration_loop() + * + * author/date?? + * + * encodes one frame of MP3 data with constant bitrate + * + ************************************************************************/ + +void +CBR_iteration_loop( + lame_global_flags *gfp, + FLOAT pe [2][2], + FLOAT ms_ener_ratio[2], + III_psy_ratio ratio [2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + FLOAT l3_xmin[SFBMAX]; + FLOAT xrpow[576]; + int targ_bits[2]; + int mean_bits, max_bits; + int gr, ch; + III_side_info_t *l3_side = &gfc->l3_side; + gr_info *cod_info; + + ResvFrameBegin (gfp, &mean_bits); + + /* quantize! */ + for (gr = 0; gr < gfc->mode_gr; gr++) { + + /* calculate needed bits + */ + max_bits = on_pe (gfp, pe, l3_side, targ_bits, mean_bits, gr, gr); + + if (gfc->mode_ext == MPG_MD_MS_LR) { + ms_convert (&gfc->l3_side, gr); + ms_sparsing( gfc, gr ); + reduce_side (targ_bits, ms_ener_ratio[gr], mean_bits, max_bits); + } + + for (ch=0 ; ch < gfc->channels_out ; ch ++) { + FLOAT adjust, masking_lower_db; + cod_info = &l3_side->tt[gr][ch]; + + if (cod_info->block_type == NORM_TYPE) { + /* adjust = 1.28/(1+exp(3.5-pe[gr][ch]/300.))-0.05;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust - adjust; + } else { + /* adjust = 2.56/(1+exp(3.5-pe[gr][ch]/300.))-0.14;*/ + adjust = 0; + masking_lower_db = gfc->PSY->mask_adjust_short - adjust; + } + gfc->masking_lower = pow (10.0, masking_lower_db * 0.1); + + /* init_outer_loop sets up cod_info, scalefac and xrpow + */ + init_outer_loop(gfp, gfc, cod_info); + if (init_xrpow(gfc, cod_info, xrpow)) { + /* xr contains energy we will have to encode + * calculate the masking abilities + * find some good quantization in outer_loop + */ + calc_xmin (gfp, &ratio[gr][ch], cod_info, l3_xmin); + outer_loop (gfp, cod_info, l3_xmin, xrpow, ch, targ_bits[ch]); + } + + iteration_finish_one(gfc, gr, ch); + assert (cod_info->part2_3_length <= MAX_BITS); + assert (cod_info->part2_3_length <= targ_bits[ch]); + } /* for ch */ + } /* for gr */ + + ResvFrameEnd (gfc, mean_bits); +} + diff --git a/lame-3.97/libmp3lame/quantize.h b/lame-3.97/libmp3lame/quantize.h new file mode 100644 index 0000000..be43d43 --- /dev/null +++ b/lame-3.97/libmp3lame/quantize.h @@ -0,0 +1,43 @@ +/* + * MP3 quantization + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_QUANTIZE_H +#define LAME_QUANTIZE_H + +#include "util.h" + +void CBR_iteration_loop( lame_global_flags *gfp, + FLOAT pe[2][2], + FLOAT ms_ratio[2], + III_psy_ratio ratio[2][2]); + +void VBR_iteration_loop( lame_global_flags *gfp, + FLOAT pe[2][2], + FLOAT ms_ratio[2], + III_psy_ratio ratio[2][2]); + +void ABR_iteration_loop( lame_global_flags *gfp, + FLOAT pe[2][2], + FLOAT ms_ratio[2], + III_psy_ratio ratio[2][2]); + +#endif /* LAME_QUANTIZE_H */ + diff --git a/lame-3.97/libmp3lame/quantize_pvt.c b/lame-3.97/libmp3lame/quantize_pvt.c new file mode 100644 index 0000000..189649d --- /dev/null +++ b/lame-3.97/libmp3lame/quantize_pvt.c @@ -0,0 +1,979 @@ +/* + * quantize_pvt source file + * + * Copyright (c) 1999-2002 Takehiro Tominaga + * Copyright (c) 2000-2002 Robert Hegemann + * Copyright (c) 2001 Naoki Shibata + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: quantize_pvt.c,v 1.131.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "lame-analysis.h" +#include "tables.h" +#include "reservoir.h" +#include "quantize_pvt.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +#define NSATHSCALE 100 /* Assuming dynamic range=96dB, this value should be 92 */ + +/* + The following table is used to implement the scalefactor + partitioning for MPEG2 as described in section + 2.4.3.2 of the IS. The indexing corresponds to the + way the tables are presented in the IS: + + [table_number][row_in_table][column of nr_of_sfb] +*/ +const int nr_of_sfb_block [6] [3] [4] = +{ + { + {6, 5, 5, 5}, + {9, 9, 9, 9}, + {6, 9, 9, 9} + }, + { + {6, 5, 7, 3}, + {9, 9, 12, 6}, + {6, 9, 12, 6} + }, + { + {11, 10, 0, 0}, + {18, 18, 0, 0}, + {15,18,0,0} + }, + { + {7, 7, 7, 0}, + {12, 12, 12, 0}, + {6, 15, 12, 0} + }, + { + {6, 6, 6, 3}, + {12, 9, 9, 6}, + {6, 12, 9, 6} + }, + { + {8, 8, 5, 0}, + {15,12,9,0}, + {6,18,9,0} + } +}; + + +/* Table B.6: layer3 preemphasis */ +const int pretab [SBMAX_l] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 +}; + +/* + Here are MPEG1 Table B.8 and MPEG2 Table B.1 + -- Layer III scalefactor bands. + Index into this using a method such as: + idx = fr_ps->header->sampling_frequency + + (fr_ps->header->version * 3) +*/ + + +const scalefac_struct sfBandIndex[9] = +{ + { /* Table B.2.b: 22.05 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0,4,8,12,18,24,32,42,56,74,100,132,174,192} + }, + { /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */ + {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278, 332, 394,464,540,576}, + {0,4,8,12,18,26,36,48,62,80,104,136,180,192} + }, + { /* Table B.2.a: 16 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0,4,8,12,18,26,36,48,62,80,104,134,174,192} + }, + { /* Table B.8.b: 44.1 kHz */ + {0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576}, + {0,4,8,12,16,22,30,40,52,66,84,106,136,192} + }, + { /* Table B.8.c: 48 kHz */ + {0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576}, + {0,4,8,12,16,22,28,38,50,64,80,100,126,192} + }, + { /* Table B.8.a: 32 kHz */ + {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576}, + {0,4,8,12,16,22,30,42,58,78,104,138,180,192} + }, + { /* MPEG-2.5 11.025 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0/3,12/3,24/3,36/3,54/3,78/3,108/3,144/3,186/3,240/3,312/3,402/3,522/3,576/3} + }, + { /* MPEG-2.5 12 kHz */ + {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {0/3,12/3,24/3,36/3,54/3,78/3,108/3,144/3,186/3,240/3,312/3,402/3,522/3,576/3} + }, + { /* MPEG-2.5 8 kHz */ + {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576}, + {0/3,24/3,48/3,72/3,108/3,156/3,216/3,288/3,372/3,480/3,486/3,492/3,498/3,576/3} + } +}; + + + +FLOAT pow20[Q_MAX+Q_MAX2+1]; +FLOAT ipow20[Q_MAX]; +FLOAT pow43[PRECALC_SIZE]; +/* initialized in first call to iteration_init */ +#ifdef TAKEHIRO_IEEE754_HACK +FLOAT adj43asm[PRECALC_SIZE]; +#else +FLOAT adj43[PRECALC_SIZE]; +#endif + +/* +compute the ATH for each scalefactor band +cd range: 0..96db + +Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest = -5db) +longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db +shortblocks: sfb=5 -9db 0db + +Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) +longblocks: amp=1 sfb=12 en0/bw=-103 db max_en0 = -92db + amp=32767 sfb=12 -12 db -1.4db + +Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) +shortblocks: amp=1 sfb=5 en0/bw= -99 -86 + amp=32767 sfb=5 -9 db 4db + + +MAX energy of largest wave at 3.3kHz = 1db +AVE energy of largest wave at 3.3kHz = -11db +Let's take AVE: -11db = maximum signal in sfb=12. +Dynamic range of CD: 96db. Therefor energy of smallest audible wave +in sfb=12 = -11 - 96 = -107db = ATH at 3.3kHz. + +ATH formula for this wave: -5db. To adjust to LAME scaling, we need +ATH = ATH_formula - 103 (db) +ATH = ATH * 2.5e-10 (ener) + +*/ + +static FLOAT ATHmdct( lame_global_flags *gfp, FLOAT f ) +{ + FLOAT ath; + + ath = ATHformula( f , gfp ); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + ath -= NSATHSCALE; + } else { + ath -= 114; + } + + /* modify the MDCT scaling for the ATH and convert to energy */ + ath = pow( 10.0, ath/10.0 + gfp->ATHlower); + return ath; +} + +static void compute_ath( lame_global_flags *gfp ) +{ + FLOAT *ATH_l = gfp->internal_flags->ATH->l; + FLOAT *ATH_psfb21 = gfp->internal_flags->ATH->psfb21; + FLOAT *ATH_s = gfp->internal_flags->ATH->s; + FLOAT *ATH_psfb12 = gfp->internal_flags->ATH->psfb12; + lame_internal_flags *gfc = gfp->internal_flags; + int sfb, i, start, end; + FLOAT ATH_f; + FLOAT samp_freq = gfp->out_samplerate; + + for (sfb = 0; sfb < SBMAX_l; sfb++) { + start = gfc->scalefac_band.l[ sfb ]; + end = gfc->scalefac_band.l[ sfb+1 ]; + ATH_l[sfb]=FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*576); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_l[sfb] = Min( ATH_l[sfb], ATH_f ); + } + if (gfp->psymodel == PSY_GPSYCHO) + ATH_l[sfb] *= + (gfc->scalefac_band.l[sfb+1] - gfc->scalefac_band.l[sfb]); + } + + for (sfb = 0; sfb < PSFB21; sfb++) { + start = gfc->scalefac_band.psfb21[ sfb ]; + end = gfc->scalefac_band.psfb21[ sfb+1 ]; + ATH_psfb21[sfb]=FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*576); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_psfb21[sfb] = Min( ATH_psfb21[sfb], ATH_f ); + } + } + + for (sfb = 0; sfb < SBMAX_s; sfb++){ + start = gfc->scalefac_band.s[ sfb ]; + end = gfc->scalefac_band.s[ sfb+1 ]; + ATH_s[sfb] = FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*192); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_s[sfb] = Min( ATH_s[sfb], ATH_f ); + } + ATH_s[sfb] *= + (gfc->scalefac_band.s[sfb+1] - gfc->scalefac_band.s[sfb]); + } + + for (sfb = 0; sfb < PSFB12; sfb++) { + start = gfc->scalefac_band.psfb12[ sfb ]; + end = gfc->scalefac_band.psfb12[ sfb+1 ]; + ATH_psfb12[sfb]=FLOAT_MAX; + for (i = start ; i < end; i++) { + FLOAT freq = i*samp_freq/(2*192); + ATH_f = ATHmdct( gfp, freq ); /* freq in kHz */ + ATH_psfb12[sfb] = Min( ATH_psfb12[sfb], ATH_f ); + } + /*not sure about the following*/ + ATH_psfb12[sfb] *= + (gfc->scalefac_band.s[13] - gfc->scalefac_band.s[12]); + } + + + /* no-ATH mode: + * reduce ATH to -200 dB + */ + + if (gfp->noATH) { + for (sfb = 0; sfb < SBMAX_l; sfb++) { + ATH_l[sfb] = 1E-37; + } + for (sfb = 0; sfb < PSFB21; sfb++) { + ATH_psfb21[sfb] = 1E-37; + } + for (sfb = 0; sfb < SBMAX_s; sfb++) { + ATH_s[sfb] = 1E-37; + } + for (sfb = 0; sfb < PSFB12; sfb++) { + ATH_psfb12[sfb] = 1E-37; + } + } + + /* work in progress, don't rely on it too much + */ + gfc->ATH-> floor = 10. * log10( ATHmdct( gfp, -1. ) ); + + /* + { FLOAT g=10000, t=1e30, x; + for ( f = 100; f < 10000; f++ ) { + x = ATHmdct( gfp, f ); + if ( t > x ) t = x, g = f; + } + printf("min=%g\n", g); + }*/ +} + + + + +/************************************************************************/ +/* initialization for iteration_loop */ +/************************************************************************/ +void +iteration_init( lame_global_flags *gfp) +{ + lame_internal_flags *gfc=gfp->internal_flags; + III_side_info_t * const l3_side = &gfc->l3_side; + int i; + + if ( gfc->iteration_init_init==0 ) { + gfc->iteration_init_init=1; + + l3_side->main_data_begin = 0; + compute_ath(gfp); + + pow43[0] = 0.0; + for(i=1;i<PRECALC_SIZE;i++) + pow43[i] = pow((FLOAT)i, 4.0/3.0); + +#ifdef TAKEHIRO_IEEE754_HACK + adj43asm[0] = 0.0; + for (i = 1; i < PRECALC_SIZE; i++) + adj43asm[i] = i - 0.5 - pow(0.5 * (pow43[i - 1] + pow43[i]),0.75); +#else + for (i = 0; i < PRECALC_SIZE-1; i++) + adj43[i] = (i + 1) - pow(0.5 * (pow43[i] + pow43[i + 1]), 0.75); + adj43[i] = 0.5; +#endif + for (i = 0; i < Q_MAX; i++) + ipow20[i] = pow(2.0, (double)(i - 210) * -0.1875); + for (i = 0; i <= Q_MAX+Q_MAX2; i++) + pow20[i] = pow(2.0, (double)(i - 210 - Q_MAX2) * 0.25); + + huffman_init(gfc); + quantize_init(gfc); + init_xrpow_core_init(gfc); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + FLOAT bass, alto, treble, sfb21; + + i = (gfp->exp_nspsytune >> 2) & 63; + if (i >= 32) + i -= 64; + bass = pow(10, i / 4.0 / 10.0); + + i = (gfp->exp_nspsytune >> 8) & 63; + if (i >= 32) + i -= 64; + alto = pow(10, i / 4.0 / 10.0); + + i = (gfp->exp_nspsytune >> 14) & 63; + if (i >= 32) + i -= 64; + treble = pow(10, i / 4.0 / 10.0); + + /* to be compatible with Naoki's original code, the next 6 bits + * define only the amount of changing treble for sfb21 */ + i = (gfp->exp_nspsytune >> 20) & 63; + if (i >= 32) + i -= 64; + sfb21 = treble * pow(10, i / 4.0 / 10.0); + + for (i = 0; i < SBMAX_l; i++) { + FLOAT f; + if (i <= 6) f = bass; + else if (i <= 13) f = alto; + else if (i <= 20) f = treble; + else f = sfb21; + + gfc->nsPsy.longfact[i] = f; + } + for (i = 0; i < SBMAX_s; i++) { + FLOAT f; + if (i <= 5) f = bass; + else if (i <= 10) f = alto; + else if (i <= 11) f = treble; + else f = sfb21; + + gfc->nsPsy.shortfact[i] = f; + } + } else { + for (i = 0; i < SBMAX_l; i++) + gfc->nsPsy.longfact[i] = 1.0; + for (i = 0; i < SBMAX_s; i++) + gfc->nsPsy.shortfact[i] = 1.0; + } + } +} + + + + + +/************************************************************************ + * allocate bits among 2 channels based on PE + * mt 6/99 + * bugfixes rh 8/01: often allocated more than the allowed 4095 bits + ************************************************************************/ +int on_pe( lame_global_flags *gfp, FLOAT pe[][2], III_side_info_t *l3_side, + int targ_bits[2], int mean_bits, int gr, int cbr ) +{ + lame_internal_flags * gfc = gfp->internal_flags; + gr_info * cod_info; + int extra_bits, tbits, bits; + int add_bits[2]; + int max_bits; /* maximum allowed bits for this granule */ + int ch; + + /* allocate targ_bits for granule */ + ResvMaxBits( gfp, mean_bits, &tbits, &extra_bits, cbr); + max_bits = tbits + extra_bits; + if (max_bits > MAX_BITS) /* hard limit per granule */ + max_bits = MAX_BITS; + + for ( bits = 0, ch = 0; ch < gfc->channels_out; ++ch ) { + /****************************************************************** + * allocate bits for each channel + ******************************************************************/ + cod_info = &l3_side->tt[gr][ch]; + + targ_bits[ch] = Min( MAX_BITS, tbits/gfc->channels_out ); + + if (gfp->psymodel == PSY_NSPSYTUNE) { + add_bits[ch] = targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]; + } + else { + add_bits[ch] = (pe[gr][ch]-750) / 1.4; + /* short blocks us a little extra, no matter what the pe */ + if ( cod_info->block_type == SHORT_TYPE ) { + if (add_bits[ch] < mean_bits/4) + add_bits[ch] = mean_bits/4; + } + } + + /* at most increase bits by 1.5*average */ + if (add_bits[ch] > mean_bits*3/4) + add_bits[ch] = mean_bits*3/4; + if (add_bits[ch] < 0) + add_bits[ch] = 0; + + if (add_bits[ch]+targ_bits[ch] > MAX_BITS) + add_bits[ch] = Max( 0, MAX_BITS-targ_bits[ch] ); + + bits += add_bits[ch]; + } + if (bits > extra_bits) { + for ( ch = 0; ch < gfc->channels_out; ++ch ) { + add_bits[ch] = extra_bits * add_bits[ch] / bits; + } + } + + for ( ch = 0; ch < gfc->channels_out; ++ch ) { + targ_bits[ch] += add_bits[ch]; + extra_bits -= add_bits[ch]; + assert( targ_bits[ch] <= MAX_BITS ); + } + assert( max_bits <= MAX_BITS ); + return max_bits; +} + + + + +void reduce_side(int targ_bits[2],FLOAT ms_ener_ratio,int mean_bits,int max_bits) +{ + int move_bits; + FLOAT fac; + + + /* ms_ener_ratio = 0: allocate 66/33 mid/side fac=.33 + * ms_ener_ratio =.5: allocate 50/50 mid/side fac= 0 */ + /* 75/25 split is fac=.5 */ + /* float fac = .50*(.5-ms_ener_ratio[gr])/.5;*/ + fac = .33*(.5-ms_ener_ratio)/.5; + if (fac<0) fac=0; + if (fac>.5) fac=.5; + + /* number of bits to move from side channel to mid channel */ + /* move_bits = fac*targ_bits[1]; */ + move_bits = fac*.5*(targ_bits[0]+targ_bits[1]); + + if (move_bits > MAX_BITS - targ_bits[0]) { + move_bits = MAX_BITS - targ_bits[0]; + } + if (move_bits<0) move_bits=0; + + if (targ_bits[1] >= 125) { + /* dont reduce side channel below 125 bits */ + if (targ_bits[1]-move_bits > 125) { + + /* if mid channel already has 2x more than average, dont bother */ + /* mean_bits = bits per granule (for both channels) */ + if (targ_bits[0] < mean_bits) + targ_bits[0] += move_bits; + targ_bits[1] -= move_bits; + } else { + targ_bits[0] += targ_bits[1] - 125; + targ_bits[1] = 125; + } + } + + move_bits=targ_bits[0]+targ_bits[1]; + if (move_bits > max_bits) { + targ_bits[0]=(max_bits*targ_bits[0])/move_bits; + targ_bits[1]=(max_bits*targ_bits[1])/move_bits; + } + assert (targ_bits[0] <= MAX_BITS); + assert (targ_bits[1] <= MAX_BITS); +} + + +/** + * Robert Hegemann 2001-04-27: + * this adjusts the ATH, keeping the original noise floor + * affects the higher frequencies more than the lower ones + */ + +FLOAT athAdjust( FLOAT a, FLOAT x, FLOAT athFloor ) +{ + /* work in progress + */ + FLOAT const o = 90.30873362; + FLOAT const p = 94.82444863; + FLOAT u = FAST_LOG10_X(x, 10.0); + FLOAT v = a*a; + FLOAT w = 0.0; + u -= athFloor; /* undo scaling */ + if ( v > 1E-20 ) w = 1. + FAST_LOG10_X(v, 10.0 / o); + if ( w < 0 ) w = 0.; + u *= w; + u += athFloor + o-p; /* redo scaling */ + + return pow( 10., 0.1*u ); +} + + + +/*************************************************************************/ +/* calc_xmin */ +/*************************************************************************/ + +/* + Calculate the allowed distortion for each scalefactor band, + as determined by the psychoacoustic model. + xmin(sb) = ratio(sb) * en(sb) / bw(sb) + + returns number of sfb's with energy > ATH +*/ +int calc_xmin( + lame_global_flags *gfp, + const III_psy_ratio * const ratio, + gr_info * const cod_info, + FLOAT * pxmin + ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int sfb, gsfb, j=0, ath_over=0, k; + ATH_t * ATH = gfc->ATH; + const FLOAT *xr = cod_info->xr; + int max_nonzero; + + for (gsfb = 0; gsfb < cod_info->psy_lmax; gsfb++) { + FLOAT en0, xmin; + int width, l; + if (gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh) + xmin = athAdjust(ATH->adjust, ATH->l[gsfb], ATH->floor); + else + xmin = ATH->adjust * ATH->l[gsfb]; + + width = cod_info->width[gsfb]; + l = width >> 1; + en0 = 0.0; + do { + en0 += xr[j] * xr[j]; j++; + en0 += xr[j] * xr[j]; j++; + } while (--l > 0); + if (en0 > xmin) ath_over++; + + if (!gfp->ATHonly) { + FLOAT x = ratio->en.l[gsfb]; + if (x > 0.0) { + x = en0 * ratio->thm.l[gsfb] * gfc->masking_lower / x; + if (xmin < x) + xmin = x; + } + } + *pxmin++ = xmin * gfc->nsPsy.longfact[gsfb]; + } /* end of long block loop */ + + + + + /*use this function to determine the highest non-zero coeff*/ + max_nonzero = 575; + if (cod_info->block_type == NORM_TYPE) { + k = 576; + while (k-- && !xr[k]){ + max_nonzero = k; + } + } + cod_info->max_nonzero_coeff = max_nonzero; + + + + for (sfb = cod_info->sfb_smin; gsfb < cod_info->psymax; sfb++, gsfb += 3) { + int width, b; + FLOAT tmpATH; + if ( gfp->VBR == vbr_rh || gfp->VBR == vbr_mtrh ) + tmpATH = athAdjust( ATH->adjust, ATH->s[sfb], ATH->floor ); + else + tmpATH = ATH->adjust * ATH->s[sfb]; + + width = cod_info->width[gsfb]; + for ( b = 0; b < 3; b++ ) { + FLOAT en0 = 0.0, xmin; + int l = width >> 1; + do { + en0 += xr[j] * xr[j]; j++; + en0 += xr[j] * xr[j]; j++; + } while (--l > 0); + if (en0 > tmpATH) ath_over++; + + xmin = tmpATH; + if (!gfp->ATHonly && !gfp->ATHshort) { + FLOAT x = ratio->en.s[sfb][b]; + if (x > 0.0) + x = en0 * ratio->thm.s[sfb][b] * gfc->masking_lower / x; + if (xmin < x) + xmin = x; + } + *pxmin++ = xmin * gfc->nsPsy.shortfact[sfb]; + } /* b */ + if (gfp->useTemporal) { + if (pxmin[-3] > pxmin[-3+1]) + pxmin[-3+1] += (pxmin[-3] - pxmin[-3+1]) * gfc->decay; + if (pxmin[-3+1] > pxmin[-3+2]) + pxmin[-3+2] += (pxmin[-3+1] - pxmin[-3+2]) * gfc->decay; + } + } /* end of short block sfb loop */ + + return ath_over; +} + + +FLOAT calc_noise_core_c( const gr_info * const cod_info, + int *startline, + int l, + FLOAT step) +{ + FLOAT noise = 0; + int j = *startline; + const int *ix = cod_info->l3_enc; + + if (j> cod_info->count1) { + while (l--) { + FLOAT temp; + temp = cod_info->xr[j];j++; + noise += temp * temp; + temp = cod_info->xr[j];j++; + noise += temp * temp; + } + } else if (j> cod_info->big_values) { + FLOAT ix01[2]; + ix01[0] = 0; + ix01[1] = step; + while (l--) { + FLOAT temp; + temp = fabs(cod_info->xr[j]) - ix01[ix[j]];j++; + noise += temp * temp; + temp = fabs(cod_info->xr[j]) - ix01[ix[j]];j++; + noise += temp * temp; + } + } else { + while (l--) { + FLOAT temp; + temp = fabs(cod_info->xr[j]) - pow43[ix[j]] * step;j++; + noise += temp * temp; + temp = fabs(cod_info->xr[j]) - pow43[ix[j]] * step;j++; + noise += temp * temp; + } + } + + *startline = j; + return noise; +} + + +/*************************************************************************/ +/* calc_noise */ +/*************************************************************************/ + +/* -oo dB => -1.00 */ +/* - 6 dB => -0.97 */ +/* - 3 dB => -0.80 */ +/* - 2 dB => -0.64 */ +/* - 1 dB => -0.38 */ +/* 0 dB => 0.00 */ +/* + 1 dB => +0.49 */ +/* + 2 dB => +1.06 */ +/* + 3 dB => +1.68 */ +/* + 6 dB => +3.69 */ +/* +10 dB => +6.45 */ + +int calc_noise( + const lame_internal_flags * const gfc, + const gr_info * const cod_info, + const FLOAT * l3_xmin, + FLOAT * distort, + calc_noise_result * const res, + calc_noise_data * prev_noise) +{ + int sfb, l, over=0; + FLOAT over_noise_db = 0; + FLOAT tot_noise_db = 0; /* 0 dB relative to masking */ + FLOAT max_noise = -20.0; /* -200 dB relative to masking */ + int j = 0; + const int *ix = cod_info->l3_enc; + const int *scalefac = cod_info->scalefac; + FLOAT sfb_noise[39]; + + res->over_SSD = 0; + + + for (sfb = 0; sfb < cod_info->psymax; sfb++) { + int s = + cod_info->global_gain + - (((*scalefac++) + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + - cod_info->subblock_gain[cod_info->window[sfb]] * 8; + FLOAT noise = 0.0; + + if (prev_noise && (prev_noise->step[sfb] == s)){ + + /* use previously computed values */ + noise = prev_noise->noise[sfb]; + j += cod_info->width[sfb]; + *distort++ = noise / *l3_xmin++; + + noise = prev_noise->noise_log[sfb]; + + } else { + FLOAT step = POW20(s); + l = cod_info->width[sfb] >> 1; + + if ((j+cod_info->width[sfb])>cod_info->max_nonzero_coeff) { + int usefullsize; + usefullsize = cod_info->max_nonzero_coeff - j +1; + + if (usefullsize > 0) + l = usefullsize >> 1; + else + l = 0; + } + + noise = calc_noise_core_c(cod_info, &j, l, step); + + + if (prev_noise) { + /* save noise values */ + prev_noise->step[sfb] = s; + prev_noise->noise[sfb] = noise; + } + + noise = *distort++ = noise / *l3_xmin++; + + /* multiplying here is adding in dB, but can overflow */ + noise = FAST_LOG10(Max(noise,1E-20)); + + if (prev_noise) { + /* save noise values */ + prev_noise->noise_log[sfb] = noise; + } + } + + if (prev_noise) { + /* save noise values */ + prev_noise->global_gain = cod_info->global_gain;; + } + + + /*tot_noise *= Max(noise, 1E-20); */ + tot_noise_db += noise; + + if (noise > 0.0) { + int tmp; + + tmp = Max((int)(noise*10 + .5), 1); + res->over_SSD += tmp*tmp; + + over++; + /* multiplying here is adding in dB -but can overflow */ + /*over_noise *= noise; */ + over_noise_db += noise; + } + max_noise=Max(max_noise,noise); + + sfb_noise[sfb] = noise; + } + + res->over_count = over; + res->tot_noise = tot_noise_db; + res->over_noise = over_noise_db; + res->max_noise = max_noise; + + return over; +} + + + + + + + +#ifdef HAVE_GTK +/************************************************************************ + * + * set_pinfo() + * + * updates plotting data + * + * Mark Taylor 2000-??-?? + * + * Robert Hegemann: moved noise/distortion calc into it + * + ************************************************************************/ + +static +void set_pinfo ( + lame_global_flags *gfp, + gr_info * const cod_info, + const III_psy_ratio * const ratio, + const int gr, + const int ch ) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int sfb, sfb2; + int j,i,l,start,end,bw; + FLOAT en0,en1; + FLOAT ifqstep = ( cod_info->scalefac_scale == 0 ) ? .5 : 1.0; + int* scalefac = cod_info->scalefac; + + FLOAT l3_xmin[SFBMAX], xfsf[SFBMAX]; + calc_noise_result noise; + + calc_xmin (gfp, ratio, cod_info, l3_xmin); + calc_noise (gfc, cod_info, l3_xmin, xfsf, &noise, 0); + + j = 0; + sfb2 = cod_info->sfb_lmax; + if (cod_info->block_type != SHORT_TYPE && !cod_info->mixed_block_flag) + sfb2 = 22; + for (sfb = 0; sfb < sfb2; sfb++) { + start = gfc->scalefac_band.l[ sfb ]; + end = gfc->scalefac_band.l[ sfb+1 ]; + bw = end - start; + for ( en0 = 0.0; j < end; j++ ) + en0 += cod_info->xr[j] * cod_info->xr[j]; + en0/=bw; + /* convert to MDCT units */ + en1=1e15; /* scaling so it shows up on FFT plot */ + gfc->pinfo-> en[gr][ch][sfb] = en1*en0; + gfc->pinfo->xfsf[gr][ch][sfb] = en1*l3_xmin[sfb]*xfsf[sfb]/bw; + + if (ratio->en.l[sfb]>0 && !gfp->ATHonly) + en0 = en0/ratio->en.l[sfb]; + else + en0=0.0; + + gfc->pinfo->thr[gr][ch][sfb] = + en1*Max(en0*ratio->thm.l[sfb],gfc->ATH->l[sfb]); + + /* there is no scalefactor bands >= SBPSY_l */ + gfc->pinfo->LAMEsfb[gr][ch][sfb] = 0; + if (cod_info->preflag && sfb>=11) + gfc->pinfo->LAMEsfb[gr][ch][sfb] = -ifqstep*pretab[sfb]; + + if (sfb<SBPSY_l) { + assert(scalefac[sfb]>=0); /* scfsi should be decoded by caller side*/ + gfc->pinfo->LAMEsfb[gr][ch][sfb] -= ifqstep*scalefac[sfb]; + } + } /* for sfb */ + + if (cod_info->block_type == SHORT_TYPE) { + sfb2 = sfb; + for (sfb = cod_info->sfb_smin; sfb < SBMAX_s; sfb++ ) { + start = gfc->scalefac_band.s[ sfb ]; + end = gfc->scalefac_band.s[ sfb + 1 ]; + bw = end - start; + for ( i = 0; i < 3; i++ ) { + for ( en0 = 0.0, l = start; l < end; l++ ) { + en0 += cod_info->xr[j] * cod_info->xr[j]; + j++; + } + en0=Max(en0/bw,1e-20); + /* convert to MDCT units */ + en1=1e15; /* scaling so it shows up on FFT plot */ + + gfc->pinfo-> en_s[gr][ch][3*sfb+i] = en1*en0; + gfc->pinfo->xfsf_s[gr][ch][3*sfb+i] = en1*l3_xmin[sfb2]*xfsf[sfb2]/bw; + if (ratio->en.s[sfb][i]>0) + en0 = en0/ratio->en.s[sfb][i]; + else + en0=0.0; + if (gfp->ATHonly || gfp->ATHshort) + en0=0; + + gfc->pinfo->thr_s[gr][ch][3*sfb+i] = + en1*Max(en0*ratio->thm.s[sfb][i],gfc->ATH->s[sfb]); + + /* there is no scalefactor bands >= SBPSY_s */ + gfc->pinfo->LAMEsfb_s[gr][ch][3*sfb+i] + = -2.0*cod_info->subblock_gain[i]; + if (sfb < SBPSY_s) { + gfc->pinfo->LAMEsfb_s[gr][ch][3*sfb+i] -= + ifqstep*scalefac[sfb2]; + } + sfb2++; + } + } + } /* block type short */ + gfc->pinfo->LAMEqss [gr][ch] = cod_info->global_gain; + gfc->pinfo->LAMEmainbits[gr][ch] = cod_info->part2_3_length + cod_info->part2_length; + gfc->pinfo->LAMEsfbits [gr][ch] = cod_info->part2_length; + + gfc->pinfo->over [gr][ch] = noise.over_count; + gfc->pinfo->max_noise [gr][ch] = noise.max_noise * 10.0; + gfc->pinfo->over_noise[gr][ch] = noise.over_noise * 10.0; + gfc->pinfo->tot_noise [gr][ch] = noise.tot_noise * 10.0; + gfc->pinfo->over_SSD [gr][ch] = noise.over_SSD; +} + + +/************************************************************************ + * + * set_frame_pinfo() + * + * updates plotting data for a whole frame + * + * Robert Hegemann 2000-10-21 + * + ************************************************************************/ + +void set_frame_pinfo( + lame_global_flags *gfp, + III_psy_ratio ratio [2][2]) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int ch; + int gr; + + gfc->masking_lower = 1.0; + + /* for every granule and channel patch l3_enc and set info + */ + for (gr = 0; gr < gfc->mode_gr; gr ++) { + for (ch = 0; ch < gfc->channels_out; ch ++) { + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + int scalefac_sav[SFBMAX]; + memcpy(scalefac_sav, cod_info->scalefac, sizeof(scalefac_sav)); + + /* reconstruct the scalefactors in case SCFSI was used + */ + if (gr == 1) { + int sfb; + for (sfb = 0; sfb < cod_info->sfb_lmax; sfb++) { + if (cod_info->scalefac[sfb] < 0) /* scfsi */ + cod_info->scalefac[sfb] = gfc->l3_side.tt[0][ch].scalefac[sfb]; + } + } + + set_pinfo (gfp, cod_info, &ratio[gr][ch], gr, ch); + memcpy(cod_info->scalefac, scalefac_sav, sizeof(scalefac_sav)); + } /* for ch */ + } /* for gr */ +} +#endif /* ifdef HAVE_GTK */ + + diff --git a/lame-3.97/libmp3lame/quantize_pvt.h b/lame-3.97/libmp3lame/quantize_pvt.h new file mode 100644 index 0000000..3f82925 --- /dev/null +++ b/lame-3.97/libmp3lame/quantize_pvt.h @@ -0,0 +1,149 @@ +/* + * quantize_pvt include file + * + * Copyright (c) 1999 Takehiro TOMINAGA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_QUANTIZE_PVT_H +#define LAME_QUANTIZE_PVT_H + +#include "l3side.h" +#define IXMAX_VAL 8206 /* ix always <= 8191+15. see count_bits() */ + +/* buggy Winamp decoder cannot handle values > 8191 */ +/* #define IXMAX_VAL 8191 */ + +#define PRECALC_SIZE (IXMAX_VAL+2) + + +extern const int nr_of_sfb_block[6][3][4]; +extern const int pretab[SBMAX_l]; +extern const int slen1_tab[16]; +extern const int slen2_tab[16]; + +extern const scalefac_struct sfBandIndex[9]; + +extern FLOAT pow43[PRECALC_SIZE]; +#ifdef TAKEHIRO_IEEE754_HACK +extern FLOAT adj43asm[PRECALC_SIZE]; +#else +extern FLOAT adj43[PRECALC_SIZE]; +#endif + +#define Q_MAX (256+1) +#define Q_MAX2 116 /* minimum possible number of + -cod_info->global_gain + + ((scalefac[] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + + for long block, 0+((15+3)<<2) = 18*4 = 72 + for short block, 0+(15<<2)+7*8 = 15*4+56 = 116 + */ + +extern FLOAT pow20[Q_MAX+Q_MAX2+1]; +extern FLOAT ipow20[Q_MAX]; +extern FLOAT iipow20[Q_MAX2+1]; + +typedef struct calc_noise_result_t { + FLOAT over_noise; /* sum of quantization noise > masking */ + FLOAT tot_noise; /* sum of all quantization noise */ + FLOAT max_noise; /* max quantization noise */ + int over_count; /* number of quantization noise > masking */ + int over_SSD; /* SSD-like cost of distorted bands */ + int bits; +} calc_noise_result; + + +/** +* allows re-use of previously +* computed noise values +*/ +typedef struct calc_noise_data_t { + int global_gain; + int sfb_count1; + int step[39]; + FLOAT noise[39]; + FLOAT noise_log[39]; +} calc_noise_data; + + +int on_pe (lame_global_flags *gfp, FLOAT pe[2][2], III_side_info_t * l3_side, + int targ_bits[2], int mean_bits, int gr, int cbr); + +void reduce_side (int targ_bits[2], FLOAT ms_ener_ratio, int mean_bits, + int max_bits); + + +int bin_search_StepSize (lame_internal_flags * const gfc, gr_info * const cod_info, + int desired_rate, const int ch, + const FLOAT xrpow[576]); + +void iteration_init (lame_global_flags *gfp); + + +int calc_xmin (lame_global_flags *gfp, + const III_psy_ratio * const ratio, + gr_info * const cod_info, + FLOAT * l3_xmin); + +int calc_noise (const lame_internal_flags * const gfc, + const gr_info * const cod_info, + const FLOAT * l3_xmin, + FLOAT * distort, + calc_noise_result * const res, + calc_noise_data * prev_noise); + +#if defined(HAVE_GTK) +void set_frame_pinfo (lame_global_flags *gfp, + III_psy_ratio ratio[2][2]); +#endif + + + + +/* takehiro.c */ + +int count_bits (lame_internal_flags * const gfc, const FLOAT * const xr, + gr_info * const cod_info, calc_noise_data* prev_noise); +int noquant_count_bits (lame_internal_flags * const gfc, + gr_info * const cod_info, calc_noise_data* prev_noise); + + +void best_huffman_divide (const lame_internal_flags * const gfc, + gr_info * const cod_info); + +void best_scalefac_store (const lame_internal_flags * gfc, const int gr, const int ch, + III_side_info_t * const l3_side); + +int scale_bitcount (gr_info * const cod_info); +int scale_bitcount_lsf (const lame_internal_flags *gfp, + gr_info * const cod_info); + +void huffman_init (lame_internal_flags * const gfc); + +void quantize_init (lame_internal_flags * const gfc); + +void init_xrpow_core_init (lame_internal_flags * const gfc); + +FLOAT athAdjust( FLOAT a, FLOAT x, FLOAT athFloor ); + +#define LARGE_BITS 100000 + +#endif /* LAME_QUANTIZE_PVT_H */ + diff --git a/lame-3.97/libmp3lame/reservoir.c b/lame-3.97/libmp3lame/reservoir.c new file mode 100644 index 0000000..cca674a --- /dev/null +++ b/lame-3.97/libmp3lame/reservoir.c @@ -0,0 +1,297 @@ +/* + * bit reservoir source file + * + * Copyright (c) 1999-2000 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: reservoir.c,v 1.29.2.2 2005/11/26 18:37:34 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "bitstream.h" +#include "reservoir.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/* + ResvFrameBegin: + Called (repeatedly) at the beginning of a frame. Updates the maximum + size of the reservoir, and checks to make sure main_data_begin + was set properly by the formatter +*/ + +/* + * Background information: + * + * This is the original text from the ISO standard. Because of + * sooo many bugs and irritations correcting comments are added + * in brackets []. A '^W' means you should remove the last word. + * + * 1) The following rule can be used to calculate the maximum + * number of bits used for one granule [^W frame]: + * At the highest possible bitrate of Layer III (320 kbps + * per stereo signal [^W^W^W], 48 kHz) the frames must be of + * [^W^W^W are designed to have] constant length, i.e. + * one buffer [^W^W the frame] length is: + * + * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte + * + * This value is used as the maximum buffer per channel [^W^W] at + * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps + * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit + * [per granule and channel] at 48 kHz sampling frequency. + * This means that there is a maximum deviation (short time buffer + * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps. + * The actual deviation is equal to the number of bytes [with the + * meaning of octets] denoted by the main_data_end offset pointer. + * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits + * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits]. + * ... The xchange of buffer bits between the left and right channel + * is allowed without restrictions [exception: dual channel]. + * Because of the [constructed] constraint on the buffer size + * main_data_end is always set to 0 in the case of bit_rate_index==14, + * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case + * all data are allocated between adjacent header [^W sync] words + * [, i.e. there is no buffering at all]. + */ + +int +ResvFrameBegin(lame_global_flags *gfp, int *mean_bits) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int fullFrameBits; + int resvLimit; + int maxmp3buf; + III_side_info_t *l3_side = &gfc->l3_side; + int frameLength; + + frameLength = getframebits(gfp); + *mean_bits = (frameLength - gfc->sideinfo_len * 8) / gfc->mode_gr; + +/* + * Meaning of the variables: + * resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1)) + * Number of bits can be stored in previous frame(s) due to + * counter size constaints + * maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5)) + * Number of bits allowed to encode one frame (you can take 8*511 bit + * from the bit reservoir and at most 8*1440 bit from the current + * frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible + * value for MPEG-1 and -2) + * + * maximum allowed granule/channel size times 4 = 8*2047 bits., + * so this is the absolute maximum supported by the format. + * + * + * fullFrameBits: maximum number of bits available for encoding + * the current frame. + * + * mean_bits: target number of bits per granule. + * + * frameLength: + * + * gfc->ResvMax: maximum allowed reservoir + * + * gfc->ResvSize: current reservoir size + * + * l3_side->resvDrain_pre: + * ancillary data to be added to previous frame: + * (only usefull in VBR modes if it is possible to have + * maxmp3buf < fullFrameBits)). Currently disabled, + * see #define NEW_DRAIN + * + * l3_side->resvDrain_post: + * ancillary data to be added to this frame: + * + */ + + /* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */ + resvLimit = (8*256)*gfc->mode_gr-8; + + /* maximum allowed frame size. dont use more than this number of + bits, even if the frame has the space for them: */ + if (gfp->brate > 320) { + /* in freeformat the buffer is constant*/ + maxmp3buf = 8*((int)((gfp->brate*1000)/(gfp->out_samplerate / (FLOAT)1152)/8 +.5)); + } else { + /*all mp3 decoders should have enough buffer to handle this value: size of a 320kbps 32kHz frame*/ + maxmp3buf = 8*1440; + + /* Bouvigne suggests this more lax interpretation of the ISO doc + instead of using 8*960. */ + if (gfp->strict_ISO) + maxmp3buf = 8*((int)(320000/(gfp->out_samplerate / (FLOAT)1152)/8 +.5)); + } + + gfc->ResvMax = maxmp3buf - frameLength; + if (gfc->ResvMax > resvLimit) + gfc->ResvMax = resvLimit; + if (gfc->ResvMax < 0 || gfp->disable_reservoir) + gfc->ResvMax = 0; + + fullFrameBits + = *mean_bits * gfc->mode_gr + Min ( gfc->ResvSize, gfc->ResvMax ); + + if (fullFrameBits > maxmp3buf) + fullFrameBits = maxmp3buf; + + assert ( 0 == gfc->ResvMax % 8 ); + assert ( gfc->ResvMax >= 0 ); + + l3_side->resvDrain_pre = 0; +#ifdef HAVE_GTK + if (gfc->pinfo != NULL) { + gfc->pinfo->mean_bits = *mean_bits / 2; /* expected bits per channel per granule [is this also right for mono/stereo, MPEG-1/2 ?] */ + gfc->pinfo->resvsize = gfc->ResvSize; + } +#endif + + return fullFrameBits; +} + + +/* + ResvMaxBits + returns targ_bits: target number of bits to use for 1 granule + extra_bits: amount extra available from reservoir + Mark Taylor 4/99 +*/ +void ResvMaxBits(lame_global_flags *gfp, int mean_bits, int *targ_bits, int *extra_bits, int cbr) +{ + lame_internal_flags *gfc=gfp->internal_flags; + int add_bits; + int ResvSize = gfc->ResvSize, ResvMax = gfc->ResvMax; + + /* conpensate the saved bits used in the 1st granule */ + if (cbr) + ResvSize += mean_bits; + + if (gfc->substep_shaping & 1) + ResvMax *= 0.9; + + *targ_bits = mean_bits ; + + /* extra bits if the reservoir is almost full */ + if (ResvSize*10 > ResvMax*9) { + add_bits= ResvSize - (ResvMax * 9) / 10; + *targ_bits += add_bits; + gfc->substep_shaping |= 0x80; + }else { + add_bits =0 ; + gfc->substep_shaping &= 0x7f; + /* build up reservoir. this builds the reservoir a little slower + * than FhG. It could simple be mean_bits/15, but this was rigged + * to always produce 100 (the old value) at 128kbs */ + /* *targ_bits -= (int) (mean_bits/15.2);*/ + if (!gfp->disable_reservoir && !(gfc->substep_shaping & 1)) + *targ_bits -= .1*mean_bits; + } + + + /* amount from the reservoir we are allowed to use. ISO says 6/10 */ + *extra_bits = + (ResvSize < (gfc->ResvMax*6)/10 ? ResvSize : (gfc->ResvMax*6)/10); + *extra_bits -= add_bits; + + if (*extra_bits < 0) *extra_bits=0; + + +} + +/* + ResvAdjust: + Called after a granule's bit allocation. Readjusts the size of + the reservoir to reflect the granule's usage. +*/ +void +ResvAdjust(lame_internal_flags *gfc,gr_info *gi) +{ + gfc->ResvSize -= gi->part2_3_length + gi->part2_length; +} + + +/* + ResvFrameEnd: + Called after all granules in a frame have been allocated. Makes sure + that the reservoir size is within limits, possibly by adding stuffing + bits. +*/ +void +ResvFrameEnd(lame_internal_flags *gfc, int mean_bits) +{ + int stuffingBits; + int over_bits; + III_side_info_t *l3_side = &gfc->l3_side; + + + gfc->ResvSize += mean_bits * gfc->mode_gr; + stuffingBits=0; + l3_side->resvDrain_post = 0; + l3_side->resvDrain_pre = 0; + + /* we must be byte aligned */ + if ( (over_bits = gfc->ResvSize % 8) != 0 ) + stuffingBits += over_bits; + + + over_bits = (gfc->ResvSize - stuffingBits) - gfc->ResvMax; + if (over_bits > 0) { + assert ( 0 == over_bits % 8 ); + assert ( over_bits >= 0 ); + stuffingBits += over_bits; + } + + +#undef NEW_DRAIN +#ifdef NEW_DRAIN + /* drain as many bits as possible into previous frame ancillary data + * In particular, in VBR mode ResvMax may have changed, and we have + * to make sure main_data_begin does not create a reservoir bigger + * than ResvMax mt 4/00*/ + { + int mdb_bytes = Min(l3_side->main_data_begin*8,stuffingBits)/8; + l3_side->resvDrain_pre += 8*mdb_bytes; + stuffingBits -= 8*mdb_bytes; + gfc->ResvSize -= 8*mdb_bytes; + l3_side->main_data_begin -= mdb_bytes; + + + /* drain just enough to be byte aligned. The remaining bits will + * be added to the reservoir, and we will deal with them next frame. + * If the next frame is at a lower bitrate, it may have a larger ResvMax, + * and we will not have to waste these bits! mt 4/00 */ + assert ( stuffingBits >= 0 ); + l3_side->resvDrain_post += (stuffingBits % 8); + gfc->ResvSize -= stuffingBits % 8; + } +#else + /* drain the rest into this frames ancillary data*/ + l3_side->resvDrain_post += stuffingBits; + gfc->ResvSize -= stuffingBits; +#endif + + return; +} + + + diff --git a/lame-3.97/libmp3lame/reservoir.h b/lame-3.97/libmp3lame/reservoir.h new file mode 100644 index 0000000..7b63c64 --- /dev/null +++ b/lame-3.97/libmp3lame/reservoir.h @@ -0,0 +1,31 @@ +/* + * bit reservoir include file + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_RESERVOIR_H +#define LAME_RESERVOIR_H + +int ResvFrameBegin(lame_global_flags *gfp, int *mean_bits); +void ResvMaxBits(lame_global_flags *gfp, int mean_bits, int *targ_bits, int *max_bits, int cbr); +void ResvAdjust(lame_internal_flags *gfc,gr_info *gi); +void ResvFrameEnd(lame_internal_flags *gfc, int mean_bits ); + +#endif /* LAME_RESERVOIR_H */ + diff --git a/lame-3.97/libmp3lame/set_get.c b/lame-3.97/libmp3lame/set_get.c new file mode 100644 index 0000000..83c2997 --- /dev/null +++ b/lame-3.97/libmp3lame/set_get.c @@ -0,0 +1,1922 @@ +/* -*- mode: C; mode: fold -*- */ +/* + * set/get functions for lame_global_flags + * + * Copyright (c) 2001-2005 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: set_get.c,v 1.71.2.2 2005/11/26 18:37:34 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "bitstream.h" /* because of compute_flushbits */ + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + + +#include "set_get.h" + + +/* + * input stream description + */ + +/* number of samples */ +/* it's unlikely for this function to return an error */ +int +lame_set_num_samples( lame_global_flags* gfp, + unsigned long num_samples) +{ + /* default = 2^32-1 */ + + gfp->num_samples = num_samples; + + return 0; +} + +unsigned long +lame_get_num_samples( const lame_global_flags* gfp ) +{ + return gfp->num_samples; +} + + +/* input samplerate */ +int +lame_set_in_samplerate( lame_global_flags* gfp, + int in_samplerate ) +{ + /* input sample rate in Hz, default = 44100 Hz */ + gfp->in_samplerate = in_samplerate; + + return 0; +} + +int +lame_get_in_samplerate( const lame_global_flags* gfp ) +{ + return gfp->in_samplerate; +} + + +/* number of channels in input stream */ +int +lame_set_num_channels( lame_global_flags* gfp, + int num_channels ) +{ + /* default = 2 */ + + if ( 2 < num_channels || 0 == num_channels ) + return -1; /* we don't support more than 2 channels */ + + gfp->num_channels = num_channels; + + return 0; +} + +int +lame_get_num_channels( const lame_global_flags* gfp ) +{ + return gfp->num_channels; +} + + +/* scale the input by this amount before encoding (not used for decoding) */ +int +lame_set_scale( lame_global_flags* gfp, + float scale ) +{ + /* default = 0 */ + gfp->scale = scale; + + return 0; +} + +float +lame_get_scale( const lame_global_flags* gfp ) +{ + return gfp->scale; +} + + +/* scale the channel 0 (left) input by this amount before + encoding (not used for decoding) */ +int +lame_set_scale_left( lame_global_flags* gfp, + float scale ) +{ + /* default = 0 */ + gfp->scale_left = scale; + + return 0; +} + +float +lame_get_scale_left( const lame_global_flags* gfp ) +{ + return gfp->scale_left; +} + + +/* scale the channel 1 (right) input by this amount before + encoding (not used for decoding) */ +int +lame_set_scale_right( lame_global_flags* gfp, + float scale ) +{ + /* default = 0 */ + gfp->scale_right = scale; + + return 0; +} + +float +lame_get_scale_right( const lame_global_flags* gfp ) +{ + return gfp->scale_right; +} + + +/* output sample rate in Hz */ +int +lame_set_out_samplerate( lame_global_flags* gfp, + int out_samplerate ) +{ + /* + * default = 0: LAME picks best value based on the amount + * of compression + * MPEG only allows: + * MPEG1 32, 44.1, 48khz + * MPEG2 16, 22.05, 24 + * MPEG2.5 8, 11.025, 12 + * + * (not used by decoding routines) + */ + gfp->out_samplerate = out_samplerate; + + return 0; +} + +int +lame_get_out_samplerate( const lame_global_flags* gfp ) +{ + return gfp->out_samplerate; +} + + + + +/* + * general control parameters + */ + +/* collect data for an MP3 frame analzyer */ +int +lame_set_analysis( lame_global_flags* gfp, + int analysis ) +{ + /* default = 0 */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > analysis || 1 < analysis ) + return -1; + + gfp->analysis = analysis; + + return 0; +} + +int +lame_get_analysis( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->analysis && 1 >= gfp->analysis ); + + return gfp->analysis; +} + + +/* write a Xing VBR header frame */ +int +lame_set_bWriteVbrTag( lame_global_flags* gfp, + int bWriteVbrTag ) +{ + /* default = 1 (on) for VBR/ABR modes, 0 (off) for CBR mode */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > bWriteVbrTag || 1 < bWriteVbrTag ) + return -1; + + gfp->bWriteVbrTag = bWriteVbrTag; + + return 0; +} + +int +lame_get_bWriteVbrTag( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->bWriteVbrTag && 1 >= gfp->bWriteVbrTag ); + + return gfp->bWriteVbrTag; +} + + + +/* decode only, use lame/mpglib to convert mp3 to wav */ +int +lame_set_decode_only( lame_global_flags* gfp, + int decode_only ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > decode_only || 1 < decode_only ) + return -1; + + gfp->decode_only = decode_only; + + return 0; +} + +int +lame_get_decode_only( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->decode_only && 1 >= gfp->decode_only ); + + return gfp->decode_only; +} + + +/* encode a Vorbis .ogg file */ +/* DEPRECATED */ +int +lame_set_ogg( lame_global_flags* gfp, + int ogg ) +{ + return -1; +} + +int +lame_get_ogg( const lame_global_flags* gfp ) +{ + return 0; +} + + +/* + * Internal algorithm selection. + * True quality is determined by the bitrate but this variable will effect + * quality by selecting expensive or cheap algorithms. + * quality=0..9. 0=best (very slow). 9=worst. + * recommended: 3 near-best quality, not too slow + * 5 good quality, fast + * 7 ok quality, really fast + */ +int +lame_set_quality( lame_global_flags* gfp, + int quality ) +{ + gfp->quality = quality; + + return 0; +} + +int +lame_get_quality( const lame_global_flags* gfp ) +{ + return gfp->quality; +} + + +/* mode = STEREO, JOINT_STEREO, DUAL_CHANNEL (not supported), MONO */ +int +lame_set_mode( lame_global_flags* gfp, + MPEG_mode mode ) +{ + /* default: lame chooses based on compression ratio and input channels */ + + if( 0 > mode || MAX_INDICATOR <= mode ) + return -1; /* Unknown MPEG mode! */ + + gfp->mode = mode; + + return 0; +} + +MPEG_mode +lame_get_mode( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->mode && MAX_INDICATOR > gfp->mode ); + + return gfp->mode; +} + + +/* Us a M/S mode with a switching threshold based on compression ratio */ +/* DEPRECATED */ +int +lame_set_mode_automs( lame_global_flags* gfp, + int mode_automs ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > mode_automs || 1 < mode_automs ) + return -1; + + lame_set_mode( gfp, JOINT_STEREO ); + + return 0; +} + +int +lame_get_mode_automs( const lame_global_flags* gfp ) +{ + return 1; +} + + +/* + * Force M/S for all frames. For testing only. + * Requires mode = 1. + */ +int +lame_set_force_ms( lame_global_flags* gfp, + int force_ms ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > force_ms || 1 < force_ms ) + return -1; + + gfp->force_ms = force_ms; + + return 0; +} + +int +lame_get_force_ms( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->force_ms && 1 >= gfp->force_ms ); + + return gfp->force_ms; +} + + +/* Use free_format. */ +int +lame_set_free_format( lame_global_flags* gfp, + int free_format ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > free_format || 1 < free_format ) + return -1; + + gfp->free_format = free_format; + + return 0; +} + +int +lame_get_free_format( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->free_format && 1 >= gfp->free_format ); + + return gfp->free_format; +} + + + +/* Perform ReplayGain analysis */ +int +lame_set_findReplayGain( lame_global_flags* gfp, + int findReplayGain ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > findReplayGain || 1 < findReplayGain ) + return -1; + + gfp->findReplayGain = findReplayGain; + + return 0; +} + +int +lame_get_findReplayGain( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->findReplayGain && 1 >= gfp->findReplayGain); + + return gfp->findReplayGain; +} + + +/* Decode on the fly. Find the peak sample. If ReplayGain analysis is + enabled then perform it on the decoded data. */ +int +lame_set_decode_on_the_fly( lame_global_flags* gfp, + int decode_on_the_fly ) +{ +#ifndef DECODE_ON_THE_FLY + return -1; +#else + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > decode_on_the_fly || 1 < decode_on_the_fly ) + return -1; + + gfp->decode_on_the_fly = decode_on_the_fly; + + return 0; +#endif +} + +int +lame_get_decode_on_the_fly( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->decode_on_the_fly && 1 >= gfp->decode_on_the_fly ); + + return gfp->decode_on_the_fly; +} + +/* DEPRECATED. same as lame_set_decode_on_the_fly() */ +int +lame_set_findPeakSample( lame_global_flags* gfp, + int arg ) +{ + return lame_set_decode_on_the_fly(gfp, arg); +} + +int +lame_get_findPeakSample( const lame_global_flags* gfp ) +{ + return lame_get_decode_on_the_fly(gfp); +} + +/* DEPRECATED. same as lame_set_findReplayGain() */ +int +lame_set_ReplayGain_input( lame_global_flags* gfp, + int arg ) +{ + return lame_set_findReplayGain(gfp, arg); +} + +int +lame_get_ReplayGain_input( const lame_global_flags* gfp ) +{ + return lame_get_findReplayGain(gfp); +} + +/* DEPRECATED. same as lame_set_decode_on_the_fly() && + lame_set_findReplayGain() */ +int +lame_set_ReplayGain_decode( lame_global_flags* gfp, + int arg ) +{ + if( lame_set_decode_on_the_fly(gfp, arg) < 0 || + lame_set_findReplayGain(gfp, arg) < 0) + return -1; + else + return 0; +} + +int +lame_get_ReplayGain_decode( const lame_global_flags* gfp ) +{ + if (lame_get_decode_on_the_fly(gfp) > 0 && + lame_get_findReplayGain(gfp) > 0) + return 1; + else + return 0; +} + + +/* set and get some gapless encoding flags */ + +int +lame_set_nogap_total( lame_global_flags* gfp, + int the_nogap_total ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nogap_total = the_nogap_total; + return 0; +} + +int +lame_get_nogap_total( const lame_global_flags* gfp ) +{ + return gfp->internal_flags->nogap_total; +} + +int +lame_set_nogap_currentindex( lame_global_flags* gfp, + int the_nogap_index ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nogap_current = the_nogap_index; + return 0; +} + +int +lame_get_nogap_currentindex( const lame_global_flags* gfp ) +{ + return gfp->internal_flags->nogap_current; +} + + +/* message handlers */ +int +lame_set_errorf( lame_global_flags* gfp, + void (*func)( const char*, va_list ) ) +{ + gfp->report.errorf = func; + + return 0; +} + +int +lame_set_debugf( lame_global_flags* gfp, + void (*func)( const char*, va_list ) ) +{ + gfp->report.debugf = func; + + return 0; +} + +int +lame_set_msgf( lame_global_flags* gfp, + void (*func)( const char *, va_list ) ) +{ + gfp->report.msgf = func; + + return 0; +} + + +/* + * Set one of + * - brate + * - compression ratio. + * + * Default is compression ratio of 11. + */ +int +lame_set_brate( lame_global_flags* gfp, + int brate ) +{ + gfp->brate = brate; + + if (brate > 320) { + gfp->disable_reservoir = 1; + } + + return 0; +} + +int +lame_get_brate( const lame_global_flags* gfp ) +{ + return gfp->brate; +} + +int +lame_set_compression_ratio( lame_global_flags* gfp, + float compression_ratio ) +{ + gfp->compression_ratio = compression_ratio; + + return 0; +} + +float +lame_get_compression_ratio( const lame_global_flags* gfp ) +{ + return gfp->compression_ratio; +} + + + + +/* + * frame parameters + */ + +/* Mark as copyright protected. */ +int +lame_set_copyright( lame_global_flags* gfp, + int copyright ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > copyright || 1 < copyright ) + return -1; + + gfp->copyright = copyright; + + return 0; +} + +int +lame_get_copyright( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->copyright && 1 >= gfp->copyright ); + + return gfp->copyright; +} + + +/* Mark as original. */ +int +lame_set_original( lame_global_flags* gfp, + int original ) +{ + /* default = 1 (enabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > original || 1 < original ) + return -1; + + gfp->original = original; + + return 0; +} + +int +lame_get_original( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->original && 1 >= gfp->original ); + + return gfp->original; +} + + +/* + * error_protection. + * Use 2 bytes from each frame for CRC checksum. + */ +int +lame_set_error_protection( lame_global_flags* gfp, + int error_protection ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > error_protection || 1 < error_protection ) + return -1; + + gfp->error_protection = error_protection; + + return 0; +} + +int +lame_get_error_protection( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->error_protection && 1 >= gfp->error_protection ); + + return gfp->error_protection; +} + + +/* + * padding_type. + * PAD_NO = pad no frames + * PAD_ALL = pad all frames + * PAD_ADJUST = adjust padding + */ +int +lame_set_padding_type( lame_global_flags* gfp, + Padding_type padding_type ) +{ + return 0; +} + +Padding_type +lame_get_padding_type( const lame_global_flags* gfp ) +{ + return PAD_ADJUST; +} + + +/* MP3 'private extension' bit. Meaningless. */ +int +lame_set_extension( lame_global_flags* gfp, + int extension ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > extension || 1 < extension ) + return -1; + + gfp->extension = extension; + + return 0; +} + +int +lame_get_extension( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->extension && 1 >= gfp->extension ); + + return gfp->extension; +} + + +/* Enforce strict ISO compliance. */ +int +lame_set_strict_ISO( lame_global_flags* gfp, + int strict_ISO ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > strict_ISO || 1 < strict_ISO ) + return -1; + + gfp->strict_ISO = strict_ISO; + + return 0; +} + +int +lame_get_strict_ISO( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->strict_ISO && 1 >= gfp->strict_ISO ); + + return gfp->strict_ISO; +} + + + + +/******************************************************************** + * quantization/noise shaping + ***********************************************************************/ + +/* Disable the bit reservoir. For testing only. */ +int +lame_set_disable_reservoir( lame_global_flags* gfp, + int disable_reservoir ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > disable_reservoir || 1 < disable_reservoir ) + return -1; + + gfp->disable_reservoir = disable_reservoir; + + return 0; +} + +int +lame_get_disable_reservoir( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->disable_reservoir && 1 >= gfp->disable_reservoir ); + + return gfp->disable_reservoir; +} + + + + +int +lame_set_experimentalX( lame_global_flags* gfp, + int experimentalX ) +{ + lame_set_quant_comp( gfp, experimentalX); + lame_set_quant_comp_short( gfp, experimentalX); + + return 0; +} + +int +lame_get_experimentalX( const lame_global_flags* gfp ) +{ + return lame_get_quant_comp( gfp); +} + + +/* Select a different "best quantization" function. default = 0 */ +int +lame_set_quant_comp( lame_global_flags* gfp, + int quant_type ) +{ + gfp->quant_comp + = quant_type; + + return 0; +} + +int +lame_get_quant_comp( const lame_global_flags* gfp ) +{ + return gfp->quant_comp; +} + + +/* Select a different "best quantization" function. default = 0 */ +int +lame_set_quant_comp_short( lame_global_flags* gfp, + int quant_type ) +{ + gfp->quant_comp_short = quant_type; + + return 0; +} + +int +lame_get_quant_comp_short( const lame_global_flags* gfp ) +{ + return gfp->quant_comp_short; +} + + +/* Another experimental option. For testing only. */ +int +lame_set_experimentalY( lame_global_flags* gfp, + int experimentalY ) +{ + gfp->experimentalY = experimentalY; + + return 0; +} + +int +lame_get_experimentalY( const lame_global_flags* gfp ) +{ + return gfp->experimentalY; +} + + +int +lame_set_experimentalZ( lame_global_flags* gfp, + int experimentalZ ) +{ + return 0; +} + +int +lame_get_experimentalZ( const lame_global_flags* gfp ) +{ + return 0; +} + + +/* Naoki's psycho acoustic model. */ +int +lame_set_exp_nspsytune( lame_global_flags* gfp, + int exp_nspsytune ) +{ + /* default = 0 (disabled) */ + + gfp->exp_nspsytune = exp_nspsytune; + + return 0; +} + +int +lame_get_exp_nspsytune( const lame_global_flags* gfp ) +{ + return gfp->exp_nspsytune; +} + + +int +lame_set_exp_nspsytune2_int( lame_global_flags* gfp, + int adr,int val) +{ + int ret = gfp->exp_nspsytune2.integer[adr]; + + gfp->exp_nspsytune2.integer[adr] = val; + + return ret; +} + + +float +lame_set_exp_nspsytune2_real( lame_global_flags* gfp, + int adr,float val) +{ + float ret = gfp->exp_nspsytune2.real[adr]; + + gfp->exp_nspsytune2.real[adr] = val; + + return ret; +} + + +void * +lame_set_exp_nspsytune2_pointer( lame_global_flags* gfp, + int adr,void *val) +{ + void *ret = gfp->exp_nspsytune2.pointer[adr]; + + gfp->exp_nspsytune2.pointer[adr] = val; + + return ret; +} + + +/******************************************************************** + * VBR control + ***********************************************************************/ + +/* Types of VBR. default = vbr_off = CBR */ +int +lame_set_VBR( lame_global_flags* gfp, + vbr_mode VBR ) +{ + if( 0 > VBR || vbr_max_indicator <= VBR ) + return -1; /* Unknown VBR mode! */ + + gfp->VBR = VBR; + + return 0; +} + +vbr_mode +lame_get_VBR( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->VBR && vbr_max_indicator > gfp->VBR ); + + return gfp->VBR; +} + + +/* + * VBR quality level. + * 0 = highest + * 9 = lowest + */ +int +lame_set_VBR_q( lame_global_flags* gfp, + int VBR_q ) +{ + /* XXX: This should be an enum */ + /* to whoever added this note: why should it be an enum? + do you want to call a specific setting by name? + say VBR quality level red? */ + /* No, but VBR_Q_HIGHEST, VBR_Q_HIGH, ..., VBR_Q_MID, ... + VBR_Q_LOW, VBR_Q_LOWEST (or something like that )and a + VBR_Q_DEFAULT, which aliases the default setting of + e.g. VBR_Q_MID. */ + + + if( 0 > VBR_q || 10 <= VBR_q ) + return -1; /* Unknown VBR quality level! */ + + gfp->VBR_q = VBR_q; +/* lame_set_ATHcurve(gfp, VBR_q); +*/ + return 0; +} + +int +lame_get_VBR_q( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->VBR_q && 10 > gfp->VBR_q ); + + return gfp->VBR_q; +} + + +/* Ignored except for VBR = vbr_abr (ABR mode) */ +int +lame_set_VBR_mean_bitrate_kbps( lame_global_flags* gfp, + int VBR_mean_bitrate_kbps ) +{ + gfp->VBR_mean_bitrate_kbps = VBR_mean_bitrate_kbps; + + return 0; +} + +int +lame_get_VBR_mean_bitrate_kbps( const lame_global_flags* gfp ) +{ + return gfp->VBR_mean_bitrate_kbps; +} + +int +lame_set_VBR_min_bitrate_kbps( lame_global_flags* gfp, + int VBR_min_bitrate_kbps ) +{ + gfp->VBR_min_bitrate_kbps = VBR_min_bitrate_kbps; + + return 0; +} + +int +lame_get_VBR_min_bitrate_kbps( const lame_global_flags* gfp ) +{ + return gfp->VBR_min_bitrate_kbps; +} + +int +lame_set_VBR_max_bitrate_kbps( lame_global_flags* gfp, + int VBR_max_bitrate_kbps ) +{ + gfp->VBR_max_bitrate_kbps = VBR_max_bitrate_kbps; + + return 0; +} + +int +lame_get_VBR_max_bitrate_kbps( const lame_global_flags* gfp ) +{ + return gfp->VBR_max_bitrate_kbps; +} + + +/* + * Strictly enforce VBR_min_bitrate. + * Normally it will be violated for analog silence. + */ +int +lame_set_VBR_hard_min( lame_global_flags* gfp, + int VBR_hard_min ) +{ + /* default = 0 (disabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > VBR_hard_min || 1 < VBR_hard_min ) + return -1; + + gfp->VBR_hard_min = VBR_hard_min; + + return 0; +} + +int +lame_get_VBR_hard_min( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->VBR_hard_min && 1 >= gfp->VBR_hard_min ); + + return gfp->VBR_hard_min; +} + + +/******************************************************************** + * Filtering control + ***********************************************************************/ + +/* + * Freqency in Hz to apply lowpass. + * 0 = default = lame chooses + * -1 = disabled + */ +int +lame_set_lowpassfreq( lame_global_flags* gfp, + int lowpassfreq ) +{ + gfp->lowpassfreq = lowpassfreq; + + return 0; +} + +int +lame_get_lowpassfreq( const lame_global_flags* gfp ) +{ + return gfp->lowpassfreq; +} + + +/* + * Width of transition band (in Hz). + * default = one polyphase filter band + */ +int +lame_set_lowpasswidth( lame_global_flags* gfp, + int lowpasswidth ) +{ + gfp->lowpasswidth = lowpasswidth; + + return 0; +} + +int +lame_get_lowpasswidth( const lame_global_flags* gfp ) +{ + return gfp->lowpasswidth; +} + + +/* + * Frequency in Hz to apply highpass. + * 0 = default = lame chooses + * -1 = disabled + */ +int +lame_set_highpassfreq( lame_global_flags* gfp, + int highpassfreq ) +{ + gfp->highpassfreq = highpassfreq; + + return 0; +} + +int +lame_get_highpassfreq( const lame_global_flags* gfp ) +{ + return gfp->highpassfreq; +} + + +/* + * Width of transition band (in Hz). + * default = one polyphase filter band + */ +int +lame_set_highpasswidth( lame_global_flags* gfp, + int highpasswidth ) +{ + gfp->highpasswidth = highpasswidth; + + return 0; +} + +int +lame_get_highpasswidth( const lame_global_flags* gfp ) +{ + return gfp->highpasswidth; +} + + + + +/* + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + */ + + +int +lame_set_psy_model( lame_global_flags* gfp, + int psy ) +{ + gfp->psymodel = psy; + return 0; +} + +int +lame_get_psy_model( const lame_global_flags* gfp ) +{ + return gfp->psymodel; +} + +/* Adjust masking values. */ +int +lame_set_maskingadjust( lame_global_flags* gfp, + float adjust ) +{ + gfp->maskingadjust = adjust; + return 0; +} + +float +lame_get_maskingadjust( const lame_global_flags* gfp ) +{ + return gfp->maskingadjust; +} + +int +lame_set_maskingadjust_short( lame_global_flags* gfp, + float adjust ) +{ + gfp->maskingadjust_short = adjust; + return 0; +} + +float +lame_get_maskingadjust_short( const lame_global_flags* gfp ) +{ + return gfp->maskingadjust_short; +} + +/* Only use ATH for masking. */ +int +lame_set_ATHonly( lame_global_flags* gfp, + int ATHonly ) +{ + gfp->ATHonly = ATHonly; + + return 0; +} + +int +lame_get_ATHonly( const lame_global_flags* gfp ) +{ + return gfp->ATHonly; +} + + +/* Only use ATH for short blocks. */ +int +lame_set_ATHshort( lame_global_flags* gfp, + int ATHshort ) +{ + gfp->ATHshort = ATHshort; + + return 0; +} + +int +lame_get_ATHshort( const lame_global_flags* gfp ) +{ + return gfp->ATHshort; +} + + +/* Disable ATH. */ +int +lame_set_noATH( lame_global_flags* gfp, + int noATH ) +{ + gfp->noATH = noATH; + + return 0; +} + +int +lame_get_noATH( const lame_global_flags* gfp ) +{ + return gfp->noATH; +} + + +/* Select ATH formula. */ +int +lame_set_ATHtype( lame_global_flags* gfp, + int ATHtype ) +{ + /* XXX: ATHtype should be converted to an enum. */ + gfp->ATHtype = ATHtype; + + return 0; +} + +int +lame_get_ATHtype( const lame_global_flags* gfp ) +{ + return gfp->ATHtype; +} + + +/* Select ATH formula 4 shape. */ +int +lame_set_ATHcurve( lame_global_flags* gfp, + float ATHcurve ) +{ + gfp->ATHcurve = ATHcurve; + + return 0; +} + +float +lame_get_ATHcurve( const lame_global_flags* gfp ) +{ + return gfp->ATHcurve; +} + + +/* Lower ATH by this many db. */ +int +lame_set_ATHlower( lame_global_flags* gfp, + float ATHlower ) +{ + gfp->ATHlower = -ATHlower / 10.0; + return 0; +} + +float +lame_get_ATHlower( const lame_global_flags* gfp ) +{ + return -gfp->ATHlower * 10.0; +} + + +/* Select ATH adaptive adjustment scheme. */ +int +lame_set_athaa_type( lame_global_flags* gfp, + int athaa_type ) +{ + gfp->athaa_type = athaa_type; + return 0; +} + +int +lame_get_athaa_type( const lame_global_flags* gfp ) +{ + return gfp->athaa_type; +} + + +/* Select the loudness approximation used by the ATH adaptive auto-leveling. */ +int +lame_set_athaa_loudapprox( lame_global_flags* gfp, + int athaa_loudapprox ) +{ + ERRORF(gfp->internal_flags, "--athaa-loudapprox is obsolete\n"); + return 0; +} + +int +lame_get_athaa_loudapprox( const lame_global_flags* gfp ) +{ + /* obsolete, the type known under number 2 is the only survival */ + return 2; +} + + +/* Adjust (in dB) the point below which adaptive ATH level adjustment occurs. */ +int +lame_set_athaa_sensitivity( lame_global_flags* gfp, + float athaa_sensitivity ) +{ + gfp->athaa_sensitivity = athaa_sensitivity; + + return 0; +} + +float +lame_get_athaa_sensitivity( const lame_global_flags* gfp ) +{ + return gfp->athaa_sensitivity; +} + + +/* Predictability limit (ISO tonality formula) */ +int +lame_set_cwlimit( lame_global_flags* gfp, + int cwlimit ) +{ + gfp->cwlimit = cwlimit; + + return 0; +} + +int +lame_get_cwlimit( const lame_global_flags* gfp ) +{ + return gfp->cwlimit; +} + + + +/* + * Allow blocktypes to differ between channels. + * default: + * 0 for jstereo => block types coupled + * 1 for stereo => block types may differ + */ +int +lame_set_allow_diff_short( lame_global_flags* gfp, + int allow_diff_short ) +{ + gfp->short_blocks = + allow_diff_short ? short_block_allowed : short_block_coupled; + + return 0; +} + +int +lame_get_allow_diff_short( const lame_global_flags* gfp ) +{ + if ( gfp->short_blocks == short_block_allowed ) + return 1; /* short blocks allowed to differ */ + else + return 0; /* not set, dispensed, forced or coupled */ +} + + +/* Use temporal masking effect */ +int +lame_set_useTemporal( lame_global_flags* gfp, + int useTemporal ) +{ + /* default = 1 (enabled) */ + + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > useTemporal || 1 < useTemporal ) + return -1; + + gfp->useTemporal = useTemporal; + + return 0; +} + +int +lame_get_useTemporal( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->useTemporal && 1 >= gfp->useTemporal ); + + return gfp->useTemporal; +} + + +/* Use inter-channel masking effect */ +int +lame_set_interChRatio( lame_global_flags* gfp, + float ratio ) +{ + /* default = 0.0 (no inter-channel maskin) */ + if (! (0 <= ratio && ratio <= 1.0)) + return -1; + + gfp->interChRatio = ratio; + + return 0; +} + +float +lame_get_interChRatio( const lame_global_flags* gfp ) +{ + assert( (0 <= gfp->interChRatio && gfp->interChRatio <= 1.0) || + (gfp->interChRatio == -1)); + + return gfp->interChRatio; +} + + +/* Use pseudo substep shaping method */ +int +lame_set_substep( lame_global_flags* gfp, + int method ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + /* default = 0.0 (no substep noise shaping) */ + if (! (0 <= method && method <= 7)) + return -1; + + gfc->substep_shaping = method; + return 0; +} + +int +lame_get_substep(const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + assert(0 <= gfc->substep_shaping && gfc->substep_shaping <= 7); + return gfc->substep_shaping; +} + +/* scalefactors scale */ +int +lame_set_sfscale( lame_global_flags* gfp, + int val ) +{ + if (val) + gfp->internal_flags->noise_shaping = 2; + else + gfp->internal_flags->noise_shaping = 1; + return 0; +} + +int +lame_get_sfscale(const lame_global_flags* gfp ) +{ + return (gfp->internal_flags->noise_shaping == 2); +} + +/* subblock gain */ +int +lame_set_subblock_gain(lame_global_flags *gfp, int sbgain) +{ + gfp->internal_flags->subblock_gain = sbgain; + return sbgain; +} + +int +lame_get_subblock_gain(const lame_global_flags * gfp) +{ + return gfp->internal_flags->subblock_gain; +} + + +/* Disable short blocks. */ +int +lame_set_no_short_blocks( lame_global_flags* gfp, + int no_short_blocks ) +{ + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > no_short_blocks || 1 < no_short_blocks ) + return -1; + + gfp->short_blocks = + no_short_blocks ? short_block_dispensed : short_block_allowed; + + return 0; +} + +int +lame_get_no_short_blocks( const lame_global_flags* gfp ) +{ + switch ( gfp->short_blocks ) { + default: + case short_block_not_set: return -1; + case short_block_dispensed: return 1; + case short_block_allowed: + case short_block_coupled: + case short_block_forced: return 0; + } +} + + +/* Force short blocks. */ +int +lame_set_force_short_blocks( lame_global_flags* gfp, + int short_blocks ) +{ + /* enforce disable/enable meaning, if we need more than two values + we need to switch to an enum to have an apropriate representation + of the possible meanings of the value */ + if ( 0 > short_blocks || 1 < short_blocks ) + return -1; + + if (short_blocks == 1) + gfp->short_blocks = short_block_forced; + else if (gfp->short_blocks == short_block_forced) + gfp->short_blocks = short_block_allowed; + + return 0; +} +int +lame_get_force_short_blocks( const lame_global_flags* gfp ) +{ + switch ( gfp->short_blocks ) { + default: + case short_block_not_set: return -1; + case short_block_dispensed: + case short_block_allowed: + case short_block_coupled: return 0; + case short_block_forced: return 1; + } +} + +int +lame_set_short_threshold_lrm( lame_global_flags* gfp, + float lrm) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nsPsy.attackthre = lrm; + return 0; +} + +float +lame_get_short_threshold_lrm( const lame_global_flags* gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->nsPsy.attackthre; +} + +int +lame_set_short_threshold_s( lame_global_flags* gfp, + float s) +{ + lame_internal_flags *gfc = gfp->internal_flags; + gfc->nsPsy.attackthre_s = s; + return 0; +} + +float +lame_get_short_threshold_s( const lame_global_flags* gfp) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->nsPsy.attackthre_s; +} + +int +lame_set_short_threshold( lame_global_flags* gfp, + float lrm, float s) +{ + lame_set_short_threshold_lrm(gfp, lrm); + lame_set_short_threshold_s(gfp, s); + return 0; +} + + +/* + * Input PCM is emphased PCM + * (for instance from one of the rarely emphased CDs). + * + * It is STRONGLY not recommended to use this, because psycho does not + * take it into account, and last but not least many decoders + * ignore these bits + */ +int +lame_set_emphasis( lame_global_flags* gfp, + int emphasis ) +{ + /* XXX: emphasis should be converted to an enum */ + if ( 0 > emphasis || 4 <= emphasis ) + return -1; + + gfp->emphasis = emphasis; + + return 0; +} + +int +lame_get_emphasis( const lame_global_flags* gfp ) +{ + assert( 0 <= gfp->emphasis && 4 > gfp->emphasis ); + + return gfp->emphasis; +} + + + + +/***************************************************************/ +/* internal variables, cannot be set... */ +/* provided because they may be of use to calling application */ +/***************************************************************/ + +/* MPEG version. + * 0 = MPEG-2 + * 1 = MPEG-1 + * (2 = MPEG-2.5) + */ +int +lame_get_version( const lame_global_flags* gfp ) +{ + return gfp->version; +} + + +/* Encoder delay. */ +int +lame_get_encoder_delay( const lame_global_flags* gfp ) +{ + return gfp->encoder_delay; +} + +/* padding added to the end of the input */ +int +lame_get_encoder_padding( const lame_global_flags* gfp ) +{ + return gfp->encoder_padding; +} + + +/* Size of MPEG frame. */ +int +lame_get_framesize( const lame_global_flags* gfp ) +{ + return gfp->framesize; +} + + +/* Number of frames encoded so far. */ +int +lame_get_frameNum( const lame_global_flags* gfp ) +{ + return gfp->frameNum; +} + +int +lame_get_mf_samples_to_encode( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->mf_samples_to_encode; +} + +int CDECL lame_get_size_mp3buffer( const lame_global_flags* gfp ) +{ + int size; + compute_flushbits(gfp,&size); + return size; +} + +int +lame_get_RadioGain( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->RadioGain; +} + +int +lame_get_AudiophileGain( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->AudiophileGain; +} + +float +lame_get_PeakSample( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return (float)gfc->PeakSample; +} + +int +lame_get_noclipGainChange( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->noclipGainChange; +} + +float +lame_get_noclipScale( const lame_global_flags* gfp ) +{ + lame_internal_flags *gfc = gfp->internal_flags; + return gfc->noclipScale; +} + + +/* + * LAME's estimate of the total number of frames to be encoded. + * Only valid if calling program set num_samples. + */ +int +lame_get_totalframes( const lame_global_flags* gfp ) +{ + int totalframes; + /* estimate based on user set num_samples: */ + totalframes = + 2 + ((double)gfp->num_samples * gfp->out_samplerate) / + ((double)gfp->in_samplerate * gfp->framesize); + + /* check to see if we underestimated totalframes */ + /* if (totalframes < gfp->frameNum) */ + /* totalframes = gfp->frameNum; */ + + return totalframes; +} + + + + + +int +lame_set_preset( lame_global_flags* gfp, int preset ) +{ + gfp->preset = preset; + return apply_preset(gfp, preset, 1); +} + + + +int +lame_set_asm_optimizations( lame_global_flags* gfp, int optim, int mode) +{ + mode = (mode == 1? 1 : 0); + switch (optim){ + case MMX: { + gfp->asm_optimizations.mmx = mode; + return optim; + } + case AMD_3DNOW: { + gfp->asm_optimizations.amd3dnow = mode; + return optim; + } + case SSE: { + gfp->asm_optimizations.sse = mode; + return optim; + } + default: return optim; + } +} + + + + + +/* + +UNDOCUMENTED, experimental settings. These routines are not prototyped +in lame.h. You should not use them, they are experimental and may +change. + +*/ + + +/* + * just another daily changing developer switch + */ +void lame_set_tune( lame_global_flags* gfp, float val ) +{ + gfp->tune_value_a = val; + gfp->tune = 1; +} + +void lame_set_ms_sparsing( lame_global_flags* gfp, int val ) +{ + gfp->sparsing = val; +} + +int lame_get_ms_sparsing( lame_global_flags* gfp ) +{ + return gfp->sparsing; +} + +void lame_set_ms_sparse_low( lame_global_flags* gfp, float val ) +{ + gfp->sparse_low = val; +} + +float lame_get_ms_sparse_low( lame_global_flags* gfp ) +{ + return gfp->sparse_low; +} + +void lame_set_ms_sparse_high( lame_global_flags* gfp, float val ) +{ + gfp->sparse_high = val; +} + +float lame_get_ms_sparse_high( lame_global_flags* gfp ) +{ + return gfp->sparse_high; +} + + + +/* Custom msfix hack */ +void +lame_set_msfix( lame_global_flags* gfp, double msfix ) +{ + /* default = 0 */ + gfp->msfix = msfix; +} + +float +lame_get_msfix( const lame_global_flags* gfp ) +{ + return gfp->msfix; +} + +int +lame_set_preset_expopts( lame_global_flags* gfp, int preset_expopts ) +{ + + return 0; +} + +int +lame_set_preset_notune( lame_global_flags* gfp, int preset_notune ) +{ + return 0; +} + diff --git a/lame-3.97/libmp3lame/set_get.h b/lame-3.97/libmp3lame/set_get.h new file mode 100644 index 0000000..50e1bd9 --- /dev/null +++ b/lame-3.97/libmp3lame/set_get.h @@ -0,0 +1,95 @@ +/* + * set_get.h -- Internal set/get definitions + * + * Copyright (C) 2003 Gabriel Bouvigne / Lame project + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __SET_GET_H__ +#define __SET_GET_H__ + +#include "lame.h" + + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(WIN32) +#undef CDECL +#define CDECL _cdecl +#else +#define CDECL +#endif + + +/* select psychoacoustic model */ +int CDECL lame_set_psy_model( lame_global_flags *, int); +int CDECL lame_get_psy_model( const lame_global_flags *); + + +void CDECL lame_set_ms_sparsing( lame_global_flags*, int ); +void CDECL lame_set_ms_sparse_low(lame_t , float ); +void CDECL lame_set_ms_sparse_high(lame_t , float ); + + +/* manage short blocks */ +int CDECL lame_set_short_threshold(lame_global_flags *, float, float); +int CDECL lame_set_short_threshold_lrm(lame_global_flags *, float); +float CDECL lame_get_short_threshold_lrm(const lame_global_flags *); +int CDECL lame_set_short_threshold_s(lame_global_flags *, float); +float CDECL lame_get_short_threshold_s(const lame_global_flags *); + + +int CDECL lame_set_vbr_smooth( lame_global_flags *, int); +int CDECL lame_get_vbr_smooth( const lame_global_flags *); + +int CDECL lame_set_maskingadjust( lame_global_flags *, float); +float CDECL lame_get_maskingadjust( const lame_global_flags *); + +int CDECL lame_set_maskingadjust_short( lame_global_flags *, float); +float CDECL lame_get_maskingadjust_short( const lame_global_flags *); + +/* select ATH formula 4 shape */ +int CDECL lame_set_ATHcurve(lame_global_flags *, float); +float CDECL lame_get_ATHcurve(const lame_global_flags *); + +int CDECL lame_set_preset_notune(lame_global_flags *, int); + +/* substep shaping method */ +int CDECL lame_set_substep(lame_global_flags *, int); +int CDECL lame_get_substep(const lame_global_flags *); + +/* scalefactors scale */ +int CDECL lame_set_sfscale(lame_global_flags *, int); +int CDECL lame_get_sfscale(const lame_global_flags *); + +/* subblock gain */ +int CDECL lame_set_subblock_gain(lame_global_flags *, int); +int CDECL lame_get_subblock_gain(const lame_global_flags *); + + + +/*presets*/ +int apply_preset(lame_global_flags*, int preset, int enforce); + + + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/lame-3.97/libmp3lame/tables.c b/lame-3.97/libmp3lame/tables.c new file mode 100644 index 0000000..c3ade9b --- /dev/null +++ b/lame-3.97/libmp3lame/tables.c @@ -0,0 +1,513 @@ +/* + * MPEG layer 3 tables source file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: tables.c,v 1.19 2002/12/08 17:02:25 takehiro Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include "util.h" +#include "tables.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +static const short t1HB[] = { + 1, 1, + 1, 0}; + +static const short t2HB[] = { + 1, 2, 1, + 3, 1, 1, + 3, 2, 0}; + +static const short t3HB[] = { + 3, 2, 1, + 1, 1, 1, + 3, 2, 0}; + +static const short t5HB[] = { + 1, 2, 6, 5, + 3, 1, 4, 4, + 7, 5, 7, 1, + 6, 1, 1, 0}; + +static const short t6HB[] = { + 7, 3, 5, 1, + 6, 2, 3, 2, + 5, 4, 4, 1, + 3, 3, 2, 0}; + +static const short t7HB[] = { + 1, 2,10,19,16,10, + 3, 3, 7,10, 5, 3, + 11, 4,13,17, 8, 4, + 12,11,18,15,11, 2, + 7, 6, 9,14, 3, 1, + 6, 4, 5, 3, 2, 0}; + +static const short t8HB[] = { + 3, 4, 6, 18,12, 5, + 5, 1, 2, 16, 9, 3, + 7, 3, 5, 14, 7, 3, + 19,17,15, 13,10, 4, + 13, 5, 8, 11, 5, 1, + 12, 4, 4, 1, 1, 0}; + +static const short t9HB[] = { + 7, 5, 9, 14, 15, 7, + 6, 4, 5, 5, 6, 7, + 7, 6, 8, 8, 8, 5, + 15, 6, 9, 10, 5, 1, + 11, 7, 9, 6, 4, 1, + 14, 4, 6, 2, 6, 0}; + +static const short t10HB[] = { + 1, 2, 10, 23, 35, 30, 12, 17, + 3, 3, 8, 12, 18, 21, 12, 7, + 11, 9, 15, 21, 32, 40, 19, 6, + 14,13, 22, 34, 46, 23, 18, 7, + 20,19, 33, 47, 27, 22, 9, 3, + 31,22, 41, 26, 21, 20, 5, 3, + 14,13, 10, 11, 16, 6, 5, 1, + 9, 8, 7, 8, 4, 4, 2, 0}; + +static const short t11HB[] = { + 3, 4, 10, 24, 34, 33, 21, 15, + 5, 3, 4, 10, 32, 17, 11, 10, + 11, 7, 13, 18, 30, 31, 20, 5, + 25,11, 19, 59, 27, 18, 12, 5, + 35,33, 31, 58, 30, 16, 7, 5, + 28,26, 32, 19, 17, 15, 8, 14, + 14,12, 9, 13, 14, 9, 4, 1, + 11, 4, 6, 6, 6, 3, 2, 0}; + +static const short t12HB[] = { + 9, 6, 16, 33, 41, 39, 38,26, + 7, 5, 6, 9, 23, 16, 26,11, + 17, 7, 11, 14, 21, 30, 10, 7, + 17, 10, 15, 12, 18, 28, 14, 5, + 32, 13, 22, 19, 18, 16, 9, 5, + 40, 17, 31, 29, 17, 13, 4, 2, + 27, 12, 11, 15, 10, 7, 4, 1, + 27, 12, 8, 12, 6, 3, 1, 0}; + +static const short t13HB[] = { + 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19, + 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14, + 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16, + 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14, + 35, 16, 60, 57, 97, 75,114, 91, 54, 73, 55, 41, 48, 53, 23, 24, + 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17, + 47, 45, 78, 74,115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15, + 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42, + 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16, + 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11, + 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22, + 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7, + 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5, + 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3, + 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2, + 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1}; + +static const short t15HB[] = { + 7, 12, 18, 53, 47, 76,124,108, 89,123,108,119,107, 81,122, 63, + 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36, + 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33, + 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29, + 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27, + 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38, + 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30, + 109, 53, 49, 94, 88, 75, 66,122, 91, 73, 56, 42, 64, 44, 21, 25, + 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20, + 71, 34, 67, 60, 58, 49, 88, 76, 67,106, 71, 54, 38, 39, 23, 15, + 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9, + 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11, + 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7, + 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3, + 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1, + 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0}; + +static const short t16HB[] = { + 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17, + 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9, + 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16, + 45, 21, 39, 69, 64,114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26, + 75, 36, 68, 65,115,101, 179,164, 155, 264, 246, 226, 395, 382, 362, 9, + 66, 30, 59, 56,102,185, 173,265, 142, 253, 232, 400, 388, 378, 445, 16, + 111, 54, 52,100,184,178, 160,133, 257, 244, 228, 217, 385, 366, 715, 10, + 98, 48, 91, 88,165,157, 148,261, 248, 407, 397, 372, 380, 889, 884, 8, + 85, 84, 81,159,156,143, 260,249, 427, 401, 392, 383, 727, 713, 708, 7, + 154, 76, 73,141,131,256, 245,426, 406, 394, 384, 735, 359, 710, 352, 11, + 139, 129, 67,125,247,233, 229,219, 393, 743, 737, 720, 885, 882, 439, 4, + 243, 120,118,115,227,223, 396,746, 742, 736, 721, 712, 706, 223, 436, 6, + 202, 224,222,218,216,389, 386,381, 364, 888, 443, 707, 440, 437,1728, 4, + 747, 211,210,208,370,379, 734,723, 714,1735, 883, 877, 876,3459, 865, 2, + 377, 369,102,187,726,722, 358,711, 709, 866,1734, 871,3458, 870, 434, 0, + 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3}; + +static const short t24HB[] = { + 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88, + 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42, + 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18, + 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16, + 147, 72, 69,135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14, + 263, 66,129,126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12, + 249,123,121,117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10, + 435,115,111,109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17, + 427,212,208,205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16, + 335,199,197,191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11, + 668,184,183,179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10, + 652,346,171,168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6, + 648,322,316,312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4, + 620,300,296,294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2, + 1033,280,278,274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0, + 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3}; + +static const short t32HB[] = { + 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3, + 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4}; + +static const short t33HB[] = { + 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3, + 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4}; + + +const char t1l[] = { + 1, 4, + 3, 5}; + +const char t2l[] = { + 1, 4, 7, + 4, 5, 7, + 6, 7, 8}; + +const char t3l[] = { + 2, 3, 7, + 4, 4, 7, + 6, 7, 8}; + +const char t5l[] = { + 1, 4, 7, 8, + 4, 5, 8, 9, + 7, 8, 9, 10, + 8, 8, 9, 10}; + +const char t6l[] = { + 3, 4, 6, 8, + 4, 4, 6, 7, + 5, 6, 7, 8, + 7, 7, 8, 9}; + +const char t7l[] = { + 1, 4, 7, 9, 9, 10, + 4, 6, 8, 9, 9, 10, + 7, 7, 9, 10, 10, 11, + 8, 9, 10, 11, 11, 11, + 8, 9, 10, 11, 11, 12, + 9, 10, 11, 12, 12, 12}; + +const char t8l[] = { + 2, 4, 7, 9, 9, 10, + 4, 4, 6, 10, 10, 10, + 7, 6, 8, 10, 10, 11, + 9, 10, 10, 11, 11, 12, + 9, 9, 10, 11, 12, 12, +10, 10, 11, 11, 13, 13}; + +const char t9l[] = { + 3, 4, 6, 7, 9, 10, + 4, 5, 6, 7, 8, 10, + 5, 6, 7, 8, 9, 10, + 7, 7, 8, 9, 9, 10, + 8, 8, 9, 9, 10, 11, + 9, 9, 10, 10, 11, 11}; + +const char t10l[] = { + 1, 4, 7, 9, 10, 10, 10, 11, + 4, 6, 8, 9, 10, 11, 10, 10, + 7, 8, 9, 10, 11, 12, 11, 11, + 8, 9, 10, 11, 12, 12, 11, 12, + 9, 10, 11, 12, 12, 12, 12, 12, +10, 11, 12, 12, 13, 13, 12, 13, + 9, 10, 11, 12, 12, 12, 13, 13, +10, 10, 11, 12, 12, 13, 13, 13}; + +const char t11l[] = { + 2, 4, 6, 8, 9, 10, 9, 10, + 4, 5, 6, 8, 10, 10, 9, 10, + 6, 7, 8, 9, 10, 11, 10, 10, + 8, 8, 9, 11, 10, 12, 10, 11, + 9, 10, 10, 11, 11, 12, 11, 12, + 9, 10, 11, 12, 12, 13, 12, 13, + 9, 9, 9, 10, 11, 12, 12, 12, + 9, 9, 10, 11, 12, 12, 12, 12}; + +const char t12l[] = { + 4, 4, 6, 8, 9, 10, 10, 10, + 4, 5, 6, 7, 9, 9, 10, 10, + 6, 6, 7, 8, 9, 10, 9, 10, + 7, 7, 8, 8, 9, 10, 10, 10, + 8, 8, 9, 9, 10, 10, 10, 11, + 9, 9, 10, 10, 10, 11, 10, 11, + 9, 9, 9, 10, 10, 11, 11, 12, +10, 10, 10, 11, 11, 11, 11, 12}; + +const char t13l[] = { + 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14, + 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14, + 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15, + 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15, + 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16, +10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16, +10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16, +11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18, +10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17, +11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17, +11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19, +12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18, +12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18, +13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18, +14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18, +13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18}; + +const char t15l[] = { + 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14, + 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, + 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13, + 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13, + 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, + 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, +10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14, +10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14, +10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14, +10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, +11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14, +11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15, +12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15, +12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, +13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15, +13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15}; + +const char t16_5l[] = { + 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11, + 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11, + 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12, + 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13, +10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12, +10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13, +11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13, +11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13, +11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13, +12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14, +12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13, +13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14, +13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14, +15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14, +14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14, +11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12}; + +const char t16l[] = { + 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10, + 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10, + 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11, + 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12, +10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11, +10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12, +11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12, +11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12, +11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12, +12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13, +12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12, +13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13, +13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13, +15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13, +14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13, +10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10}; + +const char t24l[] = { + 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10, + 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10, + 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9, + 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9, + 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9, +10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9, +10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9, +11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10, +11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10, +11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10, +12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, +12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10, +12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10, +12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10, +13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6}; + +const char t32l[] = { + 1+0, 4+1, 4+1, 5+2, 4+1, 6+2, 5+2, 6+3, + 4+1, 5+2, 5+2, 6+3, 5+2, 6+3, 6+3, 6+4}; + +const char t33l[] = { + 4+0, 4+1, 4+1, 4+2, 4+1, 4+2, 4+2, 4+3, + 4+1, 4+2, 4+2, 4+3, 4+2, 4+3, 4+3, 4+4}; + + +const struct huffcodetab ht[HTN] = +{ + /* xlen, linmax, table, hlen */ + { 0, 0,NULL,NULL}, + { 2, 0,t1HB, t1l}, + { 3, 0,t2HB, t2l}, + { 3, 0,t3HB, t3l}, + { 0, 0,NULL,NULL},/* Apparently not used */ + { 4, 0,t5HB, t5l}, + { 4, 0,t6HB, t6l}, + { 6, 0,t7HB, t7l}, + { 6, 0,t8HB, t8l}, + { 6, 0,t9HB, t9l}, + { 8, 0,t10HB, t10l}, + { 8, 0,t11HB, t11l}, + { 8, 0,t12HB, t12l}, + {16, 0,t13HB, t13l}, + { 0, 0,NULL, t16_5l},/* Apparently not used */ + {16, 0,t15HB, t15l}, + + { 1, 1,t16HB, t16l}, + { 2, 3,t16HB, t16l}, + { 3, 7,t16HB, t16l}, + { 4, 15,t16HB, t16l}, + { 6, 63,t16HB, t16l}, + { 8, 255,t16HB, t16l}, + {10,1023,t16HB, t16l}, + {13,8191,t16HB, t16l}, + + { 4, 15,t24HB, t24l}, + { 5, 31,t24HB, t24l}, + { 6, 63,t24HB, t24l}, + { 7, 127,t24HB, t24l}, + { 8, 255,t24HB, t24l}, + { 9, 511,t24HB, t24l}, + {11,2047,t24HB, t24l}, + {13,8191,t24HB, t24l}, + + { 0, 0,t32HB, t32l}, + { 0, 0,t33HB, t33l}, +}; + + + + + +/* for (i = 0; i < 16*16; i++) { + * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i]; + * } + */ +const unsigned int largetbl[16*16] = { +0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b, +0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a, +0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b, +0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a, +0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b, +0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009, +0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b, +0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009, +0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b, +0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009, +0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b, +0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009, +0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b, +0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009, +0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, +0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a, +0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, +0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a, +0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c, +0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a, +0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, +0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a, +0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c, +0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a, +0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, +0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a, +0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c, +0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a, +0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d, +0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a, +0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009, +0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006 +}; + +/* for (i = 0; i < 3*3; i++) { + * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i]; + * } + */ +const unsigned int table23[3*3] = { +0x010002, 0x040003, 0x070007, +0x040004, 0x050004, 0x070007, +0x060006, 0x070007, 0x080008 +}; + +/* for (i = 0; i < 4*4; i++) { + * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i]; + * } + */ +const unsigned int table56[4*4] = { +0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007, +0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009 +}; + + + +/* + * 0: MPEG-2 LSF + * 1: MPEG-1 + * 2: MPEG-2.5 LSF FhG extention (1995-07-11 shn) + */ + +typedef enum { + MPEG_2 = 0, + MPEG_1 = 1, + MPEG_25 = 2 +} MPEG_t; + +const int bitrate_table [3] [16] = { + { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1 }, + { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1 }, + { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1 }, +}; + +const int samplerate_table [3] [4] = { + { 22050, 24000, 16000, -1 }, /* MPEG 2 */ + { 44100, 48000, 32000, -1 }, /* MPEG 1 */ + { 11025, 12000, 8000, -1 }, /* MPEG 2.5 */ +}; + +const char* version_string [3] = { "2", "1", "2.5" }; + +const unsigned header_word [3] = { 0xFFF00000, 0xFFF80000, 0xFFE00000 }; + +/* This is the scfsi_band table from 2.4.2.7 of the IS */ +const int scfsi_band[5] = { 0, 6, 11, 16, 21 }; + +/* end of tables.c */ + diff --git a/lame-3.97/libmp3lame/tables.h b/lame-3.97/libmp3lame/tables.h new file mode 100644 index 0000000..3866b1a --- /dev/null +++ b/lame-3.97/libmp3lame/tables.h @@ -0,0 +1,94 @@ +/* + * MPEG layer 3 tables include file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_TABLES_H +#define LAME_TABLES_H + +#include "machine.h" + +typedef struct { + unsigned char no; + unsigned char width; + unsigned char minval_2; + float quiet_thr; + float norm; + float bark; +} type1_t; + +typedef struct { + unsigned char no; + unsigned char width; + float quiet_thr; + float norm; + float SNR; + float bark; +} type2_t; + +typedef struct { + unsigned int no : 5; + unsigned int cbw : 3; + unsigned int bu : 6; + unsigned int bo : 6; + unsigned int w1_576 : 10; + unsigned int w2_576 : 10; +} type34_t; + +typedef struct { + size_t len1; + const type1_t* const tab1; + size_t len2; + const type2_t* const tab2; + size_t len3; + const type34_t* const tab3; + size_t len4; + const type34_t* const tab4; +} type5_t; + +extern const type5_t table5 [6]; + + + +#define HTN 34 + +struct huffcodetab { + const int xlen; /* max. x-index+ */ + const int linmax; /* max number to be stored in linbits */ + const short* table; /* pointer to array[xlen][ylen] */ + const char* hlen; /* pointer to array[xlen][ylen] */ +}; + +extern const struct huffcodetab ht [HTN]; + /* global memory block */ + /* array of all huffcodtable headers */ + /* 0..31 Huffman code table 0..31 */ + /* 32,33 count1-tables */ + +extern const char t32l []; +extern const char t33l []; + +extern const unsigned int largetbl [16*16]; +extern const unsigned int table23 [3*3]; +extern const unsigned int table56 [4*4]; + +extern const int scfsi_band[5]; + +#endif /* LAME_TABLES_H */ + diff --git a/lame-3.97/libmp3lame/takehiro.c b/lame-3.97/libmp3lame/takehiro.c new file mode 100644 index 0000000..5f32b8e --- /dev/null +++ b/lame-3.97/libmp3lame/takehiro.c @@ -0,0 +1,1438 @@ +/* + * MP3 huffman table selecting and bit counting + * + * Copyright (c) 1999-2005 Takehiro TOMINAGA + * Copyright (c) 2002-2005 Gabriel Bouvigne + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: takehiro.c,v 1.61.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "l3side.h" +#include "tables.h" +#include "quantize_pvt.h" + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +static const struct +{ + const int region0_count; + const int region1_count; +} subdv_table[ 23 ] = +{ +{0, 0}, /* 0 bands */ +{0, 0}, /* 1 bands */ +{0, 0}, /* 2 bands */ +{0, 0}, /* 3 bands */ +{0, 0}, /* 4 bands */ +{0, 1}, /* 5 bands */ +{1, 1}, /* 6 bands */ +{1, 1}, /* 7 bands */ +{1, 2}, /* 8 bands */ +{2, 2}, /* 9 bands */ +{2, 3}, /* 10 bands */ +{2, 3}, /* 11 bands */ +{3, 4}, /* 12 bands */ +{3, 4}, /* 13 bands */ +{3, 4}, /* 14 bands */ +{4, 5}, /* 15 bands */ +{4, 5}, /* 16 bands */ +{4, 6}, /* 17 bands */ +{5, 6}, /* 18 bands */ +{5, 6}, /* 19 bands */ +{5, 7}, /* 20 bands */ +{6, 7}, /* 21 bands */ +{6, 7}, /* 22 bands */ +}; + + + + + +/********************************************************************* + * nonlinear quantization of xr + * More accurate formula than the ISO formula. Takes into account + * the fact that we are quantizing xr -> ix, but we want ix^4/3 to be + * as close as possible to x^4/3. (taking the nearest int would mean + * ix is as close as possible to xr, which is different.) + * + * From Segher Boessenkool <segher@eastsite.nl> 11/1999 + * + * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro + * Tominaga. If you need the ASM code, check CVS circa Aug 2000. + * + * 01/2004: Optimizations by Gabriel Bouvigne + *********************************************************************/ + + + + + +void quantize_lines_xrpow_01(int l, FLOAT istep, const FLOAT* xr, int* ix) +{ + const FLOAT compareval0 = (1.0 - 0.4054)/istep; + + assert (l>0); + l= l>>1; + while (l--) { + *(ix++) = (compareval0 > *xr++) ? 0 : 1; + *(ix++) = (compareval0 > *xr++) ? 0 : 1; + } +} + + + +#ifdef TAKEHIRO_IEEE754_HACK + +typedef union { + float f; + int i; +} fi_union; + +#define MAGIC_FLOAT (65536*(128)) +#define MAGIC_INT 0x4b000000 + + +void quantize_lines_xrpow(int l, FLOAT istep, const FLOAT* xp, int* pi) +{ + fi_union *fi; + int remaining; + + assert (l>0); + + fi = (fi_union *)pi; + + l = l>>1; + remaining = l%2; + l = l>>1; + while (l--) { + double x0 = istep * xp[0]; + double x1 = istep * xp[1]; + double x2 = istep * xp[2]; + double x3 = istep * xp[3]; + + x0 += MAGIC_FLOAT; fi[0].f = x0; + x1 += MAGIC_FLOAT; fi[1].f = x1; + x2 += MAGIC_FLOAT; fi[2].f = x2; + x3 += MAGIC_FLOAT; fi[3].f = x3; + + fi[0].f = x0 + (adj43asm - MAGIC_INT)[fi[0].i]; + fi[1].f = x1 + (adj43asm - MAGIC_INT)[fi[1].i]; + fi[2].f = x2 + (adj43asm - MAGIC_INT)[fi[2].i]; + fi[3].f = x3 + (adj43asm - MAGIC_INT)[fi[3].i]; + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + fi[2].i -= MAGIC_INT; + fi[3].i -= MAGIC_INT; + fi += 4; + xp += 4; + }; + if (remaining) { + double x0 = istep * xp[0]; + double x1 = istep * xp[1]; + + x0 += MAGIC_FLOAT; fi[0].f = x0; + x1 += MAGIC_FLOAT; fi[1].f = x1; + + fi[0].f = x0 + (adj43asm - MAGIC_INT)[fi[0].i]; + fi[1].f = x1 + (adj43asm - MAGIC_INT)[fi[1].i]; + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + } + +} + + +# define ROUNDFAC -0.0946 +void quantize_lines_xrpow_ISO(int l, FLOAT istep, const FLOAT* xp, int* pi) +{ + fi_union *fi; + int remaining; + + assert (l>0); + + fi = (fi_union *)pi; + + l = l>>1; + remaining = l%2; + l = l>>1; + while (l--) { + fi[0].f = istep * xp[0] + (ROUNDFAC + MAGIC_FLOAT); + fi[1].f = istep * xp[1] + (ROUNDFAC + MAGIC_FLOAT); + fi[2].f = istep * xp[2] + (ROUNDFAC + MAGIC_FLOAT); + fi[3].f = istep * xp[3] + (ROUNDFAC + MAGIC_FLOAT); + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + fi[2].i -= MAGIC_INT; + fi[3].i -= MAGIC_INT; + fi+=4; + xp+=4; + }; + if (remaining) { + fi[0].f = istep * xp[0] + (ROUNDFAC + MAGIC_FLOAT); + fi[1].f = istep * xp[1] + (ROUNDFAC + MAGIC_FLOAT); + + fi[0].i -= MAGIC_INT; + fi[1].i -= MAGIC_INT; + } + +} + + + + + + +#else + +/********************************************************************* + * XRPOW_FTOI is a macro to convert floats to ints. + * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x] + * ROUNDFAC= -0.0946 + * + * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x] + * ROUNDFAC=0.4054 + * + * Note: using floor() or (int) is extremely slow. On machines where + * the TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile + * to write some ASM for XRPOW_FTOI(). + *********************************************************************/ +#define XRPOW_FTOI(src,dest) ((dest) = (int)(src)) +#define QUANTFAC(rx) adj43[rx] +#define ROUNDFAC 0.4054 + + +void quantize_lines_xrpow(int l, FLOAT istep, const FLOAT* xr, int* ix) +{ + int remaining; + + assert (l>0); + + l = l>>1; + remaining = l%2; + l = l>>1; + while (l--) { + FLOAT x0, x1, x2, x3; + int rx0, rx1, rx2, rx3; + + x0 = *xr++ * istep; + x1 = *xr++ * istep; + XRPOW_FTOI(x0, rx0); + x2 = *xr++ * istep; + XRPOW_FTOI(x1, rx1); + x3 = *xr++ * istep; + XRPOW_FTOI(x2, rx2); + x0 += QUANTFAC(rx0); + XRPOW_FTOI(x3, rx3); + x1 += QUANTFAC(rx1); + XRPOW_FTOI(x0,*ix++); + x2 += QUANTFAC(rx2); + XRPOW_FTOI(x1,*ix++); + x3 += QUANTFAC(rx3); + XRPOW_FTOI(x2,*ix++); + XRPOW_FTOI(x3,*ix++); + }; + if (remaining) { + FLOAT x0, x1; + int rx0, rx1; + + x0 = *xr++ * istep; + x1 = *xr++ * istep; + XRPOW_FTOI(x0, rx0); + XRPOW_FTOI(x1, rx1); + x0 += QUANTFAC(rx0); + x1 += QUANTFAC(rx1); + XRPOW_FTOI(x0,*ix++); + XRPOW_FTOI(x1,*ix++); + } + +} + + + +void quantize_lines_xrpow_ISO(int l, FLOAT istep, const FLOAT* xr, int* ix) +{ + + const FLOAT compareval0 = (1.0 - 0.4054)/istep; + const FLOAT compareval1 = (2.0 - 0.4054)/istep; + + assert (l>0); + + /* depending on architecture, it may be worth calculating a few more + compareval's. + + eg. compareval1 = (2.0 - 0.4054)/istep; + .. and then after the first compare do this ... + if compareval1>*xr then ix = 1; + + On a pentium166, it's only worth doing the one compare (as done here), + as the second compare becomes more expensive than just calculating + the value. Architectures with slow FP operations may want to add some + more comparevals. try it and send your diffs statistically speaking + + 73% of all xr*istep values give ix=0 + 16% will give 1 + 4% will give 2 + */ + while (l--) { + if (compareval0 > *xr) { + *(ix++) = 0; + xr++; + } else if (compareval1 > *xr) { + *(ix++) = 1; + xr++; + } else { + /* *(ix++) = (int)( istep*(*(xr++)) + 0.4054); */ + XRPOW_FTOI( istep*(*(xr++)) + ROUNDFAC , *(ix++) ); + } + } + +} + + + + +#endif + + + +/********************************************************************* + * Quantization function + * This function will select which lines to quantize and call the + * proper quantization function + *********************************************************************/ + +static void quantize_xrpow(const FLOAT *xp, int *pi, FLOAT istep, gr_info * const cod_info, calc_noise_data* prev_noise, lame_internal_flags * const gfc) +{ + /* quantize on xr^(3/4) instead of xr */ + int sfb; + int sfbmax; + int j=0; + int prev_data_use; + int *iData; + int accumulate=0; + int accumulate01=0; + int *acc_iData; + const FLOAT *acc_xp; + + iData = pi; + acc_xp = xp; + acc_iData = iData; + + + /* Reusing previously computed data does not seems to work if global gain + is changed. Finding why it behaves this way would allow to use a cache of + previously computed values (let's 10 cached values per sfb) that would + probably provide a noticeable speedup*/ + prev_data_use = (prev_noise && + (cod_info->global_gain == prev_noise->global_gain)); + + if (cod_info->block_type == SHORT_TYPE) + sfbmax = 38; + else + sfbmax = 21; + + for (sfb = 0; sfb <= sfbmax; sfb++) { + int step = -1; + + if (prev_data_use || cod_info->block_type == NORM_TYPE) { + step = + cod_info->global_gain + - ((cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + - cod_info->subblock_gain[cod_info->window[sfb]] * 8; + } + assert( cod_info->width[sfb] >= 0 ); + if (prev_data_use && (prev_noise->step[sfb] == step)){ + /* do not recompute this part, + but compute accumulated lines */ + if (accumulate) { + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + } + if (accumulate01) { + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + } + } else { /*should compute this part*/ + int l; + l = cod_info->width[sfb]; + + if ((j+cod_info->width[sfb])>cod_info->max_nonzero_coeff) { + /*do not compute upper zero part*/ + int usefullsize; + usefullsize = cod_info->max_nonzero_coeff - j +1; + memset(&pi[cod_info->max_nonzero_coeff],0, + sizeof(int)*(576-cod_info->max_nonzero_coeff)); + l = usefullsize; + + if (l<0) { + l = 0; + } + + /* no need to compute higher sfb values */ + sfb = sfbmax + 1; + } + + /*accumulate lines to quantize*/ + if (!accumulate && !accumulate01) { + acc_iData = iData; + acc_xp = xp; + } + if (prev_noise && + prev_noise->sfb_count1 > 0 && + sfb >= prev_noise->sfb_count1 && + prev_noise->step[sfb] > 0 && + step >= prev_noise->step[sfb]) { + + if (accumulate) { + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + acc_iData = iData; + acc_xp = xp; + } + accumulate01 += l; + } else { + if (accumulate01) { + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + acc_iData = iData; + acc_xp = xp; + } + accumulate += l; + } + + if ( l <= 0 ) { + /* rh: 20040215 + * may happen due to "prev_data_use" optimization + */ + if (accumulate01) { + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + } + if (accumulate) { + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + } + + break; /* ends for-loop */ + } + } + if (sfb <= sfbmax) { + iData += cod_info->width[sfb]; + xp += cod_info->width[sfb]; + j += cod_info->width[sfb]; + } + } + if (accumulate) { /*last data part*/ + gfc->quantize_lines_xrpow(accumulate, istep, acc_xp, acc_iData); + accumulate = 0; + } + if (accumulate01) { /*last data part*/ + quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_iData); + accumulate01 = 0; + } + +} + + + + +void quantize_init (lame_internal_flags * const gfc) +{ + if (gfc->quantization) + gfc->quantize_lines_xrpow = quantize_lines_xrpow; + else + gfc->quantize_lines_xrpow = quantize_lines_xrpow_ISO; +} + + + + + +/*************************************************************************/ +/* ix_max */ +/*************************************************************************/ + +int +ix_max(const int *ix, const int *end) +{ + int max1 = 0, max2 = 0; + + do { + int x1 = *ix++; + int x2 = *ix++; + if (max1 < x1) + max1 = x1; + + if (max2 < x2) + max2 = x2; + } while (ix < end); + if (max1 < max2) + max1 = max2; + return max1; +} + + + + + + + + +int +count_bit_ESC( + const int * ix, + const int * const end, + int t1, + const int t2, + int * const s ) +{ + /* ESC-table is used */ + int linbits = ht[t1].xlen * 65536 + ht[t2].xlen; + int sum = 0, sum2; + + do { + int x = *ix++; + int y = *ix++; + + if (x != 0) { + if (x > 14) { + x = 15; + sum += linbits; + } + x *= 16; + } + + if (y != 0) { + if (y > 14) { + y = 15; + sum += linbits; + } + x += y; + } + + sum += largetbl[x]; + } while (ix < end); + + sum2 = sum & 0xffff; + sum >>= 16; + + if (sum > sum2) { + sum = sum2; + t1 = t2; + } + + *s += sum; + return t1; +} + + +inline static int +count_bit_noESC(const int * ix, const int * const end, int * const s) +{ + /* No ESC-words */ + int sum1 = 0; + const char *hlen1 = ht[1].hlen; + + do { + int x = ix[0] * 2 + ix[1]; + ix += 2; + sum1 += hlen1[x]; + } while (ix < end); + + *s += sum1; + return 1; +} + + + +inline static int +count_bit_noESC_from2( + const int * ix, + const int * const end, + int t1, + int * const s ) +{ + /* No ESC-words */ + unsigned int sum = 0, sum2; + const int xlen = ht[t1].xlen; + const unsigned int *hlen; + if (t1 == 2) + hlen = table23; + else + hlen = table56; + + do { + int x = ix[0] * xlen + ix[1]; + ix += 2; + sum += hlen[x]; + } while (ix < end); + + sum2 = sum & 0xffff; + sum >>= 16; + + if (sum > sum2) { + sum = sum2; + t1++; + } + + *s += sum; + return t1; +} + + +inline static int +count_bit_noESC_from3( + const int * ix, + const int * const end, + int t1, + int * const s ) +{ + /* No ESC-words */ + int sum1 = 0; + int sum2 = 0; + int sum3 = 0; + const int xlen = ht[t1].xlen; + const char *hlen1 = ht[t1].hlen; + const char *hlen2 = ht[t1+1].hlen; + const char *hlen3 = ht[t1+2].hlen; + int t; + + do { + int x = ix[0] * xlen + ix[1]; + ix += 2; + sum1 += hlen1[x]; + sum2 += hlen2[x]; + sum3 += hlen3[x]; + } while (ix < end); + + t = t1; + if (sum1 > sum2) { + sum1 = sum2; + t++; + } + if (sum1 > sum3) { + sum1 = sum3; + t = t1+2; + } + *s += sum1; + + return t; +} + + +/*************************************************************************/ +/* choose table */ +/*************************************************************************/ + +/* + Choose the Huffman table that will encode ix[begin..end] with + the fewest bits. + + Note: This code contains knowledge about the sizes and characteristics + of the Huffman tables as defined in the IS (Table B.7), and will not work + with any arbitrary tables. +*/ + +static int choose_table_nonMMX( + const int * ix, + const int * const end, + int * const s ) +{ + int max; + int choice, choice2; + static const int huf_tbl_noESC[] = { + 1, 2, 5, 7, 7,10,10,13,13,13,13,13,13,13,13 + }; + + max = ix_max(ix, end); + + switch (max) { + case 0: + return max; + + case 1: + return count_bit_noESC(ix, end, s); + + case 2: + case 3: + return count_bit_noESC_from2(ix, end, huf_tbl_noESC[max - 1], s); + + case 4: case 5: case 6: + case 7: case 8: case 9: + case 10: case 11: case 12: + case 13: case 14: case 15: + return count_bit_noESC_from3(ix, end, huf_tbl_noESC[max - 1], s); + + default: + /* try tables with linbits */ + if (max > IXMAX_VAL) { + *s = LARGE_BITS; + return -1; + } + max -= 15; + for (choice2 = 24; choice2 < 32; choice2++) { + if (ht[choice2].linmax >= max) { + break; + } + } + + for (choice = choice2 - 8; choice < 24; choice++) { + if (ht[choice].linmax >= max) { + break; + } + } + return count_bit_ESC(ix, end, choice, choice2, s); + } +} + + + +/*************************************************************************/ +/* count_bit */ +/*************************************************************************/ +int noquant_count_bits( + lame_internal_flags * const gfc, + gr_info * const gi, + calc_noise_data* prev_noise) +{ + int bits = 0; + int i, a1, a2; + int *const ix = gi->l3_enc; + + i = Min(576, ((gi->max_nonzero_coeff+2)>>1)<<1); + + if (prev_noise) + prev_noise->sfb_count1 = 0; + + /* Determine count1 region */ + for (; i > 1; i -= 2) + if (ix[i - 1] | ix[i - 2]) + break; + gi->count1 = i; + + /* Determines the number of bits to encode the quadruples. */ + a1 = a2 = 0; + for (; i > 3; i -= 4) { + int p; + /* hack to check if all values <= 1 */ + if ((unsigned int)(ix[i-1] | ix[i-2] | ix[i-3] | ix[i-4]) > 1) + break; + + p = ((ix[i-4] * 2 + ix[i-3]) * 2 + ix[i-2]) * 2 + ix[i-1]; + a1 += t32l[p]; + a2 += t33l[p]; + } + + bits = a1; + gi->count1table_select = 0; + if (a1 > a2) { + bits = a2; + gi->count1table_select = 1; + } + + gi->count1bits = bits; + gi->big_values = i; + if (i == 0) + return bits; + + if (gi->block_type == SHORT_TYPE) { + a1=3*gfc->scalefac_band.s[3]; + if (a1 > gi->big_values) a1 = gi->big_values; + a2 = gi->big_values; + + }else if (gi->block_type == NORM_TYPE) { + assert(i <= 576); /* bv_scf has 576 entries (0..575) */ + a1 = gi->region0_count = gfc->bv_scf[i-2]; + a2 = gi->region1_count = gfc->bv_scf[i-1]; + + assert(a1+a2+2 < SBPSY_l); + a2 = gfc->scalefac_band.l[a1 + a2 + 2]; + a1 = gfc->scalefac_band.l[a1 + 1]; + if (a2 < i) + gi->table_select[2] = gfc->choose_table(ix + a2, ix + i, &bits); + + } else { + gi->region0_count = 7; + /*gi->region1_count = SBPSY_l - 7 - 1;*/ + gi->region1_count = SBMAX_l -1 - 7 - 1; + a1 = gfc->scalefac_band.l[7 + 1]; + a2 = i; + if (a1 > a2) { + a1 = a2; + } + } + + + /* have to allow for the case when bigvalues < region0 < region1 */ + /* (and region0, region1 are ignored) */ + a1 = Min(a1,i); + a2 = Min(a2,i); + + assert( a1 >= 0 ); + assert( a2 >= 0 ); + + /* Count the number of bits necessary to code the bigvalues region. */ + if (0 < a1) + gi->table_select[0] = gfc->choose_table(ix, ix + a1, &bits); + if (a1 < a2) + gi->table_select[1] = gfc->choose_table(ix + a1, ix + a2, &bits); + if (gfc->use_best_huffman == 2) { + gi->part2_3_length = bits; + best_huffman_divide (gfc, gi); + bits = gi->part2_3_length; + } + + + if (prev_noise) { + if (gi->block_type == NORM_TYPE) { + int line = 0; + int sfb = 0; + while (gfc->scalefac_band.l[sfb] < gi->big_values) { + sfb++; + } + prev_noise->sfb_count1 = sfb; + } + } + + return bits; +} + +int count_bits( + lame_internal_flags * const gfc, + const FLOAT * const xr, + gr_info * const gi, + calc_noise_data* prev_noise + ) +{ + int *const ix = gi->l3_enc; + + /* since quantize_xrpow uses table lookup, we need to check this first: */ + FLOAT w = (IXMAX_VAL) / IPOW20(gi->global_gain); + + if (gi->xrpow_max > w) + return LARGE_BITS; + + quantize_xrpow(xr, ix, IPOW20(gi->global_gain), gi, prev_noise, gfc); + + if (gfc->substep_shaping & 2) { + int sfb, j = 0; + /* 0.634521682242439 = 0.5946*2**(.5*0.1875) */ + const FLOAT roundfac = + 0.634521682242439 / IPOW20(gi->global_gain+gi->scalefac_scale); + for (sfb = 0; sfb < gi->sfbmax; sfb++) { + int width = gi->width[sfb]; + int l; + assert( width >= 0 ); + j += width; + if (!gfc->pseudohalf[sfb]) + continue; + for (l = -width; l < 0; l++) + if (xr[j+l] < roundfac) + ix[j+l] = 0.0; + } + } + return noquant_count_bits(gfc, gi, prev_noise); +} +/*********************************************************************** + re-calculate the best scalefac_compress using scfsi + the saved bits are kept in the bit reservoir. + **********************************************************************/ + + +inline static void +recalc_divide_init( + const lame_internal_flags * const gfc, + gr_info *cod_info, + int * const ix, + int r01_bits[], + int r01_div [], + int r0_tbl [], + int r1_tbl [] ) +{ + int r0, r1, bigv, r0t, r1t, bits; + + bigv = cod_info->big_values; + + for (r0 = 0; r0 <= 7 + 15; r0++) { + r01_bits[r0] = LARGE_BITS; + } + + for (r0 = 0; r0 < 16; r0++) { + int a1 = gfc->scalefac_band.l[r0 + 1], r0bits; + if (a1 >= bigv) + break; + r0bits = 0; + r0t = gfc->choose_table(ix, ix + a1, &r0bits); + + for (r1 = 0; r1 < 8; r1++) { + int a2 = gfc->scalefac_band.l[r0 + r1 + 2]; + if (a2 >= bigv) + break; + + bits = r0bits; + r1t = gfc->choose_table(ix + a1, ix + a2, &bits); + if (r01_bits[r0 + r1] > bits) { + r01_bits[r0 + r1] = bits; + r01_div[r0 + r1] = r0; + r0_tbl[r0 + r1] = r0t; + r1_tbl[r0 + r1] = r1t; + } + } + } +} + +inline static void +recalc_divide_sub( + const lame_internal_flags * const gfc, + const gr_info *cod_info2, + gr_info * const gi, + const int * const ix, + const int r01_bits[], + const int r01_div [], + const int r0_tbl [], + const int r1_tbl [] ) +{ + int bits, r2, a2, bigv, r2t; + + bigv = cod_info2->big_values; + + for (r2 = 2; r2 < SBMAX_l + 1; r2++) { + a2 = gfc->scalefac_band.l[r2]; + if (a2 >= bigv) + break; + + bits = r01_bits[r2 - 2] + cod_info2->count1bits; + if (gi->part2_3_length <= bits) + break; + + r2t = gfc->choose_table(ix + a2, ix + bigv, &bits); + if (gi->part2_3_length <= bits) + continue; + + memcpy(gi, cod_info2, sizeof(gr_info)); + gi->part2_3_length = bits; + gi->region0_count = r01_div[r2 - 2]; + gi->region1_count = r2 - 2 - r01_div[r2 - 2]; + gi->table_select[0] = r0_tbl[r2 - 2]; + gi->table_select[1] = r1_tbl[r2 - 2]; + gi->table_select[2] = r2t; + } +} + + + + +void best_huffman_divide( + const lame_internal_flags * const gfc, + gr_info * const gi) +{ + int i, a1, a2; + gr_info cod_info2; + int * const ix = gi->l3_enc; + + int r01_bits[7 + 15 + 1]; + int r01_div[7 + 15 + 1]; + int r0_tbl[7 + 15 + 1]; + int r1_tbl[7 + 15 + 1]; + + + /* SHORT BLOCK stuff fails for MPEG2 */ + if (gi->block_type == SHORT_TYPE && gfc->mode_gr==1) + return; + + + memcpy(&cod_info2, gi, sizeof(gr_info)); + if (gi->block_type == NORM_TYPE) { + recalc_divide_init(gfc, gi, ix, r01_bits,r01_div,r0_tbl,r1_tbl); + recalc_divide_sub(gfc, &cod_info2, gi, ix, r01_bits,r01_div,r0_tbl,r1_tbl); + } + + i = cod_info2.big_values; + if (i == 0 || (unsigned int)(ix[i-2] | ix[i-1]) > 1) + return; + + i = gi->count1 + 2; + if (i > 576) + return; + + /* Determines the number of bits to encode the quadruples. */ + memcpy(&cod_info2, gi, sizeof(gr_info)); + cod_info2.count1 = i; + a1 = a2 = 0; + + assert(i <= 576); + + for (; i > cod_info2.big_values; i -= 4) { + int p = ((ix[i-4] * 2 + ix[i-3]) * 2 + ix[i-2]) * 2 + ix[i-1]; + a1 += t32l[p]; + a2 += t33l[p]; + } + cod_info2.big_values = i; + + cod_info2.count1table_select = 0; + if (a1 > a2) { + a1 = a2; + cod_info2.count1table_select = 1; + } + + cod_info2.count1bits = a1; + + if (cod_info2.block_type == NORM_TYPE) + recalc_divide_sub(gfc, &cod_info2, gi, ix, r01_bits,r01_div,r0_tbl,r1_tbl); + else { + /* Count the number of bits necessary to code the bigvalues region. */ + cod_info2.part2_3_length = a1; + a1 = gfc->scalefac_band.l[7 + 1]; + if (a1 > i) { + a1 = i; + } + if (a1 > 0) + cod_info2.table_select[0] = + gfc->choose_table(ix, ix + a1, (int *)&cod_info2.part2_3_length); + if (i > a1) + cod_info2.table_select[1] = + gfc->choose_table(ix + a1, ix + i, (int *)&cod_info2.part2_3_length); + if (gi->part2_3_length > cod_info2.part2_3_length) + memcpy(gi, &cod_info2, sizeof(gr_info)); + } +} + +static const int slen1_n[16] = { 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8,16,16 }; +static const int slen2_n[16] = { 1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8 }; +const int slen1_tab [16] = { 0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4 }; +const int slen2_tab [16] = { 0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3 }; + +static void +scfsi_calc(int ch, + III_side_info_t *l3_side) +{ + int i, s1, s2, c1, c2; + int sfb; + gr_info *gi = &l3_side->tt[1][ch]; + gr_info *g0 = &l3_side->tt[0][ch]; + + for (i = 0; i < (sizeof(scfsi_band) / sizeof(int)) - 1; i++) { + for (sfb = scfsi_band[i]; sfb < scfsi_band[i + 1]; sfb++) { + if (g0->scalefac[sfb] != gi->scalefac[sfb] + && gi->scalefac[sfb] >= 0) + break; + } + if (sfb == scfsi_band[i + 1]) { + for (sfb = scfsi_band[i]; sfb < scfsi_band[i + 1]; sfb++) { + gi->scalefac[sfb] = -1; + } + l3_side->scfsi[ch][i] = 1; + } + } + + s1 = c1 = 0; + for (sfb = 0; sfb < 11; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; + c1++; + if (s1 < gi->scalefac[sfb]) + s1 = gi->scalefac[sfb]; + } + + s2 = c2 = 0; + for (; sfb < SBPSY_l; sfb++) { + if (gi->scalefac[sfb] == -1) + continue; + c2++; + if (s2 < gi->scalefac[sfb]) + s2 = gi->scalefac[sfb]; + } + + for (i = 0; i < 16; i++) { + if (s1 < slen1_n[i] && s2 < slen2_n[i]) { + int c = slen1_tab[i] * c1 + slen2_tab[i] * c2; + if (gi->part2_length > c) { + gi->part2_length = c; + gi->scalefac_compress = i; + } + } + } +} + +/* +Find the optimal way to store the scalefactors. +Only call this routine after final scalefactors have been +chosen and the channel/granule will not be re-encoded. + */ +void best_scalefac_store( + const lame_internal_flags *gfc, + const int gr, + const int ch, + III_side_info_t * const l3_side) +{ + /* use scalefac_scale if we can */ + gr_info *gi = &l3_side->tt[gr][ch]; + int sfb,i,j,l; + int recalc = 0; + + /* remove scalefacs from bands with ix=0. This idea comes + * from the AAC ISO docs. added mt 3/00 */ + /* check if l3_enc=0 */ + j = 0; + for ( sfb = 0; sfb < gi->sfbmax; sfb++ ) { + int width = gi->width[sfb]; + assert( width >= 0 ); + j += width; + for (l = -width; l < 0; l++) { + if (gi->l3_enc[l+j]!=0) + break; + } + if (l==0) + gi->scalefac[sfb] = recalc = -2; /* anything goes. */ + /* only best_scalefac_store and calc_scfsi + * know--and only they should know--about the magic number -2. + */ + } + + if (!gi->scalefac_scale && !gi->preflag) { + int s = 0; + for (sfb = 0; sfb < gi->sfbmax; sfb++) + if (gi->scalefac[sfb] > 0) + s |= gi->scalefac[sfb]; + + if (!(s & 1) && s != 0) { + for (sfb = 0; sfb < gi->sfbmax; sfb++) + if (gi->scalefac[sfb] > 0) + gi->scalefac[sfb] >>= 1; + + gi->scalefac_scale = recalc = 1; + } + } + + if (!gi->preflag && gi->block_type != SHORT_TYPE && gfc->mode_gr==2) { + for (sfb = 11; sfb < SBPSY_l; sfb++) + if (gi->scalefac[sfb] < pretab[sfb] && gi->scalefac[sfb] != -2) + break; + if (sfb == SBPSY_l) { + for (sfb = 11; sfb < SBPSY_l; sfb++) + if (gi->scalefac[sfb] > 0) + gi->scalefac[sfb] -= pretab[sfb]; + + gi->preflag = recalc = 1; + } + } + + for ( i = 0; i < 4; i++ ) + l3_side->scfsi[ch][i] = 0; + + if (gfc->mode_gr==2 && gr == 1 + && l3_side->tt[0][ch].block_type != SHORT_TYPE + && l3_side->tt[1][ch].block_type != SHORT_TYPE) { + scfsi_calc(ch, l3_side); + recalc = 0; + } + for ( sfb = 0; sfb < gi->sfbmax; sfb++ ) { + if ( gi->scalefac[sfb] == -2 ) { + gi->scalefac[sfb] = 0; /* if anything goes, then 0 is a good choice */ + } + } + if (recalc) { + if (gfc->mode_gr == 2) { + scale_bitcount(gi); + } else { + scale_bitcount_lsf(gfc, gi); + } + } +} + + +#ifndef NDEBUG +static int all_scalefactors_not_negative( int const* scalefac, int n ) +{ + int i; + for ( i = 0; i < n; ++i ) { + if ( scalefac[i] < 0 ) return 0; + } + return 1; +} +#endif + + +/* number of bits used to encode scalefacs */ + +/* 18*slen1_tab[i] + 18*slen2_tab[i] */ +static const int scale_short[16] = { + 0, 18, 36, 54, 54, 36, 54, 72, 54, 72, 90, 72, 90, 108, 108, 126 }; + +/* 17*slen1_tab[i] + 18*slen2_tab[i] */ +static const int scale_mixed[16] = { + 0, 18, 36, 54, 51, 35, 53, 71, 52, 70, 88, 69, 87, 105, 104, 122 }; + +/* 11*slen1_tab[i] + 10*slen2_tab[i] */ +static const int scale_long[16] = { + 0, 10, 20, 30, 33, 21, 31, 41, 32, 42, 52, 43, 53, 63, 64, 74 }; + + +/*************************************************************************/ +/* scale_bitcount */ +/*************************************************************************/ + +/* Also calculates the number of bits necessary to code the scalefactors. */ + +int scale_bitcount(gr_info * const cod_info) +{ + int k, sfb, max_slen1 = 0, max_slen2 = 0; + + /* maximum values */ + const int *tab; + int *scalefac = cod_info->scalefac; + + assert( all_scalefactors_not_negative( scalefac, cod_info->sfbmax ) ); + + if ( cod_info->block_type == SHORT_TYPE ) { + tab = scale_short; + if (cod_info->mixed_block_flag) + tab = scale_mixed; + } + else + { /* block_type == 1,2,or 3 */ + tab = scale_long; + if (!cod_info->preflag) { + for ( sfb = 11; sfb < SBPSY_l; sfb++ ) + if (scalefac[sfb] < pretab[sfb]) + break; + + if (sfb == SBPSY_l) { + cod_info->preflag = 1; + for ( sfb = 11; sfb < SBPSY_l; sfb++ ) + scalefac[sfb] -= pretab[sfb]; + } + } + } + + for (sfb = 0; sfb < cod_info->sfbdivide; sfb++) + if (max_slen1 < scalefac[sfb]) + max_slen1 = scalefac[sfb]; + + for (; sfb < cod_info->sfbmax; sfb++) + if (max_slen2 < scalefac[sfb]) + max_slen2 = scalefac[sfb]; + + /* from Takehiro TOMINAGA <tominaga@isoternet.org> 10/99 + * loop over *all* posible values of scalefac_compress to find the + * one which uses the smallest number of bits. ISO would stop + * at first valid index */ + cod_info->part2_length = LARGE_BITS; + for ( k = 0; k < 16; k++ ) { + if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k] + && cod_info->part2_length > tab[k]) { + cod_info->part2_length=tab[k]; + cod_info->scalefac_compress=k; + } + } + return cod_info->part2_length == LARGE_BITS; +} + + + +/* + table of largest scalefactor values for MPEG2 +*/ +static const int max_range_sfac_tab[6][4] = +{ + { 15, 15, 7, 7}, + { 15, 15, 7, 0}, + { 7, 3, 0, 0}, + { 15, 31, 31, 0}, + { 7, 7, 7, 0}, + { 3, 3, 0, 0} +}; + + + + +/*************************************************************************/ +/* scale_bitcount_lsf */ +/*************************************************************************/ + +/* Also counts the number of bits to encode the scalefacs but for MPEG 2 */ +/* Lower sampling frequencies (24, 22.05 and 16 kHz.) */ + +/* This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS, */ +/* "Audio Decoding Layer III" */ + +int scale_bitcount_lsf(const lame_internal_flags *gfc, + gr_info * const cod_info) +{ + int table_number, row_in_table, partition, nr_sfb, window, over; + int i, sfb, max_sfac[ 4 ]; + const int *partition_table; + int *scalefac = cod_info->scalefac; + + /* + Set partition table. Note that should try to use table one, + but do not yet... + */ + if ( cod_info->preflag ) + table_number = 2; + else + table_number = 0; + + for ( i = 0; i < 4; i++ ) + max_sfac[i] = 0; + + if ( cod_info->block_type == SHORT_TYPE ) + { + row_in_table = 1; + partition_table = &nr_of_sfb_block[table_number][row_in_table][0]; + for ( sfb = 0, partition = 0; partition < 4; partition++ ) + { + nr_sfb = partition_table[ partition ] / 3; + for ( i = 0; i < nr_sfb; i++, sfb++ ) + for ( window = 0; window < 3; window++ ) + if ( scalefac[sfb*3+window] > max_sfac[partition] ) + max_sfac[partition] = scalefac[sfb*3+window]; + } + } + else + { + row_in_table = 0; + partition_table = &nr_of_sfb_block[table_number][row_in_table][0]; + for ( sfb = 0, partition = 0; partition < 4; partition++ ) + { + nr_sfb = partition_table[ partition ]; + for ( i = 0; i < nr_sfb; i++, sfb++ ) + if ( scalefac[sfb] > max_sfac[partition] ) + max_sfac[partition] = scalefac[sfb]; + } + } + + for ( over = 0, partition = 0; partition < 4; partition++ ) + { + if ( max_sfac[partition] > max_range_sfac_tab[table_number][partition] ) + over++; + } + if ( !over ) + { + /* + Since no bands have been over-amplified, we can set scalefac_compress + and slen[] for the formatter + */ + static const int log2tab[] = { 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4 }; + + int slen1, slen2, slen3, slen4; + + cod_info->sfb_partition_table = nr_of_sfb_block[table_number][row_in_table]; + for ( partition = 0; partition < 4; partition++ ) + cod_info->slen[partition] = log2tab[max_sfac[partition]]; + + /* set scalefac_compress */ + slen1 = cod_info->slen[ 0 ]; + slen2 = cod_info->slen[ 1 ]; + slen3 = cod_info->slen[ 2 ]; + slen4 = cod_info->slen[ 3 ]; + + switch ( table_number ) + { + case 0: + cod_info->scalefac_compress = (((slen1 * 5) + slen2) << 4) + + (slen3 << 2) + + slen4; + break; + + case 1: + cod_info->scalefac_compress = 400 + + (((slen1 * 5) + slen2) << 2) + + slen3; + break; + + case 2: + cod_info->scalefac_compress = 500 + (slen1 * 3) + slen2; + break; + + default: + ERRORF(gfc,"intensity stereo not implemented yet\n" ); + break; + } + } +#ifdef DEBUG + if ( over ) + ERRORF(gfc, "---WARNING !! Amplification of some bands over limits\n" ); +#endif + if (!over) { + assert( cod_info->sfb_partition_table ); + cod_info->part2_length=0; + for ( partition = 0; partition < 4; partition++ ) + cod_info->part2_length += cod_info->slen[partition] * cod_info->sfb_partition_table[partition]; + } + return over; +} + + + +void huffman_init(lame_internal_flags * const gfc) +{ + int i; + + gfc->choose_table = choose_table_nonMMX; + +#ifdef MMX_choose_table + if (gfc->CPU_features.MMX) { + extern int choose_table_MMX(const int *ix, const int * const end, int * const s); + gfc->choose_table = choose_table_MMX; + } +#endif + + for (i = 2; i <= 576; i += 2) { + int scfb_anz = 0, index; + while (gfc->scalefac_band.l[++scfb_anz] < i) + ; + + index = subdv_table[scfb_anz].region0_count; + while (gfc->scalefac_band.l[index + 1] > i) + index--; + + if (index < 0) { + /* this is an indication that everything is going to + be encoded as region0: bigvalues < region0 < region1 + so lets set region0, region1 to some value larger + than bigvalues */ + index = subdv_table[scfb_anz].region0_count; + } + + gfc->bv_scf[i-2] = index; + + index = subdv_table[scfb_anz].region1_count; + while (gfc->scalefac_band.l[index + gfc->bv_scf[i-2] + 2] > i) + index--; + + if (index < 0) { + index = subdv_table[scfb_anz].region1_count; + } + + gfc->bv_scf[i-1] = index; + } +} + diff --git a/lame-3.97/libmp3lame/util.c b/lame-3.97/libmp3lame/util.c new file mode 100644 index 0000000..3e6143f --- /dev/null +++ b/lame-3.97/libmp3lame/util.c @@ -0,0 +1,828 @@ +/* + * lame utility library source file + * + * Copyright (c) 1999 Albert L Faber + * Copyright (c) 2000-2005 Alexander Leidinger + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: util.c,v 1.117.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#define PRECOMPUTE + +#include "util.h" +#include <ctype.h> +#include <assert.h> +#include <stdarg.h> + +#if defined(__FreeBSD__) && !defined(__alpha__) +# include <machine/floatingpoint.h> +#endif + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/*********************************************************************** +* +* Global Function Definitions +* +***********************************************************************/ +/*empty and close mallocs in gfc */ + +void freegfc ( lame_internal_flags* const gfc ) /* bit stream structure */ +{ + int i; + + + for ( i = 0 ; i <= 2*BPC; i++ ) + if ( gfc->blackfilt[i] != NULL ) { + free ( gfc->blackfilt[i] ); + gfc->blackfilt[i] = NULL; + } + if ( gfc->inbuf_old[0] ) { + free ( gfc->inbuf_old[0] ); + gfc->inbuf_old[0] = NULL; + } + if ( gfc->inbuf_old[1] ) { + free ( gfc->inbuf_old[1] ); + gfc->inbuf_old[1] = NULL; + } + + if ( gfc->bs.buf != NULL ) { + free ( gfc->bs.buf ); + gfc->bs.buf = NULL; + } + + if ( gfc->VBR_seek_table.bag ) { + free ( gfc->VBR_seek_table.bag ); + gfc->VBR_seek_table.bag=NULL; + gfc->VBR_seek_table.size=0; + } + if ( gfc->ATH ) { + free ( gfc->ATH ); + } + if ( gfc->PSY ) { + free ( gfc->PSY ); + } + if ( gfc->rgdata ) { + free ( gfc->rgdata ); + } + if ( gfc->s3_ll ) { + /* XXX allocated in psymodel_init() */ + free ( gfc->s3_ll ); + } + if ( gfc->s3_ss ) { + /* XXX allocated in psymodel_init() */ + free ( gfc->s3_ss ); + } + if ( gfc->in_buffer_0 ) { + free ( gfc->in_buffer_0 ); + } + if ( gfc->in_buffer_1 ) { + free ( gfc->in_buffer_1 ); + } + + free ( gfc ); +} + + + +/*those ATH formulas are returning +their minimum value for input = -1*/ + +FLOAT ATHformula_GB(FLOAT f, FLOAT value) +{ + /* from Painter & Spanias + modified by Gabriel Bouvigne to better fit the reality + ath = 3.640 * pow(f,-0.8) + - 6.800 * exp(-0.6*pow(f-3.4,2.0)) + + 6.000 * exp(-0.15*pow(f-8.7,2.0)) + + 0.6* 0.001 * pow(f,4.0); + + + In the past LAME was using the Painter &Spanias formula. + But we had some recurrent problems with HF content. + We measured real ATH values, and found the older formula + to be inacurate in the higher part. So we made this new + formula and this solved most of HF problematic testcases. + The tradeoff is that in VBR mode it increases a lot the + bitrate.*/ + + +/*this curve can be udjusted according to the VBR scale: +it adjusts from something close to Painter & Spanias +on V9 up to Bouvigne's formula for V0. This way the VBR +bitrate is more balanced according to the -V value.*/ + + FLOAT ath; + + if (f < -.3) + f=3410; + + f /= 1000; /* convert to khz */ + f = Max(0.01, f); +/* f = Min(21.0, f); +*/ + ath = 3.640 * pow(f,-0.8) + - 6.800 * exp(-0.6*pow(f-3.4,2.0)) + + 6.000 * exp(-0.15*pow(f-8.7,2.0)) + + (0.6+0.04*value)* 0.001 * pow(f,4.0); + return ath; +} + + + +FLOAT ATHformula(FLOAT f,lame_global_flags *gfp) +{ + switch(gfp->ATHtype) + { + case 0: + return ATHformula_GB(f, 9); + case 1: + return ATHformula_GB(f, -1); /*over sensitive, should probably be removed*/ + case 2: + return ATHformula_GB(f, 0); + case 3: + return ATHformula_GB(f, 1) + 6; /*modification of GB formula by Roel*/ + case 4: + return ATHformula_GB(f,gfp->ATHcurve); + } + + return ATHformula_GB(f, 0); +} + +/* see for example "Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7 */ +FLOAT freq2bark(FLOAT freq) +{ + /* input: freq in hz output: barks */ + if (freq<0) freq=0; + freq = freq * 0.001; + return 13.0*atan(.76*freq) + 3.5*atan(freq*freq/(7.5*7.5)); +} + +/* see for example "Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7 */ +FLOAT freq2cbw(FLOAT freq) +{ + /* input: freq in hz output: critical band width */ + freq = freq * 0.001; + return 25+75*pow(1+1.4*(freq*freq),0.69); +} + + + + + + +#define ABS(A) (((A)>0) ? (A) : -(A)) + +int FindNearestBitrate( +int bRate, /* legal rates from 8 to 320 */ +int version) /* MPEG-1 or MPEG-2 LSF */ +{ + int bitrate = 0; + int i; + + for ( i = 1; i <= 14; i++ ) + if ( ABS (bitrate_table[version][i] - bRate) < ABS (bitrate - bRate) ) + bitrate = bitrate_table [version] [i]; + + return bitrate; +} + + + + + +#ifndef Min +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#endif +#ifndef Max +#define Max(A, B) ((A) > (B) ? (A) : (B)) +#endif + + +/* Used to find table index when + * we need bitrate-based values + * determined using tables + * + * bitrate in kbps + * + * Gabriel Bouvigne 2002-11-03 + */ +int nearestBitrateFullIndex(const int bitrate) +{ + /* borrowed from DM abr presets*/ + + int index; /* resolved range */ + + const int bitrate_table[] = {8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320}; + + + int lower_range = 0, lower_range_kbps = 0, + upper_range = 0, upper_range_kbps = 0; + + + int b; + + + /* We assume specified bitrate will be 320kbps */ + upper_range_kbps = bitrate_table[16]; + upper_range = 16; + lower_range_kbps = bitrate_table[16]; + lower_range = 16; + + /* Determine which significant bitrates the value specified falls between, + * if loop ends without breaking then we were correct above that the value was 320 + */ + for (b = 0; b < 16; b++) { + if ((Max(bitrate, bitrate_table[b+1])) != bitrate) { + upper_range_kbps = bitrate_table[b+1]; + upper_range = b+1; + lower_range_kbps = bitrate_table[b]; + lower_range = (b); + break; /* We found upper range */ + } + } + + /* Determine which range the value specified is closer to */ + if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) + index = lower_range; + else + index = upper_range; + + return index; +} + + + + + +/* map frequency to a valid MP3 sample frequency + * + * Robert Hegemann 2000-07-01 + */ +int map2MP3Frequency(int freq) +{ + if (freq <= 8000) return 8000; + if (freq <= 11025) return 11025; + if (freq <= 12000) return 12000; + if (freq <= 16000) return 16000; + if (freq <= 22050) return 22050; + if (freq <= 24000) return 24000; + if (freq <= 32000) return 32000; + if (freq <= 44100) return 44100; + + return 48000; +} + +int BitrateIndex( +int bRate, /* legal rates from 32 to 448 kbps */ +int version, /* MPEG-1 or MPEG-2/2.5 LSF */ +int samplerate) /* convert bitrate in kbps to index */ +{ + int i; + + for ( i = 0; i <= 14; i++) + if ( bitrate_table [version] [i] == bRate ) + return i; + + return -1; +} + +/* convert samp freq in Hz to index */ + +int SmpFrqIndex ( int sample_freq, int* const version ) +{ + switch ( sample_freq ) { + case 44100: *version = 1; return 0; + case 48000: *version = 1; return 1; + case 32000: *version = 1; return 2; + case 22050: *version = 0; return 0; + case 24000: *version = 0; return 1; + case 16000: *version = 0; return 2; + case 11025: *version = 0; return 0; + case 12000: *version = 0; return 1; + case 8000: *version = 0; return 2; + default: *version = 0; return -1; + } +} + + +/***************************************************************************** +* +* End of bit_stream.c package +* +*****************************************************************************/ + + + + + + + + + + +/* resampling via FIR filter, blackman window */ +inline static FLOAT blackman(FLOAT x,FLOAT fcn,int l) +{ + /* This algorithm from: +SIGNAL PROCESSING ALGORITHMS IN FORTRAN AND C +S.D. Stearns and R.A. David, Prentice-Hall, 1992 + */ + FLOAT bkwn,x2; + FLOAT wcn = (PI * fcn); + + x /= l; + if (x<0) x=0; + if (x>1) x=1; + x2 = x - .5; + + bkwn = 0.42 - 0.5*cos(2*x*PI) + 0.08*cos(4*x*PI); + if (fabs(x2)<1e-9) return wcn/PI; + else + return ( bkwn*sin(l*wcn*x2) / (PI*l*x2) ); + + +} + +/* gcd - greatest common divisor */ +/* Joint work of Euclid and M. Hendry */ + +int gcd ( int i, int j ) +{ +/* assert ( i > 0 && j > 0 ); */ + return j ? gcd(j, i % j) : i; +} + + + +/* copy in new samples from in_buffer into mfbuf, with resampling + if necessary. n_in = number of samples from the input buffer that + were used. n_out = number of samples copied into mfbuf */ + +void fill_buffer(lame_global_flags *gfp, + sample_t *mfbuf[2], + sample_t *in_buffer[2], + int nsamples, int *n_in, int *n_out) +{ + lame_internal_flags *gfc = gfp->internal_flags; + int ch,i; + + /* copy in new samples into mfbuf, with resampling if necessary */ + if ( (gfc->resample_ratio < .9999) || (gfc->resample_ratio > 1.0001) ){ + for (ch = 0; ch < gfc->channels_out; ch++) { + *n_out = + fill_buffer_resample(gfp, &mfbuf[ch][gfc->mf_size], + gfp->framesize, in_buffer[ch], + nsamples, n_in, ch); + } + } + else { + *n_out = Min(gfp->framesize, nsamples); + *n_in = *n_out; + for (i = 0; i < *n_out; ++i) { + mfbuf[0][gfc->mf_size + i] = in_buffer[0][i]; + if (gfc->channels_out == 2) + mfbuf[1][gfc->mf_size + i] = in_buffer[1][i]; + } + } +} + + + + +int fill_buffer_resample( + lame_global_flags *gfp, + sample_t *outbuf, + int desired_len, + sample_t *inbuf, + int len, + int *num_used, + int ch) +{ + + + lame_internal_flags *gfc=gfp->internal_flags; + int BLACKSIZE; + FLOAT offset,xvalue; + int i,j=0,k; + int filter_l; + FLOAT fcn,intratio; + FLOAT *inbuf_old; + int bpc; /* number of convolution functions to pre-compute */ + bpc = gfp->out_samplerate/gcd(gfp->out_samplerate,gfp->in_samplerate); + if (bpc>BPC) bpc = BPC; + + intratio=( fabs(gfc->resample_ratio - floor(.5+gfc->resample_ratio)) < .0001 ); + fcn = 1.00/gfc->resample_ratio; + if (fcn>1.00) fcn=1.00; + filter_l = gfp->quality < 7 ? 31 : 7; + filter_l = 31; + if (0==filter_l % 2 ) --filter_l;/* must be odd */ + filter_l += intratio; /* unless resample_ratio=int, it must be even */ + + + BLACKSIZE = filter_l+1; /* size of data needed for FIR */ + + if ( gfc->fill_buffer_resample_init == 0 ) { + gfc->inbuf_old[0]=calloc(BLACKSIZE,sizeof(gfc->inbuf_old[0][0])); + gfc->inbuf_old[1]=calloc(BLACKSIZE,sizeof(gfc->inbuf_old[0][0])); + for (i=0; i<=2*bpc; ++i) + gfc->blackfilt[i]=calloc(BLACKSIZE,sizeof(gfc->blackfilt[0][0])); + + gfc->itime[0]=0; + gfc->itime[1]=0; + + /* precompute blackman filter coefficients */ + for ( j = 0; j <= 2*bpc; j++ ) { + FLOAT sum = 0.; + offset = (j-bpc) / (2.*bpc); + for ( i = 0; i <= filter_l; i++ ) + sum += + gfc->blackfilt[j][i] = blackman(i-offset,fcn,filter_l); + for ( i = 0; i <= filter_l; i++ ) + gfc->blackfilt[j][i] /= sum; + } + gfc->fill_buffer_resample_init = 1; + } + + inbuf_old=gfc->inbuf_old[ch]; + + /* time of j'th element in inbuf = itime + j/ifreq; */ + /* time of k'th element in outbuf = j/ofreq */ + for (k=0;k<desired_len;k++) { + FLOAT time0; + int joff; + + time0 = k*gfc->resample_ratio; /* time of k'th output sample */ + j = floor( time0 -gfc->itime[ch] ); + + /* check if we need more input data */ + if ((filter_l + j - filter_l/2) >= len) break; + + /* blackman filter. by default, window centered at j+.5(filter_l%2) */ + /* but we want a window centered at time0. */ + offset = ( time0 -gfc->itime[ch] - (j + .5*(filter_l%2))); + assert(fabs(offset)<=.501); + + /* find the closest precomputed window for this offset: */ + joff = floor((offset*2*bpc) + bpc +.5); + + xvalue = 0.; + for (i=0 ; i<=filter_l ; ++i) { + int j2 = i+j-filter_l/2; + sample_t y; + assert(j2<len); + assert(j2+BLACKSIZE >= 0); + y = (j2<0) ? inbuf_old[BLACKSIZE+j2] : inbuf[j2]; +#define PRECOMPUTE +#ifdef PRECOMPUTE + xvalue += y*gfc->blackfilt[joff][i]; +#else + xvalue += y*blackman(i-offset,fcn,filter_l); /* very slow! */ +#endif + } + outbuf[k]=xvalue; + } + + + /* k = number of samples added to outbuf */ + /* last k sample used data from [j-filter_l/2,j+filter_l-filter_l/2] */ + + /* how many samples of input data were used: */ + *num_used = Min(len,filter_l+j-filter_l/2); + + /* adjust our input time counter. Incriment by the number of samples used, + * then normalize so that next output sample is at time 0, next + * input buffer is at time itime[ch] */ + gfc->itime[ch] += *num_used - k*gfc->resample_ratio; + + /* save the last BLACKSIZE samples into the inbuf_old buffer */ + if (*num_used >= BLACKSIZE) { + for (i=0;i<BLACKSIZE;i++) + inbuf_old[i]=inbuf[*num_used + i -BLACKSIZE]; + }else{ + /* shift in *num_used samples into inbuf_old */ + int n_shift = BLACKSIZE-*num_used; /* number of samples to shift */ + + /* shift n_shift samples by *num_used, to make room for the + * num_used new samples */ + for (i=0; i<n_shift; ++i ) + inbuf_old[i] = inbuf_old[i+ *num_used]; + + /* shift in the *num_used samples */ + for (j=0; i<BLACKSIZE; ++i, ++j ) + inbuf_old[i] = inbuf[j]; + + assert(j==*num_used); + } + return k; /* return the number samples created at the new samplerate */ +} + + + + + +/*********************************************************************** +* +* Message Output +* +***********************************************************************/ +void lame_debugf (const lame_internal_flags *gfc, const char* format, ... ) +{ + va_list args; + + va_start ( args, format ); + + if ( gfc->report.debugf != NULL ) { + gfc->report.debugf( format, args ); + } else { + (void) vfprintf ( stderr, format, args ); + fflush ( stderr ); /* an debug function should flush immediately */ + } + + va_end ( args ); +} + + +void lame_msgf (const lame_internal_flags *gfc, const char* format, ... ) +{ + va_list args; + + va_start ( args, format ); + + if ( gfc->report.msgf != NULL ) { + gfc->report.msgf( format, args ); + } else { + (void) vfprintf ( stderr, format, args ); + fflush ( stderr ); /* we print to stderr, so me may want to flush */ + } + + va_end ( args ); +} + + +void lame_errorf (const lame_internal_flags *gfc, const char* format, ... ) +{ + va_list args; + + va_start ( args, format ); + + if ( gfc->report.errorf != NULL ) { + gfc->report.errorf( format, args ); + } else { + (void) vfprintf ( stderr, format, args ); + fflush ( stderr ); /* an error function should flush immediately */ + } + + va_end ( args ); +} + + + +/*********************************************************************** + * + * routines to detect CPU specific features like 3DNow, MMX, SSE + * + * donated by Frank Klemm + * added Robert Hegemann 2000-10-10 + * + ***********************************************************************/ + + +int has_MMX ( void ) +{ +#ifdef HAVE_NASM + extern int has_MMX_nasm ( void ); + return has_MMX_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +int has_3DNow ( void ) +{ +#ifdef HAVE_NASM + extern int has_3DNow_nasm ( void ); + return has_3DNow_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +int has_SSE ( void ) +{ +#ifdef HAVE_NASM + extern int has_SSE_nasm ( void ); + return has_SSE_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +int has_SSE2 ( void ) +{ +#ifdef HAVE_NASM + extern int has_SSE2_nasm ( void ); + return has_SSE2_nasm (); +#else + return 0; /* don't know, assume not */ +#endif +} + +void disable_FPE(void) { +/* extremly system dependent stuff, move to a lib to make the code readable */ +/*==========================================================================*/ + + + + /* + * Disable floating point exceptions + */ + + + + +#if defined(__FreeBSD__) && !defined(__alpha__) + { + /* seet floating point mask to the Linux default */ + fp_except_t mask; + mask = fpgetmask(); + /* if bit is set, we get SIGFPE on that error! */ + fpsetmask(mask & ~(FP_X_INV | FP_X_DZ)); + /* DEBUGF("FreeBSD mask is 0x%x\n",mask); */ + } +#endif + +#if defined(__riscos__) && !defined(ABORTFP) + /* Disable FPE's under RISC OS */ + /* if bit is set, we disable trapping that error! */ + /* _FPE_IVO : invalid operation */ + /* _FPE_DVZ : divide by zero */ + /* _FPE_OFL : overflow */ + /* _FPE_UFL : underflow */ + /* _FPE_INX : inexact */ + DisableFPETraps(_FPE_IVO | _FPE_DVZ | _FPE_OFL); +#endif + + /* + * Debugging stuff + * The default is to ignore FPE's, unless compiled with -DABORTFP + * so add code below to ENABLE FPE's. + */ + +#if defined(ABORTFP) +#if defined(_MSC_VER) + { + + /* set affinity to a single CPU. Fix for EAC/lame on SMP systems from + "Todd Richmond" <todd.richmond@openwave.com> */ + SYSTEM_INFO si; + GetSystemInfo(&si); + SetProcessAffinityMask(GetCurrentProcess(), si.dwActiveProcessorMask); + +#include <float.h> + unsigned int mask; + mask = _controlfp(0, 0); + mask &= ~(_EM_OVERFLOW | _EM_UNDERFLOW | _EM_ZERODIVIDE | _EM_INVALID); + mask = _controlfp(mask, _MCW_EM); + } +#elif defined(__CYGWIN__) +# define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) +# define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) + +# define _EM_INEXACT 0x00000020 /* inexact (precision) */ +# define _EM_UNDERFLOW 0x00000010 /* underflow */ +# define _EM_OVERFLOW 0x00000008 /* overflow */ +# define _EM_ZERODIVIDE 0x00000004 /* zero divide */ +# define _EM_INVALID 0x00000001 /* invalid */ + { + unsigned int mask; + _FPU_GETCW(mask); + /* Set the FPU control word to abort on most FPEs */ + mask &= ~(_EM_OVERFLOW | _EM_ZERODIVIDE | _EM_INVALID); + _FPU_SETCW(mask); + } +# elif defined(__linux__) + { + +# include <fpu_control.h> +# ifndef _FPU_GETCW +# define _FPU_GETCW(cw) __asm__ ("fnstcw %0" : "=m" (*&cw)) +# endif +# ifndef _FPU_SETCW +# define _FPU_SETCW(cw) __asm__ ("fldcw %0" : : "m" (*&cw)) +# endif + + /* + * Set the Linux mask to abort on most FPE's + * if bit is set, we _mask_ SIGFPE on that error! + * mask &= ~( _FPU_MASK_IM | _FPU_MASK_ZM | _FPU_MASK_OM | _FPU_MASK_UM ); + */ + + unsigned int mask; + _FPU_GETCW(mask); + mask &= ~(_FPU_MASK_IM | _FPU_MASK_ZM | _FPU_MASK_OM); + _FPU_SETCW(mask); + } +#endif +#endif /* ABORTFP */ +} + + + + + +#ifdef USE_FAST_LOG +/*********************************************************************** + * + * Fast Log Approximation for log2, used to approximate every other log + * (log10 and log) + * maximum absolute error for log10 is around 10-6 + * maximum *relative* error can be high when x is almost 1 because error/log10(x) tends toward x/e + * + * use it if typical RESULT values are > 1e-5 (for example if x>1.00001 or x<0.99999) + * or if the relative precision in the domain around 1 is not important (result in 1 is exact and 0) + * + ***********************************************************************/ + + +#define LOG2_SIZE (512) +#define LOG2_SIZE_L2 (9) + +static ieee754_float32_t log_table[LOG2_SIZE+1]; + + + +void init_log_table(void) +{ + int j; + static int init = 0; + + /* Range for log2(x) over [1,2[ is [0,1[ */ + assert((1<<LOG2_SIZE_L2)==LOG2_SIZE); + + if(!init) { + for(j=0; j<LOG2_SIZE+1; j++) + log_table[j] = log(1.0f+j/(ieee754_float32_t)LOG2_SIZE)/log(2.0f); + } + init = 1; +} + + + +ieee754_float32_t fast_log2(ieee754_float32_t x) +{ + ieee754_float32_t log2val, partial; + union { + ieee754_float32_t f; + int i; + } fi; + int mantisse; + fi.f = x; + mantisse = fi.i & 0x7fffff; + log2val = ((fi.i>>23) & 0xFF)-0x7f; + partial = (mantisse & ((1<<(23-LOG2_SIZE_L2))-1)); + partial *= 1.0f/((1<<(23-LOG2_SIZE_L2))); + + + mantisse >>= (23-LOG2_SIZE_L2); + + /* log2val += log_table[mantisse]; without interpolation the results are not good */ + log2val += log_table[mantisse] * (1.0f-partial) + log_table[mantisse+1]*partial; + + return log2val; +} + +#else /* Don't use FAST_LOG */ + + +void init_log_table(void) +{ +} + + +#endif + +/* end of util.c */ + diff --git a/lame-3.97/libmp3lame/util.h b/lame-3.97/libmp3lame/util.h new file mode 100644 index 0000000..206c490 --- /dev/null +++ b/lame-3.97/libmp3lame/util.h @@ -0,0 +1,551 @@ +/* + * lame utility library include file + * + * Copyright (c) 1999 Albert L Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_UTIL_H +#define LAME_UTIL_H + +/*********************************************************************** +* +* Global Include Files +* +***********************************************************************/ +#include "machine.h" +#include "encoder.h" +#include "lame.h" +#include "lame_global_flags.h" +#include "lame-analysis.h" +#include "id3tag.h" +#include "gain_analysis.h" + +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*********************************************************************** +* +* Global Definitions +* +***********************************************************************/ + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE (!FALSE) +#endif + +#ifdef UINT_MAX +# define MAX_U_32_NUM UINT_MAX +#else +# define MAX_U_32_NUM 0xFFFFFFFF +#endif + +#ifndef PI +# ifdef M_PI +# define PI M_PI +# else +# define PI 3.14159265358979323846 +# endif +#endif + + +#ifdef M_LN2 +# define LOG2 M_LN2 +#else +# define LOG2 0.69314718055994530942 +#endif + +#ifdef M_LN10 +# define LOG10 M_LN10 +#else +# define LOG10 2.30258509299404568402 +#endif + + +#ifdef M_SQRT2 +# define SQRT2 M_SQRT2 +#else +# define SQRT2 1.41421356237309504880 +#endif + + +#define HAN_SIZE 512 +#define CRC16_POLYNOMIAL 0x8005 +#define MAX_BITS 4095 + +/* "bit_stream.h" Definitions */ +#define BUFFER_SIZE LAME_MAXMP3BUFFER + +#define Min(A, B) ((A) < (B) ? (A) : (B)) +#define Max(A, B) ((A) > (B) ? (A) : (B)) + +/* log/log10 approximations */ +#ifdef USE_FAST_LOG +#define FAST_LOG10(x) (fast_log2(x)*(LOG2/LOG10)) +#define FAST_LOG(x) (fast_log2(x)*LOG2) +#define FAST_LOG10_X(x,y) (fast_log2(x)*(LOG2/LOG10*(y))) +#define FAST_LOG_X(x,y) (fast_log2(x)*(LOG2*(y))) +#else +#define FAST_LOG10(x) log10(x) +#define FAST_LOG(x) log(x) +#define FAST_LOG10_X(x,y) (log10(x)*(y)) +#define FAST_LOG_X(x,y) (log(x)*(y)) +#endif + + + + +/*********************************************************************** +* +* Global Type Definitions +* +***********************************************************************/ + + + + /* "bit_stream.h" Type Definitions */ + + typedef struct bit_stream_struc { + unsigned char *buf; /* bit stream buffer */ + int buf_size; /* size of buffer (in number of bytes) */ + int totbit; /* bit counter of bit stream */ + int buf_byte_idx; /* pointer to top byte in buffer */ + int buf_bit_idx; /* pointer to top bit of top byte in buffer */ + + /* format of file in rd mode (BINARY/ASCII) */ + } Bit_stream_struc; + +#include "l3side.h" + + + /* variables used for --nspsytune */ + typedef struct { + /* variables for nspsytune */ + FLOAT last_en_subshort[4][9]; + int last_attacks[4]; + FLOAT pefirbuf[19]; + FLOAT longfact[SBMAX_l]; + FLOAT shortfact[SBMAX_s]; + + /* short block tuning */ + FLOAT attackthre; + FLOAT attackthre_s; + + /* variables for nspsytune2 */ + FILE *pass1fp; + } nsPsy_t; + + + typedef struct { + int sum; /* what we have seen so far */ + int seen; /* how many frames we have seen in this chunk */ + int want; /* how many frames we want to collect into one chunk */ + int pos; /* actual position in our bag */ + int size; /* size of our bag */ + int *bag; /* pointer to our bag */ + } VBR_seek_info_t; + + + /** + * ATH related stuff, if something new ATH related has to be added, + * please plugg it here into the ATH_t struct + */ + typedef struct { + int use_adjust; /* method for the auto adjustment */ + FLOAT aa_sensitivity_p; /* factor for tuning the (sample power) + point below which adaptive threshold + of hearing adjustment occurs */ + FLOAT adjust; /* lowering based on peak volume, 1 = no lowering */ + FLOAT adjust_limit; /* limit for dynamic ATH adjust */ + FLOAT decay; /* determined to lower x dB each second */ + FLOAT floor; /* lowest ATH value */ + FLOAT l[SBMAX_l]; /* ATH for sfbs in long blocks */ + FLOAT s[SBMAX_s]; /* ATH for sfbs in short blocks */ + FLOAT psfb21[PSFB21]; /* ATH for partitionned sfb21 in long blocks */ + FLOAT psfb12[PSFB12]; /* ATH for partitionned sfb12 in short blocks */ + FLOAT cb[CBANDS]; /* ATH for convolution bands */ + FLOAT eql_w[BLKSIZE / 2]; /* equal loudness weights (based on ATH) */ + } ATH_t; + + /** + * PSY Model related stuff + */ + typedef struct { + FLOAT mask_adjust; /* the dbQ stuff */ + FLOAT mask_adjust_short; /* the dbQ stuff */ + int tonalityPatch; /* temporaly needed by VBR */ + FLOAT cwlimit; + FLOAT prvTonRed[CBANDS]; + } PSY_t; + + +#define MAX_CHANNELS 2 + + + + + + struct lame_internal_flags { + + /******************************************************************** + * internal variables NOT set by calling program, and should not be * + * modified by the calling program * + ********************************************************************/ + + /* + * Some remarks to the Class_ID field: + * The Class ID is an Identifier for a pointer to this struct. + * It is very unlikely that a pointer to lame_global_flags has the same 32 bits + * in it's structure (large and other special properties, for instance prime). + * + * To test that the structure is right and initialized, use: + * if ( gfc -> Class_ID == LAME_ID ) ... + * Other remark: + * If you set a flag to 0 for uninit data and 1 for init data, the right test + * should be "if (flag == 1)" and NOT "if (flag)". Unintended modification + * of this element will be otherwise misinterpreted as an init. + */ +# define LAME_ID 0xFFF88E3B + unsigned long Class_ID; + + int lame_encode_frame_init; + int iteration_init_init; + int fill_buffer_resample_init; + +#ifndef MFSIZE +# define MFSIZE ( 3*1152 + ENCDELAY - MDCTDELAY ) +#endif + sample_t mfbuf[2][MFSIZE]; + + + struct { + void (*msgf) (const char *format, va_list ap); + void (*debugf) (const char *format, va_list ap); + void (*errorf) (const char *format, va_list ap); + } report; + + int mode_gr; /* granules per frame */ + int channels_in; /* number of channels in the input data stream (PCM or decoded PCM) */ + int channels_out; /* number of channels in the output data stream (not used for decoding) */ + FLOAT resample_ratio; /* input_samp_rate/output_samp_rate */ + + int mf_samples_to_encode; + int mf_size; + int VBR_min_bitrate; /* min bitrate index */ + int VBR_max_bitrate; /* max bitrate index */ + int bitrate_index; + int samplerate_index; + int mode_ext; + + + /* lowpass and highpass filter control */ + FLOAT lowpass1, lowpass2; /* normalized frequency bounds of passband */ + FLOAT highpass1, highpass2; /* normalized frequency bounds of passband */ + + int filter_type; /* 0=polyphase filter, 1= FIR filter 2=MDCT filter(bad) */ + int quantization; /* 0 = ISO formual, 1=best amplitude */ + int noise_shaping; /* 0 = none + 1 = ISO AAC model + 2 = allow scalefac_select=1 + */ + + int noise_shaping_amp; /* 0 = ISO model: amplify all distorted bands + 1 = amplify within 50% of max (on db scale) + 2 = amplify only most distorted band + 3 = method 1 and refine with method 2 + */ + int substep_shaping; /* 0 = no substep + 1 = use substep shaping at last step(VBR only) + (not implemented yet) + 2 = use substep inside loop + 3 = use substep inside loop and last step + */ + + int psymodel; /* 1 = gpsycho. 0 = none */ + int noise_shaping_stop; /* 0 = stop at over=0, all scalefacs amplified or + a scalefac has reached max value + 1 = stop when all scalefacs amplified or + a scalefac has reached max value + 2 = stop when all scalefacs amplified + */ + + int subblock_gain; /* 0 = no, 1 = yes */ + int use_best_huffman; /* 0 = no. 1=outside loop 2=inside loop(slow) */ + + int full_outer_loop; /* 0 = stop early after 0 distortion found. 1 = full search */ + + + /* variables used by lame.c */ + Bit_stream_struc bs; + III_side_info_t l3_side; + FLOAT ms_ratio[2]; + + /* used for padding */ + int padding; /* padding for the current frame? */ + int frac_SpF; + int slot_lag; + + + /* optional ID3 tags, used in id3tag.c */ + struct id3tag_spec tag_spec; + uint16_t nMusicCRC; + + + /* variables used by quantize.c */ + int OldValue[2]; + int CurrentStep[2]; + + FLOAT masking_lower; + char bv_scf[576]; + int pseudohalf[SFBMAX]; + + int sfb21_extra; /* will be set in lame_init_params */ + + int sparsing; + FLOAT sparseA; + FLOAT sparseB; + + /* variables used by util.c */ + /* BPC = maximum number of filter convolution windows to precompute */ +#define BPC 320 + sample_t *inbuf_old[2]; + sample_t *blackfilt[2 * BPC + 1]; + FLOAT itime[2]; + int sideinfo_len; + + /* variables for newmdct.c */ + FLOAT sb_sample[2][2][18][SBLIMIT]; + FLOAT amp_filter[32]; + + /* variables for bitstream.c */ + /* mpeg1: buffer=511 bytes smallest frame: 96-38(sideinfo)=58 + * max number of frames in reservoir: 8 + * mpeg2: buffer=255 bytes. smallest frame: 24-23bytes=1 + * with VBR, if you are encoding all silence, it is possible to + * have 8kbs/24khz frames with 1byte of data each, which means we need + * to buffer up to 255 headers! */ + /* also, max_header_buf has to be a power of two */ +#define MAX_HEADER_BUF 256 +#define MAX_HEADER_LEN 40 /* max size of header is 38 */ + struct { + int write_timing; + int ptr; + char buf[MAX_HEADER_LEN]; + } header[MAX_HEADER_BUF]; + + int h_ptr; + int w_ptr; + int ancillary_flag; + + /* variables for reservoir.c */ + int ResvSize; /* in bits */ + int ResvMax; /* in bits */ + + scalefac_struct scalefac_band; + + /* DATA FROM PSYMODEL.C */ +/* The static variables "r", "phi_sav", "new", "old" and "oldest" have */ +/* to be remembered for the unpredictability measure. For "r" and */ +/* "phi_sav", the first index from the left is the channel select and */ +/* the second index is the "age" of the data. */ + FLOAT minval[CBANDS]; + FLOAT nb_1[4][CBANDS], nb_2[4][CBANDS]; + FLOAT nb_s1[4][CBANDS], nb_s2[4][CBANDS]; + FLOAT *s3_ss; + FLOAT *s3_ll; + FLOAT decay; + + III_psy_xmin thm[4]; + III_psy_xmin en[4]; + + /* unpredictability calculation + */ + int cw_upper_index; + FLOAT ax_sav[4][2][HBLKSIZE]; + FLOAT bx_sav[4][2][HBLKSIZE]; + FLOAT rx_sav[4][2][HBLKSIZE]; + FLOAT cw[HBLKSIZE]; + + + /* fft and energy calculation */ + FLOAT tot_ener[4]; + + /* loudness calculation (for adaptive threshold of hearing) */ + FLOAT loudness_sq[2][2]; /* loudness^2 approx. per granule and channel */ + FLOAT loudness_sq_save[2]; /* account for granule delay of L3psycho_anal */ + + + /* Scale Factor Bands */ + FLOAT mld_l[SBMAX_l], mld_s[SBMAX_s]; + int bm_l[SBMAX_l], bo_l[SBMAX_l]; + int bm_s[SBMAX_s], bo_s[SBMAX_s]; + int npart_l, npart_s; + + int s3ind[CBANDS][2]; + int s3ind_s[CBANDS][2]; + + int numlines_s[CBANDS]; + int numlines_l[CBANDS]; + FLOAT rnumlines_l[CBANDS]; + + /* ratios */ + FLOAT pe[4]; + FLOAT ms_ratio_s_old, ms_ratio_l_old; + FLOAT ms_ener_ratio_old; + + /* block type */ + int blocktype_old[2]; + + /* CPU features */ + struct { + unsigned int MMX:1; /* Pentium MMX, Pentium II...IV, K6, K6-2, + K6-III, Athlon */ + unsigned int AMD_3DNow:1; /* K6-2, K6-III, Athlon */ + unsigned int SSE:1; /* Pentium III, Pentium 4 */ + unsigned int SSE2:1; /* Pentium 4, K8 */ + } CPU_features; + + /* functions to replace with CPU feature optimized versions in takehiro.c */ + int (*choose_table) (const int *ix, const int *const end, int *const s); + void (*fft_fht) (FLOAT *, int); + void (*quantize_lines_xrpow) (int l, FLOAT istep, const FLOAT * xp, int *pi); + void (*init_xrpow_core) (gr_info * const cod_info, FLOAT xrpow[576], int upper, + FLOAT * sum); + + + + nsPsy_t nsPsy; /* variables used for --nspsytune */ + + VBR_seek_info_t VBR_seek_table; /* used for Xing VBR header */ + + ATH_t *ATH; /* all ATH related stuff */ + PSY_t *PSY; + + int nogap_total; + int nogap_current; + + + /* ReplayGain */ + int decode_on_the_fly : 1; + int findReplayGain : 1; + int findPeakSample : 1; + sample_t PeakSample; + int RadioGain; + int AudiophileGain; + replaygain_t *rgdata; + + int noclipGainChange; /* gain change required for preventing clipping */ + FLOAT noclipScale; /* user-specified scale factor required for preventing clipping */ + + +#ifdef BRHIST + /* simple statistics */ + int bitrate_stereoMode_Hist[16][4 + 1]; + int bitrate_blockType_Hist[16][4 + 1 + 1]; /*norm/start/short/stop/mixed(short)/sum */ +#endif +#ifdef HAVE_GTK + /* used by the frame analyzer */ + plotting_data *pinfo; + FLOAT energy_save[4][HBLKSIZE]; + FLOAT ers_save[4]; +#endif + + int in_buffer_nsamples; + sample_t *in_buffer_0; + sample_t *in_buffer_1; + }; + + + + + +/*********************************************************************** +* +* Global Function Prototype Declarations +* +***********************************************************************/ + void freegfc(lame_internal_flags * const gfc); + extern int BitrateIndex(int, int, int); + extern int FindNearestBitrate(int, int); + extern int map2MP3Frequency(int freq); + extern int SmpFrqIndex(int, int *const); + extern int nearestBitrateFullIndex(const int brate); + extern FLOAT ATHformula(FLOAT freq, lame_global_flags * gfp); + extern FLOAT freq2bark(FLOAT freq); + extern FLOAT freq2cbw(FLOAT freq); + void disable_FPE(void); + +/* log/log10 approximations */ + extern void init_log_table(void); + extern ieee754_float32_t fast_log2(ieee754_float32_t x); + + + void fill_buffer(lame_global_flags * gfp, + sample_t * mfbuf[2], + sample_t * in_buffer[2], int nsamples, int *n_in, int *n_out); + + int fill_buffer_resample(lame_global_flags * gfp, + sample_t * outbuf, + int desired_len, + sample_t * inbuf, int len, int *num_used, int channels); + +/* same as lame_decode1 (look in lame.h), but returns + unclipped raw floating-point samples. It is declared + here, not in lame.h, because it returns LAME's + internal type sample_t. No more than 1152 samples + per channel are allowed. */ + int lame_decode1_unclipped(unsigned char *mp3buf, + int len, sample_t pcm_l[], sample_t pcm_r[]); + + + extern int has_MMX(void); + extern int has_3DNow(void); + extern int has_SSE(void); + extern int has_SSE2(void); + + + +/*********************************************************************** +* +* Macros about Message Printing and Exit +* +***********************************************************************/ + extern void lame_errorf(const lame_internal_flags * gfc, const char *, ...); + extern void lame_debugf(const lame_internal_flags * gfc, const char *, ...); + extern void lame_msgf(const lame_internal_flags * gfc, const char *, ...); +#define DEBUGF lame_debugf +#define ERRORF lame_errorf +#define MSGF lame_msgf + + +#ifdef __cplusplus +} +#endif +#endif /* LAME_UTIL_H */ diff --git a/lame-3.97/libmp3lame/vbrquantize.c b/lame-3.97/libmp3lame/vbrquantize.c new file mode 100644 index 0000000..1548c86 --- /dev/null +++ b/lame-3.97/libmp3lame/vbrquantize.c @@ -0,0 +1,1367 @@ +/* + * MP3 quantization + * + * Copyright (c) 1999-2000 Mark Taylor + * Copyright (c) 2000-2005 Robert Hegemann + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* $Id: vbrquantize.c,v 1.103.2.1 2005/11/20 14:08:25 bouvigne Exp $ */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include "util.h" +#include "l3side.h" +#include "quantize_pvt.h" +#include "vbrquantize.h" + +#ifdef WITH_DMALLOC +# include <dmalloc.h> +#endif + + + +struct algo_s; +typedef struct algo_s algo_t; + +typedef void (*quantize_f) (const algo_t *); + +typedef int (*find_f) (const FLOAT *, const FLOAT *, FLOAT, int, int); + +typedef int (*alloc_sf_f) (const algo_t *, int *, const int *, int); + +struct algo_s { + find_f find; + quantize_f quantize; + alloc_sf_f alloc; + const FLOAT *xr34orig; + lame_internal_flags *gfc; + gr_info *cod_info; + int mingain_l; + int mingain_s[3]; +}; + + + +/* Remarks on optimizing compilers: + * + * the MSVC compiler may get into aliasing problems when accessing + * memory through the fi_union. declaring it volatile does the trick here + * + * the calc_sfb_noise_* functions are not inlined because the intel compiler + * optimized executeables won't work as expected anymore + */ + +#ifdef _MSC_VER +# define VOLATILE volatile +#else +# define VOLATILE +#endif + +typedef VOLATILE union { + float f; + int i; +} fi_union; + + + +#define DOUBLEX double + +#define MAGIC_FLOAT_def (65536*(128)) +#define MAGIC_INT_def 0x4b000000 + +#ifdef TAKEHIRO_IEEE754_HACK +# define ROUNDFAC_def -0.0946f +#else +/********************************************************************* + * XRPOW_FTOI is a macro to convert floats to ints. + * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x] + * ROUNDFAC= -0.0946 + * + * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x] + * ROUNDFAC=0.4054 + *********************************************************************/ +# define QUANTFAC(rx) adj43[rx] +# define ROUNDFAC_def 0.4054f +# define XRPOW_FTOI(src,dest) ((dest) = (int)(src)) +#endif + +static int const MAGIC_INT = MAGIC_INT_def; +static DOUBLEX const ROUNDFAC = ROUNDFAC_def; +static DOUBLEX const MAGIC_FLOAT = (65536 * (128)); +static DOUBLEX const ROUNDFAC_plus_MAGIC_FLOAT = ROUNDFAC_def + MAGIC_FLOAT_def; + + + +static int +valid_sf(int sf) +{ + return (sf >= 0 ? (sf <= 255 ? sf : 255) : 0); +} + + + +static FLOAT +max_x34(const FLOAT * xr34, unsigned int bw) +{ + FLOAT xfsf = 0; + int j = bw >> 1; + int remaining = j % 2; + assert(bw >= 0); + for (j >>= 1; j > 0; --j) { + if (xfsf < xr34[0]) { + xfsf = xr34[0]; + } + if (xfsf < xr34[1]) { + xfsf = xr34[1]; + } + if (xfsf < xr34[2]) { + xfsf = xr34[2]; + } + if (xfsf < xr34[3]) { + xfsf = xr34[3]; + } + xr34 += 4; + } + if (remaining) { + if (xfsf < xr34[0]) { + xfsf = xr34[0]; + } + if (xfsf < xr34[1]) { + xfsf = xr34[1]; + } + } + return xfsf; +} + + + +static int +find_lowest_scalefac(const FLOAT xr34) +{ + FLOAT xfsf; + int sf = 128, sf_ok = 10000, delsf = 128, i; + for (i = 0; i < 8; ++i) { + delsf >>= 1; + xfsf = IPOW20(sf) * xr34; + if (xfsf <= IXMAX_VAL) { + sf_ok = sf; + sf -= delsf; + } + else { + sf += delsf; + } + } + if (sf_ok < 255) { + sf = sf_ok; + } + return sf; +} + + + +static void +k_34_4(DOUBLEX x[4], int l3[4]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[4]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); + x[0] += MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += MAGIC_FLOAT; + fi[1].f = x[1]; + x[2] += MAGIC_FLOAT; + fi[2].f = x[2]; + x[3] += MAGIC_FLOAT; + fi[3].f = x[3]; + fi[0].f = x[0] + adj43asm[fi[0].i - MAGIC_INT]; + fi[1].f = x[1] + adj43asm[fi[1].i - MAGIC_INT]; + fi[2].f = x[2] + adj43asm[fi[2].i - MAGIC_INT]; + fi[3].f = x[3] + adj43asm[fi[3].i - MAGIC_INT]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; + l3[2] = fi[2].i - MAGIC_INT; + l3[3] = fi[3].i - MAGIC_INT; +#else + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); + XRPOW_FTOI(x[2], l3[2]); + XRPOW_FTOI(x[3], l3[3]); + x[0] += QUANTFAC(l3[0]); + x[1] += QUANTFAC(l3[1]); + x[2] += QUANTFAC(l3[2]); + x[3] += QUANTFAC(l3[3]); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); + XRPOW_FTOI(x[2], l3[2]); + XRPOW_FTOI(x[3], l3[3]); +#endif +} + + + +static void +k_34_2(DOUBLEX x[2], int l3[2]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[2]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL); + x[0] += MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += MAGIC_FLOAT; + fi[1].f = x[1]; + fi[0].f = x[0] + adj43asm[fi[0].i - MAGIC_INT]; + fi[1].f = x[1] + adj43asm[fi[1].i - MAGIC_INT]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; +#else + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); + x[0] += QUANTFAC(l3[0]); + x[1] += QUANTFAC(l3[1]); + XRPOW_FTOI(x[0], l3[0]); + XRPOW_FTOI(x[1], l3[1]); +#endif +} + + + +static void +k_iso_4(DOUBLEX x[4], int l3[4]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[4]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL && x[2] <= IXMAX_VAL && x[3] <= IXMAX_VAL); + x[0] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[1].f = x[1]; + x[2] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[2].f = x[2]; + x[3] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[3].f = x[3]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; + l3[2] = fi[2].i - MAGIC_INT; + l3[3] = fi[3].i - MAGIC_INT; +#else + l3[0] = x[0] + ROUNDFAC; + l3[1] = x[1] + ROUNDFAC; + l3[2] = x[2] + ROUNDFAC; + l3[3] = x[3] + ROUNDFAC; +#endif +} + + + +static void +k_iso_2(DOUBLEX x[2], int l3[2]) +{ +#ifdef TAKEHIRO_IEEE754_HACK + fi_union fi[2]; + + assert(x[0] <= IXMAX_VAL && x[1] <= IXMAX_VAL); + x[0] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[0].f = x[0]; + x[1] += ROUNDFAC_plus_MAGIC_FLOAT; + fi[1].f = x[1]; + l3[0] = fi[0].i - MAGIC_INT; + l3[1] = fi[1].i - MAGIC_INT; +#else + l3[0] = x[0] + ROUNDFAC; + l3[1] = x[1] + ROUNDFAC; +#endif +} + + + +/* do call the calc_sfb_noise_* functions only with sf values + * for which holds: sfpow34*xr34 <= IXMAX_VAL + */ + +static FLOAT +calc_sfb_noise_x34(const FLOAT * xr, const FLOAT * xr34, unsigned int bw, int sf) +{ + DOUBLEX x[4]; + int l3[4]; + const int SF = valid_sf(sf); + const FLOAT sfpow = POW20(SF); /*pow(2.0,sf/4.0); */ + const FLOAT sfpow34 = IPOW20(SF); /*pow(sfpow,-3.0/4.0); */ + + FLOAT xfsf = 0; + int j = bw >> 1; + int remaining = j % 2; + assert(bw >= 0); + for (j >>= 1; j > 0; --j) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + x[2] = sfpow34 * xr34[2]; + x[3] = sfpow34 * xr34[3]; + + k_34_4(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + x[2] = fabs(xr[2]) - sfpow * pow43[l3[2]]; + x[3] = fabs(xr[3]) - sfpow * pow43[l3[3]]; + xfsf += (x[0] * x[0] + x[1] * x[1]) + (x[2] * x[2] + x[3] * x[3]); + + xr += 4; + xr34 += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + + k_34_2(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + xfsf += x[0] * x[0] + x[1] * x[1]; + } + return xfsf; +} + + + +static FLOAT +calc_sfb_noise_ISO(const FLOAT * xr, const FLOAT * xr34, unsigned int bw, int sf) +{ + DOUBLEX x[4]; + int l3[4]; + const int SF = valid_sf(sf); + const FLOAT sfpow = POW20(SF); /*pow(2.0,sf/4.0); */ + const FLOAT sfpow34 = IPOW20(SF); /*pow(sfpow,-3.0/4.0); */ + + FLOAT xfsf = 0; + int j = bw >> 1; + int remaining = j % 2; + assert(bw >= 0); + for (j >>= 1; j > 0; --j) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + x[2] = sfpow34 * xr34[2]; + x[3] = sfpow34 * xr34[3]; + + k_iso_4(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + x[2] = fabs(xr[2]) - sfpow * pow43[l3[2]]; + x[3] = fabs(xr[3]) - sfpow * pow43[l3[3]]; + + xfsf += (x[0] * x[0] + x[1] * x[1]) + (x[2] * x[2] + x[3] * x[3]); + + xr += 4; + xr34 += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34[0]; + x[1] = sfpow34 * xr34[1]; + + k_iso_2(x, l3); + + x[0] = fabs(xr[0]) - sfpow * pow43[l3[0]]; + x[1] = fabs(xr[1]) - sfpow * pow43[l3[1]]; + xfsf += x[0] * x[0] + x[1] * x[1]; + } + return xfsf; +} + + + +/* the find_scalefac* routines calculate + * a quantization step size which would + * introduce as much noise as is allowed. + * The larger the step size the more + * quantization noise we'll get. The + * scalefactors are there to lower the + * global step size, allowing limited + * differences in quantization step sizes + * per band (shaping the noise). + */ + +static int +find_scalefac_x34(const FLOAT * xr, const FLOAT * xr34, FLOAT l3_xmin, int bw, int sf_min) +{ + int sf = 128, sf_ok = 10000, delsf = 128, i; + for (i = 0; i < 8; ++i) { + delsf >>= 1; + if (sf <= sf_min) { + sf += delsf; + } + else { + if ((sf < 255 && calc_sfb_noise_x34(xr, xr34, bw, sf + 1) > l3_xmin) + || calc_sfb_noise_x34(xr, xr34, bw, sf) > l3_xmin + || calc_sfb_noise_x34(xr, xr34, bw, sf - 1) > l3_xmin) { + /* distortion. try a smaller scalefactor */ + sf -= delsf; + } + else { + sf_ok = sf; + sf += delsf; + } + } + } + /* returning a scalefac without distortion, if possible + */ + if (sf_ok <= 255) { + sf = sf_ok; + } + return sf; +} + + + +static int +find_scalefac_ISO(const FLOAT * xr, const FLOAT * xr34, FLOAT l3_xmin, int bw, int sf_min) +{ + int sf = 128, sf_ok = 10000, delsf = 128, i; + for (i = 0; i < 8; ++i) { + delsf >>= 1; + if (sf <= sf_min) { + sf += delsf; + } + else { + if ((sf < 255 && calc_sfb_noise_ISO(xr, xr34, bw, sf + 1) > l3_xmin) + || calc_sfb_noise_ISO(xr, xr34, bw, sf) > l3_xmin + || calc_sfb_noise_ISO(xr, xr34, bw, sf - 1) > l3_xmin) { + /* distortion. try a smaller scalefactor */ + sf -= delsf; + } + else { + sf_ok = sf; + sf += delsf; + } + } + } + /* returning a scalefac without distortion, if possible + */ + if (sf_ok <= 255) { + sf = sf_ok; + } + return sf; +} + + + +/*********************************************************************** + * + * calc_short_block_vbr_sf() + * calc_long_block_vbr_sf() + * + * Mark Taylor 2000-??-?? + * Robert Hegemann 2000-10-25 made functions of it + * + ***********************************************************************/ + +/* a variation for vbr-mtrh */ +static int +block_sf(algo_t * that, const FLOAT l3_xmin[576], int vbrsf[SFBMAX], int vbrsfmin[SFBMAX]) +{ + FLOAT max_xr34; + const FLOAT *xr = &that->cod_info->xr[0]; + const FLOAT *xr34_orig = &that->xr34orig[0]; + const int *width = &that->cod_info->width[0]; + const int max_nonzero_coeff = that->cod_info->max_nonzero_coeff; + int maxsf = 0; + int sfb = 0, j = 0, i = 0; + int const psymax = that->cod_info->psymax; + + that->mingain_l = 0; + that->mingain_s[0] = 0; + that->mingain_s[1] = 0; + that->mingain_s[2] = 0; + while (j <= max_nonzero_coeff) { + int l, w = l = width[sfb]; + int m = max_nonzero_coeff - j + 1, m1, m2; + if (l > m) { + l = m; + } + max_xr34 = max_x34(&xr34_orig[j], l); + + m1 = find_lowest_scalefac(max_xr34); + vbrsfmin[sfb] = m1; + if (that->mingain_l < m1) { + that->mingain_l = m1; + } + if (that->mingain_s[i] < m1) { + that->mingain_s[i] = m1; + } + if (i < 2) { + ++i; + } + else { + i = 0; + } + if (sfb < psymax) { + m2 = that->find(&xr[j], &xr34_orig[j], l3_xmin[sfb], l, m1); + if (maxsf < m2) { + maxsf = m2; + } + } + else { + if (maxsf < m1) { + maxsf = m1; + } + m2 = maxsf; + } + vbrsf[sfb] = m2; + ++sfb; + j += w; + } + for (; sfb < SFBMAX; ++sfb) { + vbrsf[sfb] = maxsf; + vbrsfmin[sfb] = 0; + } + return maxsf; +} + + + +/*********************************************************************** + * + * quantize xr34 based on scalefactors + * + * block_xr34 + * + * Mark Taylor 2000-??-?? + * Robert Hegemann 2000-10-20 made functions of them + * + ***********************************************************************/ + +static void +quantize_x34(const algo_t * that) +{ + DOUBLEX x[4]; + const FLOAT *xr34_orig = that->xr34orig; + gr_info *cod_info = that->cod_info; + int *l3 = cod_info->l3_enc; + int j = 0, sfb = 0; + const int max_nonzero_coeff = cod_info->max_nonzero_coeff; + + while (j <= max_nonzero_coeff) { + const int s = ((cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + const int sfac = valid_sf(cod_info->global_gain - s); + const FLOAT sfpow34 = IPOW20(sfac); + int remaining; + int l , w = l = cod_info->width[sfb]; + int m = max_nonzero_coeff - j + 1; + if (l > m) { + l = m; + } + j += w; + ++sfb; + l >>= 1; + remaining = l % 2; + + for (l >>= 1; l > 0; --l) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + x[2] = sfpow34 * xr34_orig[2]; + x[3] = sfpow34 * xr34_orig[3]; + + k_34_4(x, l3); + + l3 += 4; + xr34_orig += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + + k_34_2(x, l3); + + l3 += 2; + xr34_orig += 2; + } + } +} + + + +static void +quantize_ISO(const algo_t * that) +{ + DOUBLEX x[4]; + const FLOAT *xr34_orig = that->xr34orig; + gr_info *cod_info = that->cod_info; + int *l3 = cod_info->l3_enc; + int j = 0, sfb = 0; + const int max_nonzero_coeff = cod_info->max_nonzero_coeff; + + while (j <= max_nonzero_coeff) { + const int s = ((cod_info->scalefac[sfb] + (cod_info->preflag ? pretab[sfb] : 0)) + << (cod_info->scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + const int sfac = valid_sf(cod_info->global_gain - s); + const FLOAT sfpow34 = IPOW20(sfac); + int remaining; + int l, w = l = cod_info->width[sfb]; + int m = max_nonzero_coeff - j + 1; + if (l > m) { + l = m; + } + j += w; + ++sfb; + l >>= 1; + remaining = l % 2; + + for (l >>= 1; l > 0; --l) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + x[2] = sfpow34 * xr34_orig[2]; + x[3] = sfpow34 * xr34_orig[3]; + + k_iso_4(x, l3); + + l3 += 4; + xr34_orig += 4; + } + if (remaining) { + x[0] = sfpow34 * xr34_orig[0]; + x[1] = sfpow34 * xr34_orig[1]; + + k_iso_2(x, l3); + + l3 += 2; + xr34_orig += 2; + } + } +} + + + + +static const int max_range_short[SBMAX_s * 3] = { + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0, 0, 0 +}; + +static const int max_range_long[SBMAX_l] = + { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 0 +}; + +static const int max_range_long_lsf_pretab[SBMAX_l] = + { 7, 7, 7, 7, 7, 7, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + + + +/* + sfb=0..5 scalefac < 16 + sfb>5 scalefac < 8 + + ifqstep = ( cod_info->scalefac_scale == 0 ) ? 2 : 4; + ol_sf = (cod_info->global_gain-210.0); + ol_sf -= 8*cod_info->subblock_gain[i]; + ol_sf -= ifqstep*scalefac[gr][ch].s[sfb][i]; +*/ + +static void +set_subblock_gain(gr_info * cod_info, const int mingain_s[3], int sf[]) +{ + const int maxrange1 = 15, maxrange2 = 7; + const int ifqstepShift = (cod_info->scalefac_scale == 0) ? 1 : 2; + int *sbg = cod_info->subblock_gain; + int psymax = cod_info->psymax; + int psydiv = 18; + int sbg0, sbg1, sbg2; + int sfb, i; + + if (psydiv > psymax) { + psydiv = psymax; + } + for (i = 0; i < 3; ++i) { + int maxsf1 = 0, maxsf2 = 0, minsf = 1000; + /* see if we should use subblock gain */ + for (sfb = i; sfb < psydiv; sfb += 3) { /* part 1 */ + int v = -sf[sfb]; + if (maxsf1 < v) { + maxsf1 = v; + } + if (minsf > v) { + minsf = v; + } + } + for (; sfb < SFBMAX; sfb += 3) { /* part 2 */ + int v = -sf[sfb]; + if (maxsf2 < v) { + maxsf2 = v; + } + if (minsf > v) { + minsf = v; + } + } + + /* boost subblock gain as little as possible so we can + * reach maxsf1 with scalefactors + * 8*sbg >= maxsf1 + */ + { + int m1 = maxsf1 - (maxrange1 << ifqstepShift); + int m2 = maxsf2 - (maxrange2 << ifqstepShift); + + maxsf1 = Max(m1, m2); + } + if (minsf > 0) { + sbg[i] = minsf >> 3; + } + else { + sbg[i] = 0; + } + if (maxsf1 > 0) { + int m1 = sbg[i]; + int m2 = (maxsf1 + 7) >> 3; + sbg[i] = Max(m1, m2); + } + if (sbg[i] > 0 && mingain_s[i] > (cod_info->global_gain - sbg[i] * 8)) { + sbg[i] = (cod_info->global_gain - mingain_s[i]) >> 3; + } + if (sbg[i] > 7) { + sbg[i] = 7; + } + } + sbg0 = sbg[0] << 3; + sbg1 = sbg[1] << 3; + sbg2 = sbg[2] << 3; + for (sfb = 0; sfb < SFBMAX; sfb += 3) { + sf[sfb + 0] += sbg0; + sf[sfb + 1] += sbg1; + sf[sfb + 2] += sbg2; + } +} + + + +/* + ifqstep = ( cod_info->scalefac_scale == 0 ) ? 2 : 4; + ol_sf = (cod_info->global_gain-210.0); + ol_sf -= ifqstep*scalefac[gr][ch].l[sfb]; + if (cod_info->preflag && sfb>=11) + ol_sf -= ifqstep*pretab[sfb]; +*/ +static void +set_scalefacs(gr_info * cod_info, const int *vbrsfmin, int sf[], const int *max_range) +{ + const int ifqstep = (cod_info->scalefac_scale == 0) ? 2 : 4; + const int ifqstepShift = (cod_info->scalefac_scale == 0) ? 1 : 2; + int *scalefac = cod_info->scalefac; + int sfb, sfbmax = cod_info->sfbmax; + int *sbg = cod_info->subblock_gain; + int *window = cod_info->window; + int preflag = cod_info->preflag; + + if (preflag) { + for (sfb = 11; sfb < sfbmax; ++sfb) { + sf[sfb] += pretab[sfb] << ifqstepShift; + } + } + for (sfb = 0; sfb < sfbmax; ++sfb) { + int gain = cod_info->global_gain - (sbg[window[sfb]] << 3) + - ((preflag ? pretab[sfb] : 0) << ifqstepShift); + + if (sf[sfb] < 0) { + int m = gain - vbrsfmin[sfb]; + /* ifqstep*scalefac >= -sf[sfb], so round UP */ + scalefac[sfb] = (ifqstep - 1 - sf[sfb]) >> ifqstepShift; + + if (scalefac[sfb] > max_range[sfb]) { + scalefac[sfb] = max_range[sfb]; + } + if (scalefac[sfb] > 0 && (scalefac[sfb] << ifqstepShift) > m) { + scalefac[sfb] = m >> ifqstepShift; + } + } + else { + scalefac[sfb] = 0; + } + } + for (; sfb < SFBMAX; ++sfb) { + scalefac[sfb] = 0; /* sfb21 */ + } +} + + + +static int +checkScalefactor(const gr_info * cod_info, const int vbrsfmin[SFBMAX]) +{ + int sfb; + for (sfb = 0; sfb < cod_info->psymax; ++sfb) { + const int s = + ((cod_info->scalefac[sfb] + + (cod_info->preflag ? pretab[sfb] : 0)) << (cod_info-> + scalefac_scale + 1)) + + cod_info->subblock_gain[cod_info->window[sfb]] * 8; + + if ((cod_info->global_gain - s) < vbrsfmin[sfb]) { + /* + fprintf( stdout, "sf %d\n", sfb ); + fprintf( stdout, "min %d\n", vbrsfmin[sfb] ); + fprintf( stdout, "ggain %d\n", cod_info->global_gain ); + fprintf( stdout, "scalefac %d\n", cod_info->scalefac[sfb] ); + fprintf( stdout, "pretab %d\n", (cod_info->preflag ? pretab[sfb] : 0) ); + fprintf( stdout, "scale %d\n", (cod_info->scalefac_scale + 1) ); + fprintf( stdout, "subgain %d\n", cod_info->subblock_gain[cod_info->window[sfb]] * 8 ); + fflush( stdout ); + exit(-1); + */ + return 0; + } + } + return 1; +} + + + +/****************************************************************** + * + * short block scalefacs + * + ******************************************************************/ + +static int +short_block_constrain(const algo_t * that, int vbrsf[SFBMAX], + const int vbrsfmin[SFBMAX], int vbrmax) +{ + gr_info *cod_info = that->cod_info; + lame_internal_flags *gfc = that->gfc; + int const maxminsfb = that->mingain_l; + int mover, maxover0 = 0, maxover1 = 0, delta = 0; + int v, v0, v1; + int sfb; + int psymax = cod_info->psymax; + + for (sfb = 0; sfb < psymax; ++sfb) { + assert( vbrsf[sfb] >= vbrsfmin[sfb] ); + v = vbrmax - vbrsf[sfb]; + if (delta < v) { + delta = v; + } + v0 = v - (4 * 14 + 2 * max_range_short[sfb]); + v1 = v - (4 * 14 + 4 * max_range_short[sfb]); + if (maxover0 < v0) { + maxover0 = v0; + } + if (maxover1 < v1) { + maxover1 = v1; + } + } + if (gfc->noise_shaping == 2) { + /* allow scalefac_scale=1 */ + mover = Min(maxover0, maxover1); + } + else { + mover = maxover0; + } + if (delta > mover) { + delta = mover; + } + vbrmax -= delta; + maxover0 -= mover; + maxover1 -= mover; + + if (maxover0 == 0) { + cod_info->scalefac_scale = 0; + } + else if (maxover1 == 0) { + cod_info->scalefac_scale = 1; + } + if (vbrmax < maxminsfb) { + vbrmax = maxminsfb; + } + cod_info->global_gain = vbrmax; + + if (cod_info->global_gain < 0) { + cod_info->global_gain = 0; + } + else if (cod_info->global_gain > 255) { + cod_info->global_gain = 255; + } + for (sfb = 0; sfb < SFBMAX; ++sfb) { + vbrsf[sfb] -= vbrmax; + } + set_subblock_gain(cod_info, &that->mingain_s[0], vbrsf); + set_scalefacs(cod_info, vbrsfmin, vbrsf, max_range_short); + assert(checkScalefactor(cod_info, vbrsfmin)); + return checkScalefactor(cod_info, vbrsfmin); +} + + + +/****************************************************************** + * + * long block scalefacs + * + ******************************************************************/ + +static int +long_block_constrain(const algo_t * that, int vbrsf[SFBMAX], const int vbrsfmin[SFBMAX], int vbrmax) +{ + gr_info *cod_info = that->cod_info; + lame_internal_flags *gfc = that->gfc; + const int *max_rangep; + int const maxminsfb = that->mingain_l; + int sfb; + int maxover0, maxover1, maxover0p, maxover1p, mover, delta = 0; + int v, v0, v1, v0p, v1p, vm0p = 1, vm1p = 1; + int psymax = cod_info->psymax; + + max_rangep = gfc->mode_gr == 2 ? max_range_long : max_range_long_lsf_pretab; + + maxover0 = 0; + maxover1 = 0; + maxover0p = 0; /* pretab */ + maxover1p = 0; /* pretab */ + + for (sfb = 0; sfb < psymax; ++sfb) { + assert( vbrsf[sfb] >= vbrsfmin[sfb] ); + v = vbrmax - vbrsf[sfb]; + if (delta < v) { + delta = v; + } + v0 = v - 2 * max_range_long[sfb]; + v1 = v - 4 * max_range_long[sfb]; + v0p = v - 2 * (max_rangep[sfb] + pretab[sfb]); + v1p = v - 4 * (max_rangep[sfb] + pretab[sfb]); + if (maxover0 < v0) { + maxover0 = v0; + } + if (maxover1 < v1) { + maxover1 = v1; + } + if (maxover0p < v0p) { + maxover0p = v0p; + } + if (maxover1p < v1p) { + maxover1p = v1p; + } + } + if (vm0p == 1) { + int gain = vbrmax - maxover0p; + if (gain < maxminsfb) { + gain = maxminsfb; + } + for (sfb = 0; sfb < psymax; ++sfb) { + int a = (gain - vbrsfmin[sfb]) - 2 * pretab[sfb]; + if (a <= 0) { + vm0p = 0; + vm1p = 0; + break; + } + } + } + if (vm1p == 1) { + int gain = vbrmax - maxover1p; + if (gain < maxminsfb) { + gain = maxminsfb; + } + for (sfb = 0; sfb < psymax; ++sfb) { + int b = (gain - vbrsfmin[sfb]) - 4 * pretab[sfb]; + if (b <= 0) { + vm1p = 0; + break; + } + } + } + if (vm0p == 0) { + maxover0p = maxover0; + } + if (vm1p == 0) { + maxover1p = maxover1; + } + if (gfc->noise_shaping != 2) { + maxover1 = maxover0; + maxover1p = maxover0p; + } + mover = Min(maxover0, maxover0p); + mover = Min(mover, maxover1); + mover = Min(mover, maxover1p); + + if (delta > mover) { + delta = mover; + } + vbrmax -= delta; + if (vbrmax < maxminsfb) { + vbrmax = maxminsfb; + } + maxover0 -= mover; + maxover0p -= mover; + maxover1 -= mover; + maxover1p -= mover; + + if (maxover0 == 0) { + cod_info->scalefac_scale = 0; + cod_info->preflag = 0; + max_rangep = max_range_long; + } + else if (maxover0p == 0) { + cod_info->scalefac_scale = 0; + cod_info->preflag = 1; + } + else if (maxover1 == 0) { + cod_info->scalefac_scale = 1; + cod_info->preflag = 0; + max_rangep = max_range_long; + } + else if (maxover1p == 0) { + cod_info->scalefac_scale = 1; + cod_info->preflag = 1; + } + else { + assert(0); /* this should not happen */ + } + cod_info->global_gain = vbrmax; + if (cod_info->global_gain < 0) { + cod_info->global_gain = 0; + } + else if (cod_info->global_gain > 255) { + cod_info->global_gain = 255; + } + for (sfb = 0; sfb < SFBMAX; ++sfb) { + vbrsf[sfb] -= vbrmax; + } + set_scalefacs(cod_info, vbrsfmin, vbrsf, max_rangep); + assert(checkScalefactor(cod_info, vbrsfmin)); + return checkScalefactor(cod_info, vbrsfmin); +} + + + +static int +bitcount(const algo_t * that) +{ + if (that->gfc->mode_gr == 2) { + return scale_bitcount(that->cod_info); + } + else { + return scale_bitcount_lsf(that->gfc, that->cod_info); + } +} + + + +static int +quantizeAndCountBits(const algo_t * that) +{ + that->quantize(that); + that->cod_info->part2_3_length = noquant_count_bits(that->gfc, that->cod_info, 0); + return that->cod_info->part2_3_length; +} + + + +static int +tryScalefacColor(const algo_t * that, int vbrsf[SFBMAX], + const int vbrsf2[SFBMAX], const int vbrsfmin[SFBMAX], int I, int M, int target) +{ + FLOAT xrpow_max = that->cod_info->xrpow_max; + int i, nbits; + int gain, vbrmax = 0; + + for (i = 0; i < SFBMAX; ++i) { + gain = target + (vbrsf2[i] - target) * I / M; + if (gain < vbrsfmin[i]) { + gain = vbrsfmin[i]; + } + if (gain > 255) { + gain = 255; + } + if (vbrmax < gain) { + vbrmax = gain; + } + vbrsf[i] = gain; + } + if (!that->alloc(that, vbrsf, vbrsfmin, vbrmax)) { + return LARGE_BITS; + } + bitcount(that); + nbits = quantizeAndCountBits(that); + that->cod_info->xrpow_max = xrpow_max; + return nbits; +} + + + +static void +searchScalefacColorMax(const algo_t * that, int sfwork[SFBMAX], + const int sfcalc[SFBMAX], const int vbrsfmin[SFBMAX], int bits) +{ + int const psymax = that->cod_info->psymax; + int nbits, last, i, ok = -1, l = 0, r, vbrmin = 255, vbrmax = 0, M, target; + for (i = 0; i < psymax; ++i) { + if (vbrmin > sfcalc[i]) { + vbrmin = sfcalc[i]; + } + if (vbrmax < sfcalc[i]) { + vbrmax = sfcalc[i]; + } + } + M = vbrmax - vbrmin; + + if (M == 0) { + return; + } + target = vbrmax; + for (l = 0, r = M, last = i = M / 2; l <= r; i = (l + r) / 2) { + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, i, M, target); + if (nbits < bits) { + ok = i; + l = i + 1; + } + else { + r = i - 1; + } + last = i; + } + if (last != ok) { + if (ok == -1) { + ok = 0; + } + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, ok, M, target); + } +} + + +#if 0 +static void +searchScalefacColorMin(const algo_t * that, int sfwork[SFBMAX], + const int sfcalc[SFBMAX], const int vbrsfmin[SFBMAX], int bits) +{ + int const psymax = that->cod_info->psymax; + int nbits, last, i, ok = -1, l = 0, r, vbrmin = 255, vbrmax = 0, M, target; + for (i = 0; i < psymax; ++i) { + if (vbrmin > sfcalc[i]) { + vbrmin = sfcalc[i]; + } + if (vbrmax < sfcalc[i]) { + vbrmax = sfcalc[i]; + } + } + M = vbrmax - vbrmin; + + if (M == 0) { + return; + } + target = vbrmin; + for (l = 0, r = M, last = i = M / 2; l <= r; i = (l + r) / 2) { + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, i, M, target); + if (nbits > bits) { + ok = i; + r = i - 1; + } + else { + l = i + 1; + } + last = i; + } + if (last != ok) { + if (ok == -1) { + ok = 0; + } + nbits = tryScalefacColor(that, sfwork, sfcalc, vbrsfmin, ok, M, target); + } +} +#endif + + +static int +tryGlobalStepsize(const algo_t * that, const int sfwork[SFBMAX], + const int vbrsfmin[SFBMAX], int delta) +{ + FLOAT xrpow_max = that->cod_info->xrpow_max; + int sftemp[SFBMAX], i, nbits; + int gain, vbrmax = 0; + for (i = 0; i < SFBMAX; ++i) { + gain = sfwork[i] + delta; + if (gain < vbrsfmin[i]) { + gain = vbrsfmin[i]; + } + if (gain > 255) { + gain = 255; + } + if (vbrmax < gain) { + vbrmax = gain; + } + sftemp[i] = gain; + } + if (!that->alloc(that, sftemp, vbrsfmin, vbrmax)) { + return LARGE_BITS; + } + bitcount(that); + nbits = quantizeAndCountBits(that); + that->cod_info->xrpow_max = xrpow_max; + return nbits; +} + + + +static void +searchGlobalStepsizeMax(const algo_t * that, const int sfwork[SFBMAX], + const int vbrsfmin[SFBMAX], int target) +{ + gr_info *cod_info = that->cod_info; + const int gain = cod_info->global_gain; + int curr = gain; + int gain_ok = 1024; + int nbits = LARGE_BITS; + int l = gain, r = 512; + + assert(gain >= 0); + while (l <= r) { + curr = (l + r) >> 1; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + if (cod_info->part2_length >= LARGE_BITS || nbits >= LARGE_BITS) { + l = curr + 1; + continue; + } + if (nbits + cod_info->part2_length < target) { + r = curr - 1; + gain_ok = curr; + } + else { + l = curr + 1; + if (gain_ok == 1024) { + gain_ok = curr; + } + } + } + if (gain_ok != curr) { + curr = gain_ok; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + } +} + +#if 0 +static void +searchGlobalStepsizeMin(const algo_t * that, const int sfwork[SFBMAX], + const int vbrsfmin[SFBMAX], int target) +{ + gr_info *cod_info = that->cod_info; + const int gain = cod_info->global_gain; + int curr = gain; + int gain_ok = 1024; + int nbits = LARGE_BITS; + int l = 0, r = gain; + + assert(gain >= 0); + while (l <= r) { + curr = (l + r) >> 1; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + if (cod_info->part2_length >= LARGE_BITS || nbits >= LARGE_BITS) { + l = curr + 1; + continue; + } + if (nbits + cod_info->part2_length < target) { + l = curr + 1; + if (gain_ok == 1024) { + gain_ok = curr; + } + } + else { + r = curr - 1; + gain_ok = curr; + } + } + if (gain_ok != curr) { + curr = gain_ok; + nbits = tryGlobalStepsize(that, sfwork, vbrsfmin, curr - gain); + } +} +#endif + + +/************************************************************************ + * + * VBR_noise_shaping() + * + * may result in a need of too many bits, then do it CBR like + * + * Robert Hegemann 2000-10-25 + * + ***********************************************************************/ + +int +VBR_noise_shaping(lame_internal_flags * gfc, const FLOAT xr34orig[576], + const FLOAT l3_xmin[576], int maxbits, int gr, int ch) +{ + int sfwork[SFBMAX]; + int sfcalc[SFBMAX]; + int vbrsfmin[SFBMAX]; + algo_t that; + int vbrmax; + gr_info *cod_info = &gfc->l3_side.tt[gr][ch]; + + that.xr34orig = xr34orig; + if (gfc->quantization) { + that.find = find_scalefac_x34; + that.quantize = quantize_x34; + } + else { + that.find = find_scalefac_ISO; + that.quantize = quantize_ISO; + } + if (cod_info->block_type == SHORT_TYPE) { + that.alloc = short_block_constrain; + } + else { + that.alloc = long_block_constrain; + } + that.gfc = gfc; + that.cod_info = &gfc->l3_side.tt[gr][ch]; + + memset(cod_info->l3_enc, 0, 576 * sizeof(int)); + + vbrmax = block_sf(&that, l3_xmin, sfcalc, vbrsfmin); + memcpy(sfwork, sfcalc, SFBMAX * sizeof(int)); + that.alloc(&that, sfwork, vbrsfmin, vbrmax); + if (0 != bitcount(&that)) { + /* this should not happen due to the way the scalefactors are selected + */ + cod_info->part2_3_length = LARGE_BITS; + return -1; + } + quantizeAndCountBits(&that); + if (cod_info->part2_3_length > maxbits - cod_info->part2_length) { + searchScalefacColorMax(&that, sfwork, sfcalc, vbrsfmin, maxbits); + } + if (cod_info->part2_3_length > maxbits - cod_info->part2_length) { + searchGlobalStepsizeMax(&that, sfwork, vbrsfmin, maxbits); + } + if (gfc->use_best_huffman == 2) { + best_huffman_divide(gfc, cod_info); + } + assert(cod_info->global_gain < 256u); + + if (cod_info->part2_3_length + cod_info->part2_length >= LARGE_BITS) { + cod_info->part2_3_length = LARGE_BITS; + return -2; /* Houston, we have a problem */ + } + return 0; +} diff --git a/lame-3.97/libmp3lame/vbrquantize.h b/lame-3.97/libmp3lame/vbrquantize.h new file mode 100644 index 0000000..3219d57 --- /dev/null +++ b/lame-3.97/libmp3lame/vbrquantize.h @@ -0,0 +1,28 @@ +/* + * MP3 VBR quantization + * + * Copyright (c) 1999 Mark Taylor + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_VBRQUANTIZE_H +#define LAME_VBRQUANTIZE_H + +int VBR_noise_shaping(lame_internal_flags * gfc, const FLOAT xr34orig[576], + const FLOAT l3_xmin[576], int maxbits, int gr, int ch); + +#endif /* LAME_VBRQUANTIZE_H */ diff --git a/lame-3.97/libmp3lame/version.c b/lame-3.97/libmp3lame/version.c new file mode 100644 index 0000000..49ee6ea --- /dev/null +++ b/lame-3.97/libmp3lame/version.c @@ -0,0 +1,234 @@ +/* + * Version numbering for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/*! + \file version.c + \brief Version numbering for LAME. + + Contains functions which describe the version of LAME. + + \author A.L. Faber + \version \$Id: version.c,v 1.24 2005/08/28 17:02:11 bouvigne Exp $ + \ingroup libmp3lame +*/ + + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + + +#include <stdio.h> +#include "version.h" /* macros of version numbers */ + +#ifdef WITH_DMALLOC +#include <dmalloc.h> +#endif + +/*! Stringify \a x. */ +#define STR(x) #x +/*! Stringify \a x, perform macro expansion. */ +#define XSTR(x) STR(x) + + + +/*! Get the LAME version string. */ +/*! + \param void + \return a pointer to a string which describes the version of LAME. +*/ +const char* get_lame_version ( void ) /* primary to write screen reports */ +{ + /* Here we can also add informations about compile time configurations */ + +#if LAME_ALPHA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " " + "(alpha " XSTR(LAME_PATCH_VERSION) ", " __DATE__ " " __TIME__ ")"; +#elif LAME_BETA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " " + "(beta " XSTR(LAME_PATCH_VERSION) ", " __DATE__ ")"; +#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "." XSTR(LAME_PATCH_VERSION); +#else + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION); +#endif + + return str; +} + + +/*! Get the short LAME version string. */ +/*! + It's mainly for inclusion into the MP3 stream. + + \param void + \return a pointer to the short version of the LAME version string. +*/ +const char* get_lame_short_version ( void ) +{ + /* adding date and time to version string makes it harder for output + validation */ + +#if LAME_ALPHA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " (alpha)"; +#elif LAME_BETA_VERSION + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " (beta)"; +#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "." XSTR(LAME_PATCH_VERSION); +#else + static /*@observer@*/ const char *const str = + XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION); +#endif + + return str; +} + +/*! Get the _very_ short LAME version string. */ +/*! + It's used in the LAME VBR tag only. + + \param void + \return a pointer to the short version of the LAME version string. +*/ +const char* get_lame_very_short_version ( void ) +{ + /* adding date and time to version string makes it harder for output + validation */ + +#if LAME_ALPHA_VERSION + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "a"; +#elif LAME_BETA_VERSION + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "b"; +#elif LAME_RELEASE_VERSION && (LAME_PATCH_VERSION > 0) + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) "r"; +#else + static /*@observer@*/ const char *const str = + "LAME" XSTR(LAME_MAJOR_VERSION) "." XSTR(LAME_MINOR_VERSION) " "; +#endif + + return str; +} + +/*! Get the version string for GPSYCHO. */ +/*! + \param void + \return a pointer to a string which describes the version of GPSYCHO. +*/ +const char* get_psy_version ( void ) +{ +#if PSY_ALPHA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(PSY_MAJOR_VERSION) "." XSTR(PSY_MINOR_VERSION) + " (alpha " XSTR(PSY_ALPHA_VERSION) ", " __DATE__ " " __TIME__ ")"; +#elif PSY_BETA_VERSION > 0 + static /*@observer@*/ const char *const str = + XSTR(PSY_MAJOR_VERSION) "." XSTR(PSY_MINOR_VERSION) + " (beta " XSTR(PSY_BETA_VERSION) ", " __DATE__ ")"; +#else + static /*@observer@*/ const char *const str = + XSTR(PSY_MAJOR_VERSION) "." XSTR(PSY_MINOR_VERSION); +#endif + + return str; +} + + +/*! Get the URL for the LAME website. */ +/*! + \param void + \return a pointer to a string which is a URL for the LAME website. +*/ +const char* get_lame_url ( void ) +{ + static /*@observer@*/ const char *const str = LAME_URL; + + return str; +} + + +/*! Get the numerical representation of the version. */ +/*! + Writes the numerical representation of the version of LAME and + GPSYCHO into lvp. + + \param lvp +*/ +void get_lame_version_numerical ( lame_version_t *const lvp ) +{ + static /*@observer@*/ const char *const features = ""; /* obsolete */ + + /* generic version */ + lvp->major = LAME_MAJOR_VERSION; + lvp->minor = LAME_MINOR_VERSION; +#if LAME_ALPHA_VERSION + lvp->alpha = LAME_PATCH_VERSION; + lvp->beta = 0; +#elif LAME_BETA_VERSION + lvp->alpha = 0; + lvp->beta = LAME_PATCH_VERSION; +#else + lvp->alpha = 0; + lvp->beta = 0; +#endif + + /* psy version */ + lvp->psy_major = PSY_MAJOR_VERSION; + lvp->psy_minor = PSY_MINOR_VERSION; + lvp->psy_alpha = PSY_ALPHA_VERSION; + lvp->psy_beta = PSY_BETA_VERSION; + + /* compile time features */ + /*@-mustfree@*/ + lvp->features = features; + /*@=mustfree@*/ +} + + +const char* get_lame_os_bitness ( void ) +{ + static /*@observer@*/ const char *const strXX = ""; + static /*@observer@*/ const char *const str32 = "32bits"; + static /*@observer@*/ const char *const str64 = "64bits"; + + switch (sizeof(void*)){ + case 4: + return str32; + break; + case 8: + return str64; + break; + default: + return strXX; + } +} + +/* end of version.c */ + diff --git a/lame-3.97/libmp3lame/version.h b/lame-3.97/libmp3lame/version.h new file mode 100644 index 0000000..7607ec7 --- /dev/null +++ b/lame-3.97/libmp3lame/version.h @@ -0,0 +1,61 @@ +/* + * Version numbering for LAME. + * + * Copyright (c) 1999 A.L. Faber + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef LAME_VERSION_H +#define LAME_VERSION_H + +# include <lame.h> + +/* + * To make a string from a token, use the # operator: + * + * #define __STR(x) #x + * #define STR(x) __STR(x) + */ + +# define LAME_URL "http://www.mp3dev.org/" + + +# define LAME_MAJOR_VERSION 3 /* Major version number */ +# define LAME_MINOR_VERSION 97 /* Minor version number */ +# define LAME_TYPE_VERSION 2 /* 0:alpha 1:beta 2:release */ +# define LAME_PATCH_VERSION 0 /* Patch level */ +# define LAME_ALPHA_VERSION (LAME_TYPE_VERSION==0) +# define LAME_BETA_VERSION (LAME_TYPE_VERSION==1) +# define LAME_RELEASE_VERSION (LAME_TYPE_VERSION==2) + +# define PSY_MAJOR_VERSION 0 /* Major version number */ +# define PSY_MINOR_VERSION 90 /* Minor version number */ +# define PSY_ALPHA_VERSION 0 /* Set number if this is an alpha version, otherwise zero */ +# define PSY_BETA_VERSION 0 /* Set number if this is a beta version, otherwise zero */ + + +const char* get_lame_version ( void ); +const char* get_lame_short_version ( void ); +const char* get_psy_version ( void ); +const char* get_lame_url ( void ); +void get_lame_version_numerical ( lame_version_t *const lvp ); +const char* get_lame_os_bitness ( void ); + +#endif /* LAME_VERSION_H */ + +/* End of version.h */ + diff --git a/lame-3.97/ltconfig b/lame-3.97/ltconfig new file mode 100644 index 0000000..bad848d --- /dev/null +++ b/lame-3.97/ltconfig @@ -0,0 +1,3096 @@ +#! /bin/sh + +# ltconfig - Create a system-specific libtool. +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A lot of this script is taken from autoconf-2.10. + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} +echo=echo +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec "$SHELL" "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit 0 +fi + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) PATH_SEPARATOR=';' ;; + *) PATH_SEPARATOR=':' ;; + esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string="`eval $cmd`") 2>/dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || + test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running ltconfig again with it. + ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf "%s\n"' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + # Cool, printf works + : + elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && + test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# The name of this program. +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + +# Constants: +PROGRAM=ltconfig +PACKAGE=libtool +VERSION=1.3.4-freebsd-ports +TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)" +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' +rm="rm -f" + +help="Try \`$progname --help' for more information." + +# Global variables: +default_ofile=libtool +can_build_shared=yes +enable_shared=yes +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +enable_static=yes +enable_fast_install=yes +install_ltlibs=yes +release_suffix=yes +enable_dlopen=unknown +enable_win32_dll=no +ltmain= +silent= +srcdir= +ac_config_guess= +ac_config_sub= +host= +nonopt= +ofile="$default_ofile" +verify_host=yes +with_gcc=no +with_gnu_ld=no +need_locks=yes +ac_ext=c +objext=o +libext=a +exeext= +cache_file= + +old_AR="$AR" +old_CC="$CC" +old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" +old_LDFLAGS="$LDFLAGS" +old_LD="$LD" +old_LN_S="$LN_S" +old_LIBS="$LIBS" +old_NM="$NM" +old_RANLIB="$RANLIB" +old_DLLTOOL="$DLLTOOL" +old_OBJDUMP="$OBJDUMP" +old_AS="$AS" + +# Parse the command line options. +args= +prev= +for option +do + case "$option" in + -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + eval "$prev=\$option" + prev= + continue + fi + + case "$option" in + --help) cat <<EOM +Usage: $progname [OPTION]... [HOST [LTMAIN]] + +Generate a system-specific libtool script. + + --build no-op to keep compatability with configure scripts generated for 1.4 + --debug enable verbose shell tracing + --disable-shared do not build shared libraries + --disable-static do not build static libraries + --disable-fast-install do not optimize for fast installation + --disable-ltlibs don't install the .la archives + --release-ignore don't use -release specification + --release-suffix use -release suffix for all files + --enable-dlopen enable dlopen support + --enable-win32-dll enable building dlls on win32 hosts + --help display this help and exit + --no-verify do not verify that HOST is a valid host type +-o, --output=FILE specify the output file [default=$default_ofile] + --quiet same as \`--silent' + --silent do not print informational messages + --srcdir=DIR find \`config.guess' in DIR + --version output version information and exit + --with-gcc assume that the GNU C compiler will be used + --with-gnu-ld assume that the C compiler uses the GNU linker + --disable-lock disable file locking + --cache-file=FILE configure cache file + +LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program +that provides basic libtool functionality. + +HOST is the canonical host system name [default=guessed]. +EOM + exit 0 + ;; + + --build=*) ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --disable-shared) enable_shared=no ;; + + --disable-static) enable_static=no ;; + + --disable-fast-install) enable_fast_install=no ;; + + --disable-ltlibs) install_ltlibs=no ;; + + --release-ignore) release_suffix=no ;; + + --release-suffix) release_suffix=all ;; + + --enable-dlopen) enable_dlopen=yes ;; + + --enable-win32-dll) enable_win32_dll=yes ;; + + --quiet | --silent) silent=yes ;; + + --srcdir) prev=srcdir ;; + --srcdir=*) srcdir="$optarg" ;; + + --no-verify) verify_host=no ;; + + --output | -o) prev=ofile ;; + --output=*) ofile="$optarg" ;; + + --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;; + + --with-gcc) with_gcc=yes ;; + --with-gnu-ld) with_gnu_ld=yes ;; + + --disable-lock) need_locks=no ;; + + --cache-file=*) cache_file="$optarg" ;; + + -*) + echo "$progname: unrecognized option \`$option'" 1>&2 + echo "$help" 1>&2 + exit 1 + ;; + + *) + if test -z "$ltmain"; then + ltmain="$option" + elif test -z "$host"; then +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then +# echo "$progname: warning \`$option' is not a valid host type" 1>&2 +# fi + host="$option" + else + echo "$progname: too many arguments" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac +done + +if test -z "$ltmain"; then + echo "$progname: you must specify a LTMAIN file" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +if test ! -f "$ltmain"; then + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +# Quote any args containing shell metacharacters. +ltconfig_args= +for arg +do + case "$arg" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ltconfig_args="$ltconfig_args '$arg'" ;; + *) ltconfig_args="$ltconfig_args $arg" ;; + esac +done + +# A relevant subset of AC_INIT. + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 5 compiler messages saved in config.log +# 6 checking for... messages and results +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>>./config.log + +# 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 "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi +if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi + +if test -n "$cache_file" && test -r "$cache_file"; then + echo "loading cache $cache_file within ltconfig" + . $cache_file +fi + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + +if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to LTMAIN. + srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. +fi + +trap "$rm conftest*; exit 1" 1 2 15 +if test "$verify_host" = yes; then + # Check for config.guess and config.sub. + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/config.guess; then + ac_aux_dir=$ac_dir + break + fi + done + if test -z "$ac_aux_dir"; then + echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 + echo "$help" 1>&2 + exit 1 + fi + ac_config_guess=$ac_aux_dir/config.guess + ac_config_sub=$ac_aux_dir/config.sub + + # Make sure we can run config.sub. + if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : + else + echo "$progname: cannot run $ac_config_sub" 1>&2 + echo "$help" 1>&2 + exit 1 + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 + + host_alias=$host + case "$host_alias" in + "") + if host_alias=`$SHELL $ac_config_guess`; then : + else + echo "$progname: cannot guess host type; you must specify one" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac + host=`$SHELL $ac_config_sub $host_alias` + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 + +elif test -z "$host"; then + echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 + echo "$help" 1>&2 + exit 1 +else + host_alias=$host +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +case "$host_os" in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR cru $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar + +# Set a sane default for `OBJDUMP'. +test -z "$OBJDUMP" && OBJDUMP=objdump + +# If RANLIB is not set, then run the test. +if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then + RANLIB="ranlib" + result="ranlib" + break + fi + done + IFS="$save_ifs" + + echo "$ac_t$result" 1>&6 +fi + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" +fi + +# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$AS" && AS=as + +# Check to see if we are using GCC. +if test "$with_gcc" != yes || test -z "$CC"; then + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then + CC="gcc" + break + fi + done + IFS="$save_ifs" + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + fi + + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/cc || test -f $dir/cc$ac_exeext; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue + fi + CC="cc" + break + fi + done + IFS="$save_ifs" + if test $cc_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same name, so the bogon will be chosen + # first if we set CC to just the name; use the full file name. + shift + set dummy "$dir/cc" "$@" + shift + CC="$@" + fi + fi + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$CC"; then + echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 + exit 1 + fi + fi + + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:581: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <<EOF +#ifdef __GNUC__ + yes; +#endif +EOF + if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c + echo "$ac_t$with_gcc" 1>&6 +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo $ac_n "checking for object suffix... $ac_c" 1>&6 +$rm conftest* +echo 'int i = 1;' > conftest.c +echo "$progname:603: checking for object suffix" >& 5 +if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c) ;; + *) objext=`echo $ac_file | sed -e s/conftest.//` ;; + esac + done +else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* +echo "$ac_t$objext" 1>&6 + +echo $ac_n "checking for executable suffix... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_exeext="no" + $rm conftest* + echo 'main () { return 0; }' > conftest.c + echo "$progname:629: checking for executable suffix" >& 5 + if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + for ac_file in conftest.*; do + case $ac_file in + *.c | *.err | *.$objext ) ;; + *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; + esac + done + else + cat conftest.err 1>&5 + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* +fi +if test "X$ac_cv_exeext" = Xno; then + exeext="" +else + exeext="$ac_cv_exeext" +fi +echo "$ac_t$ac_cv_exeext" 1>&6 + +echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 +pic_flag= +special_shlib_compile_flags= +wl= +link_static_flag= +no_builtin_flag= + +if test "$with_gcc" = yes; then + wl='-Wl,' + link_static_flag='-static' + + case "$host_os" in + beos* | irix5* | irix6* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # we not sure about C++ programs. + link_static_flag="$link_static_flag ${wl}-lC" + ;; + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + sysv4*MP*) + if test -d /usr/nec; then + pic_flag=-Kconform_pic + fi + ;; + *) + pic_flag='-fPIC' + ;; + esac +else + # PORTME Check for PIC flags for the system compiler. + case "$host_os" in + aix3* | aix4*) + # All AIX code is PIC. + link_static_flag='-bnso -bI:/lib/syscalls.exp' + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + link_static_flag="${wl}-a ${wl}archive" + pic_flag='+Z' + ;; + + irix5* | irix6*) + wl='-Wl,' + link_static_flag='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | os2*) + # We can build DLLs from non-PIC. + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' + ;; + + sco3.2v5*) + pic_flag='-Kpic' + link_static_flag='-dn' + special_shlib_compile_flags='-belf' + ;; + + solaris*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + sunos4*) + pic_flag='-PIC' + link_static_flag='-Bstatic' + wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + sysv4*MP*) + if test -d /usr/nec ;then + pic_flag='-Kconform_pic' + link_static_flag='-Bstatic' + fi + ;; + *) + can_build_shared=no + ;; + esac +fi + +if test -n "$pic_flag"; then + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + case "$host_os" in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + ;; + *) + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + ;; + esac + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + echo "$ac_t"none 1>&6 +fi + +# Check to see if options -o and -c are simultaneously supported by compiler +echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +$rm conftest* +echo "int some_variable = 0;" > conftest.c +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.o" +echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 +if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s out/conftest.err; then + echo "$ac_t"no 1>&6 + compiler_c_o=no + else + echo "$ac_t"yes 1>&6 + compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + compiler_c_o=no + echo "$ac_t"no 1>&6 +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 +if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_o_lo=no + else + echo "$ac_t"yes 1>&6 + compiler_o_lo=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_o_lo=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$ac_t$hard_links" 1>&6 + $rm conftest* + if test "$hard_links" = no; then + echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 + need_locks=warn + fi +else + need_locks=no +fi + +if test "$with_gcc" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 + $rm conftest* + echo "int some_variable = 0;" > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" + echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + compiler_rtti_exceptions=no + else + echo "$ac_t"yes 1>&6 + compiler_rtti_exceptions=yes + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + compiler_rtti_exceptions=no + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi + +fi + +# Check for any special shared library compilation flags. +if test -n "$special_shlib_compile_flags"; then + echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : + else + echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 + can_build_shared=no + fi +fi + +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 +else + echo "$ac_t"none 1>&6 + link_static_flag= +fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* + +if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 + $rm conftest.dat + if ln -s X conftest.dat 2>/dev/null; then + $rm conftest.dat + LN_S="ln -sf" + else + LN_S=ln + fi + if test "$LN_S" = "ln -sf"; then + echo "$ac_t"yes 1>&6 + else + echo "$ac_t"no 1>&6 + fi +fi + +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:991: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:1015: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:1018: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + fi + + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + +# See if the linker supports building shared libraries. +echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# include_expsyms should be a list of space-separated symbols to be *always* +# included in the symbol list +include_expsyms= +# exclude_expsyms can be an egrep regular expression of symbols to exclude +# it will be wrapped by ` (' and `)$', so one must not match beginning or +# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +# as well as any symbol that contains `d'. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" +# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +# platforms (ab)use it in PIC code, but their linkers get confused if +# the symbol is explicitly referenced. Since portable code cannot +# rely on this symbol name, it's probably fine to never include it in +# preloaded symbol tables. + +case "$host_os" in +cygwin* | mingw*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$with_gcc" != yes; then + with_gnu_ld=no + fi + ;; + +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case "$host_os" in + aix3* | aix4*) + # On AIX, the GNU linker is very broken + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach <jrb3@best.com> says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' + + archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ + _lt_hint=1; + for symbol in `cat $export_symbols`; do + echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; + _lt_hint=`expr 1 + \$_lt_hint`; + done~ + test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ + test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ + $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ + $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' + + old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' + # can we support soname and/or expsyms with a.out? -oliva + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $compile_rpath $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$host_os" in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4*) + hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' + hardcode_libdir_separator=':' + if test "$with_gcc" = yes; then + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + shared_flag='-shared' + else + shared_flag='${wl}-bM:SRE' + hardcode_direct=yes + fi + allow_undefined_flag=' ${wl}-berok' + archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' + archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' + case "$host_os" in aix4.[01]|aix4.[01].*) + # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on + always_export_symbols=yes ;; + esac + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs' + fix_srcfile_path='`cygpath -w $srcfile`' + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case "$host_os" in + hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF + fi + hardcode_libdir_flag_spec='${wl}-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + + osf3*) + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # As osf3* with the addition of the -msym flag + if test "$with_gcc" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ;; + + solaris*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case "$host_os" in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + unixware7*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$ac_t$ld_shlibs" 1>&6 +test "$ld_shlibs" = no && can_build_shared=no + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" + for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + break + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + break + else + NM=${NM="$ac_dir/nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + fi + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" + ;; +irix*) + symcode='[BCDEGRST]' + ;; +solaris*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. + global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + $rm conftest* + cat > conftest.c <<EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(){} +#ifdef __cplusplus +} +#endif +main(){nm_test_var='a';nm_test_func();return(0);} +EOF + + echo "$progname:1635: checking if global_symbol_pipe works" >&5 + if { (eval echo $progname:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:1639: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat <<EOF > conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' + + cat <<EOF >> conftest.c +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$objext conftstm.$objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + $rm conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + global_symbol_pipe= + fi +done +if test "$pipe_works" = yes; then + echo "${ac_t}ok" 1>&6 +else + echo "${ac_t}failed" 1>&6 +fi + +if test -z "$global_symbol_pipe"; then + global_symbol_to_cdecl= +fi + +# Check hardcoding attributes. +echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$ac_t$hardcode_action" 1>&6 + + +reload_flag= +reload_cmds='$LD$reload_flag -o $output$reload_objs' +echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 +# PORTME Some linkers may need a different reload flag. +reload_flag='-r' +echo "$ac_t$reload_flag" 1>&6 +test -n "$reload_flag" && reload_flag=" $reload_flag" + +# PORTME Fill in your ld.so characteristics +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +sys_lib_search_path_spec="/lib /usr/lib" +file_magic_cmd= +file_magic_test_file= +deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [regex]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given egrep regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. +echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 +case "$host_os" in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4*) + version_type=linux + # AIX has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + # We preserve .a as extension for shared libraries though AIX4.2 + # and later linker supports .so + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' + shlibpath_var=LIBPATH + deplibs_check_method=pass_all + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + deplibs_check_method=pass_all + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + export_dynamic_flag_spec=-rdynamic + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw*) + version_type=windows + need_version=no + need_lib_prefix=no + if test "$with_gcc" = yes; then + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' + else + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + fi + dynamic_linker='Win32 ld.exe' + deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + file_magic_cmd='${OBJDUMP} -f' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case "$version_type" in + freebsd-elf*) + deplibs_check_method='file_magic (ELF [0-9][0-9]*-bit [LM]SB shared object|current ar archive)' + ;; + freebsd-*) + deplibs_check_method='file_magic FreeBSD.* shared library' + ;; + esac + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so.*` + if test "$release_suffix" = all; then + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}.so' + fi + need_version=no + need_lib_prefix=no + finish_cmds='/usr/bin/env OBJFORMAT="'"$objformat"'" /sbin/ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + case "$host_os" in + freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + ;; + *) # from 3.2 on + shlibpath_overrides_runpath=no + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=irix + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' + case "$host_os" in + irix5*) + libsuff= shlibsuff= + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case "$LD" in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib${libsuff}/libc.so*` + deplibs_check_method='pass_all' + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in + powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi + ;; + +netbsd*) + version_type=sunos + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + ;; + +openbsd*) + version_type=sunos + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + need_version=no + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + shlibpath_var=LD_LIBRARY_PATH + # this will be overridden with pass_all, but let us keep it just in case + deplibs_check_method='file_magic COFF format alpha shared library' + file_magic_cmd=/usr/bin/file + file_magic_test_file=/shlib/libc.so + deplibs_check_method='pass_all' + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" + file_magic_cmd=/usr/bin/file + file_magic_test_file=/lib/libc.so + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case "$host_vendor" in + ncr) + deplibs_check_method='pass_all' + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + file_magic_cmd=/usr/bin/file + file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + esac + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$ac_t$dynamic_linker" 1>&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + +# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in +# configure.in, otherwise build static only libraries. +case "$host_os" in +cygwin* | mingw* | os2*) + if test x$can_build_shared = xyes; then + test x$enable_win32_dll = xno && can_build_shared=no + echo "checking if package supports dlls... $can_build_shared" 1>&6 + fi +;; +esac + +if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then + case "$deplibs_check_method" in + "file_magic "*) + file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + egrep "$file_magic_regex" > /dev/null; then + : + else + cat <<EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac +fi + +echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + test "$enable_shared" = yes && enable_static=no + ;; +esac + +echo "$ac_t$enable_shared" 1>&6 + +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes + +echo "checking whether to build static libraries... $enable_static" 1>&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else +if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then + lt_cv_dlopen=no lt_cv_dlopen_libs= +echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "$progname:2212: checking for dlopen in -ldl" >&5 +ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldl $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2220 "ltconfig" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen(); + +int main() { +dlopen() +; return 0; } +EOF +if { (eval echo $progname:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +echo "$progname:2252: checking for dlopen" >&5 +if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2257 "ltconfig" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +dlopen(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_dlopen=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_dlopen=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dlopen" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 +echo "$progname:2299: checking for dld_link in -ldld" >&5 +ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2307 "ltconfig" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link(); + +int main() { +dld_link() +; return 0; } +EOF +if { (eval echo $progname:2320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load""... $ac_c" 1>&6 +echo "$progname:2339: checking for shl_load" >&5 +if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2344 "ltconfig" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load(); below. */ +#include <assert.h> +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +shl_load(); +#endif + +; return 0; } +EOF +if { (eval echo $progname:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_shl_load=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_shl_load=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "$progname:2387: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ldld $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2395 "ltconfig" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load(); + +int main() { +shl_load() +; return 0; } +EOF +if { (eval echo $progname:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + echo "$ac_t""no" 1>&6 +fi + + +fi + + +fi + + +fi + + +fi + +fi + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + fi + + case "$lt_cv_dlopen" in + dlopen) +for ac_hdr in dlfcn.h; do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "$progname:2452: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2457 "ltconfig" +#include <$ac_hdr> +int fnord = 0; +EOF +ac_try="$ac_compile >/dev/null 2>conftest.out" +{ (eval echo $progname:2462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi +done + + if test "x$ac_cv_header_dlfcn_h" = xyes; then + CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + fi + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2490: checking whether a program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self=cross + else + cat > conftest.c <<EOF +#line 2498 "ltconfig" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self" 1>&6 + + if test "$lt_cv_dlopen_self" = yes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 +echo "$progname:2563: checking whether a statically linked program can dlopen itself" >&5 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + lt_cv_dlopen_self_static=cross + else + cat > conftest.c <<EOF +#line 2571 "ltconfig" + +#if HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +#include <stdio.h> + +#ifdef RTLD_GLOBAL +# define LTDL_GLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LTDL_GLOBAL DL_GLOBAL +# else +# define LTDL_GLOBAL 0 +# endif +#endif + +/* We may have to define LTDL_LAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LTDL_LAZY_OR_NOW +# ifdef RTLD_LAZY +# define LTDL_LAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LTDL_LAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LTDL_LAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LTDL_LAZY_OR_NOW DL_NOW +# else +# define LTDL_LAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } + +EOF +if { (eval echo $progname:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + lt_cv_dlopen_self_static=yes +else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + lt_cv_dlopen_self_static=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 +fi + ;; + esac + + case "$lt_cv_dlopen_self" in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case "$lt_cv_dlopen_self_static" in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" +if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ltecho="$CONFIG_SHELL \$0 --fallback-echo" +fi +LTSHELL="$SHELL" + +LTCONFIG_VERSION="$VERSION" + +# Only quote variables if we're using ltmain.sh. +case "$ltmain" in +*.sh) + # Now quote all the things that may contain metacharacters. + for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ + AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ + file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case "$ltecho" in + *'\$0 --fallback-echo"') + ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + + trap "$rm \"$ofile\"; exit 1" 1 2 15 + echo "creating $ofile" + $rm "$ofile" + cat <<EOF > "$ofile" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1999 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +### BEGIN LIBTOOL CONFIG +EOF + cfgfile="$ofile" + ;; + +*) + # Double-quote the variables that need it (for aesthetics). + for var in old_CC old_CFLAGS old_CPPFLAGS \ + old_LD old_LDFLAGS old_LIBS \ + old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do + eval "$var=\\\"\$var\\\"" + done + + # Just create a config file. + cfgfile="$ofile.cfg" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + echo "creating $cfgfile" + $rm "$cfgfile" + cat <<EOF > "$cfgfile" +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +EOF + ;; +esac + +cat <<EOF >> "$cfgfile" +# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ +# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ +# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ +# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ +# $0$ltconfig_args +# +# Compiler and other test output produced by $progname, useful for +# debugging $progname, is in ./config.log if it exists. + +# The version of $progname that generated this script. +LTCONFIG_VERSION=$LTCONFIG_VERSION + +# Shell to use when invoking shell scripts. +SHELL=$LTSHELL + +# Whether to waste disk space. +install_ltlibs=$install_ltlibs + +# What to do with -release. +# yes - only for shared archive +# no - ingnore +# all - for all archives +release_suffix=$release_suffix + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$ltecho + +# The archiver. +AR=$AR + +# The default C compiler. +CC=$CC + +# The linker used to build libraries. +LD=$LD + +# Whether we need hard or soft links. +LN_S=$LN_S + +# A BSD-compatible nm program. +NM=$NM + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$reload_flag +reload_cmds=$reload_cmds + +# How to pass a linker flag through the compiler. +wl=$wl + +# Object file suffix (normally "o"). +objext="$objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$pic_flag + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$RANLIB +old_archive_cmds=$old_archive_cmds +old_postinstall_cmds=$old_postinstall_cmds +old_postuninstall_cmds=$old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$old_archive_from_new_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$archive_cmds +archive_expsym_cmds=$archive_expsym_cmds +postinstall_cmds=$postinstall_cmds +postuninstall_cmds=$postuninstall_cmds + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$global_symbol_to_cdecl + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$hardcode_libdir_separator + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$include_expsyms + +EOF + +case "$ltmain" in +*.sh) + echo '### END LIBTOOL CONFIG' >> "$ofile" + echo >> "$ofile" + case "$host_os" in + aix3*) + cat <<\EOF >> "$ofile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # Append the ltmain.sh script. + sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + + chmod +x "$ofile" + ;; + +*) + # Compile the libtool program. + echo "FIXME: would compile $ltmain" + ;; +esac + +test -n "$cache_file" || exit 0 + +# AC_CACHE_SAVE +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --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 | + case `(ac_space=' '; set | grep ac_space) 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 + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lame-3.97/ltmain.sh b/lame-3.97/ltmain.sh new file mode 100755 index 0000000..eecedf2 --- /dev/null +++ b/lame-3.97/ltmain.sh @@ -0,0 +1,6500 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.18 +TIMESTAMP=" (1.1220.2.245 2005/05/16 08:55:27)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<EOF +$* +EOF + exit $EXIT_SUCCESS +fi + +default_mode= +help="Try \`$progname --help' for more information." +magic="%%%MAGIC variable%%%" +mkdir="mkdir" +mv="mv -f" +rm="rm -f" + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' +# test EBCDIC or ASCII +case `echo A|tr A '\301'` in + A) # EBCDIC based system + SP2NL="tr '\100' '\n'" + NL2SP="tr '\r\n' '\100\100'" + ;; + *) # Assume ASCII based system + SP2NL="tr '\040' '\012'" + NL2SP="tr '\015\012' '\040\040'" + ;; +esac + +# 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). +# We save the old values to restore during execute mode. +if test "${LC_ALL+set}" = set; then + save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL +fi +if test "${LANG+set}" = set; then + save_LANG="$LANG"; LANG=C; export LANG +fi + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + $echo "$modename: not configured to build any kind of library" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +quote_scanset='[[~#^*{};<>?'"'"' ]' + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` + if test "X$win32_nmres" = "Ximport" ; then + win32_libid_type="x86 archive import" + else + win32_libid_type="x86 archive static" + fi + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + status=$? + if test "$status" -ne 0 && test ! -d "$my_xdir"; then + exit $status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) prevopt="--tag" prev=tag ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case "$arg_mode" in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qlibobj="\"$qlibobj\"" ;; + esac + if test "X$libobj" != "X$qlibobj"; then + $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + exit $EXIT_FAILURE + fi + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T <<EOF +# $libobj - a libtool object file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# Name of the PIC object. +EOF + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + if test ! -d "${xdir}$objdir"; then + $show "$mkdir ${xdir}$objdir" + $run $mkdir ${xdir}$objdir + status=$? + if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then + exit $status + fi + fi + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command="$command -o $lobj" + fi + + $run $rm "$lobj" "$output_obj" + + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit $EXIT_FAILURE + fi + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <<EOF +pic_object='$objdir/$objname' + +EOF + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + else + # No PIC object so indicate it doesn't exist in the libtool + # object file. + test -z "$run" && cat >> ${libobj}T <<EOF +pic_object=none + +EOF + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$obj" "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit $EXIT_FAILURE + fi + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <<EOF +# Name of the non-PIC object. +non_pic_object='$objname' + +EOF + else + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <<EOF +# Name of the non-PIC object. +non_pic_object=none + +EOF + fi + + $run $mv "${libobj}T" "${libobj}" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + + exit $EXIT_SUCCESS + ;; + + # libtool link mode + link | relink) + modename="$modename: link" + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args="$nonopt" + base_compile="$nonopt $@" + compile_command="$nonopt" + finalize_command="$nonopt" + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -all-static | -static) + if test "X$arg" = "X-all-static"; then + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=darwin_framework + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit $EXIT_FAILURE + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + if test "$with_gcc" = "yes" ; then + compiler_flags="$compiler_flags $arg" + fi + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test "$status" -ne 0 && test ! -d "$output_objdir"; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5* ) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c <<EOF + int main() { return 0; } +EOF + $rm conftest + $LTCC -o conftest conftest.c $deplibs + if test "$?" -eq 0 ; then + ldd_output=`ldd conftest` + for i in $deplibs; do + name="`expr $i : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test "$name" != "" && test "$name" -ne "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + newdeplibs="$newdeplibs $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval \\$echo \"$libname_spec\"` + deplib_matches=`eval \\$echo \"$library_names_spec\"` + set dummy $deplib_matches + deplib_match=$2 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes + $echo + $echo "*** Warning: dynamic linker does not accept needed library $i." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which I believe you do not have" + $echo "*** because a test_compile did reveal that the linker did not use it for" + $echo "*** its dynamic dependency list that programs get resolved with at runtime." + fi + fi + else + newdeplibs="$newdeplibs $i" + fi + done + else + # Error occurred in the first compile. Let's try to salvage + # the situation: Compile a separate program for each library. + for i in $deplibs; do + name="`expr $i : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test "$name" != "" && test "$name" != "0"; then + $rm conftest + $LTCC -o conftest conftest.c $i + # Did it work? + if test "$?" -eq 0 ; then + ldd_output=`ldd conftest` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $i "*) + newdeplibs="$newdeplibs $i" + i="" + ;; + esac + fi + if test -n "$i" ; then + libname=`eval \\$echo \"$libname_spec\"` + deplib_matches=`eval \\$echo \"$library_names_spec\"` + set dummy $deplib_matches + deplib_match=$2 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then + newdeplibs="$newdeplibs $i" + else + droppeddeps=yes + $echo + $echo "*** Warning: dynamic linker does not accept needed library $i." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because a test_compile did reveal that the linker did not use this one" + $echo "*** as a dynamic dependency that programs can get resolved with at runtime." + fi + fi + else + droppeddeps=yes + $echo + $echo "*** Warning! Library $i is needed by this library but I was not able to" + $echo "*** make it link in! You will probably need to install it or some" + $echo "*** library that it depends on before this library will be fully" + $echo "*** functional. Installing it before continuing would be even better." + fi + else + newdeplibs="$newdeplibs $i" + fi + done + fi + ;; + file_magic*) + set dummy $deplibs_check_method + file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test "$name" != "" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 </dev/null >/dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + cwrappersource=`$echo ${objdir}/lt-${outputname}.c` + cwrapper=`$echo ${output}.exe` + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <<EOF + +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname + Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP + + The $output program cannot be directly executed until all the libtool + libraries that it depends on are installed. + + This wrapper executable should never be moved out of the build directory. + If it is, it will not operate correctly. + + Currently, it simply execs the wrapper *script* "/bin/sh $output", + but could eventually absorb all of the scripts functionality and + exec $objdir/$outputname directly. +*/ +EOF + cat >> $cwrappersource<<"EOF" +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <malloc.h> +#include <stdarg.h> +#include <assert.h> + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +#define DIR_SEPARATOR '/' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +#define HAVE_DOS_BASED_FILE_SYSTEM +#ifndef DIR_SEPARATOR_2 +#define DIR_SEPARATOR_2 '\\' +#endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +char * basename (const char *name); +char * fnqualify(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup ((char *) basename (argv[0])); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <<EOF + newargz[0] = "$SHELL"; +EOF + + cat >> $cwrappersource <<"EOF" + newargz[1] = fnqualify(argv[0]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; +EOF + + cat >> $cwrappersource <<EOF + execv("$SHELL",newargz); +EOF + + cat >> $cwrappersource <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +char * +basename (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha (name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return (char *) base; +} + +char * +fnqualify(const char *path) +{ + size_t size; + char *p; + char tmp[LT_PATHMAX + 1]; + + assert(path != NULL); + + /* Is it qualified already? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha (path[0]) && path[1] == ':') + return xstrdup (path); +#endif + if (IS_DIR_SEPARATOR (path[0])) + return xstrdup (path); + + /* prepend the current directory */ + /* doesn't handle '~' */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ + p = XMALLOC(char, size); + sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); + return p; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + status=$? + if test "$status" -ne 0 && test ! -d "$gentop"; then + exit $status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*"` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # To insure that "foo" is sourced, and not "foo.exe", + # finese the cygwin/MSYS system by explicitly sourcing "foo." + # which disallows the automatic-append-.exe behavior. + case $build in + *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; + *) wrapperdot=${wrapper} ;; + esac + # If there is no directory component, then add one. + case $file in + */* | *\\*) . ${wrapperdot} ;; + *) . ./${wrapperdot} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + save_umask=`umask` + umask 0077 + if $mkdir "$tmpdir"; then + umask $save_umask + else + umask $save_umask + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "----------------------------------------------------------------------" + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "----------------------------------------------------------------------" + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test "$mode" = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to <bug-libtool@gnu.org>." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/lame-3.97/mac/.svn/all-wcprops b/lame-3.97/mac/.svn/all-wcprops new file mode 100644 index 0000000..9c53e54 --- /dev/null +++ b/lame-3.97/mac/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/328/monitor/trunk/lame-3.97/mac +END +LAME_Carbon_Debug.pch +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/238/monitor/trunk/lame-3.97/mac/LAME_Carbon_Debug.pch +END +LAME_Classic_Final.pch +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/238/monitor/trunk/lame-3.97/mac/LAME_Classic_Final.pch +END +MacDLLMain.c +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/mac/MacDLLMain.c +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/328/monitor/trunk/lame-3.97/mac/Makefile.in +END +LAME_Carbon_Final.pch +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/238/monitor/trunk/lame-3.97/mac/LAME_Carbon_Final.pch +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/mac/Makefile.am +END +LAME.mcp +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/mac/LAME.mcp +END +Precompile_Common.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/321/monitor/trunk/lame-3.97/mac/Precompile_Common.h +END +LAME_Classic_Debug.pch +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/238/monitor/trunk/lame-3.97/mac/LAME_Classic_Debug.pch +END diff --git a/lame-3.97/mac/.svn/entries b/lame-3.97/mac/.svn/entries new file mode 100644 index 0000000..63a7a44 --- /dev/null +++ b/lame-3.97/mac/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/mac +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +LAME_Carbon_Debug.pch +file + + + + +2012-01-23T14:07:04.346492Z +6f8a9f3cd4713288a0d930714c6be3d1 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +755 + +LAME_Classic_Final.pch +file + + + + +2012-01-23T14:07:04.346492Z +b797bb049940594a15561f0ad5a67ceb +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +769 + +MacDLLMain.c +file + + + + +2012-01-23T14:07:04.346492Z +50474baabc6cedcd16fc98453b0eaada +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +46 + +Makefile.in +file + + + + +2012-01-23T14:07:04.347505Z +b8ad90a2ade17267faa2d198e987532a +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +9791 + +LAME_Carbon_Final.pch +file + + + + +2012-01-23T14:07:04.347505Z +375649d3f16c71cd77e39fed38f7cd8b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +769 + +Makefile.am +file + + + + +2012-01-23T14:07:04.347505Z +4766c36004fc9fcb2be7d01a0767d6c7 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +285 + +LAME.mcp +file + + + + +2012-01-23T14:07:04.348487Z +0b42159d1ddfc2cbbab4e28d1e628118 +2007-12-20T22:24:54.554753Z +238 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +228208 + +Precompile_Common.h +file + + + + +2012-01-23T14:07:04.352487Z +11d95c82f7713978774bfaa975567e0d +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2221 + +LAME_Classic_Debug.pch +file + + + + +2012-01-23T14:07:04.352487Z +b08bb8560c5ffbf862d3fed7f595e75a +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +755 + diff --git a/lame-3.97/mac/.svn/prop-base/LAME.mcp.svn-base b/lame-3.97/mac/.svn/prop-base/LAME.mcp.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/lame-3.97/mac/.svn/prop-base/LAME.mcp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/lame-3.97/mac/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/mac/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mac/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mac/.svn/prop-base/Precompile_Common.h.svn-base b/lame-3.97/mac/.svn/prop-base/Precompile_Common.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mac/.svn/prop-base/Precompile_Common.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mac/.svn/text-base/LAME.mcp.svn-base b/lame-3.97/mac/.svn/text-base/LAME.mcp.svn-base new file mode 100644 index 0000000..cfe1c2c --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/LAME.mcp.svn-base Binary files differ diff --git a/lame-3.97/mac/.svn/text-base/LAME_Carbon_Debug.pch.svn-base b/lame-3.97/mac/.svn/text-base/LAME_Carbon_Debug.pch.svn-base new file mode 100644 index 0000000..3e9dc29 --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/LAME_Carbon_Debug.pch.svn-base @@ -0,0 +1 @@ +/* LAME Carbon Debug.pch Precompiled header sources for Carbon debug build of LAME on Macintosh */ #pragma precompile_target "LAME Carbon Debug Headers" #define TARGET_API_MAC_CARBON 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #define NDEBUG 1 // Build debug version \ No newline at end of file diff --git a/lame-3.97/mac/.svn/text-base/LAME_Carbon_Final.pch.svn-base b/lame-3.97/mac/.svn/text-base/LAME_Carbon_Final.pch.svn-base new file mode 100644 index 0000000..78650cb --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/LAME_Carbon_Final.pch.svn-base @@ -0,0 +1 @@ +/* LAME Carbon Debug.pch Precompiled header sources for Carbon non-debug build of LAME on Macintosh */ #pragma precompile_target "LAME Carbon Final Headers" #define TARGET_API_MAC_CARBON 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #undef NDEBUG // Build final (non-debug) version \ No newline at end of file diff --git a/lame-3.97/mac/.svn/text-base/LAME_Classic_Debug.pch.svn-base b/lame-3.97/mac/.svn/text-base/LAME_Classic_Debug.pch.svn-base new file mode 100644 index 0000000..c400d3f --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/LAME_Classic_Debug.pch.svn-base @@ -0,0 +1 @@ +/* LAME Classic Debug.pch Precompiled header sources for Classic debug build of LAME on Macintosh */ #pragma precompile_target "LAME Classic Debug Headers" #define TARGET_API_MAC_OS8 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #define NDEBUG 1 // Build debug version \ No newline at end of file diff --git a/lame-3.97/mac/.svn/text-base/LAME_Classic_Final.pch.svn-base b/lame-3.97/mac/.svn/text-base/LAME_Classic_Final.pch.svn-base new file mode 100644 index 0000000..326285e --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/LAME_Classic_Final.pch.svn-base @@ -0,0 +1 @@ +/* LAME Classic Final.pch Precompiled header sources for Classic non-debug build of LAME on Macintosh */ #pragma precompile_target "LAME Classic Final Headers" #define TARGET_API_MAC_OS8 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #undef NDEBUG // Build final (non-debug) version \ No newline at end of file diff --git a/lame-3.97/mac/.svn/text-base/MacDLLMain.c.svn-base b/lame-3.97/mac/.svn/text-base/MacDLLMain.c.svn-base new file mode 100644 index 0000000..8654265 --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/MacDLLMain.c.svn-base @@ -0,0 +1 @@ +/* MacDLLMain.c */ int main() { return 0; } \ No newline at end of file diff --git a/lame-3.97/mac/.svn/text-base/Makefile.am.svn-base b/lame-3.97/mac/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..e1382cd --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,13 @@ +## $Id: Makefile.am,v 1.1 2002/05/28 07:52:10 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + .DS_Store \ + LAME.mcp \ + LAME_Carbon_Debug.pch \ + LAME_Carbon_Final.pch \ + LAME_Classic_Debug.pch \ + LAME_Classic_Final.pch \ + MacDLLMain.c \ + Precompile_Common.h diff --git a/lame-3.97/mac/.svn/text-base/Makefile.in.svn-base b/lame-3.97/mac/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..586d9e6 --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,357 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = mac +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + .DS_Store \ + LAME.mcp \ + LAME_Carbon_Debug.pch \ + LAME_Carbon_Final.pch \ + LAME_Classic_Debug.pch \ + LAME_Classic_Final.pch \ + MacDLLMain.c \ + Precompile_Common.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mac/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mac/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/mac/.svn/text-base/Precompile_Common.h.svn-base b/lame-3.97/mac/.svn/text-base/Precompile_Common.h.svn-base new file mode 100644 index 0000000..1f44b37 --- /dev/null +++ b/lame-3.97/mac/.svn/text-base/Precompile_Common.h.svn-base @@ -0,0 +1,82 @@ +/* + Common Precompiled headers for LAME on Macintosh + + Precompiled header source for building LAME on Macintosh using CodeWarrior. + Includes most definitions normally generated by configure in config.h, + except for the ones that vary from subproject to subproject +*/ + +#define TARGET_MAC_DLL 1 + +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +#define HAVE_ALLOCA 1 + +#define HAVE_LONG_DOUBLE 1 + +#define STDC_HEADERS 1 + +#define TIME_WITH_SYS_TIME 1 + +#define WORDS_BIGENDIAN 1 + +#define uint8_t UInt8 +#define uint16_t UInt16 +#define uint32_t UInt32 +#define uint64_t unsigned long long +#define ieee854_float80_t long double +#define ieee754_float64_t double +#define ieee754_float32_t float + +#define SIZEOF_DOUBLE 8 +#define SIZEOF_FLOAT 4 +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF_SHORT 2 +#define SIZEOF_UNSIGNED_INT 4 +#define SIZEOF_UNSIGNED_LONG 4 +#define SIZEOF_UNSIGNED_LONG_LONG 8 +#define SIZEOF_UNSIGNED_SHORT 2 + +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_SOCKET 1 +#define HAVE_STRTOL 1 +#define HAVE_ERRNO_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_UNISTD_H 1 + +#define PACKAGE "lame" +#define VERSION "3.91" + +#define PROTOTYPES 1 +#define HAVE_IEEE854_FLOAT80 1 + +#define LIMIT_STACK_USAGE 1 + +// The following definitions have been pulled out to specific targets' +// pch files: +// LAME_LIBRARY_BUILD 1 for building the DLL +// LIBSNDFILE 1 for building with LibSndFile, applies +// only to CLI encoder +// NOANALYSIS 1 for building without hooks for the +// MP3 frame analyzer +// HAVE_MPGLIB 1 for building with MP3 decoding library. +// Note MPGLIB, unlike LAME itself, is +// GPL as opposed to LGPL and thus unsuitable +// for compilation into a DLL that would be used +// from a closed-source app. +// USE_LAYER_1 1 for building layer-1 decoding into MPGLIB +// USE_LAYER_2 1 for building layer-2 decoding into MPGLIB +// HAVE_VORBIS 1 for building vorbis support +// NDEBUG 1 for building with debug info +// BRHIST 1 for histogram display in CLI encoder + +#define HAVE_TERMCAP 1 + +#include <MacTypes.h> diff --git a/lame-3.97/mac/LAME.mcp b/lame-3.97/mac/LAME.mcp new file mode 100644 index 0000000..cfe1c2c --- /dev/null +++ b/lame-3.97/mac/LAME.mcp Binary files differ diff --git a/lame-3.97/mac/LAME_Carbon_Debug.pch b/lame-3.97/mac/LAME_Carbon_Debug.pch new file mode 100644 index 0000000..3e9dc29 --- /dev/null +++ b/lame-3.97/mac/LAME_Carbon_Debug.pch @@ -0,0 +1 @@ +/* LAME Carbon Debug.pch Precompiled header sources for Carbon debug build of LAME on Macintosh */ #pragma precompile_target "LAME Carbon Debug Headers" #define TARGET_API_MAC_CARBON 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #define NDEBUG 1 // Build debug version \ No newline at end of file diff --git a/lame-3.97/mac/LAME_Carbon_Final.pch b/lame-3.97/mac/LAME_Carbon_Final.pch new file mode 100644 index 0000000..78650cb --- /dev/null +++ b/lame-3.97/mac/LAME_Carbon_Final.pch @@ -0,0 +1 @@ +/* LAME Carbon Debug.pch Precompiled header sources for Carbon non-debug build of LAME on Macintosh */ #pragma precompile_target "LAME Carbon Final Headers" #define TARGET_API_MAC_CARBON 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #undef NDEBUG // Build final (non-debug) version \ No newline at end of file diff --git a/lame-3.97/mac/LAME_Classic_Debug.pch b/lame-3.97/mac/LAME_Classic_Debug.pch new file mode 100644 index 0000000..c400d3f --- /dev/null +++ b/lame-3.97/mac/LAME_Classic_Debug.pch @@ -0,0 +1 @@ +/* LAME Classic Debug.pch Precompiled header sources for Classic debug build of LAME on Macintosh */ #pragma precompile_target "LAME Classic Debug Headers" #define TARGET_API_MAC_OS8 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #define NDEBUG 1 // Build debug version \ No newline at end of file diff --git a/lame-3.97/mac/LAME_Classic_Final.pch b/lame-3.97/mac/LAME_Classic_Final.pch new file mode 100644 index 0000000..326285e --- /dev/null +++ b/lame-3.97/mac/LAME_Classic_Final.pch @@ -0,0 +1 @@ +/* LAME Classic Final.pch Precompiled header sources for Classic non-debug build of LAME on Macintosh */ #pragma precompile_target "LAME Classic Final Headers" #define TARGET_API_MAC_OS8 1 #include "Precompile_Common.h" #define LAME_LIBRARY_BUILD 1 // Building library #undef LIBSNDFILE // Build with LIBSNDFILE #define NOANALYSIS 1 // Build without frame-analyzer hooks #undef HAVE_MPGLIB // Build without MPGLIB decoder (forces GPL) #undef USE_LAYER_1 // Build without layer-1 decoding (needs MPGLIB) #undef USE_LAYER_2 // Build without layer-2 decoding (needs MPGLIB) #undef HAVE_VORBIS // Build without Ogg Vorbis #undef BRHIST // Build without histogram (not CLI encoder) #undef NDEBUG // Build final (non-debug) version \ No newline at end of file diff --git a/lame-3.97/mac/MacDLLMain.c b/lame-3.97/mac/MacDLLMain.c new file mode 100644 index 0000000..8654265 --- /dev/null +++ b/lame-3.97/mac/MacDLLMain.c @@ -0,0 +1 @@ +/* MacDLLMain.c */ int main() { return 0; } \ No newline at end of file diff --git a/lame-3.97/mac/Makefile.am b/lame-3.97/mac/Makefile.am new file mode 100644 index 0000000..e1382cd --- /dev/null +++ b/lame-3.97/mac/Makefile.am @@ -0,0 +1,13 @@ +## $Id: Makefile.am,v 1.1 2002/05/28 07:52:10 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_DIST = \ + .DS_Store \ + LAME.mcp \ + LAME_Carbon_Debug.pch \ + LAME_Carbon_Final.pch \ + LAME_Classic_Debug.pch \ + LAME_Classic_Final.pch \ + MacDLLMain.c \ + Precompile_Common.h diff --git a/lame-3.97/mac/Makefile.in b/lame-3.97/mac/Makefile.in new file mode 100644 index 0000000..586d9e6 --- /dev/null +++ b/lame-3.97/mac/Makefile.in @@ -0,0 +1,357 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global +subdir = mac +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + .DS_Store \ + LAME.mcp \ + LAME_Carbon_Debug.pch \ + LAME_Carbon_Final.pch \ + LAME_Classic_Debug.pch \ + LAME_Classic_Final.pch \ + MacDLLMain.c \ + Precompile_Common.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mac/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mac/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/mac/Precompile_Common.h b/lame-3.97/mac/Precompile_Common.h new file mode 100644 index 0000000..1f44b37 --- /dev/null +++ b/lame-3.97/mac/Precompile_Common.h @@ -0,0 +1,82 @@ +/* + Common Precompiled headers for LAME on Macintosh + + Precompiled header source for building LAME on Macintosh using CodeWarrior. + Includes most definitions normally generated by configure in config.h, + except for the ones that vary from subproject to subproject +*/ + +#define TARGET_MAC_DLL 1 + +#ifndef _ALL_SOURCE +/* #undef _ALL_SOURCE */ +#endif + +#define HAVE_ALLOCA 1 + +#define HAVE_LONG_DOUBLE 1 + +#define STDC_HEADERS 1 + +#define TIME_WITH_SYS_TIME 1 + +#define WORDS_BIGENDIAN 1 + +#define uint8_t UInt8 +#define uint16_t UInt16 +#define uint32_t UInt32 +#define uint64_t unsigned long long +#define ieee854_float80_t long double +#define ieee754_float64_t double +#define ieee754_float32_t float + +#define SIZEOF_DOUBLE 8 +#define SIZEOF_FLOAT 4 +#define SIZEOF_INT 4 +#define SIZEOF_LONG 4 +#define SIZEOF_LONG_LONG 8 +#define SIZEOF_SHORT 2 +#define SIZEOF_UNSIGNED_INT 4 +#define SIZEOF_UNSIGNED_LONG 4 +#define SIZEOF_UNSIGNED_LONG_LONG 8 +#define SIZEOF_UNSIGNED_SHORT 2 + +#define HAVE_GETTIMEOFDAY 1 +#define HAVE_SOCKET 1 +#define HAVE_STRTOL 1 +#define HAVE_ERRNO_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_UNISTD_H 1 + +#define PACKAGE "lame" +#define VERSION "3.91" + +#define PROTOTYPES 1 +#define HAVE_IEEE854_FLOAT80 1 + +#define LIMIT_STACK_USAGE 1 + +// The following definitions have been pulled out to specific targets' +// pch files: +// LAME_LIBRARY_BUILD 1 for building the DLL +// LIBSNDFILE 1 for building with LibSndFile, applies +// only to CLI encoder +// NOANALYSIS 1 for building without hooks for the +// MP3 frame analyzer +// HAVE_MPGLIB 1 for building with MP3 decoding library. +// Note MPGLIB, unlike LAME itself, is +// GPL as opposed to LGPL and thus unsuitable +// for compilation into a DLL that would be used +// from a closed-source app. +// USE_LAYER_1 1 for building layer-1 decoding into MPGLIB +// USE_LAYER_2 1 for building layer-2 decoding into MPGLIB +// HAVE_VORBIS 1 for building vorbis support +// NDEBUG 1 for building with debug info +// BRHIST 1 for histogram display in CLI encoder + +#define HAVE_TERMCAP 1 + +#include <MacTypes.h> diff --git a/lame-3.97/misc/.svn/all-wcprops b/lame-3.97/misc/.svn/all-wcprops new file mode 100644 index 0000000..1de0b18 --- /dev/null +++ b/lame-3.97/misc/.svn/all-wcprops @@ -0,0 +1,89 @@ +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/328/monitor/trunk/lame-3.97/misc +END +mlame_corr.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/mlame_corr.c +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/328/monitor/trunk/lame-3.97/misc/Makefile.in +END +lameGUI.html +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/misc/lameGUI.html +END +scalartest.c +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/scalartest.c +END +Lame.vbs +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/Lame.vbs +END +depcomp +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/depcomp +END +lameid3.pl +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/lameid3.pl +END +mugeco.sh +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/lame-3.97/misc/mugeco.sh +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/Makefile.am +END +abx.c +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/abx.c +END +auenc +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/auenc +END +mlame +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/mlame +END +ath.c +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/238/monitor/trunk/lame-3.97/misc/ath.c +END +lame4dos.bat +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/misc/lame4dos.bat +END diff --git a/lame-3.97/misc/.svn/entries b/lame-3.97/misc/.svn/entries new file mode 100644 index 0000000..4bb8a82 --- /dev/null +++ b/lame-3.97/misc/.svn/entries @@ -0,0 +1,504 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/misc +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +mlame_corr.c +file + + + + +2012-01-23T14:07:04.739494Z +5e68fc2e45ce4783a1a8a1cf204625c5 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +5162 + +Makefile.in +file + + + + +2012-01-23T14:07:04.741485Z +37b05fa8b501e2460123da875e1c1a28 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +15802 + +lameGUI.html +file + + + + +2012-01-23T14:07:04.741485Z +bd202320137dbb042aea3e270f0995dd +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +17848 + +scalartest.c +file + + + + +2012-01-23T14:07:04.742486Z +b84fbf04a3dc68abe0562f829d1196ec +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +3834 + +Lame.vbs +file + + + + +2012-01-23T14:07:04.742486Z +29bd7550041452d601637908021fb0c4 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4926 + +depcomp +file + + + + +2012-01-23T14:07:04.742486Z +d7d8db17e074dcabf513d766b728993d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15936 + +lameid3.pl +file + + + + +2012-01-23T14:07:04.742486Z +d606db0df13d0774902414a3bbeb3658 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1322 + +mugeco.sh +file + + + + +2012-01-23T14:07:04.743485Z +d9ce6dccb70a525ae19ec7b99f9b65ea +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3833 + +Makefile.am +file + + + + +2012-01-23T14:07:04.743485Z +8b85d7bc681c1eec77a0a381343bee3c +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +409 + +abx.c +file + + + + +2012-01-23T14:07:04.743485Z +af80dd585f73e3a10a62c4cad2b5d562 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +39041 + +auenc +file + + + + +2012-01-23T14:07:04.743485Z +03eabe23db70033017bd369577f253af +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +773 + +mlame +file + + + + +2012-01-23T14:07:04.743485Z +83663c4c08154efacec518e74e8c97c2 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +5324 + +ath.c +file + + + + +2012-01-23T14:07:04.744486Z +e58d940591546756b0e83a3afcfd0656 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +27212 + +lame4dos.bat +file + + + + +2012-01-23T14:07:04.744486Z +98b763e71e9721f769e99b173e57063b +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1380 + diff --git a/lame-3.97/misc/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/misc/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/misc/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/misc/.svn/prop-base/lame4dos.bat.svn-base b/lame-3.97/misc/.svn/prop-base/lame4dos.bat.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/lame-3.97/misc/.svn/prop-base/lame4dos.bat.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/misc/.svn/prop-base/lameGUI.html.svn-base b/lame-3.97/misc/.svn/prop-base/lameGUI.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/lame-3.97/misc/.svn/prop-base/lameGUI.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/lame-3.97/misc/.svn/prop-base/mugeco.sh.svn-base b/lame-3.97/misc/.svn/prop-base/mugeco.sh.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/lame-3.97/misc/.svn/prop-base/mugeco.sh.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/misc/.svn/text-base/Lame.vbs.svn-base b/lame-3.97/misc/.svn/text-base/Lame.vbs.svn-base new file mode 100644 index 0000000..4e42002 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/Lame.vbs.svn-base @@ -0,0 +1,158 @@ +' lame.vbs WindowsScript wrapper v0.5, 06/15/2001 +' $id$ +' +' *Purpose* +' Use this WindowsScript to encode WAVs using drag&drop: +' 0. make sure you have windows script host v5.1 on your system +' (enter 'cscript' in a DOS-Box and compare version number) +' 1. adjust the path settings below to fit your needs +' 2a. put this file somewhere on the desktop +' 3a. drag one or more wav-files on the icon and watch them being lamed. +' +' 2b. start->execute, enter "sendto", drag the script or a link to it in +' sendto window (adjust names and icon as you like) +' 3b. select wave-file(s) and send it via the send-to menu to LAME! +' +' You may wish to create copies of this file with different options set. +' +' If you would like a GUI: try to enable the HTML UI (see below) +' +' Ralf Kempkens, ralf.kempkens@epost.de +' +' +' *History* +' V0.5 * lame.vbs will automatically decode if the file has a .mp3 extension +' * now explicitly refuses to accept folders +' V0.4 * creates single .mp3 extensions, now ID3 options in HTML interface +' V0.3 * fixed bug that prevented lame.exe to be located in a path that +' contained a space +' * experimental HTML UI support (disabled by default) +' V0.2 added multiple file support +' V0.1 initial release + +' *** change path to your needs *** + path = "D:\Audio\Lame\Lame386\" '!!! must end with a backslash !!! + lame = "lame.exe" + +' *** change default options to your needs *** + opts = "--preset hifi" + +' *** HTML GUI (experimental) *** + useGUI = False +' it set to True, opens file lameGUI.html residing in the same path as lame.exe +' to choose options. Please look at the example HTML-file for further information. + +' no changes needed below this line +' ########################################################################## +Dim wsh, args, infile, fs +title="LAME Script" + +' get input files +Set wsh = WScript.CreateObject("WScript.Shell") +Set args = WScript.Arguments +If args.Count = 0 Then + MsgBox "LAME mp3 encoder/decoder frontend script." & vbCR & _ + "Please use drag & drop to specify input files.", vbInformation, title + WScript.Quit +End If + +' check path +Set fso = CreateObject("Scripting.FileSystemObject") +If Not fso.FileExists(path & lame) Then + MsgBox "Could not find LAME!" & vbCR & "(looked for '" & path & lame & "')", vbCritical, title + WScript.Quit +End If + +' start GUI +if useGUI Then + set ie=WScript.CreateObject("InternetExplorer.Application", "ie_") + ie.navigate(path & "lameGUI.html") + do + WScript.Sleep 100 + loop until ie.ReadyState=4 'wait for GUI + + ie.Width=640 + ie.Height=600 + ie.Toolbar=false + ie.Statusbar=false + ie.visible=true + + 'link to GUI + set document=ie.document + document.forms.lameform.okbutton.onClick=GetRef("okbutton") + + 'wait for user pressing ok... + do + WScript.Sleep 300 + loop until process +end if + +'process files +For i = 0 To args.Count-1 + infile = args(i) + ' check input file + If fso.FolderExists(infile) Then + MsgBox "'" & infile & "' is a folder!" & vbCR & _ + title & " only handles proper files.", vbInformation, title + Else + If Not fso.FileExists(infile) Then + MsgBox "Error opening input-file" & vbCR & "'" & infile & "'", vbCritical , title + Else + ' run lame + If(LCase(getExtension(infile))="mp3") Then 'decode + ret = wsh.Run(Chr(34) & path & lame & CHR(34) & " --decode " & _ + Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _ + getBasename(infile) & ".wav" & Chr(34), 1, True) + Else ' encode + ret = wsh.Run(Chr(34) & path & lame & CHR(34) & Chr(32) & opts & Chr(32) & _ + Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _ + getBasename(infile) & ".mp3" & Chr(34), 1, True) + End If + ' diagnostics + Select Case ret + Case (0) 'okeydokey + Case (-1) + MsgBox "LAME aborted by user!", vbExclamation, title + Case (1) + MsgBox "Error returned by LAME!" & vbCR & "(Check LAME options and input file formats.)" & vbCR & "Used Options: " & opts, vbCritical, title + Case Else + MsgBox "Received unknown LAME return-code: " & ret, vbCritical, title + End Select + End If + End If +Next + +WScript.Quit +' ******************************************************************* +' utility functions + +Function getBasename(filespec) + Dim fso + Set fso = CreateObject("Scripting.FileSystemObject") + Set f = fso.GetFile(filespec) + + getBasename = f.ParentFolder & "\" & fso.GetBaseName(filespec) +End Function + +Function getExtension(filespec) + Dim fso + Set fso = CreateObject("Scripting.FileSystemObject") + Set f = fso.GetFile(filespec) + + getExtension = fso.GetExtensionName(filespec) +End Function + +' ******************************************************************* +' manage link to IE HTML-interface + +sub okbutton + 'process inputs + opts=document.all.lameoptions.Value + ie.Quit + MsgBox "LAME options:" & vbCR & opts, vbInformation, title +end sub + +sub ie_onQuit + process=True +end sub +'eof diff --git a/lame-3.97/misc/.svn/text-base/Makefile.am.svn-base b/lame-3.97/misc/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..fc13a49 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,27 @@ +## $Id: Makefile.am,v 1.10 2002/01/25 11:23:23 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_PROGRAMS = abx ath scalartest + +CLEANFILES = $(EXTRA_PROGRAMS) + +EXTRA_SCRIPTS = \ + auenc \ + lameid3.pl \ + mugeco.sh \ + mlame + +EXTRA_DIST = \ + $(EXTRA_SCRIPTS) \ + Lame.vbs \ + lameGUI.html \ + lame4dos.bat \ + mlame_corr.c + +abx_SOURCES = abx.c + +ath_SOURCES = ath.c + +scalartest_SOURCES = scalartest.c + diff --git a/lame-3.97/misc/.svn/text-base/Makefile.in.svn-base b/lame-3.97/misc/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..6a518fb --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,493 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global depcomp +EXTRA_PROGRAMS = abx$(EXEEXT) ath$(EXEEXT) scalartest$(EXEEXT) +subdir = misc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am_abx_OBJECTS = abx$U.$(OBJEXT) +abx_OBJECTS = $(am_abx_OBJECTS) +abx_LDADD = $(LDADD) +abx_DEPENDENCIES = +am_ath_OBJECTS = ath$U.$(OBJEXT) +ath_OBJECTS = $(am_ath_OBJECTS) +ath_LDADD = $(LDADD) +ath_DEPENDENCIES = +am_scalartest_OBJECTS = scalartest$U.$(OBJEXT) +scalartest_OBJECTS = $(am_scalartest_OBJECTS) +scalartest_LDADD = $(LDADD) +scalartest_DEPENDENCIES = +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(abx_SOURCES) $(ath_SOURCES) $(scalartest_SOURCES) +DIST_SOURCES = $(abx_SOURCES) $(ath_SOURCES) $(scalartest_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +CLEANFILES = $(EXTRA_PROGRAMS) +EXTRA_SCRIPTS = \ + auenc \ + lameid3.pl \ + mugeco.sh \ + mlame + +EXTRA_DIST = \ + $(EXTRA_SCRIPTS) \ + Lame.vbs \ + lameGUI.html \ + lame4dos.bat \ + mlame_corr.c + +abx_SOURCES = abx.c +ath_SOURCES = ath.c +scalartest_SOURCES = scalartest.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign misc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign misc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +abx$(EXEEXT): $(abx_OBJECTS) $(abx_DEPENDENCIES) + @rm -f abx$(EXEEXT) + $(LINK) $(abx_LDFLAGS) $(abx_OBJECTS) $(abx_LDADD) $(LIBS) +ath$(EXEEXT): $(ath_OBJECTS) $(ath_DEPENDENCIES) + @rm -f ath$(EXEEXT) + $(LINK) $(ath_LDFLAGS) $(ath_OBJECTS) $(ath_LDADD) $(LIBS) +scalartest$(EXEEXT): $(scalartest_OBJECTS) $(scalartest_DEPENDENCIES) + @rm -f scalartest$(EXEEXT) + $(LINK) $(scalartest_LDFLAGS) $(scalartest_OBJECTS) $(scalartest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/abx$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ath$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalartest$U.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +abx_.c: abx.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/abx.c; then echo $(srcdir)/abx.c; else echo abx.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +ath_.c: ath.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ath.c; then echo $(srcdir)/ath.c; else echo ath.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +scalartest_.c: scalartest.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/scalartest.c; then echo $(srcdir)/scalartest.c; else echo scalartest.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +abx_.$(OBJEXT) abx_.lo ath_.$(OBJEXT) ath_.lo scalartest_.$(OBJEXT) \ +scalartest_.lo : $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-kr mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/misc/.svn/text-base/abx.c.svn-base b/lame-3.97/misc/.svn/text-base/abx.c.svn-base new file mode 100644 index 0000000..b56fda4 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/abx.c.svn-base @@ -0,0 +1,1302 @@ +/* + * Usage: abx original_file test_file + * + * Ask you as long as the probability is below the given percentage that + * you recognize differences + * + * Example: abx music.wav music.mp3 + * abx music.wav music.mp3 --help + * + * Note: several 'decoding' utilites must be on the 'right' place + * + * Bugs: + * fix path of decoding utilities + * only 16 bit support + * only support of the same sample frequency + * no exact WAV file header analysis + * no mouse or joystick support + * don't uses functionality of ath.c + * only 2 files are comparable + * worse user interface + * quick & dirty hack + * wastes memory + * compile time warnings + * buffer overruns possible + * no dithering if recalcs are necessary + * correlation only done with one channel (2 channels, sum, what is better?) + * lowpass+highpass filtering (300 Hz+2*5 kHz) before delay+amplitude corr + * cross fade at start/stop + * non portable keyboard + * fade out on quit, fade in on start + * level/delay ajustment should be switchable + * pause key missing + * problems with digital silence files (division by 0) + * Gr��e cross corr fenster 2^16...18 + * Stellensuche, ab 0*len oder 0.1*len oder 0.25*len, nach Effektiv oder Spitzenwert + * Absturz bei LPAC feeding, warum? + * Als 'B' beim Ratespiel sollte auch '0'...'9' verwendbar sein + * Oder mit einem Filter 300 Hz...3 kHz vorher filtern? + * Multiple encoded differenziertes Signal + * Amplitudenanpassung schaltbar machen? + * Direkt auf der Kommandozeile kodieren: + * abx "test.wav" "!lame -b128 test.wav -" + */ + +// If the program should increase it priority while playing define USE_NICE. +// Program must be installed SUID root. Decompressing phase is using NORMAL priority +#define USE_NICE + +// Not only increase priority but change to relatime scheduling. Program must be installed SUID root +#define USE_REALTIME + +// Path of the programs: mpg123, mppdec, faad, ac3dec, ogg123, lpac, shorten, MAC, flac +//#define PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING "/usr/local/bin/" +#define PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING "" + + +#if defined HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <ctype.h> +#include <fcntl.h> +#include <limits.h> +#include <math.h> +#include <memory.h> +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <termios.h> +#include <time.h> +#include <unistd.h> +#include <sys/ioctl.h> +#include <sys/mman.h> +#include <sys/stat.h> +#include <sys/time.h> +#include <sys/types.h> + +#define MAX (1<<17) + +#if defined HAVE_SYS_SOUNDCARD_H +# include <sys/soundcard.h> +#elif defined HAVE_LINUX_SOUNDCARD_H +# include <linux/soundcard.h> +#else +# include <linux/soundcard.h> /* stand alone compilable for my tests */ +#endif + +#if defined USE_NICE +# include <sys/resource.h> +#endif +#if defined USE_REALTIME +# include <sched.h> +#endif + +#define BF ((freq)/25) +#define MAX_LEN (210 * 44100) +#define DMA_SAMPLES 512 /* My Linux driver uses a DMA buffer of 65536*16 bit, which is 32768 samples in 16 bit stereo mode */ + +void Set_Realtime ( void ) +{ +#if defined USE_REALTIME + struct sched_param sp; + int ret; + + memset ( &sp, 0, sizeof(sp) ); + seteuid ( 0 ); + sp.sched_priority = sched_get_priority_min ( SCHED_FIFO ); + ret = sched_setscheduler ( 0, SCHED_RR, &sp ); + seteuid ( getuid() ); +#endif + +#if defined USE_NICE + seteuid ( 0 ); + setpriority ( PRIO_PROCESS, getpid(), -20 ); + seteuid ( getuid() ); +#endif +} + +int verbose = 0; + +static struct termios stored_settings; + + +void reset ( void ) +{ + tcsetattr ( 0, TCSANOW, &stored_settings ); +} + + +void set ( void ) +{ + struct termios new_settings; + + tcgetattr ( 0, &stored_settings ); + new_settings = stored_settings; + + new_settings.c_lflag &= ~ECHO; + /* Disable canonical mode, and set buffer size to 1 byte */ + new_settings.c_lflag &= ~ICANON; + new_settings.c_cc[VTIME] = 0; + new_settings.c_cc[VMIN] = 1; + + tcsetattr(0,TCSANOW,&new_settings); + return; +} + + +int sel ( void ) +{ + struct timeval t; + fd_set fd [1]; + int ret; + unsigned char c; + + FD_SET (0, fd); + t.tv_sec = 0; + t.tv_usec = 0; + + ret = select ( 1, fd, NULL, NULL, &t ); + + switch ( ret ) { + case 0: + return -1; + case 1: + ret = read (0, &c, 1); + return ret == 1 ? c : -1; + default: + return -2; + } +} + +#define FFT_ERR_OK 0 // no error +#define FFT_ERR_LD 1 // len is not a power of 2 +#define FFT_ERR_MAX 2 // len too large + +typedef float f_t; +typedef f_t compl [2]; +compl root [MAX >> 1]; // Sinus-/Kosinustabelle +size_t shuffle [MAX >> 1] [2]; // Shuffle-Tabelle +size_t shuffle_len; + +// Bitinversion + +size_t swap ( size_t number, int bits ) +{ + size_t ret; + for ( ret = 0; bits--; number >>= 1 ) { + ret = ret + ret + (number & 1); + } + return ret; +} + +// Bestimmen des Logarithmus dualis + +int ld ( size_t number ) +{ + size_t i; + for ( i = 0; i < sizeof(size_t)*CHAR_BIT; i++ ) + if ( ((size_t)1 << i) == number ) + return i; + return -1; +} + +// Die eigentliche FFT + +int fft ( compl* fn, const size_t newlen ) +{ + static size_t len = 0; + static int bits = 0; + size_t i; + size_t j; + size_t k; + size_t p; + + /* Tabellen initialisieren */ + + if ( newlen != len ) { + len = newlen; + + if ( (bits=ld(len)) == -1 ) + return FFT_ERR_LD; + + for ( i = 0; i < len; i++ ) { + j = swap ( i, bits ); + if ( i < j ) { + shuffle [shuffle_len] [0] = i; + shuffle [shuffle_len] [1] = j; + shuffle_len++; + } + } + for ( i = 0; i < (len>>1); i++ ) { + double x = (double) swap ( i+i, bits ) * 2*M_PI/len; + root [i] [0] = cos (x); + root [i] [1] = sin (x); + } + } + + /* Eigentliche Transformation */ + + p = len >> 1; + do { + f_t* bp = (f_t*) root; + f_t* si = (f_t*) fn; + f_t* di = (f_t*) fn+p+p; + + do { + k = p; + do { + f_t mulr = bp[0]*di[0] - bp[1]*di[1]; + f_t muli = bp[1]*di[0] + bp[0]*di[1]; + + di[0] = si[0] - mulr; + di[1] = si[1] - muli; + si[0] += mulr; + si[1] += muli; + + si += 2, di += 2; + } while ( --k ); + si += p+p, di += p+p, bp += 2; + } while ( si < &fn[len][0] ); + } while (p >>= 1); + + /* Bitinversion */ + + for ( k = 0; k < shuffle_len; k++ ) { + f_t tmp; + i = shuffle [k] [0]; + j = shuffle [k] [1]; + tmp = fn [i][0]; fn [i][0] = fn [j][0]; fn [j][0] = tmp; + tmp = fn [i][1]; fn [i][1] = fn [j][1]; fn [j][1] = tmp; + } + + return FFT_ERR_OK; +} + +void printnumber ( long double x ) +{ + unsigned exp = 0; + + if ( x < 9.999995 ) fprintf ( stderr, "%7.5f", (double)x ); + else if ( x < 99.99995 ) fprintf ( stderr, "%7.4f", (double)x ); + else if ( x < 999.9995 ) fprintf ( stderr, "%7.3f", (double)x ); + else if ( x < 9999.995 ) fprintf ( stderr, "%7.2f", (double)x ); + else if ( x < 99999.95 ) fprintf ( stderr, "%7.1f", (double)x ); + else if ( x < 999999.5 ) fprintf ( stderr, "%6.0f.", (double)x ); + else if ( x < 9999999.5 ) fprintf ( stderr, "%7.0f", (double)x ); + else if ( x < 9.9995e9 ) { + while ( x >= 9.9995 ) exp++ , x /= 10; + fprintf ( stderr, "%5.3fe%01u", (double)x, exp ); + } else if ( x < 9.995e99 ) { + while ( x >= 9.5e6 ) exp+=6 , x /= 1.e6; + while ( x >= 9.995 ) exp++ , x /= 10; + fprintf ( stderr, "%4.2fe%02u", (double)x, exp ); + } else if ( x < 9.95e999L ) { + while ( x >= 9.5e18 ) exp+=18, x /= 1.e18; + while ( x >= 9.95 ) exp++ , x /= 10; + fprintf ( stderr, "%3.1fe%03u", (double)x, exp ); + } else { + while ( x >= 9.5e48 ) exp+=48, x /= 1.e48; + while ( x >= 9.5 ) exp++ , x /= 10; + fprintf ( stderr, "%1.0f.e%04u", (double)x, exp ); + } +} + +double logdual ( long double x ) +{ + unsigned exp = 0; + + while ( x >= 18446744073709551616. ) + x /= 18446744073709551616., exp += 64; + while ( x >= 256. ) + x /= 256., exp += 8; + while ( x >= 2. ) + x /= 2., exp += 1; + return exp + log (x)/log(2); +} + +int random_number ( void ) +{ + struct timeval t; + unsigned long val; + + gettimeofday ( &t, NULL ); + + val = t.tv_sec ^ t.tv_usec ^ rand(); + val ^= val >> 16; + val ^= val >> 8; + val ^= val >> 4; + val ^= val >> 2; + val ^= val >> 1; + + return val & 1; +} + +long double prob ( int last, int total ) +{ + long double sum = 0.; + long double tmp = 1.; + int i; + int j = total; + + if ( 2*last == total ) + return 1.; + if ( 2*last > total ) + last = total - last; + + for ( i = 0; i <= last; i++ ) { + sum += tmp; + tmp = tmp * (total-i) / (1+i); + while ( j > 0 && tmp > 1 ) + j--, sum *= 0.5, tmp *= 0.5; + } + while ( j > 0 ) + j--, sum *= 0.5; + + return 2.*sum; +} + + +void eval ( int right ) +{ + static int count = 0; + static int okay = 0; + long double val; + + count ++; + okay += right; + + val = 1.L / prob ( okay, count ); + + fprintf (stderr, " %s %5u/%-5u ", right ? "OK" : "- " , okay, count ); + printnumber (val); + if ( count > 1 ) + fprintf (stderr, " %4.2f bit", 0.01 * (int)(logdual(val) / (count-1) * 100.) ); + fprintf ( stderr, "\n" ); +} + + +typedef signed short sample_t; +typedef sample_t mono_t [1]; +typedef sample_t stereo_t [2]; +typedef struct { + unsigned long n; + long double x; + long double x2; + long double y; + long double y2; + long double xy; +} korr_t; + + +void analyze_stereo ( const stereo_t* p1, const stereo_t* p2, size_t len, korr_t* const k ) +{ + long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; + double t1; + double t2; + + k -> n += 2*len; + + for ( ; len--; p1++, p2++ ) { + _x += (t1 = (*p1)[0]); _x2 += t1 * t1; + _y += (t2 = (*p2)[0]); _y2 += t2 * t2; + _xy += t1 * t2; + _x += (t1 = (*p1)[1]); _x2 += t1 * t1; + _y += (t2 = (*p2)[1]); _y2 += t2 * t2; + _xy += t1 * t2; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _y ; + k -> y2 += _y2; + k -> xy += _xy; +} + +int sgn ( double x ) +{ + if ( x == 0 ) return 0; + if ( x < 0 ) return -1; + return +1; +} + +long double report ( const korr_t* const k ) +{ + long double r; + long double sx; + long double sy; + long double x; + long double y; + long double b; + + r = (k->x2*k->n - k->x*k->x) * (k->y2*k->n - k->y*k->y); + r = r > 0.l ? (k->xy*k->n - k->x*k->y) / sqrt (r) : 1.l; + sx = k->n > 1 ? sqrt ( (k->x2 - k->x*k->x/k->n) / (k->n - 1) ) : 0.l; + sy = k->n > 1 ? sqrt ( (k->y2 - k->y*k->y/k->n) / (k->n - 1) ) : 0.l; + x = k->n > 0 ? k->x/k->n : 0.l; + y = k->n > 0 ? k->y/k->n : 0.l; + + b = sx != 0 ? sy/sx * sgn(r) : 0.l; + if (verbose) + fprintf ( stderr, "r=%Lf sx=%Lf sy=%Lf x=%Lf y=%Lf b=%Lf\n", r, sx, sy, x, y, b ); + return b; +} + + +int feed ( int fd, const stereo_t* p, int len ) +{ + write ( fd, p, sizeof(stereo_t) * len ); + return len; +} + + +short round ( double f ) +{ + long x = (long) floor ( f + 0.5 ); + return x == (short)x ? (short)x : (short) ((x >> 31) ^ 0x7FFF); +} + + +int feed2 ( int fd, const stereo_t* p1, const stereo_t* p2, int len ) +{ + stereo_t tmp [30000]; /* An arbitrary size, hope that no overruns occure */ + int i; + + if (len > sizeof(tmp)/sizeof(*tmp)) + len = sizeof(tmp)/sizeof(*tmp); + for ( i = 0; i < len; i++ ) { + double f = cos ( M_PI/2*i/len ); + f *= f; + tmp [i] [0] = round ( p1 [i] [0] * f + p2 [i] [0] * (1. - f) ); + tmp [i] [1] = round ( p1 [i] [1] * f + p2 [i] [1] * (1. - f) ); + } + + write ( fd, tmp, sizeof(stereo_t) * len ); + return len; +} + + +int feedfac ( int fd, const stereo_t* p1, const stereo_t* p2, int len, double fac1, double fac2 ) +{ + stereo_t tmp [30000]; /* An arbitrary size, hope that no overruns occure */ + int i; + + if (len > sizeof(tmp)/sizeof(*tmp)) + len = sizeof(tmp)/sizeof(*tmp); + for ( i = 0; i < len; i++ ) { + tmp [i] [0] = round ( p1 [i] [0] * fac1 + p2 [i] [0] * fac2 ); + tmp [i] [1] = round ( p1 [i] [1] * fac1 + p2 [i] [1] * fac2 ); + } + + write ( fd, tmp, sizeof(stereo_t) * len ); + return len; +} + + +void setup ( int fdd, int samples, long freq ) +{ + int status, org, arg; + + // Nach vorn verschoben + if ( -1 == (status = ioctl (fdd, SOUND_PCM_SYNC, 0)) ) + perror ("SOUND_PCM_SYNC ioctl failed"); + + org = arg = 2; + if ( -1 == (status = ioctl (fdd, SOUND_PCM_WRITE_CHANNELS, &arg)) ) + perror ("SOUND_PCM_WRITE_CHANNELS ioctl failed"); + if (arg != org) + perror ("unable to set number of channels"); + fprintf (stderr, "%1u*", arg); + + org = arg = 16; + if ( -1 == (status = ioctl (fdd, SOUND_PCM_WRITE_BITS, &arg)) ) + perror ("SOUND_PCM_WRITE_BITS ioctl failed"); + if (arg != org) + perror ("unable to set sample size"); + fprintf (stderr, "%2u bit ", arg); + + org = arg = AFMT_S16_LE; + if ( -1 == ioctl (fdd, SNDCTL_DSP_SETFMT, &arg) ) + perror ("SNDCTL_DSP_SETFMT ioctl failed"); + if ((arg & org) == 0) + perror ("unable to set data format"); + + org = arg = freq; + if ( -1 == (status = ioctl (fdd, SOUND_PCM_WRITE_RATE, &arg)) ) + perror ("SOUND_PCM_WRITE_WRITE ioctl failed"); + fprintf (stderr, "%5u Hz*%.3f sec\n", arg, (double)samples/arg ); + + org = arg = DMA_SAMPLES; + if ( -1 == (status = ioctl (fdd, SNDCTL_DSP_SETFRAGMENT, &arg)) ) + perror ("SNDCTL_DSP_SETFRAGMENT ioctl failed"); +} + + +void Message ( const char* s, size_t index, long freq, size_t start, size_t stop ) +{ + unsigned long norm_index = 100lu * index / freq; + unsigned long norm_start = 100lu * start / freq; + unsigned long norm_stop = 100lu * stop / freq; + + fprintf ( stderr, "\rListening %s %2lu:%02lu.%02lu (%1lu:%02lu.%02lu...%1lu:%02lu.%02lu)%*.*s\rListening %s", + s, + norm_index / 6000, norm_index / 100 % 60, norm_index % 100, + norm_start / 6000, norm_start / 100 % 60, norm_start % 100, + norm_stop / 6000, norm_stop / 100 % 60, norm_stop % 100, + 36 - (int)strlen(s), 36 - (int)strlen(s), "", + s ); + + fflush ( stderr ); +} + + +size_t calc_true_index ( size_t index, size_t start, size_t stop ) +{ + if ( start >= stop ) + return start; + while ( index - start < DMA_SAMPLES ) + index += stop - start; + return index - DMA_SAMPLES; +} + + +void testing ( const stereo_t* A, const stereo_t* B, size_t len, long freq ) +{ + int c; + int fd = open ( "/dev/dsp", O_WRONLY ); + int rnd = random_number (); /* Auswahl von X */ + int state = 0; /* derzeitiger F�ttungsmodus */ + float fac1 = 0.5; + float fac2 = 0.5; + size_t start = 0; + size_t stop = len; + size_t index = start; /* derzeitiger Offset auf den Audiostr�men */ + char message [80] = "A "; + + setup ( fd, len, freq ); + + while ( 1 ) { + c = sel (); + if ( c == 27 ) + c = sel () + 0x100; + + switch ( c ) { + case 'A' : + case 'a' : + strcpy ( message, "A " ); + if ( state != 0 ) + state = 2; + break; + + case 0x100+'0' : + case '0' : + case 'B' : + case 'b' : + strcpy ( message, " B" ); + if ( state != 1 ) + state = 3; + break; + + case 'X' : + case 'x' : + strcpy ( message, " X " ); + if ( state != rnd ) + state = rnd + 2; + break; + + case 'm' : + state = 8; + break; + + case 'M' : + state = (state & 1) + 4; + break; + + case 'x'&0x1F: + state = (state & 1) + 6; + break; + + case ' ': + start = 0; + stop = len; + break; + + case 'o' : + start = calc_true_index ( index, start, stop); + break; + case 'p' : + stop = calc_true_index ( index, start, stop); + break; + case 'h' : + if ( start > freq/100 ) + start -= freq/100; + else + start = 0; + index = start; + continue; + case 'j' : + if ( start < stop-freq/100 ) + start += freq/100; + else + start = stop; + index = start; + continue; + case 'k' : + if ( stop > start+freq/100 ) + stop -= freq/100; + else + stop = start; + continue; + case 'l' : + if ( stop < len-freq/100 ) + stop += freq/100; + else + stop = len; + continue; + case '\n': + index = start; + continue; + + case 'D'+0x100: + strcpy ( message, "Difference (+40 dB)" ); + state = 9; + fac1 = -100.; + fac2 = +100.; + break; + + case 'd'+0x100: + strcpy ( message, "Difference (+30 dB)" ); + state = 9; + fac1 = -32.; + fac2 = +32.; + break; + + case 'D' & 0x1F : + strcpy ( message, "Difference (+20 dB)" ); + state = 9; + fac1 = -10.; + fac2 = +10.; + break; + + case 'D' : + strcpy ( message, "Difference (+10 dB)" ); + state = 9; + fac1 = -3.; + fac2 = +3.; + break; + + case 'd' : + strcpy ( message, "Difference ( 0 dB)" ); + state = 9; + fac1 = -1.; + fac2 = +1.; + break; + + case 0x100+'1' : + case 0x100+'2' : + case 0x100+'3' : + case 0x100+'4' : + case 0x100+'5' : + case 0x100+'6' : + case 0x100+'7' : + case 0x100+'8' : + case 0x100+'9' : + sprintf ( message, " B (Errors -%c dB)", (char)c ); + state = 9; + fac2 = pow (10., -0.05*(c-0x100-'0') ); + fac1 = 1. - fac2; + break; + + case '1' : + case '2' : + case '3' : + case '4' : + case '5' : + case '6' : + case '7' : + case '8' : + case '9' : + sprintf ( message, " B (Errors +%c dB)", c ); + state = 9; + fac2 = pow (10., 0.05*(c-'0') ); + fac1 = 1. - fac2; + break; + + case 'A' & 0x1F: + fprintf (stderr, " Vote for X:=A" ); + eval ( rnd == 0 ); + rnd = random_number (); + if ( state == 6 && state == 7 ) + state = 6 + rnd; + else if ( state != rnd ) + state = rnd + 2; + strcpy ( message," X " ); + break; + + case 'B' & 0x1F: + fprintf (stderr, " Vote for X:=B" ); + eval ( rnd == 1 ); + rnd = random_number (); + if ( state == 6 && state == 7 ) + state = 6 + rnd; + else if ( state != rnd ) + state = rnd + 2; + strcpy ( message," X " ); + break; + + case -1: + break; + + default: + fprintf (stderr, "\a" ); + break; + + case 'Q': + case 'q': + fprintf ( stderr, "\n%-79.79s\r", "Quit program" ); + close (fd); + fprintf ( stderr, "\n\n"); + return; + } + + switch (state) { + case 0: /* A */ + if ( index + BF >= stop ) + index += feed (fd, A+index, stop-index ); + else + index += feed (fd, A+index, BF ); + break; + + case 1: /* B */ + if ( index + BF >= stop ) + index += feed (fd, B+index, stop-index ); + else + index += feed (fd, B+index, BF ); + break; + + case 2: /* B => A */ + if ( index + BF >= stop ) + index += feed2 (fd, B+index, A+index, stop-index ); + else + index += feed2 (fd, B+index, A+index, BF ); + state = 0; + break; + + case 3: /* A => B */ + if ( index + BF >= stop ) + index += feed2 (fd, A+index, B+index, stop-index ); + else + index += feed2 (fd, A+index, B+index, BF ); + state = 1; + break; + + case 4: /* A */ + strcpy ( message, "A " ); + if ( index + BF >= stop ) + index += feed (fd, A+index, stop-index ), + state++; + else + index += feed (fd, A+index, BF ); + break; + + case 5: /* B */ + strcpy ( message, " B" ); + if ( index + BF >= stop ) + index += feed (fd, B+index, stop-index ), + state--; + else + index += feed (fd, B+index, BF ); + break; + + case 6: /* X */ + strcpy ( message, " X " ); + if ( index + BF >= stop ) + index += feed (fd, (rnd ? B : A)+index, stop-index ), + state++; + else + index += feed (fd, (rnd ? B : A)+index, BF ); + break; + + case 7: /* !X */ + strcpy ( message, "!X " ); + if ( index + BF >= stop ) + index += feed (fd, (rnd ? A : B)+index, stop-index ), + state--; + else + index += feed (fd, (rnd ? A : B)+index, BF ); + break; + + case 8: + if ( index + BF/2 >= stop ) + index += feed2 (fd, A+index, B+index, stop-index ); + else + index += feed2 (fd, A+index, B+index, BF/2 ); + Message ( " B", index, freq, start, stop ); + if ( index + BF >= stop ) + index += feed (fd, B+index, stop-index ); + else + index += feed (fd, B+index, BF ); + if ( index + BF/2 >= stop ) + index += feed2 (fd, B+index, A+index, stop-index ); + else + index += feed2 (fd, B+index, A+index, BF/2 ); + Message ( "A ", index, freq, start, stop ); + if ( index + BF >= stop ) + index += feed (fd, A+index, stop-index ); + else + index += feed (fd, A+index, BF ); + break; + + case 9: /* Liko */ + if ( index + BF >= stop ) + index += feedfac (fd, A+index, B+index, stop-index, fac1, fac2 ); + else + index += feedfac (fd, A+index, B+index, BF , fac1, fac2 ); + break; + + default: + assert (0); + } + + if (index >= stop) + index = start; + Message ( message, calc_true_index ( index, start, stop), freq, start, stop ); + } +} + + +int has_ext ( const char* name, const char* ext ) +{ + if ( strlen (name) < strlen (ext) ) + return 0; + name += strlen (name) - strlen (ext); + return strcasecmp (name, ext) ? 0 : 1; +} + + +typedef struct { + const char* const extention; + const char* const command; +} decoder_t; + + +#define REDIR " 2> /dev/null" +#define STDOUT "/dev/fd/1" +#define PATH PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING + +const decoder_t decoder [] = { + { ".mp1" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer I : www.iis.fhg.de, www.mpeg.org + { ".mp2" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer II : www.iis.fhg.de, www.uq.net.au/~zzmcheng, www.mpeg.org + { ".mp3" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org/mp3, www.mpeg.org + { ".mp3pro" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org/mp3, www.mpeg.org + { ".mpt" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org/mp3, www.mpeg.org + { ".mpp" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 + { ".mpc" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 + { ".mp+" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 + { ".aac" , PATH"faad -t.wav -w %s" REDIR }, // Advanced Audio Coding: psytel.hypermart.net, www.aac-tech.com, sourceforge.net/projects/faac, www.aac-audio.com, www.mpeg.org + { "aac.lqt" , PATH"faad -t.wav -w %s" REDIR }, // Advanced Audio Coding: psytel.hypermart.net, www.aac-tech.com, sourceforge.net/projects/faac, www.aac-audio.com, www.mpeg.org + { ".ac3" , PATH"ac3dec %s" REDIR }, // Dolby AC3 : www.att.com + { "ac3.lqt" , PATH"ac3dec %s" REDIR }, // Dolby AC3 : www.att.com + { ".ogg" , PATH"ogg123 -d wav -o file:"STDOUT" %s" REDIR }, // Ogg Vorbis : www.xiph.org/ogg/vorbis/index.html + { ".pac" , PATH"lpac -x %s "STDOUT REDIR }, // Lossless predictive Audio Compression: www-ft.ee.tu-berlin.de/~liebchen/lpac.html (liebchen@ft.ee.tu-berlin.de) + { ".shn" , PATH"shorten -x < %s" REDIR }, // Shorten : shnutils.freeshell.org, www.softsound.com/Shorten.html (shnutils@freeshell.org, shorten@softsound.com) + { ".wav.gz" , "gzip -d < %s | sox -twav - -twav -sw -" REDIR }, // gziped WAV + { ".wav.sz" , PATH"szip -d < %s | sox -twav - -twav -sw -"REDIR }, // sziped WAV + { ".wav.sz2", PATH"szip2 -d < %s | sox -twav - -twav -sw -"REDIR }, // sziped WAV + { ".raw" , "sox -r44100 -sw -c2 -traw %s -twav -sw -" REDIR }, // raw files are treated as CD like audio + { ".cdr" , "sox -r44100 -sw -c2 -traw %s -twav -sw -" REDIR }, // CD-DA files are treated as CD like audio, no preemphasis info available + { ".rm" , "echo %s '???'" REDIR }, // Real Audio : www.real.com + { ".epc" , "echo %s '???'" REDIR }, // ePAC : www.audioveda.com, www.lucent.com/ldr + { ".mov" , "echo %s '???'" REDIR }, // QDesign Music 2 : www.qdesign.com + { ".vqf" , "echo %s '???'" REDIR }, // TwinVQ : www.yamaha-xg.com/english/xg/SoundVQ, www.vqf.com, sound.splab.ecl.ntt.co.jp/twinvq-e + { ".wma" , "echo %s '???'" REDIR }, // Microsoft Media Audio: www.windowsmedia.com, www.microsoft.com/windows/windowsmedia + { ".flac" , PATH"flac -c -d %s" REDIR }, // Free Lossless Audio Coder: flac.sourceforge.net/ + { ".fla" , PATH"flac -c -d %s" REDIR }, // Free Lossless Audio Coder: flac.sourceforge.net/ + { ".ape" , "( "PATH"MAC %s _._.wav -d > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // Monkey's Audio Codec : www.monkeysaudio.com (email@monkeysaudio.com) + { ".rka" , "( "PATH"rkau %s _._.wav > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // RK Audio: + { ".rkau" , "( "PATH"rkau %s _._.wav > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // RK Audio: + { ".mod" , "xmp -b16 -c -f44100 --stereo -o- %s | sox -r44100 -sw -c2 -traw - -twav -sw -" + REDIR }, // Amiga's Music on Disk: + { "" , "sox %s -twav -sw -" REDIR }, // Rest, may be sox can handle it +}; + +#undef REDIR +#undef STDOUT +#undef PATH + + +int readwave ( stereo_t* buff, size_t maxlen, const char* name, size_t* len ) +{ + char* command = malloc (2*strlen(name) + 512); + char* name_q = malloc (2*strlen(name) + 128); + unsigned short header [22]; + FILE* fp; + size_t i; + size_t j; + + // The *nice* shell quoting + i = j = 0; + if ( name[i] == '-' ) + name_q[j++] = '.', + name_q[j++] = '/'; + + while (name[i]) { + if ( !isalnum (name[i]) && name[i]!='-' && name[i]!='_' && name[i]!='.' ) + name_q[j++] = '\\'; + name_q[j++] = name[i++]; + } + name_q[j] = '\0'; + + fprintf (stderr, "Reading %s", name ); + for ( i = 0; i < sizeof(decoder)/sizeof(*decoder); i++ ) + if ( has_ext (name, decoder[i].extention) ) { + sprintf ( command, decoder[i].command, name_q ); + break; + } + + free (name_q); + if ( (fp = popen (command, "r")) == NULL ) { + fprintf (stderr, "Can't exec:\n%s\n", command ); + exit (1); + } + free (command); + + fprintf (stderr, " ..." ); + fread ( header, sizeof(*header), sizeof(header)/sizeof(*header), fp ); + switch ( header[11] ) { + case 2: + *len = fread ( buff, sizeof(stereo_t), maxlen, fp ); + break; + case 1: + *len = fread ( buff, sizeof(sample_t), maxlen, fp ); + for ( i = *len; i-- > 0; ) + buff[i][0] = buff[i][1] = ((sample_t*)buff) [i]; + break; + case 0: + fprintf (stderr, "\b\b\b\b, Standard Open Source Bug detected, try murksaround ..." ); + *len = fread ( buff, sizeof(stereo_t), maxlen, fp ); + header[11] = 2; + header[12] = 65534; /* use that of the other channel */ + break; + default: + fprintf (stderr, "Only 1 or 2 channels are supported, not %u\n", header[11] ); + pclose (fp); + return -1; + } + pclose ( fp ); + fprintf (stderr, "\n" ); + return header[12] ? header[12] : 65534; +} + + +double cross_analyze ( const stereo_t* p1, const stereo_t *p2, size_t len ) +{ + float P1 [MAX] [2]; + float P2 [MAX] [2]; + int i; + int maxindex; + double sum1; + double sum2; + double max; + double y1; + double y2; + double y3; + double yo; + double xo; + double tmp; + double tmp1; + double tmp2; + int ret = 0; + int cnt = 5; + + // Calculating effective voltage + sum1 = sum2 = 0.; + for ( i = 0; i < len; i++ ) { + sum1 += (double)p1[i][0] * p1[i][0]; + sum2 += (double)p2[i][0] * p2[i][0]; + } + sum1 = sqrt ( sum1/len ); + sum2 = sqrt ( sum2/len ); + + // Searching beginning of signal (not stable for pathological signals) + for ( i = 0; i < len; i++ ) + if ( abs (p1[i][0]) >= sum1 && abs (p2[i][0]) >= sum2 ) + break; + p1 += i; + p2 += i; + len -= i; + + if ( len <= MAX ) + return 0; + + // Filling arrays for FFT + do { + sum1 = sum2 = 0.; + for ( i = 0; i < MAX; i++ ) { +#ifdef USEDIFF + tmp1 = p1 [i][0] - p1 [i+1][0]; + tmp2 = p2 [i+ret][0] - p2 [i+ret+1][0]; +#else + tmp1 = p1 [i][0]; + tmp2 = p2 [i+ret][0]; +#endif + sum1 += tmp1*tmp1; + sum2 += tmp2*tmp2; + P1 [i][0] = tmp1; + P2 [i][0] = tmp2; + P1 [i][1] = 0.; + P2 [i][1] = 0.; + } + + fft (P1, MAX); + fft (P2, MAX); + + for ( i = 0; i < MAX; i++ ) { + double a0 = P1 [i][0]; + double a1 = P1 [i][1]; + double b0 = P2 [(MAX-i)&(MAX-1)][0]; + double b1 = P2 [(MAX-i)&(MAX-1)][1]; + P1 [i][0] = a0*b0 - a1*b1; + P1 [i][1] = a0*b1 + a1*b0; + } + + fft (P1, MAX); + + max = P1 [maxindex = 0][0]; + for ( i = 1; i < MAX; i++ ) + if ( P1[i][0] > max ) + max = P1 [maxindex = i][0]; + + y2 = P1 [ maxindex ][0]; + y1 = P1 [(maxindex-1)&(MAX-1)][0] - y2; + y3 = P1 [(maxindex+1)&(MAX-1)][0] - y2; + + xo = 0.5 * (y1-y3) / (y1+y3); + yo = 0.5 * ( (y1+y3)*xo + (y3-y1) ) * xo; + + if (maxindex > MAX/2 ) + maxindex -= MAX; + + ret += maxindex; + tmp = 100./MAX/sqrt(sum1*sum2); + if (verbose) + printf ( "[%5d]%8.4f [%5d]%8.4f [%5d]%8.4f [%10.4f]%8.4f\n", + ret- 1, (y1+y2)*tmp, + ret , y2 *tmp, + ret+ 1, (y3+y2)*tmp, + ret+xo, (yo+y2)*tmp ); + + } while ( maxindex && cnt-- ); + + return ret + xo; +} + + +short to_short ( int x ) +{ + return x == (short)x ? (short)x : (short) ((x >> 31) ^ 0x7FFF); +} + + +void DC_cancel ( stereo_t* p, size_t len ) +{ + double sum1 = 0; + double sum2 = 0; + size_t i; + int diff1; + int diff2; + + for (i = 0; i < len; i++ ) { + sum1 += p[i][0]; + sum2 += p[i][1]; + } + if ( fabs(sum1) < len && fabs(sum2) < len ) + return; + + diff1 = round ( sum1 / len ); + diff2 = round ( sum2 / len ); + if (verbose) + fprintf (stderr, "Removing DC (left=%d, right=%d)\n", diff1, diff2 ); + + for (i = 0; i < len; i++ ) { + p[i][0] = to_short ( p[i][0] - diff1); + p[i][1] = to_short ( p[i][1] - diff2); + } +} + +void multiply ( char c, stereo_t* p, size_t len, double fact ) +{ + size_t i; + + if ( fact == 1. ) + return; + if (verbose) + fprintf (stderr, "Multiplying %c by %7.5f\n", c, fact ); + + for (i = 0; i < len; i++ ) { + p[i][0] = to_short ( p[i][0] * fact ); + p[i][1] = to_short ( p[i][1] * fact ); + } +} + + +int maximum ( stereo_t* p, size_t len ) +{ + int max = 0; + size_t i; + + for (i = 0; i < len; i++ ) { + if (abs(p[i][0]) > max) max = abs(p[i][0]); + if (abs(p[i][1]) > max) max = abs(p[i][1]); + } + return max; +} + + +void usage ( void ) +{ + fprintf ( stderr, + "usage: abx [-v] File_A File_B\n" + "\n" + "File_A and File_B loaded and played. File_A should be the better/reference\n" + "file, File_B the other. You can press the following keys:\n" + "\n" + " a/A: Listen to File A\n" + " b/B: Listen to File B\n" + " x/X: Listen to the randomly selected File X, which is A or B\n" + " Ctrl-A: You vote for X=A\n" + " Ctrl-B: You vote for X=B\n" + " m: Alternating playing A and B. Fast switching\n" + " M: Alternating playing A and B. Slow switching\n" + " d/D/Ctrl-D/Alt-d/Alt-D:\n" + " Listen to the difference A-B (+0 dB...+40 dB)\n" + " o/p: Chunk select\n" + " hjkl: Chunk fine adjust (hj: start, kl: stop)\n" + " Space: Chunk deselect\n" + " 0...9: Listen to B, but difference A-B is amplified by 0-9 dB\n" + " Q: Quit the program\n" + "\n" + ); +} + + +int main ( int argc, char** argv ) +{ + stereo_t* _A = calloc ( sizeof(stereo_t), MAX_LEN ); + stereo_t* _B = calloc ( sizeof(stereo_t), MAX_LEN ); + stereo_t* A = _A; + stereo_t* B = _B; + size_t len_A; + size_t len_B; + size_t len; + int max_A; + int max_B; + int max; + long freq1; + long freq2; + int shift; + double fshift; + double ampl; + int ampl_X; + korr_t k; + + if (argc > 1 && 0 == strcmp (argv[1], "-v") ) { + verbose = 1; + argc--; + argv++; + } + + switch ( argc ) { + case 0: + case 1: + case 2: + default: + usage (); + return 1; + case 3: + usage(); + break; + } + + freq1 = readwave ( A, MAX_LEN, argv[1], &len_A ); + DC_cancel ( A, len_A ); + freq2 = readwave ( B, MAX_LEN, argv[2], &len_B ); + DC_cancel ( B, len_B ); + + if ( freq1 == 65534 && freq2 != 65534 ) + freq1 = freq2; + else if ( freq2 == 65534 && freq1 != 65534 ) + freq2 = freq1; + else if ( freq1 == 65534 && freq2 == 65534 ) + freq1 = freq2 = 44100; + + if ( freq1 != freq2 ) { + fprintf ( stderr, "Different sample frequencies currently not supported\n"); + fprintf ( stderr, "A: %ld, B: %ld\n", freq1, freq2 ); + return 2; + } + + len = len_A < len_B ? len_A : len_B; + fshift = cross_analyze ( A, B, len ); + shift = floor ( fshift + 0.5 ); + + if ( verbose ) { + fprintf ( stderr, "Delay Ch1 is %.4f samples\n", fshift ); + fprintf ( stderr, "Delay Ch2 is %.4f samples\n", + cross_analyze ( (stereo_t*)(((sample_t*)A)+1), (stereo_t*)(((sample_t*)B)+1), len ) ); + } + + if (shift > 0) { + if (verbose) + fprintf ( stderr, "Delaying A by %d samples\n", +shift); + B += shift; + len_B -= shift; + } + if (shift < 0) { + if (verbose) + fprintf ( stderr, "Delaying B by %d samples\n", -shift); + A -= shift; + len_A += shift; + } + + len = len_A < len_B ? len_A : len_B; + memset ( &k, 0, sizeof(k) ); + analyze_stereo ( A, B, len, &k ); + ampl = report (&k); + max_A = maximum ( A, len ); + max_B = maximum ( B, len ); + + if ( ampl <= 0.98855 ) { /* < -0.05 dB */ + max = max_A*ampl < max_B ? max_B : max_A*ampl; + ampl_X = (int)(29203 / max); + if ( ampl_X < 2 ) ampl_X = 1; + multiply ( 'A', A, len, ampl*ampl_X ); + multiply ( 'B', B, len, ampl_X ); + } else if ( ampl >= 1.01158 ) { /* > +0.05 dB */ + max = max_A < max_B/ampl ? max_B/ampl : max_A; + ampl_X = (int)(29203 / max); + if ( ampl_X < 2 ) ampl_X = 1; + multiply ( 'A', A, len, ampl_X ); + multiply ( 'B', B, len, 1./ampl*ampl_X ); + } else { + max = max_A < max_B ? max_B : max_A; + ampl_X = (int)(29203 / max); + if ( ampl_X < 2 ) ampl_X = 1; + multiply ( 'A', A, len, ampl_X ); + multiply ( 'B', B, len, ampl_X ); + } + + set (); + Set_Realtime (); + testing ( A, B, len, freq1 ); + reset (); + + free (_A); + free (_B); + return 0; +} + +/* end of abx.c */ + diff --git a/lame-3.97/misc/.svn/text-base/ath.c.svn-base b/lame-3.97/misc/.svn/text-base/ath.c.svn-base new file mode 100644 index 0000000..ee6cfda --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/ath.c.svn-base @@ -0,0 +1,839 @@ +/* $Id: ath.c,v 1.12 2000/12/05 15:37:26 aleidinger Exp $ */ +/* + * Known bugs (sorted by importance): + * - human delay (ca. 200 ms or more???) and buffering delay (341 ms @48 kHz/64 KByte) + * should be subtracted + * - error handling + * - cos slope on direction changes + * - calibration file of soundcard/amplifier/head phone + * - worse handling + * - +/- handling via mouse (do you have code?) in a dark room + * - ENTER as direction change + * - finer precalculated ATH for pre-emphasis + */ + +/* + * Suggested level ranges: + * 180 Hz...13.5 kHz: 50...70 dB + * 100 Hz...15.0 kHz: 40...70 dB + * 70 Hz...16.0 kHz: 30...70 dB + * 45 Hz...16.5 kHz: 20...70 dB + * 30 Hz...17.5 kHz: 10...70 dB + * 25 Hz...18.0 kHz: 5...75 dB + * 20 Hz...19.0 kHz: 0...80 dB + * 16 Hz...20.0 kHz: -10...80 dB + */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <assert.h> +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <fcntl.h> +#include <limits.h> +#include <termios.h> +#include <math.h> +#include <time.h> +#include <signal.h> +#include <sys/ioctl.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/stat.h> +#ifdef HAVE_SYS_SOUNDCARD_H +# include <sys/soundcard.h> +#elif defined(HAVE_LINUX_SOUNDCARD_H) +# include <linux/soundcard.h> +#else +# error no soundcard include +#endif + + + +#define AUDIO_DEVICE "/dev/dsp" +//#define COOLEDIT_FILE "/mnt/dosd/cooledit.wav" +#define DELAY_UNTIL_XCHG 2.5 +#define TURN_STEPS 2400 + +/****************************************************************************************************** + * soundcard stuff + ******************************************************************************************************/ + +const double dither_coeff [] [16] = { + { /* 48 kHz */ 3.35185352775391591311, 4.24914379295482032978, 1.78042251729150153086, -0.92601381419186201184, -1.37308596104182343645, -1.85951915999247704829, -3.28074437872632330526, -3.05496670185702990882, -1.22855462839450528837, -0.30291531959171267015, -0.18598486195652600770, 0.42010512205702003790, 0.92278786111368653452, 0.62102380451771775193, 0.14312897206650044828, -0.00454721508203927746 }, + { /* 56 kHz */ 3.86404134982280628749, 6.67195592701613291071, 5.90576195467245802046, 1.57589705921487261981, -2.10618201389737372178, -2.74191788822507184395, -2.62175070636849999396, -3.78505226463032808863, -4.45698848578010438284, -2.76825966243460536110, -0.26509931375584007312, 0.67853812028968716799, 0.17633528441477021892, -0.28511417191837823770, -0.21866605100975608470, -0.04751674094456833719 }, + { /* 64 kHz */ 4.09276938880098092172, 8.27424044674659812937, 10.11503162292146762880, 7.19159801569544317353, 1.39770070291739556523, -2.86595901981244688601, -3.76567274050094691362, -3.58051445684472378298, -4.78262917738758022539, -6.53075750894777650899, -6.31330514306857055627, -3.69971382767763534195, -0.78125094191744878298, 0.59027508113837267217, 0.53500264009607367648, 0.14860043567206217506 }, + { /* 72 kHz */ 4.13833553801985235465, 9.02461778089340082437, 12.93090366932740510782, 12.66372285767699051948, 7.76122176702274149630, 1.30617257555732278296, -2.92859120887121285358, -4.02438598495837830627, -4.16673068132491936262, -5.55618065300129916574, -7.82657788611231653103, -8.83055904466106668035, -7.34884789347713815672, -4.33977664906048314891, -1.67711310288611975398, -0.33086687044710235420 }, + { /* 80 kHz */ 4.22135293342667005517, 9.76639846582539722375, 15.46562682418357478290, 17.54378549927855248346, 13.29112084313158963396, 3.51512441998252657470, -7.51025671462502577300,-14.84164320864536219368,-16.10306907358826504148,-12.54775907691866414402, -7.40560667268782655149, -3.34708029482052565732, -1.19572214872925790860, -0.39582185216275086786, -0.14803160816846603424, -0.04292818488627011881 }, + { /* 88 kHz */ 4.18521467865996935325, 9.96765821475909556942, 16.91905760389390617551, 21.74016824668913557689, 20.96457146354060682367, 13.28640453421253890542, 0.85116933842171101587,-11.66054516261007127469,-19.62750656985581800169,-20.98831962473015904508,-16.95374072505042825458,-10.68848180295390154146, -5.17169792984369678908, -1.79975409439650319129, -0.38057073791415898674, -0.02672653932844656975 }, + { /* 96 kHz */ 4.09418877324899473189, 9.77977364010870211207, 17.10120082680385341159, 23.37356217615995036818, 25.27121942060722374276, 20.64059991613550174190, 9.99721445051475610371, -3.39833000550997938512,-15.03410054392933377278,-21.36704201000683067679,-21.40772859969388741685,-16.79355426136657673808,-10.48570200688141622163, -5.07642951516127438486, -1.75555240936989159436, -0.33817997298586054131 }, +}; + +typedef struct { + const char* device; + int fd; + long double sample_freq; + const double* dither; + int channels; + int bits; +} soundcard_t; + +typedef signed short sample_t; +typedef sample_t stereo_t [2]; + +int open_soundcard ( + soundcard_t* const k, + const char* device, + const int channels, + const int bits, + const long double freq ) +{ + int arg; + int org; + int index; + int status; + + k->device = device; + if ( -1 == (k->fd = open ( k->device, O_WRONLY )) ) { + perror("opening of audio device failed"); + return -1; + } + + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_SYNC, 0))) { + fprintf ( stderr, "%s: SOUND_PCM_SYNC ioctl failed: %s\n", k->device, strerror (errno)); + return -1; + } + + org = arg = channels; + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_CHANNELS, &arg)) ) { + fprintf ( stderr, "%s: SOUND_PCM_WRITE_CHANNELS (%d) ioctl failed: %s\n" , k->device, channels, strerror (errno) ); + return -1; + } + if (arg != org) { + fprintf ( stderr, "%s: unable to set number of channels: %d instead of %d\n", k->device, arg, org ); + return -1; + } + k->channels = arg; + + org = arg = bits; + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_BITS, &arg)) ) { + fprintf ( stderr, "%s: SOUND_PCM_WRITE_BITS ioctl failed\n", k->device ); + return -1; + } + if (arg != org) { + fprintf ( stderr, "%s: unable to set sample size: %d instead of %d\n", k->device, arg, org ); + return -1; + } + k->bits = arg; + + org = arg = k->bits <= 8 ? AFMT_U8 : AFMT_S16_LE; + if ( -1 == ioctl (k->fd, SNDCTL_DSP_SETFMT, &arg) ) { + fprintf ( stderr, "%s: SNDCTL_DSP_SETFMT ioctl failed\n", k->device ); + return -1; + } + if ((arg & org) == 0) { + fprintf ( stderr, "%s: unable to set data format\n", k->device ); + return -1; + } + + org = arg = (int) floor ( freq + 0.5 ); + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_RATE, &arg)) ) { + fprintf ( stderr, "%s: SOUND_PCM_WRITE_WRITE ioctl failed\n", k->device ); + return -1; + } + k->sample_freq = (long double)arg; + index = (arg - 44000) / 8000; + if ( index < 0 ) index = 0; + if ( index >= sizeof(dither_coeff)/sizeof(*dither_coeff) ) index = sizeof(dither_coeff)/sizeof(*dither_coeff) - 1; + k->dither = dither_coeff [ index ]; + return 0; +} + +int play_soundcard ( soundcard_t* const k, stereo_t* samples, size_t length ) +{ + size_t bytes = length * sizeof (*samples); + +#ifdef COOLEDIT_FILE + static int fd = -1; + if ( fd < 0 ) fd = open ( COOLEDIT_FILE, O_WRONLY | O_CREAT ); + write ( fd, samples, bytes ); +#endif + + return write ( k->fd, samples, bytes ) == bytes ? 0 : -1; +} + +int close_soundcard ( soundcard_t* const k ) +{ + return close (k->fd); +} + + +/****************************************************************************************************** + * frequency stuff + ******************************************************************************************************/ + +typedef enum { + linear = 0, + logarithm = 1, + square = 2, + cubic = 3, + erb = 4, + recip = 5 +} genmode_t; + +static long double linear_f ( long double x ) { return x > 0.L ? x : 0.0L; } +static long double logarithm_f ( long double x ) { return x > 0.L ? log10 (x) : -3.5L; } +static long double square_f ( long double x ) { return x > 0.L ? sqrt (x) : 0.0L; } +static long double cubic_f ( long double x ) { return x > 0.L ? pow (x,1/3.) : 0.0L; } +static long double erb_f ( long double x ) { return log (1. + 0.00437*x); } +static long double recip_f ( long double x ) { return x > 1.L ? 1.L/x : 1.0L; } + +static long double inv_linear_f ( long double x ) { return x; } +static long double inv_logarithm_f ( long double x ) { return pow (10., x); } +static long double inv_square_f ( long double x ) { return x*x; } +static long double inv_cubic_f ( long double x ) { return x*x*x; } +static long double inv_erb_f ( long double x ) { return (exp(x) - 1.) * (1./0.00437); } +static long double inv_recip_f ( long double x ) { return x > 1.L ? 1.L/x : 1.0L; } + +typedef long double (*converter_fn_t) ( long double ); + +const converter_fn_t func [] = { linear_f, logarithm_f, square_f, cubic_f , erb_f , recip_f }; +const converter_fn_t inv_func [] = { inv_linear_f, inv_logarithm_f, inv_square_f, inv_cubic_f, inv_erb_f, inv_recip_f }; + +typedef struct { + genmode_t genmode; + long double start_freq; + long double stop_freq; + long double sample_freq; + unsigned long duration; + + long double phase; + long double param1; + long double param2; + unsigned long counter; +} generator_t; + +int open_generator ( + generator_t* const g, + const soundcard_t* const s, + const genmode_t genmode, + const long double duration, + const long double start_freq, + const long double stop_freq ) +{ + g->sample_freq = s->sample_freq; + g->genmode = genmode; + g->start_freq = start_freq; + g->stop_freq = stop_freq; + g->duration = (unsigned long) floor ( duration * g->sample_freq + 0.5 ); + + if ( g->duration < 2 ) + return -1; + + if ( g->genmode >= sizeof (func)/sizeof(*func) ) + return -1; + + g->param1 = func [g->genmode] ( g->start_freq / g->sample_freq ); + g->param2 = ( func [ g->genmode ] ( g->stop_freq / g->sample_freq ) - g->param1 ) + / ( g->duration - 1 ); + g->phase = 0.L; + g->counter= 0; + + return 0; +} + +long double iterate_generator ( generator_t* const g ) +{ + long double freq; + + freq = inv_func [ g->genmode ] ( g->param1 + g->counter++ * g->param2 ); + + g->phase += freq; + if (g->phase > 15.) + g->phase -= 16.; + return sin ( 2.*M_PI * g->phase ); +} + +long double get_sine ( generator_t* const g ) +{ + return sin ( 2.*M_PI * g->phase ); +} + +long double get_cosine ( generator_t* const g ) +{ + return cos ( 2.*M_PI * g->phase ); +} + + +long double frequency ( const generator_t* const g ) +{ + return inv_func [ g->genmode ] ( g->param1 + g->counter * g->param2 ) * g->sample_freq; +} + +int close_generator ( generator_t* const g ) +{ + return 0; +} + +/****************************************************************************************************** + * amplitude stuff + ******************************************************************************************************/ + +typedef enum { + up = 0, + down = 1, + turn_up = 2, + turn_down = 3, + still_up = 4, + still_down = 5, + change = 6 +} direction_t; + + +typedef struct { + long double sample_freq; + direction_t direction; // down, up, still_up, still_down, turn_down, turn_up + int multiplier; // -TURN_STEPS: down, +TURN_STEPS up + long double amplitude; + long double delta_amplitude; + long direction_change; +} amplitude_t; + +int open_amplifier ( + amplitude_t* const a, + const soundcard_t* const s, + const long double start_ampl, + const double dB_per_sec ) +{ + a->sample_freq = s->sample_freq; + a->direction = up; + a->multiplier = +TURN_STEPS; + a->amplitude = start_ampl * 32767.; + a->delta_amplitude = dB_per_sec * 0.1151292546497022842 / s->sample_freq / TURN_STEPS; + a->direction_change = 0; + + srand ( time (NULL) ); + return 0; +} + +long double iterate_amplifier ( amplitude_t* const a ) +{ + switch ( a->direction ) { + case still_up: + assert (a->multiplier == +TURN_STEPS); + if (a->direction_change > 0 ) + a->direction_change--; + else + a->direction = turn_down; + break; + case still_down: + assert (a->multiplier == -TURN_STEPS); + if (a->direction_change > 0 ) + a->direction_change--; + else + a->direction = turn_up; + break; + case turn_up: + assert (a->direction_change == 0); + if ( a->multiplier < +TURN_STEPS ) + a->multiplier++; + else + a->direction = up; + break; + case turn_down: + assert (a->direction_change == 0); + if ( a->multiplier > -TURN_STEPS ) + a->multiplier--; + else + a->direction = down; + break; + case up: + assert (a->multiplier == +TURN_STEPS); + assert (a->direction_change == 0); + break; + case down: + assert (a->multiplier == -TURN_STEPS); + assert (a->direction_change == 0); + break; + default: + fprintf ( stderr, "\n\r*** Bug! ***\n"); + break; + } + + a->amplitude *= 1.L + a->delta_amplitude * a->multiplier; + return a->amplitude; +} + +long double amplitude ( const amplitude_t* const a ) +{ + return a->amplitude / 32767.; +} + +int change_direction ( amplitude_t* const a, direction_t new_direction ) +{ + switch ( new_direction ) { + case up: + if (a->direction == down) { + a->direction = still_down; + } else { + fprintf ( stderr, "Direction not down, so ignored\n" ); + return -1; + } + break; + case down: + if (a->direction == up) { + a->direction = still_up; + } else { + fprintf ( stderr, "Direction not up, so ignored\n" ); + return -1; + } + break; + case change: + switch ( a->direction ) { + case up: + a->direction = still_up; + break; + case down: + a->direction = still_down; + break; + default: + fprintf ( stderr, "Direction still changing, so ignored\n" ); + return -1; + } + break; + + default: + fprintf ( stderr, "Direction unknown, so ignored\n" ); + return -1; + } + + a->direction_change = 1 + rand () * (a->sample_freq * DELAY_UNTIL_XCHG / RAND_MAX); + return 0; +} + +int close_amplifier ( amplitude_t* const a ) +{ + return 0; +} + + +double ATH ( double freq ) +{ + static float tab [] = { + /* 10.0 */ 96.69, 96.69, 96.26, 95.12, + /* 12.6 */ 93.53, 91.13, 88.82, 86.76, + /* 15.8 */ 84.69, 82.43, 79.97, 77.48, + /* 20.0 */ 74.92, 72.39, 70.00, 67.62, + /* 25.1 */ 65.29, 63.02, 60.84, 59.00, + /* 31.6 */ 57.17, 55.34, 53.51, 51.67, + /* 39.8 */ 50.04, 48.12, 46.38, 44.66, + /* 50.1 */ 43.10, 41.73, 40.50, 39.22, + /* 63.1 */ 37.23, 35.77, 34.51, 32.81, + /* 79.4 */ 31.32, 30.36, 29.02, 27.60, + /* 100.0 */ 26.58, 25.91, 24.41, 23.01, + /* 125.9 */ 22.12, 21.25, 20.18, 19.00, + /* 158.5 */ 17.70, 16.82, 15.94, 15.12, + /* 199.5 */ 14.30, 13.41, 12.60, 11.98, + /* 251.2 */ 11.36, 10.57, 9.98, 9.43, + /* 316.2 */ 8.87, 8.46, 7.44, 7.12, + /* 398.1 */ 6.93, 6.68, 6.37, 6.06, + /* 501.2 */ 5.80, 5.55, 5.29, 5.02, + /* 631.0 */ 4.75, 4.48, 4.22, 3.98, + /* 794.3 */ 3.75, 3.51, 3.27, 3.22, + /* 1000.0 */ 3.12, 3.01, 2.91, 2.68, + /* 1258.9 */ 2.46, 2.15, 1.82, 1.46, + /* 1584.9 */ 1.07, 0.61, 0.13, -0.35, + /* 1995.3 */ -0.96, -1.56, -1.79, -2.35, + /* 2511.9 */ -2.95, -3.50, -4.01, -4.21, + /* 3162.3 */ -4.46, -4.99, -5.32, -5.35, + /* 3981.1 */ -5.13, -4.76, -4.31, -3.13, + /* 5011.9 */ -1.79, 0.08, 2.03, 4.03, + /* 6309.6 */ 5.80, 7.36, 8.81, 10.22, + /* 7943.3 */ 11.54, 12.51, 13.48, 14.21, + /* 10000.0 */ 14.79, 13.99, 12.85, 11.93, + /* 12589.3 */ 12.87, 15.19, 19.14, 23.69, + /* 15848.9 */ 33.52, 48.65, 59.42, 61.77, + /* 19952.6 */ 63.85, 66.04, 68.33, 70.09, + /* 25118.9 */ 70.66, 71.27, 71.91, 72.60, + }; + double freq_log; + double dB; + unsigned index; + + if ( freq < 10. ) freq = 10.; + if ( freq > 25000. ) freq = 25000.; + + freq_log = 40. * log10 (0.1 * freq); /* 4 steps per third, starting at 10 Hz */ + index = (unsigned) freq_log; + assert ( index < sizeof(tab)/sizeof(*tab) ); + dB = tab [index] * (1 + index - freq_log) + tab [index+1] * (freq_log - index); + return pow ( 10., 0.05*dB ); +} + +/****************************************************************************************************** + * keyboard stuff + ******************************************************************************************************/ + +typedef struct { + int init; + struct termios stored_setting; + struct termios current_setting; +} keyboard_t; + +static keyboard_t* __k; + +/* Restore term-settings to those saved when term_init was called */ + +static void term_restore (void) +{ + tcsetattr ( 0, TCSANOW, &(__k->stored_setting) ); +} /* term_restore */ + +/* Clean up terminal; called on exit */ + +static void term_exit ( int sig ) +{ + term_restore (); +} /* term_exit */ + +/* Will be called when ctrl-Z is pressed, this correctly handles the terminal */ + +static void term_ctrl_z ( int sig ) +{ + signal ( SIGTSTP, term_ctrl_z ); + term_restore (); + kill ( getpid(), SIGSTOP ); +} /* term_ctrl_z */ + +/* Will be called when application is continued after having been stopped */ + +static void term_cont ( int sig ) +{ + signal ( SIGCONT, term_cont ); + tcsetattr ( 0, TCSANOW, &(__k->current_setting) ); +} /* term_cont() */ + +int open_keyboard ( keyboard_t* const k ) +{ + __k = k; + tcgetattr ( 0, &(k->stored_setting) ); + tcgetattr ( 0, &(k->current_setting) ); + + signal ( SIGINT, term_exit ); /* We _must_ clean up when we exit */ + signal ( SIGQUIT, term_exit ); + signal ( SIGTSTP, term_ctrl_z ); /* Ctrl-Z must also be handled */ + signal ( SIGCONT, term_cont ); +// atexit ( term_exit ); + + /* One or more characters are sufficient to cause a read to return */ + cfmakeraw ( &(k->current_setting) ); + k->current_setting.c_oflag |= ONLCR | OPOST; /* enables NL => CRLF on output */ + + tcsetattr ( 0, TCSANOW, &(k->current_setting) ); + return 0; +} + +int getchar_keyboard ( keyboard_t* const k ) +{ + struct timeval t; + fd_set fd [1]; + int ret; + unsigned char c; + + FD_SET (0, fd); + t.tv_sec = 0; + t.tv_usec = 0; + + ret = select ( 1, fd, NULL, NULL, &t ); + + switch ( ret ) { + case 0: + return -1; + case 1: + ret = read (0, &c, 1); + return ret == 1 ? c : -1; + default: + return -2; + } +} + +int close_keyboard ( keyboard_t* const k ) +{ + term_restore (); + return 0; +} + + +/****************************************************************************************************** + * reporting stuff + ******************************************************************************************************/ + +int report_open ( void ) +{ + static char buff [32767]; + fflush ( stdout ); + setvbuf ( stdout, buff, _IOFBF, sizeof(buff) ); + return 0; +} + +int report ( const generator_t* const g, const amplitude_t* const a ) +{ + static double last_freq = -1.; + static double last_level = -1.; + double freq; + double level; + + freq = frequency (g); + level = 20. * log10 (amplitude (a) * ATH (freq) ) + 80.; + + if ( last_freq >= 0 ) + printf ( "%11.3f %8.2f\n", sqrt (freq*last_freq), 0.5 * (level+last_level) ); + printf ( "# %9.3f %8.2f\n", freq, level ); + + fflush ( stdout ); + + last_freq = freq; + last_level = level; + return 0; +} + +int report_close ( void ) +{ + printf ( "%%%%\n\n" ); + fflush ( stdout ); + close ( dup ( fileno(stdout) ) ); + setvbuf ( stdout, NULL, _IONBF, 0 ); + return 0; +} + + +/****************************************************************************************************** + * main stuff + ******************************************************************************************************/ + +typedef enum { + left = 0, + right = 1, + phase0 = 2, + both = 2, + phase90 = 3, + phase180 = 4, + phasemod = 5 +} earmode_t; + +static long double scalar ( const double* a, const double* b ) +{ + return a[ 0]*b[ 0] + a[ 1]*b[ 1] + a[ 2]*b[ 2] + a[ 3]*b[ 3] + +a[ 4]*b[ 4] + a[ 5]*b[ 5] + a[ 6]*b[ 6] + a[ 7]*b[ 7] + +a[ 8]*b[ 8] + a[ 9]*b[ 9] + a[10]*b[10] + a[11]*b[11] + +a[12]*b[12] + a[13]*b[13] + a[14]*b[14] + a[15]*b[15]; +} + +int experiment ( generator_t* const g, + amplitude_t* const a, + keyboard_t* const k, + soundcard_t* const s, + earmode_t earmode ) +{ + long i; + int j; + stereo_t samples [512]; + static double quant_errors [2] [16]; + long double val; + double ampl; + long ival; + + fprintf ( stderr, "\r+++ up +++" ); + for ( i = 0; i < g->duration; i += sizeof(samples)/sizeof(*samples) ) { + fprintf ( stderr, "%3lu%%\b\b\b\b", i*100lu/g->duration ); + + for (j = 0; j < sizeof(samples)/sizeof(*samples); j++ ) { + ampl = iterate_amplifier (a) * ATH (frequency (g)); + val = ampl * iterate_generator (g); + ival = (long) floor ( val + 0.5 + scalar (quant_errors[0], s->dither) ); + + if ( ival != (sample_t) ival ) { + report (g, a); + fprintf ( stderr, "\rOverrun \n\n" ); + return -1; + } + memmove ( & quant_errors [0] [1], & quant_errors [0] [0], + sizeof(quant_errors[0]) - sizeof(quant_errors[0][0]) ); + quant_errors [0] [0] = val - ival; + switch ( earmode ) { + case both: + samples [j] [0] = samples [j] [1] = ival; + break; + case left: + samples [j] [0] = ival; + samples [j] [1] = 0; + break; + case right: + samples [j] [0] = 0; + samples [j] [1] = ival; + break; + case phase180: + samples [j] [0] = ival == -32768 ? 32767 : -ival; + samples [j] [1] = +ival; + break; + case phase90: + samples [j] [0] = ival; + val = ampl * get_cosine (g); + ival = (long) floor ( val + 0.5 + scalar (quant_errors[1], s->dither) ); + if ( ival != (sample_t) ival ) { + report (g, a); + fprintf ( stderr, "\rOverrun \n\n" ); + return -1; + } + memmove ( & quant_errors [1] [1], & quant_errors [1] [0], + sizeof(quant_errors[1]) - sizeof(quant_errors[1][0]) ); + quant_errors [1] [0] = val - ival; + samples [j] [1] = ival; + break; + default: + assert (0); + return -1; + } + } + play_soundcard ( s, samples, sizeof(samples)/sizeof(*samples) ); + if ( amplitude (a) * ATH (frequency (g)) <= 3.16227766e-6 ) { + report (g, a); + fprintf ( stderr, "\rUnderrun \n\n" ); + return -1; + } + + switch ( getchar_keyboard (k) ) { + case '+': + fprintf ( stderr, "\r+++ up +++" ); + report (g, a); + change_direction ( a, up ); + break; + case '-': + fprintf ( stderr, "\r--- down ---" ); + report (g, a); + change_direction ( a, down ); + break; + case '\r': + case '\n': + fprintf ( stderr, "\r** change **" ); + report (g, a); + change_direction ( a, change ); + break; + case 'C'&0x1F: + case 'q': + case 'Q': + case 'x': + case 'X': + fprintf ( stderr, "\rBreak \n\n" ); + fflush ( stderr ); + return -1; + default: + fprintf ( stderr, "\a" ); + break; + case -1: + break; + } + } + + fprintf ( stderr, "\rReady \n\n" ); + return 0; +} + +static void usage ( void ) +{ + static const char help[] = + "'Absolute Threshold of Hearing' -- Version 0.07 (C) Frank Klemm 2000\n" + "\n" + "usage:\n" + " ath type minfreq maxfreq duration ampl_speed [start_level [earmode] > reportfile\n" + "\n" + " type: linear, logarithm, square, cubic, erb, recip\n" + " minfreq: initial frequency [Hz]\n" + " maxfreq: end frequency [Hz]\n" + " duration: duration of the experiment [s]\n" + " ampl_speed: amplitude slope speed [phon/s]\n" + " start_level: absolute level at startup [0...1]\n" + " earmode: left, right, both, phase90, phase180\n" + "\n" + "example:\n" + " ath erb 700 22000 600 3 0.0001 > result1\n" + " ath erb 1400 16 360 3 0.0001 > result2\n" + "\n" + "handling:\n" + " press '-' once when you start hearing a tone\n" + " press '+' once when you stop hearing a tone\n" + " press 'q' to early leave the program\n" + " on errors the pressed key is ignored\n"; + + fprintf ( stderr, "%s\n", help ); +} + +int main ( int argc, char** argv ) +{ + generator_t g; + amplitude_t a; + soundcard_t s; + keyboard_t k; + genmode_t genmode; + earmode_t earmode; + + if ( argc == 1 ) { + usage (); + system ( "./ath erb 700 22000 600 3 0.0001 > result1" ); + system ( "./ath erb 1400 16 360 3 0.0001 > result2" ); + system ( "xmgr result1 result2 &> /dev/null &" ); + return 0; + } + + if ( argc < 6 ) { + usage (); + return 1; + } + + if ( 0 == strncmp ( argv[1], "li" , 2) ) genmode = linear; + else if ( 0 == strncmp ( argv[1], "lo" , 2) ) genmode = logarithm; + else if ( 0 == strncmp ( argv[1], "sq" , 2) ) genmode = square; + else if ( 0 == strncmp ( argv[1], "cu" , 2) ) genmode = cubic; + else if ( 0 == strncmp ( argv[1], "er" , 2) ) genmode = erb; + else if ( 0 == strncmp ( argv[1], "re" , 2) ) genmode = recip; + else { + usage (); + return 1; + } + + if ( argc < 8 ) earmode = both; + else if ( 0 == strncmp ( argv[7], "le" , 2) ) earmode = left; + else if ( 0 == strncmp ( argv[7], "ri" , 2) ) earmode = right; + else if ( 0 == strncmp ( argv[7], "bo" , 2) ) earmode = both; + else if ( 0 == strncmp ( argv[7], "phase9" , 6) ) earmode = phase90; + else if ( 0 == strncmp ( argv[7], "phase1" , 6) ) earmode = phase180; + else { + usage (); + return 1; + } + + + open_soundcard ( &s, AUDIO_DEVICE, sizeof(stereo_t)/sizeof(sample_t), CHAR_BIT*sizeof(sample_t), 96000.0 ); + open_generator ( &g, &s, genmode, atof (argv[4]), atof (argv[2]), atof (argv[3]) ); + open_amplifier ( &a, &s, argc > 6 ? atof (argv[6]) : 0.0001, atof (argv[5]) ); + open_keyboard ( &k ); + + report_open ( ); + experiment ( &g, &a, &k, &s, earmode ); + report_close ( ); + + close_keyboard ( &k ); + close_amplifier( &a ); + close_generator( &g ); + close_soundcard( &s ); + + return 0; +} + +/* end of ath.c */ + + diff --git a/lame-3.97/misc/.svn/text-base/auenc.svn-base b/lame-3.97/misc/.svn/text-base/auenc.svn-base new file mode 100644 index 0000000..50d9c81 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/auenc.svn-base @@ -0,0 +1,39 @@ +#!/bin/sh +# +# auenc -- version 0.1 +# +# A wrapper for lame to encode multiple files. By default, a .wav +# extension is removed and replaced by .mp3 . +# +# (C) 1999 Gerhard Wesp <gwesp@cosy.sbg.ac.at> under the GPL. + +# set the variables below according to your taste +LAME=lame +LAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operation + +if [ $# -lt 1 ] ; then + exec 1>&2 + cat << _EOF_ +usage: $0 [options] file... +options: + -d --delete: delete original file after successful encoding +_EOF_ + exit 1 +fi + +unset DELETE +case "$1" in + -d | --delete ) DELETE=1 ; shift ;; +esac + +for f +do + $LAME $LAME_OPTS "$f" `basename "$f" .wav`.mp3 || { + exec 1>&2 + echo "encoding of $f failed, aborting..." + exit 1 + } + if [ -n "$DELETE" ] ; then + rm -f "$f" + fi +done diff --git a/lame-3.97/misc/.svn/text-base/depcomp.svn-base b/lame-3.97/misc/.svn/text-base/depcomp.svn-base new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/depcomp.svn-base @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/misc/.svn/text-base/lame4dos.bat.svn-base b/lame-3.97/misc/.svn/text-base/lame4dos.bat.svn-base new file mode 100644 index 0000000..ab78423 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/lame4dos.bat.svn-base @@ -0,0 +1,41 @@ +@echo off +rem --------------------------------------------- +rem PURPOSE: +rem - put this Batch-Command on your Desktop, +rem so you can drag and drop wave files on it +rem and LAME will encode them to mp3 format. +rem - put this Batch-Command in a place mentioned +rem in your PATH environment, start the DOS-BOX +rem and change to a directory where your wave +rem files are located. the following line will +rem encode all your wave files to mp3 +rem "lame.bat *.wav" +rem --------------------------------------------- +rem C2000 Robert Hegemann +rem --------------------------------------------- +rem Changes to support long filenames using 4DOS +rem by Alexander Stumpf <dropdachalupa@gmx.net> +rem --------------------------------------------- +rem please set LAME and LAMEOPTS +rem LAME - where the executeable is +rem OPTS - options you like LAME to use + + set LAME=c:\progra~1\sound&~1\lame\lame.exe + set OPTS=-h --lowpass-width 2 --lowpass 20.5 -b 112 --abr 180 + +rem --------------------------------------------- + + set thecmd=%LAME% %OPTS% + for %%f in (%&) do (%thecmd% %@sfn[%%f]^(ren %@sfn[%%f].mp3 "%@lfn[%%f].mp_">NUL)) + ren *.mp3.mp_ *.new.mp3 >& NUL + ren *.wav.mp_ *.mp3 >& NUL + goto endmark +:errormark + echo. + echo. + echo ERROR processing %1 + echo. +:endmark +rem +rem finished +rem diff --git a/lame-3.97/misc/.svn/text-base/lameGUI.html.svn-base b/lame-3.97/misc/.svn/text-base/lameGUI.html.svn-base new file mode 100644 index 0000000..1119e86 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/lameGUI.html.svn-base @@ -0,0 +1,403 @@ +<html> + +<head> +<meta http-equiv="Content-Type" +content="text/html; charset=iso-8859-1"> +<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0"> +<title>Lame + + + + + + + +
    +

    LAME Frontend

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fixed Bitrate 
    bitrate (-b) high quality (-h)
     fast (no noise shaping)
      
    Variable Bitrate 
    variable + bitrate (-v)VBR quality (-V)
    maximum bitrate (-B) enforce min. bitrate (-F)
      
    General 
    mode (-m) disable all filters (-k)
    copyrighted (-c)non-original (-o)
      
    ID3-Tag 
    title (--tt) artist (--ta)
    album (--tl) year (--ty) track (--tn)
    comment (--tc) genre (--tg)
       
    +
    + + + + + + +
    [LAME HELP] [LAME Readme] [LAME History] [LAME + Homepage] 
    + + diff --git a/lame-3.97/misc/.svn/text-base/lameid3.pl.svn-base b/lame-3.97/misc/.svn/text-base/lameid3.pl.svn-base new file mode 100644 index 0000000..5352877 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/lameid3.pl.svn-base @@ -0,0 +1,55 @@ +# +# From: Per Bolmstedt +# +# AC> If someone has scripts that read input ID3 tags and convert +# AC> them to args for lame (which then encodes the tags into the +# AC> output files), let me know, too! +# +# This is easy peasy using Perl. Especially using Chris Nandor's excellent +# MP3::Info package (available on CPAN). Here's a program I just wrote that +# I think does what you want. Invoke it with " [options]" +# (where the options can include an output filename), like for example: +# +# lameid3.pl HQ.mp3 LQ.mp3 -fv +# +# (Note how the syntax differs from that of Lame's.) The program will +# extract ID3 tags from the input file and invoke Lame with arguments for +# including them. (This program has not undergone any real testing..) + +use MP3::Info; +use strict; + +my %flds = ( + TITLE => 'tt', + ARTIST => 'ta', + ALBUM => 'tl', + YEAR => 'ty', + COMMENT => 'tc', + GENRE => 'tg', + TRACKNUM => 'tn' + ); + +my $f = shift @ARGV; +my $s = "lame ${f} " . &makeid3args( $f ) . join ' ', @ARGV; +print STDERR "[${s}]\n"; +system( $s ); + +sub makeid3args( $ ) +{ + my $s; + if ( my $tag = get_mp3tag( @_->[ 0 ] ) ) + { + for ( keys %flds ) + { + if ( $tag->{ $_ } ) + { + $s .= sprintf( + "--%s \"%s\" ", + %flds->{ $_ }, + $tag->{ $_ } ); + } + } + } + return $s || ""; +} + diff --git a/lame-3.97/misc/.svn/text-base/mlame.svn-base b/lame-3.97/misc/.svn/text-base/mlame.svn-base new file mode 100644 index 0000000..23beab5 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/mlame.svn-base @@ -0,0 +1,195 @@ +#!/bin/sh + +############################################################################ +# +# Run the LAME encoder on multiple files, with option to delete .wav files +# after encoding. "mlame -?" will give instructions. +# +# Robert Hegemann +# modified on request: Frank Klemm +# +############################################################################ + +# encoder path to use +mp3coder="lame" +mp3analyzer="mlame_corr" + +# default options to use +options_low="-h -d -mj -b 128" +options_high="-h -d -mj -V 1 -b 112 -B 320" +options=$options_high + +# remove source? +removesource=false + +# force overwrite of destination +testoverwrite=true + +# waiting after error report n seconds +errordelay=1 + +helptext="\n\ +This script runs the LAME mp3 encoder on multiple files: \n\n\ + $0 [options] ... \n\ +\n\ + options:\n\ + -? this help text\n\ + -r remove files after encoding\n\ + -f force overwrite of destination if exists\n\ + -l low quality settings\n\ + -h high quality settings\n\ + -o \"\" overrides script default options +\n\ + example:\n\ + $0 -r -f -o \"-v -V 0 -b 112\" a*.wav z*.aif g*.mp?\n\ +\n\ +" + +# process command-line options +# this could be extended to fake the +# commandline interface of the mp3encoder + +while getopts ":o:r:h:l:f" optn; do + case $optn in + o ) options=$OPTARG # replace default options + echo New lame options are \'$options\' + ;; + r ) removesource=true + echo Removing source files after successfully converting + ;; + f ) testoverwrite=false + echo Force overwriting existing destination files + ;; + h ) options=$options_high + ;; + l ) options=$options_low + ;; + \? ) printf "$helptext" + sleep $errordelay + exit 1 + ;; + esac +done +shift $(($OPTIND - 1)) + +# no files remaining? + +if [ "$1" = "" ]; then + printf "$helptext" + sleep $errordelay + exit 1 +fi + +# process input-files + +for src in "$@"; do + + case $src in + *[.][wW][aA][vV] ) + dst=${src%[.][wW][aA][vV]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options `$mp3analyzer "$src"` "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][aA][iI][fF] ) + dst=${src%[.][aA][iI][fF]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][aA][iI][fF][fF] ) + dst=${src%[.][aA][iI][fF][fF]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][mM][pP][gG12] ) + dst=${src%[.][mM][pP][gG12]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][mM][pP]3 ) + dst=${src%[.][mM][pP]3}-new-converted-file.${src##*.} + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + mv -f "$dst" "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + * ) # the rest + echo warning: File extention \'.${src##*.}\' not supported + sleep $errordelay + ;; + + esac + +done diff --git a/lame-3.97/misc/.svn/text-base/mlame_corr.c.svn-base b/lame-3.97/misc/.svn/text-base/mlame_corr.c.svn-base new file mode 100644 index 0000000..4305b63 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/mlame_corr.c.svn-base @@ -0,0 +1,220 @@ +/* + Bug: + - runs only on little endian machines for WAV files + - Not all WAV files are recognized + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef signed short stereo [2]; +typedef signed short mono; +typedef struct { + unsigned long long n; + long double x; + long double x2; + long double y; + long double y2; + long double xy; +} korr_t; + +void analyze_stereo ( const stereo* p, size_t len, korr_t* k ) +{ + long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; + double t1; + double t2; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p)[0]); _x2 += t1 * t1; + _y += (t2 = (*p)[1]); _y2 += t2 * t2; + _xy += t1 * t2; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _y ; + k -> y2 += _y2; + k -> xy += _xy; +} + +void analyze_dstereo ( const stereo* p, size_t len, korr_t* k ) +{ + static double l0 = 0; + static double l1 = 0; + long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; + double t1; + double t2; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p)[0] - l0); _x2 += t1 * t1; + _y += (t2 = (*p)[1] - l1); _y2 += t2 * t2; + _xy += t1 * t2; + l0 = (*p)[0]; + l1 = (*p)[1]; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _y ; + k -> y2 += _y2; + k -> xy += _xy; +} + + +void analyze_mono ( const mono* p, size_t len, korr_t* k ) +{ + long double _x = 0, _x2 = 0; + double t1; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p)); _x2 += t1 * t1; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _x ; + k -> y2 += _x2; + k -> xy += _x2; +} + +void analyze_dmono ( const mono* p, size_t len, korr_t* k ) +{ + static double l0 = 0; + long double _x = 0, _x2 = 0; + double t1; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p) - l0); _x2 += t1 * t1; + l0 = *p; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _x ; + k -> y2 += _x2; + k -> xy += _x2; +} + +int sgn ( long double x ) +{ + if ( x > 0 ) return +1; + if ( x < 0 ) return -1; + return 0; +} + +int report ( const korr_t* k ) +{ + long double scale = sqrt ( 1.e5 / (1<<29) ); // Sine Full Scale is +10 dB, 7327 = 100% + long double r; + long double rd; + long double sx; + long double sy; + long double x; + long double y; + long double b; + + r = (k->x2*k->n - k->x*k->x) * (k->y2*k->n - k->y*k->y); + r = r > 0.l ? (k->xy*k->n - k->x*k->y) / sqrt (r) : 1.l; + sx = k->n > 1 ? sqrt ( (k->x2 - k->x*k->x/k->n) / (k->n - 1) ) : 0.l; + sy = k->n > 1 ? sqrt ( (k->y2 - k->y*k->y/k->n) / (k->n - 1) ) : 0.l; + x = k->n > 0 ? k->x/k->n : 0.l; + y = k->n > 0 ? k->y/k->n : 0.l; + + b = atan2 ( sy, sx * sgn (r) ) * ( 8 / M_PI); + +// 6 5 4 3 2 +// _______________________________ +// |\ | /| +// 7 | \ | / | 1 +// | \ | / | +// | \ | / | +// | \ | / | +// 8 |--------------+--------------| 0 +// | / | \ | +// | / | \ | +// -7 | / | \ | -1 +// | / | \ | +// |/_____________|_____________\| +// +// -6 -5 -4 -3 -2 + + if ( r > 0.98 ) { + printf ("-mm"); // disguised mono file + return; + } + if ( fabs (b-2) > 0.666 ) { + printf ("-ms"); // low profit for joint stereo + return; + } + if ( r < 0.333 ) { + printf ("-ms"); // low profit for joint stereo + return; + } +} + +void readfile ( const char* name, int fd ) +{ + unsigned short header [22]; + stereo s [4096]; + mono m [8192]; + size_t samples; + korr_t k0; + korr_t k1; + + memset ( &k0, 0, sizeof(k0) ); + memset ( &k1, 0, sizeof(k1) ); + + read ( fd, header, sizeof(header) ); + + switch ( header[11] ) { + case 1: + printf ("-mm\n"); + break; + + case 2: + while ( ( samples = read (fd, s, sizeof(s)) ) > 0 ) { + analyze_stereo ( s, samples / sizeof (*s), &k0 ); + analyze_dstereo ( s, samples / sizeof (*s), &k1 ); + } + report (&k0); + report (&k1); + break; + + default: + fprintf ( stderr, "%u Channels not supported: %s\n", header[11], name ); + break; + } +} + +int main ( int argc, char** argv ) +{ + char* name; + int fd; + + if (argc < 2) + readfile ( "", 0 ); + else + while ( (name = *++argv) != NULL ) { + if ( (fd = open ( name, O_RDONLY )) >= 0 ) { + readfile ( name, fd ); + close ( fd ); + } else { + fprintf ( stderr, "Can't open: %s\n", name ); + } + } + + return 0; +} diff --git a/lame-3.97/misc/.svn/text-base/mugeco.sh.svn-base b/lame-3.97/misc/.svn/text-base/mugeco.sh.svn-base new file mode 100644 index 0000000..6be2774 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/mugeco.sh.svn-base @@ -0,0 +1,137 @@ +#!/bin/sh +progname=mugeco version=0.1 +programr='Alexander Leidinger' +progdate='7 Dec 2000' +progdesc='MUltiGEnerationCOding' +# NEEDS: getopt, lame +# Please have a look at the DEFAULTS section. + +# $Id: mugeco.sh,v 1.6 2000/12/08 13:47:56 aleidinger Exp $ + +usage() { +cat << EOF +** $progname v$version, $progdate ** +by $programr +$progdesc +usage: $progname [ ] -g + -v use builtin VBR options + -g number of generations + -h help + + used + - env vars: + * LAME : alternative encoder binary + * LAMEOPT: alternative encoder options + - VBR opts: $enc_vbr_opts + - CBR opts: $enc_cbr_opts +EOF +} + +# DEFAULTS + +# if you can, use getopt(1) (c)1997 by Frodo Looijaard +# it's in most modern unixen, or look at http://huizen.dds.nl/~frodol/ +: ${GETOPT=getopt} # helper program +# mktemp (optional) is also in most modern unixen (originally from OpenBSD) +: ${MKTEMP=mktemp} # helper program +: ${TMPDIR:=/tmp} # set default temp directory +: ${LAME:=lame} # path to LAME + +enc_cbr_opts="-b192 -h --lowpass 18 --lowpass-width 0" +enc_vbr_opts="--vbr-mtrh --nspsytune -v -h -d -Y -X3" +enc_opts=${LAMEOPT:-$enc_cbr_opts} +num= # default number of generations + +# DEFINE FUNCTIONS + +e() { echo "$progname: $*"; } +die() { # usage: die [ [ ] ] + trap '' 1 2 3 13 15 + exitcode=0 + [ $# -gt 0 ] && { exitcode=$1; shift; } + [ $# -gt 0 ] && e "Error: $*" >&2 + exit $exitcode +} + +# tfile() +# this function creates temporary files. 'tfile temp' will make a tempfile +# and put the path to it in the variable $temp (defaults to variable $tf) +trap 'for f in $ztfiles; do rm -f "$f"; done' 0 +trap 'trap "" 1 2 3 13 15; exit 10' 1 2 3 13 15 +unset ztfiles +tfile() { # usage: tfile + ztf=`$MKTEMP -q $TMPDIR/$progname.XXXXXX 2>/dev/null` # try mktemp + if [ $? -gt 0 -o -z "$ztf" ]; then # if mktemp fails, do it unsafely + ztf=$TMPDIR/$LOGNAME.$progname.$$ + [ -e "$ztf" ] && ztf= || { touch $ztf && chmod 600 $ztf; } + fi + [ "$ztf" -a -f "$ztf" ] || { echo Could not make tempfile; exit 8; } + ztfiles="$ztfiles $ztf" + eval ${1:-tf}='$ztf' +} + +# PARSE COMMAND LINE + +options="g:vh" # option string for getopt(1) +help=; [ "$1" = -h -o "$1" = -help -o "$1" = --help ] && help=yes +[ "$help" ] && { usage; die; } +$GETOPT -T >/dev/null 2>&1 +[ $? -eq 4 ] && GETOPT="$GETOPT -n $progname -s sh" #frodol's getopt? +eval set -- `$GETOPT "$options" "$@"` +[ $# -lt 1 ] && { die 9 getopt failed; } +while [ $# -gt 0 ]; do + case "$1" in + -g) num=$2; shift ;; + -v) enc_opts=$enc_cbr_opts ;; + -h) help=y ;; + --) shift; break ;; + *) usage; die 9 "invalid command line syntax!" ;; + esac + shift +done +[ "$help" ] && { usage; die; } +[ $# -eq 0 ] && { usage; die 9 no arguments; } #change or remove if desired +# sanity checking +[ "$num" ] && echo "$num"|grep -q '^[0-9]*$' && [ $num -ge 1 ] \ + || die 1 please use the -g flag with a valid number + +# MAIN PROGRAM + +# what version of lame are we using? +lame_vers=`$LAME 2>&1 | awk 'NR==1{print $3}'` + +# check filename +[ -f "$1" ] || die 2 "'$1' isn't a file" +echo "$1"|grep -qi '\.wav$' || die 2 "'$1' isn't a .wav" + +# make tempfiles +base=`echo "$1"|sed 's/\.[^.]*$//'` +dest=${base}_generation_$num.wav +[ -e "$dest" ] && die 2 "'$dest' already exists" +touch "$dest" || die 2 "couldn't create '$dest'" +TMPDIR=. tfile tmpwav +TMPDIR=. tfile tmpmp3 +cp -f "$1" "$tmpwav" + +# do the loop +start=`date` +i=1 +while [ $i -le $num ]; do + e "Working on file '$1', generation number $i..." + + $LAME $enc_opts --tc "lame $lame_vers; Generation: $i" \ + "$tmpwav" "$tmpmp3" || die 3 encoding failed + $LAME --decode --mp3input "$tmpmp3" "$tmpwav" || die 3 decoding failed + + i=`expr $i + 1` +done +end=`date` + +# save the result +ln -f "$tmpwav" "$dest" + +echo +e "Start: $start" +e "Stop : $end" + +die diff --git a/lame-3.97/misc/.svn/text-base/scalartest.c.svn-base b/lame-3.97/misc/.svn/text-base/scalartest.c.svn-base new file mode 100644 index 0000000..01680d0 --- /dev/null +++ b/lame-3.97/misc/.svn/text-base/scalartest.c.svn-base @@ -0,0 +1,166 @@ +#include +#include +#include +#include "resample.h" + +#define CLK 300.e6 +#define LOOPS 20000 + + +typedef double ( *ddf ) ( double ); + + +float a1 [256]; +float a2 [256]; + +void init ( void ) +{ + int i; + + for ( i = 0; i < sizeof(a1)/sizeof(*a1); i++ ) { + a1 [i] = sin(i)+0.2*sin(1.8*i)+log(2+i); + a2 [i] = cos(0.1*i); + } +} + +void test ( int no, scalar_t f ) +{ + unsigned long long t1; + unsigned long long t2; + unsigned long long t3; + unsigned long long t4; + int l; + double last = 0; + double curr = 0; + + printf ( "[%3u] %22.14f\t\t", no, (double)f (a1,a2) ); + fflush ( stdout ); + + do { + rdtscll (t1); + l = LOOPS; + do + ; + while (--l); + rdtscll (t2); + rdtscll (t3); + l = LOOPS; + do + f(a1,a2), f(a1,a2), f(a1,a2), f(a1,a2); + while (--l); + rdtscll (t4); + last = curr; + curr = (t4-t3-t2+t1) / CLK / LOOPS / 4 * 1.e9; + } while ( fabs(curr-last) > 1.e-4 * (curr+last) ); + printf ("%8.2f ns\n", (curr+last) / 2 ); +} + +void testn ( scalarn_t f ) +{ + unsigned long long t1; + unsigned long long t2; + unsigned long long t3; + unsigned long long t4; + int l; + int i; + double last = 0; + double curr = 0; + + for ( i = 1; i <= 64; i += i<6 ? 1 : i<8 ? 2 : i ) { + printf ( "[%3u] %22.14f\t\t", 4*i, (double)f (a1,a2,i) ); + fflush ( stdout ); + + do { + rdtscll (t1); + l = LOOPS; + do + ; + while (--l); + rdtscll (t2); + rdtscll (t3); + l = LOOPS; + do + f(a1,a2,i), f(a1,a2,i), f(a1,a2,i), f(a1,a2,i); + while (--l); + rdtscll (t4); + last = curr; + curr = (t4-t3-t2+t1) / CLK / LOOPS / 4 * 1.e9; + } while ( fabs(curr-last) > 1.e-4 * (curr+last) ); + printf ("%8.2f ns\n", (curr+last) / 2 ); + } +} + +void test2 ( const char* name, ddf f ) +{ + int i; + double x; + + printf ( "\n%%%% %s\n\n", name ); + + for ( i = -1000; i <= 1000; i++ ) { + x = 1.e-3 * i; + printf ( "%5d\t%12.8f\t%12.8f\t%12.8f\n", i, f(x), (f(x+5.e-5) - f(x-5.e-5))*1.e+4, (f(x+1.e-4) + f(x-1.e-4) - 2*f(x))*5.e+7 ); + } + printf ( "%%%%\n" ); + fflush ( stdout ); +} + + +int main ( int argc, char** argv ) +{ + +#if 0 + + test2 ( "Hann", hanning ); + test2 ( "Hamm", hamming ); + test2 ( "BM", blackman ); + test2 ( "BM1",blackman1 ); + test2 ( "BM2",blackman2 ); + test2 ( "BMH N",blackmanharris_nuttall ); + test2 ( "MNH Min",blackmanharris_min4 ); + +#else + + init (); + + test ( 4, scalar04_float32 ); + test ( 4, scalar04_float32_i387 ); + test ( 4, scalar04_float32_3DNow ); + test ( 4, scalar04_float32_SIMD ); + + test ( 8, scalar08_float32 ); + test ( 8, scalar08_float32_i387 ); + test ( 8, scalar08_float32_3DNow ); + test ( 8, scalar08_float32_SIMD ); + + test ( 12, scalar12_float32 ); + test ( 12, scalar12_float32_i387 ); + test ( 12, scalar12_float32_3DNow ); + test ( 12, scalar12_float32_SIMD ); + + test ( 16, scalar16_float32 ); + test ( 16, scalar16_float32_i387 ); + test ( 16, scalar16_float32_3DNow ); + test ( 16, scalar16_float32_SIMD ); + + test ( 20, scalar20_float32 ); + test ( 20, scalar20_float32_i387 ); + test ( 20, scalar20_float32_3DNow ); + test ( 20, scalar20_float32_SIMD ); + + test ( 24, scalar24_float32 ); + test ( 24, scalar24_float32_i387 ); + test ( 24, scalar24_float32_3DNow ); + test ( 24, scalar24_float32_SIMD ); + + testn( scalar4n_float32 ); + testn( scalar4n_float32_i387 ); + testn( scalar4n_float32_3DNow ); + testn( scalar4n_float32_SIMD ); + +#endif + + return 0; +} + +/* end of scalartest.c */ diff --git a/lame-3.97/misc/Lame.vbs b/lame-3.97/misc/Lame.vbs new file mode 100644 index 0000000..4e42002 --- /dev/null +++ b/lame-3.97/misc/Lame.vbs @@ -0,0 +1,158 @@ +' lame.vbs WindowsScript wrapper v0.5, 06/15/2001 +' $id$ +' +' *Purpose* +' Use this WindowsScript to encode WAVs using drag&drop: +' 0. make sure you have windows script host v5.1 on your system +' (enter 'cscript' in a DOS-Box and compare version number) +' 1. adjust the path settings below to fit your needs +' 2a. put this file somewhere on the desktop +' 3a. drag one or more wav-files on the icon and watch them being lamed. +' +' 2b. start->execute, enter "sendto", drag the script or a link to it in +' sendto window (adjust names and icon as you like) +' 3b. select wave-file(s) and send it via the send-to menu to LAME! +' +' You may wish to create copies of this file with different options set. +' +' If you would like a GUI: try to enable the HTML UI (see below) +' +' Ralf Kempkens, ralf.kempkens@epost.de +' +' +' *History* +' V0.5 * lame.vbs will automatically decode if the file has a .mp3 extension +' * now explicitly refuses to accept folders +' V0.4 * creates single .mp3 extensions, now ID3 options in HTML interface +' V0.3 * fixed bug that prevented lame.exe to be located in a path that +' contained a space +' * experimental HTML UI support (disabled by default) +' V0.2 added multiple file support +' V0.1 initial release + +' *** change path to your needs *** + path = "D:\Audio\Lame\Lame386\" '!!! must end with a backslash !!! + lame = "lame.exe" + +' *** change default options to your needs *** + opts = "--preset hifi" + +' *** HTML GUI (experimental) *** + useGUI = False +' it set to True, opens file lameGUI.html residing in the same path as lame.exe +' to choose options. Please look at the example HTML-file for further information. + +' no changes needed below this line +' ########################################################################## +Dim wsh, args, infile, fs +title="LAME Script" + +' get input files +Set wsh = WScript.CreateObject("WScript.Shell") +Set args = WScript.Arguments +If args.Count = 0 Then + MsgBox "LAME mp3 encoder/decoder frontend script." & vbCR & _ + "Please use drag & drop to specify input files.", vbInformation, title + WScript.Quit +End If + +' check path +Set fso = CreateObject("Scripting.FileSystemObject") +If Not fso.FileExists(path & lame) Then + MsgBox "Could not find LAME!" & vbCR & "(looked for '" & path & lame & "')", vbCritical, title + WScript.Quit +End If + +' start GUI +if useGUI Then + set ie=WScript.CreateObject("InternetExplorer.Application", "ie_") + ie.navigate(path & "lameGUI.html") + do + WScript.Sleep 100 + loop until ie.ReadyState=4 'wait for GUI + + ie.Width=640 + ie.Height=600 + ie.Toolbar=false + ie.Statusbar=false + ie.visible=true + + 'link to GUI + set document=ie.document + document.forms.lameform.okbutton.onClick=GetRef("okbutton") + + 'wait for user pressing ok... + do + WScript.Sleep 300 + loop until process +end if + +'process files +For i = 0 To args.Count-1 + infile = args(i) + ' check input file + If fso.FolderExists(infile) Then + MsgBox "'" & infile & "' is a folder!" & vbCR & _ + title & " only handles proper files.", vbInformation, title + Else + If Not fso.FileExists(infile) Then + MsgBox "Error opening input-file" & vbCR & "'" & infile & "'", vbCritical , title + Else + ' run lame + If(LCase(getExtension(infile))="mp3") Then 'decode + ret = wsh.Run(Chr(34) & path & lame & CHR(34) & " --decode " & _ + Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _ + getBasename(infile) & ".wav" & Chr(34), 1, True) + Else ' encode + ret = wsh.Run(Chr(34) & path & lame & CHR(34) & Chr(32) & opts & Chr(32) & _ + Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _ + getBasename(infile) & ".mp3" & Chr(34), 1, True) + End If + ' diagnostics + Select Case ret + Case (0) 'okeydokey + Case (-1) + MsgBox "LAME aborted by user!", vbExclamation, title + Case (1) + MsgBox "Error returned by LAME!" & vbCR & "(Check LAME options and input file formats.)" & vbCR & "Used Options: " & opts, vbCritical, title + Case Else + MsgBox "Received unknown LAME return-code: " & ret, vbCritical, title + End Select + End If + End If +Next + +WScript.Quit +' ******************************************************************* +' utility functions + +Function getBasename(filespec) + Dim fso + Set fso = CreateObject("Scripting.FileSystemObject") + Set f = fso.GetFile(filespec) + + getBasename = f.ParentFolder & "\" & fso.GetBaseName(filespec) +End Function + +Function getExtension(filespec) + Dim fso + Set fso = CreateObject("Scripting.FileSystemObject") + Set f = fso.GetFile(filespec) + + getExtension = fso.GetExtensionName(filespec) +End Function + +' ******************************************************************* +' manage link to IE HTML-interface + +sub okbutton + 'process inputs + opts=document.all.lameoptions.Value + ie.Quit + MsgBox "LAME options:" & vbCR & opts, vbInformation, title +end sub + +sub ie_onQuit + process=True +end sub +'eof diff --git a/lame-3.97/misc/Makefile.am b/lame-3.97/misc/Makefile.am new file mode 100644 index 0000000..fc13a49 --- /dev/null +++ b/lame-3.97/misc/Makefile.am @@ -0,0 +1,27 @@ +## $Id: Makefile.am,v 1.10 2002/01/25 11:23:23 aleidinger Exp $ + +include $(top_srcdir)/Makefile.am.global + +EXTRA_PROGRAMS = abx ath scalartest + +CLEANFILES = $(EXTRA_PROGRAMS) + +EXTRA_SCRIPTS = \ + auenc \ + lameid3.pl \ + mugeco.sh \ + mlame + +EXTRA_DIST = \ + $(EXTRA_SCRIPTS) \ + Lame.vbs \ + lameGUI.html \ + lame4dos.bat \ + mlame_corr.c + +abx_SOURCES = abx.c + +ath_SOURCES = ath.c + +scalartest_SOURCES = scalartest.c + diff --git a/lame-3.97/misc/Makefile.in b/lame-3.97/misc/Makefile.in new file mode 100644 index 0000000..6a518fb --- /dev/null +++ b/lame-3.97/misc/Makefile.in @@ -0,0 +1,493 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/Makefile.am.global depcomp +EXTRA_PROGRAMS = abx$(EXEEXT) ath$(EXEEXT) scalartest$(EXEEXT) +subdir = misc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am_abx_OBJECTS = abx$U.$(OBJEXT) +abx_OBJECTS = $(am_abx_OBJECTS) +abx_LDADD = $(LDADD) +abx_DEPENDENCIES = +am_ath_OBJECTS = ath$U.$(OBJEXT) +ath_OBJECTS = $(am_ath_OBJECTS) +ath_LDADD = $(LDADD) +ath_DEPENDENCIES = +am_scalartest_OBJECTS = scalartest$U.$(OBJEXT) +scalartest_OBJECTS = $(am_scalartest_OBJECTS) +scalartest_LDADD = $(LDADD) +scalartest_DEPENDENCIES = +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(abx_SOURCES) $(ath_SOURCES) $(scalartest_SOURCES) +DIST_SOURCES = $(abx_SOURCES) $(ath_SOURCES) $(scalartest_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +CLEANFILES = $(EXTRA_PROGRAMS) +EXTRA_SCRIPTS = \ + auenc \ + lameid3.pl \ + mugeco.sh \ + mlame + +EXTRA_DIST = \ + $(EXTRA_SCRIPTS) \ + Lame.vbs \ + lameGUI.html \ + lame4dos.bat \ + mlame_corr.c + +abx_SOURCES = abx.c +ath_SOURCES = ath.c +scalartest_SOURCES = scalartest.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign misc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign misc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +abx$(EXEEXT): $(abx_OBJECTS) $(abx_DEPENDENCIES) + @rm -f abx$(EXEEXT) + $(LINK) $(abx_LDFLAGS) $(abx_OBJECTS) $(abx_LDADD) $(LIBS) +ath$(EXEEXT): $(ath_OBJECTS) $(ath_DEPENDENCIES) + @rm -f ath$(EXEEXT) + $(LINK) $(ath_LDFLAGS) $(ath_OBJECTS) $(ath_LDADD) $(LIBS) +scalartest$(EXEEXT): $(scalartest_OBJECTS) $(scalartest_DEPENDENCIES) + @rm -f scalartest$(EXEEXT) + $(LINK) $(scalartest_LDFLAGS) $(scalartest_OBJECTS) $(scalartest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/abx$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ath$U.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scalartest$U.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +abx_.c: abx.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/abx.c; then echo $(srcdir)/abx.c; else echo abx.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +ath_.c: ath.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ath.c; then echo $(srcdir)/ath.c; else echo ath.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +scalartest_.c: scalartest.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/scalartest.c; then echo $(srcdir)/scalartest.c; else echo scalartest.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +abx_.$(OBJEXT) abx_.lo ath_.$(OBJEXT) ath_.lo scalartest_.$(OBJEXT) \ +scalartest_.lo : $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-kr mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am + + +# end global section +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/misc/abx.c b/lame-3.97/misc/abx.c new file mode 100644 index 0000000..b56fda4 --- /dev/null +++ b/lame-3.97/misc/abx.c @@ -0,0 +1,1302 @@ +/* + * Usage: abx original_file test_file + * + * Ask you as long as the probability is below the given percentage that + * you recognize differences + * + * Example: abx music.wav music.mp3 + * abx music.wav music.mp3 --help + * + * Note: several 'decoding' utilites must be on the 'right' place + * + * Bugs: + * fix path of decoding utilities + * only 16 bit support + * only support of the same sample frequency + * no exact WAV file header analysis + * no mouse or joystick support + * don't uses functionality of ath.c + * only 2 files are comparable + * worse user interface + * quick & dirty hack + * wastes memory + * compile time warnings + * buffer overruns possible + * no dithering if recalcs are necessary + * correlation only done with one channel (2 channels, sum, what is better?) + * lowpass+highpass filtering (300 Hz+2*5 kHz) before delay+amplitude corr + * cross fade at start/stop + * non portable keyboard + * fade out on quit, fade in on start + * level/delay ajustment should be switchable + * pause key missing + * problems with digital silence files (division by 0) + * Gr��e cross corr fenster 2^16...18 + * Stellensuche, ab 0*len oder 0.1*len oder 0.25*len, nach Effektiv oder Spitzenwert + * Absturz bei LPAC feeding, warum? + * Als 'B' beim Ratespiel sollte auch '0'...'9' verwendbar sein + * Oder mit einem Filter 300 Hz...3 kHz vorher filtern? + * Multiple encoded differenziertes Signal + * Amplitudenanpassung schaltbar machen? + * Direkt auf der Kommandozeile kodieren: + * abx "test.wav" "!lame -b128 test.wav -" + */ + +// If the program should increase it priority while playing define USE_NICE. +// Program must be installed SUID root. Decompressing phase is using NORMAL priority +#define USE_NICE + +// Not only increase priority but change to relatime scheduling. Program must be installed SUID root +#define USE_REALTIME + +// Path of the programs: mpg123, mppdec, faad, ac3dec, ogg123, lpac, shorten, MAC, flac +//#define PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING "/usr/local/bin/" +#define PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING "" + + +#if defined HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAX (1<<17) + +#if defined HAVE_SYS_SOUNDCARD_H +# include +#elif defined HAVE_LINUX_SOUNDCARD_H +# include +#else +# include /* stand alone compilable for my tests */ +#endif + +#if defined USE_NICE +# include +#endif +#if defined USE_REALTIME +# include +#endif + +#define BF ((freq)/25) +#define MAX_LEN (210 * 44100) +#define DMA_SAMPLES 512 /* My Linux driver uses a DMA buffer of 65536*16 bit, which is 32768 samples in 16 bit stereo mode */ + +void Set_Realtime ( void ) +{ +#if defined USE_REALTIME + struct sched_param sp; + int ret; + + memset ( &sp, 0, sizeof(sp) ); + seteuid ( 0 ); + sp.sched_priority = sched_get_priority_min ( SCHED_FIFO ); + ret = sched_setscheduler ( 0, SCHED_RR, &sp ); + seteuid ( getuid() ); +#endif + +#if defined USE_NICE + seteuid ( 0 ); + setpriority ( PRIO_PROCESS, getpid(), -20 ); + seteuid ( getuid() ); +#endif +} + +int verbose = 0; + +static struct termios stored_settings; + + +void reset ( void ) +{ + tcsetattr ( 0, TCSANOW, &stored_settings ); +} + + +void set ( void ) +{ + struct termios new_settings; + + tcgetattr ( 0, &stored_settings ); + new_settings = stored_settings; + + new_settings.c_lflag &= ~ECHO; + /* Disable canonical mode, and set buffer size to 1 byte */ + new_settings.c_lflag &= ~ICANON; + new_settings.c_cc[VTIME] = 0; + new_settings.c_cc[VMIN] = 1; + + tcsetattr(0,TCSANOW,&new_settings); + return; +} + + +int sel ( void ) +{ + struct timeval t; + fd_set fd [1]; + int ret; + unsigned char c; + + FD_SET (0, fd); + t.tv_sec = 0; + t.tv_usec = 0; + + ret = select ( 1, fd, NULL, NULL, &t ); + + switch ( ret ) { + case 0: + return -1; + case 1: + ret = read (0, &c, 1); + return ret == 1 ? c : -1; + default: + return -2; + } +} + +#define FFT_ERR_OK 0 // no error +#define FFT_ERR_LD 1 // len is not a power of 2 +#define FFT_ERR_MAX 2 // len too large + +typedef float f_t; +typedef f_t compl [2]; +compl root [MAX >> 1]; // Sinus-/Kosinustabelle +size_t shuffle [MAX >> 1] [2]; // Shuffle-Tabelle +size_t shuffle_len; + +// Bitinversion + +size_t swap ( size_t number, int bits ) +{ + size_t ret; + for ( ret = 0; bits--; number >>= 1 ) { + ret = ret + ret + (number & 1); + } + return ret; +} + +// Bestimmen des Logarithmus dualis + +int ld ( size_t number ) +{ + size_t i; + for ( i = 0; i < sizeof(size_t)*CHAR_BIT; i++ ) + if ( ((size_t)1 << i) == number ) + return i; + return -1; +} + +// Die eigentliche FFT + +int fft ( compl* fn, const size_t newlen ) +{ + static size_t len = 0; + static int bits = 0; + size_t i; + size_t j; + size_t k; + size_t p; + + /* Tabellen initialisieren */ + + if ( newlen != len ) { + len = newlen; + + if ( (bits=ld(len)) == -1 ) + return FFT_ERR_LD; + + for ( i = 0; i < len; i++ ) { + j = swap ( i, bits ); + if ( i < j ) { + shuffle [shuffle_len] [0] = i; + shuffle [shuffle_len] [1] = j; + shuffle_len++; + } + } + for ( i = 0; i < (len>>1); i++ ) { + double x = (double) swap ( i+i, bits ) * 2*M_PI/len; + root [i] [0] = cos (x); + root [i] [1] = sin (x); + } + } + + /* Eigentliche Transformation */ + + p = len >> 1; + do { + f_t* bp = (f_t*) root; + f_t* si = (f_t*) fn; + f_t* di = (f_t*) fn+p+p; + + do { + k = p; + do { + f_t mulr = bp[0]*di[0] - bp[1]*di[1]; + f_t muli = bp[1]*di[0] + bp[0]*di[1]; + + di[0] = si[0] - mulr; + di[1] = si[1] - muli; + si[0] += mulr; + si[1] += muli; + + si += 2, di += 2; + } while ( --k ); + si += p+p, di += p+p, bp += 2; + } while ( si < &fn[len][0] ); + } while (p >>= 1); + + /* Bitinversion */ + + for ( k = 0; k < shuffle_len; k++ ) { + f_t tmp; + i = shuffle [k] [0]; + j = shuffle [k] [1]; + tmp = fn [i][0]; fn [i][0] = fn [j][0]; fn [j][0] = tmp; + tmp = fn [i][1]; fn [i][1] = fn [j][1]; fn [j][1] = tmp; + } + + return FFT_ERR_OK; +} + +void printnumber ( long double x ) +{ + unsigned exp = 0; + + if ( x < 9.999995 ) fprintf ( stderr, "%7.5f", (double)x ); + else if ( x < 99.99995 ) fprintf ( stderr, "%7.4f", (double)x ); + else if ( x < 999.9995 ) fprintf ( stderr, "%7.3f", (double)x ); + else if ( x < 9999.995 ) fprintf ( stderr, "%7.2f", (double)x ); + else if ( x < 99999.95 ) fprintf ( stderr, "%7.1f", (double)x ); + else if ( x < 999999.5 ) fprintf ( stderr, "%6.0f.", (double)x ); + else if ( x < 9999999.5 ) fprintf ( stderr, "%7.0f", (double)x ); + else if ( x < 9.9995e9 ) { + while ( x >= 9.9995 ) exp++ , x /= 10; + fprintf ( stderr, "%5.3fe%01u", (double)x, exp ); + } else if ( x < 9.995e99 ) { + while ( x >= 9.5e6 ) exp+=6 , x /= 1.e6; + while ( x >= 9.995 ) exp++ , x /= 10; + fprintf ( stderr, "%4.2fe%02u", (double)x, exp ); + } else if ( x < 9.95e999L ) { + while ( x >= 9.5e18 ) exp+=18, x /= 1.e18; + while ( x >= 9.95 ) exp++ , x /= 10; + fprintf ( stderr, "%3.1fe%03u", (double)x, exp ); + } else { + while ( x >= 9.5e48 ) exp+=48, x /= 1.e48; + while ( x >= 9.5 ) exp++ , x /= 10; + fprintf ( stderr, "%1.0f.e%04u", (double)x, exp ); + } +} + +double logdual ( long double x ) +{ + unsigned exp = 0; + + while ( x >= 18446744073709551616. ) + x /= 18446744073709551616., exp += 64; + while ( x >= 256. ) + x /= 256., exp += 8; + while ( x >= 2. ) + x /= 2., exp += 1; + return exp + log (x)/log(2); +} + +int random_number ( void ) +{ + struct timeval t; + unsigned long val; + + gettimeofday ( &t, NULL ); + + val = t.tv_sec ^ t.tv_usec ^ rand(); + val ^= val >> 16; + val ^= val >> 8; + val ^= val >> 4; + val ^= val >> 2; + val ^= val >> 1; + + return val & 1; +} + +long double prob ( int last, int total ) +{ + long double sum = 0.; + long double tmp = 1.; + int i; + int j = total; + + if ( 2*last == total ) + return 1.; + if ( 2*last > total ) + last = total - last; + + for ( i = 0; i <= last; i++ ) { + sum += tmp; + tmp = tmp * (total-i) / (1+i); + while ( j > 0 && tmp > 1 ) + j--, sum *= 0.5, tmp *= 0.5; + } + while ( j > 0 ) + j--, sum *= 0.5; + + return 2.*sum; +} + + +void eval ( int right ) +{ + static int count = 0; + static int okay = 0; + long double val; + + count ++; + okay += right; + + val = 1.L / prob ( okay, count ); + + fprintf (stderr, " %s %5u/%-5u ", right ? "OK" : "- " , okay, count ); + printnumber (val); + if ( count > 1 ) + fprintf (stderr, " %4.2f bit", 0.01 * (int)(logdual(val) / (count-1) * 100.) ); + fprintf ( stderr, "\n" ); +} + + +typedef signed short sample_t; +typedef sample_t mono_t [1]; +typedef sample_t stereo_t [2]; +typedef struct { + unsigned long n; + long double x; + long double x2; + long double y; + long double y2; + long double xy; +} korr_t; + + +void analyze_stereo ( const stereo_t* p1, const stereo_t* p2, size_t len, korr_t* const k ) +{ + long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; + double t1; + double t2; + + k -> n += 2*len; + + for ( ; len--; p1++, p2++ ) { + _x += (t1 = (*p1)[0]); _x2 += t1 * t1; + _y += (t2 = (*p2)[0]); _y2 += t2 * t2; + _xy += t1 * t2; + _x += (t1 = (*p1)[1]); _x2 += t1 * t1; + _y += (t2 = (*p2)[1]); _y2 += t2 * t2; + _xy += t1 * t2; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _y ; + k -> y2 += _y2; + k -> xy += _xy; +} + +int sgn ( double x ) +{ + if ( x == 0 ) return 0; + if ( x < 0 ) return -1; + return +1; +} + +long double report ( const korr_t* const k ) +{ + long double r; + long double sx; + long double sy; + long double x; + long double y; + long double b; + + r = (k->x2*k->n - k->x*k->x) * (k->y2*k->n - k->y*k->y); + r = r > 0.l ? (k->xy*k->n - k->x*k->y) / sqrt (r) : 1.l; + sx = k->n > 1 ? sqrt ( (k->x2 - k->x*k->x/k->n) / (k->n - 1) ) : 0.l; + sy = k->n > 1 ? sqrt ( (k->y2 - k->y*k->y/k->n) / (k->n - 1) ) : 0.l; + x = k->n > 0 ? k->x/k->n : 0.l; + y = k->n > 0 ? k->y/k->n : 0.l; + + b = sx != 0 ? sy/sx * sgn(r) : 0.l; + if (verbose) + fprintf ( stderr, "r=%Lf sx=%Lf sy=%Lf x=%Lf y=%Lf b=%Lf\n", r, sx, sy, x, y, b ); + return b; +} + + +int feed ( int fd, const stereo_t* p, int len ) +{ + write ( fd, p, sizeof(stereo_t) * len ); + return len; +} + + +short round ( double f ) +{ + long x = (long) floor ( f + 0.5 ); + return x == (short)x ? (short)x : (short) ((x >> 31) ^ 0x7FFF); +} + + +int feed2 ( int fd, const stereo_t* p1, const stereo_t* p2, int len ) +{ + stereo_t tmp [30000]; /* An arbitrary size, hope that no overruns occure */ + int i; + + if (len > sizeof(tmp)/sizeof(*tmp)) + len = sizeof(tmp)/sizeof(*tmp); + for ( i = 0; i < len; i++ ) { + double f = cos ( M_PI/2*i/len ); + f *= f; + tmp [i] [0] = round ( p1 [i] [0] * f + p2 [i] [0] * (1. - f) ); + tmp [i] [1] = round ( p1 [i] [1] * f + p2 [i] [1] * (1. - f) ); + } + + write ( fd, tmp, sizeof(stereo_t) * len ); + return len; +} + + +int feedfac ( int fd, const stereo_t* p1, const stereo_t* p2, int len, double fac1, double fac2 ) +{ + stereo_t tmp [30000]; /* An arbitrary size, hope that no overruns occure */ + int i; + + if (len > sizeof(tmp)/sizeof(*tmp)) + len = sizeof(tmp)/sizeof(*tmp); + for ( i = 0; i < len; i++ ) { + tmp [i] [0] = round ( p1 [i] [0] * fac1 + p2 [i] [0] * fac2 ); + tmp [i] [1] = round ( p1 [i] [1] * fac1 + p2 [i] [1] * fac2 ); + } + + write ( fd, tmp, sizeof(stereo_t) * len ); + return len; +} + + +void setup ( int fdd, int samples, long freq ) +{ + int status, org, arg; + + // Nach vorn verschoben + if ( -1 == (status = ioctl (fdd, SOUND_PCM_SYNC, 0)) ) + perror ("SOUND_PCM_SYNC ioctl failed"); + + org = arg = 2; + if ( -1 == (status = ioctl (fdd, SOUND_PCM_WRITE_CHANNELS, &arg)) ) + perror ("SOUND_PCM_WRITE_CHANNELS ioctl failed"); + if (arg != org) + perror ("unable to set number of channels"); + fprintf (stderr, "%1u*", arg); + + org = arg = 16; + if ( -1 == (status = ioctl (fdd, SOUND_PCM_WRITE_BITS, &arg)) ) + perror ("SOUND_PCM_WRITE_BITS ioctl failed"); + if (arg != org) + perror ("unable to set sample size"); + fprintf (stderr, "%2u bit ", arg); + + org = arg = AFMT_S16_LE; + if ( -1 == ioctl (fdd, SNDCTL_DSP_SETFMT, &arg) ) + perror ("SNDCTL_DSP_SETFMT ioctl failed"); + if ((arg & org) == 0) + perror ("unable to set data format"); + + org = arg = freq; + if ( -1 == (status = ioctl (fdd, SOUND_PCM_WRITE_RATE, &arg)) ) + perror ("SOUND_PCM_WRITE_WRITE ioctl failed"); + fprintf (stderr, "%5u Hz*%.3f sec\n", arg, (double)samples/arg ); + + org = arg = DMA_SAMPLES; + if ( -1 == (status = ioctl (fdd, SNDCTL_DSP_SETFRAGMENT, &arg)) ) + perror ("SNDCTL_DSP_SETFRAGMENT ioctl failed"); +} + + +void Message ( const char* s, size_t index, long freq, size_t start, size_t stop ) +{ + unsigned long norm_index = 100lu * index / freq; + unsigned long norm_start = 100lu * start / freq; + unsigned long norm_stop = 100lu * stop / freq; + + fprintf ( stderr, "\rListening %s %2lu:%02lu.%02lu (%1lu:%02lu.%02lu...%1lu:%02lu.%02lu)%*.*s\rListening %s", + s, + norm_index / 6000, norm_index / 100 % 60, norm_index % 100, + norm_start / 6000, norm_start / 100 % 60, norm_start % 100, + norm_stop / 6000, norm_stop / 100 % 60, norm_stop % 100, + 36 - (int)strlen(s), 36 - (int)strlen(s), "", + s ); + + fflush ( stderr ); +} + + +size_t calc_true_index ( size_t index, size_t start, size_t stop ) +{ + if ( start >= stop ) + return start; + while ( index - start < DMA_SAMPLES ) + index += stop - start; + return index - DMA_SAMPLES; +} + + +void testing ( const stereo_t* A, const stereo_t* B, size_t len, long freq ) +{ + int c; + int fd = open ( "/dev/dsp", O_WRONLY ); + int rnd = random_number (); /* Auswahl von X */ + int state = 0; /* derzeitiger F�ttungsmodus */ + float fac1 = 0.5; + float fac2 = 0.5; + size_t start = 0; + size_t stop = len; + size_t index = start; /* derzeitiger Offset auf den Audiostr�men */ + char message [80] = "A "; + + setup ( fd, len, freq ); + + while ( 1 ) { + c = sel (); + if ( c == 27 ) + c = sel () + 0x100; + + switch ( c ) { + case 'A' : + case 'a' : + strcpy ( message, "A " ); + if ( state != 0 ) + state = 2; + break; + + case 0x100+'0' : + case '0' : + case 'B' : + case 'b' : + strcpy ( message, " B" ); + if ( state != 1 ) + state = 3; + break; + + case 'X' : + case 'x' : + strcpy ( message, " X " ); + if ( state != rnd ) + state = rnd + 2; + break; + + case 'm' : + state = 8; + break; + + case 'M' : + state = (state & 1) + 4; + break; + + case 'x'&0x1F: + state = (state & 1) + 6; + break; + + case ' ': + start = 0; + stop = len; + break; + + case 'o' : + start = calc_true_index ( index, start, stop); + break; + case 'p' : + stop = calc_true_index ( index, start, stop); + break; + case 'h' : + if ( start > freq/100 ) + start -= freq/100; + else + start = 0; + index = start; + continue; + case 'j' : + if ( start < stop-freq/100 ) + start += freq/100; + else + start = stop; + index = start; + continue; + case 'k' : + if ( stop > start+freq/100 ) + stop -= freq/100; + else + stop = start; + continue; + case 'l' : + if ( stop < len-freq/100 ) + stop += freq/100; + else + stop = len; + continue; + case '\n': + index = start; + continue; + + case 'D'+0x100: + strcpy ( message, "Difference (+40 dB)" ); + state = 9; + fac1 = -100.; + fac2 = +100.; + break; + + case 'd'+0x100: + strcpy ( message, "Difference (+30 dB)" ); + state = 9; + fac1 = -32.; + fac2 = +32.; + break; + + case 'D' & 0x1F : + strcpy ( message, "Difference (+20 dB)" ); + state = 9; + fac1 = -10.; + fac2 = +10.; + break; + + case 'D' : + strcpy ( message, "Difference (+10 dB)" ); + state = 9; + fac1 = -3.; + fac2 = +3.; + break; + + case 'd' : + strcpy ( message, "Difference ( 0 dB)" ); + state = 9; + fac1 = -1.; + fac2 = +1.; + break; + + case 0x100+'1' : + case 0x100+'2' : + case 0x100+'3' : + case 0x100+'4' : + case 0x100+'5' : + case 0x100+'6' : + case 0x100+'7' : + case 0x100+'8' : + case 0x100+'9' : + sprintf ( message, " B (Errors -%c dB)", (char)c ); + state = 9; + fac2 = pow (10., -0.05*(c-0x100-'0') ); + fac1 = 1. - fac2; + break; + + case '1' : + case '2' : + case '3' : + case '4' : + case '5' : + case '6' : + case '7' : + case '8' : + case '9' : + sprintf ( message, " B (Errors +%c dB)", c ); + state = 9; + fac2 = pow (10., 0.05*(c-'0') ); + fac1 = 1. - fac2; + break; + + case 'A' & 0x1F: + fprintf (stderr, " Vote for X:=A" ); + eval ( rnd == 0 ); + rnd = random_number (); + if ( state == 6 && state == 7 ) + state = 6 + rnd; + else if ( state != rnd ) + state = rnd + 2; + strcpy ( message," X " ); + break; + + case 'B' & 0x1F: + fprintf (stderr, " Vote for X:=B" ); + eval ( rnd == 1 ); + rnd = random_number (); + if ( state == 6 && state == 7 ) + state = 6 + rnd; + else if ( state != rnd ) + state = rnd + 2; + strcpy ( message," X " ); + break; + + case -1: + break; + + default: + fprintf (stderr, "\a" ); + break; + + case 'Q': + case 'q': + fprintf ( stderr, "\n%-79.79s\r", "Quit program" ); + close (fd); + fprintf ( stderr, "\n\n"); + return; + } + + switch (state) { + case 0: /* A */ + if ( index + BF >= stop ) + index += feed (fd, A+index, stop-index ); + else + index += feed (fd, A+index, BF ); + break; + + case 1: /* B */ + if ( index + BF >= stop ) + index += feed (fd, B+index, stop-index ); + else + index += feed (fd, B+index, BF ); + break; + + case 2: /* B => A */ + if ( index + BF >= stop ) + index += feed2 (fd, B+index, A+index, stop-index ); + else + index += feed2 (fd, B+index, A+index, BF ); + state = 0; + break; + + case 3: /* A => B */ + if ( index + BF >= stop ) + index += feed2 (fd, A+index, B+index, stop-index ); + else + index += feed2 (fd, A+index, B+index, BF ); + state = 1; + break; + + case 4: /* A */ + strcpy ( message, "A " ); + if ( index + BF >= stop ) + index += feed (fd, A+index, stop-index ), + state++; + else + index += feed (fd, A+index, BF ); + break; + + case 5: /* B */ + strcpy ( message, " B" ); + if ( index + BF >= stop ) + index += feed (fd, B+index, stop-index ), + state--; + else + index += feed (fd, B+index, BF ); + break; + + case 6: /* X */ + strcpy ( message, " X " ); + if ( index + BF >= stop ) + index += feed (fd, (rnd ? B : A)+index, stop-index ), + state++; + else + index += feed (fd, (rnd ? B : A)+index, BF ); + break; + + case 7: /* !X */ + strcpy ( message, "!X " ); + if ( index + BF >= stop ) + index += feed (fd, (rnd ? A : B)+index, stop-index ), + state--; + else + index += feed (fd, (rnd ? A : B)+index, BF ); + break; + + case 8: + if ( index + BF/2 >= stop ) + index += feed2 (fd, A+index, B+index, stop-index ); + else + index += feed2 (fd, A+index, B+index, BF/2 ); + Message ( " B", index, freq, start, stop ); + if ( index + BF >= stop ) + index += feed (fd, B+index, stop-index ); + else + index += feed (fd, B+index, BF ); + if ( index + BF/2 >= stop ) + index += feed2 (fd, B+index, A+index, stop-index ); + else + index += feed2 (fd, B+index, A+index, BF/2 ); + Message ( "A ", index, freq, start, stop ); + if ( index + BF >= stop ) + index += feed (fd, A+index, stop-index ); + else + index += feed (fd, A+index, BF ); + break; + + case 9: /* Liko */ + if ( index + BF >= stop ) + index += feedfac (fd, A+index, B+index, stop-index, fac1, fac2 ); + else + index += feedfac (fd, A+index, B+index, BF , fac1, fac2 ); + break; + + default: + assert (0); + } + + if (index >= stop) + index = start; + Message ( message, calc_true_index ( index, start, stop), freq, start, stop ); + } +} + + +int has_ext ( const char* name, const char* ext ) +{ + if ( strlen (name) < strlen (ext) ) + return 0; + name += strlen (name) - strlen (ext); + return strcasecmp (name, ext) ? 0 : 1; +} + + +typedef struct { + const char* const extention; + const char* const command; +} decoder_t; + + +#define REDIR " 2> /dev/null" +#define STDOUT "/dev/fd/1" +#define PATH PATH_OF_EXTERNAL_TOOLS_FOR_UNCOMPRESSING + +const decoder_t decoder [] = { + { ".mp1" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer I : www.iis.fhg.de, www.mpeg.org + { ".mp2" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer II : www.iis.fhg.de, www.uq.net.au/~zzmcheng, www.mpeg.org + { ".mp3" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org/mp3, www.mpeg.org + { ".mp3pro" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org/mp3, www.mpeg.org + { ".mpt" , PATH"mpg123 -w - %s" REDIR }, // MPEG Layer III : www.iis.fhg.de, www.mp3dev.org/mp3, www.mpeg.org + { ".mpp" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 + { ".mpc" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 + { ".mp+" , PATH"mppdec %s -" REDIR }, // MPEGplus : www.stud.uni-hannover.de/user/73884 + { ".aac" , PATH"faad -t.wav -w %s" REDIR }, // Advanced Audio Coding: psytel.hypermart.net, www.aac-tech.com, sourceforge.net/projects/faac, www.aac-audio.com, www.mpeg.org + { "aac.lqt" , PATH"faad -t.wav -w %s" REDIR }, // Advanced Audio Coding: psytel.hypermart.net, www.aac-tech.com, sourceforge.net/projects/faac, www.aac-audio.com, www.mpeg.org + { ".ac3" , PATH"ac3dec %s" REDIR }, // Dolby AC3 : www.att.com + { "ac3.lqt" , PATH"ac3dec %s" REDIR }, // Dolby AC3 : www.att.com + { ".ogg" , PATH"ogg123 -d wav -o file:"STDOUT" %s" REDIR }, // Ogg Vorbis : www.xiph.org/ogg/vorbis/index.html + { ".pac" , PATH"lpac -x %s "STDOUT REDIR }, // Lossless predictive Audio Compression: www-ft.ee.tu-berlin.de/~liebchen/lpac.html (liebchen@ft.ee.tu-berlin.de) + { ".shn" , PATH"shorten -x < %s" REDIR }, // Shorten : shnutils.freeshell.org, www.softsound.com/Shorten.html (shnutils@freeshell.org, shorten@softsound.com) + { ".wav.gz" , "gzip -d < %s | sox -twav - -twav -sw -" REDIR }, // gziped WAV + { ".wav.sz" , PATH"szip -d < %s | sox -twav - -twav -sw -"REDIR }, // sziped WAV + { ".wav.sz2", PATH"szip2 -d < %s | sox -twav - -twav -sw -"REDIR }, // sziped WAV + { ".raw" , "sox -r44100 -sw -c2 -traw %s -twav -sw -" REDIR }, // raw files are treated as CD like audio + { ".cdr" , "sox -r44100 -sw -c2 -traw %s -twav -sw -" REDIR }, // CD-DA files are treated as CD like audio, no preemphasis info available + { ".rm" , "echo %s '???'" REDIR }, // Real Audio : www.real.com + { ".epc" , "echo %s '???'" REDIR }, // ePAC : www.audioveda.com, www.lucent.com/ldr + { ".mov" , "echo %s '???'" REDIR }, // QDesign Music 2 : www.qdesign.com + { ".vqf" , "echo %s '???'" REDIR }, // TwinVQ : www.yamaha-xg.com/english/xg/SoundVQ, www.vqf.com, sound.splab.ecl.ntt.co.jp/twinvq-e + { ".wma" , "echo %s '???'" REDIR }, // Microsoft Media Audio: www.windowsmedia.com, www.microsoft.com/windows/windowsmedia + { ".flac" , PATH"flac -c -d %s" REDIR }, // Free Lossless Audio Coder: flac.sourceforge.net/ + { ".fla" , PATH"flac -c -d %s" REDIR }, // Free Lossless Audio Coder: flac.sourceforge.net/ + { ".ape" , "( "PATH"MAC %s _._.wav -d > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // Monkey's Audio Codec : www.monkeysaudio.com (email@monkeysaudio.com) + { ".rka" , "( "PATH"rkau %s _._.wav > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // RK Audio: + { ".rkau" , "( "PATH"rkau %s _._.wav > /dev/null; cat _._.wav; rm _._.wav )" REDIR }, // RK Audio: + { ".mod" , "xmp -b16 -c -f44100 --stereo -o- %s | sox -r44100 -sw -c2 -traw - -twav -sw -" + REDIR }, // Amiga's Music on Disk: + { "" , "sox %s -twav -sw -" REDIR }, // Rest, may be sox can handle it +}; + +#undef REDIR +#undef STDOUT +#undef PATH + + +int readwave ( stereo_t* buff, size_t maxlen, const char* name, size_t* len ) +{ + char* command = malloc (2*strlen(name) + 512); + char* name_q = malloc (2*strlen(name) + 128); + unsigned short header [22]; + FILE* fp; + size_t i; + size_t j; + + // The *nice* shell quoting + i = j = 0; + if ( name[i] == '-' ) + name_q[j++] = '.', + name_q[j++] = '/'; + + while (name[i]) { + if ( !isalnum (name[i]) && name[i]!='-' && name[i]!='_' && name[i]!='.' ) + name_q[j++] = '\\'; + name_q[j++] = name[i++]; + } + name_q[j] = '\0'; + + fprintf (stderr, "Reading %s", name ); + for ( i = 0; i < sizeof(decoder)/sizeof(*decoder); i++ ) + if ( has_ext (name, decoder[i].extention) ) { + sprintf ( command, decoder[i].command, name_q ); + break; + } + + free (name_q); + if ( (fp = popen (command, "r")) == NULL ) { + fprintf (stderr, "Can't exec:\n%s\n", command ); + exit (1); + } + free (command); + + fprintf (stderr, " ..." ); + fread ( header, sizeof(*header), sizeof(header)/sizeof(*header), fp ); + switch ( header[11] ) { + case 2: + *len = fread ( buff, sizeof(stereo_t), maxlen, fp ); + break; + case 1: + *len = fread ( buff, sizeof(sample_t), maxlen, fp ); + for ( i = *len; i-- > 0; ) + buff[i][0] = buff[i][1] = ((sample_t*)buff) [i]; + break; + case 0: + fprintf (stderr, "\b\b\b\b, Standard Open Source Bug detected, try murksaround ..." ); + *len = fread ( buff, sizeof(stereo_t), maxlen, fp ); + header[11] = 2; + header[12] = 65534; /* use that of the other channel */ + break; + default: + fprintf (stderr, "Only 1 or 2 channels are supported, not %u\n", header[11] ); + pclose (fp); + return -1; + } + pclose ( fp ); + fprintf (stderr, "\n" ); + return header[12] ? header[12] : 65534; +} + + +double cross_analyze ( const stereo_t* p1, const stereo_t *p2, size_t len ) +{ + float P1 [MAX] [2]; + float P2 [MAX] [2]; + int i; + int maxindex; + double sum1; + double sum2; + double max; + double y1; + double y2; + double y3; + double yo; + double xo; + double tmp; + double tmp1; + double tmp2; + int ret = 0; + int cnt = 5; + + // Calculating effective voltage + sum1 = sum2 = 0.; + for ( i = 0; i < len; i++ ) { + sum1 += (double)p1[i][0] * p1[i][0]; + sum2 += (double)p2[i][0] * p2[i][0]; + } + sum1 = sqrt ( sum1/len ); + sum2 = sqrt ( sum2/len ); + + // Searching beginning of signal (not stable for pathological signals) + for ( i = 0; i < len; i++ ) + if ( abs (p1[i][0]) >= sum1 && abs (p2[i][0]) >= sum2 ) + break; + p1 += i; + p2 += i; + len -= i; + + if ( len <= MAX ) + return 0; + + // Filling arrays for FFT + do { + sum1 = sum2 = 0.; + for ( i = 0; i < MAX; i++ ) { +#ifdef USEDIFF + tmp1 = p1 [i][0] - p1 [i+1][0]; + tmp2 = p2 [i+ret][0] - p2 [i+ret+1][0]; +#else + tmp1 = p1 [i][0]; + tmp2 = p2 [i+ret][0]; +#endif + sum1 += tmp1*tmp1; + sum2 += tmp2*tmp2; + P1 [i][0] = tmp1; + P2 [i][0] = tmp2; + P1 [i][1] = 0.; + P2 [i][1] = 0.; + } + + fft (P1, MAX); + fft (P2, MAX); + + for ( i = 0; i < MAX; i++ ) { + double a0 = P1 [i][0]; + double a1 = P1 [i][1]; + double b0 = P2 [(MAX-i)&(MAX-1)][0]; + double b1 = P2 [(MAX-i)&(MAX-1)][1]; + P1 [i][0] = a0*b0 - a1*b1; + P1 [i][1] = a0*b1 + a1*b0; + } + + fft (P1, MAX); + + max = P1 [maxindex = 0][0]; + for ( i = 1; i < MAX; i++ ) + if ( P1[i][0] > max ) + max = P1 [maxindex = i][0]; + + y2 = P1 [ maxindex ][0]; + y1 = P1 [(maxindex-1)&(MAX-1)][0] - y2; + y3 = P1 [(maxindex+1)&(MAX-1)][0] - y2; + + xo = 0.5 * (y1-y3) / (y1+y3); + yo = 0.5 * ( (y1+y3)*xo + (y3-y1) ) * xo; + + if (maxindex > MAX/2 ) + maxindex -= MAX; + + ret += maxindex; + tmp = 100./MAX/sqrt(sum1*sum2); + if (verbose) + printf ( "[%5d]%8.4f [%5d]%8.4f [%5d]%8.4f [%10.4f]%8.4f\n", + ret- 1, (y1+y2)*tmp, + ret , y2 *tmp, + ret+ 1, (y3+y2)*tmp, + ret+xo, (yo+y2)*tmp ); + + } while ( maxindex && cnt-- ); + + return ret + xo; +} + + +short to_short ( int x ) +{ + return x == (short)x ? (short)x : (short) ((x >> 31) ^ 0x7FFF); +} + + +void DC_cancel ( stereo_t* p, size_t len ) +{ + double sum1 = 0; + double sum2 = 0; + size_t i; + int diff1; + int diff2; + + for (i = 0; i < len; i++ ) { + sum1 += p[i][0]; + sum2 += p[i][1]; + } + if ( fabs(sum1) < len && fabs(sum2) < len ) + return; + + diff1 = round ( sum1 / len ); + diff2 = round ( sum2 / len ); + if (verbose) + fprintf (stderr, "Removing DC (left=%d, right=%d)\n", diff1, diff2 ); + + for (i = 0; i < len; i++ ) { + p[i][0] = to_short ( p[i][0] - diff1); + p[i][1] = to_short ( p[i][1] - diff2); + } +} + +void multiply ( char c, stereo_t* p, size_t len, double fact ) +{ + size_t i; + + if ( fact == 1. ) + return; + if (verbose) + fprintf (stderr, "Multiplying %c by %7.5f\n", c, fact ); + + for (i = 0; i < len; i++ ) { + p[i][0] = to_short ( p[i][0] * fact ); + p[i][1] = to_short ( p[i][1] * fact ); + } +} + + +int maximum ( stereo_t* p, size_t len ) +{ + int max = 0; + size_t i; + + for (i = 0; i < len; i++ ) { + if (abs(p[i][0]) > max) max = abs(p[i][0]); + if (abs(p[i][1]) > max) max = abs(p[i][1]); + } + return max; +} + + +void usage ( void ) +{ + fprintf ( stderr, + "usage: abx [-v] File_A File_B\n" + "\n" + "File_A and File_B loaded and played. File_A should be the better/reference\n" + "file, File_B the other. You can press the following keys:\n" + "\n" + " a/A: Listen to File A\n" + " b/B: Listen to File B\n" + " x/X: Listen to the randomly selected File X, which is A or B\n" + " Ctrl-A: You vote for X=A\n" + " Ctrl-B: You vote for X=B\n" + " m: Alternating playing A and B. Fast switching\n" + " M: Alternating playing A and B. Slow switching\n" + " d/D/Ctrl-D/Alt-d/Alt-D:\n" + " Listen to the difference A-B (+0 dB...+40 dB)\n" + " o/p: Chunk select\n" + " hjkl: Chunk fine adjust (hj: start, kl: stop)\n" + " Space: Chunk deselect\n" + " 0...9: Listen to B, but difference A-B is amplified by 0-9 dB\n" + " Q: Quit the program\n" + "\n" + ); +} + + +int main ( int argc, char** argv ) +{ + stereo_t* _A = calloc ( sizeof(stereo_t), MAX_LEN ); + stereo_t* _B = calloc ( sizeof(stereo_t), MAX_LEN ); + stereo_t* A = _A; + stereo_t* B = _B; + size_t len_A; + size_t len_B; + size_t len; + int max_A; + int max_B; + int max; + long freq1; + long freq2; + int shift; + double fshift; + double ampl; + int ampl_X; + korr_t k; + + if (argc > 1 && 0 == strcmp (argv[1], "-v") ) { + verbose = 1; + argc--; + argv++; + } + + switch ( argc ) { + case 0: + case 1: + case 2: + default: + usage (); + return 1; + case 3: + usage(); + break; + } + + freq1 = readwave ( A, MAX_LEN, argv[1], &len_A ); + DC_cancel ( A, len_A ); + freq2 = readwave ( B, MAX_LEN, argv[2], &len_B ); + DC_cancel ( B, len_B ); + + if ( freq1 == 65534 && freq2 != 65534 ) + freq1 = freq2; + else if ( freq2 == 65534 && freq1 != 65534 ) + freq2 = freq1; + else if ( freq1 == 65534 && freq2 == 65534 ) + freq1 = freq2 = 44100; + + if ( freq1 != freq2 ) { + fprintf ( stderr, "Different sample frequencies currently not supported\n"); + fprintf ( stderr, "A: %ld, B: %ld\n", freq1, freq2 ); + return 2; + } + + len = len_A < len_B ? len_A : len_B; + fshift = cross_analyze ( A, B, len ); + shift = floor ( fshift + 0.5 ); + + if ( verbose ) { + fprintf ( stderr, "Delay Ch1 is %.4f samples\n", fshift ); + fprintf ( stderr, "Delay Ch2 is %.4f samples\n", + cross_analyze ( (stereo_t*)(((sample_t*)A)+1), (stereo_t*)(((sample_t*)B)+1), len ) ); + } + + if (shift > 0) { + if (verbose) + fprintf ( stderr, "Delaying A by %d samples\n", +shift); + B += shift; + len_B -= shift; + } + if (shift < 0) { + if (verbose) + fprintf ( stderr, "Delaying B by %d samples\n", -shift); + A -= shift; + len_A += shift; + } + + len = len_A < len_B ? len_A : len_B; + memset ( &k, 0, sizeof(k) ); + analyze_stereo ( A, B, len, &k ); + ampl = report (&k); + max_A = maximum ( A, len ); + max_B = maximum ( B, len ); + + if ( ampl <= 0.98855 ) { /* < -0.05 dB */ + max = max_A*ampl < max_B ? max_B : max_A*ampl; + ampl_X = (int)(29203 / max); + if ( ampl_X < 2 ) ampl_X = 1; + multiply ( 'A', A, len, ampl*ampl_X ); + multiply ( 'B', B, len, ampl_X ); + } else if ( ampl >= 1.01158 ) { /* > +0.05 dB */ + max = max_A < max_B/ampl ? max_B/ampl : max_A; + ampl_X = (int)(29203 / max); + if ( ampl_X < 2 ) ampl_X = 1; + multiply ( 'A', A, len, ampl_X ); + multiply ( 'B', B, len, 1./ampl*ampl_X ); + } else { + max = max_A < max_B ? max_B : max_A; + ampl_X = (int)(29203 / max); + if ( ampl_X < 2 ) ampl_X = 1; + multiply ( 'A', A, len, ampl_X ); + multiply ( 'B', B, len, ampl_X ); + } + + set (); + Set_Realtime (); + testing ( A, B, len, freq1 ); + reset (); + + free (_A); + free (_B); + return 0; +} + +/* end of abx.c */ + diff --git a/lame-3.97/misc/ath.c b/lame-3.97/misc/ath.c new file mode 100644 index 0000000..ee6cfda --- /dev/null +++ b/lame-3.97/misc/ath.c @@ -0,0 +1,839 @@ +/* $Id: ath.c,v 1.12 2000/12/05 15:37:26 aleidinger Exp $ */ +/* + * Known bugs (sorted by importance): + * - human delay (ca. 200 ms or more???) and buffering delay (341 ms @48 kHz/64 KByte) + * should be subtracted + * - error handling + * - cos slope on direction changes + * - calibration file of soundcard/amplifier/head phone + * - worse handling + * - +/- handling via mouse (do you have code?) in a dark room + * - ENTER as direction change + * - finer precalculated ATH for pre-emphasis + */ + +/* + * Suggested level ranges: + * 180 Hz...13.5 kHz: 50...70 dB + * 100 Hz...15.0 kHz: 40...70 dB + * 70 Hz...16.0 kHz: 30...70 dB + * 45 Hz...16.5 kHz: 20...70 dB + * 30 Hz...17.5 kHz: 10...70 dB + * 25 Hz...18.0 kHz: 5...75 dB + * 20 Hz...19.0 kHz: 0...80 dB + * 16 Hz...20.0 kHz: -10...80 dB + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_SYS_SOUNDCARD_H +# include +#elif defined(HAVE_LINUX_SOUNDCARD_H) +# include +#else +# error no soundcard include +#endif + + + +#define AUDIO_DEVICE "/dev/dsp" +//#define COOLEDIT_FILE "/mnt/dosd/cooledit.wav" +#define DELAY_UNTIL_XCHG 2.5 +#define TURN_STEPS 2400 + +/****************************************************************************************************** + * soundcard stuff + ******************************************************************************************************/ + +const double dither_coeff [] [16] = { + { /* 48 kHz */ 3.35185352775391591311, 4.24914379295482032978, 1.78042251729150153086, -0.92601381419186201184, -1.37308596104182343645, -1.85951915999247704829, -3.28074437872632330526, -3.05496670185702990882, -1.22855462839450528837, -0.30291531959171267015, -0.18598486195652600770, 0.42010512205702003790, 0.92278786111368653452, 0.62102380451771775193, 0.14312897206650044828, -0.00454721508203927746 }, + { /* 56 kHz */ 3.86404134982280628749, 6.67195592701613291071, 5.90576195467245802046, 1.57589705921487261981, -2.10618201389737372178, -2.74191788822507184395, -2.62175070636849999396, -3.78505226463032808863, -4.45698848578010438284, -2.76825966243460536110, -0.26509931375584007312, 0.67853812028968716799, 0.17633528441477021892, -0.28511417191837823770, -0.21866605100975608470, -0.04751674094456833719 }, + { /* 64 kHz */ 4.09276938880098092172, 8.27424044674659812937, 10.11503162292146762880, 7.19159801569544317353, 1.39770070291739556523, -2.86595901981244688601, -3.76567274050094691362, -3.58051445684472378298, -4.78262917738758022539, -6.53075750894777650899, -6.31330514306857055627, -3.69971382767763534195, -0.78125094191744878298, 0.59027508113837267217, 0.53500264009607367648, 0.14860043567206217506 }, + { /* 72 kHz */ 4.13833553801985235465, 9.02461778089340082437, 12.93090366932740510782, 12.66372285767699051948, 7.76122176702274149630, 1.30617257555732278296, -2.92859120887121285358, -4.02438598495837830627, -4.16673068132491936262, -5.55618065300129916574, -7.82657788611231653103, -8.83055904466106668035, -7.34884789347713815672, -4.33977664906048314891, -1.67711310288611975398, -0.33086687044710235420 }, + { /* 80 kHz */ 4.22135293342667005517, 9.76639846582539722375, 15.46562682418357478290, 17.54378549927855248346, 13.29112084313158963396, 3.51512441998252657470, -7.51025671462502577300,-14.84164320864536219368,-16.10306907358826504148,-12.54775907691866414402, -7.40560667268782655149, -3.34708029482052565732, -1.19572214872925790860, -0.39582185216275086786, -0.14803160816846603424, -0.04292818488627011881 }, + { /* 88 kHz */ 4.18521467865996935325, 9.96765821475909556942, 16.91905760389390617551, 21.74016824668913557689, 20.96457146354060682367, 13.28640453421253890542, 0.85116933842171101587,-11.66054516261007127469,-19.62750656985581800169,-20.98831962473015904508,-16.95374072505042825458,-10.68848180295390154146, -5.17169792984369678908, -1.79975409439650319129, -0.38057073791415898674, -0.02672653932844656975 }, + { /* 96 kHz */ 4.09418877324899473189, 9.77977364010870211207, 17.10120082680385341159, 23.37356217615995036818, 25.27121942060722374276, 20.64059991613550174190, 9.99721445051475610371, -3.39833000550997938512,-15.03410054392933377278,-21.36704201000683067679,-21.40772859969388741685,-16.79355426136657673808,-10.48570200688141622163, -5.07642951516127438486, -1.75555240936989159436, -0.33817997298586054131 }, +}; + +typedef struct { + const char* device; + int fd; + long double sample_freq; + const double* dither; + int channels; + int bits; +} soundcard_t; + +typedef signed short sample_t; +typedef sample_t stereo_t [2]; + +int open_soundcard ( + soundcard_t* const k, + const char* device, + const int channels, + const int bits, + const long double freq ) +{ + int arg; + int org; + int index; + int status; + + k->device = device; + if ( -1 == (k->fd = open ( k->device, O_WRONLY )) ) { + perror("opening of audio device failed"); + return -1; + } + + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_SYNC, 0))) { + fprintf ( stderr, "%s: SOUND_PCM_SYNC ioctl failed: %s\n", k->device, strerror (errno)); + return -1; + } + + org = arg = channels; + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_CHANNELS, &arg)) ) { + fprintf ( stderr, "%s: SOUND_PCM_WRITE_CHANNELS (%d) ioctl failed: %s\n" , k->device, channels, strerror (errno) ); + return -1; + } + if (arg != org) { + fprintf ( stderr, "%s: unable to set number of channels: %d instead of %d\n", k->device, arg, org ); + return -1; + } + k->channels = arg; + + org = arg = bits; + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_BITS, &arg)) ) { + fprintf ( stderr, "%s: SOUND_PCM_WRITE_BITS ioctl failed\n", k->device ); + return -1; + } + if (arg != org) { + fprintf ( stderr, "%s: unable to set sample size: %d instead of %d\n", k->device, arg, org ); + return -1; + } + k->bits = arg; + + org = arg = k->bits <= 8 ? AFMT_U8 : AFMT_S16_LE; + if ( -1 == ioctl (k->fd, SNDCTL_DSP_SETFMT, &arg) ) { + fprintf ( stderr, "%s: SNDCTL_DSP_SETFMT ioctl failed\n", k->device ); + return -1; + } + if ((arg & org) == 0) { + fprintf ( stderr, "%s: unable to set data format\n", k->device ); + return -1; + } + + org = arg = (int) floor ( freq + 0.5 ); + if ( -1 == (status = ioctl (k->fd, SOUND_PCM_WRITE_RATE, &arg)) ) { + fprintf ( stderr, "%s: SOUND_PCM_WRITE_WRITE ioctl failed\n", k->device ); + return -1; + } + k->sample_freq = (long double)arg; + index = (arg - 44000) / 8000; + if ( index < 0 ) index = 0; + if ( index >= sizeof(dither_coeff)/sizeof(*dither_coeff) ) index = sizeof(dither_coeff)/sizeof(*dither_coeff) - 1; + k->dither = dither_coeff [ index ]; + return 0; +} + +int play_soundcard ( soundcard_t* const k, stereo_t* samples, size_t length ) +{ + size_t bytes = length * sizeof (*samples); + +#ifdef COOLEDIT_FILE + static int fd = -1; + if ( fd < 0 ) fd = open ( COOLEDIT_FILE, O_WRONLY | O_CREAT ); + write ( fd, samples, bytes ); +#endif + + return write ( k->fd, samples, bytes ) == bytes ? 0 : -1; +} + +int close_soundcard ( soundcard_t* const k ) +{ + return close (k->fd); +} + + +/****************************************************************************************************** + * frequency stuff + ******************************************************************************************************/ + +typedef enum { + linear = 0, + logarithm = 1, + square = 2, + cubic = 3, + erb = 4, + recip = 5 +} genmode_t; + +static long double linear_f ( long double x ) { return x > 0.L ? x : 0.0L; } +static long double logarithm_f ( long double x ) { return x > 0.L ? log10 (x) : -3.5L; } +static long double square_f ( long double x ) { return x > 0.L ? sqrt (x) : 0.0L; } +static long double cubic_f ( long double x ) { return x > 0.L ? pow (x,1/3.) : 0.0L; } +static long double erb_f ( long double x ) { return log (1. + 0.00437*x); } +static long double recip_f ( long double x ) { return x > 1.L ? 1.L/x : 1.0L; } + +static long double inv_linear_f ( long double x ) { return x; } +static long double inv_logarithm_f ( long double x ) { return pow (10., x); } +static long double inv_square_f ( long double x ) { return x*x; } +static long double inv_cubic_f ( long double x ) { return x*x*x; } +static long double inv_erb_f ( long double x ) { return (exp(x) - 1.) * (1./0.00437); } +static long double inv_recip_f ( long double x ) { return x > 1.L ? 1.L/x : 1.0L; } + +typedef long double (*converter_fn_t) ( long double ); + +const converter_fn_t func [] = { linear_f, logarithm_f, square_f, cubic_f , erb_f , recip_f }; +const converter_fn_t inv_func [] = { inv_linear_f, inv_logarithm_f, inv_square_f, inv_cubic_f, inv_erb_f, inv_recip_f }; + +typedef struct { + genmode_t genmode; + long double start_freq; + long double stop_freq; + long double sample_freq; + unsigned long duration; + + long double phase; + long double param1; + long double param2; + unsigned long counter; +} generator_t; + +int open_generator ( + generator_t* const g, + const soundcard_t* const s, + const genmode_t genmode, + const long double duration, + const long double start_freq, + const long double stop_freq ) +{ + g->sample_freq = s->sample_freq; + g->genmode = genmode; + g->start_freq = start_freq; + g->stop_freq = stop_freq; + g->duration = (unsigned long) floor ( duration * g->sample_freq + 0.5 ); + + if ( g->duration < 2 ) + return -1; + + if ( g->genmode >= sizeof (func)/sizeof(*func) ) + return -1; + + g->param1 = func [g->genmode] ( g->start_freq / g->sample_freq ); + g->param2 = ( func [ g->genmode ] ( g->stop_freq / g->sample_freq ) - g->param1 ) + / ( g->duration - 1 ); + g->phase = 0.L; + g->counter= 0; + + return 0; +} + +long double iterate_generator ( generator_t* const g ) +{ + long double freq; + + freq = inv_func [ g->genmode ] ( g->param1 + g->counter++ * g->param2 ); + + g->phase += freq; + if (g->phase > 15.) + g->phase -= 16.; + return sin ( 2.*M_PI * g->phase ); +} + +long double get_sine ( generator_t* const g ) +{ + return sin ( 2.*M_PI * g->phase ); +} + +long double get_cosine ( generator_t* const g ) +{ + return cos ( 2.*M_PI * g->phase ); +} + + +long double frequency ( const generator_t* const g ) +{ + return inv_func [ g->genmode ] ( g->param1 + g->counter * g->param2 ) * g->sample_freq; +} + +int close_generator ( generator_t* const g ) +{ + return 0; +} + +/****************************************************************************************************** + * amplitude stuff + ******************************************************************************************************/ + +typedef enum { + up = 0, + down = 1, + turn_up = 2, + turn_down = 3, + still_up = 4, + still_down = 5, + change = 6 +} direction_t; + + +typedef struct { + long double sample_freq; + direction_t direction; // down, up, still_up, still_down, turn_down, turn_up + int multiplier; // -TURN_STEPS: down, +TURN_STEPS up + long double amplitude; + long double delta_amplitude; + long direction_change; +} amplitude_t; + +int open_amplifier ( + amplitude_t* const a, + const soundcard_t* const s, + const long double start_ampl, + const double dB_per_sec ) +{ + a->sample_freq = s->sample_freq; + a->direction = up; + a->multiplier = +TURN_STEPS; + a->amplitude = start_ampl * 32767.; + a->delta_amplitude = dB_per_sec * 0.1151292546497022842 / s->sample_freq / TURN_STEPS; + a->direction_change = 0; + + srand ( time (NULL) ); + return 0; +} + +long double iterate_amplifier ( amplitude_t* const a ) +{ + switch ( a->direction ) { + case still_up: + assert (a->multiplier == +TURN_STEPS); + if (a->direction_change > 0 ) + a->direction_change--; + else + a->direction = turn_down; + break; + case still_down: + assert (a->multiplier == -TURN_STEPS); + if (a->direction_change > 0 ) + a->direction_change--; + else + a->direction = turn_up; + break; + case turn_up: + assert (a->direction_change == 0); + if ( a->multiplier < +TURN_STEPS ) + a->multiplier++; + else + a->direction = up; + break; + case turn_down: + assert (a->direction_change == 0); + if ( a->multiplier > -TURN_STEPS ) + a->multiplier--; + else + a->direction = down; + break; + case up: + assert (a->multiplier == +TURN_STEPS); + assert (a->direction_change == 0); + break; + case down: + assert (a->multiplier == -TURN_STEPS); + assert (a->direction_change == 0); + break; + default: + fprintf ( stderr, "\n\r*** Bug! ***\n"); + break; + } + + a->amplitude *= 1.L + a->delta_amplitude * a->multiplier; + return a->amplitude; +} + +long double amplitude ( const amplitude_t* const a ) +{ + return a->amplitude / 32767.; +} + +int change_direction ( amplitude_t* const a, direction_t new_direction ) +{ + switch ( new_direction ) { + case up: + if (a->direction == down) { + a->direction = still_down; + } else { + fprintf ( stderr, "Direction not down, so ignored\n" ); + return -1; + } + break; + case down: + if (a->direction == up) { + a->direction = still_up; + } else { + fprintf ( stderr, "Direction not up, so ignored\n" ); + return -1; + } + break; + case change: + switch ( a->direction ) { + case up: + a->direction = still_up; + break; + case down: + a->direction = still_down; + break; + default: + fprintf ( stderr, "Direction still changing, so ignored\n" ); + return -1; + } + break; + + default: + fprintf ( stderr, "Direction unknown, so ignored\n" ); + return -1; + } + + a->direction_change = 1 + rand () * (a->sample_freq * DELAY_UNTIL_XCHG / RAND_MAX); + return 0; +} + +int close_amplifier ( amplitude_t* const a ) +{ + return 0; +} + + +double ATH ( double freq ) +{ + static float tab [] = { + /* 10.0 */ 96.69, 96.69, 96.26, 95.12, + /* 12.6 */ 93.53, 91.13, 88.82, 86.76, + /* 15.8 */ 84.69, 82.43, 79.97, 77.48, + /* 20.0 */ 74.92, 72.39, 70.00, 67.62, + /* 25.1 */ 65.29, 63.02, 60.84, 59.00, + /* 31.6 */ 57.17, 55.34, 53.51, 51.67, + /* 39.8 */ 50.04, 48.12, 46.38, 44.66, + /* 50.1 */ 43.10, 41.73, 40.50, 39.22, + /* 63.1 */ 37.23, 35.77, 34.51, 32.81, + /* 79.4 */ 31.32, 30.36, 29.02, 27.60, + /* 100.0 */ 26.58, 25.91, 24.41, 23.01, + /* 125.9 */ 22.12, 21.25, 20.18, 19.00, + /* 158.5 */ 17.70, 16.82, 15.94, 15.12, + /* 199.5 */ 14.30, 13.41, 12.60, 11.98, + /* 251.2 */ 11.36, 10.57, 9.98, 9.43, + /* 316.2 */ 8.87, 8.46, 7.44, 7.12, + /* 398.1 */ 6.93, 6.68, 6.37, 6.06, + /* 501.2 */ 5.80, 5.55, 5.29, 5.02, + /* 631.0 */ 4.75, 4.48, 4.22, 3.98, + /* 794.3 */ 3.75, 3.51, 3.27, 3.22, + /* 1000.0 */ 3.12, 3.01, 2.91, 2.68, + /* 1258.9 */ 2.46, 2.15, 1.82, 1.46, + /* 1584.9 */ 1.07, 0.61, 0.13, -0.35, + /* 1995.3 */ -0.96, -1.56, -1.79, -2.35, + /* 2511.9 */ -2.95, -3.50, -4.01, -4.21, + /* 3162.3 */ -4.46, -4.99, -5.32, -5.35, + /* 3981.1 */ -5.13, -4.76, -4.31, -3.13, + /* 5011.9 */ -1.79, 0.08, 2.03, 4.03, + /* 6309.6 */ 5.80, 7.36, 8.81, 10.22, + /* 7943.3 */ 11.54, 12.51, 13.48, 14.21, + /* 10000.0 */ 14.79, 13.99, 12.85, 11.93, + /* 12589.3 */ 12.87, 15.19, 19.14, 23.69, + /* 15848.9 */ 33.52, 48.65, 59.42, 61.77, + /* 19952.6 */ 63.85, 66.04, 68.33, 70.09, + /* 25118.9 */ 70.66, 71.27, 71.91, 72.60, + }; + double freq_log; + double dB; + unsigned index; + + if ( freq < 10. ) freq = 10.; + if ( freq > 25000. ) freq = 25000.; + + freq_log = 40. * log10 (0.1 * freq); /* 4 steps per third, starting at 10 Hz */ + index = (unsigned) freq_log; + assert ( index < sizeof(tab)/sizeof(*tab) ); + dB = tab [index] * (1 + index - freq_log) + tab [index+1] * (freq_log - index); + return pow ( 10., 0.05*dB ); +} + +/****************************************************************************************************** + * keyboard stuff + ******************************************************************************************************/ + +typedef struct { + int init; + struct termios stored_setting; + struct termios current_setting; +} keyboard_t; + +static keyboard_t* __k; + +/* Restore term-settings to those saved when term_init was called */ + +static void term_restore (void) +{ + tcsetattr ( 0, TCSANOW, &(__k->stored_setting) ); +} /* term_restore */ + +/* Clean up terminal; called on exit */ + +static void term_exit ( int sig ) +{ + term_restore (); +} /* term_exit */ + +/* Will be called when ctrl-Z is pressed, this correctly handles the terminal */ + +static void term_ctrl_z ( int sig ) +{ + signal ( SIGTSTP, term_ctrl_z ); + term_restore (); + kill ( getpid(), SIGSTOP ); +} /* term_ctrl_z */ + +/* Will be called when application is continued after having been stopped */ + +static void term_cont ( int sig ) +{ + signal ( SIGCONT, term_cont ); + tcsetattr ( 0, TCSANOW, &(__k->current_setting) ); +} /* term_cont() */ + +int open_keyboard ( keyboard_t* const k ) +{ + __k = k; + tcgetattr ( 0, &(k->stored_setting) ); + tcgetattr ( 0, &(k->current_setting) ); + + signal ( SIGINT, term_exit ); /* We _must_ clean up when we exit */ + signal ( SIGQUIT, term_exit ); + signal ( SIGTSTP, term_ctrl_z ); /* Ctrl-Z must also be handled */ + signal ( SIGCONT, term_cont ); +// atexit ( term_exit ); + + /* One or more characters are sufficient to cause a read to return */ + cfmakeraw ( &(k->current_setting) ); + k->current_setting.c_oflag |= ONLCR | OPOST; /* enables NL => CRLF on output */ + + tcsetattr ( 0, TCSANOW, &(k->current_setting) ); + return 0; +} + +int getchar_keyboard ( keyboard_t* const k ) +{ + struct timeval t; + fd_set fd [1]; + int ret; + unsigned char c; + + FD_SET (0, fd); + t.tv_sec = 0; + t.tv_usec = 0; + + ret = select ( 1, fd, NULL, NULL, &t ); + + switch ( ret ) { + case 0: + return -1; + case 1: + ret = read (0, &c, 1); + return ret == 1 ? c : -1; + default: + return -2; + } +} + +int close_keyboard ( keyboard_t* const k ) +{ + term_restore (); + return 0; +} + + +/****************************************************************************************************** + * reporting stuff + ******************************************************************************************************/ + +int report_open ( void ) +{ + static char buff [32767]; + fflush ( stdout ); + setvbuf ( stdout, buff, _IOFBF, sizeof(buff) ); + return 0; +} + +int report ( const generator_t* const g, const amplitude_t* const a ) +{ + static double last_freq = -1.; + static double last_level = -1.; + double freq; + double level; + + freq = frequency (g); + level = 20. * log10 (amplitude (a) * ATH (freq) ) + 80.; + + if ( last_freq >= 0 ) + printf ( "%11.3f %8.2f\n", sqrt (freq*last_freq), 0.5 * (level+last_level) ); + printf ( "# %9.3f %8.2f\n", freq, level ); + + fflush ( stdout ); + + last_freq = freq; + last_level = level; + return 0; +} + +int report_close ( void ) +{ + printf ( "%%%%\n\n" ); + fflush ( stdout ); + close ( dup ( fileno(stdout) ) ); + setvbuf ( stdout, NULL, _IONBF, 0 ); + return 0; +} + + +/****************************************************************************************************** + * main stuff + ******************************************************************************************************/ + +typedef enum { + left = 0, + right = 1, + phase0 = 2, + both = 2, + phase90 = 3, + phase180 = 4, + phasemod = 5 +} earmode_t; + +static long double scalar ( const double* a, const double* b ) +{ + return a[ 0]*b[ 0] + a[ 1]*b[ 1] + a[ 2]*b[ 2] + a[ 3]*b[ 3] + +a[ 4]*b[ 4] + a[ 5]*b[ 5] + a[ 6]*b[ 6] + a[ 7]*b[ 7] + +a[ 8]*b[ 8] + a[ 9]*b[ 9] + a[10]*b[10] + a[11]*b[11] + +a[12]*b[12] + a[13]*b[13] + a[14]*b[14] + a[15]*b[15]; +} + +int experiment ( generator_t* const g, + amplitude_t* const a, + keyboard_t* const k, + soundcard_t* const s, + earmode_t earmode ) +{ + long i; + int j; + stereo_t samples [512]; + static double quant_errors [2] [16]; + long double val; + double ampl; + long ival; + + fprintf ( stderr, "\r+++ up +++" ); + for ( i = 0; i < g->duration; i += sizeof(samples)/sizeof(*samples) ) { + fprintf ( stderr, "%3lu%%\b\b\b\b", i*100lu/g->duration ); + + for (j = 0; j < sizeof(samples)/sizeof(*samples); j++ ) { + ampl = iterate_amplifier (a) * ATH (frequency (g)); + val = ampl * iterate_generator (g); + ival = (long) floor ( val + 0.5 + scalar (quant_errors[0], s->dither) ); + + if ( ival != (sample_t) ival ) { + report (g, a); + fprintf ( stderr, "\rOverrun \n\n" ); + return -1; + } + memmove ( & quant_errors [0] [1], & quant_errors [0] [0], + sizeof(quant_errors[0]) - sizeof(quant_errors[0][0]) ); + quant_errors [0] [0] = val - ival; + switch ( earmode ) { + case both: + samples [j] [0] = samples [j] [1] = ival; + break; + case left: + samples [j] [0] = ival; + samples [j] [1] = 0; + break; + case right: + samples [j] [0] = 0; + samples [j] [1] = ival; + break; + case phase180: + samples [j] [0] = ival == -32768 ? 32767 : -ival; + samples [j] [1] = +ival; + break; + case phase90: + samples [j] [0] = ival; + val = ampl * get_cosine (g); + ival = (long) floor ( val + 0.5 + scalar (quant_errors[1], s->dither) ); + if ( ival != (sample_t) ival ) { + report (g, a); + fprintf ( stderr, "\rOverrun \n\n" ); + return -1; + } + memmove ( & quant_errors [1] [1], & quant_errors [1] [0], + sizeof(quant_errors[1]) - sizeof(quant_errors[1][0]) ); + quant_errors [1] [0] = val - ival; + samples [j] [1] = ival; + break; + default: + assert (0); + return -1; + } + } + play_soundcard ( s, samples, sizeof(samples)/sizeof(*samples) ); + if ( amplitude (a) * ATH (frequency (g)) <= 3.16227766e-6 ) { + report (g, a); + fprintf ( stderr, "\rUnderrun \n\n" ); + return -1; + } + + switch ( getchar_keyboard (k) ) { + case '+': + fprintf ( stderr, "\r+++ up +++" ); + report (g, a); + change_direction ( a, up ); + break; + case '-': + fprintf ( stderr, "\r--- down ---" ); + report (g, a); + change_direction ( a, down ); + break; + case '\r': + case '\n': + fprintf ( stderr, "\r** change **" ); + report (g, a); + change_direction ( a, change ); + break; + case 'C'&0x1F: + case 'q': + case 'Q': + case 'x': + case 'X': + fprintf ( stderr, "\rBreak \n\n" ); + fflush ( stderr ); + return -1; + default: + fprintf ( stderr, "\a" ); + break; + case -1: + break; + } + } + + fprintf ( stderr, "\rReady \n\n" ); + return 0; +} + +static void usage ( void ) +{ + static const char help[] = + "'Absolute Threshold of Hearing' -- Version 0.07 (C) Frank Klemm 2000\n" + "\n" + "usage:\n" + " ath type minfreq maxfreq duration ampl_speed [start_level [earmode] > reportfile\n" + "\n" + " type: linear, logarithm, square, cubic, erb, recip\n" + " minfreq: initial frequency [Hz]\n" + " maxfreq: end frequency [Hz]\n" + " duration: duration of the experiment [s]\n" + " ampl_speed: amplitude slope speed [phon/s]\n" + " start_level: absolute level at startup [0...1]\n" + " earmode: left, right, both, phase90, phase180\n" + "\n" + "example:\n" + " ath erb 700 22000 600 3 0.0001 > result1\n" + " ath erb 1400 16 360 3 0.0001 > result2\n" + "\n" + "handling:\n" + " press '-' once when you start hearing a tone\n" + " press '+' once when you stop hearing a tone\n" + " press 'q' to early leave the program\n" + " on errors the pressed key is ignored\n"; + + fprintf ( stderr, "%s\n", help ); +} + +int main ( int argc, char** argv ) +{ + generator_t g; + amplitude_t a; + soundcard_t s; + keyboard_t k; + genmode_t genmode; + earmode_t earmode; + + if ( argc == 1 ) { + usage (); + system ( "./ath erb 700 22000 600 3 0.0001 > result1" ); + system ( "./ath erb 1400 16 360 3 0.0001 > result2" ); + system ( "xmgr result1 result2 &> /dev/null &" ); + return 0; + } + + if ( argc < 6 ) { + usage (); + return 1; + } + + if ( 0 == strncmp ( argv[1], "li" , 2) ) genmode = linear; + else if ( 0 == strncmp ( argv[1], "lo" , 2) ) genmode = logarithm; + else if ( 0 == strncmp ( argv[1], "sq" , 2) ) genmode = square; + else if ( 0 == strncmp ( argv[1], "cu" , 2) ) genmode = cubic; + else if ( 0 == strncmp ( argv[1], "er" , 2) ) genmode = erb; + else if ( 0 == strncmp ( argv[1], "re" , 2) ) genmode = recip; + else { + usage (); + return 1; + } + + if ( argc < 8 ) earmode = both; + else if ( 0 == strncmp ( argv[7], "le" , 2) ) earmode = left; + else if ( 0 == strncmp ( argv[7], "ri" , 2) ) earmode = right; + else if ( 0 == strncmp ( argv[7], "bo" , 2) ) earmode = both; + else if ( 0 == strncmp ( argv[7], "phase9" , 6) ) earmode = phase90; + else if ( 0 == strncmp ( argv[7], "phase1" , 6) ) earmode = phase180; + else { + usage (); + return 1; + } + + + open_soundcard ( &s, AUDIO_DEVICE, sizeof(stereo_t)/sizeof(sample_t), CHAR_BIT*sizeof(sample_t), 96000.0 ); + open_generator ( &g, &s, genmode, atof (argv[4]), atof (argv[2]), atof (argv[3]) ); + open_amplifier ( &a, &s, argc > 6 ? atof (argv[6]) : 0.0001, atof (argv[5]) ); + open_keyboard ( &k ); + + report_open ( ); + experiment ( &g, &a, &k, &s, earmode ); + report_close ( ); + + close_keyboard ( &k ); + close_amplifier( &a ); + close_generator( &g ); + close_soundcard( &s ); + + return 0; +} + +/* end of ath.c */ + + diff --git a/lame-3.97/misc/auenc b/lame-3.97/misc/auenc new file mode 100644 index 0000000..50d9c81 --- /dev/null +++ b/lame-3.97/misc/auenc @@ -0,0 +1,39 @@ +#!/bin/sh +# +# auenc -- version 0.1 +# +# A wrapper for lame to encode multiple files. By default, a .wav +# extension is removed and replaced by .mp3 . +# +# (C) 1999 Gerhard Wesp under the GPL. + +# set the variables below according to your taste +LAME=lame +LAME_OPTS="-S -h -v -V 0 -b 256" # high quality, silent operation + +if [ $# -lt 1 ] ; then + exec 1>&2 + cat << _EOF_ +usage: $0 [options] file... +options: + -d --delete: delete original file after successful encoding +_EOF_ + exit 1 +fi + +unset DELETE +case "$1" in + -d | --delete ) DELETE=1 ; shift ;; +esac + +for f +do + $LAME $LAME_OPTS "$f" `basename "$f" .wav`.mp3 || { + exec 1>&2 + echo "encoding of $f failed, aborting..." + exit 1 + } + if [ -n "$DELETE" ] ; then + rm -f "$f" + fi +done diff --git a/lame-3.97/misc/depcomp b/lame-3.97/misc/depcomp new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/misc/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/misc/lame4dos.bat b/lame-3.97/misc/lame4dos.bat new file mode 100755 index 0000000..ab78423 --- /dev/null +++ b/lame-3.97/misc/lame4dos.bat @@ -0,0 +1,41 @@ +@echo off +rem --------------------------------------------- +rem PURPOSE: +rem - put this Batch-Command on your Desktop, +rem so you can drag and drop wave files on it +rem and LAME will encode them to mp3 format. +rem - put this Batch-Command in a place mentioned +rem in your PATH environment, start the DOS-BOX +rem and change to a directory where your wave +rem files are located. the following line will +rem encode all your wave files to mp3 +rem "lame.bat *.wav" +rem --------------------------------------------- +rem C2000 Robert Hegemann +rem --------------------------------------------- +rem Changes to support long filenames using 4DOS +rem by Alexander Stumpf +rem --------------------------------------------- +rem please set LAME and LAMEOPTS +rem LAME - where the executeable is +rem OPTS - options you like LAME to use + + set LAME=c:\progra~1\sound&~1\lame\lame.exe + set OPTS=-h --lowpass-width 2 --lowpass 20.5 -b 112 --abr 180 + +rem --------------------------------------------- + + set thecmd=%LAME% %OPTS% + for %%f in (%&) do (%thecmd% %@sfn[%%f]^(ren %@sfn[%%f].mp3 "%@lfn[%%f].mp_">NUL)) + ren *.mp3.mp_ *.new.mp3 >& NUL + ren *.wav.mp_ *.mp3 >& NUL + goto endmark +:errormark + echo. + echo. + echo ERROR processing %1 + echo. +:endmark +rem +rem finished +rem diff --git a/lame-3.97/misc/lameGUI.html b/lame-3.97/misc/lameGUI.html new file mode 100644 index 0000000..1119e86 --- /dev/null +++ b/lame-3.97/misc/lameGUI.html @@ -0,0 +1,403 @@ + + + + + +Lame + + + + + + + +
    +

    LAME Frontend

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Fixed Bitrate 
    bitrate (-b) high quality (-h)
     fast (no noise shaping)
      
    Variable Bitrate 
    variable + bitrate (-v)VBR quality (-V)
    maximum bitrate (-B) enforce min. bitrate (-F)
      
    General 
    mode (-m) disable all filters (-k)
    copyrighted (-c)non-original (-o)
      
    ID3-Tag 
    title (--tt) artist (--ta)
    album (--tl) year (--ty) track (--tn)
    comment (--tc) genre (--tg)
       
    +
    + + + + + + +
    [LAME HELP] [LAME Readme] [LAME History] [LAME + Homepage] 
    + + diff --git a/lame-3.97/misc/lameid3.pl b/lame-3.97/misc/lameid3.pl new file mode 100644 index 0000000..5352877 --- /dev/null +++ b/lame-3.97/misc/lameid3.pl @@ -0,0 +1,55 @@ +# +# From: Per Bolmstedt +# +# AC> If someone has scripts that read input ID3 tags and convert +# AC> them to args for lame (which then encodes the tags into the +# AC> output files), let me know, too! +# +# This is easy peasy using Perl. Especially using Chris Nandor's excellent +# MP3::Info package (available on CPAN). Here's a program I just wrote that +# I think does what you want. Invoke it with " [options]" +# (where the options can include an output filename), like for example: +# +# lameid3.pl HQ.mp3 LQ.mp3 -fv +# +# (Note how the syntax differs from that of Lame's.) The program will +# extract ID3 tags from the input file and invoke Lame with arguments for +# including them. (This program has not undergone any real testing..) + +use MP3::Info; +use strict; + +my %flds = ( + TITLE => 'tt', + ARTIST => 'ta', + ALBUM => 'tl', + YEAR => 'ty', + COMMENT => 'tc', + GENRE => 'tg', + TRACKNUM => 'tn' + ); + +my $f = shift @ARGV; +my $s = "lame ${f} " . &makeid3args( $f ) . join ' ', @ARGV; +print STDERR "[${s}]\n"; +system( $s ); + +sub makeid3args( $ ) +{ + my $s; + if ( my $tag = get_mp3tag( @_->[ 0 ] ) ) + { + for ( keys %flds ) + { + if ( $tag->{ $_ } ) + { + $s .= sprintf( + "--%s \"%s\" ", + %flds->{ $_ }, + $tag->{ $_ } ); + } + } + } + return $s || ""; +} + diff --git a/lame-3.97/misc/mlame b/lame-3.97/misc/mlame new file mode 100644 index 0000000..23beab5 --- /dev/null +++ b/lame-3.97/misc/mlame @@ -0,0 +1,195 @@ +#!/bin/sh + +############################################################################ +# +# Run the LAME encoder on multiple files, with option to delete .wav files +# after encoding. "mlame -?" will give instructions. +# +# Robert Hegemann +# modified on request: Frank Klemm +# +############################################################################ + +# encoder path to use +mp3coder="lame" +mp3analyzer="mlame_corr" + +# default options to use +options_low="-h -d -mj -b 128" +options_high="-h -d -mj -V 1 -b 112 -B 320" +options=$options_high + +# remove source? +removesource=false + +# force overwrite of destination +testoverwrite=true + +# waiting after error report n seconds +errordelay=1 + +helptext="\n\ +This script runs the LAME mp3 encoder on multiple files: \n\n\ + $0 [options] ... \n\ +\n\ + options:\n\ + -? this help text\n\ + -r remove files after encoding\n\ + -f force overwrite of destination if exists\n\ + -l low quality settings\n\ + -h high quality settings\n\ + -o \"\" overrides script default options +\n\ + example:\n\ + $0 -r -f -o \"-v -V 0 -b 112\" a*.wav z*.aif g*.mp?\n\ +\n\ +" + +# process command-line options +# this could be extended to fake the +# commandline interface of the mp3encoder + +while getopts ":o:r:h:l:f" optn; do + case $optn in + o ) options=$OPTARG # replace default options + echo New lame options are \'$options\' + ;; + r ) removesource=true + echo Removing source files after successfully converting + ;; + f ) testoverwrite=false + echo Force overwriting existing destination files + ;; + h ) options=$options_high + ;; + l ) options=$options_low + ;; + \? ) printf "$helptext" + sleep $errordelay + exit 1 + ;; + esac +done +shift $(($OPTIND - 1)) + +# no files remaining? + +if [ "$1" = "" ]; then + printf "$helptext" + sleep $errordelay + exit 1 +fi + +# process input-files + +for src in "$@"; do + + case $src in + *[.][wW][aA][vV] ) + dst=${src%[.][wW][aA][vV]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options `$mp3analyzer "$src"` "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][aA][iI][fF] ) + dst=${src%[.][aA][iI][fF]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][aA][iI][fF][fF] ) + dst=${src%[.][aA][iI][fF][fF]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][mM][pP][gG12] ) + dst=${src%[.][mM][pP][gG12]}.mp3 + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + rm -f "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + *[.][mM][pP]3 ) + dst=${src%[.][mM][pP]3}-new-converted-file.${src##*.} + if [ -f "$src" ]; then + if [ $testoverwrite = true -a -f "$dst" ]; then + echo \'$dst\' already exists, skipping + sleep $errordelay + elif $mp3coder $options "$src" "$dst"; then + if [ $removesource = true ]; then + mv -f "$dst" "$src" + fi + else + echo converting of \'$src\' to \'$dst\' failed + sleep $errordelay + fi + else + echo No source file \'$src\' found. + sleep $errordelay + fi + ;; + + * ) # the rest + echo warning: File extention \'.${src##*.}\' not supported + sleep $errordelay + ;; + + esac + +done diff --git a/lame-3.97/misc/mlame_corr.c b/lame-3.97/misc/mlame_corr.c new file mode 100644 index 0000000..4305b63 --- /dev/null +++ b/lame-3.97/misc/mlame_corr.c @@ -0,0 +1,220 @@ +/* + Bug: + - runs only on little endian machines for WAV files + - Not all WAV files are recognized + */ + +#include +#include +#include +#include +#include +#include +#include + +typedef signed short stereo [2]; +typedef signed short mono; +typedef struct { + unsigned long long n; + long double x; + long double x2; + long double y; + long double y2; + long double xy; +} korr_t; + +void analyze_stereo ( const stereo* p, size_t len, korr_t* k ) +{ + long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; + double t1; + double t2; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p)[0]); _x2 += t1 * t1; + _y += (t2 = (*p)[1]); _y2 += t2 * t2; + _xy += t1 * t2; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _y ; + k -> y2 += _y2; + k -> xy += _xy; +} + +void analyze_dstereo ( const stereo* p, size_t len, korr_t* k ) +{ + static double l0 = 0; + static double l1 = 0; + long double _x = 0, _x2 = 0, _y = 0, _y2 = 0, _xy = 0; + double t1; + double t2; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p)[0] - l0); _x2 += t1 * t1; + _y += (t2 = (*p)[1] - l1); _y2 += t2 * t2; + _xy += t1 * t2; + l0 = (*p)[0]; + l1 = (*p)[1]; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _y ; + k -> y2 += _y2; + k -> xy += _xy; +} + + +void analyze_mono ( const mono* p, size_t len, korr_t* k ) +{ + long double _x = 0, _x2 = 0; + double t1; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p)); _x2 += t1 * t1; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _x ; + k -> y2 += _x2; + k -> xy += _x2; +} + +void analyze_dmono ( const mono* p, size_t len, korr_t* k ) +{ + static double l0 = 0; + long double _x = 0, _x2 = 0; + double t1; + + k -> n += len; + + for ( ; len--; p++ ) { + _x += (t1 = (*p) - l0); _x2 += t1 * t1; + l0 = *p; + } + + k -> x += _x ; + k -> x2 += _x2; + k -> y += _x ; + k -> y2 += _x2; + k -> xy += _x2; +} + +int sgn ( long double x ) +{ + if ( x > 0 ) return +1; + if ( x < 0 ) return -1; + return 0; +} + +int report ( const korr_t* k ) +{ + long double scale = sqrt ( 1.e5 / (1<<29) ); // Sine Full Scale is +10 dB, 7327 = 100% + long double r; + long double rd; + long double sx; + long double sy; + long double x; + long double y; + long double b; + + r = (k->x2*k->n - k->x*k->x) * (k->y2*k->n - k->y*k->y); + r = r > 0.l ? (k->xy*k->n - k->x*k->y) / sqrt (r) : 1.l; + sx = k->n > 1 ? sqrt ( (k->x2 - k->x*k->x/k->n) / (k->n - 1) ) : 0.l; + sy = k->n > 1 ? sqrt ( (k->y2 - k->y*k->y/k->n) / (k->n - 1) ) : 0.l; + x = k->n > 0 ? k->x/k->n : 0.l; + y = k->n > 0 ? k->y/k->n : 0.l; + + b = atan2 ( sy, sx * sgn (r) ) * ( 8 / M_PI); + +// 6 5 4 3 2 +// _______________________________ +// |\ | /| +// 7 | \ | / | 1 +// | \ | / | +// | \ | / | +// | \ | / | +// 8 |--------------+--------------| 0 +// | / | \ | +// | / | \ | +// -7 | / | \ | -1 +// | / | \ | +// |/_____________|_____________\| +// +// -6 -5 -4 -3 -2 + + if ( r > 0.98 ) { + printf ("-mm"); // disguised mono file + return; + } + if ( fabs (b-2) > 0.666 ) { + printf ("-ms"); // low profit for joint stereo + return; + } + if ( r < 0.333 ) { + printf ("-ms"); // low profit for joint stereo + return; + } +} + +void readfile ( const char* name, int fd ) +{ + unsigned short header [22]; + stereo s [4096]; + mono m [8192]; + size_t samples; + korr_t k0; + korr_t k1; + + memset ( &k0, 0, sizeof(k0) ); + memset ( &k1, 0, sizeof(k1) ); + + read ( fd, header, sizeof(header) ); + + switch ( header[11] ) { + case 1: + printf ("-mm\n"); + break; + + case 2: + while ( ( samples = read (fd, s, sizeof(s)) ) > 0 ) { + analyze_stereo ( s, samples / sizeof (*s), &k0 ); + analyze_dstereo ( s, samples / sizeof (*s), &k1 ); + } + report (&k0); + report (&k1); + break; + + default: + fprintf ( stderr, "%u Channels not supported: %s\n", header[11], name ); + break; + } +} + +int main ( int argc, char** argv ) +{ + char* name; + int fd; + + if (argc < 2) + readfile ( "", 0 ); + else + while ( (name = *++argv) != NULL ) { + if ( (fd = open ( name, O_RDONLY )) >= 0 ) { + readfile ( name, fd ); + close ( fd ); + } else { + fprintf ( stderr, "Can't open: %s\n", name ); + } + } + + return 0; +} diff --git a/lame-3.97/misc/mugeco.sh b/lame-3.97/misc/mugeco.sh new file mode 100755 index 0000000..6be2774 --- /dev/null +++ b/lame-3.97/misc/mugeco.sh @@ -0,0 +1,137 @@ +#!/bin/sh +progname=mugeco version=0.1 +programr='Alexander Leidinger' +progdate='7 Dec 2000' +progdesc='MUltiGEnerationCOding' +# NEEDS: getopt, lame +# Please have a look at the DEFAULTS section. + +# $Id: mugeco.sh,v 1.6 2000/12/08 13:47:56 aleidinger Exp $ + +usage() { +cat << EOF +** $progname v$version, $progdate ** +by $programr +$progdesc +usage: $progname [ ] -g + -v use builtin VBR options + -g number of generations + -h help + + used + - env vars: + * LAME : alternative encoder binary + * LAMEOPT: alternative encoder options + - VBR opts: $enc_vbr_opts + - CBR opts: $enc_cbr_opts +EOF +} + +# DEFAULTS + +# if you can, use getopt(1) (c)1997 by Frodo Looijaard +# it's in most modern unixen, or look at http://huizen.dds.nl/~frodol/ +: ${GETOPT=getopt} # helper program +# mktemp (optional) is also in most modern unixen (originally from OpenBSD) +: ${MKTEMP=mktemp} # helper program +: ${TMPDIR:=/tmp} # set default temp directory +: ${LAME:=lame} # path to LAME + +enc_cbr_opts="-b192 -h --lowpass 18 --lowpass-width 0" +enc_vbr_opts="--vbr-mtrh --nspsytune -v -h -d -Y -X3" +enc_opts=${LAMEOPT:-$enc_cbr_opts} +num= # default number of generations + +# DEFINE FUNCTIONS + +e() { echo "$progname: $*"; } +die() { # usage: die [ [ ] ] + trap '' 1 2 3 13 15 + exitcode=0 + [ $# -gt 0 ] && { exitcode=$1; shift; } + [ $# -gt 0 ] && e "Error: $*" >&2 + exit $exitcode +} + +# tfile() +# this function creates temporary files. 'tfile temp' will make a tempfile +# and put the path to it in the variable $temp (defaults to variable $tf) +trap 'for f in $ztfiles; do rm -f "$f"; done' 0 +trap 'trap "" 1 2 3 13 15; exit 10' 1 2 3 13 15 +unset ztfiles +tfile() { # usage: tfile + ztf=`$MKTEMP -q $TMPDIR/$progname.XXXXXX 2>/dev/null` # try mktemp + if [ $? -gt 0 -o -z "$ztf" ]; then # if mktemp fails, do it unsafely + ztf=$TMPDIR/$LOGNAME.$progname.$$ + [ -e "$ztf" ] && ztf= || { touch $ztf && chmod 600 $ztf; } + fi + [ "$ztf" -a -f "$ztf" ] || { echo Could not make tempfile; exit 8; } + ztfiles="$ztfiles $ztf" + eval ${1:-tf}='$ztf' +} + +# PARSE COMMAND LINE + +options="g:vh" # option string for getopt(1) +help=; [ "$1" = -h -o "$1" = -help -o "$1" = --help ] && help=yes +[ "$help" ] && { usage; die; } +$GETOPT -T >/dev/null 2>&1 +[ $? -eq 4 ] && GETOPT="$GETOPT -n $progname -s sh" #frodol's getopt? +eval set -- `$GETOPT "$options" "$@"` +[ $# -lt 1 ] && { die 9 getopt failed; } +while [ $# -gt 0 ]; do + case "$1" in + -g) num=$2; shift ;; + -v) enc_opts=$enc_cbr_opts ;; + -h) help=y ;; + --) shift; break ;; + *) usage; die 9 "invalid command line syntax!" ;; + esac + shift +done +[ "$help" ] && { usage; die; } +[ $# -eq 0 ] && { usage; die 9 no arguments; } #change or remove if desired +# sanity checking +[ "$num" ] && echo "$num"|grep -q '^[0-9]*$' && [ $num -ge 1 ] \ + || die 1 please use the -g flag with a valid number + +# MAIN PROGRAM + +# what version of lame are we using? +lame_vers=`$LAME 2>&1 | awk 'NR==1{print $3}'` + +# check filename +[ -f "$1" ] || die 2 "'$1' isn't a file" +echo "$1"|grep -qi '\.wav$' || die 2 "'$1' isn't a .wav" + +# make tempfiles +base=`echo "$1"|sed 's/\.[^.]*$//'` +dest=${base}_generation_$num.wav +[ -e "$dest" ] && die 2 "'$dest' already exists" +touch "$dest" || die 2 "couldn't create '$dest'" +TMPDIR=. tfile tmpwav +TMPDIR=. tfile tmpmp3 +cp -f "$1" "$tmpwav" + +# do the loop +start=`date` +i=1 +while [ $i -le $num ]; do + e "Working on file '$1', generation number $i..." + + $LAME $enc_opts --tc "lame $lame_vers; Generation: $i" \ + "$tmpwav" "$tmpmp3" || die 3 encoding failed + $LAME --decode --mp3input "$tmpmp3" "$tmpwav" || die 3 decoding failed + + i=`expr $i + 1` +done +end=`date` + +# save the result +ln -f "$tmpwav" "$dest" + +echo +e "Start: $start" +e "Stop : $end" + +die diff --git a/lame-3.97/misc/scalartest.c b/lame-3.97/misc/scalartest.c new file mode 100644 index 0000000..01680d0 --- /dev/null +++ b/lame-3.97/misc/scalartest.c @@ -0,0 +1,166 @@ +#include +#include +#include +#include "resample.h" + +#define CLK 300.e6 +#define LOOPS 20000 + + +typedef double ( *ddf ) ( double ); + + +float a1 [256]; +float a2 [256]; + +void init ( void ) +{ + int i; + + for ( i = 0; i < sizeof(a1)/sizeof(*a1); i++ ) { + a1 [i] = sin(i)+0.2*sin(1.8*i)+log(2+i); + a2 [i] = cos(0.1*i); + } +} + +void test ( int no, scalar_t f ) +{ + unsigned long long t1; + unsigned long long t2; + unsigned long long t3; + unsigned long long t4; + int l; + double last = 0; + double curr = 0; + + printf ( "[%3u] %22.14f\t\t", no, (double)f (a1,a2) ); + fflush ( stdout ); + + do { + rdtscll (t1); + l = LOOPS; + do + ; + while (--l); + rdtscll (t2); + rdtscll (t3); + l = LOOPS; + do + f(a1,a2), f(a1,a2), f(a1,a2), f(a1,a2); + while (--l); + rdtscll (t4); + last = curr; + curr = (t4-t3-t2+t1) / CLK / LOOPS / 4 * 1.e9; + } while ( fabs(curr-last) > 1.e-4 * (curr+last) ); + printf ("%8.2f ns\n", (curr+last) / 2 ); +} + +void testn ( scalarn_t f ) +{ + unsigned long long t1; + unsigned long long t2; + unsigned long long t3; + unsigned long long t4; + int l; + int i; + double last = 0; + double curr = 0; + + for ( i = 1; i <= 64; i += i<6 ? 1 : i<8 ? 2 : i ) { + printf ( "[%3u] %22.14f\t\t", 4*i, (double)f (a1,a2,i) ); + fflush ( stdout ); + + do { + rdtscll (t1); + l = LOOPS; + do + ; + while (--l); + rdtscll (t2); + rdtscll (t3); + l = LOOPS; + do + f(a1,a2,i), f(a1,a2,i), f(a1,a2,i), f(a1,a2,i); + while (--l); + rdtscll (t4); + last = curr; + curr = (t4-t3-t2+t1) / CLK / LOOPS / 4 * 1.e9; + } while ( fabs(curr-last) > 1.e-4 * (curr+last) ); + printf ("%8.2f ns\n", (curr+last) / 2 ); + } +} + +void test2 ( const char* name, ddf f ) +{ + int i; + double x; + + printf ( "\n%%%% %s\n\n", name ); + + for ( i = -1000; i <= 1000; i++ ) { + x = 1.e-3 * i; + printf ( "%5d\t%12.8f\t%12.8f\t%12.8f\n", i, f(x), (f(x+5.e-5) - f(x-5.e-5))*1.e+4, (f(x+1.e-4) + f(x-1.e-4) - 2*f(x))*5.e+7 ); + } + printf ( "%%%%\n" ); + fflush ( stdout ); +} + + +int main ( int argc, char** argv ) +{ + +#if 0 + + test2 ( "Hann", hanning ); + test2 ( "Hamm", hamming ); + test2 ( "BM", blackman ); + test2 ( "BM1",blackman1 ); + test2 ( "BM2",blackman2 ); + test2 ( "BMH N",blackmanharris_nuttall ); + test2 ( "MNH Min",blackmanharris_min4 ); + +#else + + init (); + + test ( 4, scalar04_float32 ); + test ( 4, scalar04_float32_i387 ); + test ( 4, scalar04_float32_3DNow ); + test ( 4, scalar04_float32_SIMD ); + + test ( 8, scalar08_float32 ); + test ( 8, scalar08_float32_i387 ); + test ( 8, scalar08_float32_3DNow ); + test ( 8, scalar08_float32_SIMD ); + + test ( 12, scalar12_float32 ); + test ( 12, scalar12_float32_i387 ); + test ( 12, scalar12_float32_3DNow ); + test ( 12, scalar12_float32_SIMD ); + + test ( 16, scalar16_float32 ); + test ( 16, scalar16_float32_i387 ); + test ( 16, scalar16_float32_3DNow ); + test ( 16, scalar16_float32_SIMD ); + + test ( 20, scalar20_float32 ); + test ( 20, scalar20_float32_i387 ); + test ( 20, scalar20_float32_3DNow ); + test ( 20, scalar20_float32_SIMD ); + + test ( 24, scalar24_float32 ); + test ( 24, scalar24_float32_i387 ); + test ( 24, scalar24_float32_3DNow ); + test ( 24, scalar24_float32_SIMD ); + + testn( scalar4n_float32 ); + testn( scalar4n_float32_i387 ); + testn( scalar4n_float32_3DNow ); + testn( scalar4n_float32_SIMD ); + +#endif + + return 0; +} + +/* end of scalartest.c */ diff --git a/lame-3.97/missing b/lame-3.97/missing new file mode 100644 index 0000000..894e786 --- /dev/null +++ b/lame-3.97/missing @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-06-08.21 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/mkinstalldirs b/lame-3.97/mkinstalldirs new file mode 100644 index 0000000..259dbfc --- /dev/null +++ b/lame-3.97/mkinstalldirs @@ -0,0 +1,158 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2005-06-29.22 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/mpglib/.svn/all-wcprops b/lame-3.97/mpglib/.svn/all-wcprops new file mode 100644 index 0000000..be4042d --- /dev/null +++ b/lame-3.97/mpglib/.svn/all-wcprops @@ -0,0 +1,167 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/328/monitor/trunk/lame-3.97/mpglib +END +layer2.c +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/layer2.c +END +layer3.c +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/layer3.c +END +tabinit.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/tabinit.h +END +interface.c +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/interface.c +END +decode_i386.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/decode_i386.h +END +Makefile.in +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/328/monitor/trunk/lame-3.97/mpglib/Makefile.in +END +dct64_i386.h +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/dct64_i386.h +END +layer1.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/layer1.h +END +layer2.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/layer2.h +END +layer3.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/layer3.h +END +interface.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/interface.h +END +depcomp +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/depcomp +END +mpglib_vc7.vcproj +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/mpglib_vc7.vcproj +END +README +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/README +END +l2tables.h +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/l2tables.h +END +mpg123.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/mpg123.h +END +mpglib.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/mpglib.h +END +TODO +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/TODO +END +common.c +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/common.c +END +Makefile.am +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/Makefile.am +END +huffman.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/huffman.h +END +tabinit.c +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/tabinit.c +END +decode_i386.c +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/decode_i386.c +END +mpglib_vc6.dsp +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/mpglib_vc6.dsp +END +layer1.c +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/layer1.c +END +dct64_i386.c +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/238/monitor/trunk/lame-3.97/mpglib/dct64_i386.c +END +common.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/321/monitor/trunk/lame-3.97/mpglib/common.h +END diff --git a/lame-3.97/mpglib/.svn/entries b/lame-3.97/mpglib/.svn/entries new file mode 100644 index 0000000..e86214a --- /dev/null +++ b/lame-3.97/mpglib/.svn/entries @@ -0,0 +1,946 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/lame-3.97/mpglib +http://svn.monitord.de + + + +2008-07-25T23:20:15.309116Z +328 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +layer2.c +file + + + + +2012-01-23T14:07:04.541494Z +bf4896768af9492673b361a12dc24832 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9000 + +layer3.c +file + + + + +2012-01-23T14:07:04.542490Z +319762aa86f550459a647b90c53d901a +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +48133 + +tabinit.h +file + + + + +2012-01-23T14:07:04.541494Z +c8963cfddd1ae3ac145ba72854950f03 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +955 + +interface.c +file + + + + +2012-01-23T14:07:04.542490Z +c197d825cbbdd96c9c8bcef74d627e4b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +13818 + +decode_i386.h +file + + + + +2012-01-23T14:07:04.543496Z +3c63010a76ff712bc5373206562b1036 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1195 + +Makefile.in +file + + + + +2012-01-23T14:07:04.543496Z +a54469f788974d507acd45499bba2b88 +2008-07-25T23:20:15.309116Z +328 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +18306 + +dct64_i386.h +file + + + + +2012-01-23T14:07:04.550485Z +b05c4f8c6986e714806fb86a3cd26ddf +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +911 + +layer1.h +file + + + + +2012-01-23T14:07:04.543496Z +52db2338869cc83d305491a239ebd40f +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +897 + +layer2.h +file + + + + +2012-01-23T14:07:04.551488Z +95b4daa5c0b257f16127a04a2c8a79c5 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1003 + +layer3.h +file + + + + +2012-01-23T14:07:04.551488Z +79b6eac3adc7997162d825735c5fcdbe +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1121 + +interface.h +file + + + + +2012-01-23T14:07:04.552487Z +b25433503c42d9fe47cd8599e3fd291d +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1546 + +depcomp +file + + + + +2012-01-23T14:07:04.552487Z +d7d8db17e074dcabf513d766b728993d +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +15936 + +mpglib_vc7.vcproj +file + + + + +2012-01-23T14:07:04.552487Z +5cdc2e591a7f2f754b0700840aa2b226 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +40113 + +README +file + + + + +2012-01-23T14:07:04.555483Z +1b58c3f29bf004aa2ae8dae2efad9964 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1103 + +l2tables.h +file + + + + +2012-01-23T14:07:04.555483Z +7b8fc51aabb4e0a5a2e905ccb96588a7 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +8341 + +mpg123.h +file + + + + +2012-01-23T14:07:04.555483Z +d524b8bb4325d401b7722bb3235c6fbd +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2650 + +mpglib.h +file + + + + +2012-01-23T14:07:04.556499Z +1cd83a6d38750a648511de06073c9785 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1525 + +TODO +file + + + + +2012-01-23T14:07:04.556499Z +552071d5ca49d6fee8eeb92d65de37f6 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +18 + +common.c +file + + + + +2012-01-23T14:07:04.557485Z +1f599f11a548d4430f14cd8281e11de6 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +7747 + +Makefile.am +file + + + + +2012-01-23T14:07:04.557485Z +95b48fc57e1d81b7bf5ea87f2dcdee36 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +1033 + +huffman.h +file + + + + +2012-01-23T14:07:04.557485Z +5ba9637bc79f123cc6f097fe6749b2af +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +16089 + +tabinit.c +file + + + + +2012-01-23T14:07:04.561694Z +001a49169f657928418dbaac0bef8ffc +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4722 + +decode_i386.c +file + + + + +2012-01-23T14:07:04.561694Z +b6dfac60ee93aac453ca6b80b617d1d4 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9394 + +mpglib_vc6.dsp +file + + + + +2012-01-23T14:07:04.562534Z +96ddc310e91571c88245730ec94c3f1b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +8689 + +layer1.c +file + + + + +2012-01-23T14:07:04.562534Z +adf9af057ebdc8121565afff4d78d250 +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +4190 + +dct64_i386.c +file + + + + +2012-01-23T14:07:04.562534Z +93512be46c84fa59bd60a2fd4def262b +2007-12-20T22:24:54.554753Z +238 +buebchen + + + + + + + + + + + + + + + + + + + + + +9637 + +common.h +file + + + + +2012-01-23T14:07:04.562534Z +5799a324adf302ab65c35c8caaa5a628 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1381 + diff --git a/lame-3.97/mpglib/.svn/prop-base/Makefile.in.svn-base b/lame-3.97/mpglib/.svn/prop-base/Makefile.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/Makefile.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/README.svn-base b/lame-3.97/mpglib/.svn/prop-base/README.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/README.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/mpglib/.svn/prop-base/TODO.svn-base b/lame-3.97/mpglib/.svn/prop-base/TODO.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/TODO.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/lame-3.97/mpglib/.svn/prop-base/common.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/common.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/common.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/dct64_i386.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/dct64_i386.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/dct64_i386.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/decode_i386.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/decode_i386.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/decode_i386.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/huffman.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/huffman.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/huffman.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/interface.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/interface.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/interface.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/l2tables.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/l2tables.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/l2tables.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/layer1.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/layer1.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/layer1.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/layer2.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/layer2.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/layer2.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/layer3.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/layer3.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/layer3.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/mpg123.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/mpg123.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/mpg123.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/mpglib.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/mpglib.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/mpglib.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/prop-base/tabinit.h.svn-base b/lame-3.97/mpglib/.svn/prop-base/tabinit.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/lame-3.97/mpglib/.svn/prop-base/tabinit.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/lame-3.97/mpglib/.svn/text-base/Makefile.am.svn-base b/lame-3.97/mpglib/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..2e480bc --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,55 @@ +## $Id: Makefile.am,v 1.14 2005/08/21 17:32:10 bouvigne Exp $ + +include $(top_srcdir)/Makefile.am.global + +INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame -I$(top_builddir) + +EXTRA_DIST = \ + mpglib_vc6.dsp \ + mpglib_vc7.vcproj + +DEFS = @DEFS@ @CONFIG_DEFS@ + +noinst_LTLIBRARIES = libmpgdecoder.la + +libmpgdecoder_la_SOURCES = common.c \ + dct64_i386.c \ + decode_i386.c \ + interface.c \ + layer1.c \ + layer2.c \ + layer3.c \ + tabinit.c + +noinst_HEADERS = common.h \ + dct64_i386.h \ + decode_i386.h \ + huffman.h \ + interface.h \ + l2tables.h \ + layer1.h \ + layer2.h \ + layer3.h \ + mpg123.h \ + mpglib.h \ + tabinit.h + +LCLINTFLAGS= \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +lclint.txt: ${libmpgdecoder_la_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmpgdecoder_la_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/lame-3.97/mpglib/.svn/text-base/Makefile.in.svn-base b/lame-3.97/mpglib/.svn/text-base/Makefile.in.svn-base new file mode 100644 index 0000000..4fe4ff8 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/Makefile.in.svn-base @@ -0,0 +1,541 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global TODO \ + depcomp +subdir = mpglib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libmpgdecoder_la_LIBADD = +am_libmpgdecoder_la_OBJECTS = common$U.lo dct64_i386$U.lo \ + decode_i386$U.lo interface$U.lo layer1$U.lo layer2$U.lo \ + layer3$U.lo tabinit$U.lo +libmpgdecoder_la_OBJECTS = $(am_libmpgdecoder_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libmpgdecoder_la_SOURCES) +DIST_SOURCES = $(libmpgdecoder_la_SOURCES) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame -I$(top_builddir) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + mpglib_vc6.dsp \ + mpglib_vc7.vcproj + +noinst_LTLIBRARIES = libmpgdecoder.la +libmpgdecoder_la_SOURCES = common.c \ + dct64_i386.c \ + decode_i386.c \ + interface.c \ + layer1.c \ + layer2.c \ + layer3.c \ + tabinit.c + +noinst_HEADERS = common.h \ + dct64_i386.h \ + decode_i386.h \ + huffman.h \ + interface.h \ + l2tables.h \ + layer1.h \ + layer2.h \ + layer3.h \ + mpg123.h \ + mpglib.h \ + tabinit.h + +LCLINTFLAGS = \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mpglib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mpglib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libmpgdecoder.la: $(libmpgdecoder_la_OBJECTS) $(libmpgdecoder_la_DEPENDENCIES) + $(LINK) $(libmpgdecoder_la_LDFLAGS) $(libmpgdecoder_la_OBJECTS) $(libmpgdecoder_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_i386$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decode_i386$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer1$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer2$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer3$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tabinit$U.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +common_.c: common.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/common.c; then echo $(srcdir)/common.c; else echo common.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +dct64_i386_.c: dct64_i386.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dct64_i386.c; then echo $(srcdir)/dct64_i386.c; else echo dct64_i386.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +decode_i386_.c: decode_i386.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/decode_i386.c; then echo $(srcdir)/decode_i386.c; else echo decode_i386.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +interface_.c: interface.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/interface.c; then echo $(srcdir)/interface.c; else echo interface.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +layer1_.c: layer1.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer1.c; then echo $(srcdir)/layer1.c; else echo layer1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +layer2_.c: layer2.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer2.c; then echo $(srcdir)/layer2.c; else echo layer2.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +layer3_.c: layer3.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer3.c; then echo $(srcdir)/layer3.c; else echo layer3.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +tabinit_.c: tabinit.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tabinit.c; then echo $(srcdir)/tabinit.c; else echo tabinit.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +common_.$(OBJEXT) common_.lo dct64_i386_.$(OBJEXT) dct64_i386_.lo \ +decode_i386_.$(OBJEXT) decode_i386_.lo interface_.$(OBJEXT) \ +interface_.lo layer1_.$(OBJEXT) layer1_.lo layer2_.$(OBJEXT) \ +layer2_.lo layer3_.$(OBJEXT) layer3_.lo tabinit_.$(OBJEXT) tabinit_.lo \ +: $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + + +# end global section + +lclint.txt: ${libmpgdecoder_la_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmpgdecoder_la_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/mpglib/.svn/text-base/README.svn-base b/lame-3.97/mpglib/.svn/text-base/README.svn-base new file mode 100644 index 0000000..7212bb4 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/README.svn-base @@ -0,0 +1,33 @@ +MP3 library +----------- +Version 0.2 + +This decoder is a 'light' version (thrown out all unnecessay parts) +from the mpg123 package. I made this for a company. + +Currently only Layer III is enabled to save some space. Layer I and II isn't +tested at all. The interface will not change significantly. +A backport to the mpg123 package is planed. + +compiled and tested only on Solaris 2.6 +main.c contains a simple demo application for library. + +COPYING: you may use this source under GPL terms! + +PLEASE NOTE: This software may contain patented algorithms (at least + patented in some countries). It may be not allowed to sell/use products + based on this source code in these countries. Check this out first! + +COPYRIGHT of MP3 music: + Please note, that the duplicating of copyrighted music without explicit + permission violates the rights of the owner. + +SENDING PATCHES: + Maybe I change the copyright policy (i.e. some kind of more free BSD license). + Please consider this when sending patches/changes. + +FEEDBACK: + I'm interested to here from you, when you use this package as part + of another project. + + diff --git a/lame-3.97/mpglib/.svn/text-base/TODO.svn-base b/lame-3.97/mpglib/.svn/text-base/TODO.svn-base new file mode 100644 index 0000000..da0843d --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/TODO.svn-base @@ -0,0 +1,2 @@ + +apply 'VBR' bug diff --git a/lame-3.97/mpglib/.svn/text-base/common.c.svn-base b/lame-3.97/mpglib/.svn/text-base/common.c.svn-base new file mode 100644 index 0000000..dfa96e2 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/common.c.svn-base @@ -0,0 +1,318 @@ +/* $Id: common.c,v 1.31 2004/04/14 22:15:43 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#ifdef HAVE_FCNTL_H +#include +#endif + +#ifdef macintosh +#include +#include +#else +#include +#include +#endif + +#include "common.h" + +#ifdef WITH_DMALLOC +#include +#endif + +/* In C++ the array first must be prototyped, why ? */ + +extern const int tabsel_123 [2] [3] [16]; + +const int tabsel_123 [2] [3] [16] = { + { {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,}, + {0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,}, + {0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,} }, + + { {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,}, + {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,}, + {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,} } +}; + +const long freqs[9] = { 44100, 48000, 32000, + 22050, 24000, 16000, + 11025, 12000, 8000 }; + + + +#if defined( USE_LAYER_1 ) || defined ( USE_LAYER_2 ) + real muls[27][64]; +#endif + +#if 0 +static void get_II_stuff(struct frame *fr) +{ + static const int translate [3] [2] [16] = /* char ? */ + { { { 0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,0 } , + { 0,2,2,0,0,0,1,1,1,1,1,1,1,1,1,0 } } , + { { 0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0 } , + { 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0 } } , + { { 0,3,3,3,3,3,3,0,0,0,1,1,1,1,1,0 } , + { 0,3,3,0,0,0,1,1,1,1,1,1,1,1,1,0 } } }; + + int table,sblim; + static const struct al_table2 *tables[5] = + { alloc_0, alloc_1, alloc_2, alloc_3 , alloc_4 }; + static int sblims[5] = { 27 , 30 , 8, 12 , 30 }; + + if(fr->lsf) + table = 4; + else + table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index]; + sblim = sblims[table]; + + fr->alloc = tables[table]; + fr->II_sblimit = sblim; +} +#endif + +#define HDRCMPMASK 0xfffffd00 + + +int head_check(unsigned long head,int check_layer) +{ + /* + look for a valid header. + if check_layer > 0, then require that + nLayer = check_layer. + */ + + /* bits 13-14 = layer 3 */ + int nLayer=4-((head>>17)&3); + + if( (head & 0xffe00000) != 0xffe00000) { + /* syncword */ + return FALSE; + } + +#ifndef USE_LAYER_1 + if (nLayer == 1) + return FALSE; +#endif +#ifndef USE_LAYER_2 + if (nLayer == 2) + return FALSE; +#endif + if (nLayer == 4) + return FALSE; + + if (check_layer > 0 && nLayer != check_layer) + return FALSE; + + if( ((head>>12)&0xf) == 0xf) { + /* bits 16,17,18,19 = 1111 invalid bitrate */ + return FALSE; + } + if( ((head>>10)&0x3) == 0x3 ) { + /* bits 20,21 = 11 invalid sampling freq */ + return FALSE; + } + if ((head&0x3) == 0x2 ) + /* invalid emphasis */ + return FALSE; + return TRUE; +} + + +/* + * the code a header and write the information + * into the frame structure + */ +int decode_header(struct frame *fr,unsigned long newhead) +{ + + + if( newhead & (1<<20) ) { + fr->lsf = (newhead & (1<<19)) ? 0x0 : 0x1; + fr->mpeg25 = 0; + } + else { + fr->lsf = 1; + fr->mpeg25 = 1; + } + + + fr->lay = 4-((newhead>>17)&3); + if( ((newhead>>10)&0x3) == 0x3) { + fprintf(stderr,"Stream error\n"); + exit(1); + } + if(fr->mpeg25) { + fr->sampling_frequency = 6 + ((newhead>>10)&0x3); + } + else + fr->sampling_frequency = ((newhead>>10)&0x3) + (fr->lsf*3); + + fr->error_protection = ((newhead>>16)&0x1)^0x1; + + if(fr->mpeg25) /* allow Bitrate change for 2.5 ... */ + fr->bitrate_index = ((newhead>>12)&0xf); + + fr->bitrate_index = ((newhead>>12)&0xf); + fr->padding = ((newhead>>9)&0x1); + fr->extension = ((newhead>>8)&0x1); + fr->mode = ((newhead>>6)&0x3); + fr->mode_ext = ((newhead>>4)&0x3); + fr->copyright = ((newhead>>3)&0x1); + fr->original = ((newhead>>2)&0x1); + fr->emphasis = newhead & 0x3; + + fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2; + + switch(fr->lay) + { +#ifdef USE_LAYER_1 + case 1: + fr->framesize = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000; + fr->framesize /= freqs[fr->sampling_frequency]; + fr->framesize = ((fr->framesize+fr->padding)<<2)-4; + fr->down_sample=0; + fr->down_sample_sblimit = SBLIMIT>>(fr->down_sample); + break; +#endif +#ifdef USE_LAYER_2 + case 2: + fr->framesize = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000; + fr->framesize /= freqs[fr->sampling_frequency]; + fr->framesize += fr->padding - 4; + fr->down_sample=0; + fr->down_sample_sblimit = SBLIMIT>>(fr->down_sample); + break; +#endif + case 3: +#if 0 + fr->do_layer = do_layer3; + if(fr->lsf) + ssize = (fr->stereo == 1) ? 9 : 17; + else + ssize = (fr->stereo == 1) ? 17 : 32; +#endif + +#if 0 + if(fr->error_protection) + ssize += 2; +#endif + if (fr->bitrate_index==0) + fr->framesize=0; + else{ + fr->framesize = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000; + fr->framesize /= freqs[fr->sampling_frequency]<<(fr->lsf); + fr->framesize = fr->framesize + fr->padding - 4; + } + break; + default: + fprintf(stderr,"Sorry, layer %d not supported\n",fr->lay); + return (0); + } + /* print_header(fr); */ + + return 1; +} + + +#if 1 +void print_header(struct frame *fr) +{ + static const char *modes[4] = { "Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel" }; + static const char *layers[4] = { "Unknown" , "I", "II", "III" }; + + fprintf(stderr,"MPEG %s, Layer: %s, Freq: %ld, mode: %s, modext: %d, BPF : %d\n", + fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), + layers[fr->lay],freqs[fr->sampling_frequency], + modes[fr->mode],fr->mode_ext,fr->framesize+4); + fprintf(stderr,"Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n", + fr->stereo,fr->copyright?"Yes":"No", + fr->original?"Yes":"No",fr->error_protection?"Yes":"No", + fr->emphasis); + fprintf(stderr,"Bitrate: %d Kbits/s, Extension value: %d\n", + tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index],fr->extension); +} + +void print_header_compact(struct frame *fr) +{ + static const char *modes[4] = { "stereo", "joint-stereo", "dual-channel", "mono" }; + static const char *layers[4] = { "Unknown" , "I", "II", "III" }; + + fprintf(stderr,"MPEG %s layer %s, %d kbit/s, %ld Hz %s\n", + fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), + layers[fr->lay], + tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index], + freqs[fr->sampling_frequency], modes[fr->mode]); +} + +#endif + +unsigned int getbits(PMPSTR mp, int number_of_bits) +{ + unsigned long rval; + + if (number_of_bits <= 0 || !mp->wordpointer) + return 0; + + { + rval = mp->wordpointer[0]; + rval <<= 8; + rval |= mp->wordpointer[1]; + rval <<= 8; + rval |= mp->wordpointer[2]; + rval <<= mp->bitindex; + rval &= 0xffffff; + + mp->bitindex += number_of_bits; + + rval >>= (24-number_of_bits); + + mp->wordpointer += (mp->bitindex>>3); + mp->bitindex &= 7; + } + return rval; +} + +unsigned int getbits_fast(PMPSTR mp, int number_of_bits) +{ + unsigned long rval; + + { + rval = mp->wordpointer[0]; + rval <<= 8; + rval |= mp->wordpointer[1]; + rval <<= mp->bitindex; + rval &= 0xffff; + mp->bitindex += number_of_bits; + + rval >>= (16-number_of_bits); + + mp->wordpointer += (mp->bitindex>>3); + mp->bitindex &= 7; + } + return rval; +} + + +int set_pointer( PMPSTR mp, long backstep) +{ + unsigned char *bsbufold; + + if(mp->fsizeold < 0 && backstep > 0) { + fprintf(stderr,"Can't step back %ld!\n",backstep); + return MP3_ERR; + } + bsbufold = mp->bsspace[1-mp->bsnum] + 512; + mp->wordpointer -= backstep; + if (backstep) + memcpy(mp->wordpointer,bsbufold+mp->fsizeold-backstep,(size_t)backstep); + mp->bitindex = 0; + return MP3_OK; +} + diff --git a/lame-3.97/mpglib/.svn/text-base/common.h.svn-base b/lame-3.97/mpglib/.svn/text-base/common.h.svn-base new file mode 100644 index 0000000..56524bc --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/common.h.svn-base @@ -0,0 +1,43 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + + +#ifndef COMMON_H_INCLUDED +#define COMMON_H_INCLUDED + +#include "mpg123.h" +#include "mpglib.h" + +extern const int tabsel_123[2][3][16]; +extern const long freqs[9]; + + +#if defined( USE_LAYER_1 ) || defined ( USE_LAYER_2 ) + extern real muls[27][64]; +#endif + +int head_check(unsigned long head,int check_layer); +int decode_header(struct frame *fr,unsigned long newhead); +void print_header(struct frame *fr); +void print_header_compact(struct frame *fr); +unsigned int getbits(PMPSTR mp, int number_of_bits); +unsigned int getbits_fast(PMPSTR mp, int number_of_bits); +int set_pointer( PMPSTR mp, long backstep); + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/dct64_i386.c.svn-base b/lame-3.97/mpglib/.svn/text-base/dct64_i386.c.svn-base new file mode 100644 index 0000000..0c90a2d --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/dct64_i386.c.svn-base @@ -0,0 +1,325 @@ +/* + * Discrete Cosine Tansform (DCT) for subband synthesis + * optimized for machines with no auto-increment. + * The performance is highly compiler dependend. Maybe + * the dct64.c version for 'normal' processor may be faster + * even for Intel processors. + */ + +/* $Id: dct64_i386.c,v 1.10 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "dct64_i386.h" +#include "tabinit.h" + +#ifdef WITH_DMALLOC +#include +#endif + +static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) +{ + + { + real *costab = pnts[0]; + + b1[0x00] = samples[0x00] + samples[0x1F]; + b1[0x1F] = (samples[0x00] - samples[0x1F]) * costab[0x0]; + + b1[0x01] = samples[0x01] + samples[0x1E]; + b1[0x1E] = (samples[0x01] - samples[0x1E]) * costab[0x1]; + + b1[0x02] = samples[0x02] + samples[0x1D]; + b1[0x1D] = (samples[0x02] - samples[0x1D]) * costab[0x2]; + + b1[0x03] = samples[0x03] + samples[0x1C]; + b1[0x1C] = (samples[0x03] - samples[0x1C]) * costab[0x3]; + + b1[0x04] = samples[0x04] + samples[0x1B]; + b1[0x1B] = (samples[0x04] - samples[0x1B]) * costab[0x4]; + + b1[0x05] = samples[0x05] + samples[0x1A]; + b1[0x1A] = (samples[0x05] - samples[0x1A]) * costab[0x5]; + + b1[0x06] = samples[0x06] + samples[0x19]; + b1[0x19] = (samples[0x06] - samples[0x19]) * costab[0x6]; + + b1[0x07] = samples[0x07] + samples[0x18]; + b1[0x18] = (samples[0x07] - samples[0x18]) * costab[0x7]; + + b1[0x08] = samples[0x08] + samples[0x17]; + b1[0x17] = (samples[0x08] - samples[0x17]) * costab[0x8]; + + b1[0x09] = samples[0x09] + samples[0x16]; + b1[0x16] = (samples[0x09] - samples[0x16]) * costab[0x9]; + + b1[0x0A] = samples[0x0A] + samples[0x15]; + b1[0x15] = (samples[0x0A] - samples[0x15]) * costab[0xA]; + + b1[0x0B] = samples[0x0B] + samples[0x14]; + b1[0x14] = (samples[0x0B] - samples[0x14]) * costab[0xB]; + + b1[0x0C] = samples[0x0C] + samples[0x13]; + b1[0x13] = (samples[0x0C] - samples[0x13]) * costab[0xC]; + + b1[0x0D] = samples[0x0D] + samples[0x12]; + b1[0x12] = (samples[0x0D] - samples[0x12]) * costab[0xD]; + + b1[0x0E] = samples[0x0E] + samples[0x11]; + b1[0x11] = (samples[0x0E] - samples[0x11]) * costab[0xE]; + + b1[0x0F] = samples[0x0F] + samples[0x10]; + b1[0x10] = (samples[0x0F] - samples[0x10]) * costab[0xF]; + } + + + { + real *costab = pnts[1]; + + b2[0x00] = b1[0x00] + b1[0x0F]; + b2[0x0F] = (b1[0x00] - b1[0x0F]) * costab[0]; + b2[0x01] = b1[0x01] + b1[0x0E]; + b2[0x0E] = (b1[0x01] - b1[0x0E]) * costab[1]; + b2[0x02] = b1[0x02] + b1[0x0D]; + b2[0x0D] = (b1[0x02] - b1[0x0D]) * costab[2]; + b2[0x03] = b1[0x03] + b1[0x0C]; + b2[0x0C] = (b1[0x03] - b1[0x0C]) * costab[3]; + b2[0x04] = b1[0x04] + b1[0x0B]; + b2[0x0B] = (b1[0x04] - b1[0x0B]) * costab[4]; + b2[0x05] = b1[0x05] + b1[0x0A]; + b2[0x0A] = (b1[0x05] - b1[0x0A]) * costab[5]; + b2[0x06] = b1[0x06] + b1[0x09]; + b2[0x09] = (b1[0x06] - b1[0x09]) * costab[6]; + b2[0x07] = b1[0x07] + b1[0x08]; + b2[0x08] = (b1[0x07] - b1[0x08]) * costab[7]; + + b2[0x10] = b1[0x10] + b1[0x1F]; + b2[0x1F] = (b1[0x1F] - b1[0x10]) * costab[0]; + b2[0x11] = b1[0x11] + b1[0x1E]; + b2[0x1E] = (b1[0x1E] - b1[0x11]) * costab[1]; + b2[0x12] = b1[0x12] + b1[0x1D]; + b2[0x1D] = (b1[0x1D] - b1[0x12]) * costab[2]; + b2[0x13] = b1[0x13] + b1[0x1C]; + b2[0x1C] = (b1[0x1C] - b1[0x13]) * costab[3]; + b2[0x14] = b1[0x14] + b1[0x1B]; + b2[0x1B] = (b1[0x1B] - b1[0x14]) * costab[4]; + b2[0x15] = b1[0x15] + b1[0x1A]; + b2[0x1A] = (b1[0x1A] - b1[0x15]) * costab[5]; + b2[0x16] = b1[0x16] + b1[0x19]; + b2[0x19] = (b1[0x19] - b1[0x16]) * costab[6]; + b2[0x17] = b1[0x17] + b1[0x18]; + b2[0x18] = (b1[0x18] - b1[0x17]) * costab[7]; + } + + { + real *costab = pnts[2]; + + b1[0x00] = b2[0x00] + b2[0x07]; + b1[0x07] = (b2[0x00] - b2[0x07]) * costab[0]; + b1[0x01] = b2[0x01] + b2[0x06]; + b1[0x06] = (b2[0x01] - b2[0x06]) * costab[1]; + b1[0x02] = b2[0x02] + b2[0x05]; + b1[0x05] = (b2[0x02] - b2[0x05]) * costab[2]; + b1[0x03] = b2[0x03] + b2[0x04]; + b1[0x04] = (b2[0x03] - b2[0x04]) * costab[3]; + + b1[0x08] = b2[0x08] + b2[0x0F]; + b1[0x0F] = (b2[0x0F] - b2[0x08]) * costab[0]; + b1[0x09] = b2[0x09] + b2[0x0E]; + b1[0x0E] = (b2[0x0E] - b2[0x09]) * costab[1]; + b1[0x0A] = b2[0x0A] + b2[0x0D]; + b1[0x0D] = (b2[0x0D] - b2[0x0A]) * costab[2]; + b1[0x0B] = b2[0x0B] + b2[0x0C]; + b1[0x0C] = (b2[0x0C] - b2[0x0B]) * costab[3]; + + b1[0x10] = b2[0x10] + b2[0x17]; + b1[0x17] = (b2[0x10] - b2[0x17]) * costab[0]; + b1[0x11] = b2[0x11] + b2[0x16]; + b1[0x16] = (b2[0x11] - b2[0x16]) * costab[1]; + b1[0x12] = b2[0x12] + b2[0x15]; + b1[0x15] = (b2[0x12] - b2[0x15]) * costab[2]; + b1[0x13] = b2[0x13] + b2[0x14]; + b1[0x14] = (b2[0x13] - b2[0x14]) * costab[3]; + + b1[0x18] = b2[0x18] + b2[0x1F]; + b1[0x1F] = (b2[0x1F] - b2[0x18]) * costab[0]; + b1[0x19] = b2[0x19] + b2[0x1E]; + b1[0x1E] = (b2[0x1E] - b2[0x19]) * costab[1]; + b1[0x1A] = b2[0x1A] + b2[0x1D]; + b1[0x1D] = (b2[0x1D] - b2[0x1A]) * costab[2]; + b1[0x1B] = b2[0x1B] + b2[0x1C]; + b1[0x1C] = (b2[0x1C] - b2[0x1B]) * costab[3]; + } + + { + real const cos0 = pnts[3][0]; + real const cos1 = pnts[3][1]; + + b2[0x00] = b1[0x00] + b1[0x03]; + b2[0x03] = (b1[0x00] - b1[0x03]) * cos0; + b2[0x01] = b1[0x01] + b1[0x02]; + b2[0x02] = (b1[0x01] - b1[0x02]) * cos1; + + b2[0x04] = b1[0x04] + b1[0x07]; + b2[0x07] = (b1[0x07] - b1[0x04]) * cos0; + b2[0x05] = b1[0x05] + b1[0x06]; + b2[0x06] = (b1[0x06] - b1[0x05]) * cos1; + + b2[0x08] = b1[0x08] + b1[0x0B]; + b2[0x0B] = (b1[0x08] - b1[0x0B]) * cos0; + b2[0x09] = b1[0x09] + b1[0x0A]; + b2[0x0A] = (b1[0x09] - b1[0x0A]) * cos1; + + b2[0x0C] = b1[0x0C] + b1[0x0F]; + b2[0x0F] = (b1[0x0F] - b1[0x0C]) * cos0; + b2[0x0D] = b1[0x0D] + b1[0x0E]; + b2[0x0E] = (b1[0x0E] - b1[0x0D]) * cos1; + + b2[0x10] = b1[0x10] + b1[0x13]; + b2[0x13] = (b1[0x10] - b1[0x13]) * cos0; + b2[0x11] = b1[0x11] + b1[0x12]; + b2[0x12] = (b1[0x11] - b1[0x12]) * cos1; + + b2[0x14] = b1[0x14] + b1[0x17]; + b2[0x17] = (b1[0x17] - b1[0x14]) * cos0; + b2[0x15] = b1[0x15] + b1[0x16]; + b2[0x16] = (b1[0x16] - b1[0x15]) * cos1; + + b2[0x18] = b1[0x18] + b1[0x1B]; + b2[0x1B] = (b1[0x18] - b1[0x1B]) * cos0; + b2[0x19] = b1[0x19] + b1[0x1A]; + b2[0x1A] = (b1[0x19] - b1[0x1A]) * cos1; + + b2[0x1C] = b1[0x1C] + b1[0x1F]; + b2[0x1F] = (b1[0x1F] - b1[0x1C]) * cos0; + b2[0x1D] = b1[0x1D] + b1[0x1E]; + b2[0x1E] = (b1[0x1E] - b1[0x1D]) * cos1; + } + + { + real const cos0 = pnts[4][0]; + + b1[0x00] = b2[0x00] + b2[0x01]; + b1[0x01] = (b2[0x00] - b2[0x01]) * cos0; + b1[0x02] = b2[0x02] + b2[0x03]; + b1[0x03] = (b2[0x03] - b2[0x02]) * cos0; + b1[0x02] += b1[0x03]; + + b1[0x04] = b2[0x04] + b2[0x05]; + b1[0x05] = (b2[0x04] - b2[0x05]) * cos0; + b1[0x06] = b2[0x06] + b2[0x07]; + b1[0x07] = (b2[0x07] - b2[0x06]) * cos0; + b1[0x06] += b1[0x07]; + b1[0x04] += b1[0x06]; + b1[0x06] += b1[0x05]; + b1[0x05] += b1[0x07]; + + b1[0x08] = b2[0x08] + b2[0x09]; + b1[0x09] = (b2[0x08] - b2[0x09]) * cos0; + b1[0x0A] = b2[0x0A] + b2[0x0B]; + b1[0x0B] = (b2[0x0B] - b2[0x0A]) * cos0; + b1[0x0A] += b1[0x0B]; + + b1[0x0C] = b2[0x0C] + b2[0x0D]; + b1[0x0D] = (b2[0x0C] - b2[0x0D]) * cos0; + b1[0x0E] = b2[0x0E] + b2[0x0F]; + b1[0x0F] = (b2[0x0F] - b2[0x0E]) * cos0; + b1[0x0E] += b1[0x0F]; + b1[0x0C] += b1[0x0E]; + b1[0x0E] += b1[0x0D]; + b1[0x0D] += b1[0x0F]; + + b1[0x10] = b2[0x10] + b2[0x11]; + b1[0x11] = (b2[0x10] - b2[0x11]) * cos0; + b1[0x12] = b2[0x12] + b2[0x13]; + b1[0x13] = (b2[0x13] - b2[0x12]) * cos0; + b1[0x12] += b1[0x13]; + + b1[0x14] = b2[0x14] + b2[0x15]; + b1[0x15] = (b2[0x14] - b2[0x15]) * cos0; + b1[0x16] = b2[0x16] + b2[0x17]; + b1[0x17] = (b2[0x17] - b2[0x16]) * cos0; + b1[0x16] += b1[0x17]; + b1[0x14] += b1[0x16]; + b1[0x16] += b1[0x15]; + b1[0x15] += b1[0x17]; + + b1[0x18] = b2[0x18] + b2[0x19]; + b1[0x19] = (b2[0x18] - b2[0x19]) * cos0; + b1[0x1A] = b2[0x1A] + b2[0x1B]; + b1[0x1B] = (b2[0x1B] - b2[0x1A]) * cos0; + b1[0x1A] += b1[0x1B]; + + b1[0x1C] = b2[0x1C] + b2[0x1D]; + b1[0x1D] = (b2[0x1C] - b2[0x1D]) * cos0; + b1[0x1E] = b2[0x1E] + b2[0x1F]; + b1[0x1F] = (b2[0x1F] - b2[0x1E]) * cos0; + b1[0x1E] += b1[0x1F]; + b1[0x1C] += b1[0x1E]; + b1[0x1E] += b1[0x1D]; + b1[0x1D] += b1[0x1F]; + } + + out0[0x10*16] = b1[0x00]; + out0[0x10*12] = b1[0x04]; + out0[0x10* 8] = b1[0x02]; + out0[0x10* 4] = b1[0x06]; + out0[0x10* 0] = b1[0x01]; + out1[0x10* 0] = b1[0x01]; + out1[0x10* 4] = b1[0x05]; + out1[0x10* 8] = b1[0x03]; + out1[0x10*12] = b1[0x07]; + + b1[0x08] += b1[0x0C]; + out0[0x10*14] = b1[0x08]; + b1[0x0C] += b1[0x0a]; + out0[0x10*10] = b1[0x0C]; + b1[0x0A] += b1[0x0E]; + out0[0x10* 6] = b1[0x0A]; + b1[0x0E] += b1[0x09]; + out0[0x10* 2] = b1[0x0E]; + b1[0x09] += b1[0x0D]; + out1[0x10* 2] = b1[0x09]; + b1[0x0D] += b1[0x0B]; + out1[0x10* 6] = b1[0x0D]; + b1[0x0B] += b1[0x0F]; + out1[0x10*10] = b1[0x0B]; + out1[0x10*14] = b1[0x0F]; + + b1[0x18] += b1[0x1C]; + out0[0x10*15] = b1[0x10] + b1[0x18]; + out0[0x10*13] = b1[0x18] + b1[0x14]; + b1[0x1C] += b1[0x1a]; + out0[0x10*11] = b1[0x14] + b1[0x1C]; + out0[0x10* 9] = b1[0x1C] + b1[0x12]; + b1[0x1A] += b1[0x1E]; + out0[0x10* 7] = b1[0x12] + b1[0x1A]; + out0[0x10* 5] = b1[0x1A] + b1[0x16]; + b1[0x1E] += b1[0x19]; + out0[0x10* 3] = b1[0x16] + b1[0x1E]; + out0[0x10* 1] = b1[0x1E] + b1[0x11]; + b1[0x19] += b1[0x1D]; + out1[0x10* 1] = b1[0x11] + b1[0x19]; + out1[0x10* 3] = b1[0x19] + b1[0x15]; + b1[0x1D] += b1[0x1B]; + out1[0x10* 5] = b1[0x15] + b1[0x1D]; + out1[0x10* 7] = b1[0x1D] + b1[0x13]; + b1[0x1B] += b1[0x1F]; + out1[0x10* 9] = b1[0x13] + b1[0x1B]; + out1[0x10*11] = b1[0x1B] + b1[0x17]; + out1[0x10*13] = b1[0x17] + b1[0x1F]; + out1[0x10*15] = b1[0x1F]; +} + +/* + * the call via dct64 is a trick to force GCC to use + * (new) registers for the b1,b2 pointer to the bufs[xx] field + */ +void dct64( real *a,real *b,real *c) +{ + real bufs[0x40]; + dct64_1(a,b,bufs,bufs+0x20,c); +} + diff --git a/lame-3.97/mpglib/.svn/text-base/dct64_i386.h.svn-base b/lame-3.97/mpglib/.svn/text-base/dct64_i386.h.svn-base new file mode 100644 index 0000000..72af8b5 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/dct64_i386.h.svn-base @@ -0,0 +1,28 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef MPGLIB_DCT64_I386_H_INCLUDED +#define MPGLIB_DCT64_I386_H_INCLUDED + +#include "common.h" + +void dct64( real *a,real *b,real *c); + + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/decode_i386.c.svn-base b/lame-3.97/mpglib/.svn/text-base/decode_i386.c.svn-base new file mode 100644 index 0000000..80c4e15 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/decode_i386.c.svn-base @@ -0,0 +1,205 @@ +/* + * Mpeg Layer-1,2,3 audio decoder + * ------------------------------ + * copyright (c) 1995,1996,1997 by Michael Hipp, All rights reserved. + * modified by Aleksander Korzynski (Olcios) '2003 + * See also 'README' + * + * slighlty optimized for machines without autoincrement/decrement. + * The performance is highly compiler dependend. Maybe + * the decode.c version for 'normal' processor may be faster + * even for Intel processors. + */ + +/* $Id: decode_i386.c,v 1.17 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef STDC_HEADERS +# include +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#if defined(__riscos__) && defined(FPA10) +#include "ymath.h" +#else +#include +#endif + +#include "decode_i386.h" +#include "dct64_i386.h" +#include "tabinit.h" + +#ifdef WITH_DMALLOC +#include +#endif + + + /* old WRITE_SAMPLE_CLIPPED */ +#define WRITE_SAMPLE_CLIPPED(samples,sum,clip) \ + if( (sum) > 32767.0) { *(samples) = 0x7fff; (clip)++; } \ + else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \ + else { *(samples) = ((sum)>0 ? (sum)+0.5 : (sum)-0.5) ; } + +#define WRITE_SAMPLE_UNCLIPPED(samples,sum,clip) \ + *samples = sum; + + + /* versions: clipped (when TYPE == short) and unclipped (when TYPE == real) of synth_1to1_mono* functions */ +#define SYNTH_1TO1_MONO_CLIPCHOICE(TYPE,SYNTH_1TO1) \ + TYPE samples_tmp[64]; \ + TYPE *tmp1 = samples_tmp; \ + int i,ret; \ + int pnt1 = 0; \ + \ + ret = SYNTH_1TO1 (mp,bandPtr,0,(unsigned char *) samples_tmp,&pnt1); \ + out += *pnt; \ + \ + for(i=0;i<32;i++) { \ + *( (TYPE *) out) = *tmp1; \ + out += sizeof(TYPE); \ + tmp1 += 2; \ + } \ + *pnt += 32*sizeof(TYPE); \ + \ + return ret; + + +int synth_1to1_mono(PMPSTR mp, real *bandPtr,unsigned char *out,int *pnt) +{ + SYNTH_1TO1_MONO_CLIPCHOICE(short,synth_1to1) +} + +int synth_1to1_mono_unclipped(PMPSTR mp, real *bandPtr, unsigned char *out,int *pnt) +{ + SYNTH_1TO1_MONO_CLIPCHOICE(real,synth_1to1_unclipped) +} + +/* versions: clipped (when TYPE == short) and unclipped (when TYPE == real) of synth_1to1* functions */ +#define SYNTH_1TO1_CLIPCHOICE(TYPE,WRITE_SAMPLE) \ + static const int step = 2; \ + int bo; \ + TYPE *samples = (TYPE *) (out + *pnt); \ + \ + real *b0,(*buf)[0x110]; \ + int clip = 0; \ + int bo1; \ + \ + bo = mp->synth_bo; \ + \ + if(!channel) { \ + bo--; \ + bo &= 0xf; \ + buf = mp->synth_buffs[0]; \ + } \ + else { \ + samples++; \ + buf = mp->synth_buffs[1]; \ + } \ + \ + if(bo & 0x1) { \ + b0 = buf[0]; \ + bo1 = bo; \ + dct64(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); \ + } \ + else { \ + b0 = buf[1]; \ + bo1 = bo+1; \ + dct64(buf[0]+bo,buf[1]+bo+1,bandPtr); \ + } \ + \ + mp->synth_bo = bo; \ + \ + { \ + int j; \ + real *window = decwin + 16 - bo1; \ + \ + for (j=16;j;j--,b0+=0x10,window+=0x20,samples+=step) \ + { \ + real sum; \ + sum = window[0x0] * b0[0x0]; \ + sum -= window[0x1] * b0[0x1]; \ + sum += window[0x2] * b0[0x2]; \ + sum -= window[0x3] * b0[0x3]; \ + sum += window[0x4] * b0[0x4]; \ + sum -= window[0x5] * b0[0x5]; \ + sum += window[0x6] * b0[0x6]; \ + sum -= window[0x7] * b0[0x7]; \ + sum += window[0x8] * b0[0x8]; \ + sum -= window[0x9] * b0[0x9]; \ + sum += window[0xA] * b0[0xA]; \ + sum -= window[0xB] * b0[0xB]; \ + sum += window[0xC] * b0[0xC]; \ + sum -= window[0xD] * b0[0xD]; \ + sum += window[0xE] * b0[0xE]; \ + sum -= window[0xF] * b0[0xF]; \ + \ + WRITE_SAMPLE (samples,sum,clip); \ + } \ + \ + { \ + real sum; \ + sum = window[0x0] * b0[0x0]; \ + sum += window[0x2] * b0[0x2]; \ + sum += window[0x4] * b0[0x4]; \ + sum += window[0x6] * b0[0x6]; \ + sum += window[0x8] * b0[0x8]; \ + sum += window[0xA] * b0[0xA]; \ + sum += window[0xC] * b0[0xC]; \ + sum += window[0xE] * b0[0xE]; \ + WRITE_SAMPLE (samples,sum,clip); \ + b0-=0x10,window-=0x20,samples+=step; \ + } \ + window += bo1<<1; \ + \ + for (j=15;j;j--,b0-=0x10,window-=0x20,samples+=step) \ + { \ + real sum; \ + sum = -window[-0x1] * b0[0x0]; \ + sum -= window[-0x2] * b0[0x1]; \ + sum -= window[-0x3] * b0[0x2]; \ + sum -= window[-0x4] * b0[0x3]; \ + sum -= window[-0x5] * b0[0x4]; \ + sum -= window[-0x6] * b0[0x5]; \ + sum -= window[-0x7] * b0[0x6]; \ + sum -= window[-0x8] * b0[0x7]; \ + sum -= window[-0x9] * b0[0x8]; \ + sum -= window[-0xA] * b0[0x9]; \ + sum -= window[-0xB] * b0[0xA]; \ + sum -= window[-0xC] * b0[0xB]; \ + sum -= window[-0xD] * b0[0xC]; \ + sum -= window[-0xE] * b0[0xD]; \ + sum -= window[-0xF] * b0[0xE]; \ + sum -= window[-0x0] * b0[0xF]; \ + \ + WRITE_SAMPLE (samples,sum,clip); \ + } \ + } \ + *pnt += 64*sizeof(TYPE); \ + \ + return clip; + + +int synth_1to1(PMPSTR mp, real *bandPtr,int channel,unsigned char *out, int *pnt) +{ + SYNTH_1TO1_CLIPCHOICE(short,WRITE_SAMPLE_CLIPPED) +} + +int synth_1to1_unclipped(PMPSTR mp, real *bandPtr,int channel, unsigned char *out, int *pnt) +{ + SYNTH_1TO1_CLIPCHOICE(real,WRITE_SAMPLE_UNCLIPPED) +} + + diff --git a/lame-3.97/mpglib/.svn/text-base/decode_i386.h.svn-base b/lame-3.97/mpglib/.svn/text-base/decode_i386.h.svn-base new file mode 100644 index 0000000..a45cfa3 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/decode_i386.h.svn-base @@ -0,0 +1,31 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef DECODE_I386_H_INCLUDED +#define DECODE_I386_H_INCLUDED + +#include "common.h" + +int synth_1to1_mono(PMPSTR mp, real *bandPtr,unsigned char *out,int *pnt); +int synth_1to1(PMPSTR mp, real *bandPtr,int channel,unsigned char *out,int *pnt); + +int synth_1to1_mono_unclipped(PMPSTR mp, real *bandPtr,unsigned char *out,int *pnt); +int synth_1to1_unclipped(PMPSTR mp, real *bandPtr,int channel,unsigned char *out,int *pnt); + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/depcomp.svn-base b/lame-3.97/mpglib/.svn/text-base/depcomp.svn-base new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/depcomp.svn-base @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/mpglib/.svn/text-base/huffman.h.svn-base b/lame-3.97/mpglib/.svn/text-base/huffman.h.svn-base new file mode 100644 index 0000000..da08833 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/huffman.h.svn-base @@ -0,0 +1,333 @@ +/* + * huffman tables ... recalcualted to work with my optimzed + * decoder scheme (MH) + * + * probably we could save a few bytes of memory, because the + * smaller tables are often the part of a bigger table + */ + +struct newhuff +{ + const unsigned int linbits; + const short * const table; +}; + +static const short tab0[] = +{ + 0 +}; + +static const short tab1[] = +{ + -5, -3, -1, 17, 1, 16, 0 +}; + +static const short tab2[] = +{ + -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1, + 16, 0 +}; + +static const short tab3[] = +{ + -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1, + 1, 0 +}; + +static const short tab5[] = +{ + -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19, + 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16, + 0 +}; + +static const short tab6[] = +{ + -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19, + 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16, + 0 +}; + +static const short tab7[] = +{ + -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83, + -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1, + 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7, + -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18, + -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0 +}; + +static const short tab8[] = +{ + -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83, + -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52, + 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4, + 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1, + 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0 +}; + +static const short tab9[] = +{ + -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1, + 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67, + -1, 80, 4, -7, -3, -1, 36, 66, -1, 51, 64, -1, 20, 65, -5, + -3, -1, 35, 50, 19, -1, 49, -1, 3, 48, -5, -3, -1, 34, 2, + 18, -1, 33, 32, -3, -1, 17, 1, -1, 16, 0 +}; + +static const short tab10[] = +{ +-125,-121,-111, -83, -55, -35, -21, -13, -7, -3, -1, 119, 103, -1, 118, + 87, -3, -1, 117, 102, 71, -3, -1, 116, 86, -1, 101, 55, -9, -3, + -1, 115, 70, -3, -1, 85, 84, 99, -1, 39, 114, -11, -5, -3, -1, + 100, 7, 112, -1, 98, -1, 69, 53, -5, -1, 6, -1, 83, 68, 23, + -17, -5, -1, 113, -1, 54, 38, -5, -3, -1, 37, 82, 21, -1, 81, + -1, 52, 67, -3, -1, 22, 97, -1, 96, -1, 5, 80, -19, -11, -7, + -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1, + 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1, + 2, 32, 17, -1, 1, 16, 0 +}; + +static const short tab11[] = +{ +-121,-113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117, + -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55, + -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114, + -1, 100, 7, -5, -1, 113, -1, 23, 112, -3, -1, 54, 99, -1, 96, + -1, 68, 37, -13, -7, -5, -3, -1, 82, 5, 21, 98, -3, -1, 38, + 6, 22, -5, -1, 97, -1, 81, 52, -5, -1, 80, -1, 67, 51, -1, + 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50, + -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2, + 32, 17, -3, -1, 1, 16, 0 +}; + +static const short tab12[] = +{ +-115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87, + 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115, + 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7, + 112, -1, 54, 99, -13, -9, -3, -1, 69, 84, -1, 68, -1, 6, 5, + -1, 38, 98, -5, -1, 97, -1, 22, 96, -3, -1, 53, 83, -1, 37, + 82, -17, -7, -3, -1, 21, 81, -1, 52, 67, -5, -3, -1, 80, 4, + 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3, + -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1, + 2, 32, 0, 17, -1, 1, 16 +}; + +static const short tab13[] = +{ +-509,-503,-475,-405,-333,-265,-205,-153,-115, -83, -53, -35, -21, -13, -9, + -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238, + 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1, + 236, 221, -9, -5, -3, -1, 250, 205, 190, -1, 235, 159, -3, -1, 249, + 234, -1, 189, 219, -17, -9, -3, -1, 143, 248, -1, 204, -1, 174, 158, + -5, -1, 142, -1, 127, 126, 247, -5, -1, 218, -1, 173, 188, -3, -1, + 203, 246, 111, -15, -7, -3, -1, 232, 95, -1, 157, 217, -3, -1, 245, + 231, -1, 172, 187, -9, -3, -1, 79, 244, -3, -1, 202, 230, 243, -1, + 63, -1, 141, 216, -21, -9, -3, -1, 47, 242, -3, -1, 110, 156, 15, + -5, -3, -1, 201, 94, 171, -3, -1, 125, 215, 78, -11, -5, -3, -1, + 200, 214, 62, -1, 185, -1, 155, 170, -1, 31, 241, -23, -13, -5, -1, + 240, -1, 186, 229, -3, -1, 228, 140, -1, 109, 227, -5, -1, 226, -1, + 46, 14, -1, 30, 225, -15, -7, -3, -1, 224, 93, -1, 213, 124, -3, + -1, 199, 77, -1, 139, 184, -7, -3, -1, 212, 154, -1, 169, 108, -1, + 198, 61, -37, -21, -9, -5, -3, -1, 211, 123, 45, -1, 210, 29, -5, + -1, 183, -1, 92, 197, -3, -1, 153, 122, 195, -7, -5, -3, -1, 167, + 151, 75, 209, -3, -1, 13, 208, -1, 138, 168, -11, -7, -3, -1, 76, + 196, -1, 107, 182, -1, 60, 44, -3, -1, 194, 91, -3, -1, 181, 137, + 28, -43, -23, -11, -5, -1, 193, -1, 152, 12, -1, 192, -1, 180, 106, + -5, -3, -1, 166, 121, 59, -1, 179, -1, 136, 90, -11, -5, -1, 43, + -1, 165, 105, -1, 164, -1, 120, 135, -5, -1, 148, -1, 119, 118, 178, + -11, -3, -1, 27, 177, -3, -1, 11, 176, -1, 150, 74, -7, -3, -1, + 58, 163, -1, 89, 149, -1, 42, 162, -47, -23, -9, -3, -1, 26, 161, + -3, -1, 10, 104, 160, -5, -3, -1, 134, 73, 147, -3, -1, 57, 88, + -1, 133, 103, -9, -3, -1, 41, 146, -3, -1, 87, 117, 56, -5, -1, + 131, -1, 102, 71, -3, -1, 116, 86, -1, 101, 115, -11, -3, -1, 25, + 145, -3, -1, 9, 144, -1, 72, 132, -7, -5, -1, 114, -1, 70, 100, + 40, -1, 130, 24, -41, -27, -11, -5, -3, -1, 55, 39, 23, -1, 113, + -1, 85, 7, -7, -3, -1, 112, 54, -1, 99, 69, -3, -1, 84, 38, + -1, 98, 53, -5, -1, 129, -1, 8, 128, -3, -1, 22, 97, -1, 6, + 96, -13, -9, -5, -3, -1, 83, 68, 37, -1, 82, 5, -1, 21, 81, + -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, -19, -11, + -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3, + -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, + 0 +}; + +static const short tab15[] = +{ +-495,-445,-355,-263,-183,-115, -77, -43, -27, -13, -7, -3, -1, 255, 239, + -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237, + 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3, + -1, 235, 205, -1, 220, 159, -15, -7, -3, -1, 249, 234, -1, 189, 219, + -3, -1, 143, 248, -1, 204, 158, -7, -3, -1, 233, 127, -1, 247, 173, + -3, -1, 218, 188, -1, 111, -1, 174, 15, -19, -11, -3, -1, 203, 246, + -3, -1, 142, 232, -1, 95, 157, -3, -1, 245, 126, -1, 231, 172, -9, + -3, -1, 202, 187, -3, -1, 217, 141, 79, -3, -1, 244, 63, -1, 243, + 216, -33, -17, -9, -3, -1, 230, 47, -1, 242, -1, 110, 240, -3, -1, + 31, 241, -1, 156, 201, -7, -3, -1, 94, 171, -1, 186, 229, -3, -1, + 125, 215, -1, 78, 228, -15, -7, -3, -1, 140, 200, -1, 62, 109, -3, + -1, 214, 227, -1, 155, 185, -7, -3, -1, 46, 170, -1, 226, 30, -5, + -1, 225, -1, 14, 224, -1, 93, 213, -45, -25, -13, -7, -3, -1, 124, + 199, -1, 77, 139, -1, 212, -1, 184, 154, -7, -3, -1, 169, 108, -1, + 198, 61, -1, 211, 210, -9, -5, -3, -1, 45, 13, 29, -1, 123, 183, + -5, -1, 209, -1, 92, 208, -1, 197, 138, -17, -7, -3, -1, 168, 76, + -1, 196, 107, -5, -1, 182, -1, 153, 12, -1, 60, 195, -9, -3, -1, + 122, 167, -1, 166, -1, 192, 11, -1, 194, -1, 44, 91, -55, -29, -15, + -7, -3, -1, 181, 28, -1, 137, 152, -3, -1, 193, 75, -1, 180, 106, + -5, -3, -1, 59, 121, 179, -3, -1, 151, 136, -1, 43, 90, -11, -5, + -1, 178, -1, 165, 27, -1, 177, -1, 176, 105, -7, -3, -1, 150, 74, + -1, 164, 120, -3, -1, 135, 58, 163, -17, -7, -3, -1, 89, 149, -1, + 42, 162, -3, -1, 26, 161, -3, -1, 10, 160, 104, -7, -3, -1, 134, + 73, -1, 148, 57, -5, -1, 147, -1, 119, 9, -1, 88, 133, -53, -29, + -13, -7, -3, -1, 41, 103, -1, 118, 146, -1, 145, -1, 25, 144, -7, + -3, -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 71, -7, + -3, -1, 40, 130, -1, 24, 129, -7, -3, -1, 116, 8, -1, 128, 86, + -3, -1, 101, 55, -1, 115, 70, -17, -7, -3, -1, 39, 114, -1, 100, + 23, -3, -1, 85, 113, -3, -1, 7, 112, 54, -7, -3, -1, 99, 69, + -1, 84, 38, -3, -1, 98, 22, -3, -1, 6, 96, 53, -33, -19, -9, + -5, -1, 97, -1, 83, 68, -1, 37, 82, -3, -1, 21, 81, -3, -1, + 5, 80, 52, -7, -3, -1, 67, 36, -1, 66, 51, -1, 65, -1, 20, + 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48, + 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16, + 0 +}; + +static const short tab16[] = +{ +-509,-503,-461,-323,-103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223, + 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3, + -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5, + -3, -1, 95, 245, 79, -1, 244, 243, -53, -1, 240, -1, 63, -29, -19, + -13, -7, -5, -1, 206, -1, 236, 221, 222, -1, 233, -1, 234, 217, -1, + 238, -1, 237, 235, -3, -1, 190, 205, -3, -1, 220, 219, 174, -11, -5, + -1, 204, -1, 173, 218, -3, -1, 126, 172, 202, -5, -3, -1, 201, 125, + 94, 189, 242, -93, -5, -3, -1, 47, 15, 31, -1, 241, -49, -25, -13, + -5, -1, 158, -1, 188, 203, -3, -1, 142, 232, -1, 157, 231, -7, -3, + -1, 187, 141, -1, 216, 110, -1, 230, 156, -13, -7, -3, -1, 171, 186, + -1, 229, 215, -1, 78, -1, 228, 140, -3, -1, 200, 62, -1, 109, -1, + 214, 155, -19, -11, -5, -3, -1, 185, 170, 225, -1, 212, -1, 184, 169, + -5, -1, 123, -1, 183, 208, 227, -7, -3, -1, 14, 224, -1, 93, 213, + -3, -1, 124, 199, -1, 77, 139, -75, -45, -27, -13, -7, -3, -1, 154, + 108, -1, 198, 61, -3, -1, 92, 197, 13, -7, -3, -1, 138, 168, -1, + 153, 76, -3, -1, 182, 122, 60, -11, -5, -3, -1, 91, 137, 28, -1, + 192, -1, 152, 121, -1, 226, -1, 46, 30, -15, -7, -3, -1, 211, 45, + -1, 210, 209, -5, -1, 59, -1, 151, 136, 29, -7, -3, -1, 196, 107, + -1, 195, 167, -1, 44, -1, 194, 181, -23, -13, -7, -3, -1, 193, 12, + -1, 75, 180, -3, -1, 106, 166, 179, -5, -3, -1, 90, 165, 43, -1, + 178, 27, -13, -5, -1, 177, -1, 11, 176, -3, -1, 105, 150, -1, 74, + 164, -5, -3, -1, 120, 135, 163, -3, -1, 58, 89, 42, -97, -57, -33, + -19, -11, -5, -3, -1, 149, 104, 161, -3, -1, 134, 119, 148, -5, -3, + -1, 73, 87, 103, 162, -5, -1, 26, -1, 10, 160, -3, -1, 57, 147, + -1, 88, 133, -9, -3, -1, 41, 146, -3, -1, 118, 9, 25, -5, -1, + 145, -1, 144, 72, -3, -1, 132, 117, -1, 56, 131, -21, -11, -5, -3, + -1, 102, 40, 130, -3, -1, 71, 116, 24, -3, -1, 129, 128, -3, -1, + 8, 86, 55, -9, -5, -1, 115, -1, 101, 70, -1, 39, 114, -5, -3, + -1, 100, 85, 7, 23, -23, -13, -5, -1, 113, -1, 112, 54, -3, -1, + 99, 69, -1, 84, 38, -3, -1, 98, 22, -1, 97, -1, 6, 96, -9, + -5, -1, 83, -1, 53, 68, -1, 37, 82, -1, 81, -1, 21, 5, -33, + -23, -13, -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, + -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1, + 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, + 0 +}; + +static const short tab24[] = +{ +-451,-117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1, + 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9, + -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79, + 244, -71, -7, -3, -1, 63, 243, -1, 47, 242, -5, -1, 241, -1, 31, + 240, -25, -9, -1, 15, -3, -1, 238, 222, -1, 237, 206, -7, -3, -1, + 236, 221, -1, 190, 235, -3, -1, 205, 220, -1, 174, 234, -15, -7, -3, + -1, 189, 219, -1, 204, 158, -3, -1, 233, 173, -1, 218, 188, -7, -3, + -1, 203, 142, -1, 232, 157, -3, -1, 217, 126, -1, 231, 172, 255,-235, +-143, -77, -45, -25, -15, -7, -3, -1, 202, 187, -1, 141, 216, -5, -3, + -1, 14, 224, 13, 230, -5, -3, -1, 110, 156, 201, -1, 94, 186, -9, + -5, -1, 229, -1, 171, 125, -1, 215, 228, -3, -1, 140, 200, -3, -1, + 78, 46, 62, -15, -7, -3, -1, 109, 214, -1, 227, 155, -3, -1, 185, + 170, -1, 226, 30, -7, -3, -1, 225, 93, -1, 213, 124, -3, -1, 199, + 77, -1, 139, 184, -31, -15, -7, -3, -1, 212, 154, -1, 169, 108, -3, + -1, 198, 61, -1, 211, 45, -7, -3, -1, 210, 29, -1, 123, 183, -3, + -1, 209, 92, -1, 197, 138, -17, -7, -3, -1, 168, 153, -1, 76, 196, + -3, -1, 107, 182, -3, -1, 208, 12, 60, -7, -3, -1, 195, 122, -1, + 167, 44, -3, -1, 194, 91, -1, 181, 28, -57, -35, -19, -7, -3, -1, + 137, 152, -1, 193, 75, -5, -3, -1, 192, 11, 59, -3, -1, 176, 10, + 26, -5, -1, 180, -1, 106, 166, -3, -1, 121, 151, -3, -1, 160, 9, + 144, -9, -3, -1, 179, 136, -3, -1, 43, 90, 178, -7, -3, -1, 165, + 27, -1, 177, 105, -1, 150, 164, -17, -9, -5, -3, -1, 74, 120, 135, + -1, 58, 163, -3, -1, 89, 149, -1, 42, 162, -7, -3, -1, 161, 104, + -1, 134, 119, -3, -1, 73, 148, -1, 57, 147, -63, -31, -15, -7, -3, + -1, 88, 133, -1, 41, 103, -3, -1, 118, 146, -1, 25, 145, -7, -3, + -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 40, -17, -7, + -3, -1, 130, 24, -1, 71, 116, -5, -1, 129, -1, 8, 128, -1, 86, + 101, -7, -5, -1, 23, -1, 7, 112, 115, -3, -1, 55, 39, 114, -15, + -7, -3, -1, 70, 100, -1, 85, 113, -3, -1, 54, 99, -1, 69, 84, + -7, -3, -1, 38, 98, -1, 22, 97, -5, -3, -1, 6, 96, 53, -1, + 83, 68, -51, -37, -23, -15, -9, -3, -1, 37, 82, -1, 21, -1, 5, + 80, -1, 81, -1, 52, 67, -3, -1, 36, 66, -1, 51, 20, -9, -5, + -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1, + 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16, + 0 +}; + +static const short tab_c0[] = +{ + -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5, + 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8, + 0 +}; + +static const short tab_c1[] = +{ + -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9, + 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1, + 0 +}; + + + +static const struct newhuff ht[] = +{ + { /* 0 */ 0 , tab0 } , + { /* 2 */ 0 , tab1 } , + { /* 3 */ 0 , tab2 } , + { /* 3 */ 0 , tab3 } , + { /* 0 */ 0 , tab0 } , + { /* 4 */ 0 , tab5 } , + { /* 4 */ 0 , tab6 } , + { /* 6 */ 0 , tab7 } , + { /* 6 */ 0 , tab8 } , + { /* 6 */ 0 , tab9 } , + { /* 8 */ 0 , tab10 } , + { /* 8 */ 0 , tab11 } , + { /* 8 */ 0 , tab12 } , + { /* 16 */ 0 , tab13 } , + { /* 0 */ 0 , tab0 } , + { /* 16 */ 0 , tab15 } , + + { /* 16 */ 1 , tab16 } , + { /* 16 */ 2 , tab16 } , + { /* 16 */ 3 , tab16 } , + { /* 16 */ 4 , tab16 } , + { /* 16 */ 6 , tab16 } , + { /* 16 */ 8 , tab16 } , + { /* 16 */ 10, tab16 } , + { /* 16 */ 13, tab16 } , + { /* 16 */ 4 , tab24 } , + { /* 16 */ 5 , tab24 } , + { /* 16 */ 6 , tab24 } , + { /* 16 */ 7 , tab24 } , + { /* 16 */ 8 , tab24 } , + { /* 16 */ 9 , tab24 } , + { /* 16 */ 11, tab24 } , + { /* 16 */ 13, tab24 } +}; + +static const struct newhuff htc[] = +{ + { /* 1 , 1 , */ 0 , tab_c0 } , + { /* 1 , 1 , */ 0 , tab_c1 } +}; + + + diff --git a/lame-3.97/mpglib/.svn/text-base/interface.c.svn-base b/lame-3.97/mpglib/.svn/text-base/interface.c.svn-base new file mode 100644 index 0000000..1fea755 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/interface.c.svn-base @@ -0,0 +1,612 @@ +/* $Id: interface.c,v 1.47 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "common.h" +#include "interface.h" +#include "tabinit.h" +#include "layer3.h" +#include "VbrTag.h" +#include "decode_i386.h" + +#ifdef USE_LAYER_1 + #include "layer1.h" +#endif + +#ifdef USE_LAYER_2 + #include "layer2.h" +#endif + +#ifdef WITH_DMALLOC +#include +#endif + + +BOOL InitMP3( PMPSTR mp) +{ + memset(mp,0,sizeof(MPSTR)); + + mp->framesize = 0; + mp->num_frames = 0; + mp->enc_delay = -1; + mp->enc_padding = -1; + mp->vbr_header=0; + mp->header_parsed=0; + mp->side_parsed=0; + mp->data_parsed=0; + mp->free_format=0; + mp->old_free_format=0; + mp->ssize = 0; + mp->dsize=0; + mp->fsizeold = -1; + mp->bsize = 0; + mp->head = mp->tail = NULL; + mp->fr.single = -1; + mp->bsnum = 0; + mp->wordpointer = mp->bsspace[mp->bsnum] + 512; + mp->bitindex = 0; + mp->synth_bo = 1; + mp->sync_bitstream = 1; + + make_decode_tables(32767); + + init_layer3(SBLIMIT); + +#ifdef USE_LAYER_2 + init_layer2(); +#endif + + return !0; +} + +void ExitMP3( PMPSTR mp) +{ + struct buf *b,*bn; + + b = mp->tail; + while(b) { + free(b->pnt); + bn = b->next; + free(b); + b = bn; + } +} + +static struct buf *addbuf( PMPSTR mp, unsigned char *buf,int size) +{ + struct buf *nbuf; + + nbuf = (struct buf*) malloc( sizeof(struct buf) ); + if(!nbuf) { + fprintf(stderr,"Out of memory!\n"); + return NULL; + } + nbuf->pnt = (unsigned char*) malloc((size_t)size); + if(!nbuf->pnt) { + free(nbuf); + return NULL; + } + nbuf->size = size; + memcpy(nbuf->pnt,buf,(size_t)size); + nbuf->next = NULL; + nbuf->prev = mp->head; + nbuf->pos = 0; + + if(!mp->tail) { + mp->tail = nbuf; + } + else { + mp->head->next = nbuf; + } + + mp->head = nbuf; + mp->bsize += size; + + return nbuf; +} + +void remove_buf(PMPSTR mp) +{ + struct buf *buf = mp->tail; + + mp->tail = buf->next; + if(mp->tail) + mp->tail->prev = NULL; + else { + mp->tail = mp->head = NULL; + } + + free(buf->pnt); + free(buf); + +} + +static int read_buf_byte(PMPSTR mp) +{ + unsigned int b; + + int pos; + + + pos = mp->tail->pos; + while(pos >= mp->tail->size) { + remove_buf(mp); + if(!mp->tail) { + fprintf(stderr,"Fatal error! tried to read past mp buffer\n"); + exit(1); + } + pos = mp->tail->pos; + } + + b = mp->tail->pnt[pos]; + mp->bsize--; + mp->tail->pos++; + + + return b; +} + + + +static void read_head(PMPSTR mp) +{ + unsigned long head; + + head = read_buf_byte(mp); + head <<= 8; + head |= read_buf_byte(mp); + head <<= 8; + head |= read_buf_byte(mp); + head <<= 8; + head |= read_buf_byte(mp); + + mp->header = head; +} + + + + + + +static void +copy_mp(PMPSTR mp,int size,unsigned char *ptr) +{ + int len = 0; + + while(len < size && mp->tail) { + int nlen; + int blen = mp->tail->size - mp->tail->pos; + if( (size - len) <= blen) { + nlen = size-len; + } + else { + nlen = blen; + } + memcpy(ptr+len,mp->tail->pnt+mp->tail->pos,(size_t)nlen); + len += nlen; + mp->tail->pos += nlen; + mp->bsize -= nlen; + if(mp->tail->pos == mp->tail->size) { + remove_buf(mp); + } + } +} + +/* number of bytes needed by GetVbrTag to parse header */ +#define XING_HEADER_SIZE 194 + +/* traverse mp data structure without changing it */ +/* (just like sync_buffer) */ +/* pull out Xing bytes */ +/* call vbr header check code from LAME */ +/* if we find a header, parse it and also compute the VBR header size */ +/* if no header, do nothing. */ +/* */ +/* bytes = number of bytes before MPEG header. skip this many bytes */ +/* before starting to read */ +/* return value: number of bytes in VBR header, including syncword */ +static int +check_vbr_header(PMPSTR mp,int bytes) +{ + int i,pos; + struct buf *buf=mp->tail; + unsigned char xing[XING_HEADER_SIZE]; + VBRTAGDATA pTagData; + + pos = buf->pos; + /* skip to valid header */ + for (i=0; i= buf->size) { + buf = buf->next; + pos = buf->pos; + if(!buf) return -1; /* fatal error */ + } + ++pos; + } + /* now read header */ + for (i=0; i= buf->size) { + buf = buf->next; + if(!buf) return -1; /* fatal error */ + pos = buf->pos; + } + xing[i] = buf->pnt[pos]; + ++pos; + } + + /* check first bytes for Xing header */ + mp->vbr_header = GetVbrTag(&pTagData,xing); + if (mp->vbr_header) { + mp->num_frames=pTagData.frames; + mp->enc_delay=pTagData.enc_delay; + mp->enc_padding=pTagData.enc_padding; + + /*fprintf(stderr,"\rmpglib: delays: %i %i \n",mp->enc_delay,mp->enc_padding); */ + /* fprintf(stderr,"\rmpglib: Xing VBR header dectected. MP3 file has %i frames\n", pTagData.frames); */ + if ( pTagData.headersize < 1 ) return 1; + return pTagData.headersize; + } + return 0; +} + + + + + + + +static int +sync_buffer(PMPSTR mp,int free_match) +{ + /* traverse mp structure without modifing pointers, looking + * for a frame valid header. + * if free_format, valid header must also have the same + * samplerate. + * return number of bytes in mp, before the header + * return -1 if header is not found + */ + unsigned int b[4]={0,0,0,0}; + int i,h,pos; + struct buf *buf=mp->tail; + if (!buf) return -1; + + pos = buf->pos; + for (i=0; ibsize; i++) { + /* get 4 bytes */ + + b[0]=b[1]; b[1]=b[2]; b[2]=b[3]; + while(pos >= buf->size) { + buf = buf->next; + pos = buf->pos; + if(!buf) { + return -1; + /* not enough data to read 4 bytes */ + } + } + b[3] = buf->pnt[pos]; + ++pos; + + if (i>=3) { + struct frame *fr = &mp->fr; + unsigned long head; + + head = b[0]; + head <<= 8; + head |= b[1]; + head <<= 8; + head |= b[2]; + head <<= 8; + head |= b[3]; + h = head_check(head,fr->lay); + + if (h && free_match) { + /* just to be even more thorough, match the sample rate */ + int mode,stereo,sampling_frequency,mpeg25,lsf; + + if( head & (1<<20) ) { + lsf = (head & (1<<19)) ? 0x0 : 0x1; + mpeg25 = 0; + } + else { + lsf = 1; + mpeg25 = 1; + } + + mode = ((head>>6)&0x3); + stereo = (mode == MPG_MD_MONO) ? 1 : 2; + + if(mpeg25) + sampling_frequency = 6 + ((head>>10)&0x3); + else + sampling_frequency = ((head>>10)&0x3) + (lsf*3); + h = ((stereo==fr->stereo) && (lsf==fr->lsf) && (mpeg25==fr->mpeg25) && + (sampling_frequency == fr->sampling_frequency)); + } + + if (h) { + return i-3; + } + } + } + return -1; +} + + + + +static int +decodeMP3_clipchoice( PMPSTR mp,unsigned char *in,int isize,char *out,int *done, + int (*synth_1to1_mono_ptr)(PMPSTR,real *,unsigned char *,int *), + int (*synth_1to1_ptr)(PMPSTR,real *,int,unsigned char *, int *) ) +{ + int i,iret,bits,bytes; + + if (in && isize && addbuf(mp,in,isize) == NULL) + return MP3_ERR; + + /* First decode header */ + if(!mp->header_parsed) { + + if (mp->fsizeold==-1 || mp->sync_bitstream) { + int vbrbytes; + mp->sync_bitstream=0; + + /* This is the very first call. sync with anything */ + /* bytes= number of bytes before header */ + bytes=sync_buffer(mp,0); + + /* now look for Xing VBR header */ + if (mp->bsize >= bytes+XING_HEADER_SIZE ) { + /* vbrbytes = number of bytes in entire vbr header */ + vbrbytes=check_vbr_header(mp,bytes); + } else { + /* not enough data to look for Xing header */ + return MP3_NEED_MORE; + } + + if (mp->vbr_header) { + /* do we have enough data to parse entire Xing header? */ + if (bytes+vbrbytes > mp->bsize) return MP3_NEED_MORE; + + /* read in Xing header. Buffer data in case it + * is used by a non zero main_data_begin for the next + * frame, but otherwise dont decode Xing header */ +/*fprintf(stderr,"found xing header, skipping %i bytes\n",vbrbytes+bytes);*/ + for (i=0; i0) { + /* there were some extra bytes in front of header. + * bitstream problem, but we are now resynced + * should try to buffer previous data in case new + * frame has nonzero main_data_begin, but we need + * to make sure we do not overflow buffer + */ + int size; + fprintf(stderr,"bitstream problem: resyncing...\n"); + mp->old_free_format=0; + mp->sync_bitstream=1; + + /* skip some bytes, buffer the rest */ + size = (int) (mp->wordpointer - (mp->bsspace[mp->bsnum]+512)); + + if (size > MAXFRAMESIZE) { + /* wordpointer buffer is trashed. probably cant recover, but try anyway */ + fprintf(stderr,"mpglib: wordpointer trashed. size=%i (%i) bytes=%i \n", + size,MAXFRAMESIZE,bytes); + size=0; + mp->wordpointer = mp->bsspace[mp->bsnum]+512; + } + + /* buffer contains 'size' data right now + we want to add 'bytes' worth of data, but do not + exceed MAXFRAMESIZE, so we through away 'i' bytes */ + i = (size+bytes)-MAXFRAMESIZE; + for (; i>0; --i) { + --bytes; + read_buf_byte(mp); + } + + copy_mp(mp,bytes,mp->wordpointer); + mp->fsizeold += bytes; + } + + read_head(mp); + decode_header(&mp->fr,mp->header); + mp->header_parsed=1; + mp->framesize = mp->fr.framesize; + mp->free_format = (mp->framesize==0); + + if(mp->fr.lsf) + mp->ssize = (mp->fr.stereo == 1) ? 9 : 17; + else + mp->ssize = (mp->fr.stereo == 1) ? 17 : 32; + if (mp->fr.error_protection) + mp->ssize += 2; + + mp->bsnum = 1-mp->bsnum; /* toggle buffer */ + mp->wordpointer = mp->bsspace[mp->bsnum] + 512; + mp->bitindex = 0; + + /* for very first header, never parse rest of data */ + if (mp->fsizeold==-1) + return MP3_NEED_MORE; + } + + /* now decode side information */ + if (!mp->side_parsed) { + + /* Layer 3 only */ + if (mp->fr.lay==3) + { + if (mp->bsize < mp->ssize) + return MP3_NEED_MORE; + + copy_mp(mp,mp->ssize,mp->wordpointer); + + if(mp->fr.error_protection) + getbits(mp,16); + bits=do_layer3_sideinfo(mp); + /* bits = actual number of bits needed to parse this frame */ + /* can be negative, if all bits needed are in the reservoir */ + if (bits<0) bits=0; + + /* read just as many bytes as necessary before decoding */ + mp->dsize = (bits+7)/8; + + /* this will force mpglib to read entire frame before decoding */ + /* mp->dsize= mp->framesize - mp->ssize;*/ + + } + + else + { + /* Layers 1 and 2 */ + + /* check if there is enough input data */ + if(mp->fr.framesize > mp->bsize) + return MP3_NEED_MORE; + + /* takes care that the right amount of data is copied into wordpointer */ + mp->dsize=mp->fr.framesize; + mp->ssize=0; + } + + mp->side_parsed=1; + } + + /* now decode main data */ + iret=MP3_NEED_MORE; + if (!mp->data_parsed ) { + if(mp->dsize > mp->bsize) { + return MP3_NEED_MORE; + } + + copy_mp(mp,mp->dsize,mp->wordpointer); + + *done = 0; + + /*do_layer3(&mp->fr,(unsigned char *) out,done); */ + switch (mp->fr.lay) + { +#ifdef USE_LAYER_1 + case 1: + if(mp->fr.error_protection) + getbits(mp,16); + + do_layer1(mp,(unsigned char *) out,done); + break; +#endif +#ifdef USE_LAYER_2 + case 2: + if(mp->fr.error_protection) + getbits(mp,16); + + do_layer2(mp,(unsigned char *) out,done); + break; +#endif + case 3: + do_layer3(mp,(unsigned char *) out,done, synth_1to1_mono_ptr, synth_1to1_ptr); + break; + default: + fprintf(stderr,"invalid layer %d\n",mp->fr.lay); + } + + mp->wordpointer = mp->bsspace[mp->bsnum] + 512 + mp->ssize + mp->dsize; + + mp->data_parsed=1; + iret=MP3_OK; + } + + + /* remaining bits are ancillary data, or reservoir for next frame + * If free format, scan stream looking for next frame to determine + * mp->framesize */ + if (mp->free_format) { + if (mp->old_free_format) { + /* free format. bitrate must not vary */ + mp->framesize=mp->fsizeold_nopadding + (mp->fr.padding); + }else{ + bytes=sync_buffer(mp,1); + if (bytes<0) return iret; + mp->framesize = bytes + mp->ssize+mp->dsize; + mp->fsizeold_nopadding= mp->framesize - mp->fr.padding; + /* + fprintf(stderr,"freeformat bitstream: estimated bitrate=%ikbs \n", + 8*(4+mp->framesize)*freqs[mp->fr.sampling_frequency]/ + (1000*576*(2-mp->fr.lsf))); + */ + } + } + + /* buffer the ancillary data and reservoir for next frame */ + bytes = mp->framesize-(mp->ssize+mp->dsize); + if (bytes > mp->bsize) { + return iret; + } + + if (bytes>0) { + int size; + copy_mp(mp,bytes,mp->wordpointer); + mp->wordpointer += bytes; + + size = (int) (mp->wordpointer - (mp->bsspace[mp->bsnum]+512)); + if (size > MAXFRAMESIZE) { + fprintf(stderr,"fatal error. MAXFRAMESIZE not large enough.\n"); + } + + } + + /* the above frame is completey parsed. start looking for next frame */ + mp->fsizeold = mp->framesize; + mp->old_free_format = mp->free_format; + mp->framesize =0; + mp->header_parsed=0; + mp->side_parsed=0; + mp->data_parsed=0; + + return iret; +} + +int decodeMP3( PMPSTR mp,unsigned char *in,int isize,char *out, + int osize,int *done) +{ + if(osize < 4608) { + fprintf(stderr,"To less out space\n"); + return MP3_ERR; + } + + /* passing pointers to the functions which clip the samples */ + return decodeMP3_clipchoice(mp, in, isize, out, done, synth_1to1_mono, synth_1to1); +} + +int decodeMP3_unclipped( PMPSTR mp,unsigned char *in,int isize,char *out, + int osize,int *done) +{ + /* we forbid input with more than 1152 samples per channel for output in unclipped mode */ + if(osize < 1152 * 2 * sizeof(real) ) { + fprintf(stderr,"To less out space\n"); + return MP3_ERR; + } + + /* passing pointers to the functions which don't clip the samples */ + return decodeMP3_clipchoice(mp, in, isize, out, done, synth_1to1_mono_unclipped, synth_1to1_unclipped); +} + + + + + diff --git a/lame-3.97/mpglib/.svn/text-base/interface.h.svn-base b/lame-3.97/mpglib/.svn/text-base/interface.h.svn-base new file mode 100644 index 0000000..a1bd1d8 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/interface.h.svn-base @@ -0,0 +1,45 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef INTERFACE_H_INCLUDED +#define INTERFACE_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#include "common.h" + +BOOL InitMP3(PMPSTR mp); +int decodeMP3(PMPSTR mp,unsigned char *inmemory,int inmemsize,char *outmemory,int outmemsize,int *done); +void ExitMP3(PMPSTR mp); + +/* added decodeMP3_unclipped to support returning raw floating-point values of samples. The representation + of the floating-point numbers is defined in mpg123.h as #define real. It is 64-bit double by default. + No more than 1152 samples per channel are allowed. */ +int decodeMP3_unclipped(PMPSTR mp,unsigned char *inmemory,int inmemsize,char *outmemory,int outmemsize,int *done); + +/* added remove_buf to support mpglib seeking */ +void remove_buf(PMPSTR mp); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/l2tables.h.svn-base b/lame-3.97/mpglib/.svn/text-base/l2tables.h.svn-base new file mode 100644 index 0000000..ab533f7 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/l2tables.h.svn-base @@ -0,0 +1,155 @@ +/* + * Layer 2 Alloc tables .. + * most other tables are calculated on program start (which is (of course) + * not ISO-conform) .. + * Layer-3 huffman table is in huffman.h + */ + +const struct al_table2 alloc_0[] = { + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767} }; + +const struct al_table2 alloc_1[] = { + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767} }; + +const struct al_table2 alloc_2[] = { + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; + +const struct al_table2 alloc_3[] = { + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; + +const struct al_table2 alloc_4[] = { + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9} }; + + diff --git a/lame-3.97/mpglib/.svn/text-base/layer1.c.svn-base b/lame-3.97/mpglib/.svn/text-base/layer1.c.svn-base new file mode 100644 index 0000000..0e6b84b --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/layer1.c.svn-base @@ -0,0 +1,173 @@ +/* + * Mpeg Layer-1 audio decoder + * -------------------------- + * copyright (c) 1995 by Michael Hipp, All rights reserved. See also 'README' + * near unoptimzed ... + * + * may have a few bugs after last optimization ... + * + */ + +/* $Id: layer1.c,v 1.20 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef USE_LAYER_1 + +#include +#include "common.h" +#include "decode_i386.h" + +#ifdef WITH_DMALLOC +#include +#endif + +static void +I_step_one(PMPSTR mp, unsigned int balloc[], unsigned int scale_index[2][SBLIMIT],struct frame *fr) +{ + unsigned int *ba=balloc; + unsigned int *sca = (unsigned int *) scale_index; + + assert ( fr->stereo == 1 || fr->stereo == 2 ); + if(fr->stereo==2) { + int i; + int jsbound = fr->jsbound; + for (i=0;istereo == 1 || fr->stereo == 2 ); + if(fr->stereo == 2) { + int jsbound = fr->jsbound; + real *f0 = fraction[0]; + real *f1 = fraction[1]; + ba = balloc; + for (sample=smpb,i=0;idown_sample_sblimit;i<32;i++) + fraction[0][i] = fraction[1][i] = 0.0; + } + else { + real *f0 = fraction[0]; + ba = balloc; + for (sample=smpb,i=0;idown_sample_sblimit;i<32;i++) + fraction[0][i] = 0.0; + } +} + +/*int do_layer1(struct frame *fr,int outmode,struct audio_info_struct *ai) */ +int do_layer1(PMPSTR mp, unsigned char *pcm_sample,int *pcm_point) +{ + int clip=0; + unsigned int balloc[2*SBLIMIT]; + unsigned int scale_index[2][SBLIMIT]; + real fraction[2][SBLIMIT]; + struct frame *fr=&(mp->fr); + int i,stereo = fr->stereo; + int single = fr->single; + + fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : 32; + + if (stereo == 1 || single == 3) + single = 0; + + I_step_one(mp,balloc,scale_index,fr); + + for (i=0;i= 0) + { + clip += synth_1to1_mono( mp, (real *) fraction[single],pcm_sample,pcm_point); + } + else { + int p1 = *pcm_point; + clip += synth_1to1( mp, (real *) fraction[0],0,pcm_sample,&p1); + clip += synth_1to1( mp, (real *) fraction[1],1,pcm_sample,pcm_point); + } + } + + return clip; +} + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/layer1.h.svn-base b/lame-3.97/mpglib/.svn/text-base/layer1.h.svn-base new file mode 100644 index 0000000..6c82c08 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/layer1.h.svn-base @@ -0,0 +1,25 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef LAYER1_H_INCLUDED +#define LAYER1_H_INCLUDED + +int do_layer1(PMPSTR mp, unsigned char *pcm_sample,int *pcm_point); + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/layer2.c.svn-base b/lame-3.97/mpglib/.svn/text-base/layer2.c.svn-base new file mode 100644 index 0000000..66f9860 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/layer2.c.svn-base @@ -0,0 +1,312 @@ +/* + * Mpeg Layer-2 audio decoder + * -------------------------- + * copyright (c) 1995 by Michael Hipp, All rights reserved. See also 'README' + * + */ + +/* $Id: layer2.c,v 1.20 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef USE_LAYER_2 + + +#include "common.h" +#include "layer2.h" +#include "l2tables.h" +#include "decode_i386.h" + +#ifdef WITH_DMALLOC +#include +#endif + +static int grp_3tab[32 * 3] = { 0, }; /* used: 27 */ +static int grp_5tab[128 * 3] = { 0, }; /* used: 125 */ +static int grp_9tab[1024 * 3] = { 0, }; /* used: 729 */ + +void init_layer2(void) +{ + static const double mulmul[27] = { + 0.0 , -2.0/3.0 , 2.0/3.0 , + 2.0/7.0 , 2.0/15.0 , 2.0/31.0, 2.0/63.0 , 2.0/127.0 , 2.0/255.0 , + 2.0/511.0 , 2.0/1023.0 , 2.0/2047.0 , 2.0/4095.0 , 2.0/8191.0 , + 2.0/16383.0 , 2.0/32767.0 , 2.0/65535.0 , + -4.0/5.0 , -2.0/5.0 , 2.0/5.0, 4.0/5.0 , + -8.0/9.0 , -4.0/9.0 , -2.0/9.0 , 2.0/9.0 , 4.0/9.0 , 8.0/9.0 }; + static const int base[3][9] = { + { 1 , 0, 2 , } , + { 17, 18, 0 , 19, 20 , } , + { 21, 1, 22, 23, 0, 24, 25, 2, 26 } }; + int i,j,k,l,len; + real *table; + static const int tablen[3] = { 3 , 5 , 9 }; + static int *itable,*tables[3] = { grp_3tab , grp_5tab , grp_9tab }; + + for(i=0;i<3;i++) + { + itable = tables[i]; + len = tablen[i]; + for(j=0;jstereo-1; + int sblimit = fr->II_sblimit; + int jsbound = fr->jsbound; + int sblimit2 = fr->II_sblimit<alloc; + int i; + static unsigned int scfsi_buf[64]; + unsigned int *scfsi,*bita; + int sc,step; + + bita = bit_alloc; + if(stereo) + { + for (i=jsbound;i;i--,alloc1+=(1<bits); + *bita++ = (char) getbits(mp,step); + } + for (i=sblimit-jsbound;i;i--,alloc1+=(1<bits); + bita[1] = bita[0]; + bita+=2; + } + bita = bit_alloc; + scfsi=scfsi_buf; + for (i=sblimit2;i;i--) + if (*bita++) + *scfsi++ = (char) getbits_fast(mp,2); + } + else /* mono */ + { + for (i=sblimit;i;i--,alloc1+=(1<bits); + bita = bit_alloc; + scfsi=scfsi_buf; + for (i=sblimit;i;i--) + if (*bita++) + *scfsi++ = (char) getbits_fast(mp,2); + } + + bita = bit_alloc; + scfsi=scfsi_buf; + for (i=sblimit2;i;i--) + if (*bita++) + switch (*scfsi++) + { + case 0: + *scale++ = getbits_fast(mp,6); + *scale++ = getbits_fast(mp,6); + *scale++ = getbits_fast(mp,6); + break; + case 1 : + *scale++ = sc = getbits_fast(mp,6); + *scale++ = sc; + *scale++ = getbits_fast(mp,6); + break; + case 2: + *scale++ = sc = getbits_fast(mp,6); + *scale++ = sc; + *scale++ = sc; + break; + default: /* case 3 */ + *scale++ = getbits_fast(mp,6); + *scale++ = sc = getbits_fast(mp,6); + *scale++ = sc; + break; + } + +} + +static void +II_step_two(PMPSTR mp, unsigned int *bit_alloc,real fraction[2][4][SBLIMIT],int *scale,struct frame *fr,int x1) +{ + int i,j,k,ba; + int stereo = fr->stereo; + int sblimit = fr->II_sblimit; + int jsbound = fr->jsbound; + struct al_table2 *alloc2,*alloc1 = fr->alloc; + unsigned int *bita=bit_alloc; + int d1,step; + + for (i=0;ibits; + for (j=0;jbits; + if( (d1=alloc2->d) < 0) + { + real cm=muls[k][scale[x1]]; + fraction[j][0][i] = ((real) ((int)getbits(mp,k) + d1)) * cm; + fraction[j][1][i] = ((real) ((int)getbits(mp,k) + d1)) * cm; + fraction[j][2][i] = ((real) ((int)getbits(mp,k) + d1)) * cm; + } + else + { + static int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; + unsigned int idx,*tab,m=scale[x1]; + idx = (unsigned int) getbits(mp,k); + tab = (unsigned int *) (table[d1] + idx + idx + idx); + fraction[j][0][i] = muls[*tab++][m]; + fraction[j][1][i] = muls[*tab++][m]; + fraction[j][2][i] = muls[*tab][m]; + } + scale+=3; + } + else + fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = 0.0; + } + } + + for (i=jsbound;ibits; + bita++; /* channel 1 and channel 2 bitalloc are the same */ + if ( (ba=*bita++) ) + { + k=(alloc2 = alloc1+ba)->bits; + if( (d1=alloc2->d) < 0) + { + real cm; + cm=muls[k][scale[x1+3]]; + fraction[1][0][i] = (fraction[0][0][i] = (real) ((int)getbits(mp,k) + d1) ) * cm; + fraction[1][1][i] = (fraction[0][1][i] = (real) ((int)getbits(mp,k) + d1) ) * cm; + fraction[1][2][i] = (fraction[0][2][i] = (real) ((int)getbits(mp,k) + d1) ) * cm; + cm=muls[k][scale[x1]]; + fraction[0][0][i] *= cm; fraction[0][1][i] *= cm; fraction[0][2][i] *= cm; + } + else + { + static int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; + unsigned int idx,*tab,m1,m2; + m1 = scale[x1]; m2 = scale[x1+3]; + idx = (unsigned int) getbits(mp,k); + tab = (unsigned int *) (table[d1] + idx + idx + idx); + fraction[0][0][i] = muls[*tab][m1]; fraction[1][0][i] = muls[*tab++][m2]; + fraction[0][1][i] = muls[*tab][m1]; fraction[1][1][i] = muls[*tab++][m2]; + fraction[0][2][i] = muls[*tab][m1]; fraction[1][2][i] = muls[*tab][m2]; + } + scale+=6; + } + else { + fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] = + fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = 0.0; + } +/* + should we use individual scalefac for channel 2 or + is the current way the right one , where we just copy channel 1 to + channel 2 ?? + The current 'strange' thing is, that we throw away the scalefac + values for the second channel ...!! +-> changed .. now we use the scalefac values of channel one !! +*/ + } + +/* if(sblimit > (fr->down_sample_sblimit) ) */ +/* sblimit = fr->down_sample_sblimit; */ + + for(i=sblimit;ilsf) + table = 4; + else + table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index]; + sblim = sblims[table]; + + fr->alloc = (struct al_table2*)tables[table]; + fr->II_sblimit = sblim; +} + + +int do_layer2( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point) +/*int do_layer2(struct frame *fr,int outmode,struct audio_info_struct *ai) */ +{ + int clip=0; + int i,j; + real fraction[2][4][SBLIMIT]; /* pick_table clears unused subbands */ + unsigned int bit_alloc[64]; + int scale[192]; + struct frame *fr=&(mp->fr); + int stereo = fr->stereo; + int single = fr->single; + + II_select_table(fr); + fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? + (fr->mode_ext<<2)+4 : fr->II_sblimit; + + if(stereo == 1 || single == 3) + single = 0; + + II_step_one(mp,bit_alloc, scale, fr); + + for (i=0;i>2); + for (j=0;j<3;j++) + { + if(single >= 0) + { + clip += synth_1to1_mono(mp, fraction[single][j],pcm_sample,pcm_point); + } + else { + int p1 = *pcm_point; + clip += synth_1to1(mp, fraction[0][j],0,pcm_sample,&p1); + clip += synth_1to1(mp, fraction[1][j],1,pcm_sample,pcm_point); + } + } + } + + return clip; +} + + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/layer2.h.svn-base b/lame-3.97/mpglib/.svn/text-base/layer2.h.svn-base new file mode 100644 index 0000000..aad395e --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/layer2.h.svn-base @@ -0,0 +1,40 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifdef USE_LAYER_2 + +#ifndef LAYER2_H_INCLUDED +#define LAYER2_H_INCLUDED + + +struct al_table2 +{ + short bits; + short d; +}; + + + +void init_layer2(void); +int do_layer2( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point); + +#endif + +#endif + + diff --git a/lame-3.97/mpglib/.svn/text-base/layer3.c.svn-base b/lame-3.97/mpglib/.svn/text-base/layer3.c.svn-base new file mode 100644 index 0000000..712ba0b --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/layer3.c.svn-base @@ -0,0 +1,1799 @@ +/* + * Mpeg Layer-3 audio decoder + * -------------------------- + * copyright (c) 1995,1996,1997 by Michael Hipp. + * All rights reserved. See also 'README' + */ + +/* $Id: layer3.c,v 1.48 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "common.h" +#include "huffman.h" +#include "lame-analysis.h" +#include "decode_i386.h" + +#ifdef WITH_DMALLOC +#include +#endif + + + +static real ispow[8207]; +static real aa_ca[8],aa_cs[8]; +static real COS1[12][6]; +static real win[4][36]; +static real win1[4][36]; +static real gainpow2[256+118+4]; +static real COS9[9]; +static real COS6_1,COS6_2; +static real tfcos36[9]; +static real tfcos12[3]; + +struct bandInfoStruct { + short longIdx[23]; + short longDiff[22]; + short shortIdx[14]; + short shortDiff[13]; +}; + +static int longLimit[9][23]; +static int shortLimit[9][14]; + +const struct bandInfoStruct bandInfo[9] = { + +/* MPEG 1.0 */ + { {0,4,8,12,16,20,24,30,36,44,52,62,74, 90,110,134,162,196,238,288,342,418,576}, + {4,4,4,4,4,4,6,6,8, 8,10,12,16,20,24,28,34,42,50,54, 76,158}, + {0,4*3,8*3,12*3,16*3,22*3,30*3,40*3,52*3,66*3, 84*3,106*3,136*3,192*3}, + {4,4,4,4,6,8,10,12,14,18,22,30,56} } , + + { {0,4,8,12,16,20,24,30,36,42,50,60,72, 88,106,128,156,190,230,276,330,384,576}, + {4,4,4,4,4,4,6,6,6, 8,10,12,16,18,22,28,34,40,46,54, 54,192}, + {0,4*3,8*3,12*3,16*3,22*3,28*3,38*3,50*3,64*3, 80*3,100*3,126*3,192*3}, + {4,4,4,4,6,6,10,12,14,16,20,26,66} } , + + { {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576} , + {4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, 26} , + {0,4*3,8*3,12*3,16*3,22*3,30*3,42*3,58*3,78*3,104*3,138*3,180*3,192*3} , + {4,4,4,4,6,8,12,16,20,26,34,42,12} } , + +/* MPEG 2.0 */ + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 } , + {0,4*3,8*3,12*3,18*3,24*3,32*3,42*3,56*3,74*3,100*3,132*3,174*3,192*3} , + {4,4,4,6,6,8,10,14,18,26,32,42,18 } } , + /* docs: 332. mpg123: 330 */ + { {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,332,394,464,540,576}, + {6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36 } , + {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,136*3,180*3,192*3} , + {4,4,4,6,8,10,12,14,18,24,32,44,12 } } , + + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 }, + {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,134*3,174*3,192*3}, + {4,4,4,6,8,10,12,14,18,24,30,40,18 } } , +/* MPEG 2.5 */ + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, + {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, + {4,4,4,6,8,10,12,14,18,24,30,40,18} }, + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, + {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, + {4,4,4,6,8,10,12,14,18,24,30,40,18} }, + { {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576}, + {12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2}, + {0, 24, 48, 72,108,156,216,288,372,480,486,492,498,576}, + {8,8,8,12,16,20,24,28,36,2,2,2,26} } , +}; + +static int mapbuf0[9][152]; +static int mapbuf1[9][156]; +static int mapbuf2[9][44]; +static int *map[9][3]; +static int *mapend[9][3]; + +static unsigned int n_slen2[512]; /* MPEG 2.0 slen for 'normal' mode */ +static unsigned int i_slen2[256]; /* MPEG 2.0 slen for intensity stereo */ + +static real tan1_1[16],tan2_1[16],tan1_2[16],tan2_2[16]; +static real pow1_1[2][16],pow2_1[2][16],pow1_2[2][16],pow2_2[2][16]; + +static unsigned int get1bit(PMPSTR mp) +{ + unsigned char rval; + rval = *mp->wordpointer << mp->bitindex; + + mp->bitindex++; + mp->wordpointer += (mp->bitindex>>3); + mp->bitindex &= 7; + + return rval>>7; +} + + + + +/* + * init tables for layer-3 + */ +void init_layer3(int down_sample_sblimit) +{ + int i,j,k; + + for(i=-256;i<118+4;i++) + gainpow2[i+256] = pow((double)2.0,-0.25 * (double) (i+210) ); + + for(i=0;i<8207;i++) + ispow[i] = pow((double)i,(double)4.0/3.0); + + for (i=0;i<8;i++) + { + static double Ci[8]={-0.6,-0.535,-0.33,-0.185,-0.095,-0.041,-0.0142,-0.0037}; + double sq=sqrt(1.0+Ci[i]*Ci[i]); + aa_cs[i] = 1.0/sq; + aa_ca[i] = Ci[i]/sq; + } + + for(i=0;i<18;i++) + { + win[0][i] = win[1][i] = 0.5 * sin( M_PI / 72.0 * (double) (2*(i+0) +1) ) / cos ( M_PI * (double) (2*(i+0) +19) / 72.0 ); + win[0][i+18] = win[3][i+18] = 0.5 * sin( M_PI / 72.0 * (double) (2*(i+18)+1) ) / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 ); + } + for(i=0;i<6;i++) + { + win[1][i+18] = 0.5 / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 ); + win[3][i+12] = 0.5 / cos ( M_PI * (double) (2*(i+12)+19) / 72.0 ); + win[1][i+24] = 0.5 * sin( M_PI / 24.0 * (double) (2*i+13) ) / cos ( M_PI * (double) (2*(i+24)+19) / 72.0 ); + win[1][i+30] = win[3][i] = 0.0; + win[3][i+6 ] = 0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*(i+6 )+19) / 72.0 ); + } + + for(i=0;i<9;i++) + COS9[i] = cos( M_PI / 18.0 * (double) i); + + for(i=0;i<9;i++) + tfcos36[i] = 0.5 / cos ( M_PI * (double) (i*2+1) / 36.0 ); + for(i=0;i<3;i++) + tfcos12[i] = 0.5 / cos ( M_PI * (double) (i*2+1) / 12.0 ); + + COS6_1 = cos( M_PI / 6.0 * (double) 1); + COS6_2 = cos( M_PI / 6.0 * (double) 2); + + for(i=0;i<12;i++) + { + win[2][i] = 0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*i+7) / 24.0 ); + for(j=0;j<6;j++) + COS1[i][j] = cos( M_PI / 24.0 * (double) ((2*i+7)*(2*j+1)) ); + } + + for(j=0;j<4;j++) { + static int len[4] = { 36,36,12,36 }; + for(i=0;i 0) { + if( i & 1 ) + p1 = pow(base,(i+1.0)*0.5); + else + p2 = pow(base,i*0.5); + } + pow1_1[j][i] = p1; + pow2_1[j][i] = p2; + pow1_2[j][i] = M_SQRT2 * p1; + pow2_2[j][i] = M_SQRT2 * p2; + } + } + + for(j=0;j<9;j++) + { + struct bandInfoStruct *bi = (struct bandInfoStruct *)&bandInfo[j]; + int *mp; + int cb,lwin; + short *bdf; + + mp = map[j][0] = mapbuf0[j]; + bdf = bi->longDiff; + for(i=0,cb = 0; cb < 8 ; cb++,i+=*bdf++) { + *mp++ = (*bdf) >> 1; + *mp++ = i; + *mp++ = 3; + *mp++ = cb; + } + bdf = bi->shortDiff+3; + for(cb=3;cb<13;cb++) { + int l = (*bdf++) >> 1; + for(lwin=0;lwin<3;lwin++) { + *mp++ = l; + *mp++ = i + lwin; + *mp++ = lwin; + *mp++ = cb; + } + i += 6*l; + } + mapend[j][0] = mp; + + mp = map[j][1] = mapbuf1[j]; + bdf = bi->shortDiff+0; + for(i=0,cb=0;cb<13;cb++) { + int l = (*bdf++) >> 1; + for(lwin=0;lwin<3;lwin++) { + *mp++ = l; + *mp++ = i + lwin; + *mp++ = lwin; + *mp++ = cb; + } + i += 6*l; + } + mapend[j][1] = mp; + + mp = map[j][2] = mapbuf2[j]; + bdf = bi->longDiff; + for(cb = 0; cb < 22 ; cb++) { + *mp++ = (*bdf++) >> 1; + *mp++ = cb; + } + mapend[j][2] = mp; + + } + + for(j=0;j<9;j++) { + for(i=0;i<23;i++) { + longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1; + if(longLimit[j][i] > (down_sample_sblimit) ) + longLimit[j][i] = down_sample_sblimit; + } + for(i=0;i<14;i++) { + shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1; + if(shortLimit[j][i] > (down_sample_sblimit) ) + shortLimit[j][i] = down_sample_sblimit; + } + } + + for(i=0;i<5;i++) { + for(j=0;j<6;j++) { + for(k=0;k<6;k++) { + int n = k + j * 6 + i * 36; + i_slen2[n] = i|(j<<3)|(k<<6)|(3<<12); + } + } + } + for(i=0;i<4;i++) { + for(j=0;j<4;j++) { + for(k=0;k<4;k++) { + int n = k + j * 4 + i * 16; + i_slen2[n+180] = i|(j<<3)|(k<<6)|(4<<12); + } + } + } + for(i=0;i<4;i++) { + for(j=0;j<3;j++) { + int n = j + i * 3; + i_slen2[n+244] = i|(j<<3) | (5<<12); + n_slen2[n+500] = i|(j<<3) | (2<<12) | (1<<15); + } + } + + for(i=0;i<5;i++) { + for(j=0;j<5;j++) { + for(k=0;k<4;k++) { + int l; + for(l=0;l<4;l++) { + int n = l + k * 4 + j * 16 + i * 80; + n_slen2[n] = i|(j<<3)|(k<<6)|(l<<9)|(0<<12); + } + } + } + } + for(i=0;i<5;i++) { + for(j=0;j<5;j++) { + for(k=0;k<4;k++) { + int n = k + j * 4 + i * 20; + n_slen2[n+400] = i|(j<<3)|(k<<6)|(1<<12); + } + } + } +} + +/* + * read additional side information + */ + +static void III_get_side_info_1(PMPSTR mp, struct III_sideinfo *si,int stereo, + int ms_stereo,long sfreq,int single) +{ + int ch, gr; + int powdiff = (single == 3) ? 4 : 0; + + si->main_data_begin = getbits(mp,9); + if (stereo == 1) + si->private_bits = getbits_fast(mp,5); + else + si->private_bits = getbits_fast(mp,3); + + for (ch=0; chch[ch].gr[0].scfsi = -1; + si->ch[ch].gr[1].scfsi = getbits_fast(mp,4); + } + + for (gr=0; gr<2; gr++) + { + for (ch=0; chch[ch].gr[gr]); + + gr_infos->part2_3_length = getbits(mp,12); + gr_infos->big_values = getbits_fast(mp,9); + if(gr_infos->big_values > 288) { + fprintf(stderr,"big_values too large! %i\n",gr_infos->big_values); + gr_infos->big_values = 288; + } + { + unsigned int qss = getbits_fast(mp,8); + gr_infos->pow2gain = gainpow2+256 - qss + powdiff; +#ifndef NOANALYSIS + if (mpg123_pinfo != NULL) { + mpg123_pinfo->qss[gr][ch]=qss; + } +#endif + } + if(ms_stereo) + gr_infos->pow2gain += 2; + gr_infos->scalefac_compress = getbits_fast(mp,4); +/* window-switching flag == 1 for block_Type != 0 .. and block-type == 0 -> win-sw-flag = 0 */ + if(get1bit(mp)) + { + int i; + gr_infos->block_type = getbits_fast(mp,2); + gr_infos->mixed_block_flag = get1bit(mp); + gr_infos->table_select[0] = getbits_fast(mp,5); + gr_infos->table_select[1] = getbits_fast(mp,5); + + + /* + * table_select[2] not needed, because there is no region2, + * but to satisfy some verifications tools we set it either. + */ + gr_infos->table_select[2] = 0; + for(i=0;i<3;i++) { + unsigned int sbg = (getbits_fast(mp,3)<<3); + gr_infos->full_gain[i] = gr_infos->pow2gain + sbg; +#ifndef NOANALYSIS + if (mpg123_pinfo != NULL) + mpg123_pinfo->sub_gain[gr][ch][i]=sbg/8; +#endif + } + + if(gr_infos->block_type == 0) { + fprintf(stderr,"Blocktype == 0 and window-switching == 1 not allowed.\n"); + /* error seems to be very good recoverable, so don't exit */ + /* exit(1); */ + } + /* region_count/start parameters are implicit in this case. */ + gr_infos->region1start = 36>>1; + gr_infos->region2start = 576>>1; + } + else + { + int i,r0c,r1c; + for (i=0; i<3; i++) + gr_infos->table_select[i] = getbits_fast(mp,5); + r0c = getbits_fast(mp,4); + r1c = getbits_fast(mp,3); + gr_infos->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ; + gr_infos->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; + gr_infos->block_type = 0; + gr_infos->mixed_block_flag = 0; + } + gr_infos->preflag = get1bit(mp); + gr_infos->scalefac_scale = get1bit(mp); + gr_infos->count1table_select = get1bit(mp); + } + } +} + +/* + * Side Info for MPEG 2.0 / LSF + */ +static void III_get_side_info_2(PMPSTR mp, struct III_sideinfo *si,int stereo, + int ms_stereo,long sfreq,int single) +{ + int ch; + int powdiff = (single == 3) ? 4 : 0; + + si->main_data_begin = getbits(mp,8); + + if (stereo == 1) + si->private_bits = get1bit(mp); + else + si->private_bits = getbits_fast(mp,2); + + for (ch=0; chch[ch].gr[0]); + unsigned int qss; + + gr_infos->part2_3_length = getbits(mp,12); + gr_infos->big_values = getbits_fast(mp,9); + if(gr_infos->big_values > 288) { + fprintf(stderr,"big_values too large! %i\n",gr_infos->big_values); + gr_infos->big_values = 288; + } + qss=getbits_fast(mp,8); + gr_infos->pow2gain = gainpow2+256 - qss + powdiff; +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + mpg123_pinfo->qss[0][ch]=qss; + } +#endif + + + if(ms_stereo) + gr_infos->pow2gain += 2; + gr_infos->scalefac_compress = getbits(mp,9); +/* window-switching flag == 1 for block_Type != 0 .. and block-type == 0 -> win-sw-flag = 0 */ + if(get1bit(mp)) + { + int i; + gr_infos->block_type = getbits_fast(mp,2); + gr_infos->mixed_block_flag = get1bit(mp); + gr_infos->table_select[0] = getbits_fast(mp,5); + gr_infos->table_select[1] = getbits_fast(mp,5); + /* + * table_select[2] not needed, because there is no region2, + * but to satisfy some verifications tools we set it either. + */ + gr_infos->table_select[2] = 0; + for(i=0;i<3;i++) { + unsigned int sbg = (getbits_fast(mp,3)<<3); + gr_infos->full_gain[i] = gr_infos->pow2gain + sbg; +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) + mpg123_pinfo->sub_gain[0][ch][i]=sbg/8; +#endif + + } + + if(gr_infos->block_type == 0) { + fprintf(stderr,"Blocktype == 0 and window-switching == 1 not allowed.\n"); + /* error seems to be very good recoverable, so don't exit */ + /* exit(1); */ + } + /* region_count/start parameters are implicit in this case. */ +/* check this again! */ + if(gr_infos->block_type == 2) { + if (sfreq == 8) + gr_infos->region1start = 36; + else + gr_infos->region1start = 36>>1; + } + else if(sfreq == 8) +/* check this for 2.5 and sfreq=8 */ + gr_infos->region1start = 108>>1; + else + gr_infos->region1start = 54>>1; + gr_infos->region2start = 576>>1; + } + else + { + int i,r0c,r1c; + for (i=0; i<3; i++) + gr_infos->table_select[i] = getbits_fast(mp,5); + r0c = getbits_fast(mp,4); + r1c = getbits_fast(mp,3); + gr_infos->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ; + gr_infos->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; + gr_infos->block_type = 0; + gr_infos->mixed_block_flag = 0; + } + gr_infos->scalefac_scale = get1bit(mp); + gr_infos->count1table_select = get1bit(mp); + } +} + +/* + * read scalefactors + */ + +static int +III_get_scale_factors_1(PMPSTR mp, int *scf,struct gr_info_s *gr_infos) +{ + static const unsigned char slen[2][16] = { + {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}, + {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3} + }; + int numbits; + int num0 = slen[0][gr_infos->scalefac_compress]; + int num1 = slen[1][gr_infos->scalefac_compress]; + + if (gr_infos->block_type == 2) + { + int i=18; + numbits = (num0 + num1) * 18; + + if (gr_infos->mixed_block_flag) { + for (i=8;i;i--) + *scf++ = getbits_fast(mp,num0); + i = 9; + numbits -= num0; /* num0 * 17 + num1 * 18 */ + } + + for (;i;i--) + *scf++ = getbits_fast(mp,num0); + for (i = 18; i; i--) + *scf++ = getbits_fast(mp,num1); + *scf++ = 0; *scf++ = 0; *scf++ = 0; /* short[13][0..2] = 0 */ + } + else + { + int i; + int scfsi = gr_infos->scfsi; + + if(scfsi < 0) { /* scfsi < 0 => granule == 0 */ + for(i=11;i;i--) + *scf++ = getbits_fast(mp,num0); + for(i=10;i;i--) + *scf++ = getbits_fast(mp,num1); + numbits = (num0 + num1) * 10 + num0; + } + else { + numbits = 0; + if(!(scfsi & 0x8)) { + for (i=6;i;i--) + *scf++ = getbits_fast(mp,num0); + numbits += num0 * 6; + } + else { + scf += 6; + } + + if(!(scfsi & 0x4)) { + for (i=5;i;i--) + *scf++ = getbits_fast(mp,num0); + numbits += num0 * 5; + } + else { + scf += 5; + } + + if(!(scfsi & 0x2)) { + for(i=5;i;i--) + *scf++ = getbits_fast(mp,num1); + numbits += num1 * 5; + } + else { + scf += 5; + } + + if(!(scfsi & 0x1)) { + for (i=5;i;i--) + *scf++ = getbits_fast(mp,num1); + numbits += num1 * 5; + } + else { + scf += 5; + } + } + + *scf++ = 0; /* no l[21] in original sources */ + } + return numbits; +} + + +static int +III_get_scale_factors_2(PMPSTR mp, int *scf,struct gr_info_s *gr_infos,int i_stereo) +{ + unsigned char *pnt; + int i,j; + unsigned int slen; + int n = 0; + int numbits = 0; + + static const unsigned char stab[3][6][4] = { + { { 6, 5, 5,5 } , { 6, 5, 7,3 } , { 11,10,0,0} , + { 7, 7, 7,0 } , { 6, 6, 6,3 } , { 8, 8,5,0} } , + { { 9, 9, 9,9 } , { 9, 9,12,6 } , { 18,18,0,0} , + {12,12,12,0 } , {12, 9, 9,6 } , { 15,12,9,0} } , + { { 6, 9, 9,9 } , { 6, 9,12,6 } , { 15,18,0,0} , + { 6,15,12,0 } , { 6,12, 9,6 } , { 6,18,9,0} } }; + + if(i_stereo) /* i_stereo AND second channel -> do_layer3() checks this */ + slen = i_slen2[gr_infos->scalefac_compress>>1]; + else + slen = n_slen2[gr_infos->scalefac_compress]; + + gr_infos->preflag = (slen>>15) & 0x1; + + n = 0; + if( gr_infos->block_type == 2 ) { + n++; + if(gr_infos->mixed_block_flag) + n++; + } + + pnt = (unsigned char *)stab[n][(slen>>12)&0x7]; + + for(i=0;i<4;i++) { + int num = slen & 0x7; + slen >>= 3; + if(num) { + for(j=0;j<(int)(pnt[i]);j++) + *scf++ = getbits_fast(mp,num); + numbits += pnt[i] * num; + } + else { + for(j=0;j<(int)(pnt[i]);j++) + *scf++ = 0; + } + } + + n = (n << 1) + 1; + for(i=0;iscalefac_scale; + real *xrpnt = (real *) xr; + int l[3],l3; + int part2remain = gr_infos->part2_3_length - part2bits; + int *me; + + { + int i; + + for(i=(&xr[SBLIMIT][0]-xrpnt)>>1;i>0;i--) { + *xrpnt++ = 0.0; + *xrpnt++ = 0.0; + } + + xrpnt = (real *) xr; + } + + { + int bv = gr_infos->big_values; + int region1 = gr_infos->region1start; + int region2 = gr_infos->region2start; + + l3 = ((576>>1)-bv)>>1; +/* + * we may lose the 'odd' bit here !! + * check this later again + */ + if(bv <= region1) { + l[0] = bv; l[1] = 0; l[2] = 0; + } + else { + l[0] = region1; + if(bv <= region2) { + l[1] = bv - l[0]; l[2] = 0; + } + else { + l[1] = region2 - l[0]; l[2] = bv - region2; + } + } + } + /* MDH crash fix */ + { + int i; + for (i = 0; i < 3; i++) { + if (l[i] < 0) { + fprintf(stderr, "mpg123: Bogus region length (%d)\n", l[i]); + l[i] = 0; + } + } + } + /* end MDH crash fix */ + + if(gr_infos->block_type == 2) { + /* + * decoding with short or mixed mode BandIndex table + */ + int i,max[4]; + int step=0,lwin=0,cb=0; + real v = 0.0; + int *m,mc; + + if(gr_infos->mixed_block_flag) { + max[3] = -1; + max[0] = max[1] = max[2] = 2; + m = map[sfreq][0]; + me = mapend[sfreq][0]; + } + else { + max[0] = max[1] = max[2] = max[3] = -1; + /* max[3] not really needed in this case */ + m = map[sfreq][1]; + me = mapend[sfreq][1]; + } + + mc = 0; + for(i=0;i<2;i++) { + int lp = l[i]; + struct newhuff *h = (struct newhuff *)(ht+gr_infos->table_select[i]); + for(;lp;lp--,mc--) { + int x,y; + if( (!mc) ) { + mc = *m++; + xrpnt = ((real *) xr) + (*m++); + lwin = *m++; + cb = *m++; + if(lwin == 3) { + v = gr_infos->pow2gain[(*scf++) << shift]; + step = 1; + } + else { + v = gr_infos->full_gain[lwin][(*scf++) << shift]; + step = 3; + } + } + { + short *val = (short *)h->table; + while((y=*val++)<0) { + if (get1bit(mp)) + val -= y; + part2remain--; + } + x = y >> 4; + y &= 0xf; + } + if(x == 15) { + max[lwin] = cb; + part2remain -= h->linbits+1; + x += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt = -ispow[x] * v; + else + *xrpnt = ispow[x] * v; + } + else if(x) { + max[lwin] = cb; + if(get1bit(mp)) + *xrpnt = -ispow[x] * v; + else + *xrpnt = ispow[x] * v; + part2remain--; + } + else + *xrpnt = 0.0; + xrpnt += step; + if(y == 15) { + max[lwin] = cb; + part2remain -= h->linbits+1; + y += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt = -ispow[y] * v; + else + *xrpnt = ispow[y] * v; + } + else if(y) { + max[lwin] = cb; + if(get1bit(mp)) + *xrpnt = -ispow[y] * v; + else + *xrpnt = ispow[y] * v; + part2remain--; + } + else + *xrpnt = 0.0; + xrpnt += step; + } + } + for(;l3 && (part2remain > 0);l3--) { + struct newhuff *h = (struct newhuff *)(htc+gr_infos->count1table_select); + short *val = (short *)h->table,a; + + while((a=*val++)<0) { + part2remain--; + if(part2remain < 0) { + part2remain++; + a = 0; + break; + } + if (get1bit(mp)) + val -= a; + } + for(i=0;i<4;i++) { + if(!(i & 1)) { + if(!mc) { + mc = *m++; + xrpnt = ((real *) xr) + (*m++); + lwin = *m++; + cb = *m++; + if(lwin == 3) { + v = gr_infos->pow2gain[(*scf++) << shift]; + step = 1; + } + else { + v = gr_infos->full_gain[lwin][(*scf++) << shift]; + step = 3; + } + } + mc--; + } + if( (a & (0x8>>i)) ) { + max[lwin] = cb; + part2remain--; + if(part2remain < 0) { + part2remain++; + break; + } + if(get1bit(mp)) + *xrpnt = -v; + else + *xrpnt = v; + } + else + *xrpnt = 0.0; + xrpnt += step; + } + } + + while( m < me ) { + if(!mc) { + mc = *m++; + xrpnt = ((real *) xr) + *m++; + if( (*m++) == 3) + step = 1; + else + step = 3; + m++; /* cb */ + } + mc--; + *xrpnt = 0.0; + xrpnt += step; + *xrpnt = 0.0; + xrpnt += step; +/* we could add a little opt. here: + * if we finished a band for window 3 or a long band + * further bands could copied in a simple loop without a + * special 'map' decoding + */ + } + + gr_infos->maxband[0] = max[0]+1; + gr_infos->maxband[1] = max[1]+1; + gr_infos->maxband[2] = max[2]+1; + gr_infos->maxbandl = max[3]+1; + + { + int rmax = max[0] > max[1] ? max[0] : max[1]; + rmax = (rmax > max[2] ? rmax : max[2]) + 1; + gr_infos->maxb = rmax ? shortLimit[sfreq][rmax] : longLimit[sfreq][max[3]+1]; + } + + } + else { + /* + * decoding with 'long' BandIndex table (block_type != 2) + */ + int *pretab = (int *)(gr_infos->preflag ? pretab1 : pretab2); + int i,max = -1; + int cb = 0; + int *m = map[sfreq][2]; + real v = 0.0; + int mc = 0; + + /* + * long hash table values + */ + for(i=0;i<3;i++) { + int lp = l[i]; + struct newhuff *h = (struct newhuff *)(ht+gr_infos->table_select[i]); + + for(;lp;lp--,mc--) { + int x,y; + + if(!mc) { + mc = *m++; + v = gr_infos->pow2gain[((*scf++) + (*pretab++)) << shift]; + cb = *m++; + } + { + short *val = (short *)h->table; + while((y=*val++)<0) { + if (get1bit(mp)) + val -= y; + part2remain--; + } + x = y >> 4; + y &= 0xf; + } + if (x == 15) { + max = cb; + part2remain -= h->linbits+1; + x += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt++ = -ispow[x] * v; + else + *xrpnt++ = ispow[x] * v; + } + else if(x) { + max = cb; + if(get1bit(mp)) + *xrpnt++ = -ispow[x] * v; + else + *xrpnt++ = ispow[x] * v; + part2remain--; + } + else + *xrpnt++ = 0.0; + + if (y == 15) { + max = cb; + part2remain -= h->linbits+1; + y += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt++ = -ispow[y] * v; + else + *xrpnt++ = ispow[y] * v; + } + else if(y) { + max = cb; + if(get1bit(mp)) + *xrpnt++ = -ispow[y] * v; + else + *xrpnt++ = ispow[y] * v; + part2remain--; + } + else + *xrpnt++ = 0.0; + } + } + + /* + * short (count1table) values + */ + for(;l3 && (part2remain > 0);l3--) { + struct newhuff *h = (struct newhuff *)(htc+gr_infos->count1table_select); + short *val = (short *)h->table,a; + + while((a=*val++)<0) { + part2remain--; + if(part2remain < 0) { + part2remain++; + a = 0; + break; + } + if (get1bit(mp)) + val -= a; + } + for(i=0;i<4;i++) { + if(!(i & 1)) { + if(!mc) { + mc = *m++; + cb = *m++; + v = gr_infos->pow2gain[((*scf++) + (*pretab++)) << shift]; + } + mc--; + } + if ( (a & (0x8>>i)) ) { + max = cb; + part2remain--; + if(part2remain < 0) { + part2remain++; + break; + } + if(get1bit(mp)) + *xrpnt++ = -v; + else + *xrpnt++ = v; + } + else + *xrpnt++ = 0.0; + } + } + + /* + * zero part + */ + for(i=(&xr[SBLIMIT][0]-xrpnt)>>1;i;i--) { + *xrpnt++ = 0.0; + *xrpnt++ = 0.0; + } + + gr_infos->maxbandl = max+1; + gr_infos->maxb = longLimit[sfreq][gr_infos->maxbandl]; + } + + while( part2remain > 16 ) { + getbits(mp,16); /* Dismiss stuffing Bits */ + part2remain -= 16; + } + if(part2remain > 0) + getbits(mp,part2remain); + else if(part2remain < 0) { + fprintf(stderr,"mpg123: Can't rewind stream by %d bits!\n",-part2remain); + return 1; /* -> error */ + } + return 0; +} + + +/* + * III_stereo: calculate real channel values for Joint-I-Stereo-mode + */ +static void III_i_stereo(real xr_buf[2][SBLIMIT][SSLIMIT],int *scalefac, + struct gr_info_s *gr_infos,int sfreq,int ms_stereo,int lsf) +{ + real (*xr)[SBLIMIT*SSLIMIT] = (real (*)[SBLIMIT*SSLIMIT] ) xr_buf; + struct bandInfoStruct *bi = (struct bandInfoStruct *)&bandInfo[sfreq]; + real *tabl1,*tabl2; + + if(lsf) { + int p = gr_infos->scalefac_compress & 0x1; + if(ms_stereo) { + tabl1 = pow1_2[p]; tabl2 = pow2_2[p]; + } + else { + tabl1 = pow1_1[p]; tabl2 = pow2_1[p]; + } + } + else { + if(ms_stereo) { + tabl1 = tan1_2; tabl2 = tan2_2; + } + else { + tabl1 = tan1_1; tabl2 = tan2_1; + } + } + + if (gr_infos->block_type == 2) + { + int lwin,do_l = 0; + if( gr_infos->mixed_block_flag ) + do_l = 1; + + for (lwin=0;lwin<3;lwin++) /* process each window */ + { + /* get first band with zero values */ + int is_p,sb,idx,sfb = gr_infos->maxband[lwin]; /* sfb is minimal 3 for mixed mode */ + if(sfb > 3) + do_l = 0; + + for(;sfb<12;sfb++) + { + is_p = scalefac[sfb*3+lwin-gr_infos->mixed_block_flag]; /* scale: 0-15 */ + if(is_p != 7) { + real t1,t2; + sb = bi->shortDiff[sfb]; + idx = bi->shortIdx[sfb] + lwin; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for (; sb > 0; sb--,idx+=3) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + } + +#if 1 +/* in the original: copy 10 to 11 , here: copy 11 to 12 +maybe still wrong??? (copy 12 to 13?) */ + is_p = scalefac[11*3+lwin-gr_infos->mixed_block_flag]; /* scale: 0-15 */ + sb = bi->shortDiff[12]; + idx = bi->shortIdx[12] + lwin; +#else + is_p = scalefac[10*3+lwin-gr_infos->mixed_block_flag]; /* scale: 0-15 */ + sb = bi->shortDiff[11]; + idx = bi->shortIdx[11] + lwin; +#endif + if(is_p != 7) + { + real t1,t2; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for ( ; sb > 0; sb--,idx+=3 ) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + } /* end for(lwin; .. ; . ) */ + + if (do_l) + { +/* also check l-part, if ALL bands in the three windows are 'empty' + * and mode = mixed_mode + */ + int sfb = gr_infos->maxbandl; + int idx = bi->longIdx[sfb]; + + for ( ; sfb<8; sfb++ ) + { + int sb = bi->longDiff[sfb]; + int is_p = scalefac[sfb]; /* scale: 0-15 */ + if(is_p != 7) { + real t1,t2; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for ( ; sb > 0; sb--,idx++) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + else + idx += sb; + } + } + } + else /* ((gr_infos->block_type != 2)) */ + { + int sfb = gr_infos->maxbandl; + int is_p,idx = bi->longIdx[sfb]; + for ( ; sfb<21; sfb++) + { + int sb = bi->longDiff[sfb]; + is_p = scalefac[sfb]; /* scale: 0-15 */ + if(is_p != 7) { + real t1,t2; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for ( ; sb > 0; sb--,idx++) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + else + idx += sb; + } + + is_p = scalefac[20]; /* copy l-band 20 to l-band 21 */ + if(is_p != 7) + { + int sb; + real t1 = tabl1[is_p],t2 = tabl2[is_p]; + + for ( sb = bi->longDiff[21]; sb > 0; sb--,idx++ ) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + } /* ... */ +} + +static void III_antialias(real xr[SBLIMIT][SSLIMIT],struct gr_info_s *gr_infos) +{ + int sblim; + + if(gr_infos->block_type == 2) + { + if(!gr_infos->mixed_block_flag) + return; + sblim = 1; + } + else { + sblim = gr_infos->maxb-1; + } + + /* 31 alias-reduction operations between each pair of sub-bands */ + /* with 8 butterflies between each pair */ + + { + int sb; + real *xr1=(real *) xr[1]; + + for(sb=sblim;sb;sb--,xr1+=10) + { + int ss; + real *cs=aa_cs,*ca=aa_ca; + real *xr2 = xr1; + + for(ss=7;ss>=0;ss--) + { /* upper and lower butterfly inputs */ + real bu = *--xr2,bd = *xr1; + *xr2 = (bu * (*cs) ) - (bd * (*ca) ); + *xr1++ = (bd * (*cs++) ) + (bu * (*ca++) ); + } + } + } +} + +/* + DCT insipired by Jeff Tsay's DCT from the maplay package + this is an optimized version with manual unroll. + + References: + [1] S. Winograd: "On Computing the Discrete Fourier Transform", + Mathematics of Computation, Volume 32, Number 141, January 1978, + Pages 175-199 +*/ + +static void dct36(real *inbuf,real *o1,real *o2,real *wintab,real *tsbuf) +{ + { + real *in = inbuf; + + in[17]+=in[16]; in[16]+=in[15]; in[15]+=in[14]; + in[14]+=in[13]; in[13]+=in[12]; in[12]+=in[11]; + in[11]+=in[10]; in[10]+=in[9]; in[9] +=in[8]; + in[8] +=in[7]; in[7] +=in[6]; in[6] +=in[5]; + in[5] +=in[4]; in[4] +=in[3]; in[3] +=in[2]; + in[2] +=in[1]; in[1] +=in[0]; + + in[17]+=in[15]; in[15]+=in[13]; in[13]+=in[11]; in[11]+=in[9]; + in[9] +=in[7]; in[7] +=in[5]; in[5] +=in[3]; in[3] +=in[1]; + + + { + +#define MACRO0(v) { \ + real tmp; \ + out2[9+(v)] = (tmp = sum0 + sum1) * w[27+(v)]; \ + out2[8-(v)] = tmp * w[26-(v)]; } \ + sum0 -= sum1; \ + ts[SBLIMIT*(8-(v))] = out1[8-(v)] + sum0 * w[8-(v)]; \ + ts[SBLIMIT*(9+(v))] = out1[9+(v)] + sum0 * w[9+(v)]; +#define MACRO1(v) { \ + real sum0,sum1; \ + sum0 = tmp1a + tmp2a; \ + sum1 = (tmp1b + tmp2b) * tfcos36[(v)]; \ + MACRO0(v); } +#define MACRO2(v) { \ + real sum0,sum1; \ + sum0 = tmp2a - tmp1a; \ + sum1 = (tmp2b - tmp1b) * tfcos36[(v)]; \ + MACRO0(v); } + + const real *c = COS9; + real *out2 = o2; + real *w = wintab; + real *out1 = o1; + real *ts = tsbuf; + + real ta33,ta66,tb33,tb66; + + ta33 = in[2*3+0] * c[3]; + ta66 = in[2*6+0] * c[6]; + tb33 = in[2*3+1] * c[3]; + tb66 = in[2*6+1] * c[6]; + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = in[2*1+0] * c[1] + ta33 + in[2*5+0] * c[5] + in[2*7+0] * c[7]; + tmp1b = in[2*1+1] * c[1] + tb33 + in[2*5+1] * c[5] + in[2*7+1] * c[7]; + tmp2a = in[2*0+0] + in[2*2+0] * c[2] + in[2*4+0] * c[4] + ta66 + in[2*8+0] * c[8]; + tmp2b = in[2*0+1] + in[2*2+1] * c[2] + in[2*4+1] * c[4] + tb66 + in[2*8+1] * c[8]; + + MACRO1(0); + MACRO2(8); + } + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = ( in[2*1+0] - in[2*5+0] - in[2*7+0] ) * c[3]; + tmp1b = ( in[2*1+1] - in[2*5+1] - in[2*7+1] ) * c[3]; + tmp2a = ( in[2*2+0] - in[2*4+0] - in[2*8+0] ) * c[6] - in[2*6+0] + in[2*0+0]; + tmp2b = ( in[2*2+1] - in[2*4+1] - in[2*8+1] ) * c[6] - in[2*6+1] + in[2*0+1]; + + MACRO1(1); + MACRO2(7); + } + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = in[2*1+0] * c[5] - ta33 - in[2*5+0] * c[7] + in[2*7+0] * c[1]; + tmp1b = in[2*1+1] * c[5] - tb33 - in[2*5+1] * c[7] + in[2*7+1] * c[1]; + tmp2a = in[2*0+0] - in[2*2+0] * c[8] - in[2*4+0] * c[2] + ta66 + in[2*8+0] * c[4]; + tmp2b = in[2*0+1] - in[2*2+1] * c[8] - in[2*4+1] * c[2] + tb66 + in[2*8+1] * c[4]; + + MACRO1(2); + MACRO2(6); + } + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = in[2*1+0] * c[7] - ta33 + in[2*5+0] * c[1] - in[2*7+0] * c[5]; + tmp1b = in[2*1+1] * c[7] - tb33 + in[2*5+1] * c[1] - in[2*7+1] * c[5]; + tmp2a = in[2*0+0] - in[2*2+0] * c[4] + in[2*4+0] * c[8] + ta66 - in[2*8+0] * c[2]; + tmp2b = in[2*0+1] - in[2*2+1] * c[4] + in[2*4+1] * c[8] + tb66 - in[2*8+1] * c[2]; + + MACRO1(3); + MACRO2(5); + } + + { + real sum0,sum1; + sum0 = in[2*0+0] - in[2*2+0] + in[2*4+0] - in[2*6+0] + in[2*8+0]; + sum1 = (in[2*0+1] - in[2*2+1] + in[2*4+1] - in[2*6+1] + in[2*8+1] ) * tfcos36[4]; + MACRO0(4); + } + } + + } +} + +/* + * new DCT12 + */ +static void dct12(real *in,real *rawout1,real *rawout2,real *wi,real *ts) +{ +#define DCT12_PART1 \ + in5 = in[5*3]; \ + in5 += (in4 = in[4*3]); \ + in4 += (in3 = in[3*3]); \ + in3 += (in2 = in[2*3]); \ + in2 += (in1 = in[1*3]); \ + in1 += (in0 = in[0*3]); \ + \ + in5 += in3; in3 += in1; \ + \ + in2 *= COS6_1; \ + in3 *= COS6_1; \ + +#define DCT12_PART2 \ + in0 += in4 * COS6_2; \ + \ + in4 = in0 + in2; \ + in0 -= in2; \ + \ + in1 += in5 * COS6_2; \ + \ + in5 = (in1 + in3) * tfcos12[0]; \ + in1 = (in1 - in3) * tfcos12[2]; \ + \ + in3 = in4 + in5; \ + in4 -= in5; \ + \ + in2 = in0 + in1; \ + in0 -= in1; + + + { + real in0,in1,in2,in3,in4,in5; + real *out1 = rawout1; + ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2]; + ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5]; + + DCT12_PART1 + + { + real tmp0,tmp1 = (in0 - in4); + { + real tmp2 = (in1 - in5) * tfcos12[1]; + tmp0 = tmp1 + tmp2; + tmp1 -= tmp2; + } + ts[(17-1)*SBLIMIT] = out1[17-1] + tmp0 * wi[11-1]; + ts[(12+1)*SBLIMIT] = out1[12+1] + tmp0 * wi[6+1]; + ts[(6 +1)*SBLIMIT] = out1[6 +1] + tmp1 * wi[1]; + ts[(11-1)*SBLIMIT] = out1[11-1] + tmp1 * wi[5-1]; + } + + DCT12_PART2 + + ts[(17-0)*SBLIMIT] = out1[17-0] + in2 * wi[11-0]; + ts[(12+0)*SBLIMIT] = out1[12+0] + in2 * wi[6+0]; + ts[(12+2)*SBLIMIT] = out1[12+2] + in3 * wi[6+2]; + ts[(17-2)*SBLIMIT] = out1[17-2] + in3 * wi[11-2]; + + ts[(6+0)*SBLIMIT] = out1[6+0] + in0 * wi[0]; + ts[(11-0)*SBLIMIT] = out1[11-0] + in0 * wi[5-0]; + ts[(6+2)*SBLIMIT] = out1[6+2] + in4 * wi[2]; + ts[(11-2)*SBLIMIT] = out1[11-2] + in4 * wi[5-2]; + } + + in++; + + { + real in0,in1,in2,in3,in4,in5; + real *out2 = rawout2; + + DCT12_PART1 + + { + real tmp0,tmp1 = (in0 - in4); + { + real tmp2 = (in1 - in5) * tfcos12[1]; + tmp0 = tmp1 + tmp2; + tmp1 -= tmp2; + } + out2[5-1] = tmp0 * wi[11-1]; + out2[0+1] = tmp0 * wi[6+1]; + ts[(12+1)*SBLIMIT] += tmp1 * wi[1]; + ts[(17-1)*SBLIMIT] += tmp1 * wi[5-1]; + } + + DCT12_PART2 + + out2[5-0] = in2 * wi[11-0]; + out2[0+0] = in2 * wi[6+0]; + out2[0+2] = in3 * wi[6+2]; + out2[5-2] = in3 * wi[11-2]; + + ts[(12+0)*SBLIMIT] += in0 * wi[0]; + ts[(17-0)*SBLIMIT] += in0 * wi[5-0]; + ts[(12+2)*SBLIMIT] += in4 * wi[2]; + ts[(17-2)*SBLIMIT] += in4 * wi[5-2]; + } + + in++; + + { + real in0,in1,in2,in3,in4,in5; + real *out2 = rawout2; + out2[12]=out2[13]=out2[14]=out2[15]=out2[16]=out2[17]=0.0; + + DCT12_PART1 + + { + real tmp0,tmp1 = (in0 - in4); + { + real tmp2 = (in1 - in5) * tfcos12[1]; + tmp0 = tmp1 + tmp2; + tmp1 -= tmp2; + } + out2[11-1] = tmp0 * wi[11-1]; + out2[6 +1] = tmp0 * wi[6+1]; + out2[0+1] += tmp1 * wi[1]; + out2[5-1] += tmp1 * wi[5-1]; + } + + DCT12_PART2 + + out2[11-0] = in2 * wi[11-0]; + out2[6 +0] = in2 * wi[6+0]; + out2[6 +2] = in3 * wi[6+2]; + out2[11-2] = in3 * wi[11-2]; + + out2[0+0] += in0 * wi[0]; + out2[5-0] += in0 * wi[5-0]; + out2[0+2] += in4 * wi[2]; + out2[5-2] += in4 * wi[5-2]; + } +} + +/* + * III_hybrid + */ +static void III_hybrid( PMPSTR mp, real fsIn[SBLIMIT][SSLIMIT],real tsOut[SSLIMIT][SBLIMIT], + int ch,struct gr_info_s *gr_infos) +{ + real *tspnt = (real *) tsOut; + real (*block)[2][SBLIMIT*SSLIMIT] = mp->hybrid_block; + int *blc = mp->hybrid_blc; + real *rawout1,*rawout2; + int bt; + int sb = 0; + + { + int b = blc[ch]; + rawout1=block[b][ch]; + b=-b+1; + rawout2=block[b][ch]; + blc[ch] = b; + } + + + if(gr_infos->mixed_block_flag) { + sb = 2; + dct36(fsIn[0],rawout1,rawout2,win[0],tspnt); + dct36(fsIn[1],rawout1+18,rawout2+18,win1[0],tspnt+1); + rawout1 += 36; rawout2 += 36; tspnt += 2; + } + + bt = gr_infos->block_type; + if(bt == 2) { + for (; sb<(int)gr_infos->maxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) { + dct12(fsIn[sb],rawout1,rawout2,win[2],tspnt); + dct12(fsIn[sb+1],rawout1+18,rawout2+18,win1[2],tspnt+1); + } + } + else { + for (; sb<(int)gr_infos->maxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) { + dct36(fsIn[sb],rawout1,rawout2,win[bt],tspnt); + dct36(fsIn[sb+1],rawout1+18,rawout2+18,win1[bt],tspnt+1); + } + } + + for(;sbfr; + int stereo = fr->stereo; + int single = fr->single; + int ms_stereo; + int sfreq = fr->sampling_frequency; + int granules; + int ch,gr,databits; + + if(stereo == 1) { /* stream is mono */ + single = 0; + } + + if(fr->mode == MPG_MD_JOINT_STEREO) { + ms_stereo = fr->mode_ext & 0x2; + } + else + ms_stereo = 0; + + + if(fr->lsf) { + granules = 1; + III_get_side_info_2(mp,&sideinfo,stereo,ms_stereo,sfreq,single); + } + else { + granules = 2; + III_get_side_info_1(mp,&sideinfo,stereo,ms_stereo,sfreq,single); + } + + databits=0; + for (gr=0 ; gr < granules ; ++gr) { + for (ch=0; ch < stereo ; ++ch) { + struct gr_info_s *gr_infos = &(sideinfo.ch[ch].gr[gr]); + databits += gr_infos->part2_3_length; + } + } + return databits-8*sideinfo.main_data_begin; +} + + + +int do_layer3( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point, + int (*synth_1to1_mono_ptr)(PMPSTR,real *,unsigned char *,int *), + int (*synth_1to1_ptr)(PMPSTR,real *,int,unsigned char *, int *) ) +{ + int gr, ch, ss,clip=0; + int scalefacs[2][39]; /* max 39 for short[13][3] mode, mixed: 38, long: 22 */ + /* struct III_sideinfo sideinfo; */ + struct frame *fr=&(mp->fr); + int stereo = fr->stereo; + int single = fr->single; + int ms_stereo,i_stereo; + int sfreq = fr->sampling_frequency; + int stereo1,granules; + + if(set_pointer(mp, (int)sideinfo.main_data_begin) == MP3_ERR) + return 0; + + if(stereo == 1) { /* stream is mono */ + stereo1 = 1; + single = 0; + } + else if(single >= 0) /* stream is stereo, but force to mono */ + stereo1 = 1; + else + stereo1 = 2; + + if(fr->mode == MPG_MD_JOINT_STEREO) { + ms_stereo = fr->mode_ext & 0x2; + i_stereo = fr->mode_ext & 0x1; + } + else + ms_stereo = i_stereo = 0; + + + if(fr->lsf) { + granules = 1; + } + else { + granules = 2; + } + + + for (gr=0;grlsf) + part2bits = III_get_scale_factors_2(mp,scalefacs[0],gr_infos,0); + else { + part2bits = III_get_scale_factors_1(mp,scalefacs[0],gr_infos); + } + +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + int i; + mpg123_pinfo->sfbits[gr][0] = part2bits; + for (i=0; i<39; i++) + mpg123_pinfo->sfb_s[gr][0][i]=scalefacs[0][i]; + } +#endif + + if(III_dequantize_sample(mp, hybridIn[0], scalefacs[0],gr_infos,sfreq,part2bits)) + return clip; + } + if(stereo == 2) { + struct gr_info_s *gr_infos = &(sideinfo.ch[1].gr[gr]); + long part2bits; + if(fr->lsf) + part2bits = III_get_scale_factors_2(mp,scalefacs[1],gr_infos,i_stereo); + else { + part2bits = III_get_scale_factors_1(mp,scalefacs[1],gr_infos); + } +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + int i; + mpg123_pinfo->sfbits[gr][1] = part2bits; + for (i=0; i<39; i++) + mpg123_pinfo->sfb_s[gr][1][i]=scalefacs[1][i]; + } +#endif + + if(III_dequantize_sample(mp, hybridIn[1],scalefacs[1],gr_infos,sfreq,part2bits)) + return clip; + + if(ms_stereo) { + int i; + for(i=0;ilsf); + + if(ms_stereo || i_stereo || (single == 3) ) { + if(gr_infos->maxb > sideinfo.ch[0].gr[gr].maxb) + sideinfo.ch[0].gr[gr].maxb = gr_infos->maxb; + else + gr_infos->maxb = sideinfo.ch[0].gr[gr].maxb; + } + + switch(single) { + case 3: + { + int i; + real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; + for(i=0;i<(int)(SSLIMIT*gr_infos->maxb);i++,in0++) + *in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */ + } + break; + case 1: + { + int i; + real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; + for(i=0;i<(int)(SSLIMIT*gr_infos->maxb);i++) + *in0++ = *in1++; + } + break; + } + } + +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + int i,sb; + float ifqstep; + + mpg123_pinfo->bitrate = + tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index]; + mpg123_pinfo->sampfreq = freqs[sfreq]; + mpg123_pinfo->emph = fr->emphasis; + mpg123_pinfo->crc = fr->error_protection; + mpg123_pinfo->padding = fr->padding; + mpg123_pinfo->stereo = fr->stereo; + mpg123_pinfo->js = (fr->mode == MPG_MD_JOINT_STEREO); + mpg123_pinfo->ms_stereo = ms_stereo; + mpg123_pinfo->i_stereo = i_stereo; + mpg123_pinfo->maindata = sideinfo.main_data_begin; + + for(ch=0;chbig_values[gr][ch]=gr_infos->big_values; + mpg123_pinfo->scalefac_scale[gr][ch]=gr_infos->scalefac_scale; + mpg123_pinfo->mixed[gr][ch] = gr_infos->mixed_block_flag; + mpg123_pinfo->mpg123blocktype[gr][ch]=gr_infos->block_type; + mpg123_pinfo->mainbits[gr][ch] = gr_infos->part2_3_length; + mpg123_pinfo->preflag[gr][ch] = gr_infos->preflag; + if (gr==1) mpg123_pinfo->scfsi[ch] = gr_infos->scfsi; + } + + + for (ch=0;chscalefac_scale[gr][ch] == 0 ) ? .5 : 1.0; + if (2==gr_infos->block_type) { + for (i=0; i<3; i++) { + for (sb=0; sb<12; sb++) { + int j = 3*sb+i; + /* + is_p = scalefac[sfb*3+lwin-gr_infos->mixed_block_flag]; + */ + /* scalefac was copied into mpg123_pinfo->sfb_s[] above */ + mpg123_pinfo->sfb_s[gr][ch][j] = -ifqstep*mpg123_pinfo->sfb_s[gr][ch][j-gr_infos->mixed_block_flag]; + mpg123_pinfo->sfb_s[gr][ch][j] -= 2*(mpg123_pinfo->sub_gain[gr][ch][i]); + } + mpg123_pinfo->sfb_s[gr][ch][3*sb+i] = - 2*(mpg123_pinfo->sub_gain[gr][ch][i]); + } + }else{ + for (sb=0; sb<21; sb++) { + /* scalefac was copied into mpg123_pinfo->sfb[] above */ + mpg123_pinfo->sfb[gr][ch][sb] = mpg123_pinfo->sfb_s[gr][ch][sb]; + if (gr_infos->preflag) mpg123_pinfo->sfb[gr][ch][sb] += pretab1[sb]; + mpg123_pinfo->sfb[gr][ch][sb] *= -ifqstep; + } + mpg123_pinfo->sfb[gr][ch][21]=0; + } + } + + + + for(ch=0;chmpg123xr[gr][ch][j]=hybridIn[ch][sb][ss]; + } + } +#endif + + + for(ch=0;ch= 0) { + clip += (*synth_1to1_mono_ptr)(mp, hybridOut[0][ss],pcm_sample,pcm_point); + } + else { + int p1 = *pcm_point; + clip += (*synth_1to1_ptr)(mp, hybridOut[0][ss],0,pcm_sample,&p1); + clip += (*synth_1to1_ptr)(mp, hybridOut[1][ss],1,pcm_sample,pcm_point); + } + } + } + + return clip; +} + + diff --git a/lame-3.97/mpglib/.svn/text-base/layer3.h.svn-base b/lame-3.97/mpglib/.svn/text-base/layer3.h.svn-base new file mode 100644 index 0000000..41e1316 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/layer3.h.svn-base @@ -0,0 +1,30 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef LAYER3_H_INCLUDED +#define LAYER3_H_INCLUDED + +void init_layer3(int); +int do_layer3_sideinfo(PMPSTR mp); +int do_layer3( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point, + int (*synth_1to1_mono_ptr)(PMPSTR,real *,unsigned char *,int *), + int (*synth_1to1_ptr)(PMPSTR,real *,int,unsigned char *, int *) ); + +#endif + + diff --git a/lame-3.97/mpglib/.svn/text-base/mpg123.h.svn-base b/lame-3.97/mpglib/.svn/text-base/mpg123.h.svn-base new file mode 100644 index 0000000..f491367 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/mpg123.h.svn-base @@ -0,0 +1,136 @@ +#ifndef MPG123_H_INCLUDED +#define MPG123_H_INCLUDED + +#include + +#ifdef STDC_HEADERS +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include + + +#if defined(__riscos__) && defined(FPA10) +#include "ymath.h" +#else +#include +#endif + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif +#ifndef M_SQRT2 +#define M_SQRT2 1.41421356237309504880 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#define REAL_IS_FLOAT + +#ifdef REAL_IS_FLOAT +# define real float +#elif defined(REAL_IS_LONG_DOUBLE) +# define real long double +#else +# define real double +#endif + +#define FALSE 0 +#define TRUE 1 + +#define SBLIMIT 32 +#define SSLIMIT 18 + +#define MPG_MD_STEREO 0 +#define MPG_MD_JOINT_STEREO 1 +#define MPG_MD_DUAL_CHANNEL 2 +#define MPG_MD_MONO 3 + +#define MAXFRAMESIZE 2880 + +/* AF: ADDED FOR LAYER1/LAYER2 */ +#define SCALE_BLOCK 12 + + +/* Pre Shift fo 16 to 8 bit converter table */ +#define AUSHIFT (3) + +struct frame { + int stereo; + int jsbound; + int single; + int lsf; + int mpeg25; + int header_change; + int lay; + int error_protection; + int bitrate_index; + int sampling_frequency; + int padding; + int extension; + int mode; + int mode_ext; + int copyright; + int original; + int emphasis; + int framesize; /* computed framesize */ + + /* AF: ADDED FOR LAYER1/LAYER2 */ +#if defined(USE_LAYER_2) || defined(USE_LAYER_1) + int II_sblimit; + struct al_table2 *alloc; + int down_sample_sblimit; + int down_sample; + +#endif + +}; + +struct gr_info_s { + int scfsi; + unsigned part2_3_length; + unsigned big_values; + unsigned scalefac_compress; + unsigned block_type; + unsigned mixed_block_flag; + unsigned table_select[3]; + unsigned subblock_gain[3]; + unsigned maxband[3]; + unsigned maxbandl; + unsigned maxb; + unsigned region1start; + unsigned region2start; + unsigned preflag; + unsigned scalefac_scale; + unsigned count1table_select; + real *full_gain[3]; + real *pow2gain; +}; + +struct III_sideinfo +{ + unsigned main_data_begin; + unsigned private_bits; + struct { + struct gr_info_s gr[2]; + } ch[2]; +}; + + +#endif + diff --git a/lame-3.97/mpglib/.svn/text-base/mpglib.h.svn-base b/lame-3.97/mpglib/.svn/text-base/mpglib.h.svn-base new file mode 100644 index 0000000..8fe6efd --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/mpglib.h.svn-base @@ -0,0 +1,66 @@ +#include "lame-analysis.h" + +#ifndef NOANALYSIS +extern plotting_data *mpg123_pinfo; +#endif + +struct buf { + unsigned char *pnt; + long size; + long pos; + struct buf *next; + struct buf *prev; +}; + +struct framebuf { + struct buf *buf; + long pos; + struct frame *next; + struct frame *prev; +}; + +typedef struct mpstr_tag { + struct buf *head,*tail; + int vbr_header; /* 1 if valid Xing vbr header detected */ + int num_frames; /* set if vbr header present */ + int enc_delay; /* set if vbr header present */ + int enc_padding; /* set if vbr header present */ + int header_parsed; + int side_parsed; + int data_parsed; + int free_format; /* 1 = free format frame */ + int old_free_format; /* 1 = last frame was free format */ + int bsize; + int framesize; + int ssize; + int dsize; + int fsizeold; + int fsizeold_nopadding; + struct frame fr; + unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */ + real hybrid_block[2][2][SBLIMIT*SSLIMIT]; + int hybrid_blc[2]; + unsigned long header; + int bsnum; + real synth_buffs[2][2][0x110]; + int synth_bo; + int sync_bitstream; + + int bitindex; + unsigned char* wordpointer; +} MPSTR, *PMPSTR; + + +#if ( defined(_MSC_VER) || defined(__BORLANDC__) ) + typedef int BOOL; /* windef.h contains the same definition */ +#else + #define BOOL int +#endif + +#define MP3_ERR -1 +#define MP3_OK 0 +#define MP3_NEED_MORE 1 + + + + diff --git a/lame-3.97/mpglib/.svn/text-base/mpglib_vc6.dsp.svn-base b/lame-3.97/mpglib/.svn/text-base/mpglib_vc6.dsp.svn-base new file mode 100644 index 0000000..5b25d74 --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/mpglib_vc6.dsp.svn-base @@ -0,0 +1,300 @@ +# Microsoft Developer Studio Project File - Name="mpglib" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=mpglib - Win32 Debug GTK +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mpglib_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mpglib_vc6.mak" CFG="mpglib - Win32 Debug GTK" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mpglib - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Release NASM" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Debug GTK" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Release GTK" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 1 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mpglib - Win32 Release" + +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "HAVE_CONFIG_H" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Release\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug" + +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "HAVE_CONFIG_H" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "USE_LAYER_2" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Debug\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "mpglib___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "mpglib___Win32_Release_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "mpglib___Win32_Release_NASM" +# PROP Intermediate_Dir "mpglib___Win32_Release_NASM" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "USE_LAYER_1" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Release\mpglib.lib" +# ADD LIB32 /nologo /out:"Release\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "mpglib___Win32_Debug_GTK" +# PROP BASE Intermediate_Dir "mpglib___Win32_Debug_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "mpglib___Win32_Debug_GTK" +# PROP Intermediate_Dir "mpglib___Win32_Debug_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "USE_LAYER_2" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD CPP /nologo /W3 /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "USE_LAYER_2" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Debug\mpglib.lib" +# ADD LIB32 /nologo /out:"Debug\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "mpglib___Win32_Release_GTK" +# PROP BASE Intermediate_Dir "mpglib___Win32_Release_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "mpglib___Win32_Release_GTK" +# PROP Intermediate_Dir "mpglib___Win32_Release_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Release\mpglib.lib" +# ADD LIB32 /nologo /out:"Release\mpglib.lib" + +!ENDIF + +# Begin Target + +# Name "mpglib - Win32 Release" +# Name "mpglib - Win32 Debug" +# Name "mpglib - Win32 Release NASM" +# Name "mpglib - Win32 Debug GTK" +# Name "mpglib - Win32 Release GTK" +# Begin Group "Source" + +# PROP Default_Filter "c" +# Begin Source File + +SOURCE=.\common.c +# End Source File +# Begin Source File + +SOURCE=.\dct64_i386.c +# End Source File +# Begin Source File + +SOURCE=.\decode_i386.c +# End Source File +# Begin Source File + +SOURCE=.\interface.c +# End Source File +# Begin Source File + +SOURCE=.\layer1.c +# End Source File +# Begin Source File + +SOURCE=.\layer2.c +# End Source File +# Begin Source File + +SOURCE=.\layer3.c +# End Source File +# Begin Source File + +SOURCE=.\tabinit.c +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\common.h +# End Source File +# Begin Source File + +SOURCE=..\configMS.h + +!IF "$(CFG)" == "mpglib - Win32 Release" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release NASM" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\dct64_i386.h +# End Source File +# Begin Source File + +SOURCE=.\decode_i386.h +# End Source File +# Begin Source File + +SOURCE=.\huffman.h +# End Source File +# Begin Source File + +SOURCE=.\interface.h +# End Source File +# Begin Source File + +SOURCE=.\layer1.h +# End Source File +# Begin Source File + +SOURCE=.\layer2.h +# End Source File +# Begin Source File + +SOURCE=.\layer3.h +# End Source File +# Begin Source File + +SOURCE=.\mpg123.h +# End Source File +# Begin Source File + +SOURCE=.\mpglib.h +# End Source File +# Begin Source File + +SOURCE=.\tabinit.h +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/mpglib/.svn/text-base/mpglib_vc7.vcproj.svn-base b/lame-3.97/mpglib/.svn/text-base/mpglib_vc7.vcproj.svn-base new file mode 100644 index 0000000..e25272d --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/mpglib_vc7.vcproj.svn-base @@ -0,0 +1,1425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/mpglib/.svn/text-base/tabinit.c.svn-base b/lame-3.97/mpglib/.svn/text-base/tabinit.c.svn-base new file mode 100644 index 0000000..ed8114a --- /dev/null +++ b/lame-3.97/mpglib/.svn/text-base/tabinit.c.svn-base @@ -0,0 +1,123 @@ +/* $Id: tabinit.c,v 1.12 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "tabinit.h" +#include "mpg123.h" + +#ifdef WITH_DMALLOC +#include +#endif + +real decwin[512+32]; +static real cos64[16],cos32[8],cos16[4],cos8[2],cos4[1]; +real *pnts[] = { cos64,cos32,cos16,cos8,cos4 }; + +static const double dewin[512] = { + 0.000000000,-0.000015259,-0.000015259,-0.000015259, + -0.000015259,-0.000015259,-0.000015259,-0.000030518, + -0.000030518,-0.000030518,-0.000030518,-0.000045776, + -0.000045776,-0.000061035,-0.000061035,-0.000076294, + -0.000076294,-0.000091553,-0.000106812,-0.000106812, + -0.000122070,-0.000137329,-0.000152588,-0.000167847, + -0.000198364,-0.000213623,-0.000244141,-0.000259399, + -0.000289917,-0.000320435,-0.000366211,-0.000396729, + -0.000442505,-0.000473022,-0.000534058,-0.000579834, + -0.000625610,-0.000686646,-0.000747681,-0.000808716, + -0.000885010,-0.000961304,-0.001037598,-0.001113892, + -0.001205444,-0.001296997,-0.001388550,-0.001480103, + -0.001586914,-0.001693726,-0.001785278,-0.001907349, + -0.002014160,-0.002120972,-0.002243042,-0.002349854, + -0.002456665,-0.002578735,-0.002685547,-0.002792358, + -0.002899170,-0.002990723,-0.003082275,-0.003173828, + -0.003250122,-0.003326416,-0.003387451,-0.003433228, + -0.003463745,-0.003479004,-0.003479004,-0.003463745, + -0.003417969,-0.003372192,-0.003280640,-0.003173828, + -0.003051758,-0.002883911,-0.002700806,-0.002487183, + -0.002227783,-0.001937866,-0.001617432,-0.001266479, + -0.000869751,-0.000442505, 0.000030518, 0.000549316, + 0.001098633, 0.001693726, 0.002334595, 0.003005981, + 0.003723145, 0.004486084, 0.005294800, 0.006118774, + 0.007003784, 0.007919312, 0.008865356, 0.009841919, + 0.010848999, 0.011886597, 0.012939453, 0.014022827, + 0.015121460, 0.016235352, 0.017349243, 0.018463135, + 0.019577026, 0.020690918, 0.021789551, 0.022857666, + 0.023910522, 0.024932861, 0.025909424, 0.026840210, + 0.027725220, 0.028533936, 0.029281616, 0.029937744, + 0.030532837, 0.031005859, 0.031387329, 0.031661987, + 0.031814575, 0.031845093, 0.031738281, 0.031478882, + 0.031082153, 0.030517578, 0.029785156, 0.028884888, + 0.027801514, 0.026535034, 0.025085449, 0.023422241, + 0.021575928, 0.019531250, 0.017257690, 0.014801025, + 0.012115479, 0.009231567, 0.006134033, 0.002822876, + -0.000686646,-0.004394531,-0.008316040,-0.012420654, + -0.016708374,-0.021179199,-0.025817871,-0.030609131, + -0.035552979,-0.040634155,-0.045837402,-0.051132202, + -0.056533813,-0.061996460,-0.067520142,-0.073059082, + -0.078628540,-0.084182739,-0.089706421,-0.095169067, + -0.100540161,-0.105819702,-0.110946655,-0.115921021, + -0.120697021,-0.125259399,-0.129562378,-0.133590698, + -0.137298584,-0.140670776,-0.143676758,-0.146255493, + -0.148422241,-0.150115967,-0.151306152,-0.151962280, + -0.152069092,-0.151596069,-0.150497437,-0.148773193, + -0.146362305,-0.143264771,-0.139450073,-0.134887695, + -0.129577637,-0.123474121,-0.116577148,-0.108856201, + -0.100311279,-0.090927124,-0.080688477,-0.069595337, + -0.057617187,-0.044784546,-0.031082153,-0.016510010, + -0.001068115, 0.015228271, 0.032379150, 0.050354004, + 0.069168091, 0.088775635, 0.109161377, 0.130310059, + 0.152206421, 0.174789429, 0.198059082, 0.221984863, + 0.246505737, 0.271591187, 0.297210693, 0.323318481, + 0.349868774, 0.376800537, 0.404083252, 0.431655884, + 0.459472656, 0.487472534, 0.515609741, 0.543823242, + 0.572036743, 0.600219727, 0.628295898, 0.656219482, + 0.683914185, 0.711318970, 0.738372803, 0.765029907, + 0.791213989, 0.816864014, 0.841949463, 0.866363525, + 0.890090942, 0.913055420, 0.935195923, 0.956481934, + 0.976852417, 0.996246338, 1.014617920, 1.031936646, + 1.048156738, 1.063217163, 1.077117920, 1.089782715, + 1.101211548, 1.111373901, 1.120223999, 1.127746582, + 1.133926392, 1.138763428, 1.142211914, 1.144287109, + 1.144989014 +}; + +void make_decode_tables(long scaleval) +{ + int i,j,k,kr,divv; + real *table,*costab; + + + for(i=0;i<5;i++) + { + kr=0x10>>i; divv=0x40>>i; + costab = pnts[i]; + for(k=0;k&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck diff --git a/lame-3.97/mpglib/Makefile.in b/lame-3.97/mpglib/Makefile.in new file mode 100644 index 0000000..4fe4ff8 --- /dev/null +++ b/lame-3.97/mpglib/Makefile.in @@ -0,0 +1,541 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# global section for every Makefile.am + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +ANSI2KNR = $(top_srcdir)/ansi2knr +DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/Makefile.am.global TODO \ + depcomp +subdir = mpglib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libmpgdecoder_la_LIBADD = +am_libmpgdecoder_la_OBJECTS = common$U.lo dct64_i386$U.lo \ + decode_i386$U.lo interface$U.lo layer1$U.lo layer2$U.lo \ + layer3$U.lo tabinit$U.lo +libmpgdecoder_la_OBJECTS = $(am_libmpgdecoder_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libmpgdecoder_la_SOURCES) +DIST_SOURCES = $(libmpgdecoder_la_SOURCES) +HEADERS = $(noinst_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_DEFS = @CONFIG_DEFS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CPUTYPE = @CPUTYPE@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ @CONFIG_DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ +FRONTEND_LDADD = @FRONTEND_LDADD@ +FRONTEND_LDFLAGS = @FRONTEND_LDFLAGS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +HAVE_NASM_FALSE = @HAVE_NASM_FALSE@ +HAVE_NASM_TRUE = @HAVE_NASM_TRUE@ +INCLUDES = @INCLUDES@ -I$(top_srcdir)/libmp3lame -I$(top_builddir) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDADD = @LDADD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LIB_MAJOR_VERSION = @LIB_MAJOR_VERSION@ +LIB_MINOR_VERSION = @LIB_MINOR_VERSION@ +LIB_WITH_DECODER_FALSE = @LIB_WITH_DECODER_FALSE@ +LIB_WITH_DECODER_TRUE = @LIB_WITH_DECODER_TRUE@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEDEP = @MAKEDEP@ +MAKEINFO = @MAKEINFO@ +NASM = @NASM@ +NASM_FORMAT = @NASM_FORMAT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +RM_F = @RM_F@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +U = @U@ +VERSION = @VERSION@ +WITH_BRHIST_FALSE = @WITH_BRHIST_FALSE@ +WITH_BRHIST_TRUE = @WITH_BRHIST_TRUE@ +WITH_FRONTEND = @WITH_FRONTEND@ +WITH_MP3RTP = @WITH_MP3RTP@ +WITH_MP3X = @WITH_MP3X@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +AUTOMAKE_OPTIONS = 1.5 foreign $(top_srcdir)/ansi2knr +EXTRA_DIST = \ + mpglib_vc6.dsp \ + mpglib_vc7.vcproj + +noinst_LTLIBRARIES = libmpgdecoder.la +libmpgdecoder_la_SOURCES = common.c \ + dct64_i386.c \ + decode_i386.c \ + interface.c \ + layer1.c \ + layer2.c \ + layer3.c \ + tabinit.c + +noinst_HEADERS = common.h \ + dct64_i386.h \ + decode_i386.h \ + huffman.h \ + interface.h \ + l2tables.h \ + layer1.h \ + layer2.h \ + layer3.h \ + mpg123.h \ + mpglib.h \ + tabinit.h + +LCLINTFLAGS = \ + +posixlib \ + +showsummary \ + +showalluses \ + +whichlib \ + +forcehints \ + -fixedformalarray \ + +matchanyintegral \ + -Dlint + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.global $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mpglib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign mpglib/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libmpgdecoder.la: $(libmpgdecoder_la_OBJECTS) $(libmpgdecoder_la_DEPENDENCIES) + $(LINK) $(libmpgdecoder_la_LDFLAGS) $(libmpgdecoder_la_OBJECTS) $(libmpgdecoder_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c +$(top_srcdir)/ansi2knr: + cd $(top_srcdir) && $(MAKE) $(AM_MAKEFLAGS) ansi2knr + +mostlyclean-kr: + -test "$U" = "" || rm -f *_.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/common$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dct64_i386$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decode_i386$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer1$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer2$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/layer3$U.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tabinit$U.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +common_.c: common.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/common.c; then echo $(srcdir)/common.c; else echo common.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +dct64_i386_.c: dct64_i386.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dct64_i386.c; then echo $(srcdir)/dct64_i386.c; else echo dct64_i386.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +decode_i386_.c: decode_i386.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/decode_i386.c; then echo $(srcdir)/decode_i386.c; else echo decode_i386.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +interface_.c: interface.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/interface.c; then echo $(srcdir)/interface.c; else echo interface.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +layer1_.c: layer1.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer1.c; then echo $(srcdir)/layer1.c; else echo layer1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +layer2_.c: layer2.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer2.c; then echo $(srcdir)/layer2.c; else echo layer2.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +layer3_.c: layer3.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/layer3.c; then echo $(srcdir)/layer3.c; else echo layer3.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +tabinit_.c: tabinit.c $(ANSI2KNR) + $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tabinit.c; then echo $(srcdir)/tabinit.c; else echo tabinit.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@ +common_.$(OBJEXT) common_.lo dct64_i386_.$(OBJEXT) dct64_i386_.lo \ +decode_i386_.$(OBJEXT) decode_i386_.lo interface_.$(OBJEXT) \ +interface_.lo layer1_.$(OBJEXT) layer1_.lo layer2_.$(OBJEXT) \ +layer2_.lo layer3_.$(OBJEXT) layer3_.lo tabinit_.$(OBJEXT) tabinit_.lo \ +: $(ANSI2KNR) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-kr \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am + + +# end global section + +lclint.txt: ${libmpgdecoder_la_SOURCES} ${noinst_HEADERS} + @lclint ${LCLINTFLAGS} ${INCLUDES} ${DEFS} ${libmpgdecoder_la_SOURCES} 2>&1 >lclint.txt || true + +lclint: lclint.txt + more lclint.txt + +#$(OBJECTS): libtool +#libtool: $(LIBTOOL_DEPS) +# $(SHELL) $(top_builddir)/config.status --recheck +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lame-3.97/mpglib/README b/lame-3.97/mpglib/README new file mode 100644 index 0000000..7212bb4 --- /dev/null +++ b/lame-3.97/mpglib/README @@ -0,0 +1,33 @@ +MP3 library +----------- +Version 0.2 + +This decoder is a 'light' version (thrown out all unnecessay parts) +from the mpg123 package. I made this for a company. + +Currently only Layer III is enabled to save some space. Layer I and II isn't +tested at all. The interface will not change significantly. +A backport to the mpg123 package is planed. + +compiled and tested only on Solaris 2.6 +main.c contains a simple demo application for library. + +COPYING: you may use this source under GPL terms! + +PLEASE NOTE: This software may contain patented algorithms (at least + patented in some countries). It may be not allowed to sell/use products + based on this source code in these countries. Check this out first! + +COPYRIGHT of MP3 music: + Please note, that the duplicating of copyrighted music without explicit + permission violates the rights of the owner. + +SENDING PATCHES: + Maybe I change the copyright policy (i.e. some kind of more free BSD license). + Please consider this when sending patches/changes. + +FEEDBACK: + I'm interested to here from you, when you use this package as part + of another project. + + diff --git a/lame-3.97/mpglib/TODO b/lame-3.97/mpglib/TODO new file mode 100644 index 0000000..da0843d --- /dev/null +++ b/lame-3.97/mpglib/TODO @@ -0,0 +1,2 @@ + +apply 'VBR' bug diff --git a/lame-3.97/mpglib/common.c b/lame-3.97/mpglib/common.c new file mode 100644 index 0000000..dfa96e2 --- /dev/null +++ b/lame-3.97/mpglib/common.c @@ -0,0 +1,318 @@ +/* $Id: common.c,v 1.31 2004/04/14 22:15:43 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#ifdef HAVE_FCNTL_H +#include +#endif + +#ifdef macintosh +#include +#include +#else +#include +#include +#endif + +#include "common.h" + +#ifdef WITH_DMALLOC +#include +#endif + +/* In C++ the array first must be prototyped, why ? */ + +extern const int tabsel_123 [2] [3] [16]; + +const int tabsel_123 [2] [3] [16] = { + { {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,}, + {0,32,48,56, 64, 80, 96,112,128,160,192,224,256,320,384,}, + {0,32,40,48, 56, 64, 80, 96,112,128,160,192,224,256,320,} }, + + { {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256,}, + {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,}, + {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160,} } +}; + +const long freqs[9] = { 44100, 48000, 32000, + 22050, 24000, 16000, + 11025, 12000, 8000 }; + + + +#if defined( USE_LAYER_1 ) || defined ( USE_LAYER_2 ) + real muls[27][64]; +#endif + +#if 0 +static void get_II_stuff(struct frame *fr) +{ + static const int translate [3] [2] [16] = /* char ? */ + { { { 0,2,2,2,2,2,2,0,0,0,1,1,1,1,1,0 } , + { 0,2,2,0,0,0,1,1,1,1,1,1,1,1,1,0 } } , + { { 0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0 } , + { 0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0 } } , + { { 0,3,3,3,3,3,3,0,0,0,1,1,1,1,1,0 } , + { 0,3,3,0,0,0,1,1,1,1,1,1,1,1,1,0 } } }; + + int table,sblim; + static const struct al_table2 *tables[5] = + { alloc_0, alloc_1, alloc_2, alloc_3 , alloc_4 }; + static int sblims[5] = { 27 , 30 , 8, 12 , 30 }; + + if(fr->lsf) + table = 4; + else + table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index]; + sblim = sblims[table]; + + fr->alloc = tables[table]; + fr->II_sblimit = sblim; +} +#endif + +#define HDRCMPMASK 0xfffffd00 + + +int head_check(unsigned long head,int check_layer) +{ + /* + look for a valid header. + if check_layer > 0, then require that + nLayer = check_layer. + */ + + /* bits 13-14 = layer 3 */ + int nLayer=4-((head>>17)&3); + + if( (head & 0xffe00000) != 0xffe00000) { + /* syncword */ + return FALSE; + } + +#ifndef USE_LAYER_1 + if (nLayer == 1) + return FALSE; +#endif +#ifndef USE_LAYER_2 + if (nLayer == 2) + return FALSE; +#endif + if (nLayer == 4) + return FALSE; + + if (check_layer > 0 && nLayer != check_layer) + return FALSE; + + if( ((head>>12)&0xf) == 0xf) { + /* bits 16,17,18,19 = 1111 invalid bitrate */ + return FALSE; + } + if( ((head>>10)&0x3) == 0x3 ) { + /* bits 20,21 = 11 invalid sampling freq */ + return FALSE; + } + if ((head&0x3) == 0x2 ) + /* invalid emphasis */ + return FALSE; + return TRUE; +} + + +/* + * the code a header and write the information + * into the frame structure + */ +int decode_header(struct frame *fr,unsigned long newhead) +{ + + + if( newhead & (1<<20) ) { + fr->lsf = (newhead & (1<<19)) ? 0x0 : 0x1; + fr->mpeg25 = 0; + } + else { + fr->lsf = 1; + fr->mpeg25 = 1; + } + + + fr->lay = 4-((newhead>>17)&3); + if( ((newhead>>10)&0x3) == 0x3) { + fprintf(stderr,"Stream error\n"); + exit(1); + } + if(fr->mpeg25) { + fr->sampling_frequency = 6 + ((newhead>>10)&0x3); + } + else + fr->sampling_frequency = ((newhead>>10)&0x3) + (fr->lsf*3); + + fr->error_protection = ((newhead>>16)&0x1)^0x1; + + if(fr->mpeg25) /* allow Bitrate change for 2.5 ... */ + fr->bitrate_index = ((newhead>>12)&0xf); + + fr->bitrate_index = ((newhead>>12)&0xf); + fr->padding = ((newhead>>9)&0x1); + fr->extension = ((newhead>>8)&0x1); + fr->mode = ((newhead>>6)&0x3); + fr->mode_ext = ((newhead>>4)&0x3); + fr->copyright = ((newhead>>3)&0x1); + fr->original = ((newhead>>2)&0x1); + fr->emphasis = newhead & 0x3; + + fr->stereo = (fr->mode == MPG_MD_MONO) ? 1 : 2; + + switch(fr->lay) + { +#ifdef USE_LAYER_1 + case 1: + fr->framesize = (long) tabsel_123[fr->lsf][0][fr->bitrate_index] * 12000; + fr->framesize /= freqs[fr->sampling_frequency]; + fr->framesize = ((fr->framesize+fr->padding)<<2)-4; + fr->down_sample=0; + fr->down_sample_sblimit = SBLIMIT>>(fr->down_sample); + break; +#endif +#ifdef USE_LAYER_2 + case 2: + fr->framesize = (long) tabsel_123[fr->lsf][1][fr->bitrate_index] * 144000; + fr->framesize /= freqs[fr->sampling_frequency]; + fr->framesize += fr->padding - 4; + fr->down_sample=0; + fr->down_sample_sblimit = SBLIMIT>>(fr->down_sample); + break; +#endif + case 3: +#if 0 + fr->do_layer = do_layer3; + if(fr->lsf) + ssize = (fr->stereo == 1) ? 9 : 17; + else + ssize = (fr->stereo == 1) ? 17 : 32; +#endif + +#if 0 + if(fr->error_protection) + ssize += 2; +#endif + if (fr->bitrate_index==0) + fr->framesize=0; + else{ + fr->framesize = (long) tabsel_123[fr->lsf][2][fr->bitrate_index] * 144000; + fr->framesize /= freqs[fr->sampling_frequency]<<(fr->lsf); + fr->framesize = fr->framesize + fr->padding - 4; + } + break; + default: + fprintf(stderr,"Sorry, layer %d not supported\n",fr->lay); + return (0); + } + /* print_header(fr); */ + + return 1; +} + + +#if 1 +void print_header(struct frame *fr) +{ + static const char *modes[4] = { "Stereo", "Joint-Stereo", "Dual-Channel", "Single-Channel" }; + static const char *layers[4] = { "Unknown" , "I", "II", "III" }; + + fprintf(stderr,"MPEG %s, Layer: %s, Freq: %ld, mode: %s, modext: %d, BPF : %d\n", + fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), + layers[fr->lay],freqs[fr->sampling_frequency], + modes[fr->mode],fr->mode_ext,fr->framesize+4); + fprintf(stderr,"Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n", + fr->stereo,fr->copyright?"Yes":"No", + fr->original?"Yes":"No",fr->error_protection?"Yes":"No", + fr->emphasis); + fprintf(stderr,"Bitrate: %d Kbits/s, Extension value: %d\n", + tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index],fr->extension); +} + +void print_header_compact(struct frame *fr) +{ + static const char *modes[4] = { "stereo", "joint-stereo", "dual-channel", "mono" }; + static const char *layers[4] = { "Unknown" , "I", "II", "III" }; + + fprintf(stderr,"MPEG %s layer %s, %d kbit/s, %ld Hz %s\n", + fr->mpeg25 ? "2.5" : (fr->lsf ? "2.0" : "1.0"), + layers[fr->lay], + tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index], + freqs[fr->sampling_frequency], modes[fr->mode]); +} + +#endif + +unsigned int getbits(PMPSTR mp, int number_of_bits) +{ + unsigned long rval; + + if (number_of_bits <= 0 || !mp->wordpointer) + return 0; + + { + rval = mp->wordpointer[0]; + rval <<= 8; + rval |= mp->wordpointer[1]; + rval <<= 8; + rval |= mp->wordpointer[2]; + rval <<= mp->bitindex; + rval &= 0xffffff; + + mp->bitindex += number_of_bits; + + rval >>= (24-number_of_bits); + + mp->wordpointer += (mp->bitindex>>3); + mp->bitindex &= 7; + } + return rval; +} + +unsigned int getbits_fast(PMPSTR mp, int number_of_bits) +{ + unsigned long rval; + + { + rval = mp->wordpointer[0]; + rval <<= 8; + rval |= mp->wordpointer[1]; + rval <<= mp->bitindex; + rval &= 0xffff; + mp->bitindex += number_of_bits; + + rval >>= (16-number_of_bits); + + mp->wordpointer += (mp->bitindex>>3); + mp->bitindex &= 7; + } + return rval; +} + + +int set_pointer( PMPSTR mp, long backstep) +{ + unsigned char *bsbufold; + + if(mp->fsizeold < 0 && backstep > 0) { + fprintf(stderr,"Can't step back %ld!\n",backstep); + return MP3_ERR; + } + bsbufold = mp->bsspace[1-mp->bsnum] + 512; + mp->wordpointer -= backstep; + if (backstep) + memcpy(mp->wordpointer,bsbufold+mp->fsizeold-backstep,(size_t)backstep); + mp->bitindex = 0; + return MP3_OK; +} + diff --git a/lame-3.97/mpglib/common.h b/lame-3.97/mpglib/common.h new file mode 100644 index 0000000..56524bc --- /dev/null +++ b/lame-3.97/mpglib/common.h @@ -0,0 +1,43 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + + +#ifndef COMMON_H_INCLUDED +#define COMMON_H_INCLUDED + +#include "mpg123.h" +#include "mpglib.h" + +extern const int tabsel_123[2][3][16]; +extern const long freqs[9]; + + +#if defined( USE_LAYER_1 ) || defined ( USE_LAYER_2 ) + extern real muls[27][64]; +#endif + +int head_check(unsigned long head,int check_layer); +int decode_header(struct frame *fr,unsigned long newhead); +void print_header(struct frame *fr); +void print_header_compact(struct frame *fr); +unsigned int getbits(PMPSTR mp, int number_of_bits); +unsigned int getbits_fast(PMPSTR mp, int number_of_bits); +int set_pointer( PMPSTR mp, long backstep); + +#endif + diff --git a/lame-3.97/mpglib/dct64_i386.c b/lame-3.97/mpglib/dct64_i386.c new file mode 100644 index 0000000..0c90a2d --- /dev/null +++ b/lame-3.97/mpglib/dct64_i386.c @@ -0,0 +1,325 @@ +/* + * Discrete Cosine Tansform (DCT) for subband synthesis + * optimized for machines with no auto-increment. + * The performance is highly compiler dependend. Maybe + * the dct64.c version for 'normal' processor may be faster + * even for Intel processors. + */ + +/* $Id: dct64_i386.c,v 1.10 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "dct64_i386.h" +#include "tabinit.h" + +#ifdef WITH_DMALLOC +#include +#endif + +static void dct64_1(real *out0,real *out1,real *b1,real *b2,real *samples) +{ + + { + real *costab = pnts[0]; + + b1[0x00] = samples[0x00] + samples[0x1F]; + b1[0x1F] = (samples[0x00] - samples[0x1F]) * costab[0x0]; + + b1[0x01] = samples[0x01] + samples[0x1E]; + b1[0x1E] = (samples[0x01] - samples[0x1E]) * costab[0x1]; + + b1[0x02] = samples[0x02] + samples[0x1D]; + b1[0x1D] = (samples[0x02] - samples[0x1D]) * costab[0x2]; + + b1[0x03] = samples[0x03] + samples[0x1C]; + b1[0x1C] = (samples[0x03] - samples[0x1C]) * costab[0x3]; + + b1[0x04] = samples[0x04] + samples[0x1B]; + b1[0x1B] = (samples[0x04] - samples[0x1B]) * costab[0x4]; + + b1[0x05] = samples[0x05] + samples[0x1A]; + b1[0x1A] = (samples[0x05] - samples[0x1A]) * costab[0x5]; + + b1[0x06] = samples[0x06] + samples[0x19]; + b1[0x19] = (samples[0x06] - samples[0x19]) * costab[0x6]; + + b1[0x07] = samples[0x07] + samples[0x18]; + b1[0x18] = (samples[0x07] - samples[0x18]) * costab[0x7]; + + b1[0x08] = samples[0x08] + samples[0x17]; + b1[0x17] = (samples[0x08] - samples[0x17]) * costab[0x8]; + + b1[0x09] = samples[0x09] + samples[0x16]; + b1[0x16] = (samples[0x09] - samples[0x16]) * costab[0x9]; + + b1[0x0A] = samples[0x0A] + samples[0x15]; + b1[0x15] = (samples[0x0A] - samples[0x15]) * costab[0xA]; + + b1[0x0B] = samples[0x0B] + samples[0x14]; + b1[0x14] = (samples[0x0B] - samples[0x14]) * costab[0xB]; + + b1[0x0C] = samples[0x0C] + samples[0x13]; + b1[0x13] = (samples[0x0C] - samples[0x13]) * costab[0xC]; + + b1[0x0D] = samples[0x0D] + samples[0x12]; + b1[0x12] = (samples[0x0D] - samples[0x12]) * costab[0xD]; + + b1[0x0E] = samples[0x0E] + samples[0x11]; + b1[0x11] = (samples[0x0E] - samples[0x11]) * costab[0xE]; + + b1[0x0F] = samples[0x0F] + samples[0x10]; + b1[0x10] = (samples[0x0F] - samples[0x10]) * costab[0xF]; + } + + + { + real *costab = pnts[1]; + + b2[0x00] = b1[0x00] + b1[0x0F]; + b2[0x0F] = (b1[0x00] - b1[0x0F]) * costab[0]; + b2[0x01] = b1[0x01] + b1[0x0E]; + b2[0x0E] = (b1[0x01] - b1[0x0E]) * costab[1]; + b2[0x02] = b1[0x02] + b1[0x0D]; + b2[0x0D] = (b1[0x02] - b1[0x0D]) * costab[2]; + b2[0x03] = b1[0x03] + b1[0x0C]; + b2[0x0C] = (b1[0x03] - b1[0x0C]) * costab[3]; + b2[0x04] = b1[0x04] + b1[0x0B]; + b2[0x0B] = (b1[0x04] - b1[0x0B]) * costab[4]; + b2[0x05] = b1[0x05] + b1[0x0A]; + b2[0x0A] = (b1[0x05] - b1[0x0A]) * costab[5]; + b2[0x06] = b1[0x06] + b1[0x09]; + b2[0x09] = (b1[0x06] - b1[0x09]) * costab[6]; + b2[0x07] = b1[0x07] + b1[0x08]; + b2[0x08] = (b1[0x07] - b1[0x08]) * costab[7]; + + b2[0x10] = b1[0x10] + b1[0x1F]; + b2[0x1F] = (b1[0x1F] - b1[0x10]) * costab[0]; + b2[0x11] = b1[0x11] + b1[0x1E]; + b2[0x1E] = (b1[0x1E] - b1[0x11]) * costab[1]; + b2[0x12] = b1[0x12] + b1[0x1D]; + b2[0x1D] = (b1[0x1D] - b1[0x12]) * costab[2]; + b2[0x13] = b1[0x13] + b1[0x1C]; + b2[0x1C] = (b1[0x1C] - b1[0x13]) * costab[3]; + b2[0x14] = b1[0x14] + b1[0x1B]; + b2[0x1B] = (b1[0x1B] - b1[0x14]) * costab[4]; + b2[0x15] = b1[0x15] + b1[0x1A]; + b2[0x1A] = (b1[0x1A] - b1[0x15]) * costab[5]; + b2[0x16] = b1[0x16] + b1[0x19]; + b2[0x19] = (b1[0x19] - b1[0x16]) * costab[6]; + b2[0x17] = b1[0x17] + b1[0x18]; + b2[0x18] = (b1[0x18] - b1[0x17]) * costab[7]; + } + + { + real *costab = pnts[2]; + + b1[0x00] = b2[0x00] + b2[0x07]; + b1[0x07] = (b2[0x00] - b2[0x07]) * costab[0]; + b1[0x01] = b2[0x01] + b2[0x06]; + b1[0x06] = (b2[0x01] - b2[0x06]) * costab[1]; + b1[0x02] = b2[0x02] + b2[0x05]; + b1[0x05] = (b2[0x02] - b2[0x05]) * costab[2]; + b1[0x03] = b2[0x03] + b2[0x04]; + b1[0x04] = (b2[0x03] - b2[0x04]) * costab[3]; + + b1[0x08] = b2[0x08] + b2[0x0F]; + b1[0x0F] = (b2[0x0F] - b2[0x08]) * costab[0]; + b1[0x09] = b2[0x09] + b2[0x0E]; + b1[0x0E] = (b2[0x0E] - b2[0x09]) * costab[1]; + b1[0x0A] = b2[0x0A] + b2[0x0D]; + b1[0x0D] = (b2[0x0D] - b2[0x0A]) * costab[2]; + b1[0x0B] = b2[0x0B] + b2[0x0C]; + b1[0x0C] = (b2[0x0C] - b2[0x0B]) * costab[3]; + + b1[0x10] = b2[0x10] + b2[0x17]; + b1[0x17] = (b2[0x10] - b2[0x17]) * costab[0]; + b1[0x11] = b2[0x11] + b2[0x16]; + b1[0x16] = (b2[0x11] - b2[0x16]) * costab[1]; + b1[0x12] = b2[0x12] + b2[0x15]; + b1[0x15] = (b2[0x12] - b2[0x15]) * costab[2]; + b1[0x13] = b2[0x13] + b2[0x14]; + b1[0x14] = (b2[0x13] - b2[0x14]) * costab[3]; + + b1[0x18] = b2[0x18] + b2[0x1F]; + b1[0x1F] = (b2[0x1F] - b2[0x18]) * costab[0]; + b1[0x19] = b2[0x19] + b2[0x1E]; + b1[0x1E] = (b2[0x1E] - b2[0x19]) * costab[1]; + b1[0x1A] = b2[0x1A] + b2[0x1D]; + b1[0x1D] = (b2[0x1D] - b2[0x1A]) * costab[2]; + b1[0x1B] = b2[0x1B] + b2[0x1C]; + b1[0x1C] = (b2[0x1C] - b2[0x1B]) * costab[3]; + } + + { + real const cos0 = pnts[3][0]; + real const cos1 = pnts[3][1]; + + b2[0x00] = b1[0x00] + b1[0x03]; + b2[0x03] = (b1[0x00] - b1[0x03]) * cos0; + b2[0x01] = b1[0x01] + b1[0x02]; + b2[0x02] = (b1[0x01] - b1[0x02]) * cos1; + + b2[0x04] = b1[0x04] + b1[0x07]; + b2[0x07] = (b1[0x07] - b1[0x04]) * cos0; + b2[0x05] = b1[0x05] + b1[0x06]; + b2[0x06] = (b1[0x06] - b1[0x05]) * cos1; + + b2[0x08] = b1[0x08] + b1[0x0B]; + b2[0x0B] = (b1[0x08] - b1[0x0B]) * cos0; + b2[0x09] = b1[0x09] + b1[0x0A]; + b2[0x0A] = (b1[0x09] - b1[0x0A]) * cos1; + + b2[0x0C] = b1[0x0C] + b1[0x0F]; + b2[0x0F] = (b1[0x0F] - b1[0x0C]) * cos0; + b2[0x0D] = b1[0x0D] + b1[0x0E]; + b2[0x0E] = (b1[0x0E] - b1[0x0D]) * cos1; + + b2[0x10] = b1[0x10] + b1[0x13]; + b2[0x13] = (b1[0x10] - b1[0x13]) * cos0; + b2[0x11] = b1[0x11] + b1[0x12]; + b2[0x12] = (b1[0x11] - b1[0x12]) * cos1; + + b2[0x14] = b1[0x14] + b1[0x17]; + b2[0x17] = (b1[0x17] - b1[0x14]) * cos0; + b2[0x15] = b1[0x15] + b1[0x16]; + b2[0x16] = (b1[0x16] - b1[0x15]) * cos1; + + b2[0x18] = b1[0x18] + b1[0x1B]; + b2[0x1B] = (b1[0x18] - b1[0x1B]) * cos0; + b2[0x19] = b1[0x19] + b1[0x1A]; + b2[0x1A] = (b1[0x19] - b1[0x1A]) * cos1; + + b2[0x1C] = b1[0x1C] + b1[0x1F]; + b2[0x1F] = (b1[0x1F] - b1[0x1C]) * cos0; + b2[0x1D] = b1[0x1D] + b1[0x1E]; + b2[0x1E] = (b1[0x1E] - b1[0x1D]) * cos1; + } + + { + real const cos0 = pnts[4][0]; + + b1[0x00] = b2[0x00] + b2[0x01]; + b1[0x01] = (b2[0x00] - b2[0x01]) * cos0; + b1[0x02] = b2[0x02] + b2[0x03]; + b1[0x03] = (b2[0x03] - b2[0x02]) * cos0; + b1[0x02] += b1[0x03]; + + b1[0x04] = b2[0x04] + b2[0x05]; + b1[0x05] = (b2[0x04] - b2[0x05]) * cos0; + b1[0x06] = b2[0x06] + b2[0x07]; + b1[0x07] = (b2[0x07] - b2[0x06]) * cos0; + b1[0x06] += b1[0x07]; + b1[0x04] += b1[0x06]; + b1[0x06] += b1[0x05]; + b1[0x05] += b1[0x07]; + + b1[0x08] = b2[0x08] + b2[0x09]; + b1[0x09] = (b2[0x08] - b2[0x09]) * cos0; + b1[0x0A] = b2[0x0A] + b2[0x0B]; + b1[0x0B] = (b2[0x0B] - b2[0x0A]) * cos0; + b1[0x0A] += b1[0x0B]; + + b1[0x0C] = b2[0x0C] + b2[0x0D]; + b1[0x0D] = (b2[0x0C] - b2[0x0D]) * cos0; + b1[0x0E] = b2[0x0E] + b2[0x0F]; + b1[0x0F] = (b2[0x0F] - b2[0x0E]) * cos0; + b1[0x0E] += b1[0x0F]; + b1[0x0C] += b1[0x0E]; + b1[0x0E] += b1[0x0D]; + b1[0x0D] += b1[0x0F]; + + b1[0x10] = b2[0x10] + b2[0x11]; + b1[0x11] = (b2[0x10] - b2[0x11]) * cos0; + b1[0x12] = b2[0x12] + b2[0x13]; + b1[0x13] = (b2[0x13] - b2[0x12]) * cos0; + b1[0x12] += b1[0x13]; + + b1[0x14] = b2[0x14] + b2[0x15]; + b1[0x15] = (b2[0x14] - b2[0x15]) * cos0; + b1[0x16] = b2[0x16] + b2[0x17]; + b1[0x17] = (b2[0x17] - b2[0x16]) * cos0; + b1[0x16] += b1[0x17]; + b1[0x14] += b1[0x16]; + b1[0x16] += b1[0x15]; + b1[0x15] += b1[0x17]; + + b1[0x18] = b2[0x18] + b2[0x19]; + b1[0x19] = (b2[0x18] - b2[0x19]) * cos0; + b1[0x1A] = b2[0x1A] + b2[0x1B]; + b1[0x1B] = (b2[0x1B] - b2[0x1A]) * cos0; + b1[0x1A] += b1[0x1B]; + + b1[0x1C] = b2[0x1C] + b2[0x1D]; + b1[0x1D] = (b2[0x1C] - b2[0x1D]) * cos0; + b1[0x1E] = b2[0x1E] + b2[0x1F]; + b1[0x1F] = (b2[0x1F] - b2[0x1E]) * cos0; + b1[0x1E] += b1[0x1F]; + b1[0x1C] += b1[0x1E]; + b1[0x1E] += b1[0x1D]; + b1[0x1D] += b1[0x1F]; + } + + out0[0x10*16] = b1[0x00]; + out0[0x10*12] = b1[0x04]; + out0[0x10* 8] = b1[0x02]; + out0[0x10* 4] = b1[0x06]; + out0[0x10* 0] = b1[0x01]; + out1[0x10* 0] = b1[0x01]; + out1[0x10* 4] = b1[0x05]; + out1[0x10* 8] = b1[0x03]; + out1[0x10*12] = b1[0x07]; + + b1[0x08] += b1[0x0C]; + out0[0x10*14] = b1[0x08]; + b1[0x0C] += b1[0x0a]; + out0[0x10*10] = b1[0x0C]; + b1[0x0A] += b1[0x0E]; + out0[0x10* 6] = b1[0x0A]; + b1[0x0E] += b1[0x09]; + out0[0x10* 2] = b1[0x0E]; + b1[0x09] += b1[0x0D]; + out1[0x10* 2] = b1[0x09]; + b1[0x0D] += b1[0x0B]; + out1[0x10* 6] = b1[0x0D]; + b1[0x0B] += b1[0x0F]; + out1[0x10*10] = b1[0x0B]; + out1[0x10*14] = b1[0x0F]; + + b1[0x18] += b1[0x1C]; + out0[0x10*15] = b1[0x10] + b1[0x18]; + out0[0x10*13] = b1[0x18] + b1[0x14]; + b1[0x1C] += b1[0x1a]; + out0[0x10*11] = b1[0x14] + b1[0x1C]; + out0[0x10* 9] = b1[0x1C] + b1[0x12]; + b1[0x1A] += b1[0x1E]; + out0[0x10* 7] = b1[0x12] + b1[0x1A]; + out0[0x10* 5] = b1[0x1A] + b1[0x16]; + b1[0x1E] += b1[0x19]; + out0[0x10* 3] = b1[0x16] + b1[0x1E]; + out0[0x10* 1] = b1[0x1E] + b1[0x11]; + b1[0x19] += b1[0x1D]; + out1[0x10* 1] = b1[0x11] + b1[0x19]; + out1[0x10* 3] = b1[0x19] + b1[0x15]; + b1[0x1D] += b1[0x1B]; + out1[0x10* 5] = b1[0x15] + b1[0x1D]; + out1[0x10* 7] = b1[0x1D] + b1[0x13]; + b1[0x1B] += b1[0x1F]; + out1[0x10* 9] = b1[0x13] + b1[0x1B]; + out1[0x10*11] = b1[0x1B] + b1[0x17]; + out1[0x10*13] = b1[0x17] + b1[0x1F]; + out1[0x10*15] = b1[0x1F]; +} + +/* + * the call via dct64 is a trick to force GCC to use + * (new) registers for the b1,b2 pointer to the bufs[xx] field + */ +void dct64( real *a,real *b,real *c) +{ + real bufs[0x40]; + dct64_1(a,b,bufs,bufs+0x20,c); +} + diff --git a/lame-3.97/mpglib/dct64_i386.h b/lame-3.97/mpglib/dct64_i386.h new file mode 100644 index 0000000..72af8b5 --- /dev/null +++ b/lame-3.97/mpglib/dct64_i386.h @@ -0,0 +1,28 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef MPGLIB_DCT64_I386_H_INCLUDED +#define MPGLIB_DCT64_I386_H_INCLUDED + +#include "common.h" + +void dct64( real *a,real *b,real *c); + + +#endif + diff --git a/lame-3.97/mpglib/decode_i386.c b/lame-3.97/mpglib/decode_i386.c new file mode 100644 index 0000000..80c4e15 --- /dev/null +++ b/lame-3.97/mpglib/decode_i386.c @@ -0,0 +1,205 @@ +/* + * Mpeg Layer-1,2,3 audio decoder + * ------------------------------ + * copyright (c) 1995,1996,1997 by Michael Hipp, All rights reserved. + * modified by Aleksander Korzynski (Olcios) '2003 + * See also 'README' + * + * slighlty optimized for machines without autoincrement/decrement. + * The performance is highly compiler dependend. Maybe + * the decode.c version for 'normal' processor may be faster + * even for Intel processors. + */ + +/* $Id: decode_i386.c,v 1.17 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef STDC_HEADERS +# include +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#if defined(__riscos__) && defined(FPA10) +#include "ymath.h" +#else +#include +#endif + +#include "decode_i386.h" +#include "dct64_i386.h" +#include "tabinit.h" + +#ifdef WITH_DMALLOC +#include +#endif + + + /* old WRITE_SAMPLE_CLIPPED */ +#define WRITE_SAMPLE_CLIPPED(samples,sum,clip) \ + if( (sum) > 32767.0) { *(samples) = 0x7fff; (clip)++; } \ + else if( (sum) < -32768.0) { *(samples) = -0x8000; (clip)++; } \ + else { *(samples) = ((sum)>0 ? (sum)+0.5 : (sum)-0.5) ; } + +#define WRITE_SAMPLE_UNCLIPPED(samples,sum,clip) \ + *samples = sum; + + + /* versions: clipped (when TYPE == short) and unclipped (when TYPE == real) of synth_1to1_mono* functions */ +#define SYNTH_1TO1_MONO_CLIPCHOICE(TYPE,SYNTH_1TO1) \ + TYPE samples_tmp[64]; \ + TYPE *tmp1 = samples_tmp; \ + int i,ret; \ + int pnt1 = 0; \ + \ + ret = SYNTH_1TO1 (mp,bandPtr,0,(unsigned char *) samples_tmp,&pnt1); \ + out += *pnt; \ + \ + for(i=0;i<32;i++) { \ + *( (TYPE *) out) = *tmp1; \ + out += sizeof(TYPE); \ + tmp1 += 2; \ + } \ + *pnt += 32*sizeof(TYPE); \ + \ + return ret; + + +int synth_1to1_mono(PMPSTR mp, real *bandPtr,unsigned char *out,int *pnt) +{ + SYNTH_1TO1_MONO_CLIPCHOICE(short,synth_1to1) +} + +int synth_1to1_mono_unclipped(PMPSTR mp, real *bandPtr, unsigned char *out,int *pnt) +{ + SYNTH_1TO1_MONO_CLIPCHOICE(real,synth_1to1_unclipped) +} + +/* versions: clipped (when TYPE == short) and unclipped (when TYPE == real) of synth_1to1* functions */ +#define SYNTH_1TO1_CLIPCHOICE(TYPE,WRITE_SAMPLE) \ + static const int step = 2; \ + int bo; \ + TYPE *samples = (TYPE *) (out + *pnt); \ + \ + real *b0,(*buf)[0x110]; \ + int clip = 0; \ + int bo1; \ + \ + bo = mp->synth_bo; \ + \ + if(!channel) { \ + bo--; \ + bo &= 0xf; \ + buf = mp->synth_buffs[0]; \ + } \ + else { \ + samples++; \ + buf = mp->synth_buffs[1]; \ + } \ + \ + if(bo & 0x1) { \ + b0 = buf[0]; \ + bo1 = bo; \ + dct64(buf[1]+((bo+1)&0xf),buf[0]+bo,bandPtr); \ + } \ + else { \ + b0 = buf[1]; \ + bo1 = bo+1; \ + dct64(buf[0]+bo,buf[1]+bo+1,bandPtr); \ + } \ + \ + mp->synth_bo = bo; \ + \ + { \ + int j; \ + real *window = decwin + 16 - bo1; \ + \ + for (j=16;j;j--,b0+=0x10,window+=0x20,samples+=step) \ + { \ + real sum; \ + sum = window[0x0] * b0[0x0]; \ + sum -= window[0x1] * b0[0x1]; \ + sum += window[0x2] * b0[0x2]; \ + sum -= window[0x3] * b0[0x3]; \ + sum += window[0x4] * b0[0x4]; \ + sum -= window[0x5] * b0[0x5]; \ + sum += window[0x6] * b0[0x6]; \ + sum -= window[0x7] * b0[0x7]; \ + sum += window[0x8] * b0[0x8]; \ + sum -= window[0x9] * b0[0x9]; \ + sum += window[0xA] * b0[0xA]; \ + sum -= window[0xB] * b0[0xB]; \ + sum += window[0xC] * b0[0xC]; \ + sum -= window[0xD] * b0[0xD]; \ + sum += window[0xE] * b0[0xE]; \ + sum -= window[0xF] * b0[0xF]; \ + \ + WRITE_SAMPLE (samples,sum,clip); \ + } \ + \ + { \ + real sum; \ + sum = window[0x0] * b0[0x0]; \ + sum += window[0x2] * b0[0x2]; \ + sum += window[0x4] * b0[0x4]; \ + sum += window[0x6] * b0[0x6]; \ + sum += window[0x8] * b0[0x8]; \ + sum += window[0xA] * b0[0xA]; \ + sum += window[0xC] * b0[0xC]; \ + sum += window[0xE] * b0[0xE]; \ + WRITE_SAMPLE (samples,sum,clip); \ + b0-=0x10,window-=0x20,samples+=step; \ + } \ + window += bo1<<1; \ + \ + for (j=15;j;j--,b0-=0x10,window-=0x20,samples+=step) \ + { \ + real sum; \ + sum = -window[-0x1] * b0[0x0]; \ + sum -= window[-0x2] * b0[0x1]; \ + sum -= window[-0x3] * b0[0x2]; \ + sum -= window[-0x4] * b0[0x3]; \ + sum -= window[-0x5] * b0[0x4]; \ + sum -= window[-0x6] * b0[0x5]; \ + sum -= window[-0x7] * b0[0x6]; \ + sum -= window[-0x8] * b0[0x7]; \ + sum -= window[-0x9] * b0[0x8]; \ + sum -= window[-0xA] * b0[0x9]; \ + sum -= window[-0xB] * b0[0xA]; \ + sum -= window[-0xC] * b0[0xB]; \ + sum -= window[-0xD] * b0[0xC]; \ + sum -= window[-0xE] * b0[0xD]; \ + sum -= window[-0xF] * b0[0xE]; \ + sum -= window[-0x0] * b0[0xF]; \ + \ + WRITE_SAMPLE (samples,sum,clip); \ + } \ + } \ + *pnt += 64*sizeof(TYPE); \ + \ + return clip; + + +int synth_1to1(PMPSTR mp, real *bandPtr,int channel,unsigned char *out, int *pnt) +{ + SYNTH_1TO1_CLIPCHOICE(short,WRITE_SAMPLE_CLIPPED) +} + +int synth_1to1_unclipped(PMPSTR mp, real *bandPtr,int channel, unsigned char *out, int *pnt) +{ + SYNTH_1TO1_CLIPCHOICE(real,WRITE_SAMPLE_UNCLIPPED) +} + + diff --git a/lame-3.97/mpglib/decode_i386.h b/lame-3.97/mpglib/decode_i386.h new file mode 100644 index 0000000..a45cfa3 --- /dev/null +++ b/lame-3.97/mpglib/decode_i386.h @@ -0,0 +1,31 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef DECODE_I386_H_INCLUDED +#define DECODE_I386_H_INCLUDED + +#include "common.h" + +int synth_1to1_mono(PMPSTR mp, real *bandPtr,unsigned char *out,int *pnt); +int synth_1to1(PMPSTR mp, real *bandPtr,int channel,unsigned char *out,int *pnt); + +int synth_1to1_mono_unclipped(PMPSTR mp, real *bandPtr,unsigned char *out,int *pnt); +int synth_1to1_unclipped(PMPSTR mp, real *bandPtr,int channel,unsigned char *out,int *pnt); + +#endif + diff --git a/lame-3.97/mpglib/depcomp b/lame-3.97/mpglib/depcomp new file mode 100644 index 0000000..04701da --- /dev/null +++ b/lame-3.97/mpglib/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/lame-3.97/mpglib/huffman.h b/lame-3.97/mpglib/huffman.h new file mode 100644 index 0000000..da08833 --- /dev/null +++ b/lame-3.97/mpglib/huffman.h @@ -0,0 +1,333 @@ +/* + * huffman tables ... recalcualted to work with my optimzed + * decoder scheme (MH) + * + * probably we could save a few bytes of memory, because the + * smaller tables are often the part of a bigger table + */ + +struct newhuff +{ + const unsigned int linbits; + const short * const table; +}; + +static const short tab0[] = +{ + 0 +}; + +static const short tab1[] = +{ + -5, -3, -1, 17, 1, 16, 0 +}; + +static const short tab2[] = +{ + -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1, + 16, 0 +}; + +static const short tab3[] = +{ + -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1, + 1, 0 +}; + +static const short tab5[] = +{ + -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19, + 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16, + 0 +}; + +static const short tab6[] = +{ + -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19, + 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16, + 0 +}; + +static const short tab7[] = +{ + -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83, + -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1, + 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7, + -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18, + -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0 +}; + +static const short tab8[] = +{ + -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83, + -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52, + 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4, + 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1, + 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0 +}; + +static const short tab9[] = +{ + -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1, + 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67, + -1, 80, 4, -7, -3, -1, 36, 66, -1, 51, 64, -1, 20, 65, -5, + -3, -1, 35, 50, 19, -1, 49, -1, 3, 48, -5, -3, -1, 34, 2, + 18, -1, 33, 32, -3, -1, 17, 1, -1, 16, 0 +}; + +static const short tab10[] = +{ +-125,-121,-111, -83, -55, -35, -21, -13, -7, -3, -1, 119, 103, -1, 118, + 87, -3, -1, 117, 102, 71, -3, -1, 116, 86, -1, 101, 55, -9, -3, + -1, 115, 70, -3, -1, 85, 84, 99, -1, 39, 114, -11, -5, -3, -1, + 100, 7, 112, -1, 98, -1, 69, 53, -5, -1, 6, -1, 83, 68, 23, + -17, -5, -1, 113, -1, 54, 38, -5, -3, -1, 37, 82, 21, -1, 81, + -1, 52, 67, -3, -1, 22, 97, -1, 96, -1, 5, 80, -19, -11, -7, + -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1, + 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1, + 2, 32, 17, -1, 1, 16, 0 +}; + +static const short tab11[] = +{ +-121,-113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117, + -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55, + -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114, + -1, 100, 7, -5, -1, 113, -1, 23, 112, -3, -1, 54, 99, -1, 96, + -1, 68, 37, -13, -7, -5, -3, -1, 82, 5, 21, 98, -3, -1, 38, + 6, 22, -5, -1, 97, -1, 81, 52, -5, -1, 80, -1, 67, 51, -1, + 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50, + -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2, + 32, 17, -3, -1, 1, 16, 0 +}; + +static const short tab12[] = +{ +-115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87, + 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115, + 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7, + 112, -1, 54, 99, -13, -9, -3, -1, 69, 84, -1, 68, -1, 6, 5, + -1, 38, 98, -5, -1, 97, -1, 22, 96, -3, -1, 53, 83, -1, 37, + 82, -17, -7, -3, -1, 21, 81, -1, 52, 67, -5, -3, -1, 80, 4, + 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3, + -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1, + 2, 32, 0, 17, -1, 1, 16 +}; + +static const short tab13[] = +{ +-509,-503,-475,-405,-333,-265,-205,-153,-115, -83, -53, -35, -21, -13, -9, + -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238, + 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1, + 236, 221, -9, -5, -3, -1, 250, 205, 190, -1, 235, 159, -3, -1, 249, + 234, -1, 189, 219, -17, -9, -3, -1, 143, 248, -1, 204, -1, 174, 158, + -5, -1, 142, -1, 127, 126, 247, -5, -1, 218, -1, 173, 188, -3, -1, + 203, 246, 111, -15, -7, -3, -1, 232, 95, -1, 157, 217, -3, -1, 245, + 231, -1, 172, 187, -9, -3, -1, 79, 244, -3, -1, 202, 230, 243, -1, + 63, -1, 141, 216, -21, -9, -3, -1, 47, 242, -3, -1, 110, 156, 15, + -5, -3, -1, 201, 94, 171, -3, -1, 125, 215, 78, -11, -5, -3, -1, + 200, 214, 62, -1, 185, -1, 155, 170, -1, 31, 241, -23, -13, -5, -1, + 240, -1, 186, 229, -3, -1, 228, 140, -1, 109, 227, -5, -1, 226, -1, + 46, 14, -1, 30, 225, -15, -7, -3, -1, 224, 93, -1, 213, 124, -3, + -1, 199, 77, -1, 139, 184, -7, -3, -1, 212, 154, -1, 169, 108, -1, + 198, 61, -37, -21, -9, -5, -3, -1, 211, 123, 45, -1, 210, 29, -5, + -1, 183, -1, 92, 197, -3, -1, 153, 122, 195, -7, -5, -3, -1, 167, + 151, 75, 209, -3, -1, 13, 208, -1, 138, 168, -11, -7, -3, -1, 76, + 196, -1, 107, 182, -1, 60, 44, -3, -1, 194, 91, -3, -1, 181, 137, + 28, -43, -23, -11, -5, -1, 193, -1, 152, 12, -1, 192, -1, 180, 106, + -5, -3, -1, 166, 121, 59, -1, 179, -1, 136, 90, -11, -5, -1, 43, + -1, 165, 105, -1, 164, -1, 120, 135, -5, -1, 148, -1, 119, 118, 178, + -11, -3, -1, 27, 177, -3, -1, 11, 176, -1, 150, 74, -7, -3, -1, + 58, 163, -1, 89, 149, -1, 42, 162, -47, -23, -9, -3, -1, 26, 161, + -3, -1, 10, 104, 160, -5, -3, -1, 134, 73, 147, -3, -1, 57, 88, + -1, 133, 103, -9, -3, -1, 41, 146, -3, -1, 87, 117, 56, -5, -1, + 131, -1, 102, 71, -3, -1, 116, 86, -1, 101, 115, -11, -3, -1, 25, + 145, -3, -1, 9, 144, -1, 72, 132, -7, -5, -1, 114, -1, 70, 100, + 40, -1, 130, 24, -41, -27, -11, -5, -3, -1, 55, 39, 23, -1, 113, + -1, 85, 7, -7, -3, -1, 112, 54, -1, 99, 69, -3, -1, 84, 38, + -1, 98, 53, -5, -1, 129, -1, 8, 128, -3, -1, 22, 97, -1, 6, + 96, -13, -9, -5, -3, -1, 83, 68, 37, -1, 82, 5, -1, 21, 81, + -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, -19, -11, + -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3, + -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, + 0 +}; + +static const short tab15[] = +{ +-495,-445,-355,-263,-183,-115, -77, -43, -27, -13, -7, -3, -1, 255, 239, + -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237, + 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3, + -1, 235, 205, -1, 220, 159, -15, -7, -3, -1, 249, 234, -1, 189, 219, + -3, -1, 143, 248, -1, 204, 158, -7, -3, -1, 233, 127, -1, 247, 173, + -3, -1, 218, 188, -1, 111, -1, 174, 15, -19, -11, -3, -1, 203, 246, + -3, -1, 142, 232, -1, 95, 157, -3, -1, 245, 126, -1, 231, 172, -9, + -3, -1, 202, 187, -3, -1, 217, 141, 79, -3, -1, 244, 63, -1, 243, + 216, -33, -17, -9, -3, -1, 230, 47, -1, 242, -1, 110, 240, -3, -1, + 31, 241, -1, 156, 201, -7, -3, -1, 94, 171, -1, 186, 229, -3, -1, + 125, 215, -1, 78, 228, -15, -7, -3, -1, 140, 200, -1, 62, 109, -3, + -1, 214, 227, -1, 155, 185, -7, -3, -1, 46, 170, -1, 226, 30, -5, + -1, 225, -1, 14, 224, -1, 93, 213, -45, -25, -13, -7, -3, -1, 124, + 199, -1, 77, 139, -1, 212, -1, 184, 154, -7, -3, -1, 169, 108, -1, + 198, 61, -1, 211, 210, -9, -5, -3, -1, 45, 13, 29, -1, 123, 183, + -5, -1, 209, -1, 92, 208, -1, 197, 138, -17, -7, -3, -1, 168, 76, + -1, 196, 107, -5, -1, 182, -1, 153, 12, -1, 60, 195, -9, -3, -1, + 122, 167, -1, 166, -1, 192, 11, -1, 194, -1, 44, 91, -55, -29, -15, + -7, -3, -1, 181, 28, -1, 137, 152, -3, -1, 193, 75, -1, 180, 106, + -5, -3, -1, 59, 121, 179, -3, -1, 151, 136, -1, 43, 90, -11, -5, + -1, 178, -1, 165, 27, -1, 177, -1, 176, 105, -7, -3, -1, 150, 74, + -1, 164, 120, -3, -1, 135, 58, 163, -17, -7, -3, -1, 89, 149, -1, + 42, 162, -3, -1, 26, 161, -3, -1, 10, 160, 104, -7, -3, -1, 134, + 73, -1, 148, 57, -5, -1, 147, -1, 119, 9, -1, 88, 133, -53, -29, + -13, -7, -3, -1, 41, 103, -1, 118, 146, -1, 145, -1, 25, 144, -7, + -3, -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 71, -7, + -3, -1, 40, 130, -1, 24, 129, -7, -3, -1, 116, 8, -1, 128, 86, + -3, -1, 101, 55, -1, 115, 70, -17, -7, -3, -1, 39, 114, -1, 100, + 23, -3, -1, 85, 113, -3, -1, 7, 112, 54, -7, -3, -1, 99, 69, + -1, 84, 38, -3, -1, 98, 22, -3, -1, 6, 96, 53, -33, -19, -9, + -5, -1, 97, -1, 83, 68, -1, 37, 82, -3, -1, 21, 81, -3, -1, + 5, 80, 52, -7, -3, -1, 67, 36, -1, 66, 51, -1, 65, -1, 20, + 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48, + 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16, + 0 +}; + +static const short tab16[] = +{ +-509,-503,-461,-323,-103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223, + 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3, + -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5, + -3, -1, 95, 245, 79, -1, 244, 243, -53, -1, 240, -1, 63, -29, -19, + -13, -7, -5, -1, 206, -1, 236, 221, 222, -1, 233, -1, 234, 217, -1, + 238, -1, 237, 235, -3, -1, 190, 205, -3, -1, 220, 219, 174, -11, -5, + -1, 204, -1, 173, 218, -3, -1, 126, 172, 202, -5, -3, -1, 201, 125, + 94, 189, 242, -93, -5, -3, -1, 47, 15, 31, -1, 241, -49, -25, -13, + -5, -1, 158, -1, 188, 203, -3, -1, 142, 232, -1, 157, 231, -7, -3, + -1, 187, 141, -1, 216, 110, -1, 230, 156, -13, -7, -3, -1, 171, 186, + -1, 229, 215, -1, 78, -1, 228, 140, -3, -1, 200, 62, -1, 109, -1, + 214, 155, -19, -11, -5, -3, -1, 185, 170, 225, -1, 212, -1, 184, 169, + -5, -1, 123, -1, 183, 208, 227, -7, -3, -1, 14, 224, -1, 93, 213, + -3, -1, 124, 199, -1, 77, 139, -75, -45, -27, -13, -7, -3, -1, 154, + 108, -1, 198, 61, -3, -1, 92, 197, 13, -7, -3, -1, 138, 168, -1, + 153, 76, -3, -1, 182, 122, 60, -11, -5, -3, -1, 91, 137, 28, -1, + 192, -1, 152, 121, -1, 226, -1, 46, 30, -15, -7, -3, -1, 211, 45, + -1, 210, 209, -5, -1, 59, -1, 151, 136, 29, -7, -3, -1, 196, 107, + -1, 195, 167, -1, 44, -1, 194, 181, -23, -13, -7, -3, -1, 193, 12, + -1, 75, 180, -3, -1, 106, 166, 179, -5, -3, -1, 90, 165, 43, -1, + 178, 27, -13, -5, -1, 177, -1, 11, 176, -3, -1, 105, 150, -1, 74, + 164, -5, -3, -1, 120, 135, 163, -3, -1, 58, 89, 42, -97, -57, -33, + -19, -11, -5, -3, -1, 149, 104, 161, -3, -1, 134, 119, 148, -5, -3, + -1, 73, 87, 103, 162, -5, -1, 26, -1, 10, 160, -3, -1, 57, 147, + -1, 88, 133, -9, -3, -1, 41, 146, -3, -1, 118, 9, 25, -5, -1, + 145, -1, 144, 72, -3, -1, 132, 117, -1, 56, 131, -21, -11, -5, -3, + -1, 102, 40, 130, -3, -1, 71, 116, 24, -3, -1, 129, 128, -3, -1, + 8, 86, 55, -9, -5, -1, 115, -1, 101, 70, -1, 39, 114, -5, -3, + -1, 100, 85, 7, 23, -23, -13, -5, -1, 113, -1, 112, 54, -3, -1, + 99, 69, -1, 84, 38, -3, -1, 98, 22, -1, 97, -1, 6, 96, -9, + -5, -1, 83, -1, 53, 68, -1, 37, 82, -1, 81, -1, 21, 5, -33, + -23, -13, -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, + -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1, + 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16, + 0 +}; + +static const short tab24[] = +{ +-451,-117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1, + 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9, + -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79, + 244, -71, -7, -3, -1, 63, 243, -1, 47, 242, -5, -1, 241, -1, 31, + 240, -25, -9, -1, 15, -3, -1, 238, 222, -1, 237, 206, -7, -3, -1, + 236, 221, -1, 190, 235, -3, -1, 205, 220, -1, 174, 234, -15, -7, -3, + -1, 189, 219, -1, 204, 158, -3, -1, 233, 173, -1, 218, 188, -7, -3, + -1, 203, 142, -1, 232, 157, -3, -1, 217, 126, -1, 231, 172, 255,-235, +-143, -77, -45, -25, -15, -7, -3, -1, 202, 187, -1, 141, 216, -5, -3, + -1, 14, 224, 13, 230, -5, -3, -1, 110, 156, 201, -1, 94, 186, -9, + -5, -1, 229, -1, 171, 125, -1, 215, 228, -3, -1, 140, 200, -3, -1, + 78, 46, 62, -15, -7, -3, -1, 109, 214, -1, 227, 155, -3, -1, 185, + 170, -1, 226, 30, -7, -3, -1, 225, 93, -1, 213, 124, -3, -1, 199, + 77, -1, 139, 184, -31, -15, -7, -3, -1, 212, 154, -1, 169, 108, -3, + -1, 198, 61, -1, 211, 45, -7, -3, -1, 210, 29, -1, 123, 183, -3, + -1, 209, 92, -1, 197, 138, -17, -7, -3, -1, 168, 153, -1, 76, 196, + -3, -1, 107, 182, -3, -1, 208, 12, 60, -7, -3, -1, 195, 122, -1, + 167, 44, -3, -1, 194, 91, -1, 181, 28, -57, -35, -19, -7, -3, -1, + 137, 152, -1, 193, 75, -5, -3, -1, 192, 11, 59, -3, -1, 176, 10, + 26, -5, -1, 180, -1, 106, 166, -3, -1, 121, 151, -3, -1, 160, 9, + 144, -9, -3, -1, 179, 136, -3, -1, 43, 90, 178, -7, -3, -1, 165, + 27, -1, 177, 105, -1, 150, 164, -17, -9, -5, -3, -1, 74, 120, 135, + -1, 58, 163, -3, -1, 89, 149, -1, 42, 162, -7, -3, -1, 161, 104, + -1, 134, 119, -3, -1, 73, 148, -1, 57, 147, -63, -31, -15, -7, -3, + -1, 88, 133, -1, 41, 103, -3, -1, 118, 146, -1, 25, 145, -7, -3, + -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 40, -17, -7, + -3, -1, 130, 24, -1, 71, 116, -5, -1, 129, -1, 8, 128, -1, 86, + 101, -7, -5, -1, 23, -1, 7, 112, 115, -3, -1, 55, 39, 114, -15, + -7, -3, -1, 70, 100, -1, 85, 113, -3, -1, 54, 99, -1, 69, 84, + -7, -3, -1, 38, 98, -1, 22, 97, -5, -3, -1, 6, 96, 53, -1, + 83, 68, -51, -37, -23, -15, -9, -3, -1, 37, 82, -1, 21, -1, 5, + 80, -1, 81, -1, 52, 67, -3, -1, 36, 66, -1, 51, 20, -9, -5, + -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1, + 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16, + 0 +}; + +static const short tab_c0[] = +{ + -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5, + 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8, + 0 +}; + +static const short tab_c1[] = +{ + -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9, + 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1, + 0 +}; + + + +static const struct newhuff ht[] = +{ + { /* 0 */ 0 , tab0 } , + { /* 2 */ 0 , tab1 } , + { /* 3 */ 0 , tab2 } , + { /* 3 */ 0 , tab3 } , + { /* 0 */ 0 , tab0 } , + { /* 4 */ 0 , tab5 } , + { /* 4 */ 0 , tab6 } , + { /* 6 */ 0 , tab7 } , + { /* 6 */ 0 , tab8 } , + { /* 6 */ 0 , tab9 } , + { /* 8 */ 0 , tab10 } , + { /* 8 */ 0 , tab11 } , + { /* 8 */ 0 , tab12 } , + { /* 16 */ 0 , tab13 } , + { /* 0 */ 0 , tab0 } , + { /* 16 */ 0 , tab15 } , + + { /* 16 */ 1 , tab16 } , + { /* 16 */ 2 , tab16 } , + { /* 16 */ 3 , tab16 } , + { /* 16 */ 4 , tab16 } , + { /* 16 */ 6 , tab16 } , + { /* 16 */ 8 , tab16 } , + { /* 16 */ 10, tab16 } , + { /* 16 */ 13, tab16 } , + { /* 16 */ 4 , tab24 } , + { /* 16 */ 5 , tab24 } , + { /* 16 */ 6 , tab24 } , + { /* 16 */ 7 , tab24 } , + { /* 16 */ 8 , tab24 } , + { /* 16 */ 9 , tab24 } , + { /* 16 */ 11, tab24 } , + { /* 16 */ 13, tab24 } +}; + +static const struct newhuff htc[] = +{ + { /* 1 , 1 , */ 0 , tab_c0 } , + { /* 1 , 1 , */ 0 , tab_c1 } +}; + + + diff --git a/lame-3.97/mpglib/interface.c b/lame-3.97/mpglib/interface.c new file mode 100644 index 0000000..1fea755 --- /dev/null +++ b/lame-3.97/mpglib/interface.c @@ -0,0 +1,612 @@ +/* $Id: interface.c,v 1.47 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "common.h" +#include "interface.h" +#include "tabinit.h" +#include "layer3.h" +#include "VbrTag.h" +#include "decode_i386.h" + +#ifdef USE_LAYER_1 + #include "layer1.h" +#endif + +#ifdef USE_LAYER_2 + #include "layer2.h" +#endif + +#ifdef WITH_DMALLOC +#include +#endif + + +BOOL InitMP3( PMPSTR mp) +{ + memset(mp,0,sizeof(MPSTR)); + + mp->framesize = 0; + mp->num_frames = 0; + mp->enc_delay = -1; + mp->enc_padding = -1; + mp->vbr_header=0; + mp->header_parsed=0; + mp->side_parsed=0; + mp->data_parsed=0; + mp->free_format=0; + mp->old_free_format=0; + mp->ssize = 0; + mp->dsize=0; + mp->fsizeold = -1; + mp->bsize = 0; + mp->head = mp->tail = NULL; + mp->fr.single = -1; + mp->bsnum = 0; + mp->wordpointer = mp->bsspace[mp->bsnum] + 512; + mp->bitindex = 0; + mp->synth_bo = 1; + mp->sync_bitstream = 1; + + make_decode_tables(32767); + + init_layer3(SBLIMIT); + +#ifdef USE_LAYER_2 + init_layer2(); +#endif + + return !0; +} + +void ExitMP3( PMPSTR mp) +{ + struct buf *b,*bn; + + b = mp->tail; + while(b) { + free(b->pnt); + bn = b->next; + free(b); + b = bn; + } +} + +static struct buf *addbuf( PMPSTR mp, unsigned char *buf,int size) +{ + struct buf *nbuf; + + nbuf = (struct buf*) malloc( sizeof(struct buf) ); + if(!nbuf) { + fprintf(stderr,"Out of memory!\n"); + return NULL; + } + nbuf->pnt = (unsigned char*) malloc((size_t)size); + if(!nbuf->pnt) { + free(nbuf); + return NULL; + } + nbuf->size = size; + memcpy(nbuf->pnt,buf,(size_t)size); + nbuf->next = NULL; + nbuf->prev = mp->head; + nbuf->pos = 0; + + if(!mp->tail) { + mp->tail = nbuf; + } + else { + mp->head->next = nbuf; + } + + mp->head = nbuf; + mp->bsize += size; + + return nbuf; +} + +void remove_buf(PMPSTR mp) +{ + struct buf *buf = mp->tail; + + mp->tail = buf->next; + if(mp->tail) + mp->tail->prev = NULL; + else { + mp->tail = mp->head = NULL; + } + + free(buf->pnt); + free(buf); + +} + +static int read_buf_byte(PMPSTR mp) +{ + unsigned int b; + + int pos; + + + pos = mp->tail->pos; + while(pos >= mp->tail->size) { + remove_buf(mp); + if(!mp->tail) { + fprintf(stderr,"Fatal error! tried to read past mp buffer\n"); + exit(1); + } + pos = mp->tail->pos; + } + + b = mp->tail->pnt[pos]; + mp->bsize--; + mp->tail->pos++; + + + return b; +} + + + +static void read_head(PMPSTR mp) +{ + unsigned long head; + + head = read_buf_byte(mp); + head <<= 8; + head |= read_buf_byte(mp); + head <<= 8; + head |= read_buf_byte(mp); + head <<= 8; + head |= read_buf_byte(mp); + + mp->header = head; +} + + + + + + +static void +copy_mp(PMPSTR mp,int size,unsigned char *ptr) +{ + int len = 0; + + while(len < size && mp->tail) { + int nlen; + int blen = mp->tail->size - mp->tail->pos; + if( (size - len) <= blen) { + nlen = size-len; + } + else { + nlen = blen; + } + memcpy(ptr+len,mp->tail->pnt+mp->tail->pos,(size_t)nlen); + len += nlen; + mp->tail->pos += nlen; + mp->bsize -= nlen; + if(mp->tail->pos == mp->tail->size) { + remove_buf(mp); + } + } +} + +/* number of bytes needed by GetVbrTag to parse header */ +#define XING_HEADER_SIZE 194 + +/* traverse mp data structure without changing it */ +/* (just like sync_buffer) */ +/* pull out Xing bytes */ +/* call vbr header check code from LAME */ +/* if we find a header, parse it and also compute the VBR header size */ +/* if no header, do nothing. */ +/* */ +/* bytes = number of bytes before MPEG header. skip this many bytes */ +/* before starting to read */ +/* return value: number of bytes in VBR header, including syncword */ +static int +check_vbr_header(PMPSTR mp,int bytes) +{ + int i,pos; + struct buf *buf=mp->tail; + unsigned char xing[XING_HEADER_SIZE]; + VBRTAGDATA pTagData; + + pos = buf->pos; + /* skip to valid header */ + for (i=0; i= buf->size) { + buf = buf->next; + pos = buf->pos; + if(!buf) return -1; /* fatal error */ + } + ++pos; + } + /* now read header */ + for (i=0; i= buf->size) { + buf = buf->next; + if(!buf) return -1; /* fatal error */ + pos = buf->pos; + } + xing[i] = buf->pnt[pos]; + ++pos; + } + + /* check first bytes for Xing header */ + mp->vbr_header = GetVbrTag(&pTagData,xing); + if (mp->vbr_header) { + mp->num_frames=pTagData.frames; + mp->enc_delay=pTagData.enc_delay; + mp->enc_padding=pTagData.enc_padding; + + /*fprintf(stderr,"\rmpglib: delays: %i %i \n",mp->enc_delay,mp->enc_padding); */ + /* fprintf(stderr,"\rmpglib: Xing VBR header dectected. MP3 file has %i frames\n", pTagData.frames); */ + if ( pTagData.headersize < 1 ) return 1; + return pTagData.headersize; + } + return 0; +} + + + + + + + +static int +sync_buffer(PMPSTR mp,int free_match) +{ + /* traverse mp structure without modifing pointers, looking + * for a frame valid header. + * if free_format, valid header must also have the same + * samplerate. + * return number of bytes in mp, before the header + * return -1 if header is not found + */ + unsigned int b[4]={0,0,0,0}; + int i,h,pos; + struct buf *buf=mp->tail; + if (!buf) return -1; + + pos = buf->pos; + for (i=0; ibsize; i++) { + /* get 4 bytes */ + + b[0]=b[1]; b[1]=b[2]; b[2]=b[3]; + while(pos >= buf->size) { + buf = buf->next; + pos = buf->pos; + if(!buf) { + return -1; + /* not enough data to read 4 bytes */ + } + } + b[3] = buf->pnt[pos]; + ++pos; + + if (i>=3) { + struct frame *fr = &mp->fr; + unsigned long head; + + head = b[0]; + head <<= 8; + head |= b[1]; + head <<= 8; + head |= b[2]; + head <<= 8; + head |= b[3]; + h = head_check(head,fr->lay); + + if (h && free_match) { + /* just to be even more thorough, match the sample rate */ + int mode,stereo,sampling_frequency,mpeg25,lsf; + + if( head & (1<<20) ) { + lsf = (head & (1<<19)) ? 0x0 : 0x1; + mpeg25 = 0; + } + else { + lsf = 1; + mpeg25 = 1; + } + + mode = ((head>>6)&0x3); + stereo = (mode == MPG_MD_MONO) ? 1 : 2; + + if(mpeg25) + sampling_frequency = 6 + ((head>>10)&0x3); + else + sampling_frequency = ((head>>10)&0x3) + (lsf*3); + h = ((stereo==fr->stereo) && (lsf==fr->lsf) && (mpeg25==fr->mpeg25) && + (sampling_frequency == fr->sampling_frequency)); + } + + if (h) { + return i-3; + } + } + } + return -1; +} + + + + +static int +decodeMP3_clipchoice( PMPSTR mp,unsigned char *in,int isize,char *out,int *done, + int (*synth_1to1_mono_ptr)(PMPSTR,real *,unsigned char *,int *), + int (*synth_1to1_ptr)(PMPSTR,real *,int,unsigned char *, int *) ) +{ + int i,iret,bits,bytes; + + if (in && isize && addbuf(mp,in,isize) == NULL) + return MP3_ERR; + + /* First decode header */ + if(!mp->header_parsed) { + + if (mp->fsizeold==-1 || mp->sync_bitstream) { + int vbrbytes; + mp->sync_bitstream=0; + + /* This is the very first call. sync with anything */ + /* bytes= number of bytes before header */ + bytes=sync_buffer(mp,0); + + /* now look for Xing VBR header */ + if (mp->bsize >= bytes+XING_HEADER_SIZE ) { + /* vbrbytes = number of bytes in entire vbr header */ + vbrbytes=check_vbr_header(mp,bytes); + } else { + /* not enough data to look for Xing header */ + return MP3_NEED_MORE; + } + + if (mp->vbr_header) { + /* do we have enough data to parse entire Xing header? */ + if (bytes+vbrbytes > mp->bsize) return MP3_NEED_MORE; + + /* read in Xing header. Buffer data in case it + * is used by a non zero main_data_begin for the next + * frame, but otherwise dont decode Xing header */ +/*fprintf(stderr,"found xing header, skipping %i bytes\n",vbrbytes+bytes);*/ + for (i=0; i0) { + /* there were some extra bytes in front of header. + * bitstream problem, but we are now resynced + * should try to buffer previous data in case new + * frame has nonzero main_data_begin, but we need + * to make sure we do not overflow buffer + */ + int size; + fprintf(stderr,"bitstream problem: resyncing...\n"); + mp->old_free_format=0; + mp->sync_bitstream=1; + + /* skip some bytes, buffer the rest */ + size = (int) (mp->wordpointer - (mp->bsspace[mp->bsnum]+512)); + + if (size > MAXFRAMESIZE) { + /* wordpointer buffer is trashed. probably cant recover, but try anyway */ + fprintf(stderr,"mpglib: wordpointer trashed. size=%i (%i) bytes=%i \n", + size,MAXFRAMESIZE,bytes); + size=0; + mp->wordpointer = mp->bsspace[mp->bsnum]+512; + } + + /* buffer contains 'size' data right now + we want to add 'bytes' worth of data, but do not + exceed MAXFRAMESIZE, so we through away 'i' bytes */ + i = (size+bytes)-MAXFRAMESIZE; + for (; i>0; --i) { + --bytes; + read_buf_byte(mp); + } + + copy_mp(mp,bytes,mp->wordpointer); + mp->fsizeold += bytes; + } + + read_head(mp); + decode_header(&mp->fr,mp->header); + mp->header_parsed=1; + mp->framesize = mp->fr.framesize; + mp->free_format = (mp->framesize==0); + + if(mp->fr.lsf) + mp->ssize = (mp->fr.stereo == 1) ? 9 : 17; + else + mp->ssize = (mp->fr.stereo == 1) ? 17 : 32; + if (mp->fr.error_protection) + mp->ssize += 2; + + mp->bsnum = 1-mp->bsnum; /* toggle buffer */ + mp->wordpointer = mp->bsspace[mp->bsnum] + 512; + mp->bitindex = 0; + + /* for very first header, never parse rest of data */ + if (mp->fsizeold==-1) + return MP3_NEED_MORE; + } + + /* now decode side information */ + if (!mp->side_parsed) { + + /* Layer 3 only */ + if (mp->fr.lay==3) + { + if (mp->bsize < mp->ssize) + return MP3_NEED_MORE; + + copy_mp(mp,mp->ssize,mp->wordpointer); + + if(mp->fr.error_protection) + getbits(mp,16); + bits=do_layer3_sideinfo(mp); + /* bits = actual number of bits needed to parse this frame */ + /* can be negative, if all bits needed are in the reservoir */ + if (bits<0) bits=0; + + /* read just as many bytes as necessary before decoding */ + mp->dsize = (bits+7)/8; + + /* this will force mpglib to read entire frame before decoding */ + /* mp->dsize= mp->framesize - mp->ssize;*/ + + } + + else + { + /* Layers 1 and 2 */ + + /* check if there is enough input data */ + if(mp->fr.framesize > mp->bsize) + return MP3_NEED_MORE; + + /* takes care that the right amount of data is copied into wordpointer */ + mp->dsize=mp->fr.framesize; + mp->ssize=0; + } + + mp->side_parsed=1; + } + + /* now decode main data */ + iret=MP3_NEED_MORE; + if (!mp->data_parsed ) { + if(mp->dsize > mp->bsize) { + return MP3_NEED_MORE; + } + + copy_mp(mp,mp->dsize,mp->wordpointer); + + *done = 0; + + /*do_layer3(&mp->fr,(unsigned char *) out,done); */ + switch (mp->fr.lay) + { +#ifdef USE_LAYER_1 + case 1: + if(mp->fr.error_protection) + getbits(mp,16); + + do_layer1(mp,(unsigned char *) out,done); + break; +#endif +#ifdef USE_LAYER_2 + case 2: + if(mp->fr.error_protection) + getbits(mp,16); + + do_layer2(mp,(unsigned char *) out,done); + break; +#endif + case 3: + do_layer3(mp,(unsigned char *) out,done, synth_1to1_mono_ptr, synth_1to1_ptr); + break; + default: + fprintf(stderr,"invalid layer %d\n",mp->fr.lay); + } + + mp->wordpointer = mp->bsspace[mp->bsnum] + 512 + mp->ssize + mp->dsize; + + mp->data_parsed=1; + iret=MP3_OK; + } + + + /* remaining bits are ancillary data, or reservoir for next frame + * If free format, scan stream looking for next frame to determine + * mp->framesize */ + if (mp->free_format) { + if (mp->old_free_format) { + /* free format. bitrate must not vary */ + mp->framesize=mp->fsizeold_nopadding + (mp->fr.padding); + }else{ + bytes=sync_buffer(mp,1); + if (bytes<0) return iret; + mp->framesize = bytes + mp->ssize+mp->dsize; + mp->fsizeold_nopadding= mp->framesize - mp->fr.padding; + /* + fprintf(stderr,"freeformat bitstream: estimated bitrate=%ikbs \n", + 8*(4+mp->framesize)*freqs[mp->fr.sampling_frequency]/ + (1000*576*(2-mp->fr.lsf))); + */ + } + } + + /* buffer the ancillary data and reservoir for next frame */ + bytes = mp->framesize-(mp->ssize+mp->dsize); + if (bytes > mp->bsize) { + return iret; + } + + if (bytes>0) { + int size; + copy_mp(mp,bytes,mp->wordpointer); + mp->wordpointer += bytes; + + size = (int) (mp->wordpointer - (mp->bsspace[mp->bsnum]+512)); + if (size > MAXFRAMESIZE) { + fprintf(stderr,"fatal error. MAXFRAMESIZE not large enough.\n"); + } + + } + + /* the above frame is completey parsed. start looking for next frame */ + mp->fsizeold = mp->framesize; + mp->old_free_format = mp->free_format; + mp->framesize =0; + mp->header_parsed=0; + mp->side_parsed=0; + mp->data_parsed=0; + + return iret; +} + +int decodeMP3( PMPSTR mp,unsigned char *in,int isize,char *out, + int osize,int *done) +{ + if(osize < 4608) { + fprintf(stderr,"To less out space\n"); + return MP3_ERR; + } + + /* passing pointers to the functions which clip the samples */ + return decodeMP3_clipchoice(mp, in, isize, out, done, synth_1to1_mono, synth_1to1); +} + +int decodeMP3_unclipped( PMPSTR mp,unsigned char *in,int isize,char *out, + int osize,int *done) +{ + /* we forbid input with more than 1152 samples per channel for output in unclipped mode */ + if(osize < 1152 * 2 * sizeof(real) ) { + fprintf(stderr,"To less out space\n"); + return MP3_ERR; + } + + /* passing pointers to the functions which don't clip the samples */ + return decodeMP3_clipchoice(mp, in, isize, out, done, synth_1to1_mono_unclipped, synth_1to1_unclipped); +} + + + + + diff --git a/lame-3.97/mpglib/interface.h b/lame-3.97/mpglib/interface.h new file mode 100644 index 0000000..a1bd1d8 --- /dev/null +++ b/lame-3.97/mpglib/interface.h @@ -0,0 +1,45 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef INTERFACE_H_INCLUDED +#define INTERFACE_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +#include "common.h" + +BOOL InitMP3(PMPSTR mp); +int decodeMP3(PMPSTR mp,unsigned char *inmemory,int inmemsize,char *outmemory,int outmemsize,int *done); +void ExitMP3(PMPSTR mp); + +/* added decodeMP3_unclipped to support returning raw floating-point values of samples. The representation + of the floating-point numbers is defined in mpg123.h as #define real. It is 64-bit double by default. + No more than 1152 samples per channel are allowed. */ +int decodeMP3_unclipped(PMPSTR mp,unsigned char *inmemory,int inmemsize,char *outmemory,int outmemsize,int *done); + +/* added remove_buf to support mpglib seeking */ +void remove_buf(PMPSTR mp); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/lame-3.97/mpglib/l2tables.h b/lame-3.97/mpglib/l2tables.h new file mode 100644 index 0000000..ab533f7 --- /dev/null +++ b/lame-3.97/mpglib/l2tables.h @@ -0,0 +1,155 @@ +/* + * Layer 2 Alloc tables .. + * most other tables are calculated on program start (which is (of course) + * not ISO-conform) .. + * Layer-3 huffman table is in huffman.h + */ + +const struct al_table2 alloc_0[] = { + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767} }; + +const struct al_table2 alloc_1[] = { + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{3,-3},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255},{10,-511}, + {11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {3,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767}, + {2,0},{5,3},{7,5},{16,-32767} }; + +const struct al_table2 alloc_2[] = { + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; + +const struct al_table2 alloc_3[] = { + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {4,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127},{9,-255}, + {10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191},{15,-16383}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63} }; + +const struct al_table2 alloc_4[] = { + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {4,0},{5,3},{7,5},{3,-3},{10,9},{4,-7},{5,-15},{6,-31},{7,-63},{8,-127}, + {9,-255},{10,-511},{11,-1023},{12,-2047},{13,-4095},{14,-8191}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {3,0},{5,3},{7,5},{10,9},{4,-7},{5,-15},{6,-31},{7,-63}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9}, + {2,0},{5,3},{7,5},{10,9} }; + + diff --git a/lame-3.97/mpglib/layer1.c b/lame-3.97/mpglib/layer1.c new file mode 100644 index 0000000..0e6b84b --- /dev/null +++ b/lame-3.97/mpglib/layer1.c @@ -0,0 +1,173 @@ +/* + * Mpeg Layer-1 audio decoder + * -------------------------- + * copyright (c) 1995 by Michael Hipp, All rights reserved. See also 'README' + * near unoptimzed ... + * + * may have a few bugs after last optimization ... + * + */ + +/* $Id: layer1.c,v 1.20 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef USE_LAYER_1 + +#include +#include "common.h" +#include "decode_i386.h" + +#ifdef WITH_DMALLOC +#include +#endif + +static void +I_step_one(PMPSTR mp, unsigned int balloc[], unsigned int scale_index[2][SBLIMIT],struct frame *fr) +{ + unsigned int *ba=balloc; + unsigned int *sca = (unsigned int *) scale_index; + + assert ( fr->stereo == 1 || fr->stereo == 2 ); + if(fr->stereo==2) { + int i; + int jsbound = fr->jsbound; + for (i=0;istereo == 1 || fr->stereo == 2 ); + if(fr->stereo == 2) { + int jsbound = fr->jsbound; + real *f0 = fraction[0]; + real *f1 = fraction[1]; + ba = balloc; + for (sample=smpb,i=0;idown_sample_sblimit;i<32;i++) + fraction[0][i] = fraction[1][i] = 0.0; + } + else { + real *f0 = fraction[0]; + ba = balloc; + for (sample=smpb,i=0;idown_sample_sblimit;i<32;i++) + fraction[0][i] = 0.0; + } +} + +/*int do_layer1(struct frame *fr,int outmode,struct audio_info_struct *ai) */ +int do_layer1(PMPSTR mp, unsigned char *pcm_sample,int *pcm_point) +{ + int clip=0; + unsigned int balloc[2*SBLIMIT]; + unsigned int scale_index[2][SBLIMIT]; + real fraction[2][SBLIMIT]; + struct frame *fr=&(mp->fr); + int i,stereo = fr->stereo; + int single = fr->single; + + fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? (fr->mode_ext<<2)+4 : 32; + + if (stereo == 1 || single == 3) + single = 0; + + I_step_one(mp,balloc,scale_index,fr); + + for (i=0;i= 0) + { + clip += synth_1to1_mono( mp, (real *) fraction[single],pcm_sample,pcm_point); + } + else { + int p1 = *pcm_point; + clip += synth_1to1( mp, (real *) fraction[0],0,pcm_sample,&p1); + clip += synth_1to1( mp, (real *) fraction[1],1,pcm_sample,pcm_point); + } + } + + return clip; +} + +#endif + diff --git a/lame-3.97/mpglib/layer1.h b/lame-3.97/mpglib/layer1.h new file mode 100644 index 0000000..6c82c08 --- /dev/null +++ b/lame-3.97/mpglib/layer1.h @@ -0,0 +1,25 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef LAYER1_H_INCLUDED +#define LAYER1_H_INCLUDED + +int do_layer1(PMPSTR mp, unsigned char *pcm_sample,int *pcm_point); + +#endif + diff --git a/lame-3.97/mpglib/layer2.c b/lame-3.97/mpglib/layer2.c new file mode 100644 index 0000000..66f9860 --- /dev/null +++ b/lame-3.97/mpglib/layer2.c @@ -0,0 +1,312 @@ +/* + * Mpeg Layer-2 audio decoder + * -------------------------- + * copyright (c) 1995 by Michael Hipp, All rights reserved. See also 'README' + * + */ + +/* $Id: layer2.c,v 1.20 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef USE_LAYER_2 + + +#include "common.h" +#include "layer2.h" +#include "l2tables.h" +#include "decode_i386.h" + +#ifdef WITH_DMALLOC +#include +#endif + +static int grp_3tab[32 * 3] = { 0, }; /* used: 27 */ +static int grp_5tab[128 * 3] = { 0, }; /* used: 125 */ +static int grp_9tab[1024 * 3] = { 0, }; /* used: 729 */ + +void init_layer2(void) +{ + static const double mulmul[27] = { + 0.0 , -2.0/3.0 , 2.0/3.0 , + 2.0/7.0 , 2.0/15.0 , 2.0/31.0, 2.0/63.0 , 2.0/127.0 , 2.0/255.0 , + 2.0/511.0 , 2.0/1023.0 , 2.0/2047.0 , 2.0/4095.0 , 2.0/8191.0 , + 2.0/16383.0 , 2.0/32767.0 , 2.0/65535.0 , + -4.0/5.0 , -2.0/5.0 , 2.0/5.0, 4.0/5.0 , + -8.0/9.0 , -4.0/9.0 , -2.0/9.0 , 2.0/9.0 , 4.0/9.0 , 8.0/9.0 }; + static const int base[3][9] = { + { 1 , 0, 2 , } , + { 17, 18, 0 , 19, 20 , } , + { 21, 1, 22, 23, 0, 24, 25, 2, 26 } }; + int i,j,k,l,len; + real *table; + static const int tablen[3] = { 3 , 5 , 9 }; + static int *itable,*tables[3] = { grp_3tab , grp_5tab , grp_9tab }; + + for(i=0;i<3;i++) + { + itable = tables[i]; + len = tablen[i]; + for(j=0;jstereo-1; + int sblimit = fr->II_sblimit; + int jsbound = fr->jsbound; + int sblimit2 = fr->II_sblimit<alloc; + int i; + static unsigned int scfsi_buf[64]; + unsigned int *scfsi,*bita; + int sc,step; + + bita = bit_alloc; + if(stereo) + { + for (i=jsbound;i;i--,alloc1+=(1<bits); + *bita++ = (char) getbits(mp,step); + } + for (i=sblimit-jsbound;i;i--,alloc1+=(1<bits); + bita[1] = bita[0]; + bita+=2; + } + bita = bit_alloc; + scfsi=scfsi_buf; + for (i=sblimit2;i;i--) + if (*bita++) + *scfsi++ = (char) getbits_fast(mp,2); + } + else /* mono */ + { + for (i=sblimit;i;i--,alloc1+=(1<bits); + bita = bit_alloc; + scfsi=scfsi_buf; + for (i=sblimit;i;i--) + if (*bita++) + *scfsi++ = (char) getbits_fast(mp,2); + } + + bita = bit_alloc; + scfsi=scfsi_buf; + for (i=sblimit2;i;i--) + if (*bita++) + switch (*scfsi++) + { + case 0: + *scale++ = getbits_fast(mp,6); + *scale++ = getbits_fast(mp,6); + *scale++ = getbits_fast(mp,6); + break; + case 1 : + *scale++ = sc = getbits_fast(mp,6); + *scale++ = sc; + *scale++ = getbits_fast(mp,6); + break; + case 2: + *scale++ = sc = getbits_fast(mp,6); + *scale++ = sc; + *scale++ = sc; + break; + default: /* case 3 */ + *scale++ = getbits_fast(mp,6); + *scale++ = sc = getbits_fast(mp,6); + *scale++ = sc; + break; + } + +} + +static void +II_step_two(PMPSTR mp, unsigned int *bit_alloc,real fraction[2][4][SBLIMIT],int *scale,struct frame *fr,int x1) +{ + int i,j,k,ba; + int stereo = fr->stereo; + int sblimit = fr->II_sblimit; + int jsbound = fr->jsbound; + struct al_table2 *alloc2,*alloc1 = fr->alloc; + unsigned int *bita=bit_alloc; + int d1,step; + + for (i=0;ibits; + for (j=0;jbits; + if( (d1=alloc2->d) < 0) + { + real cm=muls[k][scale[x1]]; + fraction[j][0][i] = ((real) ((int)getbits(mp,k) + d1)) * cm; + fraction[j][1][i] = ((real) ((int)getbits(mp,k) + d1)) * cm; + fraction[j][2][i] = ((real) ((int)getbits(mp,k) + d1)) * cm; + } + else + { + static int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; + unsigned int idx,*tab,m=scale[x1]; + idx = (unsigned int) getbits(mp,k); + tab = (unsigned int *) (table[d1] + idx + idx + idx); + fraction[j][0][i] = muls[*tab++][m]; + fraction[j][1][i] = muls[*tab++][m]; + fraction[j][2][i] = muls[*tab][m]; + } + scale+=3; + } + else + fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = 0.0; + } + } + + for (i=jsbound;ibits; + bita++; /* channel 1 and channel 2 bitalloc are the same */ + if ( (ba=*bita++) ) + { + k=(alloc2 = alloc1+ba)->bits; + if( (d1=alloc2->d) < 0) + { + real cm; + cm=muls[k][scale[x1+3]]; + fraction[1][0][i] = (fraction[0][0][i] = (real) ((int)getbits(mp,k) + d1) ) * cm; + fraction[1][1][i] = (fraction[0][1][i] = (real) ((int)getbits(mp,k) + d1) ) * cm; + fraction[1][2][i] = (fraction[0][2][i] = (real) ((int)getbits(mp,k) + d1) ) * cm; + cm=muls[k][scale[x1]]; + fraction[0][0][i] *= cm; fraction[0][1][i] *= cm; fraction[0][2][i] *= cm; + } + else + { + static int *table[] = { 0,0,0,grp_3tab,0,grp_5tab,0,0,0,grp_9tab }; + unsigned int idx,*tab,m1,m2; + m1 = scale[x1]; m2 = scale[x1+3]; + idx = (unsigned int) getbits(mp,k); + tab = (unsigned int *) (table[d1] + idx + idx + idx); + fraction[0][0][i] = muls[*tab][m1]; fraction[1][0][i] = muls[*tab++][m2]; + fraction[0][1][i] = muls[*tab][m1]; fraction[1][1][i] = muls[*tab++][m2]; + fraction[0][2][i] = muls[*tab][m1]; fraction[1][2][i] = muls[*tab][m2]; + } + scale+=6; + } + else { + fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] = + fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = 0.0; + } +/* + should we use individual scalefac for channel 2 or + is the current way the right one , where we just copy channel 1 to + channel 2 ?? + The current 'strange' thing is, that we throw away the scalefac + values for the second channel ...!! +-> changed .. now we use the scalefac values of channel one !! +*/ + } + +/* if(sblimit > (fr->down_sample_sblimit) ) */ +/* sblimit = fr->down_sample_sblimit; */ + + for(i=sblimit;ilsf) + table = 4; + else + table = translate[fr->sampling_frequency][2-fr->stereo][fr->bitrate_index]; + sblim = sblims[table]; + + fr->alloc = (struct al_table2*)tables[table]; + fr->II_sblimit = sblim; +} + + +int do_layer2( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point) +/*int do_layer2(struct frame *fr,int outmode,struct audio_info_struct *ai) */ +{ + int clip=0; + int i,j; + real fraction[2][4][SBLIMIT]; /* pick_table clears unused subbands */ + unsigned int bit_alloc[64]; + int scale[192]; + struct frame *fr=&(mp->fr); + int stereo = fr->stereo; + int single = fr->single; + + II_select_table(fr); + fr->jsbound = (fr->mode == MPG_MD_JOINT_STEREO) ? + (fr->mode_ext<<2)+4 : fr->II_sblimit; + + if(stereo == 1 || single == 3) + single = 0; + + II_step_one(mp,bit_alloc, scale, fr); + + for (i=0;i>2); + for (j=0;j<3;j++) + { + if(single >= 0) + { + clip += synth_1to1_mono(mp, fraction[single][j],pcm_sample,pcm_point); + } + else { + int p1 = *pcm_point; + clip += synth_1to1(mp, fraction[0][j],0,pcm_sample,&p1); + clip += synth_1to1(mp, fraction[1][j],1,pcm_sample,pcm_point); + } + } + } + + return clip; +} + + +#endif + diff --git a/lame-3.97/mpglib/layer2.h b/lame-3.97/mpglib/layer2.h new file mode 100644 index 0000000..aad395e --- /dev/null +++ b/lame-3.97/mpglib/layer2.h @@ -0,0 +1,40 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifdef USE_LAYER_2 + +#ifndef LAYER2_H_INCLUDED +#define LAYER2_H_INCLUDED + + +struct al_table2 +{ + short bits; + short d; +}; + + + +void init_layer2(void); +int do_layer2( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point); + +#endif + +#endif + + diff --git a/lame-3.97/mpglib/layer3.c b/lame-3.97/mpglib/layer3.c new file mode 100644 index 0000000..712ba0b --- /dev/null +++ b/lame-3.97/mpglib/layer3.c @@ -0,0 +1,1799 @@ +/* + * Mpeg Layer-3 audio decoder + * -------------------------- + * copyright (c) 1995,1996,1997 by Michael Hipp. + * All rights reserved. See also 'README' + */ + +/* $Id: layer3.c,v 1.48 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "common.h" +#include "huffman.h" +#include "lame-analysis.h" +#include "decode_i386.h" + +#ifdef WITH_DMALLOC +#include +#endif + + + +static real ispow[8207]; +static real aa_ca[8],aa_cs[8]; +static real COS1[12][6]; +static real win[4][36]; +static real win1[4][36]; +static real gainpow2[256+118+4]; +static real COS9[9]; +static real COS6_1,COS6_2; +static real tfcos36[9]; +static real tfcos12[3]; + +struct bandInfoStruct { + short longIdx[23]; + short longDiff[22]; + short shortIdx[14]; + short shortDiff[13]; +}; + +static int longLimit[9][23]; +static int shortLimit[9][14]; + +const struct bandInfoStruct bandInfo[9] = { + +/* MPEG 1.0 */ + { {0,4,8,12,16,20,24,30,36,44,52,62,74, 90,110,134,162,196,238,288,342,418,576}, + {4,4,4,4,4,4,6,6,8, 8,10,12,16,20,24,28,34,42,50,54, 76,158}, + {0,4*3,8*3,12*3,16*3,22*3,30*3,40*3,52*3,66*3, 84*3,106*3,136*3,192*3}, + {4,4,4,4,6,8,10,12,14,18,22,30,56} } , + + { {0,4,8,12,16,20,24,30,36,42,50,60,72, 88,106,128,156,190,230,276,330,384,576}, + {4,4,4,4,4,4,6,6,6, 8,10,12,16,18,22,28,34,40,46,54, 54,192}, + {0,4*3,8*3,12*3,16*3,22*3,28*3,38*3,50*3,64*3, 80*3,100*3,126*3,192*3}, + {4,4,4,4,6,6,10,12,14,16,20,26,66} } , + + { {0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576} , + {4,4,4,4,4,4,6,6,8,10,12,16,20,24,30,38,46,56,68,84,102, 26} , + {0,4*3,8*3,12*3,16*3,22*3,30*3,42*3,58*3,78*3,104*3,138*3,180*3,192*3} , + {4,4,4,4,6,8,12,16,20,26,34,42,12} } , + +/* MPEG 2.0 */ + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 } , + {0,4*3,8*3,12*3,18*3,24*3,32*3,42*3,56*3,74*3,100*3,132*3,174*3,192*3} , + {4,4,4,6,6,8,10,14,18,26,32,42,18 } } , + /* docs: 332. mpg123: 330 */ + { {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,332,394,464,540,576}, + {6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36 } , + {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,136*3,180*3,192*3} , + {4,4,4,6,8,10,12,14,18,24,32,44,12 } } , + + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54 }, + {0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,134*3,174*3,192*3}, + {4,4,4,6,8,10,12,14,18,24,30,40,18 } } , +/* MPEG 2.5 */ + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, + {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, + {4,4,4,6,8,10,12,14,18,24,30,40,18} }, + { {0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576} , + {6,6,6,6,6,6,8,10,12,14,16,20,24,28,32,38,46,52,60,68,58,54}, + {0,12,24,36,54,78,108,144,186,240,312,402,522,576}, + {4,4,4,6,8,10,12,14,18,24,30,40,18} }, + { {0,12,24,36,48,60,72,88,108,132,160,192,232,280,336,400,476,566,568,570,572,574,576}, + {12,12,12,12,12,12,16,20,24,28,32,40,48,56,64,76,90,2,2,2,2,2}, + {0, 24, 48, 72,108,156,216,288,372,480,486,492,498,576}, + {8,8,8,12,16,20,24,28,36,2,2,2,26} } , +}; + +static int mapbuf0[9][152]; +static int mapbuf1[9][156]; +static int mapbuf2[9][44]; +static int *map[9][3]; +static int *mapend[9][3]; + +static unsigned int n_slen2[512]; /* MPEG 2.0 slen for 'normal' mode */ +static unsigned int i_slen2[256]; /* MPEG 2.0 slen for intensity stereo */ + +static real tan1_1[16],tan2_1[16],tan1_2[16],tan2_2[16]; +static real pow1_1[2][16],pow2_1[2][16],pow1_2[2][16],pow2_2[2][16]; + +static unsigned int get1bit(PMPSTR mp) +{ + unsigned char rval; + rval = *mp->wordpointer << mp->bitindex; + + mp->bitindex++; + mp->wordpointer += (mp->bitindex>>3); + mp->bitindex &= 7; + + return rval>>7; +} + + + + +/* + * init tables for layer-3 + */ +void init_layer3(int down_sample_sblimit) +{ + int i,j,k; + + for(i=-256;i<118+4;i++) + gainpow2[i+256] = pow((double)2.0,-0.25 * (double) (i+210) ); + + for(i=0;i<8207;i++) + ispow[i] = pow((double)i,(double)4.0/3.0); + + for (i=0;i<8;i++) + { + static double Ci[8]={-0.6,-0.535,-0.33,-0.185,-0.095,-0.041,-0.0142,-0.0037}; + double sq=sqrt(1.0+Ci[i]*Ci[i]); + aa_cs[i] = 1.0/sq; + aa_ca[i] = Ci[i]/sq; + } + + for(i=0;i<18;i++) + { + win[0][i] = win[1][i] = 0.5 * sin( M_PI / 72.0 * (double) (2*(i+0) +1) ) / cos ( M_PI * (double) (2*(i+0) +19) / 72.0 ); + win[0][i+18] = win[3][i+18] = 0.5 * sin( M_PI / 72.0 * (double) (2*(i+18)+1) ) / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 ); + } + for(i=0;i<6;i++) + { + win[1][i+18] = 0.5 / cos ( M_PI * (double) (2*(i+18)+19) / 72.0 ); + win[3][i+12] = 0.5 / cos ( M_PI * (double) (2*(i+12)+19) / 72.0 ); + win[1][i+24] = 0.5 * sin( M_PI / 24.0 * (double) (2*i+13) ) / cos ( M_PI * (double) (2*(i+24)+19) / 72.0 ); + win[1][i+30] = win[3][i] = 0.0; + win[3][i+6 ] = 0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*(i+6 )+19) / 72.0 ); + } + + for(i=0;i<9;i++) + COS9[i] = cos( M_PI / 18.0 * (double) i); + + for(i=0;i<9;i++) + tfcos36[i] = 0.5 / cos ( M_PI * (double) (i*2+1) / 36.0 ); + for(i=0;i<3;i++) + tfcos12[i] = 0.5 / cos ( M_PI * (double) (i*2+1) / 12.0 ); + + COS6_1 = cos( M_PI / 6.0 * (double) 1); + COS6_2 = cos( M_PI / 6.0 * (double) 2); + + for(i=0;i<12;i++) + { + win[2][i] = 0.5 * sin( M_PI / 24.0 * (double) (2*i+1) ) / cos ( M_PI * (double) (2*i+7) / 24.0 ); + for(j=0;j<6;j++) + COS1[i][j] = cos( M_PI / 24.0 * (double) ((2*i+7)*(2*j+1)) ); + } + + for(j=0;j<4;j++) { + static int len[4] = { 36,36,12,36 }; + for(i=0;i 0) { + if( i & 1 ) + p1 = pow(base,(i+1.0)*0.5); + else + p2 = pow(base,i*0.5); + } + pow1_1[j][i] = p1; + pow2_1[j][i] = p2; + pow1_2[j][i] = M_SQRT2 * p1; + pow2_2[j][i] = M_SQRT2 * p2; + } + } + + for(j=0;j<9;j++) + { + struct bandInfoStruct *bi = (struct bandInfoStruct *)&bandInfo[j]; + int *mp; + int cb,lwin; + short *bdf; + + mp = map[j][0] = mapbuf0[j]; + bdf = bi->longDiff; + for(i=0,cb = 0; cb < 8 ; cb++,i+=*bdf++) { + *mp++ = (*bdf) >> 1; + *mp++ = i; + *mp++ = 3; + *mp++ = cb; + } + bdf = bi->shortDiff+3; + for(cb=3;cb<13;cb++) { + int l = (*bdf++) >> 1; + for(lwin=0;lwin<3;lwin++) { + *mp++ = l; + *mp++ = i + lwin; + *mp++ = lwin; + *mp++ = cb; + } + i += 6*l; + } + mapend[j][0] = mp; + + mp = map[j][1] = mapbuf1[j]; + bdf = bi->shortDiff+0; + for(i=0,cb=0;cb<13;cb++) { + int l = (*bdf++) >> 1; + for(lwin=0;lwin<3;lwin++) { + *mp++ = l; + *mp++ = i + lwin; + *mp++ = lwin; + *mp++ = cb; + } + i += 6*l; + } + mapend[j][1] = mp; + + mp = map[j][2] = mapbuf2[j]; + bdf = bi->longDiff; + for(cb = 0; cb < 22 ; cb++) { + *mp++ = (*bdf++) >> 1; + *mp++ = cb; + } + mapend[j][2] = mp; + + } + + for(j=0;j<9;j++) { + for(i=0;i<23;i++) { + longLimit[j][i] = (bandInfo[j].longIdx[i] - 1 + 8) / 18 + 1; + if(longLimit[j][i] > (down_sample_sblimit) ) + longLimit[j][i] = down_sample_sblimit; + } + for(i=0;i<14;i++) { + shortLimit[j][i] = (bandInfo[j].shortIdx[i] - 1) / 18 + 1; + if(shortLimit[j][i] > (down_sample_sblimit) ) + shortLimit[j][i] = down_sample_sblimit; + } + } + + for(i=0;i<5;i++) { + for(j=0;j<6;j++) { + for(k=0;k<6;k++) { + int n = k + j * 6 + i * 36; + i_slen2[n] = i|(j<<3)|(k<<6)|(3<<12); + } + } + } + for(i=0;i<4;i++) { + for(j=0;j<4;j++) { + for(k=0;k<4;k++) { + int n = k + j * 4 + i * 16; + i_slen2[n+180] = i|(j<<3)|(k<<6)|(4<<12); + } + } + } + for(i=0;i<4;i++) { + for(j=0;j<3;j++) { + int n = j + i * 3; + i_slen2[n+244] = i|(j<<3) | (5<<12); + n_slen2[n+500] = i|(j<<3) | (2<<12) | (1<<15); + } + } + + for(i=0;i<5;i++) { + for(j=0;j<5;j++) { + for(k=0;k<4;k++) { + int l; + for(l=0;l<4;l++) { + int n = l + k * 4 + j * 16 + i * 80; + n_slen2[n] = i|(j<<3)|(k<<6)|(l<<9)|(0<<12); + } + } + } + } + for(i=0;i<5;i++) { + for(j=0;j<5;j++) { + for(k=0;k<4;k++) { + int n = k + j * 4 + i * 20; + n_slen2[n+400] = i|(j<<3)|(k<<6)|(1<<12); + } + } + } +} + +/* + * read additional side information + */ + +static void III_get_side_info_1(PMPSTR mp, struct III_sideinfo *si,int stereo, + int ms_stereo,long sfreq,int single) +{ + int ch, gr; + int powdiff = (single == 3) ? 4 : 0; + + si->main_data_begin = getbits(mp,9); + if (stereo == 1) + si->private_bits = getbits_fast(mp,5); + else + si->private_bits = getbits_fast(mp,3); + + for (ch=0; chch[ch].gr[0].scfsi = -1; + si->ch[ch].gr[1].scfsi = getbits_fast(mp,4); + } + + for (gr=0; gr<2; gr++) + { + for (ch=0; chch[ch].gr[gr]); + + gr_infos->part2_3_length = getbits(mp,12); + gr_infos->big_values = getbits_fast(mp,9); + if(gr_infos->big_values > 288) { + fprintf(stderr,"big_values too large! %i\n",gr_infos->big_values); + gr_infos->big_values = 288; + } + { + unsigned int qss = getbits_fast(mp,8); + gr_infos->pow2gain = gainpow2+256 - qss + powdiff; +#ifndef NOANALYSIS + if (mpg123_pinfo != NULL) { + mpg123_pinfo->qss[gr][ch]=qss; + } +#endif + } + if(ms_stereo) + gr_infos->pow2gain += 2; + gr_infos->scalefac_compress = getbits_fast(mp,4); +/* window-switching flag == 1 for block_Type != 0 .. and block-type == 0 -> win-sw-flag = 0 */ + if(get1bit(mp)) + { + int i; + gr_infos->block_type = getbits_fast(mp,2); + gr_infos->mixed_block_flag = get1bit(mp); + gr_infos->table_select[0] = getbits_fast(mp,5); + gr_infos->table_select[1] = getbits_fast(mp,5); + + + /* + * table_select[2] not needed, because there is no region2, + * but to satisfy some verifications tools we set it either. + */ + gr_infos->table_select[2] = 0; + for(i=0;i<3;i++) { + unsigned int sbg = (getbits_fast(mp,3)<<3); + gr_infos->full_gain[i] = gr_infos->pow2gain + sbg; +#ifndef NOANALYSIS + if (mpg123_pinfo != NULL) + mpg123_pinfo->sub_gain[gr][ch][i]=sbg/8; +#endif + } + + if(gr_infos->block_type == 0) { + fprintf(stderr,"Blocktype == 0 and window-switching == 1 not allowed.\n"); + /* error seems to be very good recoverable, so don't exit */ + /* exit(1); */ + } + /* region_count/start parameters are implicit in this case. */ + gr_infos->region1start = 36>>1; + gr_infos->region2start = 576>>1; + } + else + { + int i,r0c,r1c; + for (i=0; i<3; i++) + gr_infos->table_select[i] = getbits_fast(mp,5); + r0c = getbits_fast(mp,4); + r1c = getbits_fast(mp,3); + gr_infos->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ; + gr_infos->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; + gr_infos->block_type = 0; + gr_infos->mixed_block_flag = 0; + } + gr_infos->preflag = get1bit(mp); + gr_infos->scalefac_scale = get1bit(mp); + gr_infos->count1table_select = get1bit(mp); + } + } +} + +/* + * Side Info for MPEG 2.0 / LSF + */ +static void III_get_side_info_2(PMPSTR mp, struct III_sideinfo *si,int stereo, + int ms_stereo,long sfreq,int single) +{ + int ch; + int powdiff = (single == 3) ? 4 : 0; + + si->main_data_begin = getbits(mp,8); + + if (stereo == 1) + si->private_bits = get1bit(mp); + else + si->private_bits = getbits_fast(mp,2); + + for (ch=0; chch[ch].gr[0]); + unsigned int qss; + + gr_infos->part2_3_length = getbits(mp,12); + gr_infos->big_values = getbits_fast(mp,9); + if(gr_infos->big_values > 288) { + fprintf(stderr,"big_values too large! %i\n",gr_infos->big_values); + gr_infos->big_values = 288; + } + qss=getbits_fast(mp,8); + gr_infos->pow2gain = gainpow2+256 - qss + powdiff; +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + mpg123_pinfo->qss[0][ch]=qss; + } +#endif + + + if(ms_stereo) + gr_infos->pow2gain += 2; + gr_infos->scalefac_compress = getbits(mp,9); +/* window-switching flag == 1 for block_Type != 0 .. and block-type == 0 -> win-sw-flag = 0 */ + if(get1bit(mp)) + { + int i; + gr_infos->block_type = getbits_fast(mp,2); + gr_infos->mixed_block_flag = get1bit(mp); + gr_infos->table_select[0] = getbits_fast(mp,5); + gr_infos->table_select[1] = getbits_fast(mp,5); + /* + * table_select[2] not needed, because there is no region2, + * but to satisfy some verifications tools we set it either. + */ + gr_infos->table_select[2] = 0; + for(i=0;i<3;i++) { + unsigned int sbg = (getbits_fast(mp,3)<<3); + gr_infos->full_gain[i] = gr_infos->pow2gain + sbg; +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) + mpg123_pinfo->sub_gain[0][ch][i]=sbg/8; +#endif + + } + + if(gr_infos->block_type == 0) { + fprintf(stderr,"Blocktype == 0 and window-switching == 1 not allowed.\n"); + /* error seems to be very good recoverable, so don't exit */ + /* exit(1); */ + } + /* region_count/start parameters are implicit in this case. */ +/* check this again! */ + if(gr_infos->block_type == 2) { + if (sfreq == 8) + gr_infos->region1start = 36; + else + gr_infos->region1start = 36>>1; + } + else if(sfreq == 8) +/* check this for 2.5 and sfreq=8 */ + gr_infos->region1start = 108>>1; + else + gr_infos->region1start = 54>>1; + gr_infos->region2start = 576>>1; + } + else + { + int i,r0c,r1c; + for (i=0; i<3; i++) + gr_infos->table_select[i] = getbits_fast(mp,5); + r0c = getbits_fast(mp,4); + r1c = getbits_fast(mp,3); + gr_infos->region1start = bandInfo[sfreq].longIdx[r0c+1] >> 1 ; + gr_infos->region2start = bandInfo[sfreq].longIdx[r0c+1+r1c+1] >> 1; + gr_infos->block_type = 0; + gr_infos->mixed_block_flag = 0; + } + gr_infos->scalefac_scale = get1bit(mp); + gr_infos->count1table_select = get1bit(mp); + } +} + +/* + * read scalefactors + */ + +static int +III_get_scale_factors_1(PMPSTR mp, int *scf,struct gr_info_s *gr_infos) +{ + static const unsigned char slen[2][16] = { + {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}, + {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3} + }; + int numbits; + int num0 = slen[0][gr_infos->scalefac_compress]; + int num1 = slen[1][gr_infos->scalefac_compress]; + + if (gr_infos->block_type == 2) + { + int i=18; + numbits = (num0 + num1) * 18; + + if (gr_infos->mixed_block_flag) { + for (i=8;i;i--) + *scf++ = getbits_fast(mp,num0); + i = 9; + numbits -= num0; /* num0 * 17 + num1 * 18 */ + } + + for (;i;i--) + *scf++ = getbits_fast(mp,num0); + for (i = 18; i; i--) + *scf++ = getbits_fast(mp,num1); + *scf++ = 0; *scf++ = 0; *scf++ = 0; /* short[13][0..2] = 0 */ + } + else + { + int i; + int scfsi = gr_infos->scfsi; + + if(scfsi < 0) { /* scfsi < 0 => granule == 0 */ + for(i=11;i;i--) + *scf++ = getbits_fast(mp,num0); + for(i=10;i;i--) + *scf++ = getbits_fast(mp,num1); + numbits = (num0 + num1) * 10 + num0; + } + else { + numbits = 0; + if(!(scfsi & 0x8)) { + for (i=6;i;i--) + *scf++ = getbits_fast(mp,num0); + numbits += num0 * 6; + } + else { + scf += 6; + } + + if(!(scfsi & 0x4)) { + for (i=5;i;i--) + *scf++ = getbits_fast(mp,num0); + numbits += num0 * 5; + } + else { + scf += 5; + } + + if(!(scfsi & 0x2)) { + for(i=5;i;i--) + *scf++ = getbits_fast(mp,num1); + numbits += num1 * 5; + } + else { + scf += 5; + } + + if(!(scfsi & 0x1)) { + for (i=5;i;i--) + *scf++ = getbits_fast(mp,num1); + numbits += num1 * 5; + } + else { + scf += 5; + } + } + + *scf++ = 0; /* no l[21] in original sources */ + } + return numbits; +} + + +static int +III_get_scale_factors_2(PMPSTR mp, int *scf,struct gr_info_s *gr_infos,int i_stereo) +{ + unsigned char *pnt; + int i,j; + unsigned int slen; + int n = 0; + int numbits = 0; + + static const unsigned char stab[3][6][4] = { + { { 6, 5, 5,5 } , { 6, 5, 7,3 } , { 11,10,0,0} , + { 7, 7, 7,0 } , { 6, 6, 6,3 } , { 8, 8,5,0} } , + { { 9, 9, 9,9 } , { 9, 9,12,6 } , { 18,18,0,0} , + {12,12,12,0 } , {12, 9, 9,6 } , { 15,12,9,0} } , + { { 6, 9, 9,9 } , { 6, 9,12,6 } , { 15,18,0,0} , + { 6,15,12,0 } , { 6,12, 9,6 } , { 6,18,9,0} } }; + + if(i_stereo) /* i_stereo AND second channel -> do_layer3() checks this */ + slen = i_slen2[gr_infos->scalefac_compress>>1]; + else + slen = n_slen2[gr_infos->scalefac_compress]; + + gr_infos->preflag = (slen>>15) & 0x1; + + n = 0; + if( gr_infos->block_type == 2 ) { + n++; + if(gr_infos->mixed_block_flag) + n++; + } + + pnt = (unsigned char *)stab[n][(slen>>12)&0x7]; + + for(i=0;i<4;i++) { + int num = slen & 0x7; + slen >>= 3; + if(num) { + for(j=0;j<(int)(pnt[i]);j++) + *scf++ = getbits_fast(mp,num); + numbits += pnt[i] * num; + } + else { + for(j=0;j<(int)(pnt[i]);j++) + *scf++ = 0; + } + } + + n = (n << 1) + 1; + for(i=0;iscalefac_scale; + real *xrpnt = (real *) xr; + int l[3],l3; + int part2remain = gr_infos->part2_3_length - part2bits; + int *me; + + { + int i; + + for(i=(&xr[SBLIMIT][0]-xrpnt)>>1;i>0;i--) { + *xrpnt++ = 0.0; + *xrpnt++ = 0.0; + } + + xrpnt = (real *) xr; + } + + { + int bv = gr_infos->big_values; + int region1 = gr_infos->region1start; + int region2 = gr_infos->region2start; + + l3 = ((576>>1)-bv)>>1; +/* + * we may lose the 'odd' bit here !! + * check this later again + */ + if(bv <= region1) { + l[0] = bv; l[1] = 0; l[2] = 0; + } + else { + l[0] = region1; + if(bv <= region2) { + l[1] = bv - l[0]; l[2] = 0; + } + else { + l[1] = region2 - l[0]; l[2] = bv - region2; + } + } + } + /* MDH crash fix */ + { + int i; + for (i = 0; i < 3; i++) { + if (l[i] < 0) { + fprintf(stderr, "mpg123: Bogus region length (%d)\n", l[i]); + l[i] = 0; + } + } + } + /* end MDH crash fix */ + + if(gr_infos->block_type == 2) { + /* + * decoding with short or mixed mode BandIndex table + */ + int i,max[4]; + int step=0,lwin=0,cb=0; + real v = 0.0; + int *m,mc; + + if(gr_infos->mixed_block_flag) { + max[3] = -1; + max[0] = max[1] = max[2] = 2; + m = map[sfreq][0]; + me = mapend[sfreq][0]; + } + else { + max[0] = max[1] = max[2] = max[3] = -1; + /* max[3] not really needed in this case */ + m = map[sfreq][1]; + me = mapend[sfreq][1]; + } + + mc = 0; + for(i=0;i<2;i++) { + int lp = l[i]; + struct newhuff *h = (struct newhuff *)(ht+gr_infos->table_select[i]); + for(;lp;lp--,mc--) { + int x,y; + if( (!mc) ) { + mc = *m++; + xrpnt = ((real *) xr) + (*m++); + lwin = *m++; + cb = *m++; + if(lwin == 3) { + v = gr_infos->pow2gain[(*scf++) << shift]; + step = 1; + } + else { + v = gr_infos->full_gain[lwin][(*scf++) << shift]; + step = 3; + } + } + { + short *val = (short *)h->table; + while((y=*val++)<0) { + if (get1bit(mp)) + val -= y; + part2remain--; + } + x = y >> 4; + y &= 0xf; + } + if(x == 15) { + max[lwin] = cb; + part2remain -= h->linbits+1; + x += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt = -ispow[x] * v; + else + *xrpnt = ispow[x] * v; + } + else if(x) { + max[lwin] = cb; + if(get1bit(mp)) + *xrpnt = -ispow[x] * v; + else + *xrpnt = ispow[x] * v; + part2remain--; + } + else + *xrpnt = 0.0; + xrpnt += step; + if(y == 15) { + max[lwin] = cb; + part2remain -= h->linbits+1; + y += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt = -ispow[y] * v; + else + *xrpnt = ispow[y] * v; + } + else if(y) { + max[lwin] = cb; + if(get1bit(mp)) + *xrpnt = -ispow[y] * v; + else + *xrpnt = ispow[y] * v; + part2remain--; + } + else + *xrpnt = 0.0; + xrpnt += step; + } + } + for(;l3 && (part2remain > 0);l3--) { + struct newhuff *h = (struct newhuff *)(htc+gr_infos->count1table_select); + short *val = (short *)h->table,a; + + while((a=*val++)<0) { + part2remain--; + if(part2remain < 0) { + part2remain++; + a = 0; + break; + } + if (get1bit(mp)) + val -= a; + } + for(i=0;i<4;i++) { + if(!(i & 1)) { + if(!mc) { + mc = *m++; + xrpnt = ((real *) xr) + (*m++); + lwin = *m++; + cb = *m++; + if(lwin == 3) { + v = gr_infos->pow2gain[(*scf++) << shift]; + step = 1; + } + else { + v = gr_infos->full_gain[lwin][(*scf++) << shift]; + step = 3; + } + } + mc--; + } + if( (a & (0x8>>i)) ) { + max[lwin] = cb; + part2remain--; + if(part2remain < 0) { + part2remain++; + break; + } + if(get1bit(mp)) + *xrpnt = -v; + else + *xrpnt = v; + } + else + *xrpnt = 0.0; + xrpnt += step; + } + } + + while( m < me ) { + if(!mc) { + mc = *m++; + xrpnt = ((real *) xr) + *m++; + if( (*m++) == 3) + step = 1; + else + step = 3; + m++; /* cb */ + } + mc--; + *xrpnt = 0.0; + xrpnt += step; + *xrpnt = 0.0; + xrpnt += step; +/* we could add a little opt. here: + * if we finished a band for window 3 or a long band + * further bands could copied in a simple loop without a + * special 'map' decoding + */ + } + + gr_infos->maxband[0] = max[0]+1; + gr_infos->maxband[1] = max[1]+1; + gr_infos->maxband[2] = max[2]+1; + gr_infos->maxbandl = max[3]+1; + + { + int rmax = max[0] > max[1] ? max[0] : max[1]; + rmax = (rmax > max[2] ? rmax : max[2]) + 1; + gr_infos->maxb = rmax ? shortLimit[sfreq][rmax] : longLimit[sfreq][max[3]+1]; + } + + } + else { + /* + * decoding with 'long' BandIndex table (block_type != 2) + */ + int *pretab = (int *)(gr_infos->preflag ? pretab1 : pretab2); + int i,max = -1; + int cb = 0; + int *m = map[sfreq][2]; + real v = 0.0; + int mc = 0; + + /* + * long hash table values + */ + for(i=0;i<3;i++) { + int lp = l[i]; + struct newhuff *h = (struct newhuff *)(ht+gr_infos->table_select[i]); + + for(;lp;lp--,mc--) { + int x,y; + + if(!mc) { + mc = *m++; + v = gr_infos->pow2gain[((*scf++) + (*pretab++)) << shift]; + cb = *m++; + } + { + short *val = (short *)h->table; + while((y=*val++)<0) { + if (get1bit(mp)) + val -= y; + part2remain--; + } + x = y >> 4; + y &= 0xf; + } + if (x == 15) { + max = cb; + part2remain -= h->linbits+1; + x += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt++ = -ispow[x] * v; + else + *xrpnt++ = ispow[x] * v; + } + else if(x) { + max = cb; + if(get1bit(mp)) + *xrpnt++ = -ispow[x] * v; + else + *xrpnt++ = ispow[x] * v; + part2remain--; + } + else + *xrpnt++ = 0.0; + + if (y == 15) { + max = cb; + part2remain -= h->linbits+1; + y += getbits(mp,(int)h->linbits); + if(get1bit(mp)) + *xrpnt++ = -ispow[y] * v; + else + *xrpnt++ = ispow[y] * v; + } + else if(y) { + max = cb; + if(get1bit(mp)) + *xrpnt++ = -ispow[y] * v; + else + *xrpnt++ = ispow[y] * v; + part2remain--; + } + else + *xrpnt++ = 0.0; + } + } + + /* + * short (count1table) values + */ + for(;l3 && (part2remain > 0);l3--) { + struct newhuff *h = (struct newhuff *)(htc+gr_infos->count1table_select); + short *val = (short *)h->table,a; + + while((a=*val++)<0) { + part2remain--; + if(part2remain < 0) { + part2remain++; + a = 0; + break; + } + if (get1bit(mp)) + val -= a; + } + for(i=0;i<4;i++) { + if(!(i & 1)) { + if(!mc) { + mc = *m++; + cb = *m++; + v = gr_infos->pow2gain[((*scf++) + (*pretab++)) << shift]; + } + mc--; + } + if ( (a & (0x8>>i)) ) { + max = cb; + part2remain--; + if(part2remain < 0) { + part2remain++; + break; + } + if(get1bit(mp)) + *xrpnt++ = -v; + else + *xrpnt++ = v; + } + else + *xrpnt++ = 0.0; + } + } + + /* + * zero part + */ + for(i=(&xr[SBLIMIT][0]-xrpnt)>>1;i;i--) { + *xrpnt++ = 0.0; + *xrpnt++ = 0.0; + } + + gr_infos->maxbandl = max+1; + gr_infos->maxb = longLimit[sfreq][gr_infos->maxbandl]; + } + + while( part2remain > 16 ) { + getbits(mp,16); /* Dismiss stuffing Bits */ + part2remain -= 16; + } + if(part2remain > 0) + getbits(mp,part2remain); + else if(part2remain < 0) { + fprintf(stderr,"mpg123: Can't rewind stream by %d bits!\n",-part2remain); + return 1; /* -> error */ + } + return 0; +} + + +/* + * III_stereo: calculate real channel values for Joint-I-Stereo-mode + */ +static void III_i_stereo(real xr_buf[2][SBLIMIT][SSLIMIT],int *scalefac, + struct gr_info_s *gr_infos,int sfreq,int ms_stereo,int lsf) +{ + real (*xr)[SBLIMIT*SSLIMIT] = (real (*)[SBLIMIT*SSLIMIT] ) xr_buf; + struct bandInfoStruct *bi = (struct bandInfoStruct *)&bandInfo[sfreq]; + real *tabl1,*tabl2; + + if(lsf) { + int p = gr_infos->scalefac_compress & 0x1; + if(ms_stereo) { + tabl1 = pow1_2[p]; tabl2 = pow2_2[p]; + } + else { + tabl1 = pow1_1[p]; tabl2 = pow2_1[p]; + } + } + else { + if(ms_stereo) { + tabl1 = tan1_2; tabl2 = tan2_2; + } + else { + tabl1 = tan1_1; tabl2 = tan2_1; + } + } + + if (gr_infos->block_type == 2) + { + int lwin,do_l = 0; + if( gr_infos->mixed_block_flag ) + do_l = 1; + + for (lwin=0;lwin<3;lwin++) /* process each window */ + { + /* get first band with zero values */ + int is_p,sb,idx,sfb = gr_infos->maxband[lwin]; /* sfb is minimal 3 for mixed mode */ + if(sfb > 3) + do_l = 0; + + for(;sfb<12;sfb++) + { + is_p = scalefac[sfb*3+lwin-gr_infos->mixed_block_flag]; /* scale: 0-15 */ + if(is_p != 7) { + real t1,t2; + sb = bi->shortDiff[sfb]; + idx = bi->shortIdx[sfb] + lwin; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for (; sb > 0; sb--,idx+=3) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + } + +#if 1 +/* in the original: copy 10 to 11 , here: copy 11 to 12 +maybe still wrong??? (copy 12 to 13?) */ + is_p = scalefac[11*3+lwin-gr_infos->mixed_block_flag]; /* scale: 0-15 */ + sb = bi->shortDiff[12]; + idx = bi->shortIdx[12] + lwin; +#else + is_p = scalefac[10*3+lwin-gr_infos->mixed_block_flag]; /* scale: 0-15 */ + sb = bi->shortDiff[11]; + idx = bi->shortIdx[11] + lwin; +#endif + if(is_p != 7) + { + real t1,t2; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for ( ; sb > 0; sb--,idx+=3 ) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + } /* end for(lwin; .. ; . ) */ + + if (do_l) + { +/* also check l-part, if ALL bands in the three windows are 'empty' + * and mode = mixed_mode + */ + int sfb = gr_infos->maxbandl; + int idx = bi->longIdx[sfb]; + + for ( ; sfb<8; sfb++ ) + { + int sb = bi->longDiff[sfb]; + int is_p = scalefac[sfb]; /* scale: 0-15 */ + if(is_p != 7) { + real t1,t2; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for ( ; sb > 0; sb--,idx++) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + else + idx += sb; + } + } + } + else /* ((gr_infos->block_type != 2)) */ + { + int sfb = gr_infos->maxbandl; + int is_p,idx = bi->longIdx[sfb]; + for ( ; sfb<21; sfb++) + { + int sb = bi->longDiff[sfb]; + is_p = scalefac[sfb]; /* scale: 0-15 */ + if(is_p != 7) { + real t1,t2; + t1 = tabl1[is_p]; t2 = tabl2[is_p]; + for ( ; sb > 0; sb--,idx++) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + else + idx += sb; + } + + is_p = scalefac[20]; /* copy l-band 20 to l-band 21 */ + if(is_p != 7) + { + int sb; + real t1 = tabl1[is_p],t2 = tabl2[is_p]; + + for ( sb = bi->longDiff[21]; sb > 0; sb--,idx++ ) + { + real v = xr[0][idx]; + xr[0][idx] = v * t1; + xr[1][idx] = v * t2; + } + } + } /* ... */ +} + +static void III_antialias(real xr[SBLIMIT][SSLIMIT],struct gr_info_s *gr_infos) +{ + int sblim; + + if(gr_infos->block_type == 2) + { + if(!gr_infos->mixed_block_flag) + return; + sblim = 1; + } + else { + sblim = gr_infos->maxb-1; + } + + /* 31 alias-reduction operations between each pair of sub-bands */ + /* with 8 butterflies between each pair */ + + { + int sb; + real *xr1=(real *) xr[1]; + + for(sb=sblim;sb;sb--,xr1+=10) + { + int ss; + real *cs=aa_cs,*ca=aa_ca; + real *xr2 = xr1; + + for(ss=7;ss>=0;ss--) + { /* upper and lower butterfly inputs */ + real bu = *--xr2,bd = *xr1; + *xr2 = (bu * (*cs) ) - (bd * (*ca) ); + *xr1++ = (bd * (*cs++) ) + (bu * (*ca++) ); + } + } + } +} + +/* + DCT insipired by Jeff Tsay's DCT from the maplay package + this is an optimized version with manual unroll. + + References: + [1] S. Winograd: "On Computing the Discrete Fourier Transform", + Mathematics of Computation, Volume 32, Number 141, January 1978, + Pages 175-199 +*/ + +static void dct36(real *inbuf,real *o1,real *o2,real *wintab,real *tsbuf) +{ + { + real *in = inbuf; + + in[17]+=in[16]; in[16]+=in[15]; in[15]+=in[14]; + in[14]+=in[13]; in[13]+=in[12]; in[12]+=in[11]; + in[11]+=in[10]; in[10]+=in[9]; in[9] +=in[8]; + in[8] +=in[7]; in[7] +=in[6]; in[6] +=in[5]; + in[5] +=in[4]; in[4] +=in[3]; in[3] +=in[2]; + in[2] +=in[1]; in[1] +=in[0]; + + in[17]+=in[15]; in[15]+=in[13]; in[13]+=in[11]; in[11]+=in[9]; + in[9] +=in[7]; in[7] +=in[5]; in[5] +=in[3]; in[3] +=in[1]; + + + { + +#define MACRO0(v) { \ + real tmp; \ + out2[9+(v)] = (tmp = sum0 + sum1) * w[27+(v)]; \ + out2[8-(v)] = tmp * w[26-(v)]; } \ + sum0 -= sum1; \ + ts[SBLIMIT*(8-(v))] = out1[8-(v)] + sum0 * w[8-(v)]; \ + ts[SBLIMIT*(9+(v))] = out1[9+(v)] + sum0 * w[9+(v)]; +#define MACRO1(v) { \ + real sum0,sum1; \ + sum0 = tmp1a + tmp2a; \ + sum1 = (tmp1b + tmp2b) * tfcos36[(v)]; \ + MACRO0(v); } +#define MACRO2(v) { \ + real sum0,sum1; \ + sum0 = tmp2a - tmp1a; \ + sum1 = (tmp2b - tmp1b) * tfcos36[(v)]; \ + MACRO0(v); } + + const real *c = COS9; + real *out2 = o2; + real *w = wintab; + real *out1 = o1; + real *ts = tsbuf; + + real ta33,ta66,tb33,tb66; + + ta33 = in[2*3+0] * c[3]; + ta66 = in[2*6+0] * c[6]; + tb33 = in[2*3+1] * c[3]; + tb66 = in[2*6+1] * c[6]; + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = in[2*1+0] * c[1] + ta33 + in[2*5+0] * c[5] + in[2*7+0] * c[7]; + tmp1b = in[2*1+1] * c[1] + tb33 + in[2*5+1] * c[5] + in[2*7+1] * c[7]; + tmp2a = in[2*0+0] + in[2*2+0] * c[2] + in[2*4+0] * c[4] + ta66 + in[2*8+0] * c[8]; + tmp2b = in[2*0+1] + in[2*2+1] * c[2] + in[2*4+1] * c[4] + tb66 + in[2*8+1] * c[8]; + + MACRO1(0); + MACRO2(8); + } + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = ( in[2*1+0] - in[2*5+0] - in[2*7+0] ) * c[3]; + tmp1b = ( in[2*1+1] - in[2*5+1] - in[2*7+1] ) * c[3]; + tmp2a = ( in[2*2+0] - in[2*4+0] - in[2*8+0] ) * c[6] - in[2*6+0] + in[2*0+0]; + tmp2b = ( in[2*2+1] - in[2*4+1] - in[2*8+1] ) * c[6] - in[2*6+1] + in[2*0+1]; + + MACRO1(1); + MACRO2(7); + } + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = in[2*1+0] * c[5] - ta33 - in[2*5+0] * c[7] + in[2*7+0] * c[1]; + tmp1b = in[2*1+1] * c[5] - tb33 - in[2*5+1] * c[7] + in[2*7+1] * c[1]; + tmp2a = in[2*0+0] - in[2*2+0] * c[8] - in[2*4+0] * c[2] + ta66 + in[2*8+0] * c[4]; + tmp2b = in[2*0+1] - in[2*2+1] * c[8] - in[2*4+1] * c[2] + tb66 + in[2*8+1] * c[4]; + + MACRO1(2); + MACRO2(6); + } + + { + real tmp1a,tmp2a,tmp1b,tmp2b; + tmp1a = in[2*1+0] * c[7] - ta33 + in[2*5+0] * c[1] - in[2*7+0] * c[5]; + tmp1b = in[2*1+1] * c[7] - tb33 + in[2*5+1] * c[1] - in[2*7+1] * c[5]; + tmp2a = in[2*0+0] - in[2*2+0] * c[4] + in[2*4+0] * c[8] + ta66 - in[2*8+0] * c[2]; + tmp2b = in[2*0+1] - in[2*2+1] * c[4] + in[2*4+1] * c[8] + tb66 - in[2*8+1] * c[2]; + + MACRO1(3); + MACRO2(5); + } + + { + real sum0,sum1; + sum0 = in[2*0+0] - in[2*2+0] + in[2*4+0] - in[2*6+0] + in[2*8+0]; + sum1 = (in[2*0+1] - in[2*2+1] + in[2*4+1] - in[2*6+1] + in[2*8+1] ) * tfcos36[4]; + MACRO0(4); + } + } + + } +} + +/* + * new DCT12 + */ +static void dct12(real *in,real *rawout1,real *rawout2,real *wi,real *ts) +{ +#define DCT12_PART1 \ + in5 = in[5*3]; \ + in5 += (in4 = in[4*3]); \ + in4 += (in3 = in[3*3]); \ + in3 += (in2 = in[2*3]); \ + in2 += (in1 = in[1*3]); \ + in1 += (in0 = in[0*3]); \ + \ + in5 += in3; in3 += in1; \ + \ + in2 *= COS6_1; \ + in3 *= COS6_1; \ + +#define DCT12_PART2 \ + in0 += in4 * COS6_2; \ + \ + in4 = in0 + in2; \ + in0 -= in2; \ + \ + in1 += in5 * COS6_2; \ + \ + in5 = (in1 + in3) * tfcos12[0]; \ + in1 = (in1 - in3) * tfcos12[2]; \ + \ + in3 = in4 + in5; \ + in4 -= in5; \ + \ + in2 = in0 + in1; \ + in0 -= in1; + + + { + real in0,in1,in2,in3,in4,in5; + real *out1 = rawout1; + ts[SBLIMIT*0] = out1[0]; ts[SBLIMIT*1] = out1[1]; ts[SBLIMIT*2] = out1[2]; + ts[SBLIMIT*3] = out1[3]; ts[SBLIMIT*4] = out1[4]; ts[SBLIMIT*5] = out1[5]; + + DCT12_PART1 + + { + real tmp0,tmp1 = (in0 - in4); + { + real tmp2 = (in1 - in5) * tfcos12[1]; + tmp0 = tmp1 + tmp2; + tmp1 -= tmp2; + } + ts[(17-1)*SBLIMIT] = out1[17-1] + tmp0 * wi[11-1]; + ts[(12+1)*SBLIMIT] = out1[12+1] + tmp0 * wi[6+1]; + ts[(6 +1)*SBLIMIT] = out1[6 +1] + tmp1 * wi[1]; + ts[(11-1)*SBLIMIT] = out1[11-1] + tmp1 * wi[5-1]; + } + + DCT12_PART2 + + ts[(17-0)*SBLIMIT] = out1[17-0] + in2 * wi[11-0]; + ts[(12+0)*SBLIMIT] = out1[12+0] + in2 * wi[6+0]; + ts[(12+2)*SBLIMIT] = out1[12+2] + in3 * wi[6+2]; + ts[(17-2)*SBLIMIT] = out1[17-2] + in3 * wi[11-2]; + + ts[(6+0)*SBLIMIT] = out1[6+0] + in0 * wi[0]; + ts[(11-0)*SBLIMIT] = out1[11-0] + in0 * wi[5-0]; + ts[(6+2)*SBLIMIT] = out1[6+2] + in4 * wi[2]; + ts[(11-2)*SBLIMIT] = out1[11-2] + in4 * wi[5-2]; + } + + in++; + + { + real in0,in1,in2,in3,in4,in5; + real *out2 = rawout2; + + DCT12_PART1 + + { + real tmp0,tmp1 = (in0 - in4); + { + real tmp2 = (in1 - in5) * tfcos12[1]; + tmp0 = tmp1 + tmp2; + tmp1 -= tmp2; + } + out2[5-1] = tmp0 * wi[11-1]; + out2[0+1] = tmp0 * wi[6+1]; + ts[(12+1)*SBLIMIT] += tmp1 * wi[1]; + ts[(17-1)*SBLIMIT] += tmp1 * wi[5-1]; + } + + DCT12_PART2 + + out2[5-0] = in2 * wi[11-0]; + out2[0+0] = in2 * wi[6+0]; + out2[0+2] = in3 * wi[6+2]; + out2[5-2] = in3 * wi[11-2]; + + ts[(12+0)*SBLIMIT] += in0 * wi[0]; + ts[(17-0)*SBLIMIT] += in0 * wi[5-0]; + ts[(12+2)*SBLIMIT] += in4 * wi[2]; + ts[(17-2)*SBLIMIT] += in4 * wi[5-2]; + } + + in++; + + { + real in0,in1,in2,in3,in4,in5; + real *out2 = rawout2; + out2[12]=out2[13]=out2[14]=out2[15]=out2[16]=out2[17]=0.0; + + DCT12_PART1 + + { + real tmp0,tmp1 = (in0 - in4); + { + real tmp2 = (in1 - in5) * tfcos12[1]; + tmp0 = tmp1 + tmp2; + tmp1 -= tmp2; + } + out2[11-1] = tmp0 * wi[11-1]; + out2[6 +1] = tmp0 * wi[6+1]; + out2[0+1] += tmp1 * wi[1]; + out2[5-1] += tmp1 * wi[5-1]; + } + + DCT12_PART2 + + out2[11-0] = in2 * wi[11-0]; + out2[6 +0] = in2 * wi[6+0]; + out2[6 +2] = in3 * wi[6+2]; + out2[11-2] = in3 * wi[11-2]; + + out2[0+0] += in0 * wi[0]; + out2[5-0] += in0 * wi[5-0]; + out2[0+2] += in4 * wi[2]; + out2[5-2] += in4 * wi[5-2]; + } +} + +/* + * III_hybrid + */ +static void III_hybrid( PMPSTR mp, real fsIn[SBLIMIT][SSLIMIT],real tsOut[SSLIMIT][SBLIMIT], + int ch,struct gr_info_s *gr_infos) +{ + real *tspnt = (real *) tsOut; + real (*block)[2][SBLIMIT*SSLIMIT] = mp->hybrid_block; + int *blc = mp->hybrid_blc; + real *rawout1,*rawout2; + int bt; + int sb = 0; + + { + int b = blc[ch]; + rawout1=block[b][ch]; + b=-b+1; + rawout2=block[b][ch]; + blc[ch] = b; + } + + + if(gr_infos->mixed_block_flag) { + sb = 2; + dct36(fsIn[0],rawout1,rawout2,win[0],tspnt); + dct36(fsIn[1],rawout1+18,rawout2+18,win1[0],tspnt+1); + rawout1 += 36; rawout2 += 36; tspnt += 2; + } + + bt = gr_infos->block_type; + if(bt == 2) { + for (; sb<(int)gr_infos->maxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) { + dct12(fsIn[sb],rawout1,rawout2,win[2],tspnt); + dct12(fsIn[sb+1],rawout1+18,rawout2+18,win1[2],tspnt+1); + } + } + else { + for (; sb<(int)gr_infos->maxb; sb+=2,tspnt+=2,rawout1+=36,rawout2+=36) { + dct36(fsIn[sb],rawout1,rawout2,win[bt],tspnt); + dct36(fsIn[sb+1],rawout1+18,rawout2+18,win1[bt],tspnt+1); + } + } + + for(;sbfr; + int stereo = fr->stereo; + int single = fr->single; + int ms_stereo; + int sfreq = fr->sampling_frequency; + int granules; + int ch,gr,databits; + + if(stereo == 1) { /* stream is mono */ + single = 0; + } + + if(fr->mode == MPG_MD_JOINT_STEREO) { + ms_stereo = fr->mode_ext & 0x2; + } + else + ms_stereo = 0; + + + if(fr->lsf) { + granules = 1; + III_get_side_info_2(mp,&sideinfo,stereo,ms_stereo,sfreq,single); + } + else { + granules = 2; + III_get_side_info_1(mp,&sideinfo,stereo,ms_stereo,sfreq,single); + } + + databits=0; + for (gr=0 ; gr < granules ; ++gr) { + for (ch=0; ch < stereo ; ++ch) { + struct gr_info_s *gr_infos = &(sideinfo.ch[ch].gr[gr]); + databits += gr_infos->part2_3_length; + } + } + return databits-8*sideinfo.main_data_begin; +} + + + +int do_layer3( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point, + int (*synth_1to1_mono_ptr)(PMPSTR,real *,unsigned char *,int *), + int (*synth_1to1_ptr)(PMPSTR,real *,int,unsigned char *, int *) ) +{ + int gr, ch, ss,clip=0; + int scalefacs[2][39]; /* max 39 for short[13][3] mode, mixed: 38, long: 22 */ + /* struct III_sideinfo sideinfo; */ + struct frame *fr=&(mp->fr); + int stereo = fr->stereo; + int single = fr->single; + int ms_stereo,i_stereo; + int sfreq = fr->sampling_frequency; + int stereo1,granules; + + if(set_pointer(mp, (int)sideinfo.main_data_begin) == MP3_ERR) + return 0; + + if(stereo == 1) { /* stream is mono */ + stereo1 = 1; + single = 0; + } + else if(single >= 0) /* stream is stereo, but force to mono */ + stereo1 = 1; + else + stereo1 = 2; + + if(fr->mode == MPG_MD_JOINT_STEREO) { + ms_stereo = fr->mode_ext & 0x2; + i_stereo = fr->mode_ext & 0x1; + } + else + ms_stereo = i_stereo = 0; + + + if(fr->lsf) { + granules = 1; + } + else { + granules = 2; + } + + + for (gr=0;grlsf) + part2bits = III_get_scale_factors_2(mp,scalefacs[0],gr_infos,0); + else { + part2bits = III_get_scale_factors_1(mp,scalefacs[0],gr_infos); + } + +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + int i; + mpg123_pinfo->sfbits[gr][0] = part2bits; + for (i=0; i<39; i++) + mpg123_pinfo->sfb_s[gr][0][i]=scalefacs[0][i]; + } +#endif + + if(III_dequantize_sample(mp, hybridIn[0], scalefacs[0],gr_infos,sfreq,part2bits)) + return clip; + } + if(stereo == 2) { + struct gr_info_s *gr_infos = &(sideinfo.ch[1].gr[gr]); + long part2bits; + if(fr->lsf) + part2bits = III_get_scale_factors_2(mp,scalefacs[1],gr_infos,i_stereo); + else { + part2bits = III_get_scale_factors_1(mp,scalefacs[1],gr_infos); + } +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + int i; + mpg123_pinfo->sfbits[gr][1] = part2bits; + for (i=0; i<39; i++) + mpg123_pinfo->sfb_s[gr][1][i]=scalefacs[1][i]; + } +#endif + + if(III_dequantize_sample(mp, hybridIn[1],scalefacs[1],gr_infos,sfreq,part2bits)) + return clip; + + if(ms_stereo) { + int i; + for(i=0;ilsf); + + if(ms_stereo || i_stereo || (single == 3) ) { + if(gr_infos->maxb > sideinfo.ch[0].gr[gr].maxb) + sideinfo.ch[0].gr[gr].maxb = gr_infos->maxb; + else + gr_infos->maxb = sideinfo.ch[0].gr[gr].maxb; + } + + switch(single) { + case 3: + { + int i; + real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; + for(i=0;i<(int)(SSLIMIT*gr_infos->maxb);i++,in0++) + *in0 = (*in0 + *in1++); /* *0.5 done by pow-scale */ + } + break; + case 1: + { + int i; + real *in0 = (real *) hybridIn[0],*in1 = (real *) hybridIn[1]; + for(i=0;i<(int)(SSLIMIT*gr_infos->maxb);i++) + *in0++ = *in1++; + } + break; + } + } + +#ifndef NOANALYSIS + if (mpg123_pinfo!=NULL) { + int i,sb; + float ifqstep; + + mpg123_pinfo->bitrate = + tabsel_123[fr->lsf][fr->lay-1][fr->bitrate_index]; + mpg123_pinfo->sampfreq = freqs[sfreq]; + mpg123_pinfo->emph = fr->emphasis; + mpg123_pinfo->crc = fr->error_protection; + mpg123_pinfo->padding = fr->padding; + mpg123_pinfo->stereo = fr->stereo; + mpg123_pinfo->js = (fr->mode == MPG_MD_JOINT_STEREO); + mpg123_pinfo->ms_stereo = ms_stereo; + mpg123_pinfo->i_stereo = i_stereo; + mpg123_pinfo->maindata = sideinfo.main_data_begin; + + for(ch=0;chbig_values[gr][ch]=gr_infos->big_values; + mpg123_pinfo->scalefac_scale[gr][ch]=gr_infos->scalefac_scale; + mpg123_pinfo->mixed[gr][ch] = gr_infos->mixed_block_flag; + mpg123_pinfo->mpg123blocktype[gr][ch]=gr_infos->block_type; + mpg123_pinfo->mainbits[gr][ch] = gr_infos->part2_3_length; + mpg123_pinfo->preflag[gr][ch] = gr_infos->preflag; + if (gr==1) mpg123_pinfo->scfsi[ch] = gr_infos->scfsi; + } + + + for (ch=0;chscalefac_scale[gr][ch] == 0 ) ? .5 : 1.0; + if (2==gr_infos->block_type) { + for (i=0; i<3; i++) { + for (sb=0; sb<12; sb++) { + int j = 3*sb+i; + /* + is_p = scalefac[sfb*3+lwin-gr_infos->mixed_block_flag]; + */ + /* scalefac was copied into mpg123_pinfo->sfb_s[] above */ + mpg123_pinfo->sfb_s[gr][ch][j] = -ifqstep*mpg123_pinfo->sfb_s[gr][ch][j-gr_infos->mixed_block_flag]; + mpg123_pinfo->sfb_s[gr][ch][j] -= 2*(mpg123_pinfo->sub_gain[gr][ch][i]); + } + mpg123_pinfo->sfb_s[gr][ch][3*sb+i] = - 2*(mpg123_pinfo->sub_gain[gr][ch][i]); + } + }else{ + for (sb=0; sb<21; sb++) { + /* scalefac was copied into mpg123_pinfo->sfb[] above */ + mpg123_pinfo->sfb[gr][ch][sb] = mpg123_pinfo->sfb_s[gr][ch][sb]; + if (gr_infos->preflag) mpg123_pinfo->sfb[gr][ch][sb] += pretab1[sb]; + mpg123_pinfo->sfb[gr][ch][sb] *= -ifqstep; + } + mpg123_pinfo->sfb[gr][ch][21]=0; + } + } + + + + for(ch=0;chmpg123xr[gr][ch][j]=hybridIn[ch][sb][ss]; + } + } +#endif + + + for(ch=0;ch= 0) { + clip += (*synth_1to1_mono_ptr)(mp, hybridOut[0][ss],pcm_sample,pcm_point); + } + else { + int p1 = *pcm_point; + clip += (*synth_1to1_ptr)(mp, hybridOut[0][ss],0,pcm_sample,&p1); + clip += (*synth_1to1_ptr)(mp, hybridOut[1][ss],1,pcm_sample,pcm_point); + } + } + } + + return clip; +} + + diff --git a/lame-3.97/mpglib/layer3.h b/lame-3.97/mpglib/layer3.h new file mode 100644 index 0000000..41e1316 --- /dev/null +++ b/lame-3.97/mpglib/layer3.h @@ -0,0 +1,30 @@ +/* +** Copyright (C) 2000 Albert L. Faber +** +** This program is free software; you can redistribute it and/or modify +** it under the terms of the GNU General Public License as published by +** the Free Software Foundation; either version 2 of the License, or +** (at your option) any later version. +** +** This program is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +** GNU General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program; if not, write to the Free Software +** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef LAYER3_H_INCLUDED +#define LAYER3_H_INCLUDED + +void init_layer3(int); +int do_layer3_sideinfo(PMPSTR mp); +int do_layer3( PMPSTR mp,unsigned char *pcm_sample,int *pcm_point, + int (*synth_1to1_mono_ptr)(PMPSTR,real *,unsigned char *,int *), + int (*synth_1to1_ptr)(PMPSTR,real *,int,unsigned char *, int *) ); + +#endif + + diff --git a/lame-3.97/mpglib/mpg123.h b/lame-3.97/mpglib/mpg123.h new file mode 100644 index 0000000..f491367 --- /dev/null +++ b/lame-3.97/mpglib/mpg123.h @@ -0,0 +1,136 @@ +#ifndef MPG123_H_INCLUDED +#define MPG123_H_INCLUDED + +#include + +#ifdef STDC_HEADERS +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include + + +#if defined(__riscos__) && defined(FPA10) +#include "ymath.h" +#else +#include +#endif + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif +#ifndef M_SQRT2 +#define M_SQRT2 1.41421356237309504880 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +#define REAL_IS_FLOAT + +#ifdef REAL_IS_FLOAT +# define real float +#elif defined(REAL_IS_LONG_DOUBLE) +# define real long double +#else +# define real double +#endif + +#define FALSE 0 +#define TRUE 1 + +#define SBLIMIT 32 +#define SSLIMIT 18 + +#define MPG_MD_STEREO 0 +#define MPG_MD_JOINT_STEREO 1 +#define MPG_MD_DUAL_CHANNEL 2 +#define MPG_MD_MONO 3 + +#define MAXFRAMESIZE 2880 + +/* AF: ADDED FOR LAYER1/LAYER2 */ +#define SCALE_BLOCK 12 + + +/* Pre Shift fo 16 to 8 bit converter table */ +#define AUSHIFT (3) + +struct frame { + int stereo; + int jsbound; + int single; + int lsf; + int mpeg25; + int header_change; + int lay; + int error_protection; + int bitrate_index; + int sampling_frequency; + int padding; + int extension; + int mode; + int mode_ext; + int copyright; + int original; + int emphasis; + int framesize; /* computed framesize */ + + /* AF: ADDED FOR LAYER1/LAYER2 */ +#if defined(USE_LAYER_2) || defined(USE_LAYER_1) + int II_sblimit; + struct al_table2 *alloc; + int down_sample_sblimit; + int down_sample; + +#endif + +}; + +struct gr_info_s { + int scfsi; + unsigned part2_3_length; + unsigned big_values; + unsigned scalefac_compress; + unsigned block_type; + unsigned mixed_block_flag; + unsigned table_select[3]; + unsigned subblock_gain[3]; + unsigned maxband[3]; + unsigned maxbandl; + unsigned maxb; + unsigned region1start; + unsigned region2start; + unsigned preflag; + unsigned scalefac_scale; + unsigned count1table_select; + real *full_gain[3]; + real *pow2gain; +}; + +struct III_sideinfo +{ + unsigned main_data_begin; + unsigned private_bits; + struct { + struct gr_info_s gr[2]; + } ch[2]; +}; + + +#endif + diff --git a/lame-3.97/mpglib/mpglib.h b/lame-3.97/mpglib/mpglib.h new file mode 100644 index 0000000..8fe6efd --- /dev/null +++ b/lame-3.97/mpglib/mpglib.h @@ -0,0 +1,66 @@ +#include "lame-analysis.h" + +#ifndef NOANALYSIS +extern plotting_data *mpg123_pinfo; +#endif + +struct buf { + unsigned char *pnt; + long size; + long pos; + struct buf *next; + struct buf *prev; +}; + +struct framebuf { + struct buf *buf; + long pos; + struct frame *next; + struct frame *prev; +}; + +typedef struct mpstr_tag { + struct buf *head,*tail; + int vbr_header; /* 1 if valid Xing vbr header detected */ + int num_frames; /* set if vbr header present */ + int enc_delay; /* set if vbr header present */ + int enc_padding; /* set if vbr header present */ + int header_parsed; + int side_parsed; + int data_parsed; + int free_format; /* 1 = free format frame */ + int old_free_format; /* 1 = last frame was free format */ + int bsize; + int framesize; + int ssize; + int dsize; + int fsizeold; + int fsizeold_nopadding; + struct frame fr; + unsigned char bsspace[2][MAXFRAMESIZE+512]; /* MAXFRAMESIZE */ + real hybrid_block[2][2][SBLIMIT*SSLIMIT]; + int hybrid_blc[2]; + unsigned long header; + int bsnum; + real synth_buffs[2][2][0x110]; + int synth_bo; + int sync_bitstream; + + int bitindex; + unsigned char* wordpointer; +} MPSTR, *PMPSTR; + + +#if ( defined(_MSC_VER) || defined(__BORLANDC__) ) + typedef int BOOL; /* windef.h contains the same definition */ +#else + #define BOOL int +#endif + +#define MP3_ERR -1 +#define MP3_OK 0 +#define MP3_NEED_MORE 1 + + + + diff --git a/lame-3.97/mpglib/mpglib_vc6.dsp b/lame-3.97/mpglib/mpglib_vc6.dsp new file mode 100644 index 0000000..5b25d74 --- /dev/null +++ b/lame-3.97/mpglib/mpglib_vc6.dsp @@ -0,0 +1,300 @@ +# Microsoft Developer Studio Project File - Name="mpglib" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=mpglib - Win32 Debug GTK +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "mpglib_vc6.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "mpglib_vc6.mak" CFG="mpglib - Win32 Debug GTK" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "mpglib - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Release NASM" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Debug GTK" (based on "Win32 (x86) Static Library") +!MESSAGE "mpglib - Win32 Release GTK" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 1 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "mpglib - Win32 Release" + +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "HAVE_CONFIG_H" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Release\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug" + +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "HAVE_CONFIG_H" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c +# ADD CPP /nologo /W3 /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "USE_LAYER_2" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo /out:"Debug\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release NASM" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "mpglib___Win32_Release_NASM" +# PROP BASE Intermediate_Dir "mpglib___Win32_Release_NASM" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "mpglib___Win32_Release_NASM" +# PROP Intermediate_Dir "mpglib___Win32_Release_NASM" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "USE_LAYER_1" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Release\mpglib.lib" +# ADD LIB32 /nologo /out:"Release\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "mpglib___Win32_Debug_GTK" +# PROP BASE Intermediate_Dir "mpglib___Win32_Debug_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "mpglib___Win32_Debug_GTK" +# PROP Intermediate_Dir "mpglib___Win32_Debug_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "USE_LAYER_2" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD CPP /nologo /W3 /ZI /Od /I "../libmp3lame" /I "../include" /I ".." /D "_DEBUG" /D "_WINDOWS" /D "USE_LAYER_2" /D "HAVE_MPGLIB" /D "WIN32" /D "HAVE_CONFIG_H" /YX /FD /c +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Debug\mpglib.lib" +# ADD LIB32 /nologo /out:"Debug\mpglib.lib" + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release GTK" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "mpglib___Win32_Release_GTK" +# PROP BASE Intermediate_Dir "mpglib___Win32_Release_GTK" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "mpglib___Win32_Release_GTK" +# PROP Intermediate_Dir "mpglib___Win32_Release_GTK" +# PROP Target_Dir "" +LINK32=link.exe +# ADD BASE CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT BASE CPP /YX +# ADD CPP /nologo /W3 /O2 /Ob2 /I "../libmp3lame" /I "../include" /I ".." /D "NDEBUG" /D "HAVE_MPGLIB" /D "_WINDOWS" /D "USE_LAYER_2" /D "WIN32" /D "HAVE_CONFIG_H" /FD /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 +# ADD RSC /l 0x409 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo /out:"Release\mpglib.lib" +# ADD LIB32 /nologo /out:"Release\mpglib.lib" + +!ENDIF + +# Begin Target + +# Name "mpglib - Win32 Release" +# Name "mpglib - Win32 Debug" +# Name "mpglib - Win32 Release NASM" +# Name "mpglib - Win32 Debug GTK" +# Name "mpglib - Win32 Release GTK" +# Begin Group "Source" + +# PROP Default_Filter "c" +# Begin Source File + +SOURCE=.\common.c +# End Source File +# Begin Source File + +SOURCE=.\dct64_i386.c +# End Source File +# Begin Source File + +SOURCE=.\decode_i386.c +# End Source File +# Begin Source File + +SOURCE=.\interface.c +# End Source File +# Begin Source File + +SOURCE=.\layer1.c +# End Source File +# Begin Source File + +SOURCE=.\layer2.c +# End Source File +# Begin Source File + +SOURCE=.\layer3.c +# End Source File +# Begin Source File + +SOURCE=.\tabinit.c +# End Source File +# End Group +# Begin Group "Include" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=.\common.h +# End Source File +# Begin Source File + +SOURCE=..\configMS.h + +!IF "$(CFG)" == "mpglib - Win32 Release" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release NASM" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Debug GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "mpglib - Win32 Release GTK" + +# Begin Custom Build - Performing Custom Build Step on $(InputName) +InputPath=..\configMS.h + +"..\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy ..\configMS.h ..\config.h + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\dct64_i386.h +# End Source File +# Begin Source File + +SOURCE=.\decode_i386.h +# End Source File +# Begin Source File + +SOURCE=.\huffman.h +# End Source File +# Begin Source File + +SOURCE=.\interface.h +# End Source File +# Begin Source File + +SOURCE=.\layer1.h +# End Source File +# Begin Source File + +SOURCE=.\layer2.h +# End Source File +# Begin Source File + +SOURCE=.\layer3.h +# End Source File +# Begin Source File + +SOURCE=.\mpg123.h +# End Source File +# Begin Source File + +SOURCE=.\mpglib.h +# End Source File +# Begin Source File + +SOURCE=.\tabinit.h +# End Source File +# End Group +# End Target +# End Project diff --git a/lame-3.97/mpglib/mpglib_vc7.vcproj b/lame-3.97/mpglib/mpglib_vc7.vcproj new file mode 100644 index 0000000..e25272d --- /dev/null +++ b/lame-3.97/mpglib/mpglib_vc7.vcproj @@ -0,0 +1,1425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lame-3.97/mpglib/tabinit.c b/lame-3.97/mpglib/tabinit.c new file mode 100644 index 0000000..ed8114a --- /dev/null +++ b/lame-3.97/mpglib/tabinit.c @@ -0,0 +1,123 @@ +/* $Id: tabinit.c,v 1.12 2004/04/14 22:15:44 robert Exp $ */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include "tabinit.h" +#include "mpg123.h" + +#ifdef WITH_DMALLOC +#include +#endif + +real decwin[512+32]; +static real cos64[16],cos32[8],cos16[4],cos8[2],cos4[1]; +real *pnts[] = { cos64,cos32,cos16,cos8,cos4 }; + +static const double dewin[512] = { + 0.000000000,-0.000015259,-0.000015259,-0.000015259, + -0.000015259,-0.000015259,-0.000015259,-0.000030518, + -0.000030518,-0.000030518,-0.000030518,-0.000045776, + -0.000045776,-0.000061035,-0.000061035,-0.000076294, + -0.000076294,-0.000091553,-0.000106812,-0.000106812, + -0.000122070,-0.000137329,-0.000152588,-0.000167847, + -0.000198364,-0.000213623,-0.000244141,-0.000259399, + -0.000289917,-0.000320435,-0.000366211,-0.000396729, + -0.000442505,-0.000473022,-0.000534058,-0.000579834, + -0.000625610,-0.000686646,-0.000747681,-0.000808716, + -0.000885010,-0.000961304,-0.001037598,-0.001113892, + -0.001205444,-0.001296997,-0.001388550,-0.001480103, + -0.001586914,-0.001693726,-0.001785278,-0.001907349, + -0.002014160,-0.002120972,-0.002243042,-0.002349854, + -0.002456665,-0.002578735,-0.002685547,-0.002792358, + -0.002899170,-0.002990723,-0.003082275,-0.003173828, + -0.003250122,-0.003326416,-0.003387451,-0.003433228, + -0.003463745,-0.003479004,-0.003479004,-0.003463745, + -0.003417969,-0.003372192,-0.003280640,-0.003173828, + -0.003051758,-0.002883911,-0.002700806,-0.002487183, + -0.002227783,-0.001937866,-0.001617432,-0.001266479, + -0.000869751,-0.000442505, 0.000030518, 0.000549316, + 0.001098633, 0.001693726, 0.002334595, 0.003005981, + 0.003723145, 0.004486084, 0.005294800, 0.006118774, + 0.007003784, 0.007919312, 0.008865356, 0.009841919, + 0.010848999, 0.011886597, 0.012939453, 0.014022827, + 0.015121460, 0.016235352, 0.017349243, 0.018463135, + 0.019577026, 0.020690918, 0.021789551, 0.022857666, + 0.023910522, 0.024932861, 0.025909424, 0.026840210, + 0.027725220, 0.028533936, 0.029281616, 0.029937744, + 0.030532837, 0.031005859, 0.031387329, 0.031661987, + 0.031814575, 0.031845093, 0.031738281, 0.031478882, + 0.031082153, 0.030517578, 0.029785156, 0.028884888, + 0.027801514, 0.026535034, 0.025085449, 0.023422241, + 0.021575928, 0.019531250, 0.017257690, 0.014801025, + 0.012115479, 0.009231567, 0.006134033, 0.002822876, + -0.000686646,-0.004394531,-0.008316040,-0.012420654, + -0.016708374,-0.021179199,-0.025817871,-0.030609131, + -0.035552979,-0.040634155,-0.045837402,-0.051132202, + -0.056533813,-0.061996460,-0.067520142,-0.073059082, + -0.078628540,-0.084182739,-0.089706421,-0.095169067, + -0.100540161,-0.105819702,-0.110946655,-0.115921021, + -0.120697021,-0.125259399,-0.129562378,-0.133590698, + -0.137298584,-0.140670776,-0.143676758,-0.146255493, + -0.148422241,-0.150115967,-0.151306152,-0.151962280, + -0.152069092,-0.151596069,-0.150497437,-0.148773193, + -0.146362305,-0.143264771,-0.139450073,-0.134887695, + -0.129577637,-0.123474121,-0.116577148,-0.108856201, + -0.100311279,-0.090927124,-0.080688477,-0.069595337, + -0.057617187,-0.044784546,-0.031082153,-0.016510010, + -0.001068115, 0.015228271, 0.032379150, 0.050354004, + 0.069168091, 0.088775635, 0.109161377, 0.130310059, + 0.152206421, 0.174789429, 0.198059082, 0.221984863, + 0.246505737, 0.271591187, 0.297210693, 0.323318481, + 0.349868774, 0.376800537, 0.404083252, 0.431655884, + 0.459472656, 0.487472534, 0.515609741, 0.543823242, + 0.572036743, 0.600219727, 0.628295898, 0.656219482, + 0.683914185, 0.711318970, 0.738372803, 0.765029907, + 0.791213989, 0.816864014, 0.841949463, 0.866363525, + 0.890090942, 0.913055420, 0.935195923, 0.956481934, + 0.976852417, 0.996246338, 1.014617920, 1.031936646, + 1.048156738, 1.063217163, 1.077117920, 1.089782715, + 1.101211548, 1.111373901, 1.120223999, 1.127746582, + 1.133926392, 1.138763428, 1.142211914, 1.144287109, + 1.144989014 +}; + +void make_decode_tables(long scaleval) +{ + int i,j,k,kr,divv; + real *table,*costab; + + + for(i=0;i<5;i++) + { + kr=0x10>>i; divv=0x40>>i; + costab = pnts[i]; + for(k=0;k +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(WIN32) +#undef CDECL +#define CDECL _cdecl +#else +#define CDECL +#endif + + +typedef enum vbr_mode_e { + vbr_off=0, + vbr_mt, /* obsolete, same as vbr_mtrh */ + vbr_rh, + vbr_abr, + vbr_mtrh, + vbr_max_indicator, /* Don't use this! It's used for sanity checks. */ + vbr_default=vbr_rh /* change this to change the default VBR mode of LAME */ +} vbr_mode; + + +/* MPEG modes */ +typedef enum MPEG_mode_e { + STEREO = 0, + JOINT_STEREO, + DUAL_CHANNEL, /* LAME doesn't supports this! */ + MONO, + NOT_SET, + MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} MPEG_mode; + +/* Padding types */ +typedef enum Padding_type_e { + PAD_NO = 0, + PAD_ALL, + PAD_ADJUST, + PAD_MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} Padding_type; + + + +/*presets*/ +typedef enum preset_mode_e { + /*values from 8 to 320 should be reserved for abr bitrates*/ + /*for abr I'd suggest to directly use the targeted bitrate as a value*/ + ABR_8 = 8, + ABR_320 = 320, + + V9 = 410, /*Vx to match Lame and VBR_xx to match FhG*/ + VBR_10 = 410, + V8 = 420, + VBR_20 = 420, + V7 = 430, + VBR_30 = 430, + V6 = 440, + VBR_40 = 440, + V5 = 450, + VBR_50 = 450, + V4 = 460, + VBR_60 = 460, + V3 = 470, + VBR_70 = 470, + V2 = 480, + VBR_80 = 480, + V1 = 490, + VBR_90 = 490, + V0 = 500, + VBR_100 = 500, + + + + /*still there for compatibility*/ + R3MIX = 1000, + STANDARD = 1001, + EXTREME = 1002, + INSANE = 1003, + STANDARD_FAST = 1004, + EXTREME_FAST = 1005, + MEDIUM = 1006, + MEDIUM_FAST = 1007 +} preset_mode; + + +/*asm optimizations*/ +typedef enum asm_optimizations_e { + MMX = 1, + AMD_3DNOW = 2, + SSE = 3 +} asm_optimizations; + + +/* psychoacoustic model */ +typedef enum Psy_model_e { + PSY_GPSYCHO = 1, + PSY_NSPSYTUNE = 2 +} Psy_model; + + +struct lame_global_struct; +typedef struct lame_global_struct lame_global_flags; +typedef lame_global_flags *lame_t; + + + + +/*********************************************************************** + * + * The LAME API + * These functions should be called, in this order, for each + * MP3 file to be encoded. See the file "API" for more documentation + * + ***********************************************************************/ + + +/* + * REQUIRED: + * initialize the encoder. sets default for all encoder parameters, + * returns NULL if some malloc()'s failed + * otherwise returns pointer to structure needed for all future + * API calls. + */ +lame_global_flags * CDECL lame_init(void); +/* obsolete version */ +int CDECL lame_init_old(lame_global_flags *); + + +/* + * OPTIONAL: + * set as needed to override defaults + */ + +/******************************************************************** + * input stream description + ***********************************************************************/ +/* number of samples. default = 2^32-1 */ +int CDECL lame_set_num_samples(lame_global_flags *, unsigned long); +unsigned long CDECL lame_get_num_samples(const lame_global_flags *); + +/* input sample rate in Hz. default = 44100hz */ +int CDECL lame_set_in_samplerate(lame_global_flags *, int); +int CDECL lame_get_in_samplerate(const lame_global_flags *); + +/* number of channels in input stream. default=2 */ +int CDECL lame_set_num_channels(lame_global_flags *, int); +int CDECL lame_get_num_channels(const lame_global_flags *); + +/* + scale the input by this amount before encoding. default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale(lame_global_flags *, float); +float CDECL lame_get_scale(const lame_global_flags *); + +/* + scale the channel 0 (left) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_left(lame_global_flags *, float); +float CDECL lame_get_scale_left(const lame_global_flags *); + +/* + scale the channel 1 (right) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_right(lame_global_flags *, float); +float CDECL lame_get_scale_right(const lame_global_flags *); + +/* + output sample rate in Hz. default = 0, which means LAME picks best value + based on the amount of compression. MPEG only allows: + MPEG1 32, 44.1, 48khz + MPEG2 16, 22.05, 24 + MPEG2.5 8, 11.025, 12 + (not used by decoding routines) +*/ +int CDECL lame_set_out_samplerate(lame_global_flags *, int); +int CDECL lame_get_out_samplerate(const lame_global_flags *); + + +/******************************************************************** + * general control parameters + ***********************************************************************/ +/* 1=cause LAME to collect data for an MP3 frame analyzer. default=0 */ +int CDECL lame_set_analysis(lame_global_flags *, int); +int CDECL lame_get_analysis(const lame_global_flags *); + +/* + 1 = write a Xing VBR header frame. + default = 1 + this variable must have been added by a Hungarian notation Windows programmer :-) +*/ +int CDECL lame_set_bWriteVbrTag(lame_global_flags *, int); +int CDECL lame_get_bWriteVbrTag(const lame_global_flags *); + +/* 1=decode only. use lame/mpglib to convert mp3/ogg to wav. default=0 */ +int CDECL lame_set_decode_only(lame_global_flags *, int); +int CDECL lame_get_decode_only(const lame_global_flags *); + +/* 1=encode a Vorbis .ogg file. default=0 */ +/* DEPRECATED */ +int CDECL lame_set_ogg(lame_global_flags *, int); +int CDECL lame_get_ogg(const lame_global_flags *); + +/* + internal algorithm selection. True quality is determined by the bitrate + but this variable will effect quality by selecting expensive or cheap algorithms. + quality=0..9. 0=best (very slow). 9=worst. + recommended: 2 near-best quality, not too slow + 5 good quality, fast + 7 ok quality, really fast +*/ +int CDECL lame_set_quality(lame_global_flags *, int); +int CDECL lame_get_quality(const lame_global_flags *); + +/* + mode = 0,1,2,3 = stereo, jstereo, dual channel (not supported), mono + default: lame picks based on compression ration and input channels +*/ +int CDECL lame_set_mode(lame_global_flags *, MPEG_mode); +MPEG_mode CDECL lame_get_mode(const lame_global_flags *); + +/* + mode_automs. Use a M/S mode with a switching threshold based on + compression ratio + DEPRECATED +*/ +int CDECL lame_set_mode_automs(lame_global_flags *, int); +int CDECL lame_get_mode_automs(const lame_global_flags *); + +/* + force_ms. Force M/S for all frames. For testing only. + default = 0 (disabled) +*/ +int CDECL lame_set_force_ms(lame_global_flags *, int); +int CDECL lame_get_force_ms(const lame_global_flags *); + +/* use free_format? default = 0 (disabled) */ +int CDECL lame_set_free_format(lame_global_flags *, int); +int CDECL lame_get_free_format(const lame_global_flags *); + +/* perform ReplayGain analysis? default = 0 (disabled) */ +int CDECL lame_set_findReplayGain(lame_global_flags *, int); +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* decode on the fly. Search for the peak sample. If the ReplayGain + * analysis is enabled then perform the analysis on the decoded data + * stream. default = 0 (disabled) + * NOTE: if this option is set the build-in decoder should not be used */ +int CDECL lame_set_decode_on_the_fly(lame_global_flags *, int); +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_input(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_input(const lame_global_flags *); + +/* DEPRECATED: now does the same as + lame_set_decode_on_the_fly() && lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_decode(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_decode(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_decode_on_the_fly() + default = 0 (disabled) */ +int CDECL lame_set_findPeakSample(lame_global_flags *, int); +int CDECL lame_get_findPeakSample(const lame_global_flags *); + +/* counters for gapless encoding */ +int CDECL lame_set_nogap_total(lame_global_flags*, int); +int CDECL lame_get_nogap_total(const lame_global_flags*); + +int CDECL lame_set_nogap_currentindex(lame_global_flags* , int); +int CDECL lame_get_nogap_currentindex(const lame_global_flags*); + + +/* + * OPTIONAL: + * Set printf like error/debug/message reporting functions. + * The second argument has to be a pointer to a function which looks like + * void my_debugf(const char *format, va_list ap) + * { + * (void) vfprintf(stdout, format, ap); + * } + * If you use NULL as the value of the pointer in the set function, the + * lame buildin function will be used (prints to stderr). + * To quiet any output you have to replace the body of the example function + * with just "return;" and use it in the set function. + */ +int CDECL lame_set_errorf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_debugf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_msgf (lame_global_flags *, + void (*func)(const char *, va_list)); + + + +/* set one of brate compression ratio. default is compression ratio of 11. */ +int CDECL lame_set_brate(lame_global_flags *, int); +int CDECL lame_get_brate(const lame_global_flags *); +int CDECL lame_set_compression_ratio(lame_global_flags *, float); +float CDECL lame_get_compression_ratio(const lame_global_flags *); + + +int CDECL lame_set_preset( lame_global_flags* gfp, int ); +int CDECL lame_set_asm_optimizations( lame_global_flags* gfp, int, int ); + + + +/******************************************************************** + * frame params + ***********************************************************************/ +/* mark as copyright. default=0 */ +int CDECL lame_set_copyright(lame_global_flags *, int); +int CDECL lame_get_copyright(const lame_global_flags *); + +/* mark as original. default=1 */ +int CDECL lame_set_original(lame_global_flags *, int); +int CDECL lame_get_original(const lame_global_flags *); + +/* error_protection. Use 2 bytes from each frame for CRC checksum. default=0 */ +int CDECL lame_set_error_protection(lame_global_flags *, int); +int CDECL lame_get_error_protection(const lame_global_flags *); + +/* padding_type. 0=pad no frames 1=pad all frames 2=adjust padding(default) */ +int CDECL lame_set_padding_type(lame_global_flags *, Padding_type); +Padding_type CDECL lame_get_padding_type(const lame_global_flags *); + +/* MP3 'private extension' bit Meaningless. default=0 */ +int CDECL lame_set_extension(lame_global_flags *, int); +int CDECL lame_get_extension(const lame_global_flags *); + +/* enforce strict ISO compliance. default=0 */ +int CDECL lame_set_strict_ISO(lame_global_flags *, int); +int CDECL lame_get_strict_ISO(const lame_global_flags *); + + +/******************************************************************** + * quantization/noise shaping + ***********************************************************************/ + +/* disable the bit reservoir. For testing only. default=0 */ +int CDECL lame_set_disable_reservoir(lame_global_flags *, int); +int CDECL lame_get_disable_reservoir(const lame_global_flags *); + +/* select a different "best quantization" function. default=0 */ +int CDECL lame_set_quant_comp(lame_global_flags *, int); +int CDECL lame_get_quant_comp(const lame_global_flags *); +int CDECL lame_set_quant_comp_short(lame_global_flags *, int); +int CDECL lame_get_quant_comp_short(const lame_global_flags *); + +int CDECL lame_set_experimentalX(lame_global_flags *, int); /* compatibility*/ +int CDECL lame_get_experimentalX(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalY(lame_global_flags *, int); +int CDECL lame_get_experimentalY(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalZ(lame_global_flags *, int); +int CDECL lame_get_experimentalZ(const lame_global_flags *); + +/* Naoki's psycho acoustic model. default=0 */ +int CDECL lame_set_exp_nspsytune(lame_global_flags *, int); +int CDECL lame_get_exp_nspsytune(const lame_global_flags *); + +void CDECL lame_set_msfix(lame_global_flags *, double); +float CDECL lame_get_msfix(const lame_global_flags *); + +int lame_set_exp_nspsytune2_int( lame_global_flags*, int, int); +float lame_set_exp_nspsytune2_real( lame_global_flags*, int, float); +void * lame_set_exp_nspsytune2_pointer( lame_global_flags*, int, void *); + +/******************************************************************** + * VBR control + ***********************************************************************/ +/* Types of VBR. default = vbr_off = CBR */ +int CDECL lame_set_VBR(lame_global_flags *, vbr_mode); +vbr_mode CDECL lame_get_VBR(const lame_global_flags *); + +/* VBR quality level. 0=highest 9=lowest */ +int CDECL lame_set_VBR_q(lame_global_flags *, int); +int CDECL lame_get_VBR_q(const lame_global_flags *); + +/* Ignored except for VBR=vbr_abr (ABR mode) */ +int CDECL lame_set_VBR_mean_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_mean_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_min_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_min_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_max_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_max_bitrate_kbps(const lame_global_flags *); + +/* + 1=strictly enforce VBR_min_bitrate. Normally it will be violated for + analog silence +*/ +int CDECL lame_set_VBR_hard_min(lame_global_flags *, int); +int CDECL lame_get_VBR_hard_min(const lame_global_flags *); + +/* for preset */ +int CDECL lame_set_preset_expopts(lame_global_flags *, int); + + +/******************************************************************** + * Filtering control + ***********************************************************************/ +/* freq in Hz to apply lowpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_lowpassfreq(lame_global_flags *, int); +int CDECL lame_get_lowpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_lowpasswidth(lame_global_flags *, int); +int CDECL lame_get_lowpasswidth(const lame_global_flags *); + +/* freq in Hz to apply highpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_highpassfreq(lame_global_flags *, int); +int CDECL lame_get_highpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_highpasswidth(lame_global_flags *, int); +int CDECL lame_get_highpasswidth(const lame_global_flags *); + + +/******************************************************************** + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + ***********************************************************************/ + +/* only use ATH for masking */ +int CDECL lame_set_ATHonly(lame_global_flags *, int); +int CDECL lame_get_ATHonly(const lame_global_flags *); + +/* only use ATH for short blocks */ +int CDECL lame_set_ATHshort(lame_global_flags *, int); +int CDECL lame_get_ATHshort(const lame_global_flags *); + +/* disable ATH */ +int CDECL lame_set_noATH(lame_global_flags *, int); +int CDECL lame_get_noATH(const lame_global_flags *); + +/* select ATH formula */ +int CDECL lame_set_ATHtype(lame_global_flags *, int); +int CDECL lame_get_ATHtype(const lame_global_flags *); + +/* lower ATH by this many db */ +int CDECL lame_set_ATHlower(lame_global_flags *, float); +float CDECL lame_get_ATHlower(const lame_global_flags *); + +/* select ATH adaptive adjustment type */ +int CDECL lame_set_athaa_type( lame_global_flags *, int); +int CDECL lame_get_athaa_type( const lame_global_flags *); + +/* select the loudness approximation used by the ATH adaptive auto-leveling */ +int CDECL lame_set_athaa_loudapprox( lame_global_flags *, int); +int CDECL lame_get_athaa_loudapprox( const lame_global_flags *); + +/* adjust (in dB) the point below which adaptive ATH level adjustment occurs */ +int CDECL lame_set_athaa_sensitivity( lame_global_flags *, float); +float CDECL lame_get_athaa_sensitivity( const lame_global_flags* ); + +/* predictability limit (ISO tonality formula) */ +int CDECL lame_set_cwlimit(lame_global_flags *, int); +int CDECL lame_get_cwlimit(const lame_global_flags *); + +/* + allow blocktypes to differ between channels? + default: 0 for jstereo, 1 for stereo +*/ +int CDECL lame_set_allow_diff_short(lame_global_flags *, int); +int CDECL lame_get_allow_diff_short(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_useTemporal(lame_global_flags *, int); +int CDECL lame_get_useTemporal(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_interChRatio(lame_global_flags *, float); +float CDECL lame_get_interChRatio(const lame_global_flags *); + +/* disable short blocks */ +int CDECL lame_set_no_short_blocks(lame_global_flags *, int); +int CDECL lame_get_no_short_blocks(const lame_global_flags *); + +/* force short blocks */ +int CDECL lame_set_force_short_blocks(lame_global_flags *, int); +int CDECL lame_get_force_short_blocks(const lame_global_flags *); + +/* Input PCM is emphased PCM (for instance from one of the rarely + emphased CDs), it is STRONGLY not recommended to use this, because + psycho does not take it into account, and last but not least many decoders + ignore these bits */ +int CDECL lame_set_emphasis(lame_global_flags *, int); +int CDECL lame_get_emphasis(const lame_global_flags *); + + + +/************************************************************************/ +/* internal variables, cannot be set... */ +/* provided because they may be of use to calling application */ +/************************************************************************/ +/* version 0=MPEG-2 1=MPEG-1 (2=MPEG-2.5) */ +int CDECL lame_get_version(const lame_global_flags *); + +/* encoder delay */ +int CDECL lame_get_encoder_delay(const lame_global_flags *); + +/* + padding appended to the input to make sure decoder can fully decode + all input. Note that this value can only be calculated during the + call to lame_encoder_flush(). Before lame_encoder_flush() has + been called, the value of encoder_padding = 0. +*/ +int CDECL lame_get_encoder_padding(const lame_global_flags *); + +/* size of MPEG frame */ +int CDECL lame_get_framesize(const lame_global_flags *); + +/* number of PCM samples buffered, but not yet encoded to mp3 data. */ +int CDECL lame_get_mf_samples_to_encode( const lame_global_flags* gfp ); + +/* + size (bytes) of mp3 data buffered, but not yet encoded. + this is the number of bytes which would be output by a call to + lame_encode_flush_nogap. NOTE: lame_encode_flush() will return + more bytes than this because it will encode the reamining buffered + PCM samples before flushing the mp3 buffers. +*/ +int CDECL lame_get_size_mp3buffer( const lame_global_flags* gfp ); + +/* number of frames encoded so far */ +int CDECL lame_get_frameNum(const lame_global_flags *); + +/* + lame's estimate of the total number of frames to be encoded + only valid if calling program set num_samples +*/ +int CDECL lame_get_totalframes(const lame_global_flags *); + +/* RadioGain value. Multiplied by 10 and rounded to the nearest. */ +int CDECL lame_get_RadioGain(const lame_global_flags *); + +/* AudiophileGain value. Multipled by 10 and rounded to the nearest. */ +int CDECL lame_get_AudiophileGain(const lame_global_flags *); + +/* the peak sample */ +float CDECL lame_get_PeakSample(const lame_global_flags *); + +/* is decoding on the fly performed */ +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* is ReplayGain analysis performed */ +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* Gain change required for preventing clipping. The value is correct only if + peak sample searching was enabled. If negative then the waveform + already does not clip. The value is multiplied by 10 and rounded up. */ +int CDECL lame_get_noclipGainChange(const lame_global_flags *); + +/* user-specified scale factor required for preventing clipping. Value is + correct only if peak sample searching was enabled and no user-specified + scaling was performed. If negative then either the waveform already does + not clip or the value cannot be determined */ +float CDECL lame_get_noclipScale(const lame_global_flags *); + + + + + + + +/* + * REQUIRED: + * sets more internal configuration based on data provided above. + * returns -1 if something failed. + */ +int CDECL lame_init_params(lame_global_flags * const ); + + +/* + * OPTIONAL: + * get the version number, in a string. of the form: + * "3.63 (beta)" or just "3.63". + */ +const char* CDECL get_lame_version ( void ); +const char* CDECL get_lame_short_version ( void ); +const char* CDECL get_lame_very_short_version ( void ); +const char* CDECL get_psy_version ( void ); +const char* CDECL get_lame_url ( void ); + +/* + * OPTIONAL: + * get the version numbers in numerical form. + */ +typedef struct { + /* generic LAME version */ + int major; + int minor; + int alpha; /* 0 if not an alpha version */ + int beta; /* 0 if not a beta version */ + + /* version of the psy model */ + int psy_major; + int psy_minor; + int psy_alpha; /* 0 if not an alpha version */ + int psy_beta; /* 0 if not a beta version */ + + /* compile time features */ + const char *features; /* Don't make assumptions about the contents! */ +} lame_version_t; +void CDECL get_lame_version_numerical ( lame_version_t *const ); + + +/* + * OPTIONAL: + * print internal lame configuration to message handler + */ +void CDECL lame_print_config(const lame_global_flags* gfp); + +void CDECL lame_print_internals( const lame_global_flags *gfp); + + +/* + * input pcm data, output (maybe) mp3 frames. + * This routine handles all buffering, resampling and filtering for you. + * + * return code number of bytes output in mp3buf. Can be 0 + * -1: mp3buf was too small + * -2: malloc() problem + * -3: lame_init_params() not called + * -4: psycho acoustic problems + * + * The required mp3buf_size can be computed from num_samples, + * samplerate and encoding rate, but here is a worst case estimate: + * + * mp3buf_size in bytes = 1.25*num_samples + 7200 + * + * I think a tighter bound could be: (mt, March 2000) + * MPEG1: + * num_samples*(bitrate/8)/samplerate + 4*1152*(bitrate/8)/samplerate + 512 + * MPEG2: + * num_samples*(bitrate/8)/samplerate + 4*576*(bitrate/8)/samplerate + 256 + * + * but test first if you use that! + * + * set mp3buf_size = 0 and LAME will not check if mp3buf_size is + * large enough. + * + * NOTE: + * if gfp->num_channels=2, but gfp->mode = 3 (mono), the L & R channels + * will be averaged into the L channel before encoding only the L channel + * This will overwrite the data in buffer_l[] and buffer_r[]. + * +*/ +int CDECL lame_encode_buffer ( + lame_global_flags* gfp, /* global context handle */ + const short int buffer_l [], /* PCM data for left channel */ + const short int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* + * as above, but input has L & R channel data interleaved. + * NOTE: + * num_samples = number of samples in the L (or R) + * channel, not the total number of samples in pcm[] + */ +int CDECL lame_encode_buffer_interleaved( + lame_global_flags* gfp, /* global context handlei */ + short int pcm[], /* PCM data for left and right + channel, interleaved */ + int num_samples, /* number of samples per channel, + _not_ number of samples in + pcm[] */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for 'float's. + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + */ +int CDECL lame_encode_buffer_float( + lame_global_flags* gfp, /* global context handle */ + const float buffer_l [], /* PCM data for left channel */ + const float buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for long's + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + * + * This scaling was a mistake (doesn't allow one to exploit full + * precision of type 'long'. Use lame_encode_buffer_long2() instead. + * + */ +int CDECL lame_encode_buffer_long( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* Same as lame_encode_buffer_long(), but with correct scaling. + * !! NOTE: !! data must still be scaled to be in the same range as + * type 'long'. Data should be in the range: +/- 2^(8*size(long)-1) + * + */ +int CDECL lame_encode_buffer_long2( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* as lame_encode_buffer, but for int's + * !! NOTE: !! input should be scaled to the maximum range of 'int' + * If int is 4 bytes, then the values should range from + * +/- 2147483648. + * + * This routine does not (and cannot, without loosing precision) use + * the same scaling as the rest of the lame_encode_buffer() routines. + * + */ +int CDECL lame_encode_buffer_int( + lame_global_flags* gfp, /* global context handle */ + const int buffer_l [], /* PCM data for left channel */ + const int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + + + + +/* + * REQUIRED: + * lame_encode_flush will flush the intenal PCM buffers, padding with + * 0's to make sure the final frame is complete, and then flush + * the internal MP3 buffers, and thus may return a + * final few mp3 frames. 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * will also write id3v1 tags (if any) into the bitstream + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * lame_encode_flush_nogap will flush the internal mp3 buffers and pad + * the last frame with ancillary data so it is a complete mp3 frame. + * + * 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * After a call to this routine, the outputed mp3 data is complete, but + * you may continue to encode new PCM samples and write future mp3 data + * to a different file. The two mp3 files will play back with no gaps + * if they are concatenated together. + * + * This routine will NOT write id3v1 tags into the bitstream. + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush_nogap( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * Normally, this is called by lame_init_params(). It writes id3v2 and + * Xing headers into the front of the bitstream, and sets frame counters + * and bitrate histogram data to 0. You can also call this after + * lame_encode_flush_nogap(). + */ +int CDECL lame_init_bitstream( + lame_global_flags * gfp); /* global context handle */ + + + +/* + * OPTIONAL: some simple statistics + * a bitrate histogram to visualize the distribution of used frame sizes + * a stereo mode histogram to visualize the distribution of used stereo + * modes, useful in joint-stereo mode only + * 0: LR left-right encoded + * 1: LR-I left-right and intensity encoded (currently not supported) + * 2: MS mid-side encoded + * 3: MS-I mid-side and intensity encoded (currently not supported) + * + * attention: don't call them after lame_encode_finish + * suggested: lame_encode_flush -> lame_*_hist -> lame_close + */ + +void CDECL lame_bitrate_hist( + const lame_global_flags *const gfp, + int bitrate_count[14] ); +void CDECL lame_bitrate_kbps( + const lame_global_flags *const gfp, + int bitrate_kbps [14] ); +void CDECL lame_stereo_mode_hist( + const lame_global_flags *const gfp, + int stereo_mode_count[4] ); + +void CDECL lame_bitrate_stereo_mode_hist ( + const lame_global_flags * const gfp, + int bitrate_stmode_count [14] [4] ); + +void CDECL lame_block_type_hist ( + const lame_global_flags * const gfp, + int btype_count[6] ); + +void CDECL lame_bitrate_block_type_hist ( + const lame_global_flags * const gfp, + int bitrate_btype_count[14][6] ); + + +/* + * OPTIONAL: + * lame_mp3_tags_fid will append a Xing VBR tag to the mp3 file with file + * pointer fid. These calls perform forward and backwards seeks, so make + * sure fid is a real file. Make sure lame_encode_flush has been called, + * and all mp3 data has been written to the file before calling this + * function. + * NOTE: + * if VBR tags are turned off by the user, or turned off by LAME because + * the output is not a regular file, this call does nothing +*/ +void CDECL lame_mp3_tags_fid(lame_global_flags *,FILE* fid); + + +/* + * REQUIRED: + * final call to free all remaining buffers + */ +int CDECL lame_close (lame_global_flags *); + +/* + * OBSOLETE: + * lame_encode_finish combines lame_encode_flush() and lame_close() in + * one call. However, once this call is made, the statistics routines + * will no longer work because the data will have been cleared, and + * lame_mp3_tags_fid() cannot be called to add data to the VBR header + */ +int CDECL lame_encode_finish( + lame_global_flags* gfp, + unsigned char* mp3buf, + int size ); + + + + + + + +/********************************************************************* + * + * decoding + * + * a simple interface to mpglib, part of mpg123, is also included if + * libmp3lame is compiled with HAVE_MPGLIB + * + *********************************************************************/ +typedef struct { + int header_parsed; /* 1 if header was parsed and following data was + computed */ + int stereo; /* number of channels */ + int samplerate; /* sample rate */ + int bitrate; /* bitrate */ + int mode; /* mp3 frame type */ + int mode_ext; /* mp3 frame type */ + int framesize; /* number of samples per mp3 frame */ + + /* this data is only computed if mpglib detects a Xing VBR header */ + unsigned long nsamp; /* number of samples in mp3 file. */ + int totalframes; /* total number of frames in mp3 file */ + + /* this data is not currently computed by the mpglib routines */ + int framenum; /* frames decoded counter */ +} mp3data_struct; + + +/* required call to initialize decoder + * NOTE: the decoder should not be used when encoding is performed + * with decoding on the fly */ +int CDECL lame_decode_init(void); + +/********************************************************************* + * input 1 mp3 frame, output (maybe) pcm data. + * + * nout = lame_decode(mp3buf,len,pcm_l,pcm_r); + * + * input: + * len : number of bytes of mp3 data in mp3buf + * mp3buf[len] : mp3 data to be decoded + * + * output: + * nout: -1 : decoding error + * 0 : need more data before we can complete the decode + * >0 : returned 'nout' samples worth of data in pcm_l,pcm_r + * pcm_l[nout] : left channel data + * pcm_r[nout] : right channel data + * + *********************************************************************/ +int CDECL lame_decode( + unsigned char * mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode, and also returns mp3 header data */ +int CDECL lame_decode_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode, but returns at most one frame */ +int CDECL lame_decode1( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode1, but returns at most one frame and mp3 header data */ +int CDECL lame_decode1_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode1_headers, but also returns enc_delay and enc_padding + from VBR Info tag, (-1 if no info tag was found) */ +int CDECL lame_decode1_headersB( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data, + int *enc_delay, + int *enc_padding ); + + +/* cleanup call to exit decoder */ +int CDECL lame_decode_exit(void); + + + +/********************************************************************* + * + * id3tag stuff + * + *********************************************************************/ + +/* + * id3tag.h -- Interface to write ID3 version 1 and 2 tags. + * + * Copyright (C) 2000 Don Melton. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +/* utility to obtain alphabetically sorted list of genre names with numbers */ +extern void id3tag_genre_list( + void (*handler)(int, const char *, void *), + void* cookie); + +extern void id3tag_init (lame_global_flags *gfp); + +/* force addition of version 2 tag */ +extern void id3tag_add_v2 (lame_global_flags *gfp); + +/* add only a version 1 tag */ +extern void id3tag_v1_only (lame_global_flags *gfp); + +/* add only a version 2 tag */ +extern void id3tag_v2_only (lame_global_flags *gfp); + +/* pad version 1 tag with spaces instead of nulls */ +extern void id3tag_space_v1 (lame_global_flags *gfp); + +/* pad version 2 tag with extra 128 bytes */ +extern void id3tag_pad_v2 (lame_global_flags *gfp); + +extern void id3tag_set_title( + lame_global_flags* gfp, + const char* title ); +extern void id3tag_set_artist( + lame_global_flags* gfp, + const char* artist ); +extern void id3tag_set_album( + lame_global_flags* gfp, + const char* album ); +extern void id3tag_set_year( + lame_global_flags* gfp, + const char* year ); +extern void id3tag_set_comment( + lame_global_flags* gfp, + const char* comment ); +extern void id3tag_set_track( + lame_global_flags* gfp, + const char* track ); + +/* return non-zero result if genre name or number is invalid */ +extern int id3tag_set_genre( + lame_global_flags* gfp, + const char* genre ); + +/*********************************************************************** +* +* list of valid bitrates [kbps] & sample frequencies [Hz]. +* first index: 0: MPEG-2 values (sample frequencies 16...24 kHz) +* 1: MPEG-1 values (sample frequencies 32...48 kHz) +* 2: MPEG-2.5 values (sample frequencies 8...12 kHz) +***********************************************************************/ +extern const int bitrate_table [3] [16]; +extern const int samplerate_table [3] [ 4]; + + + +/* maximum size of mp3buffer needed if you encode at most 1152 samples for + each call to lame_encode_buffer. see lame_encode_buffer() below + (LAME_MAXMP3BUFFER is now obsolete) */ +#define LAME_MAXMP3BUFFER 16384 + + +typedef enum { + LAME_OKAY = 0, + LAME_NOERROR = 0, + LAME_GENERICERROR = -1, + LAME_NOMEM = -10, + LAME_BADBITRATE = -11, + LAME_BADSAMPFREQ = -12, + LAME_INTERNALERROR = -13, + + FRONTEND_READERROR = -80, + FRONTEND_WRITEERROR = -81, + FRONTEND_FILETOOLARGE = -82 + +} lame_errorcodes_t; + +#if defined(__cplusplus) +} +#endif +#endif /* LAME_LAME_H */ + diff --git a/lame/lame.h b/lame/lame.h new file mode 100644 index 0000000..1252d54 --- /dev/null +++ b/lame/lame.h @@ -0,0 +1,1110 @@ +/* + * Interface to MP3 LAME encoding engine + * + * Copyright (c) 1999 Mark Taylor + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* $Id: lame.h,v 1.154 2004/04/11 15:39:53 glessard Exp $ */ + +#ifndef LAME_LAME_H +#define LAME_LAME_H + +#include +#include + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(WIN32) +#undef CDECL +#define CDECL _cdecl +#else +#define CDECL +#endif + + +typedef enum vbr_mode_e { + vbr_off=0, + vbr_mt, /* obsolete, same as vbr_mtrh */ + vbr_rh, + vbr_abr, + vbr_mtrh, + vbr_max_indicator, /* Don't use this! It's used for sanity checks. */ + vbr_default=vbr_rh /* change this to change the default VBR mode of LAME */ +} vbr_mode; + + +/* MPEG modes */ +typedef enum MPEG_mode_e { + STEREO = 0, + JOINT_STEREO, + DUAL_CHANNEL, /* LAME doesn't supports this! */ + MONO, + NOT_SET, + MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} MPEG_mode; + +/* Padding types */ +typedef enum Padding_type_e { + PAD_NO = 0, + PAD_ALL, + PAD_ADJUST, + PAD_MAX_INDICATOR /* Don't use this! It's used for sanity checks. */ +} Padding_type; + + + +/*presets*/ +typedef enum preset_mode_e { + /*values from 8 to 320 should be reserved for abr bitrates*/ + /*for abr I'd suggest to directly use the targeted bitrate as a value*/ + ABR_8 = 8, + ABR_320 = 320, + + V9 = 410, /*Vx to match Lame and VBR_xx to match FhG*/ + VBR_10 = 410, + V8 = 420, + VBR_20 = 420, + V7 = 430, + VBR_30 = 430, + V6 = 440, + VBR_40 = 440, + V5 = 450, + VBR_50 = 450, + V4 = 460, + VBR_60 = 460, + V3 = 470, + VBR_70 = 470, + V2 = 480, + VBR_80 = 480, + V1 = 490, + VBR_90 = 490, + V0 = 500, + VBR_100 = 500, + + + + /*still there for compatibility*/ + R3MIX = 1000, + STANDARD = 1001, + EXTREME = 1002, + INSANE = 1003, + STANDARD_FAST = 1004, + EXTREME_FAST = 1005, + MEDIUM = 1006, + MEDIUM_FAST = 1007 +} preset_mode; + + +/*asm optimizations*/ +typedef enum asm_optimizations_e { + MMX = 1, + AMD_3DNOW = 2, + SSE = 3 +} asm_optimizations; + + +/* psychoacoustic model */ +typedef enum Psy_model_e { + PSY_GPSYCHO = 1, + PSY_NSPSYTUNE = 2 +} Psy_model; + + +struct lame_global_struct; +typedef struct lame_global_struct lame_global_flags; +typedef lame_global_flags *lame_t; + + + + +/*********************************************************************** + * + * The LAME API + * These functions should be called, in this order, for each + * MP3 file to be encoded. See the file "API" for more documentation + * + ***********************************************************************/ + + +/* + * REQUIRED: + * initialize the encoder. sets default for all encoder parameters, + * returns NULL if some malloc()'s failed + * otherwise returns pointer to structure needed for all future + * API calls. + */ +lame_global_flags * CDECL lame_init(void); +/* obsolete version */ +int CDECL lame_init_old(lame_global_flags *); + + +/* + * OPTIONAL: + * set as needed to override defaults + */ + +/******************************************************************** + * input stream description + ***********************************************************************/ +/* number of samples. default = 2^32-1 */ +int CDECL lame_set_num_samples(lame_global_flags *, unsigned long); +unsigned long CDECL lame_get_num_samples(const lame_global_flags *); + +/* input sample rate in Hz. default = 44100hz */ +int CDECL lame_set_in_samplerate(lame_global_flags *, int); +int CDECL lame_get_in_samplerate(const lame_global_flags *); + +/* number of channels in input stream. default=2 */ +int CDECL lame_set_num_channels(lame_global_flags *, int); +int CDECL lame_get_num_channels(const lame_global_flags *); + +/* + scale the input by this amount before encoding. default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale(lame_global_flags *, float); +float CDECL lame_get_scale(const lame_global_flags *); + +/* + scale the channel 0 (left) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_left(lame_global_flags *, float); +float CDECL lame_get_scale_left(const lame_global_flags *); + +/* + scale the channel 1 (right) input by this amount before encoding. + default=0 (disabled) + (not used by decoding routines) +*/ +int CDECL lame_set_scale_right(lame_global_flags *, float); +float CDECL lame_get_scale_right(const lame_global_flags *); + +/* + output sample rate in Hz. default = 0, which means LAME picks best value + based on the amount of compression. MPEG only allows: + MPEG1 32, 44.1, 48khz + MPEG2 16, 22.05, 24 + MPEG2.5 8, 11.025, 12 + (not used by decoding routines) +*/ +int CDECL lame_set_out_samplerate(lame_global_flags *, int); +int CDECL lame_get_out_samplerate(const lame_global_flags *); + + +/******************************************************************** + * general control parameters + ***********************************************************************/ +/* 1=cause LAME to collect data for an MP3 frame analyzer. default=0 */ +int CDECL lame_set_analysis(lame_global_flags *, int); +int CDECL lame_get_analysis(const lame_global_flags *); + +/* + 1 = write a Xing VBR header frame. + default = 1 + this variable must have been added by a Hungarian notation Windows programmer :-) +*/ +int CDECL lame_set_bWriteVbrTag(lame_global_flags *, int); +int CDECL lame_get_bWriteVbrTag(const lame_global_flags *); + +/* 1=decode only. use lame/mpglib to convert mp3/ogg to wav. default=0 */ +int CDECL lame_set_decode_only(lame_global_flags *, int); +int CDECL lame_get_decode_only(const lame_global_flags *); + +/* 1=encode a Vorbis .ogg file. default=0 */ +/* DEPRECATED */ +int CDECL lame_set_ogg(lame_global_flags *, int); +int CDECL lame_get_ogg(const lame_global_flags *); + +/* + internal algorithm selection. True quality is determined by the bitrate + but this variable will effect quality by selecting expensive or cheap algorithms. + quality=0..9. 0=best (very slow). 9=worst. + recommended: 2 near-best quality, not too slow + 5 good quality, fast + 7 ok quality, really fast +*/ +int CDECL lame_set_quality(lame_global_flags *, int); +int CDECL lame_get_quality(const lame_global_flags *); + +/* + mode = 0,1,2,3 = stereo, jstereo, dual channel (not supported), mono + default: lame picks based on compression ration and input channels +*/ +int CDECL lame_set_mode(lame_global_flags *, MPEG_mode); +MPEG_mode CDECL lame_get_mode(const lame_global_flags *); + +/* + mode_automs. Use a M/S mode with a switching threshold based on + compression ratio + DEPRECATED +*/ +int CDECL lame_set_mode_automs(lame_global_flags *, int); +int CDECL lame_get_mode_automs(const lame_global_flags *); + +/* + force_ms. Force M/S for all frames. For testing only. + default = 0 (disabled) +*/ +int CDECL lame_set_force_ms(lame_global_flags *, int); +int CDECL lame_get_force_ms(const lame_global_flags *); + +/* use free_format? default = 0 (disabled) */ +int CDECL lame_set_free_format(lame_global_flags *, int); +int CDECL lame_get_free_format(const lame_global_flags *); + +/* perform ReplayGain analysis? default = 0 (disabled) */ +int CDECL lame_set_findReplayGain(lame_global_flags *, int); +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* decode on the fly. Search for the peak sample. If the ReplayGain + * analysis is enabled then perform the analysis on the decoded data + * stream. default = 0 (disabled) + * NOTE: if this option is set the build-in decoder should not be used */ +int CDECL lame_set_decode_on_the_fly(lame_global_flags *, int); +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_input(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_input(const lame_global_flags *); + +/* DEPRECATED: now does the same as + lame_set_decode_on_the_fly() && lame_set_findReplayGain() + default = 0 (disabled) */ +int CDECL lame_set_ReplayGain_decode(lame_global_flags *, int); +int CDECL lame_get_ReplayGain_decode(const lame_global_flags *); + +/* DEPRECATED: now does the same as lame_set_decode_on_the_fly() + default = 0 (disabled) */ +int CDECL lame_set_findPeakSample(lame_global_flags *, int); +int CDECL lame_get_findPeakSample(const lame_global_flags *); + +/* counters for gapless encoding */ +int CDECL lame_set_nogap_total(lame_global_flags*, int); +int CDECL lame_get_nogap_total(const lame_global_flags*); + +int CDECL lame_set_nogap_currentindex(lame_global_flags* , int); +int CDECL lame_get_nogap_currentindex(const lame_global_flags*); + + +/* + * OPTIONAL: + * Set printf like error/debug/message reporting functions. + * The second argument has to be a pointer to a function which looks like + * void my_debugf(const char *format, va_list ap) + * { + * (void) vfprintf(stdout, format, ap); + * } + * If you use NULL as the value of the pointer in the set function, the + * lame buildin function will be used (prints to stderr). + * To quiet any output you have to replace the body of the example function + * with just "return;" and use it in the set function. + */ +int CDECL lame_set_errorf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_debugf(lame_global_flags *, + void (*func)(const char *, va_list)); +int CDECL lame_set_msgf (lame_global_flags *, + void (*func)(const char *, va_list)); + + + +/* set one of brate compression ratio. default is compression ratio of 11. */ +int CDECL lame_set_brate(lame_global_flags *, int); +int CDECL lame_get_brate(const lame_global_flags *); +int CDECL lame_set_compression_ratio(lame_global_flags *, float); +float CDECL lame_get_compression_ratio(const lame_global_flags *); + + +int CDECL lame_set_preset( lame_global_flags* gfp, int ); +int CDECL lame_set_asm_optimizations( lame_global_flags* gfp, int, int ); + + + +/******************************************************************** + * frame params + ***********************************************************************/ +/* mark as copyright. default=0 */ +int CDECL lame_set_copyright(lame_global_flags *, int); +int CDECL lame_get_copyright(const lame_global_flags *); + +/* mark as original. default=1 */ +int CDECL lame_set_original(lame_global_flags *, int); +int CDECL lame_get_original(const lame_global_flags *); + +/* error_protection. Use 2 bytes from each frame for CRC checksum. default=0 */ +int CDECL lame_set_error_protection(lame_global_flags *, int); +int CDECL lame_get_error_protection(const lame_global_flags *); + +/* padding_type. 0=pad no frames 1=pad all frames 2=adjust padding(default) */ +int CDECL lame_set_padding_type(lame_global_flags *, Padding_type); +Padding_type CDECL lame_get_padding_type(const lame_global_flags *); + +/* MP3 'private extension' bit Meaningless. default=0 */ +int CDECL lame_set_extension(lame_global_flags *, int); +int CDECL lame_get_extension(const lame_global_flags *); + +/* enforce strict ISO compliance. default=0 */ +int CDECL lame_set_strict_ISO(lame_global_flags *, int); +int CDECL lame_get_strict_ISO(const lame_global_flags *); + + +/******************************************************************** + * quantization/noise shaping + ***********************************************************************/ + +/* disable the bit reservoir. For testing only. default=0 */ +int CDECL lame_set_disable_reservoir(lame_global_flags *, int); +int CDECL lame_get_disable_reservoir(const lame_global_flags *); + +/* select a different "best quantization" function. default=0 */ +int CDECL lame_set_quant_comp(lame_global_flags *, int); +int CDECL lame_get_quant_comp(const lame_global_flags *); +int CDECL lame_set_quant_comp_short(lame_global_flags *, int); +int CDECL lame_get_quant_comp_short(const lame_global_flags *); + +int CDECL lame_set_experimentalX(lame_global_flags *, int); /* compatibility*/ +int CDECL lame_get_experimentalX(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalY(lame_global_flags *, int); +int CDECL lame_get_experimentalY(const lame_global_flags *); + +/* another experimental option. for testing only */ +int CDECL lame_set_experimentalZ(lame_global_flags *, int); +int CDECL lame_get_experimentalZ(const lame_global_flags *); + +/* Naoki's psycho acoustic model. default=0 */ +int CDECL lame_set_exp_nspsytune(lame_global_flags *, int); +int CDECL lame_get_exp_nspsytune(const lame_global_flags *); + +void CDECL lame_set_msfix(lame_global_flags *, double); +float CDECL lame_get_msfix(const lame_global_flags *); + +int lame_set_exp_nspsytune2_int( lame_global_flags*, int, int); +float lame_set_exp_nspsytune2_real( lame_global_flags*, int, float); +void * lame_set_exp_nspsytune2_pointer( lame_global_flags*, int, void *); + +/******************************************************************** + * VBR control + ***********************************************************************/ +/* Types of VBR. default = vbr_off = CBR */ +int CDECL lame_set_VBR(lame_global_flags *, vbr_mode); +vbr_mode CDECL lame_get_VBR(const lame_global_flags *); + +/* VBR quality level. 0=highest 9=lowest */ +int CDECL lame_set_VBR_q(lame_global_flags *, int); +int CDECL lame_get_VBR_q(const lame_global_flags *); + +/* Ignored except for VBR=vbr_abr (ABR mode) */ +int CDECL lame_set_VBR_mean_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_mean_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_min_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_min_bitrate_kbps(const lame_global_flags *); + +int CDECL lame_set_VBR_max_bitrate_kbps(lame_global_flags *, int); +int CDECL lame_get_VBR_max_bitrate_kbps(const lame_global_flags *); + +/* + 1=strictly enforce VBR_min_bitrate. Normally it will be violated for + analog silence +*/ +int CDECL lame_set_VBR_hard_min(lame_global_flags *, int); +int CDECL lame_get_VBR_hard_min(const lame_global_flags *); + +/* for preset */ +int CDECL lame_set_preset_expopts(lame_global_flags *, int); + + +/******************************************************************** + * Filtering control + ***********************************************************************/ +/* freq in Hz to apply lowpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_lowpassfreq(lame_global_flags *, int); +int CDECL lame_get_lowpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_lowpasswidth(lame_global_flags *, int); +int CDECL lame_get_lowpasswidth(const lame_global_flags *); + +/* freq in Hz to apply highpass. Default = 0 = lame chooses. -1 = disabled */ +int CDECL lame_set_highpassfreq(lame_global_flags *, int); +int CDECL lame_get_highpassfreq(const lame_global_flags *); +/* width of transition band, in Hz. Default = one polyphase filter band */ +int CDECL lame_set_highpasswidth(lame_global_flags *, int); +int CDECL lame_get_highpasswidth(const lame_global_flags *); + + +/******************************************************************** + * psycho acoustics and other arguments which you should not change + * unless you know what you are doing + ***********************************************************************/ + +/* only use ATH for masking */ +int CDECL lame_set_ATHonly(lame_global_flags *, int); +int CDECL lame_get_ATHonly(const lame_global_flags *); + +/* only use ATH for short blocks */ +int CDECL lame_set_ATHshort(lame_global_flags *, int); +int CDECL lame_get_ATHshort(const lame_global_flags *); + +/* disable ATH */ +int CDECL lame_set_noATH(lame_global_flags *, int); +int CDECL lame_get_noATH(const lame_global_flags *); + +/* select ATH formula */ +int CDECL lame_set_ATHtype(lame_global_flags *, int); +int CDECL lame_get_ATHtype(const lame_global_flags *); + +/* lower ATH by this many db */ +int CDECL lame_set_ATHlower(lame_global_flags *, float); +float CDECL lame_get_ATHlower(const lame_global_flags *); + +/* select ATH adaptive adjustment type */ +int CDECL lame_set_athaa_type( lame_global_flags *, int); +int CDECL lame_get_athaa_type( const lame_global_flags *); + +/* select the loudness approximation used by the ATH adaptive auto-leveling */ +int CDECL lame_set_athaa_loudapprox( lame_global_flags *, int); +int CDECL lame_get_athaa_loudapprox( const lame_global_flags *); + +/* adjust (in dB) the point below which adaptive ATH level adjustment occurs */ +int CDECL lame_set_athaa_sensitivity( lame_global_flags *, float); +float CDECL lame_get_athaa_sensitivity( const lame_global_flags* ); + +/* predictability limit (ISO tonality formula) */ +int CDECL lame_set_cwlimit(lame_global_flags *, int); +int CDECL lame_get_cwlimit(const lame_global_flags *); + +/* + allow blocktypes to differ between channels? + default: 0 for jstereo, 1 for stereo +*/ +int CDECL lame_set_allow_diff_short(lame_global_flags *, int); +int CDECL lame_get_allow_diff_short(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_useTemporal(lame_global_flags *, int); +int CDECL lame_get_useTemporal(const lame_global_flags *); + +/* use temporal masking effect (default = 1) */ +int CDECL lame_set_interChRatio(lame_global_flags *, float); +float CDECL lame_get_interChRatio(const lame_global_flags *); + +/* disable short blocks */ +int CDECL lame_set_no_short_blocks(lame_global_flags *, int); +int CDECL lame_get_no_short_blocks(const lame_global_flags *); + +/* force short blocks */ +int CDECL lame_set_force_short_blocks(lame_global_flags *, int); +int CDECL lame_get_force_short_blocks(const lame_global_flags *); + +/* Input PCM is emphased PCM (for instance from one of the rarely + emphased CDs), it is STRONGLY not recommended to use this, because + psycho does not take it into account, and last but not least many decoders + ignore these bits */ +int CDECL lame_set_emphasis(lame_global_flags *, int); +int CDECL lame_get_emphasis(const lame_global_flags *); + + + +/************************************************************************/ +/* internal variables, cannot be set... */ +/* provided because they may be of use to calling application */ +/************************************************************************/ +/* version 0=MPEG-2 1=MPEG-1 (2=MPEG-2.5) */ +int CDECL lame_get_version(const lame_global_flags *); + +/* encoder delay */ +int CDECL lame_get_encoder_delay(const lame_global_flags *); + +/* + padding appended to the input to make sure decoder can fully decode + all input. Note that this value can only be calculated during the + call to lame_encoder_flush(). Before lame_encoder_flush() has + been called, the value of encoder_padding = 0. +*/ +int CDECL lame_get_encoder_padding(const lame_global_flags *); + +/* size of MPEG frame */ +int CDECL lame_get_framesize(const lame_global_flags *); + +/* number of PCM samples buffered, but not yet encoded to mp3 data. */ +int CDECL lame_get_mf_samples_to_encode( const lame_global_flags* gfp ); + +/* + size (bytes) of mp3 data buffered, but not yet encoded. + this is the number of bytes which would be output by a call to + lame_encode_flush_nogap. NOTE: lame_encode_flush() will return + more bytes than this because it will encode the reamining buffered + PCM samples before flushing the mp3 buffers. +*/ +int CDECL lame_get_size_mp3buffer( const lame_global_flags* gfp ); + +/* number of frames encoded so far */ +int CDECL lame_get_frameNum(const lame_global_flags *); + +/* + lame's estimate of the total number of frames to be encoded + only valid if calling program set num_samples +*/ +int CDECL lame_get_totalframes(const lame_global_flags *); + +/* RadioGain value. Multiplied by 10 and rounded to the nearest. */ +int CDECL lame_get_RadioGain(const lame_global_flags *); + +/* AudiophileGain value. Multipled by 10 and rounded to the nearest. */ +int CDECL lame_get_AudiophileGain(const lame_global_flags *); + +/* the peak sample */ +float CDECL lame_get_PeakSample(const lame_global_flags *); + +/* is decoding on the fly performed */ +int CDECL lame_get_decode_on_the_fly(const lame_global_flags *); + +/* is ReplayGain analysis performed */ +int CDECL lame_get_findReplayGain(const lame_global_flags *); + +/* Gain change required for preventing clipping. The value is correct only if + peak sample searching was enabled. If negative then the waveform + already does not clip. The value is multiplied by 10 and rounded up. */ +int CDECL lame_get_noclipGainChange(const lame_global_flags *); + +/* user-specified scale factor required for preventing clipping. Value is + correct only if peak sample searching was enabled and no user-specified + scaling was performed. If negative then either the waveform already does + not clip or the value cannot be determined */ +float CDECL lame_get_noclipScale(const lame_global_flags *); + + + + + + + +/* + * REQUIRED: + * sets more internal configuration based on data provided above. + * returns -1 if something failed. + */ +int CDECL lame_init_params(lame_global_flags * const ); + + +/* + * OPTIONAL: + * get the version number, in a string. of the form: + * "3.63 (beta)" or just "3.63". + */ +const char* CDECL get_lame_version ( void ); +const char* CDECL get_lame_short_version ( void ); +const char* CDECL get_lame_very_short_version ( void ); +const char* CDECL get_psy_version ( void ); +const char* CDECL get_lame_url ( void ); + +/* + * OPTIONAL: + * get the version numbers in numerical form. + */ +typedef struct { + /* generic LAME version */ + int major; + int minor; + int alpha; /* 0 if not an alpha version */ + int beta; /* 0 if not a beta version */ + + /* version of the psy model */ + int psy_major; + int psy_minor; + int psy_alpha; /* 0 if not an alpha version */ + int psy_beta; /* 0 if not a beta version */ + + /* compile time features */ + const char *features; /* Don't make assumptions about the contents! */ +} lame_version_t; +void CDECL get_lame_version_numerical ( lame_version_t *const ); + + +/* + * OPTIONAL: + * print internal lame configuration to message handler + */ +void CDECL lame_print_config(const lame_global_flags* gfp); + +void CDECL lame_print_internals( const lame_global_flags *gfp); + + +/* + * input pcm data, output (maybe) mp3 frames. + * This routine handles all buffering, resampling and filtering for you. + * + * return code number of bytes output in mp3buf. Can be 0 + * -1: mp3buf was too small + * -2: malloc() problem + * -3: lame_init_params() not called + * -4: psycho acoustic problems + * + * The required mp3buf_size can be computed from num_samples, + * samplerate and encoding rate, but here is a worst case estimate: + * + * mp3buf_size in bytes = 1.25*num_samples + 7200 + * + * I think a tighter bound could be: (mt, March 2000) + * MPEG1: + * num_samples*(bitrate/8)/samplerate + 4*1152*(bitrate/8)/samplerate + 512 + * MPEG2: + * num_samples*(bitrate/8)/samplerate + 4*576*(bitrate/8)/samplerate + 256 + * + * but test first if you use that! + * + * set mp3buf_size = 0 and LAME will not check if mp3buf_size is + * large enough. + * + * NOTE: + * if gfp->num_channels=2, but gfp->mode = 3 (mono), the L & R channels + * will be averaged into the L channel before encoding only the L channel + * This will overwrite the data in buffer_l[] and buffer_r[]. + * +*/ +int CDECL lame_encode_buffer ( + lame_global_flags* gfp, /* global context handle */ + const short int buffer_l [], /* PCM data for left channel */ + const short int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* + * as above, but input has L & R channel data interleaved. + * NOTE: + * num_samples = number of samples in the L (or R) + * channel, not the total number of samples in pcm[] + */ +int CDECL lame_encode_buffer_interleaved( + lame_global_flags* gfp, /* global context handlei */ + short int pcm[], /* PCM data for left and right + channel, interleaved */ + int num_samples, /* number of samples per channel, + _not_ number of samples in + pcm[] */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for 'float's. + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + */ +int CDECL lame_encode_buffer_float( + lame_global_flags* gfp, /* global context handle */ + const float buffer_l [], /* PCM data for left channel */ + const float buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + +/* as lame_encode_buffer, but for long's + * !! NOTE: !! data must still be scaled to be in the same range as + * short int, +/- 32768 + * + * This scaling was a mistake (doesn't allow one to exploit full + * precision of type 'long'. Use lame_encode_buffer_long2() instead. + * + */ +int CDECL lame_encode_buffer_long( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* Same as lame_encode_buffer_long(), but with correct scaling. + * !! NOTE: !! data must still be scaled to be in the same range as + * type 'long'. Data should be in the range: +/- 2^(8*size(long)-1) + * + */ +int CDECL lame_encode_buffer_long2( + lame_global_flags* gfp, /* global context handle */ + const long buffer_l [], /* PCM data for left channel */ + const long buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + +/* as lame_encode_buffer, but for int's + * !! NOTE: !! input should be scaled to the maximum range of 'int' + * If int is 4 bytes, then the values should range from + * +/- 2147483648. + * + * This routine does not (and cannot, without loosing precision) use + * the same scaling as the rest of the lame_encode_buffer() routines. + * + */ +int CDECL lame_encode_buffer_int( + lame_global_flags* gfp, /* global context handle */ + const int buffer_l [], /* PCM data for left channel */ + const int buffer_r [], /* PCM data for right channel */ + const int nsamples, /* number of samples per channel */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + const int mp3buf_size ); /* number of valid octets in this + stream */ + + + + + +/* + * REQUIRED: + * lame_encode_flush will flush the intenal PCM buffers, padding with + * 0's to make sure the final frame is complete, and then flush + * the internal MP3 buffers, and thus may return a + * final few mp3 frames. 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * will also write id3v1 tags (if any) into the bitstream + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * lame_encode_flush_nogap will flush the internal mp3 buffers and pad + * the last frame with ancillary data so it is a complete mp3 frame. + * + * 'mp3buf' should be at least 7200 bytes long + * to hold all possible emitted data. + * + * After a call to this routine, the outputed mp3 data is complete, but + * you may continue to encode new PCM samples and write future mp3 data + * to a different file. The two mp3 files will play back with no gaps + * if they are concatenated together. + * + * This routine will NOT write id3v1 tags into the bitstream. + * + * return code = number of bytes output to mp3buf. Can be 0 + */ +int CDECL lame_encode_flush_nogap( + lame_global_flags * gfp, /* global context handle */ + unsigned char* mp3buf, /* pointer to encoded MP3 stream */ + int size); /* number of valid octets in this stream */ + +/* + * OPTIONAL: + * Normally, this is called by lame_init_params(). It writes id3v2 and + * Xing headers into the front of the bitstream, and sets frame counters + * and bitrate histogram data to 0. You can also call this after + * lame_encode_flush_nogap(). + */ +int CDECL lame_init_bitstream( + lame_global_flags * gfp); /* global context handle */ + + + +/* + * OPTIONAL: some simple statistics + * a bitrate histogram to visualize the distribution of used frame sizes + * a stereo mode histogram to visualize the distribution of used stereo + * modes, useful in joint-stereo mode only + * 0: LR left-right encoded + * 1: LR-I left-right and intensity encoded (currently not supported) + * 2: MS mid-side encoded + * 3: MS-I mid-side and intensity encoded (currently not supported) + * + * attention: don't call them after lame_encode_finish + * suggested: lame_encode_flush -> lame_*_hist -> lame_close + */ + +void CDECL lame_bitrate_hist( + const lame_global_flags *const gfp, + int bitrate_count[14] ); +void CDECL lame_bitrate_kbps( + const lame_global_flags *const gfp, + int bitrate_kbps [14] ); +void CDECL lame_stereo_mode_hist( + const lame_global_flags *const gfp, + int stereo_mode_count[4] ); + +void CDECL lame_bitrate_stereo_mode_hist ( + const lame_global_flags * const gfp, + int bitrate_stmode_count [14] [4] ); + +void CDECL lame_block_type_hist ( + const lame_global_flags * const gfp, + int btype_count[6] ); + +void CDECL lame_bitrate_block_type_hist ( + const lame_global_flags * const gfp, + int bitrate_btype_count[14][6] ); + + +/* + * OPTIONAL: + * lame_mp3_tags_fid will append a Xing VBR tag to the mp3 file with file + * pointer fid. These calls perform forward and backwards seeks, so make + * sure fid is a real file. Make sure lame_encode_flush has been called, + * and all mp3 data has been written to the file before calling this + * function. + * NOTE: + * if VBR tags are turned off by the user, or turned off by LAME because + * the output is not a regular file, this call does nothing +*/ +void CDECL lame_mp3_tags_fid(lame_global_flags *,FILE* fid); + + +/* + * REQUIRED: + * final call to free all remaining buffers + */ +int CDECL lame_close (lame_global_flags *); + +/* + * OBSOLETE: + * lame_encode_finish combines lame_encode_flush() and lame_close() in + * one call. However, once this call is made, the statistics routines + * will no longer work because the data will have been cleared, and + * lame_mp3_tags_fid() cannot be called to add data to the VBR header + */ +int CDECL lame_encode_finish( + lame_global_flags* gfp, + unsigned char* mp3buf, + int size ); + + + + + + + +/********************************************************************* + * + * decoding + * + * a simple interface to mpglib, part of mpg123, is also included if + * libmp3lame is compiled with HAVE_MPGLIB + * + *********************************************************************/ +typedef struct { + int header_parsed; /* 1 if header was parsed and following data was + computed */ + int stereo; /* number of channels */ + int samplerate; /* sample rate */ + int bitrate; /* bitrate */ + int mode; /* mp3 frame type */ + int mode_ext; /* mp3 frame type */ + int framesize; /* number of samples per mp3 frame */ + + /* this data is only computed if mpglib detects a Xing VBR header */ + unsigned long nsamp; /* number of samples in mp3 file. */ + int totalframes; /* total number of frames in mp3 file */ + + /* this data is not currently computed by the mpglib routines */ + int framenum; /* frames decoded counter */ +} mp3data_struct; + + +/* required call to initialize decoder + * NOTE: the decoder should not be used when encoding is performed + * with decoding on the fly */ +int CDECL lame_decode_init(void); + +/********************************************************************* + * input 1 mp3 frame, output (maybe) pcm data. + * + * nout = lame_decode(mp3buf,len,pcm_l,pcm_r); + * + * input: + * len : number of bytes of mp3 data in mp3buf + * mp3buf[len] : mp3 data to be decoded + * + * output: + * nout: -1 : decoding error + * 0 : need more data before we can complete the decode + * >0 : returned 'nout' samples worth of data in pcm_l,pcm_r + * pcm_l[nout] : left channel data + * pcm_r[nout] : right channel data + * + *********************************************************************/ +int CDECL lame_decode( + unsigned char * mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode, and also returns mp3 header data */ +int CDECL lame_decode_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode, but returns at most one frame */ +int CDECL lame_decode1( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[] ); + +/* same as lame_decode1, but returns at most one frame and mp3 header data */ +int CDECL lame_decode1_headers( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data ); + +/* same as lame_decode1_headers, but also returns enc_delay and enc_padding + from VBR Info tag, (-1 if no info tag was found) */ +int CDECL lame_decode1_headersB( + unsigned char* mp3buf, + int len, + short pcm_l[], + short pcm_r[], + mp3data_struct* mp3data, + int *enc_delay, + int *enc_padding ); + + +/* cleanup call to exit decoder */ +int CDECL lame_decode_exit(void); + + + +/********************************************************************* + * + * id3tag stuff + * + *********************************************************************/ + +/* + * id3tag.h -- Interface to write ID3 version 1 and 2 tags. + * + * Copyright (C) 2000 Don Melton. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +/* utility to obtain alphabetically sorted list of genre names with numbers */ +extern void id3tag_genre_list( + void (*handler)(int, const char *, void *), + void* cookie); + +extern void id3tag_init (lame_global_flags *gfp); + +/* force addition of version 2 tag */ +extern void id3tag_add_v2 (lame_global_flags *gfp); + +/* add only a version 1 tag */ +extern void id3tag_v1_only (lame_global_flags *gfp); + +/* add only a version 2 tag */ +extern void id3tag_v2_only (lame_global_flags *gfp); + +/* pad version 1 tag with spaces instead of nulls */ +extern void id3tag_space_v1 (lame_global_flags *gfp); + +/* pad version 2 tag with extra 128 bytes */ +extern void id3tag_pad_v2 (lame_global_flags *gfp); + +extern void id3tag_set_title( + lame_global_flags* gfp, + const char* title ); +extern void id3tag_set_artist( + lame_global_flags* gfp, + const char* artist ); +extern void id3tag_set_album( + lame_global_flags* gfp, + const char* album ); +extern void id3tag_set_year( + lame_global_flags* gfp, + const char* year ); +extern void id3tag_set_comment( + lame_global_flags* gfp, + const char* comment ); +extern void id3tag_set_track( + lame_global_flags* gfp, + const char* track ); + +/* return non-zero result if genre name or number is invalid */ +extern int id3tag_set_genre( + lame_global_flags* gfp, + const char* genre ); + +/*********************************************************************** +* +* list of valid bitrates [kbps] & sample frequencies [Hz]. +* first index: 0: MPEG-2 values (sample frequencies 16...24 kHz) +* 1: MPEG-1 values (sample frequencies 32...48 kHz) +* 2: MPEG-2.5 values (sample frequencies 8...12 kHz) +***********************************************************************/ +extern const int bitrate_table [3] [16]; +extern const int samplerate_table [3] [ 4]; + + + +/* maximum size of mp3buffer needed if you encode at most 1152 samples for + each call to lame_encode_buffer. see lame_encode_buffer() below + (LAME_MAXMP3BUFFER is now obsolete) */ +#define LAME_MAXMP3BUFFER 16384 + + +typedef enum { + LAME_OKAY = 0, + LAME_NOERROR = 0, + LAME_GENERICERROR = -1, + LAME_NOMEM = -10, + LAME_BADBITRATE = -11, + LAME_BADSAMPFREQ = -12, + LAME_INTERNALERROR = -13, + + FRONTEND_READERROR = -80, + FRONTEND_WRITEERROR = -81, + FRONTEND_FILETOOLARGE = -82 + +} lame_errorcodes_t; + +#if defined(__cplusplus) +} +#endif +#endif /* LAME_LAME_H */ + diff --git a/ltmain.sh b/ltmain.sh new file mode 100755 index 0000000..27d498a --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,6956 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.26 +TIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)" + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + extracted_serial=`expr $extracted_serial + 1` + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + echo "\ +$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP + +Copyright (C) 2008 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.[fF][09]?) xform=[fF][09]. ;; + *.for) xform=for ;; + *.java) xform=java ;; + *.obj) xform=obj ;; + *.sx) xform=sx ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$deplibdir/$depdepl" ; then + depdepl="$deplibdir/$depdepl" + elif test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + else + # Can't find it, oh well... + depdepl= + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + case " $deplibs" in + *\ -l* | *\ -L*) + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; + esac + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + major=`expr $current - $age` + else + major=`expr $current - $age + 1` + fi + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + case $archive_cmds in + *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; + *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; + esac + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + case " $deplibs" in + *\ -l* | *\ -L*) + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; + esac + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + else + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \$*\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` + else + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/m4/.svn/all-wcprops b/m4/.svn/all-wcprops new file mode 100644 index 0000000..f21148e --- /dev/null +++ b/m4/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 30 +/!svn/ver/355/monitor/trunk/m4 +END +alsa.m4 +K 25 +svn:wc:ra_dav:version-url +V 38 +/!svn/ver/173/monitor/trunk/m4/alsa.m4 +END +lua.m4 +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/355/monitor/trunk/m4/lua.m4 +END diff --git a/m4/.svn/entries b/m4/.svn/entries new file mode 100644 index 0000000..f6ff7d6 --- /dev/null +++ b/m4/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/m4 +http://svn.monitord.de + + + +2009-08-11T15:38:02.181694Z +355 +buebchen + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +alsa.m4 +file + + + + +2012-01-23T14:07:01.526478Z +11acbca20b338708d5b99e1ab2f43af7 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4197 + +lua.m4 +file + + + + +2012-01-23T14:07:01.526478Z +826277db7e05147d09765637f09d3d67 +2009-08-11T15:38:02.181694Z +355 +buebchen + + + + + + + + + + + + + + + + + + + + + +6800 + diff --git a/m4/.svn/text-base/alsa.m4.svn-base b/m4/.svn/text-base/alsa.m4.svn-base new file mode 100644 index 0000000..ec053d5 --- /dev/null +++ b/m4/.svn/text-base/alsa.m4.svn-base @@ -0,0 +1,138 @@ +dnl Configure Paths for Alsa +dnl Some modifications by Richard Boulton +dnl Christopher Lansdown +dnl Jaroslav Kysela +dnl Last modification: $Id: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp $ +dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. +dnl enables arguments --with-alsa-prefix= +dnl --with-alsa-enc-prefix= +dnl --disable-alsatest +dnl +dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, +dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. +dnl +AC_DEFUN([AM_PATH_ALSA], +[dnl Save the original CFLAGS, LDFLAGS, and LIBS +alsa_save_CFLAGS="$CFLAGS" +alsa_save_LDFLAGS="$LDFLAGS" +alsa_save_LIBS="$LIBS" +alsa_found=yes + +dnl +dnl Get the cflags and libraries for alsa +dnl +AC_ARG_WITH(alsa-prefix, +[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], +[alsa_prefix="$withval"], [alsa_prefix=""]) + +AC_ARG_WITH(alsa-inc-prefix, +[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], +[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) + +dnl FIXME: this is not yet implemented +AC_ARG_ENABLE(alsatest, +[ --disable-alsatest Do not try to compile and run a test Alsa program], +[enable_alsatest="$enableval"], +[enable_alsatest=yes]) + +dnl Add any special include directories +AC_MSG_CHECKING(for ALSA CFLAGS) +if test "$alsa_inc_prefix" != "" ; then + ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" + CFLAGS="$CFLAGS -I$alsa_inc_prefix" +fi +AC_MSG_RESULT($ALSA_CFLAGS) +CFLAGS="$alsa_save_CFLAGS" + +dnl add any special lib dirs +AC_MSG_CHECKING(for ALSA LDFLAGS) +if test "$alsa_prefix" != "" ; then + ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" + LDFLAGS="$LDFLAGS $ALSA_LIBS" +fi + +dnl add the alsa library +ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" +LIBS="$ALSA_LIBS $LIBS" +AC_MSG_RESULT($ALSA_LIBS) + +dnl Check for a working version of libasound that is of the right version. +min_alsa_version=ifelse([$1], ,0.1.1,$1) +AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) +no_alsa="" + alsa_min_major_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + alsa_min_minor_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + alsa_min_micro_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + +AC_LANG_SAVE +AC_LANG_C +AC_TRY_COMPILE([ +#include +], [ +/* ensure backward compatibility */ +#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) +#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR +#endif +#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) +#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR +#endif +#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) +#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR +#endif + +# if(SND_LIB_MAJOR > $alsa_min_major_version) + exit(0); +# else +# if(SND_LIB_MAJOR < $alsa_min_major_version) +# error not present +# endif + +# if(SND_LIB_MINOR > $alsa_min_minor_version) + exit(0); +# else +# if(SND_LIB_MINOR < $alsa_min_minor_version) +# error not present +# endif + +# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) +# error not present +# endif +# endif +# endif +exit(0); +], + [AC_MSG_RESULT(found.)], + [AC_MSG_RESULT(not present.) + ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)]) + alsa_found=no] +) +AC_LANG_RESTORE + +dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. +if test "x$enable_alsatest" = "xyes"; then +AC_CHECK_LIB([asound], [snd_ctl_open],, + [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) + alsa_found=no] +) +fi + +LDFLAGS="$alsa_save_LDFLAGS" +LIBS="$alsa_save_LIBS" + +if test "x$alsa_found" = "xyes" ; then + ifelse([$2], , :, [$2]) +else + ALSA_CFLAGS="" + ALSA_LIBS="" + ifelse([$3], , :, [$3]) +fi + +dnl That should be it. Now just export out symbols: +AC_SUBST(ALSA_CFLAGS) +AC_SUBST(ALSA_LIBS) +]) + diff --git a/m4/.svn/text-base/lua.m4.svn-base b/m4/.svn/text-base/lua.m4.svn-base new file mode 100644 index 0000000..3df2627 --- /dev/null +++ b/m4/.svn/text-base/lua.m4.svn-base @@ -0,0 +1,196 @@ +# =========================================================================== +# http://www.nongnu.org/autoconf-archive/lua.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_WITH_LUA +# AX_LUA_VERSION (MIN-VERSION, [TOO-BIG-VERSION]) +# AX_LUA_HEADERS +# AX_LUA_LIBS +# AX_LUA_LIB_VERSION (MIN-VERSION, [TOO-BIG-VERSION]) +# +# DESCRIPTION +# +# Detect Lua interpreter, headers and libraries, optionally enforcing a +# particular range of versions. +# +# AX_WITH_LUA searches for Lua interpreter and defines LUA if found. +# +# AX_LUA_VERSION checks that the version of Lua is at least MIN-VERSION +# and less than TOO-BIG-VERSION, if given. +# +# AX_LUA_HEADERS searches for Lua headers and defines HAVE_LUA_H and +# HAVE_LUALIB_H if found, and defines LUA_INCLUDE to the preprocessor +# flags needed, if any. +# +# AX_LUA_LIBS searches for Lua libraries and defines LUA_LIB if found. +# +# AX_LUA_LIB_VERSION checks that the Lua libraries' version is at least +# MIN-VERSION, and less than TOO-BIG-VERSION, if given. +# +# Versions are specified as three-digit integers whose first digit is the +# major version and last two are the minor version (the same format as +# LUA_VERSION_NUM in lua.h); e.g. 501 for Lua 5.1. The revision (e.g. the +# "3" in "5.1.3") is ignored. +# +# The following options are added by these macros: +# +# --with-lua-prefix=DIR Lua files are in DIR. +# --with-lua-suffix=ARG Lua binaries and library files are +# suffixed with ARG. +# --with-lua-includes=DIR Lua include files are in DIR. +# --with-lua-libraries=DIR Lua library files are in DIR. +# +# LICENSE +# +# Copyright (c) 2009 Reuben Thomas +# Copyright (c) 2009 Matthieu Moy +# Copyright (c) 2009 Tom Payne +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +dnl Helper function to declare extra options +AC_DEFUN([_AX_LUA_OPTS], + [AC_ARG_WITH([lua-prefix], + [AS_HELP_STRING([--with-lua-prefix=DIR], + [Lua files are in DIR])]) + AC_ARG_WITH([lua-suffix], + [AS_HELP_STRING([--with-lua-suffix=ARG], + [Lua binary and library files are suffixed with ARG])]) + AC_ARG_WITH([lua-includes], + [AS_HELP_STRING([--with-lua-includes=DIR], + [Lua include files are in DIR])]) + AC_ARG_WITH([lua-libraries], + [AS_HELP_STRING([--with-lua-libraries=DIR], + [Lua library files are in DIR])])])dnl + +AC_DEFUN([AX_WITH_LUA], + [_AX_LUA_OPTS + if test "x$with_lua_prefix" = x; then + lua_search_path="$PATH" + else + lua_search_path="$with_lua_prefix/bin" + fi + if test "x$LUA" = x; then + AC_PATH_PROG([LUA], [lua$with_lua_suffix], [], [$lua_search_path]) + fi])dnl + +dnl Helper function to parse minimum & maximum versions +AC_DEFUN([_AX_LUA_VERSIONS], + [lua_min_version=$1 + lua_max_version=$2 + if test "x$lua_min_version" = x; then + lua_min_version=0 + fi + if test "x$lua_max_version" = x; then + lua_max_version=1000 + fi]) + +AC_DEFUN([AX_LUA_VERSION], + [_AX_LUA_OPTS + AC_MSG_CHECKING([Lua version is in range $1 <= v < $2]) + _AX_LUA_VERSIONS($1, $2) + if test "x$LUA" != x; then + lua_text_version=$($LUA -v 2>&1 | head -n 1 | cut -d' ' -f2) + case $lua_text_version in + 5.1*) + lua_version=501 + ;; + 5.0*) + lua_version=500 + ;; + 4.0*) + lua_version=400 + ;; + *) + lua_version=-1 + ;; + esac + if test $lua_version -ge "$lua_min_version" -a $lua_version -lt "$lua_max_version"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_FAILURE([Lua version not in desired range.]) + fi + else + AC_MSG_RESULT([no]) + AC_MSG_FAILURE([Lua version not in desired range.]) + fi])dnl + +AC_DEFUN([AX_LUA_HEADERS], + [_AX_LUA_OPTS + if test "x$with_lua_includes" != x; then + LUA_INCLUDE="-I$with_lua_includes" + elif test "x$with_lua_prefix" != x; then + LUA_INCLUDE="-I$with_lua_prefix/include" + fi + LUA_OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $LUA_INCLUDE" + AC_CHECK_HEADERS([lua.h lualib.h]) + CPPFLAGS="$LUA_OLD_CPPFLAGS"])dnl + +AC_DEFUN([AX_LUA_LIBS], + [_AX_LUA_OPTS + if test "x$with_lua_libraries" != x; then + LUA_LIB="-L$with_lua_libraries" + elif test "x$with_lua_prefix" != x; then + LUA_LIB="-L$with_lua_prefix/lib" + fi + AC_CHECK_LIB([m], [exp], [lua_extra_libs="$lua_extra_libs -lm"], []) + AC_CHECK_LIB([dl], [dlopen], [lua_extra_libs="$lua_extra_libs -ldl"], []) + AC_CHECK_LIB([lua$with_lua_suffix], + [lua_call], + [LUA_LIB="$LUA_LIB -llua$with_lua_suffix $lua_extra_libs"], + [], + [$LUA_LIB $lua_extra_libs])])dnl + +AC_DEFUN([AX_LUA_LIB_VERSION], + [_AX_LUA_OPTS + AC_MSG_CHECKING([liblua version is in range $1 <= v < $2]) + _AX_LUA_VERSIONS($1, $2) + LUA_OLD_LIBS="$LIBS" + LIBS="$LIBS $LUA_LIB" + LUA_OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $LUA_INCLUDE" + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +int main() +{ + printf("(found %s, %d)... ", LUA_VERSION, LUA_VERSION_NUM); + if (LUA_VERSION_NUM >= $lua_min_version && LUA_VERSION_NUM < $lua_max_version) + exit(EXIT_SUCCESS); + exit(EXIT_FAILURE); +} +]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_FAILURE([Lua libraries version not in desired range])]) + LIBS="$LUA_OLD_LIBS" + CPPFLAGS="$LUA_OLD_CPPFLAGS"])dnl diff --git a/m4/alsa.m4 b/m4/alsa.m4 new file mode 100644 index 0000000..ec053d5 --- /dev/null +++ b/m4/alsa.m4 @@ -0,0 +1,138 @@ +dnl Configure Paths for Alsa +dnl Some modifications by Richard Boulton +dnl Christopher Lansdown +dnl Jaroslav Kysela +dnl Last modification: $Id: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp $ +dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. +dnl enables arguments --with-alsa-prefix= +dnl --with-alsa-enc-prefix= +dnl --disable-alsatest +dnl +dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, +dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. +dnl +AC_DEFUN([AM_PATH_ALSA], +[dnl Save the original CFLAGS, LDFLAGS, and LIBS +alsa_save_CFLAGS="$CFLAGS" +alsa_save_LDFLAGS="$LDFLAGS" +alsa_save_LIBS="$LIBS" +alsa_found=yes + +dnl +dnl Get the cflags and libraries for alsa +dnl +AC_ARG_WITH(alsa-prefix, +[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], +[alsa_prefix="$withval"], [alsa_prefix=""]) + +AC_ARG_WITH(alsa-inc-prefix, +[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], +[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) + +dnl FIXME: this is not yet implemented +AC_ARG_ENABLE(alsatest, +[ --disable-alsatest Do not try to compile and run a test Alsa program], +[enable_alsatest="$enableval"], +[enable_alsatest=yes]) + +dnl Add any special include directories +AC_MSG_CHECKING(for ALSA CFLAGS) +if test "$alsa_inc_prefix" != "" ; then + ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" + CFLAGS="$CFLAGS -I$alsa_inc_prefix" +fi +AC_MSG_RESULT($ALSA_CFLAGS) +CFLAGS="$alsa_save_CFLAGS" + +dnl add any special lib dirs +AC_MSG_CHECKING(for ALSA LDFLAGS) +if test "$alsa_prefix" != "" ; then + ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" + LDFLAGS="$LDFLAGS $ALSA_LIBS" +fi + +dnl add the alsa library +ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" +LIBS="$ALSA_LIBS $LIBS" +AC_MSG_RESULT($ALSA_LIBS) + +dnl Check for a working version of libasound that is of the right version. +min_alsa_version=ifelse([$1], ,0.1.1,$1) +AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) +no_alsa="" + alsa_min_major_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + alsa_min_minor_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + alsa_min_micro_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + +AC_LANG_SAVE +AC_LANG_C +AC_TRY_COMPILE([ +#include +], [ +/* ensure backward compatibility */ +#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) +#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR +#endif +#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) +#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR +#endif +#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) +#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR +#endif + +# if(SND_LIB_MAJOR > $alsa_min_major_version) + exit(0); +# else +# if(SND_LIB_MAJOR < $alsa_min_major_version) +# error not present +# endif + +# if(SND_LIB_MINOR > $alsa_min_minor_version) + exit(0); +# else +# if(SND_LIB_MINOR < $alsa_min_minor_version) +# error not present +# endif + +# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) +# error not present +# endif +# endif +# endif +exit(0); +], + [AC_MSG_RESULT(found.)], + [AC_MSG_RESULT(not present.) + ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)]) + alsa_found=no] +) +AC_LANG_RESTORE + +dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. +if test "x$enable_alsatest" = "xyes"; then +AC_CHECK_LIB([asound], [snd_ctl_open],, + [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) + alsa_found=no] +) +fi + +LDFLAGS="$alsa_save_LDFLAGS" +LIBS="$alsa_save_LIBS" + +if test "x$alsa_found" = "xyes" ; then + ifelse([$2], , :, [$2]) +else + ALSA_CFLAGS="" + ALSA_LIBS="" + ifelse([$3], , :, [$3]) +fi + +dnl That should be it. Now just export out symbols: +AC_SUBST(ALSA_CFLAGS) +AC_SUBST(ALSA_LIBS) +]) + diff --git a/m4/lua.m4 b/m4/lua.m4 new file mode 100644 index 0000000..3df2627 --- /dev/null +++ b/m4/lua.m4 @@ -0,0 +1,196 @@ +# =========================================================================== +# http://www.nongnu.org/autoconf-archive/lua.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_WITH_LUA +# AX_LUA_VERSION (MIN-VERSION, [TOO-BIG-VERSION]) +# AX_LUA_HEADERS +# AX_LUA_LIBS +# AX_LUA_LIB_VERSION (MIN-VERSION, [TOO-BIG-VERSION]) +# +# DESCRIPTION +# +# Detect Lua interpreter, headers and libraries, optionally enforcing a +# particular range of versions. +# +# AX_WITH_LUA searches for Lua interpreter and defines LUA if found. +# +# AX_LUA_VERSION checks that the version of Lua is at least MIN-VERSION +# and less than TOO-BIG-VERSION, if given. +# +# AX_LUA_HEADERS searches for Lua headers and defines HAVE_LUA_H and +# HAVE_LUALIB_H if found, and defines LUA_INCLUDE to the preprocessor +# flags needed, if any. +# +# AX_LUA_LIBS searches for Lua libraries and defines LUA_LIB if found. +# +# AX_LUA_LIB_VERSION checks that the Lua libraries' version is at least +# MIN-VERSION, and less than TOO-BIG-VERSION, if given. +# +# Versions are specified as three-digit integers whose first digit is the +# major version and last two are the minor version (the same format as +# LUA_VERSION_NUM in lua.h); e.g. 501 for Lua 5.1. The revision (e.g. the +# "3" in "5.1.3") is ignored. +# +# The following options are added by these macros: +# +# --with-lua-prefix=DIR Lua files are in DIR. +# --with-lua-suffix=ARG Lua binaries and library files are +# suffixed with ARG. +# --with-lua-includes=DIR Lua include files are in DIR. +# --with-lua-libraries=DIR Lua library files are in DIR. +# +# LICENSE +# +# Copyright (c) 2009 Reuben Thomas +# Copyright (c) 2009 Matthieu Moy +# Copyright (c) 2009 Tom Payne +# +# This program is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation, either version 3 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +dnl Helper function to declare extra options +AC_DEFUN([_AX_LUA_OPTS], + [AC_ARG_WITH([lua-prefix], + [AS_HELP_STRING([--with-lua-prefix=DIR], + [Lua files are in DIR])]) + AC_ARG_WITH([lua-suffix], + [AS_HELP_STRING([--with-lua-suffix=ARG], + [Lua binary and library files are suffixed with ARG])]) + AC_ARG_WITH([lua-includes], + [AS_HELP_STRING([--with-lua-includes=DIR], + [Lua include files are in DIR])]) + AC_ARG_WITH([lua-libraries], + [AS_HELP_STRING([--with-lua-libraries=DIR], + [Lua library files are in DIR])])])dnl + +AC_DEFUN([AX_WITH_LUA], + [_AX_LUA_OPTS + if test "x$with_lua_prefix" = x; then + lua_search_path="$PATH" + else + lua_search_path="$with_lua_prefix/bin" + fi + if test "x$LUA" = x; then + AC_PATH_PROG([LUA], [lua$with_lua_suffix], [], [$lua_search_path]) + fi])dnl + +dnl Helper function to parse minimum & maximum versions +AC_DEFUN([_AX_LUA_VERSIONS], + [lua_min_version=$1 + lua_max_version=$2 + if test "x$lua_min_version" = x; then + lua_min_version=0 + fi + if test "x$lua_max_version" = x; then + lua_max_version=1000 + fi]) + +AC_DEFUN([AX_LUA_VERSION], + [_AX_LUA_OPTS + AC_MSG_CHECKING([Lua version is in range $1 <= v < $2]) + _AX_LUA_VERSIONS($1, $2) + if test "x$LUA" != x; then + lua_text_version=$($LUA -v 2>&1 | head -n 1 | cut -d' ' -f2) + case $lua_text_version in + 5.1*) + lua_version=501 + ;; + 5.0*) + lua_version=500 + ;; + 4.0*) + lua_version=400 + ;; + *) + lua_version=-1 + ;; + esac + if test $lua_version -ge "$lua_min_version" -a $lua_version -lt "$lua_max_version"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_FAILURE([Lua version not in desired range.]) + fi + else + AC_MSG_RESULT([no]) + AC_MSG_FAILURE([Lua version not in desired range.]) + fi])dnl + +AC_DEFUN([AX_LUA_HEADERS], + [_AX_LUA_OPTS + if test "x$with_lua_includes" != x; then + LUA_INCLUDE="-I$with_lua_includes" + elif test "x$with_lua_prefix" != x; then + LUA_INCLUDE="-I$with_lua_prefix/include" + fi + LUA_OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $LUA_INCLUDE" + AC_CHECK_HEADERS([lua.h lualib.h]) + CPPFLAGS="$LUA_OLD_CPPFLAGS"])dnl + +AC_DEFUN([AX_LUA_LIBS], + [_AX_LUA_OPTS + if test "x$with_lua_libraries" != x; then + LUA_LIB="-L$with_lua_libraries" + elif test "x$with_lua_prefix" != x; then + LUA_LIB="-L$with_lua_prefix/lib" + fi + AC_CHECK_LIB([m], [exp], [lua_extra_libs="$lua_extra_libs -lm"], []) + AC_CHECK_LIB([dl], [dlopen], [lua_extra_libs="$lua_extra_libs -ldl"], []) + AC_CHECK_LIB([lua$with_lua_suffix], + [lua_call], + [LUA_LIB="$LUA_LIB -llua$with_lua_suffix $lua_extra_libs"], + [], + [$LUA_LIB $lua_extra_libs])])dnl + +AC_DEFUN([AX_LUA_LIB_VERSION], + [_AX_LUA_OPTS + AC_MSG_CHECKING([liblua version is in range $1 <= v < $2]) + _AX_LUA_VERSIONS($1, $2) + LUA_OLD_LIBS="$LIBS" + LIBS="$LIBS $LUA_LIB" + LUA_OLD_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $LUA_INCLUDE" + AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +int main() +{ + printf("(found %s, %d)... ", LUA_VERSION, LUA_VERSION_NUM); + if (LUA_VERSION_NUM >= $lua_min_version && LUA_VERSION_NUM < $lua_max_version) + exit(EXIT_SUCCESS); + exit(EXIT_FAILURE); +} +]])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_FAILURE([Lua libraries version not in desired range])]) + LIBS="$LUA_OLD_LIBS" + CPPFLAGS="$LUA_OLD_CPPFLAGS"])dnl diff --git a/missing b/missing new file mode 100644 index 0000000..1c8ff70 --- /dev/null +++ b/missing @@ -0,0 +1,367 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2006-05-10.23 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case $1 in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $1 in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100644 index 0000000..d2d5f21 --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,111 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" 1>&2 + exit 0 + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +case $dirmode in + '') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi + ;; + *) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# End: +# mkinstalldirs ends here diff --git a/monitord/.svn/all-wcprops b/monitord/.svn/all-wcprops new file mode 100644 index 0000000..d8c0351 --- /dev/null +++ b/monitord/.svn/all-wcprops @@ -0,0 +1,299 @@ +K 25 +svn:wc:ra_dav:version-url +V 36 +/!svn/ver/454/monitor/trunk/monitord +END +MonitorModulePocsag.h +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/435/monitor/trunk/monitord/MonitorModulePocsag.h +END +regexp.h +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/323/monitor/trunk/monitord/regexp.h +END +MonitorModuleZVEI.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/430/monitor/trunk/monitord/MonitorModuleZVEI.h +END +SocketThreadFMS32.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/418/monitor/trunk/monitord/SocketThreadFMS32.h +END +doxygen.config +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/323/monitor/trunk/monitord/doxygen.config +END +SocketThreadMonitord.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/418/monitor/trunk/monitord/SocketThreadMonitord.h +END +MonitorModulesResults.cpp +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/418/monitor/trunk/monitord/MonitorModulesResults.cpp +END +MonitorModuleFMS.cpp +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/446/monitor/trunk/monitord/MonitorModuleFMS.cpp +END +SndPipe.h +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/420/monitor/trunk/monitord/SndPipe.h +END +costab.cpp +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/323/monitor/trunk/monitord/costab.cpp +END +MonitorSignals.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/323/monitor/trunk/monitord/MonitorSignals.h +END +MonitorAudio.h +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/323/monitor/trunk/monitord/MonitorAudio.h +END +SocketThreadCrusader.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/418/monitor/trunk/monitord/SocketThreadCrusader.h +END +xmltools.cpp +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/323/monitor/trunk/monitord/xmltools.cpp +END +MonitorConfiguration.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/363/monitor/trunk/monitord/MonitorConfiguration.h +END +base64.cpp +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/323/monitor/trunk/monitord/base64.cpp +END +SocketServer.h +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/418/monitor/trunk/monitord/SocketServer.h +END +MonitorModules.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/323/monitor/trunk/monitord/MonitorModules.h +END +PluginThread.cpp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/450/monitor/trunk/monitord/PluginThread.cpp +END +lua.hpp +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/357/monitor/trunk/monitord/lua.hpp +END +MonitorModulePocsag512.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/361/monitor/trunk/monitord/MonitorModulePocsag512.h +END +memlock.cpp +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/323/monitor/trunk/monitord/memlock.cpp +END +MonitorModulePocsag.cpp +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/418/monitor/trunk/monitord/MonitorModulePocsag.cpp +END +regexp.cpp +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/323/monitor/trunk/monitord/regexp.cpp +END +MonitorModuleZVEI.cpp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/433/monitor/trunk/monitord/MonitorModuleZVEI.cpp +END +SocketThreadFMS32.cpp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/418/monitor/trunk/monitord/SocketThreadFMS32.cpp +END +Monitor.h +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/418/monitor/trunk/monitord/Monitor.h +END +SocketThreadMonitord.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/445/monitor/trunk/monitord/SocketThreadMonitord.cpp +END +MonitorExceptions.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/321/monitor/trunk/monitord/MonitorExceptions.h +END +MonitorModulePocsag1200.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/323/monitor/trunk/monitord/MonitorModulePocsag1200.h +END +SndPipe.cpp +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/447/monitor/trunk/monitord/SndPipe.cpp +END +MonitorLogging.h +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/419/monitor/trunk/monitord/MonitorLogging.h +END +MonitorModulesResults.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/418/monitor/trunk/monitord/MonitorModulesResults.h +END +MonitorSignals.cpp +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/433/monitor/trunk/monitord/MonitorSignals.cpp +END +MonitorModuleFMS.h +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/357/monitor/trunk/monitord/MonitorModuleFMS.h +END +SocketThreadCrusader.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/418/monitor/trunk/monitord/SocketThreadCrusader.cpp +END +MonitorAudio.cpp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/323/monitor/trunk/monitord/MonitorAudio.cpp +END +SocketServer.cpp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/452/monitor/trunk/monitord/SocketServer.cpp +END +MonitorConfiguration.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/447/monitor/trunk/monitord/MonitorConfiguration.cpp +END +MonitorModules.cpp +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/323/monitor/trunk/monitord/MonitorModules.cpp +END +MonitorModulePocsag512.cpp +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/363/monitor/trunk/monitord/MonitorModulePocsag512.cpp +END +convert.h +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/327/monitor/trunk/monitord/convert.h +END +xmltools.h +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/323/monitor/trunk/monitord/xmltools.h +END +Monitor.cpp +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/449/monitor/trunk/monitord/Monitor.cpp +END +base64.h +K 25 +svn:wc:ra_dav:version-url +V 45 +/!svn/ver/323/monitor/trunk/monitord/base64.h +END +ReadMe.txt +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/321/monitor/trunk/monitord/ReadMe.txt +END +PluginThread.h +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/363/monitor/trunk/monitord/PluginThread.h +END +memlock.h +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/323/monitor/trunk/monitord/memlock.h +END +MonitorModulePocsag1200.cpp +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/435/monitor/trunk/monitord/MonitorModulePocsag1200.cpp +END diff --git a/monitord/.svn/dir-prop-base b/monitord/.svn/dir-prop-base new file mode 100644 index 0000000..cef4fba --- /dev/null +++ b/monitord/.svn/dir-prop-base @@ -0,0 +1,14 @@ +K 10 +svn:ignore +V 76 +.deps +.libs +.dirstamp +monitord +*.mp3 +rec +test.cpp +monitord.xml +monitord.exe + +END diff --git a/monitord/.svn/entries b/monitord/.svn/entries new file mode 100644 index 0000000..5e0692d --- /dev/null +++ b/monitord/.svn/entries @@ -0,0 +1,1706 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/monitord +http://svn.monitord.de + + + +2011-05-06T19:36:29.013037Z +454 +mdi +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +MonitorModulePocsag.h +file + + + + +2012-01-23T14:07:03.426484Z +c859a31942405210bdca7e87c9fd6d7b +2010-11-30T11:07:47.508667Z +435 +mdi +has-props + + + + + + + + + + + + + + + + + + + + +4474 + +regexp.h +file + + + + +2012-01-23T14:07:03.431521Z +7f517bd2e549ff8b31be482acfd78a53 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +3128 + +MonitorModuleZVEI.h +file + + + + +2012-01-23T14:07:03.432498Z +0cb3000abd0d0cc8f7d0ec1b70bb8812 +2010-05-19T14:43:07.767092Z +430 +mdi +has-props + + + + + + + + + + + + + + + + + + + + +2936 + +SocketThreadFMS32.h +file + + + + +2012-01-23T14:07:03.432498Z +65e65879299b215179120d16f2ca0c9b +2010-02-10T19:20:54.536647Z +418 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +678 + +doxygen.config +file + + + + +2012-01-23T14:07:03.433484Z +e3c815a74bc6964a5a3c9ddb3bb70d0c +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +59384 + +SocketThreadMonitord.h +file + + + + +2012-01-23T14:07:03.433484Z +51aaab2bf57130d2e37f47169fdeefa9 +2010-02-10T19:20:54.536647Z +418 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +736 + +MonitorModulesResults.cpp +file + + + + +2012-01-23T14:07:03.433484Z +311d6cca241fbb6ac869912154b9921f +2010-02-10T19:20:54.536647Z +418 +dekarl + + + + + + + + + + + + + + + + + + + + + +2940 + +MonitorModuleFMS.cpp +file + + + + +2012-01-23T14:07:03.435483Z +53dd4027a12ddbfa1c04270ca42ad6fd +2011-03-31T22:24:57.117068Z +446 +mdi + + + + + + + + + + + + + + + + + + + + + +32948 + +SndPipe.h +file + + + + +2012-01-23T14:07:03.435483Z +3d80090b5d3d03989d9a8d5463097511 +2010-02-11T08:13:13.971344Z +420 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2154 + +costab.cpp +file + + + + +2012-01-23T14:07:03.435483Z +e2d2c64d53aa2868780194c0f694b979 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +23449 + +MonitorSignals.h +file + + + + +2012-01-23T14:07:03.436492Z +9c2b95da08530cdeb30cffd60f583a80 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +662 + +SocketThreadCrusader.h +file + + + + +2012-01-23T14:07:03.437487Z +7758b618eeee91ee894429eb29bb15cc +2010-02-10T19:20:54.536647Z +418 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +717 + +MonitorAudio.h +file + + + + +2012-01-23T14:07:03.436492Z +ac99d74b04e8cc77d584647216d6ceb3 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2092 + +xmltools.cpp +file + + + + +2012-01-23T14:07:03.437487Z +ae49633494c84f4f8aebdac8c4e0e93b +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +933 + +MonitorConfiguration.h +file + + + + +2012-01-23T14:07:03.438491Z +bf0cf1753f8c951cfdbfe31cb56ec2b0 +2009-08-14T15:49:00.010161Z +363 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +2329 + +SocketServer.h +file + + + + +2012-01-23T14:07:03.438491Z +62502c3112ff402bbbdde78f3a5e6d75 +2010-02-10T19:20:54.536647Z +418 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4814 + +base64.cpp +file + + + + +2012-01-23T14:07:03.437487Z +9a81daf55ee4b9fd56d9f81e473f56f3 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +2963 + +MonitorModules.h +file + + + + +2012-01-23T14:07:03.439482Z +73a93f71145b41e52dc9ca87a7c5beff +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +5425 + +PluginThread.cpp +file + + + + +2012-01-23T14:07:03.439482Z +2660aa20ab1611d3f084da43f6fc161b +2011-04-29T11:58:55.203908Z +450 +cwh + + + + + + + + + + + + + + + + + + + + + +8554 + +lua.hpp +file + + + + +2012-01-23T14:07:03.439482Z +4a48f46c562251a934599a5dc565fb47 +2009-08-11T15:39:10.514881Z +357 +buebchen + + + + + + + + + + + + + + + + + + + + + +305 + +MonitorModulePocsag512.h +file + + + + +2012-01-23T14:07:03.439482Z +19b853ae1f4e98ca301463ebcdf728bc +2009-08-12T23:34:16.869449Z +361 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +2721 + +memlock.cpp +file + + + + +2012-01-23T14:07:03.439482Z +f520a309ff0cf3afdf4e3b86b30d2217 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +1433 + +generators +dir + +MonitorModulePocsag.cpp +file + + + + +2012-01-23T14:07:03.440482Z +f8aa5d5ea7760c2de71e8db52ed7aac6 +2010-02-10T19:20:54.536647Z +418 +dekarl + + + + + + + + + + + + + + + + + + + + + +13700 + +regexp.cpp +file + + + + +2012-01-23T14:07:03.440482Z +5d36c401dd99375494a9960e95a82a94 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +20272 + +MonitorModuleZVEI.cpp +file + + + + +2012-01-23T14:07:03.441481Z +b967e2104ead956e6ef421acc3e16562 +2010-09-29T14:27:56.649062Z +433 +mdi + + + + + + + + + + + + + + + + + + + + + +23736 + +SocketThreadFMS32.cpp +file + + + + +2012-01-23T14:07:03.440482Z +26b1a7e7f541e1d983f79641cc700052 +2010-02-10T19:20:54.536647Z +418 +dekarl + + + + + + + + + + + + + + + + + + + + + +4017 + +SocketThreadMonitord.cpp +file + + + + +2012-01-23T14:07:03.441481Z +b97448d0c453040baef547566759ba34 +2011-03-30T23:13:43.817560Z +445 +mdi + + + + + + + + + + + + + + + + + + + + + +11071 + +Monitor.h +file + + + + +2012-01-23T14:07:03.441481Z +a52ec63b0c3e050ce825923d2a723b6b +2010-02-10T19:20:54.536647Z +418 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +690 + +MonitorExceptions.h +file + + + + +2012-01-23T14:07:03.442482Z +b29e1c0f411bbba96eebbcd2e0146b5b +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +459 + +plugins +dir + +SndPipe.cpp +file + + + + +2012-01-23T14:07:03.442482Z +16c7e18cc9befd3a50806eca557f0453 +2011-03-31T23:39:10.993324Z +447 +mdi + + + + + + + + + + + + + + + + + + + + + +10432 + +MonitorModulePocsag1200.h +file + + + + +2012-01-23T14:07:03.442482Z +f3d96f0fd256e8a9e81d25be30d6d4a1 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2248 + +MonitorLogging.h +file + + + + +2012-01-23T14:07:03.443481Z +35449b6e691ab27aea552b5e8f894a25 +2010-02-10T19:56:44.666190Z +419 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4155 + +MonitorModulesResults.h +file + + + + +2012-01-23T14:07:03.443481Z +a35bb64fbd505f0864c112b5b2ffa86f +2010-02-10T19:20:54.536647Z +418 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2136 + +MonitorSignals.cpp +file + + + + +2012-01-23T14:07:03.444481Z +13ba6ee4d689118d158ae14f37cde685 +2010-09-29T14:27:56.649062Z +433 +mdi + + + + + + + + + + + + + + + + + + + + + +1594 + +MonitorModuleFMS.h +file + + + + +2012-01-23T14:07:03.444481Z +bde35d97593e02fb1f4f9129e2ee1804 +2009-08-11T15:39:10.514881Z +357 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +6485 + +SocketThreadCrusader.cpp +file + + + + +2012-01-23T14:07:03.448477Z +e8acf285165451c60774e49cb9a35394 +2010-02-10T19:20:54.536647Z +418 +dekarl + + + + + + + + + + + + + + + + + + + + + +6360 + +MonitorAudio.cpp +file + + + + +2012-01-23T14:07:03.451484Z +7c2db2fdb691024cfcbd3ab814c61c00 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +1602 + +SocketServer.cpp +file + + + + +2012-01-23T14:07:03.451484Z +4bbef92b188dac8c1cbbc57839c2bfe5 +2011-05-04T14:31:32.363875Z +452 +cwh + + + + + + + + + + + + + + + + + + + + + +19877 + +MonitorConfiguration.cpp +file + + + + +2012-01-23T14:07:03.451484Z +fec86a987282edc54ad0475653da424f +2011-03-31T23:39:10.993324Z +447 +mdi + + + + + + + + + + + + + + + + + + + + + +11558 + +MonitorModules.cpp +file + + + + +2012-01-23T14:07:03.452481Z +4726f8ddbb000a175acb243793230cf6 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +5803 + +posix +dir + +win32 +dir + +MonitorModulePocsag512.cpp +file + + + + +2012-01-23T14:07:03.452481Z +0626ec8cce224cba885169cfd0509705 +2009-08-14T15:49:00.010161Z +363 +buebchen + + + + + + + + + + + + + + + + + + + + + +8722 + +convert.h +file + + + + +2012-01-23T14:07:03.452481Z +cb903f92a5f8522b6bedeb46393a63ff +2008-07-23T22:06:29.877686Z +327 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +5595 + +xmltools.h +file + + + + +2012-01-23T14:07:03.453483Z +12f98c0b9e6750a9cda7be098d358706 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +372 + +Monitor.cpp +file + + + + +2012-01-23T14:07:03.453483Z +6096655c3e2aa89a3b2476cd1bf44761 +2011-04-01T22:46:05.149718Z +449 +mdi + + + + + + + + + + + + + + + + + + + + + +7318 + +base64.h +file + + + + +2012-01-23T14:07:03.453483Z +e23640710073ab24d40b8a0717cb1fa7 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +949 + +ReadMe.txt +file + + + + +2012-01-23T14:07:03.454481Z +cc810f6a067e7f076933722dac9049ec +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +6 + +PluginThread.h +file + + + + +2012-01-23T14:07:03.455482Z +c9e98ed3d8db28cff3ef5f2317f6ba8b +2009-08-14T15:49:00.010161Z +363 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +1535 + +memlock.h +file + + + + +2012-01-23T14:07:03.455482Z +e76b5fe8e9e09f439c53ec3a57e4cb16 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1095 + +MonitorModulePocsag1200.cpp +file + + + + +2012-01-23T14:07:03.455482Z +b407618d1133498aa1df81c77eb9b337 +2010-11-30T11:07:47.508667Z +435 +mdi + + + + + + + + + + + + + + + + + + + + + +8522 + diff --git a/monitord/.svn/prop-base/Monitor.h.svn-base b/monitord/.svn/prop-base/Monitor.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/Monitor.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorAudio.h.svn-base b/monitord/.svn/prop-base/MonitorAudio.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorAudio.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorConfiguration.h.svn-base b/monitord/.svn/prop-base/MonitorConfiguration.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorConfiguration.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorExceptions.h.svn-base b/monitord/.svn/prop-base/MonitorExceptions.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorExceptions.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorLogging.h.svn-base b/monitord/.svn/prop-base/MonitorLogging.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorLogging.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorModuleFMS.h.svn-base b/monitord/.svn/prop-base/MonitorModuleFMS.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorModuleFMS.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorModulePocsag.h.svn-base b/monitord/.svn/prop-base/MonitorModulePocsag.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorModulePocsag.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorModulePocsag1200.h.svn-base b/monitord/.svn/prop-base/MonitorModulePocsag1200.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorModulePocsag1200.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorModulePocsag512.h.svn-base b/monitord/.svn/prop-base/MonitorModulePocsag512.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorModulePocsag512.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorModuleZVEI.h.svn-base b/monitord/.svn/prop-base/MonitorModuleZVEI.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorModuleZVEI.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorModules.h.svn-base b/monitord/.svn/prop-base/MonitorModules.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorModules.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorModulesResults.h.svn-base b/monitord/.svn/prop-base/MonitorModulesResults.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorModulesResults.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/MonitorSignals.h.svn-base b/monitord/.svn/prop-base/MonitorSignals.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/MonitorSignals.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/PluginThread.h.svn-base b/monitord/.svn/prop-base/PluginThread.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/PluginThread.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/ReadMe.txt.svn-base b/monitord/.svn/prop-base/ReadMe.txt.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/monitord/.svn/prop-base/ReadMe.txt.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/monitord/.svn/prop-base/SndPipe.h.svn-base b/monitord/.svn/prop-base/SndPipe.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/SndPipe.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/SocketServer.h.svn-base b/monitord/.svn/prop-base/SocketServer.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/SocketServer.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/SocketThreadCrusader.h.svn-base b/monitord/.svn/prop-base/SocketThreadCrusader.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/SocketThreadCrusader.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/SocketThreadFMS32.h.svn-base b/monitord/.svn/prop-base/SocketThreadFMS32.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/SocketThreadFMS32.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/SocketThreadMonitord.h.svn-base b/monitord/.svn/prop-base/SocketThreadMonitord.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/SocketThreadMonitord.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/base64.h.svn-base b/monitord/.svn/prop-base/base64.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/base64.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/convert.h.svn-base b/monitord/.svn/prop-base/convert.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/convert.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/memlock.h.svn-base b/monitord/.svn/prop-base/memlock.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/memlock.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/regexp.h.svn-base b/monitord/.svn/prop-base/regexp.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/regexp.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/prop-base/xmltools.h.svn-base b/monitord/.svn/prop-base/xmltools.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/.svn/prop-base/xmltools.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/.svn/text-base/Monitor.cpp.svn-base b/monitord/.svn/text-base/Monitor.cpp.svn-base new file mode 100644 index 0000000..7b2c819 --- /dev/null +++ b/monitord/.svn/text-base/Monitor.cpp.svn-base @@ -0,0 +1,244 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Monitor.h" +#include "SocketServer.h" +#include "MonitorConfiguration.h" +#include "SocketThreadMonitord.h" + +#include "MonitorLogging.h" + +#ifdef PLUGINS +#include "plugins/mplugin.h" +#include "PluginThread.h" +#endif +#ifdef WIN32 +#include +#define usleep Sleep +#endif + +#include "lua.hpp" + +using namespace std ; + +void Monitor::CreateSocketServer(MonitorConfiguration *config) +{ + static SocketServer socketServer(config,0) ; + + static SocketServer fms32ProServer(config,1000) ; + fms32ProServer.m_ServerModus = SocketThread::fms32pro ; + + static SocketServer crusaderServer(config,2000) ; + crusaderServer.m_ServerModus = SocketThread::crusader ; + + socketServer.Start() ; + fms32ProServer.Start() ; + crusaderServer.Start() ; +} + + +void Monitor::Initialize (int argc, char *argv[]) +{ + m_bWantStop=false; + if ( memLockCreate( 12345, & s) < 0) { + ThrowMonitorException("memLockCreate failed") ; + } + + m_MonitorConfig.ParseCommandline(argc,argv) ; + m_MonitorConfig.ReadConfiguration(m_MonitorConfig.m_ConfigFile) ; + m_MonitorConfig.ParseCommandline(argc,argv) ; +} + +void initFileLogging(MonitorConfiguration *config) +{ + + if (!(config->m_sLogfile=="screen")) + { + FILE* pFile = fopen(config->m_sLogfile.c_str(), "a"); + Output2FILE::Stream() = pFile; + FILE_LOG(logINFO) << "monitord restarted - logging with loglevel " << config->m_sLoglevel; + } else { + FILE_LOG(logINFO) << "Logging with loglevel " << config->m_sLoglevel; + } + + FILELog::ReportingLevel() = FILELog::FromString(config->m_sLoglevel); +} + +int main(int argc, char** argv) +{ + Monitor m_monitor; + try { + m_monitor.Initialize (argc, argv); + initFileLogging(&m_monitor.m_MonitorConfig) ; + m_monitor.m_SignalStopped = new MonitorBlockingSignal(); + GlobalDispatcher = new MonitorResultsDispatcher(); + #ifdef WIN32 + /** + * Soll als Dienst ausgef�hrt werden ? + */ + + try + { + if (m_monitor.m_MonitorConfig.m_service_uninstall == true) { + FILE_LOG(logINFO) << PACKAGE_NAME << " wird als Dienst entfernt."; + /* uninstall service from service control daemon */ + MonitorService *m_MonitorService = new MonitorService(&m_monitor); + m_MonitorService->UnInstallService(); + delete m_MonitorService; + } else if (m_monitor.m_MonitorConfig.m_service_install == true) { + FILE_LOG(logINFO) << PACKAGE_NAME << " wird als Dienst eingerichtet."; + /* install service in service control daemon */ + MonitorService *m_MonitorService = new MonitorService(&m_monitor); + m_MonitorService->InstallService(); + delete m_MonitorService ; + } else { + if (m_monitor.m_MonitorConfig.m_service_run == true) { + FILE_LOG(logINFO) << PACKAGE_NAME << " startet als Dienst."; + /* running monitor as windows service application */ + MonitorService *m_MonitorService = new MonitorService(&m_monitor); + m_MonitorService->Run (); + delete m_MonitorService ; + } else { + #endif + /* running monitor as command line application */ + FILE_LOG(logINFO) << PACKAGE_STRING << " READY" ; + cout << PACKAGE_STRING << " running...\r\n"; + if (!(m_monitor.m_MonitorConfig.m_sLogfile == "screen")) { + cout << "Logging in Logfiles, keine weiteren Ausgaben hier."; + } + m_monitor.MainLoop (); + #ifdef WIN32 + } + } + } catch (MonitorServiceException(err)) + { + // FIXME: Dienste koennen nicht auf die Console schreiben, da siehe + // unsichtbar im Hintergrund laufen + FILE_LOG(logERROR) << err.what() ; + } + #endif + + } catch (MonitorException(err)) + { + FILE_LOG(logERROR) << err.what() ; + } +} + + +void Monitor::MainLoop() +{ + // Soundkarte initialisieren + InitSndCard() ; + + /********************************************************/ + + + static SocketServer socketServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,0) ; + socketServer.Start() ; + FILE_LOG(logINFO) << "monitord socketserver started" ; + + + static SocketServer fms32ProServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,1000) ; + fms32ProServer.m_ServerModus=SocketThread::fms32pro ; + fms32ProServer.Start() ; + FILE_LOG(logINFO) << "fms32pro socketserver started" ; + + static SocketServer crusaderServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,2000) ; + crusaderServer.m_ServerModus=SocketThread::crusader ; + crusaderServer.Start() ; + FILE_LOG(logINFO) << "crusader socketserver started" ; + + + /*******************************************************/ + + #ifdef PLUGINS + //GetPluginsManager().loadPlugin("plugins/.libs/libmplugin_mysql-0.dll",NULL); + GetPluginsManager().loadScriptFilter(m_MonitorConfig.m_pluginFilterFileName) ; + GetPluginsManager().loadPluginsFromConfigNode(&m_MonitorConfig.m_configDataPlugins); + FILE_LOG(logDEBUG) << "PluginManager started" ; + #endif + /*********************************************************/ + + while (!m_bWantStop) + { + /** + * Wer sich fragt, wo eigentlich denn die Arbeit gemacht wird: + * Die drei SocketServer sind eigenstaendige Threads. Die bedienen + * die TCP/IP Verbindungen und laufen unabhaegig. + * + * Die eigentliche (Ton) Auswertung erfolgt in jeweils einem Thread + * pro Soundkarte. Diese Threads werden im InitSndCard gestartet. + * + * Dann gibt es noch den GlobalDispatcher. Er ist auch ein eigenstaendiger + * Thread. Er wird von dem Auswerten mit ResultSets versorgt. Die Auswerter + * haben damit Ihren Teil erledigt. + * Der Dispatcher verteilt dann die Results an alle Sockets und Plugins (ohne die + * Auswerter zu blockieren) + * + */ + + usleep(100); + // Wie man sieht: hier gibt es im Moment nichts zu tun :- + } + + FILE_LOG(logINFO) << PACKAGE_NAME << " shutting down..." ; + StopSndCard() ; + + FILE_LOG(logINFO) << "stopping socketserver monitord"; + socketServer.m_bWantStop=true ; + FILE_LOG(logINFO) << "stopping socketserver FMS32"; + fms32ProServer.m_bWantStop=true ; + FILE_LOG(logINFO) << "stopping socketserver Crusader"; + crusaderServer.m_bWantStop=true ; + + usleep(1000) ; + m_SignalStopped->SetSignal() ; + usleep(500) ; + FILE_LOG(logINFO) << "all done. " << PACKAGE_NAME << " exiting"; +} + +void Monitor::InitSndCard() +{ + unsigned int cardnum; + for (cardnum=0;cardnum<4;cardnum++) + { + if (m_MonitorConfig.m_sndConfig[cardnum].iAktiv==1) + { + m_sndIn[cardnum] = new CSndPipe(); + FILE_LOG(logINFO) << "starting soundcard #" << cardnum ; + m_sndIn[cardnum]->initDecoderModules(cardnum,&m_MonitorConfig) ; + m_sndIn[cardnum]->m_SoundIn.setDevice(m_MonitorConfig.m_sndConfig[cardnum].sDevice, 22050) ; + + #ifdef PLUGINS + m_sndIn[cardnum]->loadPlugins(&m_MonitorConfig, m_MonitorConfig.m_sndConfig[cardnum].configChannel[0],m_MonitorConfig.m_sndConfig[cardnum].configChannel[1]) ; + #endif + m_sndIn[cardnum]->m_SoundIn.Start() ; + FILE_LOG(logINFO) << "Soundcard #" << cardnum << " started - complete" ; + } + } +} + + +void Monitor::StopSndCard() +{ + unsigned int cardnum; + for (cardnum=0;cardnum<4;cardnum++) + { + if (m_MonitorConfig.m_sndConfig[cardnum].iAktiv==1) + { + FILE_LOG(logINFO) << "stopping soundcard# " << cardnum ; + m_sndIn[cardnum]->m_SoundIn.Stop() ; + FILE_LOG(logINFO) << "soundcard #" << cardnum<< " halted." ; + delete m_sndIn[cardnum]; + } + } +} diff --git a/monitord/.svn/text-base/Monitor.h.svn-base b/monitord/.svn/text-base/Monitor.h.svn-base new file mode 100644 index 0000000..8eb0ced --- /dev/null +++ b/monitord/.svn/text-base/Monitor.h.svn-base @@ -0,0 +1,34 @@ +#ifndef MONITORD_MONITOR_H +#define MONITORD_MONITOR_H + +#include +#include "memlock.h" +#include "MonitorConfiguration.h" +#include "SndPipe.h" +#include "convert.h" +#include "MonitorExceptions.h" +#include "MonitorSignals.h" +#include "config.h" + +/** + * @brief Repraesentiert die Anwendung (MainApp) + * + * + */ + +class Monitor { +public: + void Initialize(int argc, char* argv[]); + void MainLoop(); + MonitorConfiguration m_MonitorConfig; + bool m_bWantStop; + CSndPipe *m_sndIn[4]; + MonitorBlockingSignal *m_SignalStopped ; +private: + void CreateSocketServer(MonitorConfiguration*); + void InitSndCard(); + void StopSndCard(); + MEMLOCK s; +}; + +#endif /* MONITORD_MONITOR_H */ diff --git a/monitord/.svn/text-base/MonitorAudio.cpp.svn-base b/monitord/.svn/text-base/MonitorAudio.cpp.svn-base new file mode 100644 index 0000000..e4efa03 --- /dev/null +++ b/monitord/.svn/text-base/MonitorAudio.cpp.svn-base @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include "math.h" +#include + +using namespace std ; + +#include "MonitorAudio.h" +#include "MonitorLogging.h" + +CAudioBuffer::CAudioBuffer() { + CAudioBuffer(16384) ; +} +CAudioBuffer::CAudioBuffer(tFramecount len) { + SampleLen = len; + Samples = 0; + /* Laenge pro Kanal */ + ByteLen = SampleLen * sizeof(float); + + Left = (float*) malloc(ByteLen); + Right = (float*) malloc(ByteLen); + + Ptrs = (float**) malloc(sizeof(float*) * 2); + Ptrs[0] = Left; + Ptrs[1] = Right; + + for (unsigned int i=0; i< len; i++) { + Left[i] = sin(((float) i)*3.14159265/180.0 ) ; + Right[i] = sin(((float) i)*3.14159265/180.0 ) ; + } +} + +CAudioBuffer::~CAudioBuffer() { + free(Ptrs); + free(Left); + free(Right); + Samples = 0; + ByteLen = 0; +} + + +/*****************************************************************************/ + +MonitorAudio::MonitorAudio(const std::string *name, tSamplerate rate) { + if (name != NULL) { + pcm_name = *name; + } + pcm_rate = rate; + /* Audiopuffer ca. 1/3 Sekunden Laenge */ + audio_buffer = new CAudioBuffer(16384); +} + +MonitorAudio::~MonitorAudio() { + delete audio_buffer; +} + +void MonitorAudio::Stop(){} + +bool MonitorAudio::Start(void* format){return true;} + +void MonitorAudio::setDevice (const std::string name, tSamplerate rate) { + pcm_name = name; + if (rate != 0) { + pcm_rate = rate; + } +} + +void MonitorAudio::setCallback (void (* callback)(CAudioBuffer* buffer, void* Owner)) { + this->DataFromSoundIn = callback; +} + + +void MonitorAudio::setOwner (void *owner) { + this->m_pOwner = owner; +} + +// vim: sw=4 ts=4 cindent diff --git a/monitord/.svn/text-base/MonitorAudio.h.svn-base b/monitord/.svn/text-base/MonitorAudio.h.svn-base new file mode 100644 index 0000000..12bb0d6 --- /dev/null +++ b/monitord/.svn/text-base/MonitorAudio.h.svn-base @@ -0,0 +1,78 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_AUDIO_H_ +#define MONITORD_AUDIO_H_ + +#include + +#include + +/** Samplerate in Hz */ +typedef unsigned int tSamplerate; + +/** Anzahl Frames (Samples * Kanaele) */ +typedef unsigned int tFramecount; + +/** Position in Frames (Samples * Kanaele) */ +typedef unsigned int tFrameposition; + +class CAudioBuffer +{ + public: + // int len: Länge des Buffers in Frames + CAudioBuffer(); + CAudioBuffer(tFramecount); + ~CAudioBuffer(); + + size_t ByteLen; + tFramecount SampleLen; + tFramecount Samples; + float* Left; + float* Right; + float **Ptrs; +}; + + + +/** Basisklasse f�r den Zugriff auf Soundkarten */ +class MonitorAudio : public JThread { + public: + MonitorAudio(const std::string* = NULL, const tSamplerate=0); + ~MonitorAudio(); + + virtual void Stop(); + virtual bool Start(void* format=NULL); + + void setCallback (void (* callback)(CAudioBuffer* buffer, void* Owner)); + void setDevice (const std::string name, const tSamplerate rate=0); + void setOwner (void *owner); + + protected: + // pointer to callback function + void (*DataFromSoundIn)(CAudioBuffer* buffer, void* Owner); + void* m_pOwner; + + CAudioBuffer *audio_buffer; + std::string pcm_name; + tSamplerate pcm_rate; +}; + +#endif + +// vim: sw=4 ts=4 diff --git a/monitord/.svn/text-base/MonitorConfiguration.cpp.svn-base b/monitord/.svn/text-base/MonitorConfiguration.cpp.svn-base new file mode 100644 index 0000000..e06780f --- /dev/null +++ b/monitord/.svn/text-base/MonitorConfiguration.cpp.svn-base @@ -0,0 +1,417 @@ + +#include "MonitorConfiguration.h" +#include "convert.h" +#include +#include "MonitorLogging.h" + +#ifdef WIN32 + #include // gethostbyname, inet_ntoa +#else + #include // fuer gethostbyname + #include // fuer inet_ntoa +#endif + +// Startparameter (Kommandozeile) auslesen +#include +#include + + +using namespace std ; + +// ---------- + +MonitorConfiguration::MonitorConfiguration() +{ + ResetConfiguration() ; +} + +MonitorConfiguration::~MonitorConfiguration() +{ +} + +// ---------- + +bool MonitorConfiguration::ResetConfiguration() +{ + int i ; + + m_sMonitordName="default" ; + m_Daemonize=true ; +#ifdef WIN32 + m_service_install=false; + m_service_run=false; + m_service_uninstall=false; +#endif + m_ConfigFile="monitord.xml" ; + m_crusaderUsername="crusader" ; + + m_IPBlacklist.clear() ; + m_IPWhitelist.clear() ; + m_IPLoginlist.clear() ; + + m_Port=9333 ; + m_PortFMS32Pro=0 ; + m_PortCrusader=0 ; + m_BindIP="" ; + + m_sndConfig[0].sDevice="/dev/dsp" ; + m_sndConfig[1].sDevice="/dev/dsp1" ; + m_sndConfig[2].sDevice="/dev/dsp2" ; + m_sndConfig[3].sDevice="/dev/dsp3" ; + + for (i=0; i<4;i++) + { + m_sndConfig[i].iAktiv=0 ; + m_sndConfig[i].iChannel=2 ; + m_sndConfig[i].iFMS[0]=0 ; + m_sndConfig[i].iFMS[1]=0 ; + m_sndConfig[i].iZVEI[0]=0 ; + m_sndConfig[i].iZVEI[1]=0 ; + m_sndConfig[i].iPOC512[0]=0 ; + m_sndConfig[i].iPOC512[1]=0 ; + m_sndConfig[i].iPOC1200[0]=0 ; + m_sndConfig[i].iPOC1200[1]=0 ; + + strcpy(m_sndConfig[i].sChannelName0,"default") ; + strcpy(m_sndConfig[i].sChannelName1,"default") ; + } + + return true ; +} + +std::string MonitorConfiguration::ReadChannel(XMLNode channelNode, int sndCard, int channelNum) +{ + std::string name; + int nModules=channelNode.nChildNode("module"); + m_sndConfig[sndCard].iFMS[channelNum]= 0 ; + m_sndConfig[sndCard].iZVEI[channelNum]= 0 ; + m_sndConfig[sndCard].iPOC512[channelNum]= 0 ; + m_sndConfig[sndCard].iPOC1200[channelNum]= 0 ; + name = getNodeText(channelNode,"name","default") ; + + for (int module=0; moduleLoginname=user ; + accountData->Password=pass ; + + m_MasterLogins.push_back(*accountData) ; + } + } + } + + // Loginnamen lesen + int nIP=authNode.nChildNode("ip"); + + for (int num=0; numh_addr; + m_BindIP=inet_ntoa(* address); + + } else { + m_BindIP="" ; + } + } +} + +bool MonitorConfiguration::ReadConfiguration(std::string filename) +{ + XMLNode xNode; + XMLNode config=XMLNode::openFileHelper(filename.c_str(),"monitordconfig"); + + // Monitord Bezeichnung + m_sMonitordName = getNodeText(config,"name","default") ; + m_sLogfile = getNodeText(config,"logfile","screen") ; + m_sLoglevel = getNodeText(config,"loglevel","INFO") ; + + + m_socketFilterFileName=getNodeText(config,"SocketFilterScript","") ; + m_pluginFilterFileName=getNodeText(config,"PluginFilterScript","") ; + XMLNode tcpNode = config.getChildNode("tcpsocket",0) ; + + if (!(tcpNode.isEmpty())) + { + ReadTCPConfiguration(tcpNode) ; + } + + + // Anmeldedaten + XMLNode authNode = config.getChildNode("auth",0) ; + + if (!(authNode.isEmpty())) + { + ReadAuthenticationData(authNode) ; + } + + // Soundkarten Elemente durchgehen + int nSoundkarten=config.nChildNode("soundcard"); + for (int sndCard=0;sndCard a.cpp, b.cpp, c.cpp, etc) + // See the SimpleGlob.h header file for details of the flags + + CSimpleGlob glob(SG_GLOB_NODOT|SG_GLOB_NOCHECK); + if (SG_SUCCESS != glob.Add(args.FileCount(), args.Files())) { + return false; + } + + + // while there are arguments left to process + while (args.Next()) { + if (args.LastError() == SO_SUCCESS) { + if (strcmp (args.OptionText(), "-d") == 0){ + m_Daemonize=true ; + } else if (strcmp (args.OptionText(), "-c") == 0) { + m_ConfigFile=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev0") == 0) { + m_sndConfig[0].sDevice=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev1") == 0) { + m_sndConfig[1].sDevice=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev2") == 0) { + m_sndConfig[2].sDevice=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev3") == 0) { + m_sndConfig[3].sDevice=args.OptionArg() ; +#ifdef WIN32 + } else if (strcmp (args.OptionText(), "--install") == 0) { + m_service_install = true; + } else if (strcmp (args.OptionText(), "--service") == 0) { + m_service_run = true; + } else if (strcmp (args.OptionText(), "--uninstall") == 0) { + m_service_uninstall = true; +#endif + } + } + else { + return false; + } + } + + return true; +} + +bool MonitorConfiguration::IsValidLogin(std::string loginname, std::string password, std::string host) +{ + bool skipBlackList=false ; + std::vector::iterator i ; + + // In IP Whitelist ? + for (i=m_IPWhitelist.begin() ; i != m_IPWhitelist.end() ; ++i) + { + if ((host==*i) || (*i=="any")) // Treffer oder Codewort "any" ? + { + return true ; + } + } + + // In IP Login erforderlich ? + for (i=m_IPLoginlist.begin() ; i != m_IPLoginlist.end() ; ++i) + { + if ((host==*i) || (*i=="any")) // Treffer oder Codewort "any" ? + { + skipBlackList=true ; + } + } + + if (!skipBlackList) + { + // In IP Blacklist ? + for (i=m_IPBlacklist.begin() ; i != m_IPBlacklist.end() ; i++) + { + if ((host==*i) || (*i=="any")) // Treffer oder Codewort "any" ? + { + return false ; + } + } + } + + // Name und Passwort pruefen + for (std::vector::iterator i=m_MasterLogins.begin() ; i != m_MasterLogins.end() ; i++) + { + if ((loginname==i->Loginname) && (password==i->Password)) + { + return true ; + } + } + return false ; +} + diff --git a/monitord/.svn/text-base/MonitorConfiguration.h.svn-base b/monitord/.svn/text-base/MonitorConfiguration.h.svn-base new file mode 100644 index 0000000..0b9f7eb --- /dev/null +++ b/monitord/.svn/text-base/MonitorConfiguration.h.svn-base @@ -0,0 +1,97 @@ +#ifndef __MonitorConfiguration_H +#define __MonitorConfiguration_H 0 + +#ifndef WIN32 + #define TCHAR char +#endif + +#include +#include "MonitorModules.h" +#include "xmltools.h" + +enum MonitorChannel {links=0,rechts=1} ; + +struct LoginAccount +{ + std::string Loginname ; + std::string Password ; +} ; + +class SNDConfiguration +{ +public: + int iAktiv ; + std::string sDevice ; + int iChannel ; + int iFMS[2] ; + int iZVEI[2] ; + int iPOC512[2] ; + int iPOC1200[2] ; + + // Namen der Kanaele (hier geht komischerweise kein std::string mit dem gcc 4.0.3 + char sChannelName0[255] ; + char sChannelName1[255] ; + + XMLNode configSoundcard ; + XMLNode configChannel[2]; + // Parameter der Module + XMLNode configFMS[2], + configZVEI[2], + configPOC512[2], + configPOC1200[2] ; + +} ; + +class MonitorConfiguration +{ +public: + MonitorConfiguration() ; + virtual ~MonitorConfiguration() ; + + SNDConfiguration m_sndConfig[4] ; + std::string m_sMonitordName ; + std::string m_sLogfile ; + std::string m_sLoglevel ; + bool ReadConfiguration(std::string filename) ; + bool ResetConfiguration() ; + bool IsValidLogin(std::string loginname, std::string password, std::string host="") ; + + //MonitorModuleArray m_ModulesLinks[4] ; + //MonitorModuleArray m_ModulesRechts[4] ; + unsigned int m_Port ; + unsigned int m_PortFMS32Pro ; + unsigned int m_PortCrusader ; + XMLNode m_configDataPlugins ; + + std::string m_BindIP ; + bool m_Daemonize ; +#ifdef WIN32 + bool m_service_install; + bool m_service_run; + bool m_service_uninstall; +#endif + std::string m_ConfigFile ; + std::string m_crusaderUsername ; + std::string m_socketFilterFileName ; + std::string m_pluginFilterFileName ; + + bool ParseCommandline (int argc, TCHAR * argv[]) ; +/* int getNodeInt(XMLNode parent,std::string childName,int defaultValue) ; + std::string getNodeText(XMLNode parent,std::string childName,std::string defaultValue) ; +*/ + +protected: + std::string ReadChannel(XMLNode channelNode, int sndCard, int channelNum) ; + void ReadSoundCard(XMLNode sndNode, int sndCard); + void ReadTCPConfiguration(XMLNode tcpNode) ; + + void ReadAuthenticationData(XMLNode authNode) ; + void ReadMySQLConfiguration(XMLNode dbNode, int moduleNum=0); + std::vector m_MasterLogins ; + std::vector m_IPBlacklist ; + std::vector m_IPWhitelist ; + std::vector m_IPLoginlist ; + +}; + +#endif diff --git a/monitord/.svn/text-base/MonitorExceptions.h.svn-base b/monitord/.svn/text-base/MonitorExceptions.h.svn-base new file mode 100644 index 0000000..0ba3c2a --- /dev/null +++ b/monitord/.svn/text-base/MonitorExceptions.h.svn-base @@ -0,0 +1,15 @@ +#ifndef MONITOREXCEPTIONS_H_ +#define MONITOREXCEPTIONS_H_ + +#include +#include "convert.h" + +class MonitorException : public std::runtime_error { + public: + MonitorException(const std::string& s) + : std::runtime_error(s) + { } + }; + #define ThrowMonitorException(err) throw( MonitorException(std::string(__FILE__)+ std::string(" Line ") + convertIntToString(__LINE__) + std::string(": ") + std::string(err) )) + +#endif /*MONITOREXCEPTIONS_H_*/ diff --git a/monitord/.svn/text-base/MonitorLogging.h.svn-base b/monitord/.svn/text-base/MonitorLogging.h.svn-base new file mode 100644 index 0000000..7d56531 --- /dev/null +++ b/monitord/.svn/text-base/MonitorLogging.h.svn-base @@ -0,0 +1,180 @@ +#ifndef MONITORLOGGING_H_ +#define MONITORLOGGING_H_ + +/* + * Nice small logging class seen at: http://www.ddj.com/cpp/201804215 + */ + +#include +#include +#include +#include +#include "convert.h" + + +inline std::string NowTime(); + +enum TLogLevel {logERROR, logWARNING, logINFO, logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4}; + +template +class Log +{ +public: + Log(); + virtual ~Log(); + std::ostringstream& Get(TLogLevel level = logINFO); +public: + static TLogLevel& ReportingLevel(); + static std::string ToString(TLogLevel level); + static TLogLevel FromString(const std::string& level); +protected: + std::ostringstream os; +private: + Log(const Log&); + Log& operator =(const Log&); +}; + +template +Log::Log() +{ +} + +template +std::ostringstream& Log::Get(TLogLevel level) +{ + os << " " << NowTime(); + os << " " << ToString(level) << ": "; + os << std::string(level > logDEBUG ? level - logDEBUG : 0, '\t'); + return os; +} + +template +Log::~Log() +{ + os << std::endl; + T::Output(os.str()); +} + +template +TLogLevel& Log::ReportingLevel() +{ + static TLogLevel reportingLevel = logDEBUG4; + return reportingLevel; +} + +template +std::string Log::ToString(TLogLevel level) +{ + static const char* const buffer[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4"}; + return buffer[level]; +} + +template +TLogLevel Log::FromString(const std::string& level) +{ + if (level == "DEBUG4") + return logDEBUG4; + if (level == "DEBUG3") + return logDEBUG3; + if (level == "DEBUG2") + return logDEBUG2; + if (level == "DEBUG1") + return logDEBUG1; + if (level == "DEBUG") + return logDEBUG; + if (level == "INFO") + return logINFO; + if (level == "WARNING") + return logWARNING; + if (level == "ERROR") + return logERROR; + Log().Get(logWARNING) << "Unknown logging level '" << level << "'. Using INFO level as default."; + return logINFO; +} + +class Output2FILE +{ +public: + static FILE*& Stream(); + static void Output(const std::string& msg); +}; + +inline FILE*& Output2FILE::Stream() +{ + static FILE* pStream = stderr; + return pStream; +} + +inline void Output2FILE::Output(const std::string& msg) +{ + FILE* pStream = Stream(); + if (!pStream) + return; + fprintf(pStream, "%s", msg.c_str()); + fflush(pStream); +} + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) +# if defined (BUILDING_FILELOG_DLL) +# define FILELOG_DECLSPEC __declspec (dllexport) +# elif defined (USING_FILELOG_DLL) +# define FILELOG_DECLSPEC __declspec (dllimport) +# else +# define FILELOG_DECLSPEC +# endif // BUILDING_DBSIMPLE_DLL +#else +# define FILELOG_DECLSPEC +#endif // _WIN32 + +class FILELOG_DECLSPEC FILELog : public Log {}; +//typedef Log FILELog; + +#ifndef FILELOG_MAX_LEVEL +#define FILELOG_MAX_LEVEL logDEBUG4 +#endif + +#define FILE_LOG(level) \ + if (level > FILELOG_MAX_LEVEL) ;\ + else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ; \ + else FILELog().Get(level) << std::string(__FILE__) << "(" << convertIntToString(__LINE__) << ") " + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) + +#include + +inline std::string NowTime() +{ + const int MAX_LEN = 200; + char buffer[MAX_LEN]; + if (GetTimeFormatA(LOCALE_USER_DEFAULT, 0, 0, + "HH':'mm':'ss", buffer, MAX_LEN) == 0) + return "Error in NowTime()"; + + char result[100] = {0}; + static DWORD first = GetTickCount(); + sprintf(result, "%s.%03ld", buffer, (long)(GetTickCount() - first) % 1000); + return result; +} + +#else + +#include + +inline std::string NowTime() +{ + char buffer[11]; + time_t t; + time(&t); + tm r = {0}; + strftime(buffer, sizeof(buffer), "%X", localtime_r(&t, &r)); + struct timeval tv; + gettimeofday(&tv, 0); + char result[100] = {0}; + sprintf(result, "%s.%03ld", buffer, (long)tv.tv_usec / 1000); + return result; +} + +#endif //WIN32 + + +#endif /*MONITORLOGGING_H_*/ diff --git a/monitord/.svn/text-base/MonitorModuleFMS.cpp.svn-base b/monitord/.svn/text-base/MonitorModuleFMS.cpp.svn-base new file mode 100644 index 0000000..f273483 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModuleFMS.cpp.svn-base @@ -0,0 +1,1312 @@ +/** MonitorModuleFMS.cpp + * + * This file is part of MyMonitor / BOSAssistent / monitor 2.0 + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ + +#include "MonitorModuleFMS.h" +#include +#include +#include +#include +#include "stdio.h" +#include "convert.h" +#include "time.h" +#include "MonitorLogging.h" + +#include +using namespace std; + +#include "memlock.h" +#include "base64.h" +#include "MonitorConfiguration.h" + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define MINPREAMBEL 8 +#define READ_AHEAD 80*CORRLEN + +// Wenn die nachfolgende Variable Definiert ist, wird der mrtty decode f?r FMS genutzt +// Bei MRTTY sollte SUBSAMP auf 1 definiert sein ! Sonst geht NIX ! +//#define MRTTY 0 + +#ifdef WIN32 +//#define MON_DEBUG +#endif + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModuleFMS::MonitorModuleFMS(unsigned int sampleRate,XMLNode* pConfig) +{ + int signallevel=10000 ; + + int vorlaufbits=getNodeInt(*pConfig,"syncbits",8) ; + int crccheck=getNodeInt(*pConfig,"crc-check",1) ; + int algorithm=getNodeInt(*pConfig,"algorithmus",0) ; + + initialize( sampleRate, + vorlaufbits, + crccheck, + (((float)(signallevel))/65535.0), + false, + false, + algorithm, + false, + false); +} + + +MonitorModuleFMS::MonitorModuleFMS(int sampleRate, int vorlaufbits, bool crccheck, float signallevel, bool ignore_Wiederholung, bool ignore_Quittung, int algorithm, bool error_correction, bool force_preambel) +{ + initialize(sampleRate, vorlaufbits, crccheck, signallevel, ignore_Wiederholung, ignore_Quittung, algorithm, error_correction, force_preambel); + } + +void MonitorModuleFMS::initialize(int sampleRate, int vorlaufbits, bool crccheck, float signallevel, bool ignore_Wiederholung, bool ignore_Quittung, int algorithm, bool error_correction, bool force_preambel) +{ + float f; + int i; + FILE_LOG(logDEBUG) << "FMS Parameter" ; + FILE_LOG(logDEBUG) << "sample : " << sampleRate ; + FILE_LOG(logDEBUG) << "syncbits: " << vorlaufbits ; + FILE_LOG(logDEBUG) << "crc : " << crccheck ; + FILE_LOG(logDEBUG) << "level : " << signallevel ; + FILE_LOG(logDEBUG) << "Algo : " << algorithm ; + FILE_LOG(logDEBUG) << "ignW : " << ignore_Wiederholung ; + FILE_LOG(logDEBUG) << "ignQ : " << ignore_Quittung ; + FILE_LOG(logDEBUG) << "ErrC : " << error_correction ; + FILE_LOG(logDEBUG) << "force : " << force_preambel ; + + m_bErrorCorrection=error_correction ; + m_iAlgorithmus=algorithm ; + rxstate=0 ; + distCounter=0 ; + + + bit_phase=0 ; + m_iLastSyncState=0 ; + + summe=0 ; + + FREQ_SAMP=sampleRate ; + + CORRLEN=(int) (FREQ_SAMP / BAUD) ; + SPHASEINC=(0x10000u * BAUD * SUBSAMP / FREQ_SAMP) ; + SPHASEINC_BASE=(0x10000u * BAUD * SUBSAMP / FREQ_SAMP) ; + + m_fSignallevel=signallevel ; + + m_lpszStatusTabelle="status" ; + memset(&fms,0,sizeof(FMS)) ; + memset(&lasts,0,sizeof(unsigned int[11])) ; + memset(&m_LastMessage,0,sizeof(FMS)) ; + + lastout=0 ; + quittung=0 ; + subsamp=0 ; + sphase=0 ; + // + memset(&vals, 0, sizeof(VALS)); + + rxstate = 0; + + for (f = 0, i = 0; i < CORRLEN; i++) { + corr_mark_i[i] = cos(f); + corr_mark_q[i] = sin(f); + //int_corr_mark_i[i] = (int) corr_mark_i[i]*32768 ; + //int_corr_mark_q[i] = (int) corr_mark_q[i]*32768 ; + + f += 2.0 * M_PI * (float) FREQ_MARK / (float) FREQ_SAMP; + } + + for (f = 0, i = 0; i < CORRLEN; i++) { + corr_space_i[i] = cos(f); + corr_space_q[i] = sin(f); + //int_corr_space_i[i] = (int) corr_space_i[i]*32768 ; + //int_corr_space_q[i] = (int) corr_space_q[i]*32768 ; + + f += 2.0 * M_PI * (float) FREQ_SPACE / (float) FREQ_SAMP; + m_fZwPuffer[i]=0.0 ; + m_fZwPuffer[CORRLEN+i]=0.0 ; + } + + + vals.quality=vorlaufbits ; + vals.ctrl=0 ; + + if (crccheck) // Wenn CRC-Check, dann um 20 erh?hen + vals.quality+=20 ; + + m_lpszName="FMS" ; + //m_bSuppressQuittung=true ; + //m_bSuppressDupes=true ; + + + + set_filters(FREQ_SPACE,FREQ_MARK,BAUD); + + + #ifdef FMSDEBUG + debugFile1 = fopen("fms_in.raw", "wb"); + debugFile2 = fopen("fms_takt.raw", "wb"); + debugFile3 = fopen("fms_pfd.raw", "wb"); + debugFile4 = fopen("fms_4.raw", "wb"); + #endif +} + + +MonitorModuleFMS::~MonitorModuleFMS() +{ + #ifdef FMSDEBUG + fclose(debugFile1) ; + fclose(debugFile2) ; + fclose(debugFile3) ; + fclose(debugFile4) ; + #endif +} + +void MonitorModuleFMS::parseConfigData() +{ + +} + +//////////////////////////////////////////////////////////////////// +// Sucht im Bereitgestellten Datenpuffer (*buffer) nach enthaltenen +// Bits gem. FMS Codierung +// Jedes einzelne Bit wird an rxbit ?bergeben und dort im Kontext +// analysiert +// + +int counter =0 ; + + +void MonitorModuleFMS::demod(float *buffer, int length) +{ + m_fSignallevel=0.3 ; + + if (m_iAlgorithmus==1) + { + demod_se(buffer,length) ; + return ; + } ; + + float f, ampl_mark, ampl_space ; + + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + + for (; length >= max(SUBSAMP, CORRLEN) ; length -= SUBSAMP, buffer += SUBSAMP) + { + ampl_mark= fsqr(mac(buffer, corr_mark_i, CORRLEN)) + + fsqr(mac(buffer, corr_mark_q, CORRLEN)) ; + ampl_space= fsqr(mac(buffer, corr_space_i, CORRLEN)) + + fsqr(mac(buffer, corr_space_q, CORRLEN)); + + f = ampl_mark - ampl_space ; + + dcd_shreg <<= 1; + dcd_shreg |= (f > 0); + + // check if transition + // + if ((dcd_shreg ^ (dcd_shreg >> 1)) & 1) { + if (sphase < (0x8000u - (SPHASEINC / 2))) + sphase += SPHASEINC / 8; + else + sphase -= SPHASEINC / 8; + } + sphase += SPHASEINC; + + + summe=summe + ( (f > 0) ? 1 : -1) ; + + if (sphase>=0x10000u) + { + sphase &= 0xffffu; + // curbit = dcd_shreg & 1; + + if ( (summe >= (int) (m_fSignallevel * ((float) (FREQ_SAMP/SPHASEINC_BASE))) ) || (-summe >= (int) (m_fSignallevel * ((float) (FREQ_SAMP/SPHASEINC_BASE)) ) )) + //(f >= m_fSignallevel) || (f <=-m_fSignallevel)) // Es muss schon ein wenig dahinterstehen ;-) + { + // TRACE1("summe: %d\n",summe) ; + int bit=(summe >= 0) ? 1 : 0 ; + rxbit(bit); + + } else { + // ggf. laufende Auswertung abbrechen, da Signal zu schwach + // + //TRACE2("FMS: Low Power Signal %d < %d \n",summe,(int) (m_fSignallevel * ((float)(FREQ_SAMP/SPHASEINC_BASE)) )) ; + if (rxstate) rxstate=0 ; + } ; + summe=0 ; + } + } + + subsamp = length; +} + +/////////////////////////////////////////////////////////// +// Verarbeiten des Empfangenen Bits und Untersuchung +// im Kontext bisher empfangener Daten +// + +bool MonitorModuleFMS::rxbit(unsigned char bit, bool test) +{ + // #define ITEMLEN 80 + bool returnValue=false ; + + unsigned int i = 0, j = 0; + unsigned int filter= 0xffff >> (15 - (vals.quality >= 20 ? vals.quality - 20 : vals.quality)); + unsigned int sync = 0xff1a & filter; + char c[ITEMLEN], *p; + char kontrollString[ITEMLEN] ; + + + /* F?llen des Vorlaufstromes aus dem Overflow vom Rxbitstream und Schieben */ + for(;i < 10; i++){ + lasts[i] <<= 1; + lasts[i] |= lasts[i + 1] >> 31; + } + lasts[10] <<= 1; + lasts[10] |= rxbitstream >> 31; + rxbitstream <<= 1; + rxbitstream |= !!bit; + + // CString outstring ; + // itoa(rxbitstream, outstring.GetBuffer(20),16) ; + // TRACE(outstring) ; + + unsigned int testen=(rxbitstream & filter) ; + if (!rxstate && (testen==sync) ) { + /* ein Syncwort wurde gefunden */ + // TRACE0 ("->SYNC<-") ; + if (m_iLastSyncState>0) + { + m_bPrintError=true ; + //TRACE0 ("->SYNC<-") ; + // //DebugMessage("-> SYNC-WORT <- gefunden") ; + } else { + m_bPrintError=false ; + // //DebugMessage("Ohne Pr?ambel: -> SYNC-WORT <- gefunden") ; + } + // counter = -1 ; + + rxstate = 1; // In den Empfangsmodus schalten + rxptr = rxbuf; // und das nachfolgende Auswerten + return false ; + } + + if (rxstate) + { + if (rxstate++ <= 48) + { + rxbitbuf |= !!bit; + *rxptr++ = !!bit; + if (rxstate == 49) + { + *fms.stat = (unsigned short) 0; + + /* Dekodiere das empfangene Codewort */ + i = decode(test); + + if (i) returnValue=true ; + + if (!i) + { + if (m_iLastSyncState>0) + { + ErrorOut() ; + m_iLastSyncState=0 ; + } + /* + * CRC-Fehler + * Zur?ckschieben des Buffers f?r Neutests + */ + rxbitstream = lasts[9]; + rxbitstream <<= 16; + rxbitstream |= lasts[10] >> 16; + + for (i = 10; i > 1; i--) { + lasts[i] = lasts[i - 2]; + lasts[i] <<= 16; + lasts[i] |= lasts[i - 1] >> 16; + } + lasts[1] = lasts[0] >> 16; + rxstate--; + + while (rxstate--) { + + for(i = 0; i < 10; i++){ + lasts[i] <<= 1; + lasts[i] |= lasts[i + 1] >> 31; + } + lasts[10] <<= 1; + lasts[10] |= rxbitstream >> 31; + p = (char*) rxbuf; + rxbitstream <<= 1; + rxbitstream |= *p; + for (i = 0; i < rxstate; i++, p++) *p = *(p + 1); + rxptr--; + + if ((rxbitstream & filter) == sync) { + + /* ein Syncwort wurde gefunden */ + p = (char*) rxbuf; + for (; j < rxstate; j++) { + for(i = 0; i < 10; i++){ + lasts[i] <<= 1; + lasts[i] |= lasts[i + 1] >> 31; + } + lasts[10] <<= 1; + lasts[10] |= rxbitstream >> 31; + rxbitstream <<= 1; + rxbitstream |= *p++; + } + rxstate++; + return false; + } + } + rxstate = 0; + } + else + { + returnValue=true ; + if (i < 2) { + /* + * Telegramm ok, wurde ausgegeben + */ + rxstate = 0; + } + else { /* i == 2 Text?bertragung */ + /* Buffer vorbereiten */ + txtbuf = (Line *) malloc (sizeof(Line)); + memset(txtbuf, 0, sizeof(Line)); + txtbuf->next = (Line *) malloc (sizeof(Line)); + memset(txtbuf->next, 0, sizeof(Line)); + } + } + return returnValue ; + } + } + else + { + /* Text?bertragung */ + Line *txt; + + *rxptr++ = !!bit; + + if (rxstate == 97) + { + memset(c, 0, 5); + memset(c, 46, 4); + txt = txtbuf->next; + + while (txt->next != NULL) txt = txt->next; + + if (!vals.txtinc) + { + memcpy (kontrollString,c,ITEMLEN) ; + + if (!decode(test)) + { + rxstate = 0; + return false ; + } + + returnValue=true ; + if (fms.dir[0]==0) // Bein Fz->Lst keine ?bersetzung von Sonderzeichen ! + { + m_bTranslate=false ; // Fz-Daten nicht ?bersetzen ! + // if (!crc_check(48)) + //{ + fms_bin(48,c); + + fms.txtnr=2 ; // Ausgedachter Wert 0xb schlie?t es ja ab + //} + } else { + if (!crc_check(48)) + { + m_bTranslate=false ; + fms_txt(48,kontrollString); + m_bTranslate=true ; + fms_txt(48,c); + + fms.txtnr= kontrollString[0]; + //TRACE1("L?nge: %d\n",fms.txtnr) ; + // *c = ' '; + } + } ; + + vals.txtinc = 1; + } + else + { + if (fms.dir[0]==0) + { + fms_bin(0,c) ; + }else { + if (!crc_check(0)) + { + fms_txt(0, c); + } + } ; + + } ; + + if (fms.dir[0]==0) + { + char tempString [20]="" ; + + char rotateByte[4] ; // =((c[i]>>4) & 0xf) + ((c[i] & 0xf) << 4) ; + + /* + rotateByte[0]= (((c[3]>>7) &0x1)<<0) + (((c[3]>>6) &0x1)<<1) + (((c[3]>>5) &0x1)<<2) + (((c[3]>>4) &0x1)<<3) + (((c[3]>>3) &0x1)<<4) + (((c[3]>>2) &0x1)<<5) + (((c[3]>>1) &0x1)<<6) + (((c[3]>>0) &0x1)<<7) ; + rotateByte[1]= (((c[2]>>7) &0x1)<<0) + (((c[2]>>6) &0x1)<<1) + (((c[2]>>5) &0x1)<<2) + (((c[2]>>4) &0x1)<<3) + (((c[2]>>3) &0x1)<<4) + (((c[2]>>2) &0x1)<<5) + (((c[2]>>1) &0x1)<<6) + (((c[2]>>0) &0x1)<<7) ; + rotateByte[2]= (((c[1]>>7) &0x1)<<0) + (((c[1]>>6) &0x1)<<1) + (((c[1]>>5) &0x1)<<2) + (((c[1]>>4) &0x1)<<3) + (((c[1]>>3) &0x1)<<4) + (((c[1]>>2) &0x1)<<5) + (((c[1]>>1) &0x1)<<6) + (((c[1]>>0) &0x1)<<7) ; + rotateByte[3]= (((c[0]>>7) &0x1)<<0) + (((c[0]>>6) &0x1)<<1) + (((c[0]>>5) &0x1)<<2) + (((c[0]>>4) &0x1)<<3) + (((c[0]>>3) &0x1)<<4) + (((c[0]>>2) &0x1)<<5) + (((c[0]>>1) &0x1)<<6) + (((c[0]>>0) &0x1)<<7) ; + + int test=(c[0]>>7) &0x1 ; + test=c[0]>>0 ; +*/ + for (i=0;i<4;i++) + { + // Oberes und unteres Nibble vertauschen + rotateByte[i]=((c[i]>>4) & 0xf) + ((c[i] & 0xf) << 4) ; + + // Nibbles nicht tauschen + // + //rotateByte[i]=c[i] & 0xff ; + + sprintf(tempString,"%02x",(unsigned char) rotateByte[i]) ; + strcat (txt->string,tempString) ; + } ; + } + else + { + strcat(txt->string, c); + } ; + + rxptr = rxbuf; + fms.txtnr -= (4 >> 1); + // fms.txtnr -= 4 ; + rxstate = 49; + + if (vals.txtinc) + { + if (rxbuf[32] || (fms.txtnr<=0)) + { + /* Status b: Abschluss (bisher Status a, + * unterscheidet sich in Bit 32) + * txtnr: 0 + * idealerweise trifft beides zu */ + + // txt_change(txt->string, s->l1.fms.subst); + // txt_break(txt, MAXROW); + + txt = txtbuf; + i = 0; + std::string outString ; + + while (txt != NULL) + { + outString +=txt->string ; + txt = txt->next; + } + + if (!test) + { + DisplayResult(outString.c_str()) ; + StoreForDupeCheck() ; // F?r sp?ter sichen, um zu pr?fen, ob was doppelt ist + } + vals.txtinc = 0; + rxstate = 0; + fms.stat[0]=0xb ; + returnValue=true ; + } + } + } + } + } + return returnValue ; +} + +int MonitorModuleFMS::decode(bool test) +{ + int i = 0, rules_; + short bit = 0; + + if (error_correction()) + { + return 0 ; + } + + + // if (crc_check(0)) return 0; + + /* falls keine laufende Text?bertragung */ + if (fms.stat[0] != 0xa) { + + fms.bos[0] = rxbuf[3] << 3 | rxbuf[2] << 2 | rxbuf[1] << 1 | rxbuf[0]; + + fms.land[0] = rxbuf[7] << 3 | rxbuf[6] << 2 | rxbuf[5] << 1 | rxbuf[4]; + + fms.ort[0] = rxbuf[11] << 3 | rxbuf[10] << 2 | rxbuf[9] << 1 | rxbuf[8]; + fms.ort[1] = rxbuf[15] << 3 | rxbuf[14] << 2 | rxbuf[13] << 1 | rxbuf[12]; + + fms.kfz[0] = rxbuf[19] << 3 | rxbuf[18] << 2 | rxbuf[17] << 1 | rxbuf[16]; + fms.kfz[1] = rxbuf[23] << 3 | rxbuf[22] << 2 | rxbuf[21] << 1 | rxbuf[20]; + fms.kfz[2] = rxbuf[27] << 3 | rxbuf[26] << 2 | rxbuf[25] << 1 | rxbuf[24]; + fms.kfz[3] = rxbuf[31] << 3 | rxbuf[30] << 2 | rxbuf[29] << 1 | rxbuf[28]; + + fms.stat[0] = rxbuf[35] << 3 | rxbuf[34] << 2 | rxbuf[33] << 1 | rxbuf[32]; + + fms.bst[0] = rxbuf[36]; + fms.dir[0] = rxbuf[37]; + fms.tki[0] = rxbuf[38] << 1 | rxbuf[39]; + + for (i = 0; i < 7; i++) fms.crc[i] = rxbuf[40 + i]; + + rules_ = rules(); + + if (!(rules_ )) { + bit = vals.bit; + if (bit < 49 && bit) rxbuf[bit - 1] ^= 1; + return 0; + } + } + /* noch keine Ausgabe falls Text?bertragung (sp?ter mit Zeichennzahl)) */ + if (fms.stat[0] == 0xa) return 2; + + bit = vals.bit; + + // if(!rxbuf[47]) /* Stoppbit == 0 */ + { + if (!test) + { + DisplayResult() ; /* Auf dem Bildschirm ausgeben */ + StoreForDupeCheck() ; // F?r sp?ter sichen, um zu pr?fen, ob was doppelt ist + } + + } + if (bit < 49 && bit) rxbuf[bit - 1] ^= 1; + return !rxbuf[47] ; +} + + + +int MonitorModuleFMS::crc_check(int offset) +{ +/***************************************************************************** + * CRC-Pr?froutine und teilweise blindes Korrigieren, offset=[0, 48] + *****************************************************************************/ + + #define CODE 47 + + unsigned char g[] = {1,0,0,0,1,0,1}; + unsigned char r[] = {0,0,0,0,0,0,0,0}; + char *p; + unsigned int i = 0, j; + + // rxbuf,fms.vals.quality,0, &vals.bit + + + /* CRC-Pr?froutine Begin */ + for (i = 0; i < CODE; i++) { + vals.bit = rxbuf[i + offset] ^ r[0]; + p = (char*) r; + for (j = 0; j < 7; j++) *p++ = (vals.bit & g[j]) ^ r[j + 1]; + } + /* CRC-Pr?froutine Ende */ + + /* Pr?fen des Rest-Polynoms */ + vals.bit = 0; + for (i = 0; i < 7; i++) { + vals.bit <<= 1; + vals.bit |= r[i]; + } + /* ok, falls kein Rest (*bit=0) */ + + // TRACE1("CRC-Check: %d\n",vals.bit) ; + if (vals.quality >= 20) return vals.bit; /* crc_check on */ + else{ + if (vals.bit) { + vals.bit = crc_table[vals.bit]; + if (vals.bit < 48) rxbuf[(vals.bit)++] ^= 1; + else return vals.bit; + } + } + return 0; +} + +int MonitorModuleFMS::rules() +{ + // ung?ltige Telegramme: + // Ort : > 9* && > *9 + // BOS : 0 ; + // SE: ge�ndert auf Ort bis F* und *F, da in Bayern so gebr�uchlich + + if (fms.ort[0] > 0xf) return 0 ; + if (fms.ort[1] > 0xf) return 0 ; + if (fms.bos==0) return 0 ; + return 1 ; +} + +void MonitorModuleFMS::DisplayResult(std::string input) +{ + // + + // TRACE2("Ergebnisse: Dupes: %d - Quittung: %d\n", (int) CheckForDupes(), (int) CheckForQuittung()) ; + if (!CheckForDupes() && !CheckForQuittung() ) + { + char statusString[5] ; // war: traceString + char kfzString[10] ; // war: traceString1 + char ortString[10] ; // war: traceString2 + char bosString[3] =" " ; + char landString[3]=" " ; + char richtungString[3]=" " ; + char tkiString[3] = " " ; + char baustufeString[3] = " " ; + char dateStr[9]; + char timeStr[9]; + + std::string fahrzeugKennung; + std::string bosDezimalString ; + std::string landDezimalString ; + std::string statusDezimalString ; + std::string jetzt ; + + sprintf(statusString,"%01x",fms.stat[0]) ; + sprintf(kfzString, "%04x", fms.kfz[0]*0x1000+fms.kfz[1]*0x100+fms.kfz[2]*0x10+fms.kfz[3]*0x1) ; + sprintf(ortString, "%02x", fms.ort[0]*0x10+fms.ort[1]*0x1) ; + + + // kfzString in Uppercase umwandeln (ist immer 4 stellig) + kfzString[0]=toupper( kfzString[0] ); + kfzString[1]=toupper( kfzString[1] ); + kfzString[2]=toupper( kfzString[2] ); + kfzString[3]=toupper( kfzString[3] ); + + // ortString + ortString[0]=toupper( ortString[0] ); + ortString[1]=toupper( ortString[1] ); + + // das gleiche f�r den StatusString + statusString[0]=toupper(statusString[0]) ; + + bosDezimalString=convertIntToString(fms.bos[0]) ; + landDezimalString=convertIntToString(fms.land[0]) ; + statusDezimalString=convertIntToString(fms.stat[0]) ; + + richtungString[0] = '0'+fms.dir[0] ; + tkiString[0] = '0'+fms.tki[0] ; + baustufeString[0]= '0' + fms.bst[0] ; + + bosString[0]= fms.bos[0]<=9 ? '0'+fms.bos[0] : ('A'+fms.bos[0]-10) ; + landString[0]= fms.land[0]<=9 ? '0'+fms.land[0] : ('A'+fms.land[0]-10) ; + fahrzeugKennung=std::string(bosString)+landString+ortString+kfzString ; + + currentTime(jetzt) ; // aktuelle Uhrzeit holen + struct tm* tm_time= localtime(&m_time) ; + strftime(dateStr,9,"%d.%m.%y" ,tm_time) ; + strftime(timeStr,9,"%H:%M:%S" ,tm_time) ; + + ModuleResultBase *pRes =new ModuleResultBase() ; + + pRes->set("timestamp",jetzt); + pRes->set("uhrzeit",timeStr) ; + pRes->set("datum",dateStr) ; + pRes->set("servernamehex",m_serverNameHex); + pRes->set("channelnamehex",m_channelNameHex); + pRes->set("channelnum",convertIntToString(m_iChannelNum)); + + pRes->set("typ","fms"); + pRes->set("fmskennung",fahrzeugKennung); + pRes->set("status",statusString); + pRes->set("baustufe",baustufeString); + pRes->set("timestamp",jetzt); + pRes->set("richtung",richtungString); + pRes->set("tki",tkiString); + pRes->set("bosdezimal",bosDezimalString) ; + pRes->set("landdezimal",landDezimalString) ; + pRes->set("statusdezimal",statusDezimalString) ; + pRes->set("bos",bosString) ; + pRes->set("land",landString) ; + pRes->set("ort",ortString) ; + pRes->set("kfz",kfzString) ; + pRes->set("textuebertragung",input) ; + + FILE_LOG(logDEBUG) << (*pRes) << "-----" ; + GlobalDispatcher->addResult(pRes) ; + } ; +} + +void MonitorModuleFMS::fms_txt(short offset, char *c) +{ + int j, letters = 4, tlen; + char *str = c, *bpp; + const char * tstr; + + bpp = (char*) &rxbuf[offset + 6]; + + for (; letters; letters--) { + *str = 0x20 ; + for (j = 7; j; j--) { + *str <<= 1; + *str |= *bpp--; + } + + if (m_bTranslate) tstr=translate_alpha(*str) ; + else tstr=(const char *)NULL ; + + if (tstr != NULL) { + /* Steuerzeichen ausgeben? */ + if (vals.ctrl + /* Umlaute */ + || ((*str & 0x58) == 0x58 && (*str & 0x7) >= 3 && (*str && 0x7) <= 5) + /* ? */ + || *str == 0x7e) { + tlen= strlen(tstr); + memcpy(str, tstr, tlen); + str += tlen - 1; + } + else + { + /* Enter */ + if (*str == 13 || *str == 10) { + *str = '\n'; + } else { + str--; + } + } + + } ; + str++; + bpp += 15; + } ; + *str = 0; + /* fms_txt*/ +} + + +void MonitorModuleFMS::fms_bin(short offset, char *c) +{ + int j, letters = 4 ; + char *str = c, *bpp ; + + bpp = (char*) &rxbuf[offset + 7]; + + for (; letters; letters--) { + *str = 0x00 ; + for (j = 8; j; j--) { + *str <<= 1; + *str |= *bpp--; + } + + + str++; + bpp += 16; // ????????? + } ; + *str = 0; + /* fms_txt*/ +} + +void MonitorModuleFMS::StoreForDupeCheck() +{ + if (!CheckForDupes() && !CheckForQuittung() ) + { + memcpy (&m_LastMessage,&fms,sizeof(FMS)) ; + // TRACE1("Gespeichert als letzte Nachricht %d\n",fms.bos[0]) ; + } + StoreForReverseCheck() ; +} + +bool MonitorModuleFMS::CheckForDupes() +{ + if ( (m_LastMessage.bos[0]==fms.bos[0]) && + (m_LastMessage.bst[0]==fms.bst[0]) && + (m_LastMessage.tki[0]==fms.tki[0]) && + (m_LastMessage.dir[0]==fms.dir[0]) && + (m_LastMessage.kfz[0]==fms.kfz[0]) && + (m_LastMessage.kfz[1]==fms.kfz[1]) && + (m_LastMessage.kfz[2]==fms.kfz[2]) && + (m_LastMessage.kfz[3]==fms.kfz[3]) && + (m_LastMessage.land[0]==fms.land[0]) && + (m_LastMessage.ort[0]==fms.ort[0]) && + (m_LastMessage.ort[1]==fms.ort[1]) && + (m_LastMessage.stat[0]==fms.stat[0]) + ) + { + return false ; /* Doppelte nicht verwerfen */ + } + + return false ; +} + +bool MonitorModuleFMS::CheckForQuittung() +{ + if ( (m_LastMessage.bos[0]==fms.bos[0]) && + (m_LastMessage.bst[0]==fms.bst[0]) && + (m_LastMessage.dir[0]==(1-fms.dir[0])) && + (m_LastMessage.kfz[0]==fms.kfz[0]) && + (m_LastMessage.kfz[1]==fms.kfz[1]) && + (m_LastMessage.kfz[2]==fms.kfz[2]) && + (m_LastMessage.kfz[3]==fms.kfz[3]) && + (m_LastMessage.land[0]==fms.land[0]) && + (m_LastMessage.ort[0]==fms.ort[0]) && + (m_LastMessage.ort[1]==fms.ort[1]) && + (fms.stat[0]==15) + ) + { + /*if (m_bSuppressQuittung) + { + //TRACE0 ("Quittung raus raus !\n") ; + } ; + return m_bSuppressQuittung ;*/ + } + + return false ; +} + + +// ********************************************************* +// ** IIR Filter +// ********************************************************* + +inline float MonitorModuleFMS::biq_lp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x+buf[0]+buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModuleFMS::biq_bp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModuleFMS::biq_hp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[0]-buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +void MonitorModuleFMS::gen_coef(int tipo, float f0, float Q, float *pcoef) +{ + float w0,a,d; + + w0=2.*M_PI*f0; + + //Prewharping + w0=2.0*FREQ_SAMP*tan(w0/FREQ_SAMP/2.0); + + a=FREQ_SAMP/w0; + d=4.*a*a +2.*a/Q +1.; + + switch(tipo){ + case 0: (*pcoef++)=1.0/d; break; + case 1: (*pcoef++)=2.*a/Q/d; break; + case 2: (*pcoef++)=4.*a*a/d; break; + } + + (*pcoef++)=(8.*a*a -2.)/d; + (*pcoef++)=-(4.*a*a -2.*a/Q +1.)/d; +} + +void MonitorModuleFMS::set_filters(float f0, float f1, float dr) +{ + gen_coef(1,f0,f0/dr/2.0,bp0_c); /* Space filter */ + gen_coef(1,f1,f1/dr/2.0,bp1_c); /* Mark filter */ + gen_coef(0,dr,0.5412,lp1_c); /* Low-Pass order-4 Butt. filter */ + gen_coef(0,dr,1.3066,lp2_c); + + for (int i=0;i<4;i++) lp1_b[i]=lp2_b[i]=bp0_b[i]=bp1_b[i]=0.0; +} + +void MonitorModuleFMS::demod_se(float *buffer, int length) +{ + float xs,xm,y, sample; + + /* This function implements a digital PLL for data recovery */ + static int x0; + static int x_se ; + + static int x,f=0; + + + #ifdef FMSDEBUG + // Startwerte + fwrite(buffer, sizeof(float), length,debugFile1); + pBuffer1=fileBuffer1 ; + pBuffer2=fileBuffer2 ; + pBuffer3=fileBuffer3 ; + bufferLen1=0 ; + bufferLen2=0 ; + bufferLen3=0 ; + #endif + + + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) + { + // rtty (2) decoder + // + sample=(*buffer)*128 ; + + xs=biq_bp(sample,bp0_c,bp0_b); + xm=biq_bp(sample,bp1_c,bp1_b); + xs*=xs; // xs RMS + xm*=xm; // xm RMS + y=biq_lp(biq_lp(xm-xs,lp1_c,lp1_b),lp2_c,lp2_b); + + + x=(y>0.0)?1:0 ; + + if ((x^x0)) // Data Change + { + if (!f) + { + if (bit_phase>0x8000) + { // Late + bit_phase+=SPHASEINC_BASE*1.5; // war: /8 + } else // Early + { + bit_phase-=SPHASEINC_BASE*1.5 ;// war: /8 + } + + f=1; + } + } + + x0=x; + + x_se=bit_phase; + + bit_phase+=SPHASEINC_BASE ; + + + #ifdef FMSDEBUG + /* + debugFile1 = fopen("fms_in.raw", "wb"); + debugFile2 = fopen("fms_takt.raw", "wb"); + debugFile3 = fopen("fms_pfd.raw", "wb"); + debugFile4 = fopen("fms_4.raw", "wb"); + + pBuffer1=debugFile2 ; + pBuffer2=debugFile3 + pBuffer3=debugFile4 ; + */ + + *pBuffer1=(bit_phase <0x8000)?0.7:-0.7 ; + *pBuffer2=y ; + *pBuffer3=(Ud*0.75)/0x8000 ; + + pBuffer1++ ; + pBuffer2++ ; + pBuffer3++ ; + bufferLen1++ ; + bufferLen2++ ; + bufferLen3++ ; + #endif + + if (((bit_phase & 0x8000)>0) && ((x_se & 0x8000)==0)) // in der "Mitte" bit_phase=0x8000 wird ein einzelnes Bit "empfangen", wichtig wg. der early/late - nicht erst am Ende ! + { + f=0 ; + + //if ( (!m_bForcePreambel) || rxstate ) // rxstate bei lfd. Text?bertragung + { + #ifdef FMSDEBUG + pBuffer3-- ; + *pBuffer3= x0==1 ? 0.7:-0.7 ; + pBuffer3++ ; + #endif + + if (rxbit(x0<<7)) // Gibt true zur?ck, wenn ein korrektes Wort empfangen worden ist + { + // Daten korrekt empfagen + ErrorOut() ; + } + } + + // This function returns in the middle of a bit + } ; + } + #ifdef FMSDEBUG + fwrite(fileBuffer1, sizeof(float), bufferLen1,debugFile2); + fwrite(fileBuffer2, sizeof(float), bufferLen2,debugFile3); + fwrite(fileBuffer3, sizeof(float), bufferLen3,debugFile4); + #endif + +} + +void MonitorModuleFMS::ErrorOut() +{ + if (fms.stat[0] != 0xa) { + + fms.bos[0] = rxbuf[3] << 3 | rxbuf[2] << 2 | rxbuf[1] << 1 | rxbuf[0]; + + fms.land[0] = rxbuf[7] << 3 | rxbuf[6] << 2 | rxbuf[5] << 1 | rxbuf[4]; + + fms.ort[0] = rxbuf[11] << 3 | rxbuf[10] << 2 | rxbuf[9] << 1 | rxbuf[8]; + fms.ort[1] = rxbuf[15] << 3 | rxbuf[14] << 2 | rxbuf[13] << 1 | rxbuf[12]; + + fms.kfz[0] = rxbuf[19] << 3 | rxbuf[18] << 2 | rxbuf[17] << 1 | rxbuf[16]; + fms.kfz[1] = rxbuf[23] << 3 | rxbuf[22] << 2 | rxbuf[21] << 1 | rxbuf[20]; + fms.kfz[2] = rxbuf[27] << 3 | rxbuf[26] << 2 | rxbuf[25] << 1 | rxbuf[24]; + fms.kfz[3] = rxbuf[31] << 3 | rxbuf[30] << 2 | rxbuf[29] << 1 | rxbuf[28]; + + fms.stat[0] = rxbuf[35] << 3 | rxbuf[34] << 2 | rxbuf[33] << 1 | rxbuf[32]; + + fms.bst[0] = rxbuf[36]; + fms.dir[0] = rxbuf[37]; + fms.tki[0] = rxbuf[38] << 1 | rxbuf[39]; + + for (int i = 0; i < 7; i++) fms.crc[i] = rxbuf[40 + i]; + + } + + char traceString [5] ; + // itoa( fms.stat[0], traceString,16) ; + sprintf(traceString,"%01x",fms.stat[0]) ; + + char traceString1[10] ; + sprintf(traceString1, "%04x", fms.kfz[0]*0x1000+fms.kfz[1]*0x100+fms.kfz[2]*0x10+fms.kfz[3]*0x1) ; + + char traceString2[10] ; + sprintf(traceString2, "%02x", fms.ort[0]*0x10+fms.ort[1]*0x1) ; + +#ifdef MON_DEBUG_ERR + TRACE0("KFZ: ") ; + TRACE0(traceString1) ; + TRACE0 (" ") ; + + TRACE0("Ort: ") ; + TRACE0(traceString2) ; + TRACE0(" ") ; + + TRACE0("Status: ") ; + TRACE0(traceString) ; + TRACE0("\n") ; +#endif +/* + COleDateTime now ; + now=COleDateTime::GetCurrentTime() ; + + CString outString=now.Format("%H:%M:%S - ") ; + */ + std::string outString ; + outString+="received: " ; + + char tempString[10]=" " ; + tempString[0]= fms.bos[0]<=9 ? '0'+fms.bos[0] : ('A'+fms.bos[0]-10) ; + // itoa(fms.bos[0], tempString,16) ; // BOS + outString += tempString ; + outString +=" " ; + + tempString[0]= fms.land[0]<=9 ? '0'+fms.land[0] : ('A'+fms.land[0]-10) ; + //itoa(fms.land[0], tempString,16) ; // LAND + outString += tempString ; + + outString += traceString2 ; // ORT + outString +=" " ; + outString += traceString1 ; // KFZ + + std::transform (outString.begin(), outString.end(), outString.begin(), + (int(*)(int)) toupper); + + outString +=" : " ; + outString += traceString ; // Status ; + + outString += " - " ; + tempString[0]= fms.bst[0]<=9 ? '0'+fms.bst[0] : ('A'+fms.bst[0]-10) ; + // itoa(fms.bst[0], tempString,16) ; // BST + outString += tempString ; + + outString += "/" ; + if (fms.dir[0]==0) + outString += "Kfz->Lst" ; + else + outString += "Lst->Kfz" ; + + // itoa(fms.dir[0], tempString,16) ; // DIR + // outString += tempString ; + + outString += "/" ; + tempString[0]= fms.tki[0]<=9 ? '0'+fms.tki[0] : ('A'+fms.tki[0]-10) ; + // itoa(fms.tki[0], tempString,16) ; // TKI + outString += tempString ; + + + ////DebugMessage(outString) ; + + //TRACE1("%s\n",outString) ; +} + +void MonitorModuleFMS::StoreForReverseCheck() +{ + + memcpy (&m_ReverseCheckMessage,&fms,sizeof(FMS)) ; + // TRACE1("Gespeichert als letzte Nachricht %d\n",fms.bos[0]) ; + +} + +bool MonitorModuleFMS::IsRelatedMessage() +{ + if ( (m_ReverseCheckMessage.bos[0]==fms.bos[0]) && + (m_ReverseCheckMessage.kfz[0]==fms.kfz[0]) && + (m_ReverseCheckMessage.kfz[1]==fms.kfz[1]) && + (m_ReverseCheckMessage.kfz[2]==fms.kfz[2]) && + (m_ReverseCheckMessage.kfz[3]==fms.kfz[3]) && + (m_ReverseCheckMessage.land[0]==fms.land[0]) && + (m_ReverseCheckMessage.ort[0]==fms.ort[0]) && + (m_ReverseCheckMessage.ort[1]==fms.ort[1]) + ) + { + return true ; + } else + { + return false ; + } +} + +bool MonitorModuleFMS::error_correction() +{ + #define CODE 47 + // Gibt true zur?ck, wenn keine Fehlerkorrektur o.?. helfen konnte + // + if (crc_check(0)) + { + // + if (m_bPrintError && m_bErrorCorrection) + { + // TRACE0("CRC Check failed...\n") ; + // CRC-Check war nicht ok ... + // Deswegen + + // Ein Bit Fehler versuchen zu korrigieren + // + // gr?ssere Hamming-Dist m?glich ? (48 Bit, davon 7 Bit CRC = 42 Bit Nutzdaten) + // + int pos1=0 ; + do + { + rxbuf[pos1] = (1-rxbuf[pos1]) ; // Bit invertieren + if (!crc_check(0) ) + { + if (RMExists()) + { + //std::string outString ; + //outString.Format("1) CRC corrected at %d.",pos1) ; + ////DebugMessage(outString) ; + ErrorOut() ; + + return false ; + } + } + rxbuf[pos1] = (1-rxbuf[pos1]) ; // Bit invertieren + pos1++ ; + } while (pos1<(CODE)) ; + } + return true ; + } else + { + return false ; + } +} + +bool MonitorModuleFMS::RMExists() +{ + return true ; +} + +bool MonitorModuleFMS::IsSyncWord(unsigned long rxbitstream) +{ + int minbits= vals.quality >= 20 ? vals.quality - 20 : vals.quality; + int i,bitcounter=0 ; + + unsigned int sync = 0xfff1a ; + + for (i=0;i<20;i++) + { + unsigned int bit1=rxbitstream & 0x1 ; + unsigned int bit2=sync & 0x1 ; + if (bit1==bit2) + { + bitcounter++ ; + } + rxbitstream>>=1 ; + sync>>=1 ; + } + + return (bitcounter >= minbits) ; +} + + +void MonitorModuleFMS::demod_neu(float *buffer, int length) +{ + +} + + +bool MonitorModuleFMS::IsValid() +{ + return !(fms.bos[0]==0) ; +} diff --git a/monitord/.svn/text-base/MonitorModuleFMS.h.svn-base b/monitord/.svn/text-base/MonitorModuleFMS.h.svn-base new file mode 100644 index 0000000..65e1fd6 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModuleFMS.h.svn-base @@ -0,0 +1,230 @@ +/* MyMonModulesFMS.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (mail@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ + +#if !defined(AFX_MYMONMODULEFMS_H__680AB4C3_EAB0_4D03_A913_869FB97EA730__INCLUDED_) +#define AFX_MYMONMODULEFMS_H__680AB4C3_EAB0_4D03_A913_869FB97EA730__INCLUDED_ + +#if _MSC_VER > 1000 +// #pragma once +#endif // _MSC_VER > 1000 + +#include "MonitorModules.h" +#include "math.h" +//#include "resource.h" + +// #define FMSDEBUG + +#define FREQ_MARK 1200 +#define FREQ_SPACE 1800 +#define BAUD 1200 +#define SUBSAMP 1 +// war:2 + +#define LINELEN 240 +#define ITEMLEN 50 + +// F�r die SE - FMS Auswertung +// kann bis 44100 Hz eine ganze FMS Aussendung erfassen +// (44100Hz/1200Bit/s)*56Bit=2058 + Auswertungsspielraum + + + +#define FMS_BUFFERSIZE 10000 + +struct LINE { + char string[LINELEN], subst[ITEMLEN]; + long value; + struct LINE *next; +}; + +typedef struct LINE Line ; + +// + +/* ---------------------------------------------------------------------- */ + +#ifdef WIN32 +#ifndef M_PI +const float M_PI = 3.14159265358979 ; +#endif +#endif + +static const unsigned short crc_table[] = { + 48, 48, 48, 48, 48, 48, 48, 27, + 48, 48, 48, 18, 48, 5, 26, 48, + 48, 48, 48, 37, 48, 1, 17, 48, + 48, 8, 4, 48, 25, 48, 48, 48, + 48, 48, 48, 42, 48, 22, 36, 48, + 48, 30, 0, 48, 16, 48, 48, 13, + 48, 48, 7, 48, 3, 48, 48, 10, + 24, 48, 48, 32, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 46, 41, 48, + 48, 40, 21, 48, 35, 48, 48, 45, + 48, 20, 29, 48, 48, 48, 48, 39, + 15, 48, 48, 44, 48, 34, 12, 48, + 48, 28, 48, 48, 6, 48, 48, 19, + 2, 48, 48, 38, 48, 48, 9, 48, + 23, 48, 48, 43, 48, 14, 31, 48, + 48, 11, 48, 48, 48, 48, 48, 33, +}; + +/** Auswerter f�r FMS Aussendungen. + * Werte die �bergebenen Tondaten aus und sucht nach FMS Aussendungen + * Gefundene Daten werden per XML an den Hauptproze� zur�ckgegeben + */ +class MonitorModuleFMS : + public MonitorModule { +public: + bool IsValid(); + bool test_rxbit(unsigned char bit); + void ClearRXBuf(); + int PruefeTelegramm(int start); + int SucheSync(int start); + void demod_neu(float *buffer, int length); + void demod_se(float *buffer, int length); + virtual void demod(float* buffer, int length); + MonitorModuleFMS(int sampleRate=22050,int vorlaufbits=8, bool crccheck=0, float signallevel=0.4, bool ignore_Wiederholung=true, bool ignore_Quittung=true, int algorithm=1,bool error_correction=false, bool force_preambel=false) ; + MonitorModuleFMS(unsigned int sampleRate,XMLNode *pConfig) ; + virtual ~MonitorModuleFMS(); + +protected: + int distCounter ; + int rules(); + int crc_check(int offset); + int decode(bool test=false); + int dcd_buffer[FMS_BUFFERSIZE+100] ; + int CORRLEN ; + long SPHASEINC ; + + virtual void parseConfigData() ; + bool rxbit(unsigned char bit, bool test=false); + void initialize(int sampleRate, int vorlaufbits, bool crccheck, float signallevel, bool ignore_Wiederholung, bool ignore_Quittung, int algorithm, bool error_correction, bool force_preambel); + + /******************************************************* + Decoder Variables & Coef. calculation + *******************************************************/ + float lp1_c[3],lp2_c[3],bp0_c[3],bp1_c[3]; + float lp1_b[4],lp2_b[4],bp0_b[4],bp1_b[4]; + + unsigned short bit_phase ; + + // Das geht bis max 44100 Hz Samplerate (MaxWert=Samplerate/Baud) (44100/1200=37) ; + float corr_mark_i[40]; + float corr_mark_q[40]; + float corr_space_i[40]; + float corr_space_q[40]; + + float m_fZwPuffer[80] ; // Um den Bereich der L�nge CORRLEN am Ende des Blocks zwischenzuspeichern + + //short int int_corr_mark_i[40]; + //short int int_corr_mark_q[40]; + //short int int_corr_space_i[40]; + //short int int_corr_space_q[40]; + + unsigned int dcd_shreg ; + unsigned int sphase ; + unsigned int lasts[11] ; + unsigned int lastout ; + unsigned int subsamp ; + short quittung ; + + struct FMS { + unsigned short + bos[1], + land[1], + ort[2], + kfz[4], + stat[1], + bst[1], + dir[1], + tki[1], + crc[7]; + short txtnr ; + } fms ; + + + struct VALS{ + short quality ; + unsigned short txtinc, bit, ctrl ; + } vals ; + + +protected: + void fms_bin(short offset, char *c); + void DisplayResult(const std::string input=""); + bool CheckForQuittung(); + bool CheckForDupes(); + void StoreForDupeCheck(); + void fms_txt(short offset,char *c); + bool error_correction(); + bool IsRelatedMessage(); + void StoreForReverseCheck(); + void ErrorOut(); + bool IsSyncWord(unsigned long); + bool feedBuffer(int & start); + bool RMExists(); + bool rx_sample(int x); + void set_filters(float f0, float f1, float dr); + void gen_coef(int tipo, float f0, float Q, float *pcoef); + float biq_hp(float x,float *pcoef,float *buf); + float biq_bp(float x,float *pcoef,float *buf); + float biq_lp(float x,float *pcoef,float *buf); + + //int m_iSkipCounter; + bool m_bErrorCorrection; + int m_iLastSyncState, m_bPrintError ; + int m_iAlgorithmus; + unsigned int m_iLastrxstate ; + float m_fSignallevel; + Line* txtbuf; + std::string m_lpszStatusTabelle; + float m_PLLFaktor; + int SPHASEINC_BASE; + int summe; + struct FMS m_LastMessage; + struct FMS m_ReverseCheckMessage ; + + + float m_fPLLFaktor ; + float Ud ; + + #ifdef FMSDEBUG + FILE *debugFile1, *debugFile2, *debugFile3, *debugFile4; + float fileBuffer1[50000],fileBuffer2[50000], fileBuffer3[50000] ; + float *pBuffer1, *pBuffer2, *pBuffer3 ; + long bufferLen1,bufferLen2, bufferLen3 ; + #endif + +}; + +#endif // !defined(AFX_MYMONMODULEFMS_H__680AB4C3_EAB0_4D03_A913_869FB97EA730__INCLUDED_) diff --git a/monitord/.svn/text-base/MonitorModulePocsag.cpp.svn-base b/monitord/.svn/text-base/MonitorModulePocsag.cpp.svn-base new file mode 100644 index 0000000..81efc14 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulePocsag.cpp.svn-base @@ -0,0 +1,590 @@ +// MyMonModulePocsag.cpp: Implementierung der Klasse MonitorModulePocsag. +// +////////////////////////////////////////////////////////////////////// + + +#include +using namespace std; +#ifdef WIN32 + #include + #include + #include +#endif + +#include "time.h" +#include "MonitorModulePocsag.h" +#include "convert.h" +#include "MonitorLogging.h" + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define LONG unsigned long + +/* + * the code used by POCSAG is a (n=31,k=21) BCH Code with dmin=5, + * thus it could correct two bit errors in a 31-Bit codeword. + * It is a systematic code. + * The generator polynomial is: + * g(x) = x^10+x^9+x^8+x^6+x^5+x^3+1 + * The parity check polynomial is: + * h(x) = x^21+x^20+x^18+x^16+x^14+x^13+x^12+x^11+x^8+x^5+x^3+1 + * g(x) * h(x) = x^n+1 + */ +#define BCH_POLY 03551 /* octal */ +#define BCH_N 31 +#define BCH_K 21 + +/* + * some codewords with special POCSAG meaning + */ +#define POCSAG_SYNC 0x7CD215D8 +#define POCSAG_SYNCINFO 0x7CF21436 +#define POCSAG_IDLE 0x7a89c197 + +#define POCSAG_SYNC_WORDS ((2000000 >> 3) << 13) + + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModulePocsag::MonitorModulePocsag() +{ + maxVal=0.0 ; + dcd_shreg=0 ; + sphase=0 ; + subsamp=0 ; + lastbit=0 ; + m_fTrigger=0.2 ; + global_rx_data=0; + // ctrl=0; + m_bPreambel_detected=false ; + m_bErrorCorrection=true ; + m_iPreambelLen=0 ; + m_bRXmode=false ; + m_iRXErrorCount=0 ; + MAX_RX_ERRORS=1500 ; + PREAMBEL_MINLEN=300 ; + m_iAlgorithmus=0 ; + + SetFilter("^1(.*)",1) ; + for (int i=0; i<2;i++) + { + rx_buff[i].rx_sync=0 ; + rx_buff[i].rx_word=0 ; + rx_buff[i].rx_bit=0 ; + rx_buff[i].numnibbles=0; + rx_buff[i].func=0; + rx_buff[i].adr=0; + memset(rx_buff[i].buffer,0,sizeof(rx_buff[i].buffer)); + rx_buff[i].receiving=0; + } +} + +MonitorModulePocsag::~MonitorModulePocsag() +{ + +} + +void MonitorModulePocsag::demod(float *buffer, int length) +{ + switch (m_iAlgorithmus) + { + case 1: + demod_se(buffer, length) ; // war demod_se ... + break ; + case 0: + default: + demod_mg(buffer, length) ; + } ; +} + +void MonitorModulePocsag::demod_se(float *buffer, int length) +{ + +} + +void MonitorModulePocsag::demod_mg(float *buffer, int length) +{ + +} + +void MonitorModulePocsag::rxbit(int bit) +{ + global_rx_data <<= 1; + global_rx_data |= ( bit==0 ? 0 : 1) ; + // + // Wozu dient das nachfolgende ? Alle Bits invertieren ? + // Skyper Modus ??????? + do_one_bit(rx_buff, ~(global_rx_data)); + + // Mit dieser Zeile alleine geht's zumindest bei mir ;-) + // + do_one_bit(rx_buff + 1, global_rx_data); +} + +void MonitorModulePocsag::do_one_bit(struct rx *rx, unsigned long rx_data) +{ + unsigned char rxword; + + unsigned char dumpString[5] ; + unsigned long data; + unsigned char *bp; + + dumpString[0]=0x00 ; + dumpString[1]=0x00 ; + dumpString[2]=0x00 ; + dumpString[3]=0x00 ; + dumpString[4]=0x00 ; + + /* TODO: Hack fuer 64Bit Systeme. Da ist ein unsigned long 8 Byte gross. Die + * SYNC-Worte etc. sind aber nur 4 Byte gross. Da uns immer nur die letzten 4 Bytes + * interessieren werden vorderen 4 Bytes per Und-Verknüpfung auf Null gesetzt. + * Dann passen auch wieder die Vergleiche bei den Sync-Worten + * + * Ggf. muesste man das hier noch netter gestalten. Aber so geht's auf jeden Fall :) + * SE, 15.08.09 + */ + rx_data &= 0xffffffff ; + + if ( ( (!rx->rx_sync)) ) // || (m_iRXErrorCount>MAX_RX_ERRORS) ) + { + rx->rx_sync=0 ; + } ; + + + if (!rx->rx_sync) { + if (isSync(rx_data)) { + rx->rx_sync = 2 ; // war: 10 -- vielleicht auch 4/5/6 ? + rx->rx_bit = rx->rx_word = 0; + rx->func = -1; + FILE_LOG(logDEBUG)<< "Sync gefunden\n" ; + //TRACE0("Sync gefunden\n") ; + m_iPreambelLen =0 ; + m_bRXmode=true ; + m_iRXErrorCount=0 ; + return; + } + return; + } + + if ((++(rx->rx_bit)) < 32) return; + + /* one complete word received */ + rx->rx_bit = 0; + + unsigned long compareData =rx_data ; + + /* check codeword */ + if (error_correction(rx_data)==false) { + //TRACE2("CODEWORD ung?ltig (DATA=0x%4x = \"%s\")\n",rx_data,dumpString) ; + /* codeword not valid */ + rx->rx_sync--; + rx->rx_word++; /* Zeile als Programmkorrektur eingef?gt */ + m_iRXErrorCount++ ; + /*Bad codeword */ + if (!(rx->func & (~3))) { + /* message garbled */ + printmessage(rx) ; + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + } + rx->func = -1; /* invalidate message */ + return; + } + + // Hier kommen wir nur hin, wenn das Codewort g?ltig ist + // + + if (rx_data!=compareData) + { + //TRACE0("Error correction applied\n") ; + }; + + /* do something with the data */ + // printf("%s%s: Codeword: %08lx\n", s->dem_par->name, add_name, rx_data); + rxword = rx->rx_word++; + + if (rxword >= 16) { + /* received word shoud be a frame synch */ + rx->rx_word = 0; + if ((rx_data == POCSAG_SYNC) || (rx_data == POCSAG_SYNCINFO)) + { + rx->rx_sync = 10; + //TRACE0("erneutes Sync gefunden\n") ; + // m_iPreambelLen =0 ; + m_bRXmode=true ; + m_iRXErrorCount=0 ; + } + else + rx->rx_sync -= 2; + return; + } + + if (rx_data == POCSAG_IDLE) { + // RotateString(dumpString, rx_data) ; + + //TRACE1("CODEWORD g?ltig (IDLE-WORD = %s) \n",dumpString) ; + /* it seems that we can output the message right here */ + if (!(rx->func & (~3))) + { + printmessage(rx); + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + } + rx->func = -1; /* invalidate message */ + return; + } + + + if ((rx_data & 0x80000000) ==0) + { + LONG testadr= ((rx_data >> 10) & 0x1ffff8) | ((rxword >> 1) & 7); + + if ((unsigned char)(testadr & 0x7) != (rx->rx_word>>1)) + { + //TRACE0("Adresswort im falschen Frame -> Als Daten auswerten \n") ; + // rx_data |= 0x80000000 ; + } ; + } ; + + if (rx_data & 0x80000000 || rx_data == 0x7cd215d8) { + //RotateString(dumpString, rx_data) ; + // TRACE2("CODEWORD g?ltig (DATA=0x%4x = \"%s\") \n",rx_data,dumpString) ; + /* this is a data word */ + + if (rx_data & 0x80000000) rx->receiving = 1; + else rx->receiving = 0; + + if (rx->func & (~3)) { + /* no message being received + * Lonesome data codeword */ + return; + } + if (rx->numnibbles > sizeof(rx->buffer) * 2 - 5) { + /* Warning: Message too long */ + printmessage(rx); + rx->func = -1; + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + return; + } + + bp = rx->buffer + (rx->numnibbles >> 1); + data = rx_data >> 11; + if (rx->numnibbles & 1) { + bp[0] = (bp[0] & 0xf0) | ((data >> 16) & 0xf); + bp[1] = data >> 8; + bp[2] = data; + } + else { + bp[0] = data >> 12; + bp[1] = data >> 4; + bp[2] = data << 4; + } + rx->numnibbles += 5; + return; + } + + /* process address codeword */ +/* if (rx_data >= POCSAG_SYNC_WORDS) { + unsigned char func = (rx_data >> 11) & 3; + unsigned long adr = ((rx_data >> 10) & 0x1ffff8) | + ((rxword >> 1) & 7); + + verbprintf(0, "%s%s: Nonstandard address codeword: %08lx " + "func %1u adr %08lx\n", s->dem_par->name, add_name, rx_data, + func, adr); + return; + } +*/ + + if (!(rx->func & (~3))) + { + printmessage(rx); + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + } + + /*rx->buffer[0]=0x00 ; + rx->buffer[1]=0x00 ; + */ + + + //long tempAdr ; - Kann man da noch etwas retten ??? (Test,SE) + rx->func = (rx_data >> 11) & 3; + rx->adr = ((rx_data >> 10) & 0x1ffff8) | ((rxword >> 1) & 7); + //tempAdr = ((rx_data >> 10) & 0x1ffff8) | ((rxword >> 1) & 7); + rx->numnibbles = 0; + /* + if (tempAdr>8) + { + rx->adr=tempAdr ; + + bp=(unsigned char*) dumpString ; + data=rx_data>> 11 ; + + if (rx->numnibbles & 1) { + bp[0] = (bp[0] & 0xf0) | ((data >> 16) & 0xf); + bp[1] = data >> 8; + bp[2] = data; + } + else { + bp[0] = data >> 12; + bp[1] = data >> 4; + bp[2] = data << 4; + } + + //TRACE3("CODEWORD g?ltig (ADDRESS=%d ,Frame=%d, rxCount=%d) \n",rx->adr,rx->adr & 0x7,rx->rx_word>>1) ; + if ((rx->adr & 0x7) != (rx->rx_word>>1)) + int doof=0 ; + //TRACE0("Vermutlich ein Fehlerhaftes Adresswort !-------------------------------\n") ; + } ; + */ + +} + +void MonitorModulePocsag::printmessage(struct MonitorModulePocsag::rx *rx) +{ + char Funktionsbit [5]= " " ; + + if (rx->adr==0) return ; // Adresse == 0 macht keine Sinn ... + + Funktionsbit[0] = rx->func < 10 ? '0' + rx->func : 'A' + rx->func-10 ; + //itoa( rx->func , Funktionsbit,16) ; + + char Adresse[10] ; + sprintf(Adresse, "%07d", (int) rx->adr ) ; + + std::string outString ; + std::string message="" ; + + // Fuer Crusader und FMS32Pro Modus + char dateStr[9]; + char timeStr[9]; + //char subString[2]; + std::string subString ; + + std::string counterCString ; + + if (!isnumeric(rx, message)) + { + RotateString (message,rx) ; + } ; + + std::string jetzt ; + + currentTime(jetzt) ; // aktuelle Uhrzeit holen + struct tm* tm_time= localtime(&m_time) ; + strftime(dateStr,9,"%d.%m.%y" ,tm_time) ; + strftime(timeStr,9,"%H:%M:%S" ,tm_time) ; + + + ModuleResultBase *pRes =new ModuleResultBase() ; + + pRes->set("timestamp",jetzt); + pRes->set("uhrzeit",timeStr) ; + pRes->set("datum",dateStr) ; + pRes->set("servernamehex",m_serverNameHex); + pRes->set("channelnamehex",m_channelNameHex); + pRes->set("channelnum",convertIntToString(m_iChannelNum)); + + pRes->set("typ","pocsag"); + pRes->set("subhex",subString) ; + pRes->set("sub",std::string(Funktionsbit)) ; + pRes->set("ric",Adresse) ; + pRes->set("text",message) ; + + FILE_LOG(logDEBUG) << "Debug(POCSAG):" << endl << (*pRes) ; + + + GlobalDispatcher->addResult(pRes) ; + + // StoreResult(rx) ; +} + +unsigned int MonitorModulePocsag::syndrome(unsigned long data) +{ + unsigned long shreg = data >> 1; /* throw away parity bit */ + unsigned long mask = 1L << (BCH_N-1), coeff = BCH_POLY << (BCH_K-1); + int n = BCH_K; + + for(; n > 0; mask >>= 1, coeff >>= 1, n--) + if (shreg & mask) + shreg ^= coeff; + if (even_parity(data)) + shreg |= (1 << (BCH_N - BCH_K)); +// printf("BCH syndrome: data: %08lx syn: %08lx\n", data, shreg); + return shreg; +} + +unsigned char MonitorModulePocsag::even_parity(unsigned long data) +{ + unsigned int temp = data ^ (data >> 16); + + temp = temp ^ (temp >> 8); + temp = temp ^ (temp >> 4); + temp = temp ^ (temp >> 2); + temp = temp ^ (temp >> 1); + return temp & 1; +} + +bool MonitorModulePocsag::error_correction(unsigned long & rx_data) +{ + if (!syndrome(rx_data)) return true ; + if (!m_bErrorCorrection) return false ; + + if (rx_data==0) return false ; + + int bit1=0,bit2=0 ; + unsigned long mask1=1 , mask2 ; + + bit2=0 ; + mask2=1 ; + + // Im ersten Lauf alle Bit's einmal invertieren + // + do + { + rx_data ^= mask2 ; + if (!syndrome(rx_data)) return true ; + bit2++ ; + rx_data ^= mask2 ; + mask2 <<=1 ; + } while (bit2<31) ; + + // Offensichtlich bringt das invertieren eines Bits nichts, also versuchen 2 Bits + // zu invertieren + // + do + { // Das Bit laut Z?hler bit1 invertieren + // + rx_data ^= mask1 ; + if (!syndrome(rx_data)) return true ; + + bit2=bit1 ; + mask2= 1 ; + mask2 <<= bit2 ; + + do + { // Als zweites das Bit bit2 invertieren + // + rx_data ^= mask2 ; + if (!syndrome(rx_data)) return true ; + bit2++ ; + rx_data ^= mask2 ; + mask2 <<=1 ; + } while (bit2<32) ; + + bit1 ++ ; + rx_data ^= mask1 ; + mask1 <<=1 ; + } while (bit1 < 32) ; + + return false ; +} + +void MonitorModulePocsag::RotateString(std::string & buffer, struct rx *rx) +{ + unsigned long data = 0; + int datalen = 0; + unsigned char *bp = rx->buffer; + int len = rx->numnibbles; + + + unsigned char curchr; + const char *tstr; + bool ctrl=true ; + + while (len > 0) { + while (datalen < 7 && len > 0) { + if (len == 1) { + data = (data << 4) | ((*bp >> 4) & 0xf); + datalen += 4; + len = 0; + } else { + data = (data << 8) | *bp++; + datalen += 8; + len -= 2; + } + } + if (datalen < 7) + continue; + datalen -= 7; + /* 7-bit-Code, ein Shift left und revers: */ + curchr = ((data >> datalen) & 0x7f) << 1; + curchr = ((curchr & 0xf0) >> 4) | ((curchr & 0x0f) << 4); + curchr = ((curchr & 0xcc) >> 2) | ((curchr & 0x33) << 2); + curchr = ((curchr & 0xaa) >> 1) | ((curchr & 0x55) << 1); + tstr = translate_alpha(curchr); + if (tstr) { + /* Steuerzeichen ausgeben? */ + if (ctrl + || ((curchr & 0x58) == 0x58 && (curchr & 0x7) >= 3 && (curchr & 0x7) <= 5) + || curchr == 0x7e) { + buffer.append(tstr) ; + } + } + else { + buffer.append (1,curchr) ; + } + } +} + +void MonitorModulePocsag::StoreResult(struct rx *rx) +{ + + +} + +bool MonitorModulePocsag::isnumeric(rx *rx, std::string & message) +{ + // Keine Numeric-Kontrolle mehr ;-) + return false ; + +} + + +void MonitorModulePocsag::SetTrigger(float trigger) +{ + m_fTrigger=trigger ; +} + +bool MonitorModulePocsag::isSync(unsigned long rxdata) +{ + int counter_SYNC=0, counter_SYNCINFO=0 ; + /* ToDo: unsigned long / signed long sind auf 64Bit System (8 !) Byte gross statt 4 ! + * Deswegen vermutlich Fehler in der Sync-Detection ! + */ + unsigned long VergleichSYNC=POCSAG_SYNC ; + unsigned long VergleichSYNCINFO=POCSAG_SYNCINFO ; + + + if (!m_bErrorCorrection) + return (rxdata == POCSAG_SYNC || rxdata == POCSAG_SYNCINFO ) ; + + // Aha - Fehlerkorrektur gew?nscht + // + + for (int i=0; i < 32 ; i++) + { + if ( (rxdata & 0x1) == (VergleichSYNC & 0x1) ) + { + counter_SYNC++ ; + } ; + + if ( (rxdata & 0x1) == (VergleichSYNCINFO & 0x1) ) + { + counter_SYNCINFO++ ; + } ; + + VergleichSYNC >>= 1 ; + VergleichSYNCINFO >>= 1 ; + rxdata >>=1 ; + } + return ((counter_SYNC >30) || (counter_SYNCINFO>30)) ; +} diff --git a/monitord/.svn/text-base/MonitorModulePocsag.h.svn-base b/monitord/.svn/text-base/MonitorModulePocsag.h.svn-base new file mode 100644 index 0000000..01dda44 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulePocsag.h.svn-base @@ -0,0 +1,140 @@ +/* MyMonModulePocsag.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ +#if !defined(AFX_MYMONMODULEPOCSAG_H__B679D6FA_C954_4D9C_BDBE_920B4374E572__INCLUDED_) +#define AFX_MYMONMODULEPOCSAG_H__B679D6FA_C954_4D9C_BDBE_920B4374E572__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +// -------------------------------------------- +// 1. POCDEBUG definieren +// 2. POCDEBUG512 oder POCDEBUG1200 definieren +// = Aufname der Audiodaten, des Schmitt-Triggers, des PD-Outputs und des regen. Taktsignals +// als RAW, 32Bit Float, Mono +// -------------------------------------------- + +//#define POCDEBUG +#ifdef POCDEBUG + // ACHTUNG ! Dateiname ist fest vorgegeben NUR EINE BAUDRATE DEBUGGEN ! + #define POCDEBUG1200 + //#define POCDEBUG512 +#endif + +#include "MonitorModules.h" +//#include "regexp.h" +#include "math.h" + +#define MAXSAMPLEVALUES 350 + +class MonitorModulePocsag : public MonitorModule +{ +public: + void SetTrigger(float trigger); + void demod(float *buffer, int length); + virtual void demod_se(float *buffer, int length); + virtual void demod_mg(float *buffer, int length); + + MonitorModulePocsag(); + virtual ~MonitorModulePocsag(); + + struct rx { + unsigned char rx_sync, rx_word, rx_bit, numnibbles; + char func; + unsigned long adr; + unsigned char buffer[128]; + int receiving; + // bool m_bRXmode ; + // int m_iPreambelLen + // bool m_bPreambel_detected ; + // COleDateTime m_dtPreambel_detected ; + } ; + +protected: + bool isSync(unsigned long rxdata); + float maxVal; + bool isnumeric(struct rx *rx, std::string & message); + int lastbit; + unsigned int dcd_shreg; + unsigned int sphase; + unsigned int subsamp; + int m_iReceivedBits; + int m_iAlgorithmus; + + // -- Fier SE demod Algorithmus + float m_fTrigger; // Schmitt-Trigger Grenzwert + float m_fPLLFaktor; // Max. "Geschwindigkeitsnderung des PLL + int m_lastVal[50] ; // letzte Werte fr Edgedetektor, Laenge = ? + int Ud ; // Ausgang Phasendetektor + int Udiff ; // "Differenziertes Eingangssignal" + bool didBit ; // Fr aktuelle Tankwelle ein Bit schon empfagen (fallend Flanke im Taksignal) + int Uphase ; // Taktsignal selbst (1 oder -1) + int lastUdiff ;// Fr Schmitt-Trigger + int SPHASEINC_BASE; + + bool m_negativeCorrection; //Kennzeichner ob SPAHASE ins positive oder ins negative korrigiert werden muss + + // Debugging: + #ifdef POCDEBUG + FILE *debugFile1, *debugFile2, *debugFile3, *debugFile4; + float fileBuffer1[50000],fileBuffer2[50000], fileBuffer3[50000] ; + float *pBuffer1, *pBuffer2, *pBuffer3 ; + long bufferLen1,bufferLen2, bufferLen3 ; + #endif + + + void StoreResult(struct rx *rx); + void RotateString(std::string & buffer,struct rx *rx) ; + + bool m_bRXmode; + int m_iRXErrorCount ; + int m_iPreambelLen ; + bool m_bErrorCorrection; + int PREAMBEL_MINLEN ; + int MAX_RX_ERRORS ; + //COleDateTime m_dtPreambel_detected; + bool m_bPreambel_detected; + bool error_correction(unsigned long & rx_data); + unsigned int SPHASEINC ; + unsigned long global_rx_data; + // unsigned short ctrl; + struct rx rx_buff[2] ; + + static inline unsigned char even_parity(unsigned long data); + unsigned int syndrome(unsigned long data); + void printmessage(struct rx *rx); + void do_one_bit(struct rx *rx, unsigned long rx_data); + void rxbit(int bit); +}; + +#endif // !defined(AFX_MYMONMODULEPOCSAG_H__B679D6FA_C954_4D9C_BDBE_920B4374E572__INCLUDED_) diff --git a/monitord/.svn/text-base/MonitorModulePocsag1200.cpp.svn-base b/monitord/.svn/text-base/MonitorModulePocsag1200.cpp.svn-base new file mode 100644 index 0000000..2729423 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulePocsag1200.cpp.svn-base @@ -0,0 +1,345 @@ +/* MyMonModulesPocsag1200.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +// MyMonModulePocsag1200.cpp: Implementierung der Klasse MonitorModulePocsag1200. +// +////////////////////////////////////////////////////////////////////// + + +#include "MonitorModulePocsag1200.h" + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define BAUD 1200 +// es wird nur jedes x-te Sample ausgewertet (Auch PLLFaktor und Detektorbreite anpassen) +#define SUBSAMP 2 +// max. Prozent-�nderungen Frq.-�nderung am PLL +// und Schmitt-Trigger +// und Breite der Rechtecke des Flankendetektors +// +#define PLLFaktor (5.0/100.0) +#define SchmittTriggerLevel (0.05/1000.0) +#define DETEKTOR_BREITE 7 + + +#define FILTLEN 1 + +#define GRENZWERT 0.3 + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModulePocsag1200::MonitorModulePocsag1200(XMLNode *pConfig) +{ + int sampleRate=22050 ; + bool crccheck=getNodeBool(*pConfig,"crc-check",true) ; + bool errorcorrection=getNodeBool(*pConfig,"ecc",false) ; + int minpreambel=getNodeInt(*pConfig,"minpreambel",0) ; + int maxerrors=getNodeInt(*pConfig,"maxerrors",0) ; + int algorithmus=getNodeInt(*pConfig,"algorithm",0) ; + MonitorModulePocsag1200( sampleRate, + crccheck, + errorcorrection, + minpreambel, + maxerrors, + algorithmus); + +} + +MonitorModulePocsag1200::MonitorModulePocsag1200(int sampleRate, bool crccheck, bool errorcorrection, int minpreambel, int maxerrors, int algorithmus) +{ + m_bErrorCorrection=errorcorrection ; + // m_bCRCCheck=crccheck ; + MAX_RX_ERRORS=maxerrors ; + PREAMBEL_MINLEN=minpreambel ; + + m_iAlgorithmus=algorithmus ; + //m_iAlgorithmus=1; + + FREQ_SAMP=sampleRate ; + + + SPHASEINC=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + SPHASEINC_BASE=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + m_lpszName="POC 1200" ; + + m_fPLLFaktor=PLLFaktor ; // max. Prozent-�nderungen Frq.-�nderung am PLL + m_fTrigger=SchmittTriggerLevel ; + // debugging + + #ifdef POCDEBUG1200 + debugFile1 = fopen("_in.raw", "wb"); + debugFile2 = fopen("_sphase.raw", "wb"); + debugFile3 = fopen("_trigger.raw", "wb"); + debugFile4 = fopen("_rx.raw", "wb"); + #endif +} + +MonitorModulePocsag1200::~MonitorModulePocsag1200() +{ + #ifdef POCDEBUG1200 + fclose(debugFile1) ; + fclose(debugFile2) ; + fclose(debugFile3) ; + fclose(debugFile4) ; + #endif +} + +void MonitorModulePocsag1200::demod(float *buffer, int length) +{ + switch (m_iAlgorithmus) + { + case 0: + demod_mg(buffer, length) ; // war demod_se ... + break ; + case 1: + demod_se(buffer, length) ; // war demod_se ... + break ; + default: + demod_mg(buffer, length) ; + } ; +} + + +void MonitorModulePocsag1200::demod_se(float *buffer, int length) +{ + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + + + #ifdef POCDEBUG1200 + // Startwerte + fwrite(buffer, sizeof(float), length,debugFile1); + pBuffer1=fileBuffer1 ; + pBuffer2=fileBuffer2 ; + pBuffer3=fileBuffer3 ; + bufferLen1=0 ; + bufferLen2=0 ; + bufferLen3=0 ; + #endif + + + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + + + //m_LastFilterVal= m_weight * ((double)(*buffer)) + ( 1.0 - m_weight ) * m_LastFilterVal; + + //m_LastFilterVal= m_LastFilterVal + (m_weight * ( ((double)(*buffer)) - m_LastFilterVal)) ; + + // m_LastFilterVal=*buffer ; + + + // Mit einem Schmitt-Trigger die Flanken ansteilen und Rauschen + // Eliminieren + // + if (lastbit==0) + { + if ((*buffer) > m_fTrigger) + { + lastbit=1; + } ; + } else { + if ((*buffer) < -m_fTrigger) + { + lastbit=0; + } ; + } ; + + dcd_shreg |= (lastbit==1 ? 1 : 0) ; + //dcd_shreg |= lastbit; + + for (int ming=40;ming>0;ming--) + { + m_lastVal[ming] = m_lastVal[ming-1] ; + } + + m_lastVal[0] = lastbit ; + + if ((m_lastVal[0] + m_lastVal[DETEKTOR_BREITE]) == 1 ) + //if ( ((dcd_shreg >>9) &0x01) ^ (dcd_shreg & 0x01)) // Flankendetektor + { + Udiff=1 ; + } + else + { + Udiff=0 ; + } + + // Udiff = Eingang zum PD + // + // PD ist ein Exor -> + // SPHASE 0...0x8000 = positive Halbwelle (1) + // SPHASE 0x8000...0x10000 = negative Halbwelle (0) + // 0x8 ist die H�lfte von 0x10 -> Hexadezimal !! :) + + // text darueber ist wertlos + // 0x0000 ... 0xFFFF: Beschreibt ein Bit (eine HALBwelle) + //--> 0x8000 ist der Punk im Rechteck genau zwischen zwei Flanken (zumindest bei der Pr�ambel) + + + if (sphase <= 0x8000) + { + Uphase=1 ; + } else + { + Uphase=0 ; + } + + if (Udiff > lastUdiff) + { + // Flanke im Schmitt-Trigger (u1) + //ah + if (sphase >0x8000) + { + //sphase is too slow + Ud= (0x10000-sphase) ; + m_negativeCorrection = false; + } else + { + //sphase is too fast + Ud = sphase ; + m_negativeCorrection = true; + } + } + + if(m_negativeCorrection) + SPHASEINC=(unsigned int) (( (double) SPHASEINC_BASE) * (1.0 - ( m_fPLLFaktor*Ud)/0x8000 )) ; + else + SPHASEINC=(unsigned int) (( (double) SPHASEINC_BASE) * (1.0 + ( m_fPLLFaktor*Ud)/0x8000 )) ; + + //Ud=(Ud*99) /100 ; + sphase += SPHASEINC ; + + lastUdiff = Udiff ; + //lastUphase = Uphase ; + + #ifdef POCDEBUG1200 + //*pBuffer1=Uphase*0.75 ; + //*pBuffer2=Udiff*0.75 ; + //*pBuffer3=(Ud*0.75)/0x8000 ; + //*pBuffer3=m_LastFilterVal ; + //*pBuffer1 = (*buffer); + *pBuffer1 = ((sphase) * 0.5) / 0x10000; + *pBuffer2 = (lastbit==1 ? 0.5 : -0.5); + //*pBuffer3 = 0.0f; + *pBuffer3 = Ud / 0x8000; + + + //if ((rx_buff+1)->rx_sync) // inSync + //{ + //*pBuffer2=Udiff*0.45+0.5 ; + //} + pBuffer1++ ; + pBuffer2++ ; + pBuffer3++ ; + bufferLen1++ ; + bufferLen2++ ; + bufferLen3++ ; + #endif + + + if ((sphase>=0x8000u) && (didBit==false)) + { + #ifdef POCDEBUG1200 + //*(pBuffer2-1)=-0.3 - 0.3*lastbit ; + //*(pBuffer2-1)= -1.0; + #endif + rxbit( lastbit ) ; + didBit = true ; + } + + if (sphase>=0x10000u) + { + // FILE_LOG(logINFO) << "sphase:" << sphase << " -> " << (sphase & (0xffff)) ; + sphase = sphase & 0xffff ; + didBit = false ; + } + + + } + + #ifdef POCDEBUG1200 + fwrite(fileBuffer1, sizeof(float), bufferLen1,debugFile2); + fwrite(fileBuffer2, sizeof(float), bufferLen2,debugFile3); + fwrite(fileBuffer3, sizeof(float), bufferLen3,debugFile4); + #endif + subsamp = length; +} + + + + +// ------------------ old version ------------------------- + +void MonitorModulePocsag1200::demod_mg(float *buffer, int length) +{ + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + dcd_shreg |= ((*buffer) > 0); + + // check if transition + if ((dcd_shreg ^ (dcd_shreg >> 1)) & 1) { + if (sphase < (0x8000u - (SPHASEINC / 2))) + sphase += SPHASEINC / 8; + else + sphase -= SPHASEINC / 8; + } + sphase += SPHASEINC; + + if (sphase >= 0x10000u) { + sphase &= 0xffffu; + rxbit(dcd_shreg & 1); + } + } + subsamp = length; +} diff --git a/monitord/.svn/text-base/MonitorModulePocsag1200.h.svn-base b/monitord/.svn/text-base/MonitorModulePocsag1200.h.svn-base new file mode 100644 index 0000000..c4a5fc5 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulePocsag1200.h.svn-base @@ -0,0 +1,58 @@ +/* MyMonModulesPocsag1200.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */// MyMonModulePocsag1200.h: Schnittstelle f�r die Klasse MonitorModulePocsag1200. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MYMONMODULEPOCSAG1200_H__572ACD5B_3877_41FC_9C6B_1073970E7100__INCLUDED_) +#define AFX_MYMONMODULEPOCSAG1200_H__572ACD5B_3877_41FC_9C6B_1073970E7100__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "MonitorModulePocsag.h" + +class MonitorModulePocsag1200 : public MonitorModulePocsag +{ +public: + virtual void demod_se(float *buffer, int length); + virtual void demod_mg(float *buffer, int length); + MonitorModulePocsag1200(int sampleRate=22050, bool crcheck=true, bool errorcorrection=true, int minpreambel=300, int maxerrors=10, int algorithmus=1) ; + MonitorModulePocsag1200(XMLNode *pConfig); + virtual ~MonitorModulePocsag1200(); + void demod(float *buffer, int length) ; +protected: + +}; + +#endif // !defined(AFX_MYMONMODULEPOCSAG1200_H__572ACD5B_3877_41FC_9C6B_1073970E7100__INCLUDED_) diff --git a/monitord/.svn/text-base/MonitorModulePocsag512.cpp.svn-base b/monitord/.svn/text-base/MonitorModulePocsag512.cpp.svn-base new file mode 100644 index 0000000..b6bb6f0 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulePocsag512.cpp.svn-base @@ -0,0 +1,374 @@ +// MyMonModulesPocsag512.cpp: Implementierung der Klasse CMyMonModulesPocsag512. +// +////////////////////////////////////////////////////////////////////// + + +#include "MonitorModulePocsag512.h" + + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define BAUD 512 +//#define POC512SUBSAMP 1 +// es wird nur jedes x-te Sample ausgewertet (Auch PLLFaktor und Detektorbreite anpassen) +#define SUBSAMP 1 +// max. Prozent-�nderungen Frq.-�nderung am PLL +// und Schmitt-Trigger +// und Breite der Rechtecke des Flankendetektors +// 1.0 ,0 ,7 - ganz gut +// 0.3 , 0.0001 , 7 - gut +// 0.1 , 0.0001 , 7 - ? +// 0.15 , 0.0001, 3 - schaut gut aus +#define PLLFaktor (0.25/100.0) +#define SchmittTriggerLevel (0.0000) +#define DETEKTOR_BREITE 5 +// war SUBSAMP = 5 + + +/* ---------------------------------------------------------------------- */ + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModulePocsag512::MonitorModulePocsag512(int sampleRate,XMLNode *pConfig) +{ + bool crccheck=getNodeBool(*pConfig,"crc-check",true) ; + bool errorcorrection=getNodeBool(*pConfig,"ecc",false) ; + int minpreambel=getNodeInt(*pConfig,"minpreambel",300) ; + int maxerrors=getNodeInt(*pConfig,"maxerrors",10) ; + int algorithmus=getNodeInt(*pConfig,"algorithm",1) ; + FILE_LOG(logINFO) << "(1) sample - crc - ecc - minpreambel - maxerrors - algo:" + << sampleRate << " - " + << crccheck << " - " + << errorcorrection << " - " + << minpreambel << " - " + << maxerrors << " - " + << algorithmus ; + + MonitorModulePocsag512(sampleRate,1,0) ; + /* + MonitorModulePocsag512( sampleRate, + crccheck == true ? 1:0 , + errorcorrection== true ? 1:0, + minpreambel, + maxerrors, + algorithmus); + */ +} + +MonitorModulePocsag512::MonitorModulePocsag512(int sampleRate, bool crccheck, bool errorcorrection, int minpreambel, int maxerrors, int algorithmus) +{ + FILE_LOG(logINFO) << "(2) sample - crc - ecc - minpreambel - maxerrors - algo:" + << sampleRate << " - " + << crccheck << " - " + << errorcorrection << " - " + << minpreambel << " - " + << maxerrors << " - " + << algorithmus ; + m_bErrorCorrection=errorcorrection ; + + MAX_RX_ERRORS=maxerrors ; + PREAMBEL_MINLEN=minpreambel ; + + m_iAlgorithmus=algorithmus ; + FILE_LOG(logINFO) << "Algorithmus:" << m_iAlgorithmus ; + + FREQ_SAMP=sampleRate ; + + SPHASEINC=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + SPHASEINC_BASE=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + + FILE_LOG(logINFO) << "SPHASE_INC is:" << SPHASEINC_BASE ; + m_lpszName="POC 512" ; + + m_fPLLFaktor=PLLFaktor ; // max. Prozent-�nderungen Frq.-�nderung am PLL + m_fTrigger=SchmittTriggerLevel ; + // debugging + + #ifdef POCDEBUG512 + debugFile1 = fopen("_in.raw", "wb"); + debugFile2 = fopen("_takt.raw", "wb"); + debugFile3 = fopen("_trigger.raw", "wb"); + debugFile4 = fopen("_pfd.raw", "wb"); + #endif + + set_filters(1200,1800,BAUD); +} + +MonitorModulePocsag512::~MonitorModulePocsag512() +{ + #ifdef POCDEBUG512 + fclose(debugFile1) ; + fclose(debugFile2) ; + fclose(debugFile3) ; + fclose(debugFile4) ; + #endif +} + + +void MonitorModulePocsag512::demod_se(float *buffer, int length) +{ + double y ; + + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + + + #ifdef POCDEBUG512 + // Startwerte + fwrite(buffer, sizeof(float), length,debugFile1); + pBuffer1=fileBuffer1 ; + pBuffer2=fileBuffer2 ; + pBuffer3=fileBuffer3 ; + bufferLen1=0 ; + bufferLen2=0 ; + bufferLen3=0 ; + #endif + + + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + + // Mit einem Schmitt-Trigger die Flanken ansteilen und Rauschen + // Eliminieren + // + if (lastbit==0) + { + if ((*buffer) > m_fTrigger) + { + lastbit=1; + } ; + } else { + if ((*buffer) < -m_fTrigger) + { + lastbit=0; + } ; + } ; + + y=biq_lp(biq_lp( (lastbit==1? 1.0:-1.0) ,lp1_c,lp1_b),lp2_c,lp2_b); + + //dcd_shreg |= (lastbit==1 ? 1 : 0) ; + lastbit= (y>0 ? 1:0) ; + dcd_shreg |= (lastbit==1 ? 1 : 0) ; + + for (int ming=40;ming>0;ming--) + { + m_lastVal[ming] = m_lastVal[ming-1] ; + } + + m_lastVal[0] = lastbit ; + + if ((m_lastVal[0] + m_lastVal[DETEKTOR_BREITE]) == 1 ) + //if ( ((dcd_shreg >>9) &0x01) ^ (dcd_shreg & 0x01)) // Flankendetektor + { + Udiff=1 ; + } + else + { + Udiff=0 ; + } + + // Udiff = Eingang zum PD + // + // PD ist ein Exor -> + // SPHASE 0...0x8000 = positive Halbwelle (1) + // SPHASE 0x8000...0x10000 = negative Halbwelle (0) + // 0x8 ist die H�lfte von 0x10 -> Hexadezimal !! :) + + + if (sphase <= 0x8000) + { + Uphase=1 ; + } else + { + Uphase=0 ; + } + + + if (Udiff > lastUdiff) + { + // Flanke im Schmitt-Trigger (u1) + if (sphase >0x8000) + { + Ud= (0x10000-sphase) ; + } else + { + Ud = sphase ; + } + } + + #ifdef POCDEBUG512 + *pBuffer1=Uphase*0.75 ; + *pBuffer2=Udiff*0.75 ; + *pBuffer3=(Ud*0.75)/0x8000 ; + //*pBuffer3=m_LastFilterVal ; + + if ((rx_buff+1)->rx_sync) // inSync + { + *pBuffer2=Udiff*0.45+0.5 ; + } + pBuffer1++ ; + pBuffer2++ ; + pBuffer3++ ; + bufferLen1++ ; + bufferLen2++ ; + bufferLen3++ ; + #endif + + + SPHASEINC=(unsigned int) (( (double) SPHASEINC_BASE) * (1.0 + ( m_fPLLFaktor*Ud)/0x8000 )) ; + sphase += SPHASEINC ; + + lastUdiff = Udiff ; + + if ((sphase>=0x8000u) && (didBit==false)) + { + #ifdef POCDEBUG512 + *(pBuffer2-1)=-0.3 - 0.3*lastbit ; + #endif + rxbit( lastbit ) ; + didBit = true ; + } + + if (sphase>=0x10000u) + { + // FILE_LOG(logINFO) << "sphase:" << sphase << " -> " << (sphase & (0xffff)) ; + sphase = sphase & 0xffffu ; + didBit = false ; + } + } + + #ifdef POCDEBUG512 + + fwrite(fileBuffer1, sizeof(float), bufferLen1,debugFile2); + fwrite(fileBuffer2, sizeof(float), bufferLen2,debugFile3); + fwrite(fileBuffer3, sizeof(float), bufferLen3,debugFile4); + #endif + subsamp = length; +} + + +// --------- old function ----------- +void MonitorModulePocsag512::demod_mg(float *buffer, int length) +{ + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + dcd_shreg |= ((*buffer) > 0); + + // check if transition + if ((dcd_shreg ^ (dcd_shreg >> 1)) & 1) { + if (sphase < (0x8000u - (SPHASEINC / 2))) + sphase += SPHASEINC / 8; + else + sphase -= SPHASEINC / 8; + } + sphase += SPHASEINC; + + if (sphase >= 0x10000u) { + sphase &= 0xffffu; + rxbit(dcd_shreg & 1); + } + } + subsamp = length; +} + + +// ********************************************************* +// ** IIR Filter +// ********************************************************* + +inline float MonitorModulePocsag512::biq_lp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x+buf[0]+buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModulePocsag512::biq_bp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModulePocsag512::biq_hp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[0]-buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +void MonitorModulePocsag512::gen_coef(int tipo, float f0, float Q, float *pcoef) +{ + float w0,a,d; + + w0=2.*M_PI*f0; + + //Prewharping + w0=2.0*FREQ_SAMP*tan(w0/FREQ_SAMP/2.0); + + a=FREQ_SAMP/w0; + d=4.*a*a +2.*a/Q +1.; + + switch(tipo){ + case 0: (*pcoef++)=1.0/d; break; + case 1: (*pcoef++)=2.*a/Q/d; break; + case 2: (*pcoef++)=4.*a*a/d; break; + } + + (*pcoef++)=(8.*a*a -2.)/d; + (*pcoef++)=-(4.*a*a -2.*a/Q +1.)/d; +} + +void MonitorModulePocsag512::set_filters(float f0, float f1, float dr) +{ + gen_coef(1,f0,f0/dr/2.0,bp0_c); /* Space filter */ + gen_coef(1,f1,f1/dr/2.0,bp1_c); /* Mark filter */ + gen_coef(0,dr,0.5412,lp1_c); /* Low-Pass order-4 Butt. filter */ + gen_coef(0,dr,1.3066,lp2_c); + + for (int i=0;i<4;i++) lp1_b[i]=lp2_b[i]=bp0_b[i]=bp1_b[i]=0.0; +} + + diff --git a/monitord/.svn/text-base/MonitorModulePocsag512.h.svn-base b/monitord/.svn/text-base/MonitorModulePocsag512.h.svn-base new file mode 100644 index 0000000..f5262a7 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulePocsag512.h.svn-base @@ -0,0 +1,74 @@ +/* MyMonModulesPocsag512.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ +// MyMonModulesPocsag512.h: Schnittstelle f�r die Klasse CMyMonModulesPocsag512. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MYMONMODULESPOCSAG512_H__EC75A96B_A1A1_4806_948A_A60F8A0503D6__INCLUDED_) +#define AFX_MYMONMODULESPOCSAG512_H__EC75A96B_A1A1_4806_948A_A60F8A0503D6__INCLUDED_ + + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +#include "MonitorModulePocsag.h" + +class MonitorModulePocsag512 : public MonitorModulePocsag +{ +public: + virtual void demod_se(float *buffer, int length); + virtual void demod_mg(float *buffer, int length); + MonitorModulePocsag512(int SampleRate=22050, bool crcheck=true, bool errorcorrection=true, int minpreambel=300, int maxerrors=10, int algorithmus=1); + MonitorModulePocsag512(int SampleRate, XMLNode *pConfig); + virtual ~MonitorModulePocsag512(); + +protected: + /******************************************************* + Decoder Variables & Coef. calculation + *******************************************************/ + float lp1_c[3],lp2_c[3],bp0_c[3],bp1_c[3]; + float lp1_b[4],lp2_b[4],bp0_b[4],bp1_b[4]; + + void set_filters(float f0, float f1, float dr); + void gen_coef(int tipo, float f0, float Q, float *pcoef); + float biq_hp(float x,float *pcoef,float *buf); + float biq_bp(float x,float *pcoef,float *buf); + float biq_lp(float x,float *pcoef,float *buf); + + + +}; + +#endif // !defined(AFX_MYMONMODULESPOCSAG512_H__EC75A96B_A1A1_4806_948A_A60F8A0503D6__INCLUDED_) diff --git a/monitord/.svn/text-base/MonitorModuleZVEI.cpp.svn-base b/monitord/.svn/text-base/MonitorModuleZVEI.cpp.svn-base new file mode 100644 index 0000000..2a33cac --- /dev/null +++ b/monitord/.svn/text-base/MonitorModuleZVEI.cpp.svn-base @@ -0,0 +1,715 @@ +// MyMonModuleZVEI.cpp: Implementierung der Klasse MonitorModuleZVEI. +// +// Edited 02/2007 - demod rewritten, fully functional but to be tested "in the wild": +// Martin Diedrich (martin@mdiedrich.de) +////////////////////////////////////////////////////////////////////// + +#include +#include +#include "math.h" +#include "time.h" +#include "convert.h" + +#include "MonitorModuleZVEI.h" +#include "MonitorLogging.h" + +using namespace std; + +#ifdef WIN32 + #include + #include + #include +#endif + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#ifdef WIN32 +#ifndef M_PI +const float M_PI = 3.14159265358979 ; +#endif +#endif + +#define COS(x) costabf[(((x) >> 6) & 0x3ffu)] +#define SIN(x) COS((x) + 0xc000) +#define BLOCKNUM 4 + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +int MonitorModuleZVEI::PHINC(int x) +{ + return (x * 0x10000 / FREQ_SAMP) ; +} + +/** + * @brief constructor, initializing most of our little ZVEI universe ;) + * @param sampleRate sample rate of data from soundcard to be analyzed by demod() + */ +MonitorModuleZVEI::MonitorModuleZVEI(int sampleRate,XMLNode* pConfig) +{ + unsigned int i ; + + debugmodus = getNodeInt(*pConfig,"debugmodus",0); + int gm900 = getNodeInt(*pConfig,"gm900",0); // ONLY FOR GM900 AT FHD OSTERODE + squelch = getNodeInt(*pConfig,"squelch",51); + squelch = squelch/100; + + m_lpszName="ZVEI" ; + + FREQ_SAMP=sampleRate ; + BLOCKLEN=sampleRate / 100 ; + + // Definition der zu betrachtenden Frequenzen + zvei_freq[0]=PHINC(2400) ; // Ziffer 0 + if(gm900 == 1) { + zvei_freq[0]=PHINC(2410) ; // Ziffer 0 for slightly too high tone by motorola gm900 in use at fhd osterode + } + zvei_freq[1]=PHINC(1060) ; // Ziffer 1 + zvei_freq[2]=PHINC(1160) ; // Ziffer 2 + zvei_freq[3]=PHINC(1270) ; // Ziffer 3 + zvei_freq[4]=PHINC(1400) ; // Ziffer 4 + zvei_freq[5]=PHINC(1530) ; // Ziffer 5 + zvei_freq[6]=PHINC(1670) ; // Ziffer 6 + zvei_freq[7]=PHINC(1830) ; // Ziffer 7 + zvei_freq[8]=PHINC(2000) ; // Ziffer 8 + zvei_freq[9]=PHINC(2200) ; // Ziffer 9 + zvei_freq[10]=PHINC(2800) ; // A = N / Spezialfall Gruppenruf + zvei_freq[11]=PHINC(810) ; // C + zvei_freq[12]=PHINC(675) ; // Sirenendoppelton I + zvei_freq[13]=PHINC(1240) ; // Sirenendoppelton II + zvei_freq[14]=PHINC(2600) ; // E = W (Wiederholungs- und Melderweckton) + zvei_freq[15]=PHINC(0) ; // Stille/Rauschen/keine eindeutige Frequenz + zvei_freq[16]=PHINC(1860) ; // Sirenendoppelton III + zvei_freq[17]=PHINC(825) ; // Sirenendoppelton IV + zvei_freq[18]=PHINC(2280) ; // Sirenendoppelton V + zvei_freq[19]=PHINC(1010) ; // Sirenendoppelton VI + + // Definition der zu betrachtenden Frequenzen + zvei_character[0]='0' ; // Ziffer 0 + zvei_character[1]='1' ; // Ziffer 1 + zvei_character[2]='2' ; // Ziffer 2 + zvei_character[3]='3' ; // Ziffer 3 + zvei_character[4]='4' ; // Ziffer 4 + zvei_character[5]='5' ; // Ziffer 5 + zvei_character[6]='6' ; // Ziffer 6 + zvei_character[7]='7' ; // Ziffer 7 + zvei_character[8]='8' ; // Ziffer 8 + zvei_character[9]='9' ; // Ziffer 9 + zvei_character[10]='A' ; // A = N / Spezialfall Gruppenruf + zvei_character[11]='C' ; // C + zvei_character[12]='S' ; // Sirenendoppelton I + zvei_character[13]='S' ; // Sirenendoppelton II + zvei_character[14]='W' ; // E = W (Wiederholungs- und Melderweckton) + zvei_character[15]='-' ; // Stille/Rauschen/keine eindeutige Frequenz + zvei_character[16]='S' ; // Sirenendoppelton III + zvei_character[17]='S' ; // Sirenendoppelton IV + zvei_character[18]='S' ; // Sirenendoppelton V + zvei_character[19]='S' ; // Sirenendoppelton VI + + // initializing our matrixes -> zeroing + for (i=0; i <= sizeof(zvei_freq)/sizeof(zvei_freq[0]); i++) { + ph[i]=0; + } + for (i=0; i < 4 ;i++) { + energy[i]=0; + } + for (i=0; i< 4; i++) { + for (unsigned int j=0; j <= 2*sizeof(zvei_freq)/sizeof(zvei_freq[0]); j++) { + tenergy[i][j]=0; + } + } + + blkcount=0 ; + + folge_position = 0; // gibt die aktuelle Position bei der Erkennung an, in gewisser Weise der "Zustandsautomat" + timeout = 0; // Zu lange Pause nach Tonfolge -> triggert Ausgabe und Resets + pause_length = 0; // Laenge der bisher gemessenen Pause, reset bei 100 + tone_count = 0; // wie oft wurde der ton erkannt? + seven_count = 0; + siren_count = 0; + maxlength = sizeof(zvei_folge)/sizeof(zvei_folge[0]); // Laenge der n-Tonfolge. Normalerweise 5. Es gab einen Request fuer 7. + + /* + * Format des Arrays fount_tones: + * [0] - energiereichste Frequenz, [1] - zweitenergier. Freq., [2] - drittenergier. Freq., [3] - Energie I, [4] - Energie II - [5] - Energie III, + * [6] - Totale Energie; damit stehen drei Toene und Energien zur Verfuegung fuer Auswertung und Filter + */ + found_tones = new int[7]; // Rueckgabe der process_block()-Methode + for (i=0; i < 7; i++) { + for(int j=0; j<7; j++) { + detected_seven[i][j] = -1; + } + } + + for(i=0; i < maxlength; i++) { + zvei_folge[i] = -2; + } + + for (i = 0; i < COSTABSIZE; i++) { + costabf[i] = (float) cos(M_PI*2.0*i/COSTABSIZE); + } + +} + +MonitorModuleZVEI::~MonitorModuleZVEI() +{ + +} + +/** + * @brief demodulates raw sounddata from card to ZVEI-Tonfolgen + * @param buffer pointer to sound buffer + * @param length length of that buffer + * @author Martin Diedrich (mdi) + * @date 11/2007 + */ +void MonitorModuleZVEI::demod(float *buffer, int length) +{ + unsigned int i ; + float s_in=0; + short int last_zvei_last_character = -2; + + // uebernommen aus dem vorherigen code + for (; length > 0; length--, buffer++) { + s_in = *buffer; + energy[0] += fsqr(s_in); + + +/* Berechnen und Aufaddieren der Spalte 0 der tenergy-Matrix + * mit 220 (BLOCKLEN) aufeinanderfolgenden Bufferwerten: + * Zeilen 0-17: Cos-Werte, Zeilen 18-35: Sin-Werte */ + for (i = 0; i < sizeof(zvei_freq)/sizeof(zvei_freq[0]); i++) { + tenergy[0][i] += COS(ph[i]) * s_in; + tenergy[0][i + sizeof(zvei_freq)/sizeof(zvei_freq[0])] += SIN(ph[i]) * s_in; + ph[i] += zvei_freq[i]; + } + + if ((blkcount--) <= 0) { + blkcount = BLOCKLEN; + found_tones = process_block(found_tones); + + memcpy(detected_seven[seven_count], found_tones, sizeof(int)*7); + + int f = fuzzyseven(); + + if( debugmodus > 5 && ((f >= 0 && f <= 11) || f == 14)) { + cout << " -> " << f << " -> " << zvei_character[f] << endl; + } + + // ZVEI digit or repeating tone found, not end of ZVEI quintett + if(((f >= 0 && f <= 11) || f == 14) && folge_position != maxlength) { + if(folge_position != 0) { + if(f != zvei_folge[folge_position-1]) { + zvei_folge[folge_position] = f; + folge_position++; + } + } else { + zvei_folge[folge_position] = f; + folge_position++; + } + pause_length = 0; + } + + // wakeup found shortly before maximum pause time + if(f == 14 && folge_position == maxlength && pause_length > 52) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i<5; i++) { + cout << (zvei_folge[i] == 14 ? zvei_folge[(i+(maxlength-1))%maxlength] : zvei_folge[i]); + } + cout << " (Melderausloesung)" << endl << endl; + } + std::string numString=""; + for(unsigned int counter=0;counter 5) { + cout << " Pause: " << pause_length; + } + } + + // waiting for siren or wakeup - or reacting on timeout + if ((f == 15 || f == -1) && folge_position == maxlength ) { + pause_length++; + if(debugmodus > 5) { + cout << " Pause: " << pause_length; + } + if(pause_length == 64) { // timeout + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i= 0 && f <= 11) || f == 14) && folge_position == maxlength && zvei_ok() && (zvei_folge[4] != f || pause_length > 10 )) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i%8.5f\t1->%8.5f\t2->%8.5f\n3->%8.5f\t4->%8.5f\t5->%8.5f\n6->%8.5f\t7->%8.5f\t" + "8->%8.5f\n9->%8.5f\t10(2800)->%8.5f\t11(810)->%8.5f\n12(675)->%8.5f\t13(1240)->%8.5f\t14(w)->%8.5f\n15(NULL)->%8.5f\t16(1860)->%8.5f\t17(825)->%8.5f\n18(2280)->%8.5f\t19(1010)->%8.5f\n\n", + tote, totte[0], totte[1], totte[2], totte[3], totte[4], totte[5], totte[6], totte[7], + totte[8], totte[9], totte[10], totte[11], totte[12], totte[13], totte[14], totte[15], totte[16], totte[17], totte[18], totte[19]); + } + + if(debugmodus > 9) { //DEBUG, USE WITH CAUTION, generates possibly big logfile on long runtime! + ofstream outfile; + outfile.open ("freq_dmp.txt", ios_base::app); + outfile << tote << "|"; + for(unsigned int count = 0; count < sizeof(zvei_freq)/sizeof(zvei_freq[0]); count++) { + outfile << (int)totte[count] << "|"; + } + outfile << endl; + outfile.close(); + } + + // kein groesster index gefunden -> -1 zurueckgeben + /*if ((i = find_max_index(totte, -1, -1)) < 0) { + //return -1; + } */ + + found_tones[0] = find_max_index(totte, -1, -1); // groesste Energie + found_tones[1] = find_max_index(totte, found_tones[0], -1); // zweitgroesste Energie + found_tones[2] = find_max_index(totte, found_tones[0], found_tones[1]); // drittgroesste Energie + found_tones[3] = (int) totte[found_tones[0]]; // Energie I + found_tones[4] = (int) totte[found_tones[1]]; // Energie II + found_tones[5] = (int) totte[found_tones[2]]; // Energie III + found_tones[6] = (int) tote; // Total Energie + + if(false) { // DEBUG + cout << "process_block/found_tones: " << endl; + cout << found_tones[0] << " -> " << totte[found_tones[0]] << ", " << found_tones[1] << " -> " << totte[found_tones[1]] << ", " << found_tones[2] << " -> " << totte[found_tones[2]] << endl; + cout << found_tones[3] << ", " << found_tones[4] << ", " << "Squelch: " << (squelch * found_tones[6]) << " (" << (found_tones[3] > (squelch * found_tones[6])) << ")" << endl << endl; + } + + if(false) { // DEBUG + cout << "Tone index: " << found_tones[0] << " above squelch: " << (found_tones[3] > (squelch * found_tones[6])) << endl; + } + + // Energielevel passen nicht (hier ist der Energielevel des gefundenen Tons kleiner als 40% der Gesamtenergie, zu geringer Rauschabstand) + //if ((tote * 0.4) > totte[index1]) return -1; + + return found_tones; +} + +/** + * @brief finds maximum energy from energies matrix given by MonitorModuleZVEI::process_block() + * @param totte energies matrix created in MonitorModuleZVEI::process_block() + * @return index pointing to frequency holding maximum energy/-1 if problem/filter + */ +int MonitorModuleZVEI::find_max_index(const float *totte, int index1, int index2) +{ + + float en = 0; + int index = -1; + int i; + + /* Ermitteln des Index' fuer den (erst-, zweit-, dritt-) groessten Eintrag */ + for (i = 0; i < (int)(sizeof(zvei_freq)/sizeof(zvei_freq[0])); i++) { + if (totte[i] > en && i != index1 && i != index2){ + en = totte[i]; + index = i; + } + } + +/* en *= 0.25; // sirenenton ab 0.8 detektiert - Gruetze irgendwo/Algorithmus sinnvoll? + + for (i = 0; i < 16; i++) { + if (index != i && totte[i] > en) return -1; + } */ + + return index; +} + +/** + * @brief finds a digit out of o block of seven buffers; must be same digit four times following for detection + */ +int MonitorModuleZVEI::fuzzyseven() { + int tone0count = 0; + int fail = 0; + int tone0 = detected_seven[(seven_count + 1) % 7][0]; + + if(debugmodus > 5) { + cout << endl; + for(int i=0; i<7; i++) { + cout << detected_seven[(seven_count + i + 1) % 7][0] << " "; + } + } + + if(detected_seven[(seven_count + 1) % 7][0] == -1) { + return -1; // deleted entry, already being detected + } + + if(detected_seven[(seven_count + 1) % 7][3] < (squelch * detected_seven[(seven_count + 1) % 7][6])) { + if(debugmodus > 3) { + cout << "SQUELCH (" << detected_seven[(seven_count + 1) % 7][0] << ")!" << endl; + } + return -1; // Rauschsperre zu + } + + for(int i = 0; i < 5; i++) { + if(detected_seven[(seven_count + i + 1) % 7][0] == tone0) { + tone0count++; + } else { + fail++; + } + if(debugmodus > 6) { + cout << "tone0count: " << tone0count << " " << "(" << tone0 << ")"; + } + if(tone0count == 4) { + return tone0; + } + } + return -1; +} + +/** + * @brief checks zvei tones for correctness + */ +bool MonitorModuleZVEI::zvei_ok() { + + // Geloeschte Folge oder Pause in der Tonfolge: + for(unsigned int i = 0; i < maxlength; i++) { + if(zvei_folge[i] == -1 || zvei_folge[i] == -2) { + return false; + } + } + + // Fehlerfall: Doppeleintraege + for(int i = 0; i < 4; i++) { + if(zvei_folge[i] == zvei_folge[i+1]) { + return false; + } + } + + // sonst: ok. + return true; +} + +/** + * @brief output alarm/ZVEI-Tonfolge to connected clients (NO storing of data!) + * @param Adresse ZVEI-Tonfolge + * @param typ alarm type [0|1|2] + * @param Text free text (human readable type) + */ +void MonitorModuleZVEI::DisplayResult(std::string Adresse,int typ, std::string Text) +{ + std::string alarmTypString ; + std::string jetzt ; + char dateStr[9]; + char timeStr[9]; + + alarmTypString = convertIntToString(typ) ; + + // aktuelle Uhrzeit holen (Klartext & unix timestamp) + currentTime(jetzt) ; + struct tm* tm_time= localtime(&m_time) ; + // FIXME warum nur ein zweistelliges Jahr? + strftime(dateStr,9,"%d.%m.%y" ,tm_time) ; + strftime(timeStr,9,"%H:%M:%S" ,tm_time) ; + + ModuleResultBase *pRes =new ModuleResultBase() ; + + pRes->set("timestamp",jetzt); + pRes->set("uhrzeit",timeStr) ; + pRes->set("datum",dateStr) ; + pRes->set("servernamehex",m_serverNameHex); + pRes->set("channelnamehex",m_channelNameHex); + pRes->set("channelnum",convertIntToString(m_iChannelNum)); + + pRes->set("typ","zvei"); + pRes->set("zvei",Adresse) ; + pRes->set("weckton",alarmTypString) ; + pRes->set("text",Text) ; + + FILE_LOG(logDEBUG) << endl << (*pRes) ; + GlobalDispatcher->addResult(pRes) ; +} + + +/** + * @brief output alarm/ZVEI-Tonfolge to some storage engine (NO displaying!) + * @param Adresse ZVEI-Tonfolge + * @param typ alarm type [0|1|2] + * @param text free text (human readable type) + */ +void MonitorModuleZVEI::StoreResult(std::string Adresse,int typ, std::string text) +{ + +} diff --git a/monitord/.svn/text-base/MonitorModuleZVEI.h.svn-base b/monitord/.svn/text-base/MonitorModuleZVEI.h.svn-base new file mode 100644 index 0000000..208bb9a --- /dev/null +++ b/monitord/.svn/text-base/MonitorModuleZVEI.h.svn-base @@ -0,0 +1,89 @@ +// MyMonModuleZVEI.h: Schnittstelle f�r die Klasse MonitorModuleZVEI. +/* + * based on: demod_zvei.c -- ZVEI signalling demodulator/decoder + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002-2007 + * Stephan Effertz (info@stephan-effertz.de) + * + * Edited 11/2007 - demod partly rewritten, fully functional but to be tested "in the wild": + * Martin Diedrich (martin@mdiedrich.de) + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#if !defined(AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_) +#define AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "MonitorModules.h" + +#define COSTABSIZE 0x400 + +class MonitorModuleZVEI : public MonitorModule +{ +public: + int find_max_index(const float *totte, int index1, int index2); + void demod(float* buffer, int length); + MonitorModuleZVEI(int sampleRate,XMLNode *pConfig); + int debugmodus; + float squelch; + // MonitorModuleZVEI(XMLNode *pConfig); + virtual ~MonitorModuleZVEI(); + +protected: + void StoreResult(std::string Adresse,int typ, std::string text); + void DisplayResult(std::string Adresse, int typ, std::string Text); + int *process_block(int *found_tones); + + int BLOCKLEN; + int PHINC(int x); + + short int pause_length; + short int lastch; + short int lastout; + short int zvei_folge[5]; // array length of ZVEI-Tonfolge - change when needed longer! + unsigned int folge_position; + unsigned int maxlength; + bool timeout; + int* found_tones; + short int tone_count; + int detected_seven[7][7]; + short int seven_count; + int fuzzyseven(); + bool zvei_ok(); + short int siren_count; + + char zvei_character[20]; + unsigned int zvei_freq[20] ; + unsigned int ph[20]; + float energy[4],tenergy[4][40]; + int blkcount; + float costabf[COSTABSIZE]; + +}; + +#endif // !defined(AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_) diff --git a/monitord/.svn/text-base/MonitorModules.cpp.svn-base b/monitord/.svn/text-base/MonitorModules.cpp.svn-base new file mode 100644 index 0000000..43c3e8f --- /dev/null +++ b/monitord/.svn/text-base/MonitorModules.cpp.svn-base @@ -0,0 +1,264 @@ +/*MonitorModules.cpp + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ +#include + +#include "MonitorModules.h" +#include "convert.h" +#include "base64.h" + + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModule::MonitorModule() +{ + memset(rxbuf,0,512) ; + rxstate=0 ; + rxbitbuf=0 ; + rxbitstream=0L ; + FREQ_SAMP=22050 ; + m_bTranslate=true ; + m_iFilterModus=2 ; + m_lpszFilter="" ; + //m_pCriticalSection=NULL ; + m_iFunkkanal=0 ; + m_iChannelNum=0 ; + + if (memLockOpen( 12345, & m_queueLock) < 0) { + // Erstmal tun wir hier nix ... + } + + this->setChannelName("channel01" ) ; + this->setServerName("monitord") ; +} + +MonitorModule::~MonitorModule() +{ + +} + + +void MonitorModule::demod(float *buffer, int length) +{ + +} + +void MonitorModule::SetName(std::string Name) +{ + m_lpszName=Name ; +} + +void MonitorModule::SetSampleRate(int rate) +{ + +} + +void MonitorModule::getCurrentTime() +{ + time(&m_time); +} + +void MonitorModule::setChannelName(std::string name) +{ + convertStringToHex(name,m_channelNameHex) ; +} + + +void MonitorModule::setChannelNum(int num) +{ + m_iChannelNum=num ; +} + +std::string MonitorModule::getChannelNameHex() +{ + return (m_channelNameHex) ; +} + +int MonitorModule::getChannelNum() +{ + return (m_iChannelNum) ; +} + +void MonitorModule::setServerName(std::string name) +{ + convertStringToHex(name,m_serverNameHex) ; +} + + +bool MonitorModule::currentTime(std::string & timeString) +{ + getCurrentTime() ; + try + { + timeString = convertIntToString(m_time) ; + } catch (BadConversion e) + { + return false ; + } + return true ; + +} + +const char* MonitorModule::translate_alpha(unsigned char chr) +{ + + static const struct trtab { + const unsigned char code; + const char *str; + } + + trtab[] = { + { 0, "" }, + { 1, "" }, + { 2, "" }, + { 3, "" }, + { 4, "" }, + { 5, "" }, + { 6, "" }, + { 7, "" }, + { 8, "" }, + { 9, "" }, + { 10, "" }, + { 11, "" }, + { 12, "" }, + { 13, "" }, + { 14, "" }, + { 15, "" }, + { 16, "" }, + { 17, "" }, + { 18, "" }, + { 19, "" }, + { 20, "" }, + { 21, "" }, + { 22, "" }, + { 23, "" }, + { 24, "" }, + { 25, "" }, + { 26, "" }, + { 27, "" }, + { 28, "" }, + { 29, "" }, + { 30, "" }, + { 31, "" }, +#ifdef CHARSET_LATIN1 + { 0x5b, "\304" }, /* upper case A dieresis */ + { 0x5c, "\326" }, /* upper case O dieresis */ + { 0x5d, "\334" }, /* upper case U dieresis */ + { 0x7b, "\344" }, /* lower case a dieresis */ + { 0x7c, "\366" }, /* lower case o dieresis */ + { 0x7d, "\374" }, /* lower case u dieresis */ + { 0x7e, "\337" }}; /* sharp s */ +#else /* CHARSET_LATIN1 */ + { 0x5b, "AE" }, /* upper case A dieresis */ + { 0x5c, "OE" }, /* upper case O dieresis */ + { 0x5d, "UE" }, /* upper case U dieresis */ + { 0x7b, "ae" }, /* lower case a dieresis */ + { 0x7c, "oe" }, /* lower case o dieresis */ + { 0x7d, "ue" }, /* lower case u dieresis */ + { 0x7e, "ss" }}; /* sharp s */ +#endif /* CHARSET_LATIN1 */ + + int min = 0, max = (sizeof(trtab) / sizeof(trtab[0])) - 1; + + /* binary search, list must be ordered! */ + for (;;) { + int mid = (min + max) >> 1; + const struct trtab *tb = trtab + mid; + int cmp = ((int) tb->code) - ((int) chr); + + if (!cmp) return tb->str; + if (cmp < 0) { + min = mid + 1; + if (min > max) return NULL; + } + if (cmp > 0) { + max = mid - 1; + if (max < min) return NULL; + } + } +} + +void MonitorModule::SetFilter(std::string filter,int modus) +{ + m_lpszFilter=filter ; + m_iFilterModus=modus ; +} + +void MonitorModule::setConfigData(XMLNode *pConfigNode) +{ + m_pXMLConfig=pConfigNode ; + parseConfigData() ; +} + +bool MonitorModule::MatchFilter(std::string filterstring) +{ + /* + int nPos = 0; + int nReplaced = 0; + CRegExp r; + //LPTSTR str = filterstring.c_str() ; + + if (m_iFilterModus==2) + { + return true ; + } ; + + r.RegComp( m_lpszFilter.c_str() ); + if ( (nPos = r.RegFind( m_lpszFilter.c_str())) != -1 ) + { + return m_iFilterModus==0 ; + } else { + return !(m_iFilterModus==0) ; + }*/ + return true ; +} + +void MonitorModule::DebugMessage(std::string message) +{ + //GetBAMon()->LogMessage(message) ; + +} + +void MonitorModule::SetFunkkanal(int kanal) +{ + m_iFunkkanal=kanal ; +} + + diff --git a/monitord/.svn/text-base/MonitorModules.h.svn-base b/monitord/.svn/text-base/MonitorModules.h.svn-base new file mode 100644 index 0000000..925519d --- /dev/null +++ b/monitord/.svn/text-base/MonitorModules.h.svn-base @@ -0,0 +1,173 @@ +/* MonitorModules.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ + +#if !defined(AFX_MYMONMODULES_H__452DBCB3_6D8D_4B6B_9A1D_081EBE3308B1__INCLUDED_) +#define AFX_MYMONMODULES_H__452DBCB3_6D8D_4B6B_9A1D_081EBE3308B1__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +#define MAX_SAMPLES 4096 +//65536*2 //>>>>>>>> must also be defined in CFft +#define MAX_VOIE 2 +#define MAX_SIZE_SAMPLES 1 // WORD +#define MAX_SIZE_INPUT_BUFFER MAX_SAMPLES*MAX_VOIE*MAX_SIZE_SAMPLES +// #define MAX_SIZE_INPUT_BUFFER 1024 +#define DEFAULT_CAL_OFFSET 0x80 // >>>>> depends of you sound card +#define DEFAULT_CAL_GAIN 256.0 + + + +///////////////////////////////////////////////////////////////////////// +// Die hdlc Dekodierung scheint eine Art Grundlage zu sein. +// Zumindest wird deren Init-Routine z.B. vom FMS Module aufgerufen +// Deswegen nun dieses "Modul" hier als Basisklasse definiert +// +///////////////////////////////////////////////////////////////////////// + +#include "time.h" +#include +#include +#include "memlock.h" + +#include "MonitorModulesResults.h" +#include "xmltools.h" +#include "MonitorLogging.h" + +/* --------------------------------------------------------- + BEGIN: Helper Functions + ---------------------------------------------------------*/ + +inline float mac( float *a, float *b, unsigned int size) { + float sum = 0; + unsigned int i; + + FILE_LOG(logDEBUG2) << "processing mac() Block with size=" << size ; + for (i = 0; i < size; i++) + sum += (*a++) * (*b++); + return sum; +} + + +inline float fsqr(float f) { + return f*f; +} + + +/* --------------------------------------------------------- + END: Helper Functions + ---------------------------------------------------------*/ + +/* + * translat.c -- Charakter printable translation + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ---------------------------------------------------------------------- */ + + +#define CHARSET_LATIN1 + +/* ---------------------------------------------------------------------- */ + +class MonitorModule ; + +typedef std::vector MonitorModuleArray ; + +class MonitorModule +{ +public: + void SetFunkkanal(int kanal); + void SetFilter(std::string filter, int modus); + void SetSampleRate(int rate); + void SetName(std::string Name); + virtual void demod(float *buffer, int length); + MonitorModule(); + virtual ~MonitorModule(); + + void setChannelName(std::string name) ; + void setServerName(std::string name) ; + void setChannelNum(int num) ; + std::string getChannelNameHex() ; + int getChannelNum() ; + void setConfigData(XMLNode *pConfigNode) ; + + +protected: + virtual void parseConfigData(){} ; + void getCurrentTime() ; + bool currentTime(std::string & time) ; + bool makeResponseHeader(int code) ; + void DebugMessage(std::string message); + bool MatchFilter(std::string string); + const char* translate_alpha(unsigned char chr); + + int m_iChannelNum ; + int m_iFunkkanal; + int FREQ_SAMP; + std::string m_lpszName; + time_t m_time ; //< Aktuelle Uhrzeit zwischenspeichern + int m_iFilterModus; + std::string m_lpszFilter; + std::string m_serverNameHex ; + std::string m_channelNameHex ; + bool m_bTranslate; + XMLNode* m_pXMLConfig ; + unsigned char rxbuf[512], *rxptr; + unsigned int rxstate, rxbitbuf; + unsigned long rxbitstream; + MEMLOCK m_queueLock ; + +}; + +#endif // !defined(AFX_MYMONMODULES_H__452DBCB3_6D8D_4B6B_9A1D_081EBE3308B1__INCLUDED_) diff --git a/monitord/.svn/text-base/MonitorModulesResults.cpp.svn-base b/monitord/.svn/text-base/MonitorModulesResults.cpp.svn-base new file mode 100644 index 0000000..b4f1ab1 --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulesResults.cpp.svn-base @@ -0,0 +1,132 @@ +#include + +#include "MonitorModulesResults.h" +#include "MonitorExceptions.h" +#include "SocketServer.h" +#include "MonitorLogging.h" + +#ifdef PLUGINS +#include "PluginThread.h" +#endif + +using namespace std; + +#ifdef WIN32 + #define sleep Sleep +#endif + +MODULERESULTSET ModuleResultSet ; +MonitorResultsDispatcher *GlobalDispatcher; + + +ModuleResultBase::ModuleResultBase() +{ +} + +ModuleResultBase::~ModuleResultBase() +{ + m_Items.clear() ; +} + +void ModuleResultBase::copyTo(ModuleResultBase & target) +{ + target.m_Items = m_Items ; +} + + +ostream& operator<<(ostream & os, ModuleResultBase & m) +{ + for (ResultItemsMap::iterator iter=m.m_Items.begin(); iter!=m.m_Items.end(); ++iter) + { + os << iter->first << " = \"" << iter->second << "\"" << endl ; + } + return os ; +} + +//---------------------------------------------------------------- +// MonitorResultsDispatcher +// +MonitorResultsDispatcher::MonitorResultsDispatcher() +{ + FILE_LOG(logDEBUG) << "Dispatcher startet" ; + + if ( memLockCreate( 12346, & m_MemLock) < 0) { + ThrowMonitorException("Dispatcher: memLockCreate failed") ; + } + + Start() ; + m_bStop=false ; +} + +MonitorResultsDispatcher::~MonitorResultsDispatcher() +{ + memLockDestroy(m_MemLock) ; +} + +bool MonitorResultsDispatcher::addResult(ModuleResultBase* pResult) +{ + // Neues Element in die Liste einfuegen + // ACHTUNG: dieses Kommando wird im Kontext des Dekoders ausgef�hrt + // Somit k�nnte der Thread des Dispatchers gerade die Liste + // L�schen/bearbeiten wollen. Deshalb erst das Lock setzen + // + + memLock(m_MemLock) ; + m_Results.push_back(pResult) ; + m_Signal.SetSignal() ; + memUnlock(m_MemLock) ; + return true ; +} + +void* MonitorResultsDispatcher::Thread() +{ + ModuleResultBase *pRes ; + + JThread::ThreadStarted(); + + /* + * All Lua contexts are held in this structure. We work with it almost + * all the time. + */ + + do + { + FILE_LOG(logDEBUG1) << "Dispatcher waiting" ; + m_Signal.WaitForSignal() ; // Auf neue Daten warten ... + FILE_LOG(logDEBUG1) << "Dispatcher running" ; + + while (m_Results.size()>0) + { + m_bSkipDispatching=false ; + memLock(m_MemLock) ; + for (MODULERESULTSET::iterator i=m_Results.begin(); idispatchResult(pRes) ; + #ifdef PLUGINS + GetPluginsManager().dispatchResult(pRes) ; + #endif + } + // Eintrag aus der Warteschlange loeschen + FILE_LOG(logDEBUG4) << "loesche ResultSet aus GlobalDispatcher Queue" ; + m_Results.erase(i) ; + FILE_LOG(logDEBUG4) << "delete pRes" ; + delete pRes ; + FILE_LOG(logDEBUG4) << "delete pRes:done" ; + } + memUnlock(m_MemLock) ; + } + m_Signal.ResetSignal() ; + + } while (m_bStop==false) ; + + return NULL ; +} + diff --git a/monitord/.svn/text-base/MonitorModulesResults.h.svn-base b/monitord/.svn/text-base/MonitorModulesResults.h.svn-base new file mode 100644 index 0000000..0b59c1b --- /dev/null +++ b/monitord/.svn/text-base/MonitorModulesResults.h.svn-base @@ -0,0 +1,92 @@ +#ifndef MONITORMODULESRESULTS_H_ +#define MONITORMODULESRESULTS_H_ + +/** @brief Basisklasse fuer Rueckgabewerte aus den Modulen + * + * In dieser Struktur werden Typ, Zeit und weitere Daten zur Rueckgabe + * gespeichert. + */ + +#include +#include +#include +#include +#include +#include "MonitorSignals.h" +#include "memlock.h" + +#define MAX_CHAR 512 + + +typedef std::map ResultItemsMap ; + +/** + * @brief Basisklasse f�r Rueckgabewerte der Auswerter + */ + + +class ModuleResultBase +{ +public: + /** Zum einfacheren Zugriff geht folgendes: + * + * meinString = Result["feldname"] + * Result.set("feldname","test") + * + * Fuers debugging geht auch " os << Result " + */ + + std::string& operator[](std::string key) { return get(key);} ; + std::string& operator[](const char key[]) { return operator[](std::string(key));} ; + std::string& operator[](char key[]) { return operator[](std::string(key));} ; + + friend std::ostream & operator<<(std::ostream & os, ModuleResultBase &m) ; + + ModuleResultBase(); + virtual ~ModuleResultBase(); + void copyTo(ModuleResultBase & target) ; + + std::string& get(std::string key) { return m_Items[key];} ; + bool add(std::string key,std::string item) { m_Items[key]=item; return true;} ; + bool set(std::string key,std::string item) { return add(key,item);} ; + ResultItemsMap m_Items ; + +protected: + //time_t m_tTime ; +} ; + +std::ostream & operator<<(std::ostream & os, ModuleResultBase & m) ; + +typedef ModuleResultBase* ModuleResultBasePtr ; +typedef std::vector MODULERESULTSET ; + +extern MODULERESULTSET ModuleResultSet ; + +/** + * @brief Sammelt und verteilt Ergebnisse der Decodermodule + * + */ + +class MonitorResultsDispatcher : public JThread +{ +public: + MonitorResultsDispatcher(); + virtual ~MonitorResultsDispatcher(); + + bool addResult(ModuleResultBase* pResult) ; + virtual void* Thread() ; + bool m_bStop ; + +private: + MODULERESULTSET m_Results ; + MEMLOCK m_MemLock ; + MonitorBlockingSignal m_Signal ; + bool m_bSkipDispatching ; + +}; + + + +extern MonitorResultsDispatcher *GlobalDispatcher ; + +#endif /*MONITORMODULESRESULTS_H_*/ diff --git a/monitord/.svn/text-base/MonitorSignals.cpp.svn-base b/monitord/.svn/text-base/MonitorSignals.cpp.svn-base new file mode 100644 index 0000000..03ea8ff --- /dev/null +++ b/monitord/.svn/text-base/MonitorSignals.cpp.svn-base @@ -0,0 +1,71 @@ +#include "MonitorSignals.h" +#include "MonitorLogging.h" + +using namespace std; + +MonitorBlockingSignal::MonitorBlockingSignal() +{ +#ifdef WIN32 + m_Handle = CreateEvent(NULL,FALSE,FALSE,NULL); + if (m_Handle == NULL) { + ThrowMonitorException("Win32 Eventhandle is null") ; + } +#else + int res=pthread_cond_init (&m_ptCondition,NULL) ; + res+=pthread_mutex_init( &m_ptLock, NULL) ; + res+=pthread_mutex_lock(&m_ptLock) ; + if (res!=0) + { + ThrowMonitorException("error initialising pthreads Condition/Mutex") ; + } +#endif + FILE_LOG(logDEBUG1) << "Signal erstellt..." ; +} + +MonitorBlockingSignal::~MonitorBlockingSignal() +{ +#ifdef WIN32 + if (m_Handle) CloseHandle(m_Handle) ; +#else + pthread_cond_destroy (&m_ptCondition) ; +#endif +} + +void MonitorBlockingSignal::ResetSignal() +{ +#ifdef WIN32 + if (m_Handle) + ResetEvent(m_Handle) ; + else + ThrowMonitorException("Win32 Eventhandle is null") ; +#else + // pthread Gegenstueck ? +#endif +} + +void MonitorBlockingSignal::SetSignal() +{ + FILE_LOG(logDEBUG1) << "Signal wird gesetzt" ; +#ifdef WIN32 + if (m_Handle) + SetEvent(m_Handle); + else + ThrowMonitorException("Win32 Eventhandle is null") ; +#else + pthread_cond_signal(&m_ptCondition) ; +#endif +} + +void MonitorBlockingSignal::WaitForSignal() +{ + FILE_LOG(logDEBUG1) << "Waiting for signal" ; +#ifdef WIN32 + if (m_Handle) + WaitForSingleObject(m_Handle,INFINITE) ; + else + ThrowMonitorException("Win32 Eventhandle is null") ; +#else + pthread_cond_wait(&m_ptCondition,&m_ptLock) ; +#endif + FILE_LOG(logDEBUG1) << "Waiting for signal beendet" ; +} diff --git a/monitord/.svn/text-base/MonitorSignals.h.svn-base b/monitord/.svn/text-base/MonitorSignals.h.svn-base new file mode 100644 index 0000000..9752b29 --- /dev/null +++ b/monitord/.svn/text-base/MonitorSignals.h.svn-base @@ -0,0 +1,36 @@ +#ifndef MONSIGNALS_H_ +#define MONSIGNALS_H_ 1 + +#include "MonitorExceptions.h" +#include "memlock.h" + +#if (defined(WIN32) || defined(_WIN32_WCE)) + #ifndef _WIN32_WCE + #include + #endif // _WIN32_WCE + #include + #include + //#define JMUTEX_CRITICALSECTION +#else // using pthread + #include +#endif // WIN32 + + +class MonitorBlockingSignal { +public: + MonitorBlockingSignal() ; + virtual ~MonitorBlockingSignal() ; + void WaitForSignal() ; + void SetSignal() ; + void ResetSignal() ; + +private: +#ifdef WIN32 + HANDLE m_Handle; +#else + pthread_cond_t m_ptCondition ; + pthread_mutex_t m_ptLock ; +#endif +} ; + +#endif /*MONSIGNALS_H_*/ diff --git a/monitord/.svn/text-base/PluginThread.cpp.svn-base b/monitord/.svn/text-base/PluginThread.cpp.svn-base new file mode 100644 index 0000000..078a701 --- /dev/null +++ b/monitord/.svn/text-base/PluginThread.cpp.svn-base @@ -0,0 +1,362 @@ +#include "PluginThread.h" +/** + * PluginThread + */ + +#include "MonitorLogging.h" + +#ifdef WIN32 + #define usleep Sleep +#endif + +#define MAX_QUEUESIZE (100) + +PluginThread::PluginThread() : ThreadBase(-1) +{ + FILE_LOG(logDEBUG) << "Erstellt PT:" ; + m_iLockNum=-1 ; + m_plugin=NULL ; + m_bStop=false ; + dll=NULL ; +} + +bool PluginThread::initPlugin(int LOCKNUM, std::string dllfile,XMLNode *pConfig) +{ + m_iLockNum=LOCKNUM ; + + char dllname[255] ; + memset(dllname,0,255) ; + strncpy(dllname,dllfile.c_str(),255) ; + FILE_LOG(logDEBUG) << "DLL Name:" << dllname ; + + dll= new DLLFactory(dllname); + + FILE_LOG(logDEBUG) << "done" ; + // + // If it worked we should have dll.factory pointing + // to a subclass of PlugInFactory + // + if (dll) + { + if( dll->factory ) + { + m_plugin=dll->factory->CreatePlugIn() ; + if (m_plugin==NULL) + { + ThrowMonitorException("Error creating Plugin !") ; + } else + { + // Plugin ist erstellt, nun konfigurieren + m_plugin->initProcessing(NULL,*pConfig) ; + } + } else { + ThrowMonitorException("Error accessing factory from " + dllfile) ; + } + } else { + ThrowMonitorException("Error loading dll:" + dllfile) ; + } + return true ; +} + + +PluginThread::PluginThread(int LOCKNUM, std::string dllfile,XMLNode *pConfig) +:ThreadBase(LOCKNUM) +{ + initPlugin(LOCKNUM,dllfile,pConfig) ; +} + +PluginThread::~PluginThread() +{ + +} + + +void *PluginThread::Thread() +{ + ModuleResultBase* pRes ; + + + FILE_LOG(logINFO) << "PluginThread starting" ; + this->ThreadStarted() ; // Erstmal Bescheid geben, dass wir laufen + createLock() ; + + while (!m_bStop) + { + m_signal.WaitForSignal() ; + // Daten an Plugin uebergeben + memLock(m_Lock) ; + while (m_queue.size()>0) + { + FILE_LOG(logDEBUG) << "plugin processing - size=" << m_queue.size() ; + pRes=m_queue.back() ; + m_queue.pop_back() ; + memUnlock(m_Lock) ; + + /* to avoid a lock caused by a crashed plugin we release our lock*/ + if (m_plugin) + { + m_plugin->processResult(pRes) ; + } + delete pRes ; + memLock(m_Lock) ; + } + memUnlock(m_Lock) ; + + } + FILE_LOG(logINFO) << "PluginThread was stopped" ; + + m_plugin->quitProcessing(); + return NULL; +} + +std::string PluginThread::getPluginName() +{ + return m_pluginName ; +} + +void PluginThread::setPluginName(std::string name) +{ + m_pluginName=name ; + +} +void PluginThread::addResult(ModuleResultBase* pRes) +{ + ModuleResultBase* localResult=new ModuleResultBase; + pRes->copyTo(*localResult) ; + + memLock(m_Lock) ; + if (m_queue.size()m_Items.begin(); iter!=pRes->m_Items.end(); ++iter) + { + { + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,iter->first.c_str(),199) ; + strncpy(zwei,iter->second.c_str(),199) ; + + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + } + } + + // Plugintype + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"plugin_name",199) ; + strncpy(zwei,(*i)->getPluginName().c_str(),199) ; + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // set the number of elements (index to the last array element) + lua_pushliteral( L, "n" ); + lua_pushnumber( L, numCount-1 ); + lua_rawset( L, -3 ); + + // set the name of the array that the script will access + lua_setglobal( L, "arg" ); + + /* do the call (2 arguments, 1 result) */ + if (lua_pcall(L, 0, LUA_MULTRET, 0) != 0) { + FILE_LOG(logERROR) << "Fehler beim Aufruf lua dispatcher script:" << lua_tostring(L, -1); + //error(L, "error running function `f': %s", + // lua_tostring(L, -1)); + } + + /* retrieve result */ + if (!lua_isnumber(L, -1)) { + FILE_LOG(logERROR) << "nicht-numerische Antwort vom lua dispatcher script" ; + //error(L, "function `f' must return a number"); + } + z = lua_tonumber(L, -1); + lua_pop(L, 1); /* pop returned value */ + FILE_LOG(logDEBUG1) << "lua Result (global dispatcher)" << z ; + + if (z==1) m_bSkipDispatching=true ; + } + #endif + + if (m_bSkipDispatching==false) + { + (*i)->addResult(pRes) ; + } + } + return true ; +} + +bool MonitorPluginsManager::loadPlugin(std::string dllfile, XMLNode *pConfig, std::string pluginName) +{ + PluginThread* pt=new PluginThread() ; + if (pt->initPlugin(4000,dllfile,pConfig)) + { + FILE_LOG(logDEBUG) << "startet plugin " << dllfile ; + pt->Start() ; + pt->setPluginName(pluginName) ; + addModule(pt) ; + + return true ; + } else { + FILE_LOG(logERROR) << "DLL Factory konnte nicht initialisiert werden !" ; + return false ; + } +} + +bool MonitorPluginsManager::loadPluginsFromConfigNode(XMLNode *pConfig) +{ + // Plugins durchgehen + + std::string pluginName ; + std::string pluginFile ; + XMLNode parameterNode ; + XMLNode *pParameters ; + XMLNode pluginNode; // = pConfig->getChildNode("plugin",sndCard) ; + + FILE_LOG(logINFO) << "reading plugin configuration" ; + int nPlugins=pConfig->nChildNode("plugin"); + for (int plugin=0;plugingetChildNode("plugin",plugin))).isEmpty()) + { + pluginName=pluginNode.getAttribute("name"); + pluginFile=getNodeText(pluginNode,"file","") ; + parameterNode=pluginNode.getChildNode("parameters"); + + FILE_LOG(logINFO) << "Plugin found: " << pluginName ; + FILE_LOG(logDEBUG) << "File:" << pluginFile ; + if (parameterNode.isEmpty()==false) + { + FILE_LOG(logDEBUG) << "found parameters" ; + pParameters=¶meterNode ; + } else + { + FILE_LOG(logDEBUG) << "no parameters found" ; + pParameters=NULL; + } + + if (pluginFile.size()>0) + { + loadPlugin(pluginFile,pParameters,pluginName) ; + } + } + } + return true ; +} + + + + + + diff --git a/monitord/.svn/text-base/PluginThread.h.svn-base b/monitord/.svn/text-base/PluginThread.h.svn-base new file mode 100644 index 0000000..ef9040e --- /dev/null +++ b/monitord/.svn/text-base/PluginThread.h.svn-base @@ -0,0 +1,66 @@ +#ifndef PLUGINTHREAD_H_ +#define PLUGINTHREAD_H_ + +#include "SocketServer.h" + +/* sofern lua aktiviert ist ? -> ifdef noetig ? */ +#include "lua.hpp" + +/* + * PluginThread + */ + +class PluginThread : public ThreadBase +{ +public: + PluginThread(int LOCKNUM, std::string dllfile,XMLNode *pConfig=NULL); + PluginThread(); + virtual ~PluginThread(); + virtual void *Thread() ; + bool initPlugin(int LOCKNUM, std::string,XMLNode *pConfig=NULL) ; + std::string getPluginName() ; + void setPluginName(std::string pluginName) ; + MonitorBlockingSignal m_signal ; + virtual void addResult(ModuleResultBase* pRes) ; + bool m_bStop ; + +private: + MonitorPlugIn* m_plugin ; + MODULERESULTSET m_queue ; + DLLFactory* dll ; + std::string m_pluginName ; +} ; + +typedef std::vector tMonitorPluginThreadVector ; +/** + * @brief Verwaltet alle Nicht-Audio Plugins + */ + +class MonitorPluginsManager +{ +public: + MonitorPluginsManager() ; + bool loadScriptFilter(std::string FilterFileName) ; + virtual ~MonitorPluginsManager() ; + bool addModule(PluginThread* pThread) ; + bool removeModule(PluginThread* pThread); + bool dispatchResult(ModuleResultBase *pRes) ; + bool loadPlugin(std::string dllfile, XMLNode *pConfig, std::string pluginName); + bool loadPluginsFromConfigNode(XMLNode *pConfig); + +protected: + MEMLOCK m_MemLock ; + tMonitorPluginThreadVector m_Modules ; + bool m_bStop ; + + bool m_bSkipDispatching ; + #ifdef LUA + lua_State *L; + bool m_bUseLUAScript ; + #endif +}; + +MonitorPluginsManager& GetPluginsManager() ; + + +#endif /*PLUGINTHREAD_H_*/ diff --git a/monitord/.svn/text-base/ReadMe.txt.svn-base b/monitord/.svn/text-base/ReadMe.txt.svn-base new file mode 100644 index 0000000..ee8062c --- /dev/null +++ b/monitord/.svn/text-base/ReadMe.txt.svn-base @@ -0,0 +1,3 @@ + + +... diff --git a/monitord/.svn/text-base/SndPipe.cpp.svn-base b/monitord/.svn/text-base/SndPipe.cpp.svn-base new file mode 100644 index 0000000..857034d --- /dev/null +++ b/monitord/.svn/text-base/SndPipe.cpp.svn-base @@ -0,0 +1,332 @@ +// SndPipe.cpp: Implementierung der Klasse CSndPipe. +// +////////////////////////////////////////////////////////////////////// + +#include "SndPipe.h" +#include "MonitorAudio.h" +#include "MonitorExceptions.h" +#include "convert.h" +#include "Monitor.h" + +#include "MonitorModules.h" +#include "MonitorModuleFMS.h" +#include "MonitorModuleZVEI.h" +#include "MonitorModulePocsag512.h" +#include "MonitorModulePocsag1200.h" +#include "MonitorConfiguration.h" + +#include "MonitorLogging.h" + +#include +using namespace std ; + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CSndPipe::CSndPipe() +{ + m_SoundIn.setCallback (&DataFromSoundIn); + m_SoundIn.setOwner (this); + m_cardNum=0 ; + + #ifdef PLUGINS + for (int i=0;iProcessBuffer(buffer); +} + +void CSndPipe::ProcessBuffer(CAudioBuffer *buffer) +{ + for ( std::vector::iterator currentModule=m_ModulesLinks.begin() ; currentModule != m_ModulesLinks.end() ;currentModule++) + { + (*currentModule)->demod(buffer->Left, buffer->Samples) ; + } + + #ifdef PLUGINS + SocketMessage msg ; + + if (m_pluginsLeft[0]!=NULL) + { + m_pluginsLeft[0]->ProcessAudio(buffer->Left,buffer->Samples) ; + + while (m_pluginsLeft[0]->getThreadMessage(msg)) + { + if(msg.pThread) + { + if (msg.pThread->IsRunning()) + { + FILE_LOG(logDEBUG) << "L: Nachricht wird versendet ..." ; + msg.pThread->addOutputText(msg.message); + } + } + } + } + #endif + + for ( std::vector::iterator currentModule=m_ModulesRechts.begin() ; currentModule != m_ModulesRechts.end() ;currentModule++) + { + (*currentModule)->demod(buffer->Right, buffer->Samples) ; + } + + #ifdef PLUGINS + if (m_pluginsRight[0]!=NULL) + { + m_pluginsRight[0]->ProcessAudio(buffer->Right,buffer->Samples) ; + + while (m_pluginsRight[0]->getThreadMessage(msg)) + { + if(msg.pThread) + { + if (msg.pThread->IsRunning()) + { + FILE_LOG(logDEBUG) << "R: Nachricht wird versendet ..." ; + msg.pThread->addOutputText(msg.message); + } + } + } + } + #endif +} + +std::string CSndPipe::PluginCommand(int channel,std::string command, SocketThread* pThread) +{ + std::string returnString="" ; + + #ifdef PLUGINS + int i ; + switch (channel) + { + case 0: + for (i=0;iDoCommand(command,pThread) ; + if (returnString.size()>0) break ; + } + break ; + case 1: + for (i=0;iDoCommand(command,pThread) ; + if (returnString.size()>0) break ; + } + + break ; + default: + ThrowMonitorException("Ungueltige Kanalnummer fuer PluginCommand:" + convertIntToString(channel)) ; + break ; + } + #else + returnString="not implemented" ; + #endif + + if (returnString.size()==0) returnString="not implemented" ; + return returnString ; +} + + +bool CSndPipe::initDecoderModules(int cardnum, MonitorConfiguration* pConfig) +{ + MonitorModule* newModule ; + m_cardNum=cardnum ; + unsigned int sampleRate=22050 ; + std::string fms_Filter="" ; + + try + { + if (pConfig->m_sndConfig[cardnum].iAktiv==1) + { + FILE_LOG(logINFO) << "creating decoders for soundcard #" << cardnum ; + // FMS ? + if (pConfig->m_sndConfig[cardnum].iFMS[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:FMS" ; + newModule= (MonitorModule*) new MonitorModuleFMS(sampleRate, &(pConfig->m_sndConfig[cardnum].configFMS[0])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iFMS[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:FMS" ; + newModule= (MonitorModule*) new MonitorModuleFMS(sampleRate,&(pConfig->m_sndConfig[cardnum].configFMS[1])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + + // ZVEI + if (pConfig->m_sndConfig[cardnum].iZVEI[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:ZVEI" ; + newModule= (MonitorModule*) new MonitorModuleZVEI(sampleRate,&(pConfig->m_sndConfig[cardnum].configZVEI[0])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iZVEI[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:ZVEI" ; + newModule= (MonitorModule*) new MonitorModuleZVEI(sampleRate,&(pConfig->m_sndConfig[cardnum].configZVEI[1])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + + // POC512 + if (pConfig->m_sndConfig[cardnum].iPOC512[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:POC512" ; + //newModule= (MonitorModule*) new MonitorModulePocsag512(sampleRate,&(pConfig->m_sndConfig[cardnum].configPOC512[0])) ; + newModule= (MonitorModule*) new MonitorModulePocsag512(sampleRate,1,0) ; + //(sampleRate,1,0) ; + + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iPOC512[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:POC512" ; + newModule= (MonitorModule*) new MonitorModulePocsag512(sampleRate,1,0) ; + //newModule= (MonitorModule*) new MonitorModulePocsag512(&(pConfig->m_sndConfig[cardnum].configPOC512[1])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + + // POC1200 + if (pConfig->m_sndConfig[cardnum].iPOC1200[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:POC1200" ; + newModule= (MonitorModule*) new MonitorModulePocsag1200(sampleRate,1,0) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iPOC1200[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:POC1200" ; + newModule= (MonitorModule*) new MonitorModulePocsag1200(sampleRate,1,0) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + } else { + FILE_LOG(logINFO) << "skipping decoders for soundcard #" << cardnum << " : card not active !" ; + } + + } catch (MonitorException e) + { + FILE_LOG(logERROR) << "Error initialising decoder modules for soundcard #" << cardnum << ":" << e.what() ; + return false ; + } + return true ; +} +#ifdef PLUGINS + +bool CSndPipe::loadPlugins(MonitorConfiguration* pConfig, XMLNode configLeft, XMLNode configRight) +{ + + FILE_LOG(logINFO) << "loading audioplugins for left channel" ; + loadPlugins(pConfig, configLeft,m_pluginsLeft,2*m_cardNum+0) ; + FILE_LOG(logINFO) << "loading audioplugins for right channel" ; + loadPlugins(pConfig, configRight,m_pluginsRight,2*m_cardNum+1) ; + + return true ; +} + +bool CSndPipe::loadPlugins(MonitorConfiguration* pConfig, XMLNode config,MonitorAudioPlugIn* plugins[],int channelNum) +{ + std::string file ; + int nPlugins=0 ; + + nPlugins=config.nChildNode("plugin"); + for (int plugin=0; plugin dll( dllfile.c_str() ); + #else + static DLLFactory dll( dllfile.c_str() ) ; // "plugins//.libs//libmplugin_audiorecorder.so" ); + #endif + + // + // If it worked we should have dll.factory pointing + // to a subclass of PlugInFactory + // + + if( dll.factory ) + { + if ((plugins[i]=dll.factory->CreatePlugIn())==NULL) + { + ThrowMonitorException("Error Creating Plugin"); + } else { + plugins[i]->InitAudioProcessing(pConfig, config, channelNum) ; + } + } else { + FILE_LOG(logERROR) << "Error plugin Factory from file " << dllfile ; + } + } + return true ; +} + +#endif + diff --git a/monitord/.svn/text-base/SndPipe.h.svn-base b/monitord/.svn/text-base/SndPipe.h.svn-base new file mode 100644 index 0000000..782ba5f --- /dev/null +++ b/monitord/.svn/text-base/SndPipe.h.svn-base @@ -0,0 +1,73 @@ +// SndPipe.h: Schnittstelle f�r die Klasse CSndPipe. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_SNDPIPE_H__8570FCEC_4C9F_4E14_ACCA_6B1559855881__INCLUDED_) +#define AFX_SNDPIPE_H__8570FCEC_4C9F_4E14_ACCA_6B1559855881__INCLUDED_ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifdef WIN32 +#include +#else +#ifdef HAVE_LIBASOUND +#include +#else +#include +#endif +#endif +//#include +//#include +#include "MonitorAudio.h" +#include "MonitorModules.h" +#include "plugins/mpluginAudio.h" +#include "SocketServer.h" +#include "xmltools.h" + +#define MAXPLUGINS 10 + + +class MonitorAudioPlugIn ; + +class CSndPipe +{ +public: + void ProcessBuffer(CAudioBuffer* buffer); + CSndPipe(); + virtual ~CSndPipe(); + static void DataFromSoundIn(CAudioBuffer* buffer, void* Owner); + int m_cardNum ; + bool initDecoderModules(int cardnum,MonitorConfiguration* pConfig) ; + std::string PluginCommand(int channel,std::string command,SocketThread* pThread=NULL) ; + #ifdef PLUGINS + + MonitorAudioPlugIn* m_pluginsLeft[MAXPLUGINS] ; + MonitorAudioPlugIn* m_pluginsRight[MAXPLUGINS] ; + + bool loadPlugins(MonitorConfiguration* pConfig, XMLNode configLeft,XMLNode configRight) ; //< Alle Plugins einer Soundkarte laden + bool loadPlugins(MonitorConfiguration* pConfig, XMLNode config,MonitorAudioPlugIn* plugins[],int channelNum) ; //< Alle Plugins eines Kanals laden + bool loadPlugin(MonitorConfiguration* pConfig, std::string dllfile,XMLNode config, MonitorAudioPlugIn* plugins[],int channelNum) ; //< einzelnes Plugin laden + #endif + + +#ifdef WIN32 /* bisheriger Code unter Sound */ + MonitorAudioWin32 m_SoundIn; +#else /* WIN32 */ +#ifdef HAVE_LIBASOUND + MonitorAudioALSA m_SoundIn; +#else /* HAVE_LIBASOUND */ + MonitorAudioOSS m_SoundIn; +#endif /* HAVE_LIBASOUND */ +#endif /* WIN32 */ + MonitorModuleArray m_ModulesLinks ; + MonitorModuleArray m_ModulesRechts ; + +}; + +#endif // !defined(AFX_SNDPIPE_H__8570FCEC_4C9F_4E14_ACCA_6B1559855881__INCLUDED_) diff --git a/monitord/.svn/text-base/SocketServer.cpp.svn-base b/monitord/.svn/text-base/SocketServer.cpp.svn-base new file mode 100644 index 0000000..54a014e --- /dev/null +++ b/monitord/.svn/text-base/SocketServer.cpp.svn-base @@ -0,0 +1,889 @@ +#include "SocketServer.h" +#include "SocketThreadMonitord.h" +#include "SocketThreadFMS32.h" +#include "SocketThreadCrusader.h" + +#ifndef WIN32 + #include + #include // fuer inet_ntoa +#else + #define usleep Sleep + #define socklen_t int +#endif + +#include "memlock.h" +#include "MonitorModulesResults.h" +#include "base64.h" +#include "convert.h" +#include "Monitor.h" +#include "MonitorLogging.h" + +#include +#include +#include + +#ifdef HAVE_CONFIG_H +#include +#endif + +using namespace std; + +// Vielleicht sollte man das hier spaeter mal auslagern ... +// TODO Auslagern in externe Dateien (.h, .cpp)-Paar +// + +const int SERVER_PORT = 9333 ; + +typedef struct {long tv_sec; long tv_usec;} timval; + + + + +SocketServer::SocketServer(MonitorConfiguration *config, int iLockStartwert) +{ + m_MonitorConfiguration=config ; + m_ServerModus=SocketThread::monitord ; + m_iLockStartwert=iLockStartwert ; + m_bWantStop=false ; +} + + +SocketServer::SocketServer(MonitorConfiguration *config, std::string FilterFileName, int iLockStartwert) +{ + m_MonitorConfiguration=config ; + m_ServerModus=SocketThread::monitord ; + m_iLockStartwert=iLockStartwert ; + m_bWantStop=false ; + #ifdef LUA + m_bUseLUAScript=false ; + #endif + + if (! FilterFileName.empty()) { + + #ifdef LUA + // LUA TEST + try + { + L = lua_open() ; + luaL_openlibs(L) ; + + + if(luaL_loadfile(L, FilterFileName.c_str())) + { + throw std::string(std::string(lua_tostring(L, -1))); + } + + if (lua_pcall(L, 0, 0, 0)) + { + FILE_LOG(logERROR) << "LUA test fehlgeschlagen" << endl ; + } + + m_bUseLUAScript=true ; + FILE_LOG(logINFO) << "Successfully loaded LUA filter: " << FilterFileName ; + } + catch (const std::string &e) + { + FILE_LOG(logERROR) << "Error loading lua script: " << e; + } + + #endif + } + +} + + +SocketServer::~SocketServer() +{ + // Beim SocketManager abmelden + GetSocketsManager()->removeModule(this); + + #ifdef LUA + if (L!=NULL) + { + lua_close(L) ; + } + #endif +} + + +bool SocketServer::createListeningSocket() +{ + bool result=false; +#ifdef _WIN32 + /* Initialisiere TCP fuer Windows ("winsock") */ + short wVersionRequested; + WSADATA wsaData; + wVersionRequested = MAKEWORD (1, 1); + if (WSAStartup (wVersionRequested, &wsaData) != 0) { + ThrowMonitorException("Failed to init windows sockets (WSAStartup)") ; + //fprintf( stderr, "Failed to init windows sockets\n"); + //exit(1); + } +#endif + + /* Erzeuge das Socket */ + m_sock = socket( PF_INET, SOCK_STREAM, 0); + if (m_sock < 0) { + ThrowMonitorException("Failed to create listening socket") ; + //perror( "failed to create socket"); + //exit(1); + } + + + switch (m_ServerModus) + { + case SocketThread::fms32pro: + m_iPort=m_MonitorConfiguration->m_PortFMS32Pro ; + break ; + case SocketThread::crusader: + m_iPort=m_MonitorConfiguration->m_PortCrusader ; + break ; + case SocketThread::monitord: + default: + m_iPort=m_MonitorConfiguration->m_Port ; + break ; + } + + if ( (m_iPort<=0) && (m_iPort >65535)) + { + if (m_ServerModus==SocketThread::monitord) + { + m_iPort=SERVER_PORT ; + } else { + m_iPort=0 ; + } + } + /* Erzeuge die Socketadresse des Servers + * Sie besteht aus Typ und Portnummer */ + memset( &m_server, 0, sizeof (m_server)); + m_server.sin_family = AF_INET; + + if (m_MonitorConfiguration->m_BindIP=="") + { + m_server.sin_addr.s_addr = htonl( INADDR_ANY); + } else { + m_server.sin_addr.s_addr = (inet_addr(m_MonitorConfiguration->m_BindIP.c_str())); + } + m_server.sin_port = htons( m_iPort); + + int on = 1 ; +#ifndef WIN32 + setsockopt(m_sock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)) ; +#else + setsockopt(m_sock,SOL_SOCKET,SO_REUSEADDR,(char*) &on,sizeof(on)) ; +#endif + + /* Erzeuge die Bindung an die Serveradresse + * (d.h. an einen bestimmten Port) */ + if (bind( m_sock, (struct sockaddr*)&m_server, sizeof( m_server)) < 0) { + // Verbindungsfehler ignorieren, damit die Nachrichten auf jeden Fall + // aus dem ModuleResultSet "gepumpt" werden ! + // + //perror( "can't bind socket"); + //exit(1); + } else { + /* Teile dem Socket mit, dass Verbindungswuensche + * von Clients entgegengenommen werden */ + listen( m_sock, 10); + result=true ; + + /** + * In globaler ManagerListe eintragen/anmelden + */ + GetSocketsManager()->addModule(this) ; + } + + + return result ; +} + +void *SocketServer::Thread() +{ + this->ThreadStarted() ; // Erstmal Bescheid geben, dass wir laufen + + if (createListeningSocket()) + { + initSocketThreads() ; + } + + + if (memLockOpen( 12345, & m_queueLock) < 0) { + ThrowMonitorException("memLockOpen failed") ; + } + + while (!m_bWantStop) + { + /* Bearbeite die Verbindungswünsche von Clients + * in einer Endlosschleife + * Der Aufruf von accept() blockiert solange, + * bis ein Client Verbindung aufnimmt, oder der timeout abgelaufen ist */ + + fd_set fdset ; + timeval tv ; + int result=0 ; + int maxHandle ; + m_bWantStop=false ; + while ((result==0) && (!m_bWantStop)) + { + tv.tv_sec=0; // Wartezeit auf Socketereignis, danach Kontrolle, ob ein "Sendeauftrag" vorliegt + tv.tv_usec=100000 ; + FD_ZERO(&fdset) ; // Den Socket m_sock ueberwachen ... + FD_SET(m_sock,&fdset); + + // Diese Zeile sollte man NICHT mit "1" uebersetzen ! + // Das geht voll daneben. Es muss m_sock+1 sein ! Auch bei einem (!) Socket ! + maxHandle = m_sock + 1; + + result= select(maxHandle, &fdset, &fdset, &fdset, &tv); // wartet Zeitraum wie in tv definiert + + if (FD_ISSET(m_sock,&fdset)>0) // Socket ereignis ? + { + result=1 ; + } + + // Neue Verbindungsanfrage ? + // Dann annehmen und als eigenen Thread laufen lassen + // + if (result>0) + { + int useSocket=-1 ; + + // Jetzt freien SocketThread suchen + for (int i=0;iIsRunning()) + { + useSocket=i ; + i=MAX_CLIENTS ; + } + } + + if ((useSocket>=MAX_CLIENTS) || (useSocket<0)) + { + // TODO zu viele Clients ! + ThrowMonitorException("Too many client connects") ; + perror("Zu viele Clients !\r\n") ; + exit (1) ; + } + + socklen_t sin_size = sizeof (sockaddr_in); + int fd = accept(m_sock,(sockaddr*) &socketThread[useSocket]->m_client,&sin_size); + FILE_LOG(logINFO) << "new connection from " << inet_ntoa(socketThread[useSocket]->m_client.sin_addr) ; + + // Thread mit dem oben angenommenen Socket starten + socketThread[useSocket]->setFD(fd) ; + socketThread[useSocket]->Start() ; + } + } + } + + // Listening Socket beenden + closesocket( m_sock); + + // Alle Clients beenden + FILE_LOG(logINFO) << "Beende alle Clients" ; + for (int i=0;iIsRunning()) + { + socketThread[i]->closeSocket() ; + FILE_LOG(logINFO) << i << ": closesocket done" ; + socketThread[i]->Kill() ; + FILE_LOG(logINFO) << i << ": kill done" ; + } + } + + // uns selbst beenden + usleep(1000) ; + //JThread::Kill() ; + return NULL ; +} + + +void SocketServer::initSocketThreads() +{ + int i ; + for (i=0;iIsRunning()) + { + m_bSkipDispatching=false ; + // erstmal ggf. LUA Filter aufrufen + #ifdef LUA + + if (m_bUseLUAScript==true) + { + int z ; + /* push functions and arguments */ + lua_getglobal(L, "filter"); /* function to be called */ + // start array structure + lua_newtable( L ); + int numCount=1 ; + for (ResultItemsMap::iterator iter=pRes->m_Items.begin(); iter!=pRes->m_Items.end(); ++iter) + { + { + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,iter->first.c_str(),199) ; + strncpy(zwei,iter->second.c_str(),199) ; + + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + } + } + + // noch clientIP, authenticated und loginname dazupacken + + // Authenticated + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_authenticated",199) ; + if (socketThread[i]->isClientAuthenticated()) + { + strncpy(zwei,"1",199) ; + } else { + strncpy(zwei,"0",199) ; + } + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // ClientIP + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_ip",199) ; + strncpy(zwei,socketThread[i]->getClientIP().c_str(),199) ; + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // Loginname + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_loginname",199) ; + strncpy(zwei,socketThread[i]->getClientLogin().c_str(),199) ; + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // Clienttype + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_type",199) ; + switch (m_ServerModus) + { + case SocketThread::monitord: + strncpy(zwei,"monitord",199) ; + break ; + case SocketThread::fms32pro: + strncpy(zwei,"fms32",199) ; + break ; + case SocketThread::crusader: + strncpy(zwei,"crusader",199) ; + break ; + default: + strncpy(zwei,"unknown",199) ; + break ; + } + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // set the number of elements (index to the last array element) + lua_pushliteral( L, "n" ); + lua_pushnumber( L, numCount-1 ); + lua_rawset( L, -3 ); + + // set the name of the array that the script will access + lua_setglobal( L, "arg" ); + + /* do the call (2 arguments, 1 result) */ + if (lua_pcall(L, 0, LUA_MULTRET, 0) != 0) { + FILE_LOG(logERROR) << "Fehler beim Aufruf lua dispatcher script:" << lua_tostring(L, -1); + //error(L, "error running function `f': %s", + // lua_tostring(L, -1)); + } + + /* retrieve result */ + if (!lua_isnumber(L, -1)) { + FILE_LOG(logERROR) << "nicht-numerische Antwort vom lua dispatcher script" ; + //error(L, "function `f' must return a number"); + } + z = lua_tonumber(L, -1); + lua_pop(L, 1); /* pop returned value */ + FILE_LOG(logDEBUG1) << "lua Result (global dispatcher)" << z ; + + if (z==1) m_bSkipDispatching=true ; + } + #endif + + if (m_bSkipDispatching==false) + { + socketThread[i]->addResult(pRes) ; + } + } + + } +} + + +/* + * ----------------------------------------------------------- + * ThreadBase + * ----------------------------------------------------------- + */ + +ThreadBase::~ThreadBase() +{ +} + +ThreadBase::ThreadBase(int locknum) +{ + m_iLockNum= locknum ; + m_exitThread=false ; +} + +bool ThreadBase::createLock() +{ + if ( memLockCreate( m_iLockNum, &m_Lock) < 0) { + + ThrowMonitorException("memLockCreate failed for " + convertIntToString(m_iLockNum)) ; + } + return true; +} + +void ThreadBase::releaseLock() +{ + memLockDestroy(m_Lock) ; + +} + + +/* + * ----------------------------------------------------------- + * SocketThread + * ----------------------------------------------------------- + */ + +SocketThread::~SocketThread() +{ +} + +SocketThread::SocketThread(MonitorConfiguration *config, int locknum, int PortNum, SocketMode ServerMode) +: ThreadBase(locknum) +{ + m_MonitorConfiguration = config; + m_iPortNum = PortNum ; + m_ServerMode = ServerMode ; + ResetThreadVars() ; +} + +void SocketThread::setFD(int fd) +{ + m_fd=fd ; +} + +void SocketThread::ResetThreadVars() +{ + // Zuruecksetzen: + // Kein Socket zugewiesen + // Client ist nicht angemeldet + // Thread soll sich nicht beenden + // + + m_fd=0 ; + m_authenticated=false ; + m_exitThread=false ; + + // Commandbuffer loeschen + memset(m_CommandBuffer,0,MAX_COMMANDLINE) ; + +} + +void *SocketThread::Thread() +{ + if (m_fd==0) + { + ThrowMonitorException("SocketThread started wird fd=NULL") ; + return NULL ; + } + + this->ThreadStarted() ; // Erstmal Bescheid geben, dass wir laufen + createLock() ; + createSocket() ; + + FILE_LOG(logINFO) << "SocketThreads exits" ; + + releaseLock() ; + return NULL; +} + + +std::string SocketThread::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + return socketText ; +} + + +std::string SocketThread::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + return socketText ; +} + +std::string SocketThread::createFMSOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + + return socketText ; +} + +std::string SocketThread::createOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + + if (Result["typ"]=="fms") + { + socketText=createFMSOutputString(Result) ; + } + else if (Result["typ"]== "pocsag") + { + socketText=createPOCSAGOutputString(Result) ; + } + else if (Result["typ"]=="zvei") + { + socketText=createZVEIOutputString(Result) ; + } + + return socketText ; +} +void SocketThread::addResult(ModuleResultBase* pRes) +{ + std::string outText ; + + outText=createOutputString(*pRes); + addOutputText(outText) ; +} + +void SocketThread::addOutputText(std::string outText) +{ + memLock(m_Lock) ; + if (!(outText=="")) + { + m_outputStrings.insert(m_outputStrings.begin(),outText) ; + } + memUnlock(m_Lock) ; +} + +void SocketThread::say(const std::string& something) +{ + unsigned int len=send( m_fd, something.c_str(), something.length(), 0); + if (len!=something.length()) + { + FILE_LOG(logERROR) << "error sending date to client. thread exiting" ; + doLogout() ; + } +} + +void SocketThread::say(const char *something) +{ + unsigned int len = send( m_fd, something, strlen(something), 0); + if (len!=strlen(something)) + { + FILE_LOG(logERROR) << "error sending date to client. thread exiting" ; + doLogout() ; + } +} + +void SocketThread::processInput() +{ + +} + + +void SocketThread::doLogout() +{ + m_exitThread=true ; +} + + +void SocketThread::sayWelcome() +{ +} + +void SocketThread::sayGoodbye() +{ +} + +void SocketThread::createSocket() +{ + timeval tv ; + + if (m_fd < 0) { + ThrowMonitorException("accept failed") ; + //perror( "accept failed"); + //exit(1); + } + + // Hier ist die Sitzung noch nicht "authenticated" + fd_set fdset ; + + FD_ZERO(&fdset) ; + FD_SET(m_fd,&fdset); + + m_sClientIP= inet_ntoa(m_client.sin_addr) ; + + m_authenticated=false ; + // Gültige IP Adresse, die sich nicht anmelden muss ? + if (m_MonitorConfiguration->IsValidLogin("","",this->m_sClientIP)) + { + FILE_LOG(logINFO) << "login authentication (ip allowed): " << m_sClientIP ; + this->m_authenticated=true ; + } + + // FMS32Pro ist dafuer zu doof ;-) + // + if ((m_ServerMode==SocketThread::fms32pro)) + { + // TODO: IP Liste auch bei FMS32 anwenden ? dann nachfolgendes auskommentiert lassen + // this->m_authenticated=true ; + } + + m_CommandBuffer[0]='\0'; + + // Wir sagen natuerlich brav "Guten Tag" ... + sayWelcome() ; + + fd_set fdset_write ; + fd_set fdset_exceptions ; + + + for (;;) { + if (m_exitThread) + { + break ; + } + + // Fuer eine Sekunde auf Meldung am Port warten + tv.tv_sec=0 ; + tv.tv_usec=10000 ; + FD_ZERO(&fdset) ; + FD_SET(m_fd,&fdset); + + // Neu: write + exceptions + FD_ZERO(&fdset_write) ; + FD_ZERO(&fdset_exceptions) ; + //FD_SET(m_fd,&fdset_write); + FD_SET(m_fd,&fdset_exceptions); + + + int result = select(1, &fdset, NULL, &fdset_exceptions, &tv); + + if (FD_ISSET(m_fd,&fdset)>0) // Socket ereignis ? + { + FILE_LOG(logDEBUG) << "Socket reports read event" ; + result=1 ; + } + + if (FD_ISSET(m_fd,&fdset_write)>0) // Problem ? + { + FILE_LOG(logDEBUG) << "Socket reports write event" ; + result=0 ; + //m_exitThread=true ; + } + + if (FD_ISSET(m_fd,&fdset_exceptions)>0) // Problem ? + { + FILE_LOG(logDEBUG) << "Socket reports exception event" ; + result=0 ; + m_exitThread=true ; + } + + if (result>0) + { + char buffer[RECV_BUFFER] ; + char * posPtr ; + int gelesen ; + gelesen=recv (m_fd, buffer, RECV_BUFFER-1, 0) ; + if (gelesen<=0) // Nix am Port, aber doch Port Event ? + { + FILE_LOG(logINFO) << "recv()<=0 => socketthread exiting" ; + m_exitThread=true ; + } + buffer[gelesen]='\0'; + + /* gelesenen Puffer an evtl. vorhanden Reste im Kommandopuffer anhängen */ + strncat(m_CommandBuffer,buffer,MAX_COMMANDLINE-strlen(m_CommandBuffer)-1) ; + + /* Erst wenn mindestens eine Eingabezeile empfangen wurde, werden alle vollständigen Zeilen ausgewertet */ + while ((posPtr=strstr(m_CommandBuffer,"\r\n"))>0) + { + /* Puffer nach dem CRLF zwischenspeichern */ + char tempbuffer[MAX_COMMANDLINE] ; + tempbuffer[0]='\0'; + strncpy(tempbuffer,&posPtr[2],MAX_COMMANDLINE) ; + + /* Kommando mit dem Zeilenende beenden */ + posPtr[0]='\0'; + + processInput() ; + + /* restlichen Puffer nach dem CRLF wiederherstellen */ + strncpy(m_CommandBuffer,tempbuffer,MAX_COMMANDLINE) ; + } + + } else + { + // Nix tun + } + + // Gibt es etwas zu senden ? + // + memLock(m_Lock) ; + while (!m_outputStrings.empty()) + { + std::string retString=m_outputStrings.back() ; + + if (m_authenticated) + { + retString.push_back('\r') ; + retString.push_back('\n') ; + say(retString) ; + } + m_outputStrings.pop_back() ; + } + memUnlock(m_Lock) ; + } + + closesocket(m_fd); + ResetThreadVars() ; +} + +std::string SocketThread::getClientIP() +{ + return (m_sClientIP) ; +} + +std::string SocketThread::getClientLogin() +{ + return (m_loginname) ; +} + +bool SocketThread::isClientAuthenticated() +{ + return (m_authenticated) ; +} + +void SocketThread::closeSocket() +{ + closesocket( m_fd); +} + + +bool SocketThread::paramIsHex(int param) +{ + // TODO + return true ; +} + +bool SocketThread::paramIsBase64(int param) +{ + // TODO + return true ; +} + + +bool SocketThread::HexToString(int param, std::string &result) +{ + return convertHexToString(m_cmdParam[param],result); +} + +// ---------------------------------------- +//MonitorSocketsManager + +MonitorSocketsManager *GlobalMonitorSocketsManager=NULL; +MonitorSocketsManager* GetSocketsManager() { + if (GlobalMonitorSocketsManager==NULL) { + GlobalMonitorSocketsManager = new MonitorSocketsManager(); + } + return (GlobalMonitorSocketsManager); +} + +MonitorSocketsManager::MonitorSocketsManager() +{ + FILE_LOG(logDEBUG) << "SocketManager erstellt" ; + + if ( memLockCreate( 12347, & m_MemLock) < 0) { + ThrowMonitorException("SocketsManager: memLockCreate failed") ; + } + + m_bStop=false ; +} + + +MonitorSocketsManager::~MonitorSocketsManager() +{ +} + + +bool MonitorSocketsManager::addModule(SocketServer* pServer) +{ + m_Modules.push_back(pServer) ; + + return true ; +} + + +bool MonitorSocketsManager::dispatchResult(ModuleResultBase *pRes) +{ + tMonitorSocketServerVector::iterator i ; + + for (i= m_Modules.begin(); i< m_Modules.end(); i++) + { + (*i)->addResult(pRes) ; + } + return true ; +} + + +bool MonitorSocketsManager::removeModule(SocketServer* pServer) +{ + return true ; +} diff --git a/monitord/.svn/text-base/SocketServer.h.svn-base b/monitord/.svn/text-base/SocketServer.h.svn-base new file mode 100644 index 0000000..275d705 --- /dev/null +++ b/monitord/.svn/text-base/SocketServer.h.svn-base @@ -0,0 +1,185 @@ +#ifndef SOCKETSERVER_H_ +#define SOCKETSERVER_H_ + +#include +#include "MonitorModulesResults.h" +#include "MonitorConfiguration.h" +#include "memlock.h" + +#include "MonitorSignals.h" +#ifdef PLUGINS + #include "plugins/mplugin.h" +#endif + +#ifdef _WIN32 + /* Headerfiles für Windows */ + #include + #include +#else + /* Headerfiles für Unix/Linux */ + #include + #include + #include + #include + #define closesocket(s) close(s) +#endif + +/* sofern lua aktiviert ist ? -> ifdef noetig ? */ +#include "lua.hpp" + +#define MAX_CLIENTS 50 +#define RECV_BUFFER 512 +#define MAX_COMMANDLINE 1024 +#define MAX_PARAMS 9 + + +class ThreadBase : public JThread +{ +public: + ThreadBase(int LOCKNUM); + virtual ~ThreadBase(); + virtual void *Thread() = 0 ; + virtual void addResult(ModuleResultBase* pRes)=0 ; + + MonitorConfiguration *m_MonitorConfiguration ; +protected: + virtual void ResetThreadVars(){} ; + MEMLOCK m_Lock ; + bool m_exitThread ; + int m_iLockNum ; + bool createLock() ; + void releaseLock() ; +}; + + +/** + * @brief Repraesentiert immer genau einen verbunden Client. + * + * Der SocketThread wird fuer jeden verbundenen Client gestartet. Er prueft die Anmeldung + * und gibt die Daten weiter, die vom Master-Thread SocketServer an ihn weitergeleitet werden + */ +class SocketThread : public ThreadBase +{ +public: + enum SocketMode {monitord,crusader,fms32pro} ; + + //SocketThread(int LOCKNUM, int PortNum); + SocketThread(MonitorConfiguration *config, int LOCKNUM, int PortNum, SocketMode ServerMode=monitord); + virtual ~SocketThread(); + virtual void *Thread() ; + virtual void addResult(ModuleResultBase* pRes) ; + void setFD(int fd) ; + void addOutputText(std::string outText) ; + void closeSocket() ; + + std::string getClientLogin() ; + std::string getClientIP() ; + bool isClientAuthenticated() ; + struct sockaddr_in m_client; // war sockaddr_in + +protected: + MonitorConfiguration m_MonitorConfig; + SocketMode m_ServerMode ; + bool m_authenticated ; + int m_fd; + int m_iPortNum ; + char m_CommandBuffer[MAX_COMMANDLINE] ; + int m_cmd; + int m_paramCount ; + std::string m_cmdString; + std::string m_cmdParam[MAX_PARAMS] ; + std::string m_sClientIP ; + std::vector m_outputStrings ; + std::string m_loginname ; + + virtual std::string createFMSOutputString(ModuleResultBase Result); //< Erstellt die Ausgaben fuer FMS + virtual std::string createPOCSAGOutputString(ModuleResultBase Result); //< Erstellt die Ausgaben fuer POCSAG + virtual std::string createZVEIOutputString(ModuleResultBase Result); //< Erstellt die Ausgaben fuer ZVEI + std::string createOutputString(ModuleResultBase Result) ; + + virtual void ResetThreadVars() ; + void say(const std::string& something) ; + void say(const char* something) ; + virtual void sayWelcome() ; + virtual void sayGoodbye() ; + void createSocket() ; + virtual void processInput() ; + + // Kommandos auf reine HEX Characters pruefen + // + bool paramIsHex(int param) ; + bool paramIsBase64(int param) ; + bool HexToString(int param, std::string& result) ; + bool StringToHex(const std::string& input, std::string &result) ; + + void doLogout() ; // 299 +}; + +/** + * @brief Oeffnet den TCP Socket und nimmt Verbindungsanfragen an. + * + * Der SocketServer oeffnet den listening port und startet fuer jeden Client, der sich + * verbindet einen Thread vom Typ SocketThread. + */ + +class SocketServer : public JThread +{ +public: + SocketServer(MonitorConfiguration* config, int iLockStartwert=0); + SocketServer(MonitorConfiguration* config, std::string FilterFileName , int iLockStartwert=0); + virtual ~SocketServer(); + virtual void *Thread() ; + unsigned int m_iPort ; + int m_iLockStartwert ; + SocketThread::SocketMode m_ServerModus ; + MEMLOCK m_queueLock ; + MODULERESULTSET m_queue ; + void addResult(ModuleResultBase* pRes) ; + bool m_bWantStop ; +protected: + int m_sock ; + struct sockaddr_in m_server ; + SocketThread* socketThread[MAX_CLIENTS] ; + MonitorConfiguration *m_MonitorConfiguration ; + bool createListeningSocket() ; + void initSocketThreads() ; + + bool m_bSkipDispatching ; + #ifdef LUA + lua_State *L; + bool m_bUseLUAScript ; + #endif +} ; + + +/** + * @brief Verwaltet alle SocketModule + */ + +typedef std::vector< SocketServer*> tMonitorSocketServerVector ; + +class MonitorSocketsManager +{ +public: + + + MonitorSocketsManager() ; + virtual ~MonitorSocketsManager() ; + bool addModule(SocketServer* pServer); + bool removeModule(SocketServer *pServer) ; + bool dispatchResult(ModuleResultBase *pRes) ; +protected: + MEMLOCK m_MemLock ; + tMonitorSocketServerVector m_Modules ; + bool m_bStop ; +}; + +extern MonitorSocketsManager *GlobalMonitorSocketsManager ; +MonitorSocketsManager* GetSocketsManager() ; + +// in SocketServer.cpp als globale Variable definiert +//extern tMonitorSocketServerVector globalRegisteredSocketServers ; + + + +#endif /*SOCKETSERVER_H_*/ diff --git a/monitord/.svn/text-base/SocketThreadCrusader.cpp.svn-base b/monitord/.svn/text-base/SocketThreadCrusader.cpp.svn-base new file mode 100644 index 0000000..821931c --- /dev/null +++ b/monitord/.svn/text-base/SocketThreadCrusader.cpp.svn-base @@ -0,0 +1,177 @@ +#include "SocketThreadCrusader.h" +#include +#include "MonitorLogging.h" +#include "convert.h" + +using namespace std ; + +SocketThreadCrusader::SocketThreadCrusader(MonitorConfiguration *config, int LOCKNUM, int PortNum) + : SocketThread(config, LOCKNUM, PortNum, monitord) +{ + telegrammCounter=0 ; +} + +SocketThreadCrusader::~SocketThreadCrusader() +{ +} + +void SocketThreadCrusader::sayWelcome() +{ +} + +std::string SocketThreadCrusader::createFMSOutputString(ModuleResultBase Result) +{ + std::string baustufeCString, richtungCString ; + std::string counterCString ; + std::string socketText ; + + baustufeCString = convertStringBoolText (Result["baustufe"]); + richtungCString = convertStringBoolText (Result["richtung"]); + + counterCString=convertIntToString(telegrammCounter++) ; + + + socketText = Result["datum"] // dateStr + + "#![]!#" + Result["uhrzeit"] //timeStr + + "#![]!#" + Result["fmskennung"] // fahrzeugKennung + + "#![]!#" + Result["status"] // statusString + + "#![]!#" + baustufeCString + + "#![]!#" + richtungCString + + "#![]!#" + Result["tki"] + + "#![]!#-1#![]!#false#![]!#false#![]!#" + counterCString ; + + /* + if ( (Result["textuebertragung"].size()>0) && (convertToInt(Result["status"])==10)) + { + socketText+= "#![]!#" + Result["textuebertragung"] + + "#![]!#" ; + } + */ + + return socketText ; + +} + +std::string SocketThreadCrusader::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string hexText ; + std::string counterCString ; + + convertStringToHex(Result["text"],hexText) ; + counterCString=convertIntToString(telegrammCounter++) ; + + socketText = Result["datum"] + + "#![]!#" + Result["uhrzeit"] + + "#![]!#" + Result["zvei"] + + "#![]!#16#![]!#false#![]!#true#![]!#-1#![]!#-1#![]!#false#![]!#false#![]!#" + counterCString + + "#![]!#Melderalarm#![]!#" + ; + + return socketText ; +} + +std::string SocketThreadCrusader::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string hexText ; + std::string counterCString ; + + counterCString=convertIntToString(telegrammCounter++) ; + convertStringToHex(Result["text"],hexText) ; + + socketText = Result["datum"] + + "#![]!#" + Result["uhrzeit"] + + "#![]!#" + Result["ric"] + Result["subhex"] + + "#![]!#17#![]!#false#![]!#true#![]!#0#![]!#-1#![]!#false#![]!#false#![]!#" + counterCString + + "#![]!#" + Result["text"] + + "#![]!#" + ; + return socketText ; +} + +void SocketThreadCrusader::processInput() +{ + // Anmeldung ? + std::string Kommando=m_CommandBuffer ; + + if (Kommando.substr(0,5)=="PASS:") + { + std::string password=Kommando.substr(5) ; + checkLogin(password) ; + } + else if (Kommando=="ClientCiao") + { + doLogout() ; + } else if (Kommando.substr(8, 6) == "#![]!#") { + ModuleResultBase *pfms = new ModuleResultBase(); + size_t position; + std::string datum, zeit, fmskennung, status, a, b, c, d, e, f, g, text; + /* Status im Crusader manuell gesetzt: + * 23.07.08#![]!#22:19:36#![]!#93185811#![]!#7#![]!#true#![]!#false#![]!#3#![]!#1#![]!#false#![]!#true#![]!#-1#![]!#7 TelegrammText#![]!# + */ + FILE_LOG (logDEBUG) << "manueller Status von Crusader Client empfangen."; + + /* es wird nur FMS betrachtet */ + pfms->set ("typ", "fms"); + /* Feld 1: Datum */ + pfms->set ("datum", Kommando.substr(0, 8)); + /* Feld 2: Uhrzeit */ + position = Kommando.find_first_of(CRUSADER_DELIMITER) + 6; + pfms->set ("uhrzeit", Kommando.substr(position, 8)); + /* Feld 3: FMS Kennung */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + fmskennung = Kommando.substr(position, 8); + pfms->set ("fmskennung", fmskennung); + pfms->set ("bosdezimal", convertIntToString (convertNibbleToInt (fmskennung[0]))); + pfms->set ("landdezimal", convertIntToString (convertNibbleToInt (fmskennung[1]))); + pfms->set ("bos", fmskennung.substr(0, 1)); + pfms->set ("land", fmskennung.substr(1, 1)); + pfms->set ("ort", fmskennung.substr(2, 2)); + pfms->set ("kfz", fmskennung.substr(4, 4)); + /* Feld 4: Fahrzeugstatus */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + status = Kommando.substr(position, 1); + pfms->set ("status", status); + pfms->set ("statusdezimal", convertIntToString (convertNibbleToInt (status[0]))); + // TODO Status 16 bedeutet ZVEI und 17 POCSAG + /* Feld 5: Baustufe */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("baustufe", convertStringTextBool(Kommando.substr(position, Kommando.find_first_of(CRUSADER_DELIMITER, position) - position))); + /* Feld 6: Richtung */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("richtung", convertStringTextBool(Kommando.substr(position, Kommando.find_first_of(CRUSADER_DELIMITER, position) - position))); + /* Feld 7: TKI */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("tki", Kommando.substr(position, 1)); + /* Feld 8: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 9: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 10: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 11: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 12: Text */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("textuebertragung", Kommando.substr(position, Kommando.find_first_of(CRUSADER_DELIMITER, position) - position)); + + FILE_LOG(logDEBUG) << "Debug(FMS vom Crusader):" << endl << (*pfms); + + GlobalDispatcher->addResult (pfms); + } else { + FILE_LOG (logDEBUG) << "received from Crusader: " << m_CommandBuffer ; + } +} + +void SocketThreadCrusader::checkLogin(std::string password) +{ + if (m_MonitorConfiguration->IsValidLogin(m_MonitorConfiguration->m_crusaderUsername,password,m_sClientIP)) + { + m_authenticated=true ; + FILE_LOG(logINFO) << "login accepted (crusader pw allowed): from ip " << m_sClientIP ; + } else { + FILE_LOG(logINFO) << "login denied (crusader pw not allowed): " << password << " from ip " << m_sClientIP ; + } +} + diff --git a/monitord/.svn/text-base/SocketThreadCrusader.h.svn-base b/monitord/.svn/text-base/SocketThreadCrusader.h.svn-base new file mode 100644 index 0000000..d3a5574 --- /dev/null +++ b/monitord/.svn/text-base/SocketThreadCrusader.h.svn-base @@ -0,0 +1,26 @@ +#ifndef SOCKETTHREADCRUSADER_H_ +#define SOCKETTHREADCRUSADER_H_ + +#include "SocketServer.h" + +#define CRUSADER_DELIMITER "#![]!#" + +class SocketThreadCrusader : public SocketThread +{ +public: + SocketThreadCrusader(MonitorConfiguration *config, int LOCKNUM, int PortNum); + virtual ~SocketThreadCrusader(); + +protected: + virtual void processInput() ; + void checkLogin(std:: string) ; + virtual void sayWelcome() ; + bool parseCommand() ; + virtual std::string createFMSOutputString(ModuleResultBase Result) ; + virtual std::string createZVEIOutputString(ModuleResultBase Result) ; + virtual std::string createPOCSAGOutputString(ModuleResultBase Result) ; + unsigned long telegrammCounter ; + +}; + +#endif /*SOCKETTHREADCRUSADER_H_*/ diff --git a/monitord/.svn/text-base/SocketThreadFMS32.cpp.svn-base b/monitord/.svn/text-base/SocketThreadFMS32.cpp.svn-base new file mode 100644 index 0000000..05185a8 --- /dev/null +++ b/monitord/.svn/text-base/SocketThreadFMS32.cpp.svn-base @@ -0,0 +1,129 @@ +#include "SocketThreadFMS32.h" +#include "MonitorLogging.h" + +SocketThreadFMS32::SocketThreadFMS32(MonitorConfiguration *config, int LOCKNUM, int PortNum) + : SocketThread(config, LOCKNUM, PortNum, fms32pro) +{ +} + +SocketThreadFMS32::~SocketThreadFMS32() +{ +} + +void SocketThreadFMS32::sayWelcome() +{ + std::string welcomeStringFMS32Pro="#Verbindung zu FMS32-Server erfolgreich hergestellt!\r\n#Verbunden mit Anschluss: " ; + std::string Port=convertIntToString(this->m_iPortNum) ; + + say(welcomeStringFMS32Pro + Port + "\r\nAN" + Port+"\r\n") ; +} + +void SocketThreadFMS32::processInput() +{ + std::string Kommando=m_CommandBuffer; + + if (Kommando == "AllFMS") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (�bertragung aktueller Fahrzeugstatus aller Fahrzeuge)."; + } else if (Kommando == "GetAlarmListe") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (GetAlarmListe)."; + } else if (Kommando.substr(0, 12) == "GetFMSListe\t") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (�bertragung Statuswechsel der letzten n Stunden)."; + } else if (Kommando.substr(0, 12) == "GetPOCListe\t") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (�bertragung POCSAG Rufe der letzten n Stunden)."; + } else { + FILE_LOG (logDEBUG) << "received from FMS32: " << m_CommandBuffer; + } + + return; +} + + +std::string SocketThreadFMS32::createFMSOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string Feld10="0"; + std::string Feld11="0" ; + std::string Feld12="0" ; + std::string Feld13="" ; + std::string Feld14="0" ; + std::string Feld15="0" ; + + socketText = std::string("FMSTlg") + + "\t" + Result["fmskennung"] //fahrzeugKennung + + "\t" + Result["bosdezimal"] //bosDezimalString // kein HEX + + "\t" + Result["landdezimal"] //landDezimalString // kein HEX + + "\t" + Result["bos"]+Result["land"]+Result["ort"] // bosString + landString + ortString + + "\t" + Result["kfz"] + + "\t" + Result["statusdezimal"] // kein HEX + + "\t" + Result["baustufe"] //baustufeString + + "\t" + Result["richtung"] //richtungString + + "\t" + Result["tki"] //tkiString + ; + if (Result["textuebertragung"].size()>0) + { + if (convertToInt(Result["richtung"])==0) + { + // Vom Fahrzeug, Ortstaste wird im Moment + // nicht unterstuetzt + Feld10="2"; + Feld11="0" ; + Feld12="0" ; + Feld13=Result["textuebertragung"] ; + Feld14="0" ; + Feld15="0" ; + } else if (convertToInt(Result["richtung"])==1) + { + // Von der Leitstelle + Feld10="0"; + Feld11="-1" ; + Feld12="0" ; + Feld13=Result["textuebertragung"] ; + Feld14="0" ; + Feld15="0" ; + } + } + socketText +="\t"+Feld10 // 10: Folgetelegramm vom Fzg 0=Nein,1=Ort,2=Sonst + + "\t"+Feld11 // 11: Folgetelegramm von der Lst 0=Nein, 1=ja + + "\t"+Feld12 // 12: Folgenummer dezimal (Feld10=1, Ortstaste) + + "\t"+Feld13 // 13: Folgetelegramm (vom Fzg in Hex, von der Lst in ASCII + + "\t"+Feld14 // 14: Soundkarte(0..3) + + "\t"+Feld15 // 15: Kanal (0,1) + ; + return socketText ; +} + +std::string SocketThreadFMS32::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + socketText = std::string("ZVEI") + + "\t" + Result["zvei"] + + "\t0\t0" + ; + + return socketText ; +} + +std::string SocketThreadFMS32::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + std::string subString ; + int sub=0 ; + try { + sub = convertToInt( Result["sub"])+1 ; + } + catch (BadConversion) + { + sub=0 ; + FILE_LOG (logERROR) << "Error converting subaddress : " << Result["sub"] ; + } + + subString=convertIntToString(sub) ; + + socketText = std::string("POC") + + "\t" + Result["ric"] + + "\t" + subString //Funktionsbit + + "\t" + Result["text"] + + "\t0\t0" + ; + return socketText ; +} diff --git a/monitord/.svn/text-base/SocketThreadFMS32.h.svn-base b/monitord/.svn/text-base/SocketThreadFMS32.h.svn-base new file mode 100644 index 0000000..89ac707 --- /dev/null +++ b/monitord/.svn/text-base/SocketThreadFMS32.h.svn-base @@ -0,0 +1,24 @@ +#ifndef SOCKETTHREADFMS32_H_ +#define SOCKETTHREADFMS32_H_ + +#include "SocketServer.h" + +/** + * FMS32-Pro Protokoll nach der Beschreibung in http://www.heirue-soft.de/neues321.pdf + * erstellt + */ +class SocketThreadFMS32 : public SocketThread +{ +public: + SocketThreadFMS32(MonitorConfiguration *config, int LOCKNUM, int PortNum); + virtual ~SocketThreadFMS32(); + +protected: + virtual void processInput() ; + virtual void sayWelcome() ; + virtual std::string createFMSOutputString(ModuleResultBase Result) ; + virtual std::string createZVEIOutputString(ModuleResultBase Result) ; + virtual std::string createPOCSAGOutputString(ModuleResultBase Result) ; +}; + +#endif /*SOCKETTHREADFMS32_H_*/ diff --git a/monitord/.svn/text-base/SocketThreadMonitord.cpp.svn-base b/monitord/.svn/text-base/SocketThreadMonitord.cpp.svn-base new file mode 100644 index 0000000..409ddd6 --- /dev/null +++ b/monitord/.svn/text-base/SocketThreadMonitord.cpp.svn-base @@ -0,0 +1,418 @@ +#include "SocketThreadMonitord.h" +#include "config.h" +#include "Monitor.h" +#include +#include + +#include "MonitorLogging.h" + +const std::string welcomeString="100;" +std::string(PACKAGE_STRING)+ " READY\r\n"; +const std::string authenticateString="101:001\r\n" ; +const std::string illegalFormatString="101:004\r\n" ; + +const std::string CAPABILITY_MONITORD_VERSION="0020" ; +const std::string CAPABILITY_MONITORD_PROTOCOLVERSION="0004" ; + +using namespace std; + +SocketThreadMonitord::SocketThreadMonitord(MonitorConfiguration *config, int LOCKNUM, int PortNum) + : SocketThread(config, LOCKNUM, PortNum, monitord) +{ +} + +SocketThreadMonitord::~SocketThreadMonitord() +{ +} + +void SocketThreadMonitord::sayWelcome() +{ + say(welcomeString) ; +} + +bool SocketThreadMonitord::parseCommand() +{ + m_paramCount=0 ; + std::string parserTemp =m_CommandBuffer ; + std::string item ; // Aktueller Teil zwischen den Doppelpunkten + size_t len = 0 ; // Laenge bis zum naechsten Doppelpunkt + int itemCount=0; // Wievielter Parameter ? + bool lastItem=false ; // letzter Eintrag ? (fuer CR/LF interessant) + bool illegalCommand=false ; + int i ; + + for (i=0;i=0;i--) + { + if (m_MonitorConfiguration->m_sndConfig[i].iAktiv==1) + { + convertStringToHex(m_MonitorConfiguration->m_sndConfig[i].sChannelName0,hexString) ; + summe= 1*(m_MonitorConfiguration->m_sndConfig[i].iZVEI[0]) + + 2*(m_MonitorConfiguration->m_sndConfig[i].iFMS[0]) + + 4*(m_MonitorConfiguration->m_sndConfig[i].iPOC512[0]) + + 8*(m_MonitorConfiguration->m_sndConfig[i].iPOC1200[0]) + ; + say ("103:" + convertIntToString(2*i+1) + ":" + hexString + ":" + convertIntToString(summe) +"\r\n") ; + + convertStringToHex(m_MonitorConfiguration->m_sndConfig[i].sChannelName1,hexString) ; + summe= 1*(m_MonitorConfiguration->m_sndConfig[i].iZVEI[1]) + + 2*(m_MonitorConfiguration->m_sndConfig[i].iFMS[1]) + + 4*(m_MonitorConfiguration->m_sndConfig[i].iPOC512[1]) + + 8*(m_MonitorConfiguration->m_sndConfig[i].iPOC1200[1]) + ; + say ("103:" + convertIntToString(2*i) + ":" + hexString + ":" + convertIntToString(summe) +"\r\n") ; + } + } +#endif +} + + +void SocketThreadMonitord::startRecording(int seconds, int channel) +{ + int tempSeconds=0; + int tempChannel=0; + + bool bErrConversion=false ; + try + { + tempChannel=convertToInt(m_cmdParam[0]) ; + tempSeconds=convertToInt(m_cmdParam[1]) ; + } catch (BadConversion e) + { + bErrConversion=true ; + } + + if (bErrConversion==false) + { + seconds=tempSeconds ; + channel=tempChannel ; + } + + int sndCardNum =channel / 2 ; + int sndCardLeftRight=channel % 2 ; + + FILE_LOG(logDEBUG) << "Starte Aufnahme mit" << seconds << " Sekunden" << " auf Karte " << sndCardNum << ", Kanal=" << sndCardLeftRight << endl ; + std::string command=std::string("RECORD:" + convertIntToString(seconds)+ ":") + convertIntToString(channel) ; +#if 0 /* FIXME mu� noch umstrukturiert werden */ + std::string resultString =m_monitor.m_sndIn[sndCardNum].PluginCommand(sndCardLeftRight,command,this); + + if (resultString=="not accepted") + { + say ("101:009\r\n") ; + }; + + if (resultString=="not implemented") + { + say ("101:005\r\n") ; + }; +#endif +} +void SocketThreadMonitord::checkLogin() +{ + + + // if (m_authenticated==false) + // Auskommentiert: Auch bei freigeschalteter IP noch eine + // Anmeldung zulassen. Auth-Status wird bei falschem Benutzernamen aber + // nicht zur�ckgesetzt. Dient eher f�r Filter u.�. um ggf. h�here Rechte + // zu erlangen. Nur: Was antwortet man dem Client dann, wenn er das falsche PW ausgibt ? + // + { + if (m_paramCount>3) + { + std::string loginname,password ; + std::string protocol ; + try { + HexToString(0,loginname) ; + HexToString(1,password) ; + protocol= m_cmdParam[2] ; //HexToString(2,protocol) ; + } + catch (std::runtime_error err) + { + return ; + } + + if (protocol==CAPABILITY_MONITORD_PROTOCOLVERSION) + { + if (m_MonitorConfiguration->IsValidLogin(loginname,password,m_sClientIP)) + { + m_authenticated=true ; + m_loginname=loginname ; + FILE_LOG(logINFO) << "login accepted (user allowed): " << m_loginname << " from ip " << m_sClientIP ; + say ("100\r\n") ; // Login OK + } else { + say ("101:003\r\n") ; // Benutzername falsch + FILE_LOG(logINFO) <<"login denied: " << m_loginname << " from ip " << m_sClientIP ; + } + } else { + say ("101:008\r\n") ; // Falsche Protokollversion + FILE_LOG(logINFO) <<"login denied, incorrect protocol version: " << protocol << " from ip: " << m_sClientIP << " with username: " << loginname ; + } + } else { + FILE_LOG(logINFO) << "login with too few arguments detected" ; + say ("101:004;TOO FEW ARGUMENTS\r\n") ; // Fehler: Anfrage nicht verstanden ! + } + } + + /* + } else { + say ("100\r\n") ; // Login OK + } + */ + +} + + + +std::string SocketThreadMonitord::createFMSOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string text ; + + convertStringToHex(Result["textuebertragung"],text) ; + + socketText = std::string("310") + + ":" + Result["timestamp"] + //+ ":" + Result["servernamehex"] + //+ ":" + Result["channelnamehex"] + + ":" + Result["channelnum"] + + ":" + Result["fmskennung"] + + ":" + Result["status"] + + ":" + Result["baustufe"] + + ":" + Result["richtung"] + + ":" + Result["tki"] ; + + if (text.size()>0) + { + socketText+= ":" + text ; + } ; + + std::transform ( socketText.begin(), + socketText.end(), + socketText.begin(), + (int(*)(int)) toupper); + + return socketText ; +} + +std::string SocketThreadMonitord::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + std::string hexText; + + convertStringToHex(Result["text"],hexText) ; + + socketText = std::string("300") + + ":" + Result["timestamp"] + //+ ":" + Result["servernamehex"] + //+ ":" + Result["channelnamehex"] + + ":" + Result["channelnum"] + + ":" + Result["zvei"] + + ":" + Result["weckton"] + + ":" + hexText ; + ; + std::transform (socketText.begin(), socketText.end(), socketText.begin(), + (int(*)(int)) toupper); + + return socketText ; +} + +std::string SocketThreadMonitord::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + std::string hexText; + + convertStringToHex(Result["text"],hexText) ; + + socketText = std::string("320") + + ":" + Result["timestamp"] + //+ ":" + Result["servernamehex"] + //+ ":" + Result["channelnamehex"] + + ":" + Result["channelnum"] + + ":" + Result["ric"] + + ":" + Result["sub"] + + ":" + hexText ; + ; + std::transform (socketText.begin(), socketText.end(), socketText.begin(), + (int(*)(int)) toupper); + return socketText ; +} diff --git a/monitord/.svn/text-base/SocketThreadMonitord.h.svn-base b/monitord/.svn/text-base/SocketThreadMonitord.h.svn-base new file mode 100644 index 0000000..2db2ddc --- /dev/null +++ b/monitord/.svn/text-base/SocketThreadMonitord.h.svn-base @@ -0,0 +1,25 @@ +#ifndef SOCKETTHREADMONITORD_H_ +#define SOCKETTHREADMONITORD_H_ + +#include "SocketServer.h" + +class SocketThreadMonitord : public SocketThread +{ +public: + SocketThreadMonitord(MonitorConfiguration *config, int LOCKNUM, int PortNum); + virtual ~SocketThreadMonitord(); + +protected: + virtual void processInput() ; + void checkLogin() ; + virtual void sayWelcome() ; + bool parseCommand() ; + virtual std::string createFMSOutputString(ModuleResultBase Result) ; + virtual std::string createZVEIOutputString(ModuleResultBase Result) ; + virtual std::string createPOCSAGOutputString(ModuleResultBase Result) ; + void startRecording(int seconds=60, int channel=0) ; + void tellCapabilites() ; + void tellChannels() ; +}; + +#endif /*SOCKETTHREADMONITORD_H_*/ diff --git a/monitord/.svn/text-base/base64.cpp.svn-base b/monitord/.svn/text-base/base64.cpp.svn-base new file mode 100644 index 0000000..4179020 --- /dev/null +++ b/monitord/.svn/text-base/base64.cpp.svn-base @@ -0,0 +1,104 @@ +#include "base64.h" +#include + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + + +static inline bool is_base64(unsigned char c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + +std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for(i = 0; (i <4) ; i++) + ret += base64_chars[char_array_4[i]]; + i = 0; + } + } + + if (i) + { + for(j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (j = 0; (j < i + 1); j++) + ret += base64_chars[char_array_4[j]]; + + while((i++ < 3)) + ret += '='; + + } + + return ret; + +} + +std::string base64_encode(const std::string & in_string) { + + const char *bytes_to_encode = in_string.c_str() ; + unsigned int in_len = in_string.length() ; + + return base64_encode((const unsigned char*) bytes_to_encode,in_len) ; +} + +std::string base64_decode(std::string const& encoded_string) { + int in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i ==4) { + for (i = 0; i <4; i++) + char_array_4[i] = base64_chars.find(char_array_4[i]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = i; j <4; j++) + char_array_4[j] = 0; + + for (j = 0; j <4; j++) + char_array_4[j] = base64_chars.find(char_array_4[j]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; +} diff --git a/monitord/.svn/text-base/base64.h.svn-base b/monitord/.svn/text-base/base64.h.svn-base new file mode 100644 index 0000000..4797606 --- /dev/null +++ b/monitord/.svn/text-base/base64.h.svn-base @@ -0,0 +1,34 @@ +#ifndef BASE64_H_ +#define BASE64_H_ + +#include + +/** + * @brief kodiert den �bergebenen string ins base64 Format + * @author Stephan Effertz (buebchen) + * @param bytes_to_encode Ausgangszeichenkette + * @param len Laenge der Ausgangszeichenkette + */ +std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int len); + +/** + * @brief kodiert den �bergebenen string ins base64 Format + * @author Stephan Effertz (buebchen) + * @param s Ausgangszeichenkette + * + * Achtung diese Funktion kann keine Nullbytes umwandeln, da Nullbytes + * das Ende der Eingabe markieren + */ +std::string base64_encode(std::string const& s); + +/** + * @brief wandelt einen base64 kodierten String in den Originaltext + * @author Stephan Effertz (buebchen) + * @param s Base64 kodierter String + * @return dekodierter String + * + * Achtung kann zur Zeit keine Nullbytes verarbeiten ! + */ +std::string base64_decode(std::string const& s); + +#endif /*BASE64_H_*/ diff --git a/monitord/.svn/text-base/convert.h.svn-base b/monitord/.svn/text-base/convert.h.svn-base new file mode 100644 index 0000000..0c65c05 --- /dev/null +++ b/monitord/.svn/text-base/convert.h.svn-base @@ -0,0 +1,298 @@ +#ifndef CONVERT_H_ +#define CONVERT_H_ + + // File: convert.h + #include + #include + #include + #include + +#include // TODO bis auf strcat/strlen alles C++ + + +/** + * @brief Fehlerklasse fuer Konvertierungsfehler + * @author Stephan Effertz (buebchen) + */ + + class BadConversion : public std::runtime_error { + public: + BadConversion(const std::string& s) + : std::runtime_error(s) + { } + }; + +/** + * @brief double (Fliesskommazahl) in String konvertieren + * @author Stephan Effertz (buebchen) + */ +inline double convertToDouble(const std::string& s) + { + std::istringstream i(s); + double x; + if (!(i >> x)) + throw BadConversion("convertToDouble(\"" + s + "\")"); + return x; + } + +/** + * @brief Integer nach String konvertieren + * @author Stephan Effertz (buebchen) + */ +inline std::string convertIntToString(const int& x) + { + + std::ostringstream o; + + if (!(o << x)) + throw BadConversion("convertIntoToString") ; + + return o.str(); +} + +/** + * @brief Integer nach Hexadezimal (string) konvertieren + * @author Stephan Effertz (buebchen) + */ +inline std::string convertIntToHexString(const int& x) + { + + std::ostringstream o; + + if (!(o << std::hex << x)) + throw BadConversion("convertIntoToString") ; + + return o.str(); +} + + /** + * @brief Zeichenkette nach Integer konvertieren (wie atoi) + * @author Stephan Effertz (buebchen) + */ +inline int convertToInt(const std::string& s) + { + std::istringstream i(s); + int x; + if (!(i >> x)) + throw BadConversion("convertToInt(\"" + s + "\")"); + return x; + } + + /** + * @brief Konvertiert Nibble (0..F) nach Integer (0..15) + * @author Stephan Effertz (buebchen) + */ + inline int convertNibbleToInt(const char& c) + { + int x ; + if (c >='0' && c<='9') + { + x=c-'0' ; + } else if (c >='A' && c<='F') + { + x=c-'A'+10 ; + } else if (c >='a' && c<='f') + { + x=c-'a'+10 ; + } else { + throw BadConversion("convertNibbleToInt"); + } + return x ; + } + + /** + * @brief Konvertiert Integer (0..15) nach Nibble (0..F) + * @author Stephan Effertz (buebchen) + */ + inline char convertIntToNibble(const unsigned int& intVal) + { + char c ; + if ((intVal>16) || (intVal <0)) + { + std::string iString = convertIntToString(intVal) ; + throw BadConversion("convertIntToNibble: integer out of range : "+iString); + } + + if (intVal<10) + { + c='0'+intVal ; + } + else + { + c='a'+(intVal-10) ; + } + return c ; + } + + /** + * @brief Konvertiert String in einen HEX-String + * @author Stephan Effertz (buebchen) + */ + inline std::string convertStringToHex(const std::string& input) + { + std::string result; + result.clear() ; + int i=0 ; + + while (input.length()-i>0) + { + unsigned char temp=input[i] ; + + unsigned char c1,c2 ; + + c2=convertIntToNibble(temp & 0xf) ; // quasi: LSB + c1=convertIntToNibble(temp >>4) ; // quasi: MSB + + result.push_back(c1) ; + result.push_back(c2) ; + + i++; + } + + return result ; + } + + /** + * @brief Konvertiert String in einen HEX-String + * @author Stephan Effertz (buebchen) + */ + inline bool convertStringToHex(const std::string& input, std::string &result) +{ + result.clear() ; + int i=0 ; + + while (input.length()-i>0) + { + unsigned char temp=input[i] ; + + unsigned char c1,c2 ; + + c2=convertIntToNibble(temp & 0xf) ; // quasi: LSB + c1=convertIntToNibble(temp >>4) ; // quasi: MSB + + result.push_back(c1) ; + result.push_back(c2) ; + + i++; + } + + return true ; +} + +/** + * @brief Konvertiert String in einen HEX-String + * @author Stephan Effertz (buebchen) + */ +inline bool convertStringToHex(char input[], char* result) +{ + //result.clear() ; + int i=0 ; + + char byteString[3] ; + + while (strlen(input)-i>0) + { + unsigned char temp=input[i] ; + + unsigned char c1,c2 ; + + c2=convertIntToNibble(temp & 0xf) ; // quasi: LSB + c1=convertIntToNibble(temp >>4) ; // quasi: MSB + + byteString[0]=c1 ; + byteString[1]=c2 ; + byteString[2]=0 ; + + strcat (result,byteString) ; + i++; + } + + return true ; +} + +/** + * @brief Konvertiert HEX-String in einen String + * @author Stephan Effertz (buebchen) + */ +inline bool convertHexToString(char input[], std::string &result) +{ + result.clear() ; + char tempChar ; + int i=0 ; + + + while ((strlen(input)-i) >= 2) + { + tempChar = convertNibbleToInt(input[i])*16 + convertNibbleToInt(input[i+1]) ; + result.push_back(tempChar) ; + i=i+2 ; + } + return true ; +} + +/** + * @brief Konvertiert HEX-String in einen String + * @author Stephan Effertz (buebchen) + */ +inline bool convertHexToString(char input[], char result[]) +{ + char tempChar ; + int i=0 ; + + while ((strlen(input)-i) >= 2) + { + tempChar = convertNibbleToInt(input[i])*16 + convertNibbleToInt(input[i+1]) ; + result[i/2]=tempChar ; + i=i+2 ; + } + result[i/2]=0 ; + return true ; +} + +/** + * @brief Konvertiert HEX-String in einen String + * @author Stephan Effertz (buebchen) + */ +inline bool convertHexToString(std::string input, std::string &result) +{ + result.clear() ; + char tempChar ; + int i=0 ; + + + while ((input.length()-i) >= 2) + { + tempChar = convertNibbleToInt(input[i])*16 + convertNibbleToInt(input[i+1]) ; + result.push_back(tempChar) ; + i=i+2 ; + } + return true ; +} + +inline const char *convertStringBoolText(const std::string &number) +{ + const char *result; + if (number == "0") { + result = "false"; + } else if (number == "1") { + result = "true"; + } else { + throw BadConversion("convertStringBoolText"); + } + return result; +} + +inline const char *convertStringTextBool(const std::string &text) +{ + const char *result; + if (text == "false") { + result = "0"; + } else if (text == "true") { + result = "1"; + } else { + throw BadConversion("convertStringTextBool"); + } + return result; +} + +#endif /*CONVERT_H_*/ diff --git a/monitord/.svn/text-base/costab.cpp.svn-base b/monitord/.svn/text-base/costab.cpp.svn-base new file mode 100644 index 0000000..f61b2b0 --- /dev/null +++ b/monitord/.svn/text-base/costab.cpp.svn-base @@ -0,0 +1,394 @@ +#include "stdafx.h" + +#pragma warning( disable : 4305 ) + +int costabi[0x400] = { + 32767, 32766, 32764, 32761, 32757, 32751, 32744, 32736, + 32727, 32717, 32705, 32692, 32678, 32662, 32646, 32628, + 32609, 32588, 32567, 32544, 32520, 32495, 32468, 32441, + 32412, 32382, 32350, 32318, 32284, 32249, 32213, 32176, + 32137, 32097, 32056, 32014, 31970, 31926, 31880, 31833, + 31785, 31735, 31684, 31633, 31580, 31525, 31470, 31413, + 31356, 31297, 31236, 31175, 31113, 31049, 30984, 30918, + 30851, 30783, 30713, 30643, 30571, 30498, 30424, 30349, + 30272, 30195, 30116, 30036, 29955, 29873, 29790, 29706, + 29621, 29534, 29446, 29358, 29268, 29177, 29085, 28992, + 28897, 28802, 28706, 28608, 28510, 28410, 28309, 28208, + 28105, 28001, 27896, 27790, 27683, 27575, 27466, 27355, + 27244, 27132, 27019, 26905, 26789, 26673, 26556, 26437, + 26318, 26198, 26077, 25954, 25831, 25707, 25582, 25456, + 25329, 25201, 25072, 24942, 24811, 24679, 24546, 24413, + 24278, 24143, 24006, 23869, 23731, 23592, 23452, 23311, + 23169, 23027, 22883, 22739, 22594, 22448, 22301, 22153, + 22004, 21855, 21705, 21554, 21402, 21249, 21096, 20942, + 20787, 20631, 20474, 20317, 20159, 20000, 19840, 19680, + 19519, 19357, 19194, 19031, 18867, 18702, 18537, 18371, + 18204, 18036, 17868, 17699, 17530, 17360, 17189, 17017, + 16845, 16672, 16499, 16325, 16150, 15975, 15799, 15623, + 15446, 15268, 15090, 14911, 14732, 14552, 14372, 14191, + 14009, 13827, 13645, 13462, 13278, 13094, 12909, 12724, + 12539, 12353, 12166, 11980, 11792, 11604, 11416, 11227, + 11038, 10849, 10659, 10469, 10278, 10087, 9895, 9703, + 9511, 9319, 9126, 8932, 8739, 8545, 8351, 8156, + 7961, 7766, 7571, 7375, 7179, 6982, 6786, 6589, + 6392, 6195, 5997, 5799, 5601, 5403, 5205, 5006, + 4807, 4608, 4409, 4210, 4011, 3811, 3611, 3411, + 3211, 3011, 2811, 2610, 2410, 2209, 2009, 1808, + 1607, 1406, 1206, 1005, 804, 603, 402, 201, + 0, -201, -402, -603, -804, -1005, -1206, -1406, + -1607, -1808, -2009, -2209, -2410, -2610, -2811, -3011, + -3211, -3411, -3611, -3811, -4011, -4210, -4409, -4608, + -4807, -5006, -5205, -5403, -5601, -5799, -5997, -6195, + -6392, -6589, -6786, -6982, -7179, -7375, -7571, -7766, + -7961, -8156, -8351, -8545, -8739, -8932, -9126, -9319, + -9511, -9703, -9895, -10087, -10278, -10469, -10659, -10849, + -11038, -11227, -11416, -11604, -11792, -11980, -12166, -12353, + -12539, -12724, -12909, -13094, -13278, -13462, -13645, -13827, + -14009, -14191, -14372, -14552, -14732, -14911, -15090, -15268, + -15446, -15623, -15799, -15975, -16150, -16325, -16499, -16672, + -16845, -17017, -17189, -17360, -17530, -17699, -17868, -18036, + -18204, -18371, -18537, -18702, -18867, -19031, -19194, -19357, + -19519, -19680, -19840, -20000, -20159, -20317, -20474, -20631, + -20787, -20942, -21096, -21249, -21402, -21554, -21705, -21855, + -22004, -22153, -22301, -22448, -22594, -22739, -22883, -23027, + -23169, -23311, -23452, -23592, -23731, -23869, -24006, -24143, + -24278, -24413, -24546, -24679, -24811, -24942, -25072, -25201, + -25329, -25456, -25582, -25707, -25831, -25954, -26077, -26198, + -26318, -26437, -26556, -26673, -26789, -26905, -27019, -27132, + -27244, -27355, -27466, -27575, -27683, -27790, -27896, -28001, + -28105, -28208, -28309, -28410, -28510, -28608, -28706, -28802, + -28897, -28992, -29085, -29177, -29268, -29358, -29446, -29534, + -29621, -29706, -29790, -29873, -29955, -30036, -30116, -30195, + -30272, -30349, -30424, -30498, -30571, -30643, -30713, -30783, + -30851, -30918, -30984, -31049, -31113, -31175, -31236, -31297, + -31356, -31413, -31470, -31525, -31580, -31633, -31684, -31735, + -31785, -31833, -31880, -31926, -31970, -32014, -32056, -32097, + -32137, -32176, -32213, -32249, -32284, -32318, -32350, -32382, + -32412, -32441, -32468, -32495, -32520, -32544, -32567, -32588, + -32609, -32628, -32646, -32662, -32678, -32692, -32705, -32717, + -32727, -32736, -32744, -32751, -32757, -32761, -32764, -32766, + -32767, -32766, -32764, -32761, -32757, -32751, -32744, -32736, + -32727, -32717, -32705, -32692, -32678, -32662, -32646, -32628, + -32609, -32588, -32567, -32544, -32520, -32495, -32468, -32441, + -32412, -32382, -32350, -32318, -32284, -32249, -32213, -32176, + -32137, -32097, -32056, -32014, -31970, -31926, -31880, -31833, + -31785, -31735, -31684, -31633, -31580, -31525, -31470, -31413, + -31356, -31297, -31236, -31175, -31113, -31049, -30984, -30918, + -30851, -30783, -30713, -30643, -30571, -30498, -30424, -30349, + -30272, -30195, -30116, -30036, -29955, -29873, -29790, -29706, + -29621, -29534, -29446, -29358, -29268, -29177, -29085, -28992, + -28897, -28802, -28706, -28608, -28510, -28410, -28309, -28208, + -28105, -28001, -27896, -27790, -27683, -27575, -27466, -27355, + -27244, -27132, -27019, -26905, -26789, -26673, -26556, -26437, + -26318, -26198, -26077, -25954, -25831, -25707, -25582, -25456, + -25329, -25201, -25072, -24942, -24811, -24679, -24546, -24413, + -24278, -24143, -24006, -23869, -23731, -23592, -23452, -23311, + -23169, -23027, -22883, -22739, -22594, -22448, -22301, -22153, + -22004, -21855, -21705, -21554, -21402, -21249, -21096, -20942, + -20787, -20631, -20474, -20317, -20159, -20000, -19840, -19680, + -19519, -19357, -19194, -19031, -18867, -18702, -18537, -18371, + -18204, -18036, -17868, -17699, -17530, -17360, -17189, -17017, + -16845, -16672, -16499, -16325, -16150, -15975, -15799, -15623, + -15446, -15268, -15090, -14911, -14732, -14552, -14372, -14191, + -14009, -13827, -13645, -13462, -13278, -13094, -12909, -12724, + -12539, -12353, -12166, -11980, -11792, -11604, -11416, -11227, + -11038, -10849, -10659, -10469, -10278, -10087, -9895, -9703, + -9511, -9319, -9126, -8932, -8739, -8545, -8351, -8156, + -7961, -7766, -7571, -7375, -7179, -6982, -6786, -6589, + -6392, -6195, -5997, -5799, -5601, -5403, -5205, -5006, + -4807, -4608, -4409, -4210, -4011, -3811, -3611, -3411, + -3211, -3011, -2811, -2610, -2410, -2209, -2009, -1808, + -1607, -1406, -1206, -1005, -804, -603, -402, -201, + 0, 201, 402, 603, 804, 1005, 1206, 1406, + 1607, 1808, 2009, 2209, 2410, 2610, 2811, 3011, + 3211, 3411, 3611, 3811, 4011, 4210, 4409, 4608, + 4807, 5006, 5205, 5403, 5601, 5799, 5997, 6195, + 6392, 6589, 6786, 6982, 7179, 7375, 7571, 7766, + 7961, 8156, 8351, 8545, 8739, 8932, 9126, 9319, + 9511, 9703, 9895, 10087, 10278, 10469, 10659, 10849, + 11038, 11227, 11416, 11604, 11792, 11980, 12166, 12353, + 12539, 12724, 12909, 13094, 13278, 13462, 13645, 13827, + 14009, 14191, 14372, 14552, 14732, 14911, 15090, 15268, + 15446, 15623, 15799, 15975, 16150, 16325, 16499, 16672, + 16845, 17017, 17189, 17360, 17530, 17699, 17868, 18036, + 18204, 18371, 18537, 18702, 18867, 19031, 19194, 19357, + 19519, 19680, 19840, 20000, 20159, 20317, 20474, 20631, + 20787, 20942, 21096, 21249, 21402, 21554, 21705, 21855, + 22004, 22153, 22301, 22448, 22594, 22739, 22883, 23027, + 23169, 23311, 23452, 23592, 23731, 23869, 24006, 24143, + 24278, 24413, 24546, 24679, 24811, 24942, 25072, 25201, + 25329, 25456, 25582, 25707, 25831, 25954, 26077, 26198, + 26318, 26437, 26556, 26673, 26789, 26905, 27019, 27132, + 27244, 27355, 27466, 27575, 27683, 27790, 27896, 28001, + 28105, 28208, 28309, 28410, 28510, 28608, 28706, 28802, + 28897, 28992, 29085, 29177, 29268, 29358, 29446, 29534, + 29621, 29706, 29790, 29873, 29955, 30036, 30116, 30195, + 30272, 30349, 30424, 30498, 30571, 30643, 30713, 30783, + 30851, 30918, 30984, 31049, 31113, 31175, 31236, 31297, + 31356, 31413, 31470, 31525, 31580, 31633, 31684, 31735, + 31785, 31833, 31880, 31926, 31970, 32014, 32056, 32097, + 32137, 32176, 32213, 32249, 32284, 32318, 32350, 32382, + 32412, 32441, 32468, 32495, 32520, 32544, 32567, 32588, + 32609, 32628, 32646, 32662, 32678, 32692, 32705, 32717, + 32727, 32736, 32744, 32751, 32757, 32761, 32764, 32766 +} ; +float costabf[1024] = { + 1.000000000, 0.999981165, 0.999924719, 0.999830604, + 0.999698818, 0.999529421, 0.999322355, 0.999077737, + 0.998795450, 0.998475552, 0.998118103, 0.997723043, + 0.997290432, 0.996820271, 0.996312618, 0.995767415, + 0.995184720, 0.994564593, 0.993906975, 0.993211925, + 0.992479563, 0.991709769, 0.990902662, 0.990058184, + 0.989176512, 0.988257587, 0.987301409, 0.986308098, + 0.985277653, 0.984210074, 0.983105481, 0.981963873, + 0.980785251, 0.979569793, 0.978317380, 0.977028131, + 0.975702107, 0.974339366, 0.972939968, 0.971503913, + 0.970031261, 0.968522072, 0.966976464, 0.965394437, + 0.963776052, 0.962121427, 0.960430503, 0.958703458, + 0.956940353, 0.955141187, 0.953306019, 0.951435030, + 0.949528158, 0.947585583, 0.945607305, 0.943593442, + 0.941544056, 0.939459205, 0.937339008, 0.935183525, + 0.932992816, 0.930766940, 0.928506076, 0.926210225, + 0.923879504, 0.921514034, 0.919113874, 0.916679084, + 0.914209783, 0.911706030, 0.909168005, 0.906595707, + 0.903989315, 0.901348829, 0.898674488, 0.895966232, + 0.893224299, 0.890448749, 0.887639642, 0.884797096, + 0.881921291, 0.879012227, 0.876070082, 0.873094976, + 0.870086968, 0.867046237, 0.863972843, 0.860866964, + 0.857728601, 0.854557991, 0.851355195, 0.848120332, + 0.844853580, 0.841554999, 0.838224709, 0.834862888, + 0.831469595, 0.828045070, 0.824589312, 0.821102500, + 0.817584813, 0.814036310, 0.810457170, 0.806847572, + 0.803207517, 0.799537241, 0.795836926, 0.792106569, + 0.788346410, 0.784556568, 0.780737221, 0.776888490, + 0.773010433, 0.769103348, 0.765167236, 0.761202395, + 0.757208824, 0.753186822, 0.749136388, 0.745057762, + 0.740951121, 0.736816585, 0.732654274, 0.728464365, + 0.724247098, 0.720002532, 0.715730846, 0.711432219, + 0.707106769, 0.702754736, 0.698376238, 0.693971455, + 0.689540565, 0.685083687, 0.680601001, 0.676092684, + 0.671558976, 0.666999936, 0.662415802, 0.657806695, + 0.653172851, 0.648514390, 0.643831551, 0.639124453, + 0.634393275, 0.629638255, 0.624859512, 0.620057225, + 0.615231574, 0.610382795, 0.605511069, 0.600616455, + 0.595699310, 0.590759695, 0.585797846, 0.580813944, + 0.575808167, 0.570780754, 0.565731823, 0.560661554, + 0.555570245, 0.550457954, 0.545324981, 0.540171444, + 0.534997642, 0.529803634, 0.524589658, 0.519356012, + 0.514102757, 0.508830130, 0.503538370, 0.498227656, + 0.492898196, 0.487550169, 0.482183784, 0.476799220, + 0.471396744, 0.465976506, 0.460538715, 0.455083579, + 0.449611336, 0.444122136, 0.438616246, 0.433093816, + 0.427555084, 0.422000259, 0.416429549, 0.410843164, + 0.405241311, 0.399624199, 0.393992037, 0.388345033, + 0.382683426, 0.377007425, 0.371317208, 0.365612984, + 0.359895051, 0.354163527, 0.348418683, 0.342660725, + 0.336889863, 0.331106305, 0.325310290, 0.319502026, + 0.313681751, 0.307849646, 0.302005947, 0.296150893, + 0.290284663, 0.284407526, 0.278519690, 0.272621363, + 0.266712755, 0.260794103, 0.254865646, 0.248927608, + 0.242980182, 0.237023607, 0.231058106, 0.225083917, + 0.219101235, 0.213110313, 0.207111374, 0.201104641, + 0.195090324, 0.189068660, 0.183039889, 0.177004218, + 0.170961887, 0.164913118, 0.158858150, 0.152797192, + 0.146730468, 0.140658244, 0.134580702, 0.128498107, + 0.122410677, 0.116318628, 0.110222206, 0.104121633, + 0.098017141, 0.091908954, 0.085797310, 0.079682440, + 0.073564567, 0.067443922, 0.061320737, 0.055195246, + 0.049067676, 0.042938258, 0.036807224, 0.030674804, + 0.024541229, 0.018406730, 0.012271538, 0.006135885, + 0.000000000, -0.006135885, -0.012271538, -0.018406730, + -0.024541229, -0.030674804, -0.036807224, -0.042938258, + -0.049067676, -0.055195246, -0.061320737, -0.067443922, + -0.073564567, -0.079682440, -0.085797310, -0.091908954, + -0.098017141, -0.104121633, -0.110222206, -0.116318628, + -0.122410677, -0.128498107, -0.134580702, -0.140658244, + -0.146730468, -0.152797192, -0.158858150, -0.164913118, + -0.170961887, -0.177004218, -0.183039889, -0.189068660, + -0.195090324, -0.201104641, -0.207111374, -0.213110313, + -0.219101235, -0.225083917, -0.231058106, -0.237023607, + -0.242980182, -0.248927608, -0.254865646, -0.260794103, + -0.266712755, -0.272621363, -0.278519690, -0.284407526, + -0.290284663, -0.296150893, -0.302005947, -0.307849646, + -0.313681751, -0.319502026, -0.325310290, -0.331106305, + -0.336889863, -0.342660725, -0.348418683, -0.354163527, + -0.359895051, -0.365612984, -0.371317208, -0.377007425, + -0.382683426, -0.388345033, -0.393992037, -0.399624199, + -0.405241311, -0.410843164, -0.416429549, -0.422000259, + -0.427555084, -0.433093816, -0.438616246, -0.444122136, + -0.449611336, -0.455083579, -0.460538715, -0.465976506, + -0.471396744, -0.476799220, -0.482183784, -0.487550169, + -0.492898196, -0.498227656, -0.503538370, -0.508830130, + -0.514102757, -0.519356012, -0.524589658, -0.529803634, + -0.534997642, -0.540171444, -0.545324981, -0.550457954, + -0.555570245, -0.560661554, -0.565731823, -0.570780754, + -0.575808167, -0.580813944, -0.585797846, -0.590759695, + -0.595699310, -0.600616455, -0.605511069, -0.610382795, + -0.615231574, -0.620057225, -0.624859512, -0.629638255, + -0.634393275, -0.639124453, -0.643831551, -0.648514390, + -0.653172851, -0.657806695, -0.662415802, -0.666999936, + -0.671558976, -0.676092684, -0.680601001, -0.685083687, + -0.689540565, -0.693971455, -0.698376238, -0.702754736, + -0.707106769, -0.711432219, -0.715730846, -0.720002532, + -0.724247098, -0.728464365, -0.732654274, -0.736816585, + -0.740951121, -0.745057762, -0.749136388, -0.753186822, + -0.757208824, -0.761202395, -0.765167236, -0.769103348, + -0.773010433, -0.776888490, -0.780737221, -0.784556568, + -0.788346410, -0.792106569, -0.795836926, -0.799537241, + -0.803207517, -0.806847572, -0.810457170, -0.814036310, + -0.817584813, -0.821102500, -0.824589312, -0.828045070, + -0.831469595, -0.834862888, -0.838224709, -0.841554999, + -0.844853580, -0.848120332, -0.851355195, -0.854557991, + -0.857728601, -0.860866964, -0.863972843, -0.867046237, + -0.870086968, -0.873094976, -0.876070082, -0.879012227, + -0.881921291, -0.884797096, -0.887639642, -0.890448749, + -0.893224299, -0.895966232, -0.898674488, -0.901348829, + -0.903989315, -0.906595707, -0.909168005, -0.911706030, + -0.914209783, -0.916679084, -0.919113874, -0.921514034, + -0.923879504, -0.926210225, -0.928506076, -0.930766940, + -0.932992816, -0.935183525, -0.937339008, -0.939459205, + -0.941544056, -0.943593442, -0.945607305, -0.947585583, + -0.949528158, -0.951435030, -0.953306019, -0.955141187, + -0.956940353, -0.958703458, -0.960430503, -0.962121427, + -0.963776052, -0.965394437, -0.966976464, -0.968522072, + -0.970031261, -0.971503913, -0.972939968, -0.974339366, + -0.975702107, -0.977028131, -0.978317380, -0.979569793, + -0.980785251, -0.981963873, -0.983105481, -0.984210074, + -0.985277653, -0.986308098, -0.987301409, -0.988257587, + -0.989176512, -0.990058184, -0.990902662, -0.991709769, + -0.992479563, -0.993211925, -0.993906975, -0.994564593, + -0.995184720, -0.995767415, -0.996312618, -0.996820271, + -0.997290432, -0.997723043, -0.998118103, -0.998475552, + -0.998795450, -0.999077737, -0.999322355, -0.999529421, + -0.999698818, -0.999830604, -0.999924719, -0.999981165, + -1.000000000, -0.999981165, -0.999924719, -0.999830604, + -0.999698818, -0.999529421, -0.999322355, -0.999077737, + -0.998795450, -0.998475552, -0.998118103, -0.997723043, + -0.997290432, -0.996820271, -0.996312618, -0.995767415, + -0.995184720, -0.994564593, -0.993906975, -0.993211925, + -0.992479563, -0.991709769, -0.990902662, -0.990058184, + -0.989176512, -0.988257587, -0.987301409, -0.986308098, + -0.985277653, -0.984210074, -0.983105481, -0.981963873, + -0.980785251, -0.979569793, -0.978317380, -0.977028131, + -0.975702107, -0.974339366, -0.972939968, -0.971503913, + -0.970031261, -0.968522072, -0.966976464, -0.965394437, + -0.963776052, -0.962121427, -0.960430503, -0.958703458, + -0.956940353, -0.955141187, -0.953306019, -0.951435030, + -0.949528158, -0.947585583, -0.945607305, -0.943593442, + -0.941544056, -0.939459205, -0.937339008, -0.935183525, + -0.932992816, -0.930766940, -0.928506076, -0.926210225, + -0.923879504, -0.921514034, -0.919113874, -0.916679084, + -0.914209783, -0.911706030, -0.909168005, -0.906595707, + -0.903989315, -0.901348829, -0.898674488, -0.895966232, + -0.893224299, -0.890448749, -0.887639642, -0.884797096, + -0.881921291, -0.879012227, -0.876070082, -0.873094976, + -0.870086968, -0.867046237, -0.863972843, -0.860866964, + -0.857728601, -0.854557991, -0.851355195, -0.848120332, + -0.844853580, -0.841554999, -0.838224709, -0.834862888, + -0.831469595, -0.828045070, -0.824589312, -0.821102500, + -0.817584813, -0.814036310, -0.810457170, -0.806847572, + -0.803207517, -0.799537241, -0.795836926, -0.792106569, + -0.788346410, -0.784556568, -0.780737221, -0.776888490, + -0.773010433, -0.769103348, -0.765167236, -0.761202395, + -0.757208824, -0.753186822, -0.749136388, -0.745057762, + -0.740951121, -0.736816585, -0.732654274, -0.728464365, + -0.724247098, -0.720002532, -0.715730846, -0.711432219, + -0.707106769, -0.702754736, -0.698376238, -0.693971455, + -0.689540565, -0.685083687, -0.680601001, -0.676092684, + -0.671558976, -0.666999936, -0.662415802, -0.657806695, + -0.653172851, -0.648514390, -0.643831551, -0.639124453, + -0.634393275, -0.629638255, -0.624859512, -0.620057225, + -0.615231574, -0.610382795, -0.605511069, -0.600616455, + -0.595699310, -0.590759695, -0.585797846, -0.580813944, + -0.575808167, -0.570780754, -0.565731823, -0.560661554, + -0.555570245, -0.550457954, -0.545324981, -0.540171444, + -0.534997642, -0.529803634, -0.524589658, -0.519356012, + -0.514102757, -0.508830130, -0.503538370, -0.498227656, + -0.492898196, -0.487550169, -0.482183784, -0.476799220, + -0.471396744, -0.465976506, -0.460538715, -0.455083579, + -0.449611336, -0.444122136, -0.438616246, -0.433093816, + -0.427555084, -0.422000259, -0.416429549, -0.410843164, + -0.405241311, -0.399624199, -0.393992037, -0.388345033, + -0.382683426, -0.377007425, -0.371317208, -0.365612984, + -0.359895051, -0.354163527, -0.348418683, -0.342660725, + -0.336889863, -0.331106305, -0.325310290, -0.319502026, + -0.313681751, -0.307849646, -0.302005947, -0.296150893, + -0.290284663, -0.284407526, -0.278519690, -0.272621363, + -0.266712755, -0.260794103, -0.254865646, -0.248927608, + -0.242980182, -0.237023607, -0.231058106, -0.225083917, + -0.219101235, -0.213110313, -0.207111374, -0.201104641, + -0.195090324, -0.189068660, -0.183039889, -0.177004218, + -0.170961887, -0.164913118, -0.158858150, -0.152797192, + -0.146730468, -0.140658244, -0.134580702, -0.128498107, + -0.122410677, -0.116318628, -0.110222206, -0.104121633, + -0.098017141, -0.091908954, -0.085797310, -0.079682440, + -0.073564567, -0.067443922, -0.061320737, -0.055195246, + -0.049067676, -0.042938258, -0.036807224, -0.030674804, + -0.024541229, -0.018406730, -0.012271538, -0.006135885, + -0.000000000, 0.006135885, 0.012271538, 0.018406730, + 0.024541229, 0.030674804, 0.036807224, 0.042938258, + 0.049067676, 0.055195246, 0.061320737, 0.067443922, + 0.073564567, 0.079682440, 0.085797310, 0.091908954, + 0.098017141, 0.104121633, 0.110222206, 0.116318628, + 0.122410677, 0.128498107, 0.134580702, 0.140658244, + 0.146730468, 0.152797192, 0.158858150, 0.164913118, + 0.170961887, 0.177004218, 0.183039889, 0.189068660, + 0.195090324, 0.201104641, 0.207111374, 0.213110313, + 0.219101235, 0.225083917, 0.231058106, 0.237023607, + 0.242980182, 0.248927608, 0.254865646, 0.260794103, + 0.266712755, 0.272621363, 0.278519690, 0.284407526, + 0.290284663, 0.296150893, 0.302005947, 0.307849646, + 0.313681751, 0.319502026, 0.325310290, 0.331106305, + 0.336889863, 0.342660725, 0.348418683, 0.354163527, + 0.359895051, 0.365612984, 0.371317208, 0.377007425, + 0.382683426, 0.388345033, 0.393992037, 0.399624199, + 0.405241311, 0.410843164, 0.416429549, 0.422000259, + 0.427555084, 0.433093816, 0.438616246, 0.444122136, + 0.449611336, 0.455083579, 0.460538715, 0.465976506, + 0.471396744, 0.476799220, 0.482183784, 0.487550169, + 0.492898196, 0.498227656, 0.503538370, 0.508830130, + 0.514102757, 0.519356012, 0.524589658, 0.529803634, + 0.534997642, 0.540171444, 0.545324981, 0.550457954, + 0.555570245, 0.560661554, 0.565731823, 0.570780754, + 0.575808167, 0.580813944, 0.585797846, 0.590759695, + 0.595699310, 0.600616455, 0.605511069, 0.610382795, + 0.615231574, 0.620057225, 0.624859512, 0.629638255, + 0.634393275, 0.639124453, 0.643831551, 0.648514390, + 0.653172851, 0.657806695, 0.662415802, 0.666999936, + 0.671558976, 0.676092684, 0.680601001, 0.685083687, + 0.689540565, 0.693971455, 0.698376238, 0.702754736, + 0.707106769, 0.711432219, 0.715730846, 0.720002532, + 0.724247098, 0.728464365, 0.732654274, 0.736816585, + 0.740951121, 0.745057762, 0.749136388, 0.753186822, + 0.757208824, 0.761202395, 0.765167236, 0.769103348, + 0.773010433, 0.776888490, 0.780737221, 0.784556568, + 0.788346410, 0.792106569, 0.795836926, 0.799537241, + 0.803207517, 0.806847572, 0.810457170, 0.814036310, + 0.817584813, 0.821102500, 0.824589312, 0.828045070, + 0.831469595, 0.834862888, 0.838224709, 0.841554999, + 0.844853580, 0.848120332, 0.851355195, 0.854557991, + 0.857728601, 0.860866964, 0.863972843, 0.867046237, + 0.870086968, 0.873094976, 0.876070082, 0.879012227, + 0.881921291, 0.884797096, 0.887639642, 0.890448749, + 0.893224299, 0.895966232, 0.898674488, 0.901348829, + 0.903989315, 0.906595707, 0.909168005, 0.911706030, + 0.914209783, 0.916679084, 0.919113874, 0.921514034, + 0.923879504, 0.926210225, 0.928506076, 0.930766940, + 0.932992816, 0.935183525, 0.937339008, 0.939459205, + 0.941544056, 0.943593442, 0.945607305, 0.947585583, + 0.949528158, 0.951435030, 0.953306019, 0.955141187, + 0.956940353, 0.958703458, 0.960430503, 0.962121427, + 0.963776052, 0.965394437, 0.966976464, 0.968522072, + 0.970031261, 0.971503913, 0.972939968, 0.974339366, + 0.975702107, 0.977028131, 0.978317380, 0.979569793, + 0.980785251, 0.981963873, 0.983105481, 0.984210074, + 0.985277653, 0.986308098, 0.987301409, 0.988257587, + 0.989176512, 0.990058184, 0.990902662, 0.991709769, + 0.992479563, 0.993211925, 0.993906975, 0.994564593, + 0.995184720, 0.995767415, 0.996312618, 0.996820271, + 0.997290432, 0.997723043, 0.998118103, 0.998475552, + 0.998795450, 0.999077737, 0.999322355, 0.999529421, + 0.999698818, 0.999830604, 0.999924719, 0.999981165 +}; +#pragma warning( default : 4305 ) + diff --git a/monitord/.svn/text-base/doxygen.config.svn-base b/monitord/.svn/text-base/doxygen.config.svn-base new file mode 100644 index 0000000..5f3aad1 --- /dev/null +++ b/monitord/.svn/text-base/doxygen.config.svn-base @@ -0,0 +1,1417 @@ +# Doxyfile 1.5.6 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = monitord + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 2.0svn + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = ../doku + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, +# and Ukrainian. + +OUTPUT_LANGUAGE = German + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hiererachy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is enabled by default, which results in a transparent +# background. Warning: Depending on the platform used, enabling this option +# may lead to badly anti-aliased labels on the edges of a graph (i.e. they +# become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/monitord/.svn/text-base/lua.hpp.svn-base b/monitord/.svn/text-base/lua.hpp.svn-base new file mode 100644 index 0000000..3998bd1 --- /dev/null +++ b/monitord/.svn/text-base/lua.hpp.svn-base @@ -0,0 +1,21 @@ +#ifndef LUA_HPP_ +#define LUA_HPP_ + +#include "config.h" + +#ifdef HAVE_LUA_H + #ifdef HAVE_LUALIB_H + // Alles f�r LUA scheint vorhanden zu sein + #define LUA + #endif +#endif + +#ifdef LUA +extern "C" { +#include "lua.h" +#include "lauxlib.h" +#include "lualib.h" +} +#endif + +#endif /*LUA_HPP_*/ diff --git a/monitord/.svn/text-base/memlock.cpp.svn-base b/monitord/.svn/text-base/memlock.cpp.svn-base new file mode 100644 index 0000000..1b1b6d0 --- /dev/null +++ b/monitord/.svn/text-base/memlock.cpp.svn-base @@ -0,0 +1,81 @@ +#include + +#include "memlock.h" + +#ifndef _WIN32 +//#include +#include +#include +#else +#include +#include +#endif + +int memLockCreate( int key, MEMLOCK *s) +{ +#ifdef _WIN32 + char semname[30]; + sprintf( semname, "sem%08x", key); + *s = CreateSemaphore( NULL, 1, 1, semname); + return (*s != NULL)? 0 : -1; +#else + *s = semget( key, 1, IPC_CREAT|0600); + if (*s > 0) memUnlock( *s); + return (*s >= 0)? 0 : -1; +#endif +} + +int memLockOpen( int key, MEMLOCK *s) +{ +#ifdef _WIN32 + char semname[30]; + sprintf( semname, "sem%08x", key); + *s = OpenSemaphore( SEMAPHORE_ALL_ACCESS, FALSE, semname); + return (*s != NULL)? 0 : -1; +#else + *s = semget( key, 1, 0); + return (*s >= 0)? 0 : -1; +#endif +} + +void memLockDestroy( MEMLOCK s) +{ +#ifdef _WIN32 + CloseHandle( s); +#else + semctl( s, 0, IPC_RMID); +#endif +} + +int memLock( MEMLOCK s) +{ +#ifdef _WIN32 + return (WAIT_FAILED == WaitForSingleObject( s, INFINITE)); +#else + struct sembuf sop; + + sop.sem_num = 0; + sop.sem_op = -1; + sop.sem_flg = 0; + + return semop( s, &sop, 1); +#endif +} + +int memUnlock( MEMLOCK s) +{ +#ifdef _WIN32 + return !ReleaseSemaphore ( s, 1, NULL); +#else + struct sembuf sop; + + if (semctl( s, 0, GETVAL) > 0) + return -1 ; /* already unlocked */ + + sop.sem_num = 0; + sop.sem_op = 1; + sop.sem_flg = 0; + + return semop( s, &sop, 1); +#endif +} diff --git a/monitord/.svn/text-base/memlock.h.svn-base b/monitord/.svn/text-base/memlock.h.svn-base new file mode 100644 index 0000000..77cfe0e --- /dev/null +++ b/monitord/.svn/text-base/memlock.h.svn-base @@ -0,0 +1,64 @@ +#ifndef MEMLOCK_H_ +#define MEMLOCK_H_ + +#ifdef _WIN32 +#include +#include +typedef HANDLE MEMLOCK; +#else +//#include +typedef int MEMLOCK; +#endif + +/* create a new semaphore + * Input Parameter: + * key_t : system unique key of the semaphore + * Output Parameter: + * s : the handle of the semaphore + * Return value: + * 0 : OK + * -1 : error + */ +int memLockCreate( int key, MEMLOCK *s); + + +/* open an existing semaphore + * Input Parameter: + * key_t : system unique key of the semaphore + * Output Parameter: + * s : the handle of the semaphore + * Return value: + * 0 : OK + * -1 : error + */ +int memLockOpen( int key, MEMLOCK *s); + + +/* destroy a semaphore + * Input Parameter: + * s : the semaphore handle + */ +void memLockDestroy( MEMLOCK s); + + +/* request a lock + * Input Parameter: + * s : the semaphore handle + * Return value: + * 0 : OK + * else : error + */ +int memLock( MEMLOCK s); + + +/* release a lock + * Input Parameter: + * s : the semaphore handle + * Return value: + * 0 : OK + * else : error + */ +int memUnlock( MEMLOCK s); + + +#endif /*MEMLOCK_H_*/ diff --git a/monitord/.svn/text-base/regexp.cpp.svn-base b/monitord/.svn/text-base/regexp.cpp.svn-base new file mode 100644 index 0000000..d90adb4 --- /dev/null +++ b/monitord/.svn/text-base/regexp.cpp.svn-base @@ -0,0 +1,911 @@ +//////////////////////////////////////////////////////////////////////////////// +// RegExp.cpp +//////////////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "RegExp.h" + + +// definition number opnd? meaning +#define END 0 // no End of program. +#define BOL 1 // no Match beginning of line. +#define EOL 2 // no Match end of line. +#define ANY 3 // no Match any character. +#define ANYOF 4 // str Match any of these. +#define ANYBUT 5 // str Match any but one of these. +#define BRANCH 6 // node Match this, or the next..\&. +#define BACK 7 // no "next" ptr points backward. +#define EXACTLY 8 // str Match this string. +#define NOTHING 9 // no Match empty string. +#define STAR 10 // node Match this 0 or more times. +#define PLUS 11 // node Match this 1 or more times. +#define OPEN 20 // no Sub-RE starts here. + // OPEN+1 is number 1, etc. +#define CLOSE 30 // no Analogous to OPEN. + +// Utility definitions. + +#define FAIL(m) { regerror(m); return(NULL); } +#define ISREPN(c) ((c) == _T('*') || (c) == _T('+') || (c) == _T('?')) +#define META "^$.[()|?+*\\" + +// Flags to be passed up and down. + +#define HASWIDTH 01 // Known never to match null string. +#define SIMPLE 02 // Simple enough to be STAR/PLUS operand. +#define SPSTART 04 // Starts with * or +. +#define WORST 0 // Worst case. + + +CRegExp::CRegExp() +{ + bCompiled = FALSE; + program = NULL; + sFoundText = NULL; + + for( int i = 0; i < NSUBEXP; i++ ) + { + startp[i] = NULL; + endp[i] = NULL; + } +} + +CRegExp::~CRegExp() +{ + delete program; + delete sFoundText; +} + + +CRegExp* CRegExp::RegComp(const TCHAR *exp) +{ + TCHAR *scan; + int flags; + + if (exp == NULL) + return NULL; + + bCompiled = TRUE; + + // First pass: determine size, legality. + bEmitCode = FALSE; + regparse = (TCHAR *)exp; + regnpar = 1; + regsize = 0L; + regdummy[0] = NOTHING; + regdummy[1] = regdummy[2] = 0; + regcode = regdummy; + if (reg(0, &flags) == NULL) + return(NULL); + + // Allocate space. + delete program; + program = new TCHAR[regsize]; + memset( program, 0, regsize * sizeof(TCHAR) ); + + if (program == NULL) + return NULL; + + // Second pass: emit code. + bEmitCode = TRUE; + regparse = (TCHAR *)exp; + regnpar = 1; + regcode = program; + if (reg(0, &flags) == NULL) + return NULL; + + // Dig out information for optimizations. + regstart = _T('\0'); // Worst-case defaults. + reganch = 0; + regmust = NULL; + regmlen = 0; + scan = program; // First BRANCH. + if (OP(regnext(scan)) == END) + { + // Only one top-level choice. + scan = OPERAND(scan); + + // Starting-point info. + if (OP(scan) == EXACTLY) + regstart = *OPERAND(scan); + else if (OP(scan) == BOL) + reganch = 1; + + // If there's something expensive in the r.e., find the + // longest literal string that must appear and make it the + // regmust. Resolve ties in favor of later strings, since + // the regstart check works with the beginning of the r.e. + // and avoiding duplication strengthens checking. Not a + // strong reason, but sufficient in the absence of others. + + if (flags&SPSTART) + { + char *longest = NULL; + size_t len = 0; + + for (; scan != NULL; scan = regnext(scan)) + if (OP(scan) == EXACTLY && _tcslen(OPERAND(scan)) >= len) + { + longest = OPERAND(scan); + len = _tcslen(OPERAND(scan)); + } + regmust = longest; + regmlen = (int)len; + } + } + + return this; +} + +// reg - regular expression, i.e. main body or parenthesized thing +// +// Caller must absorb opening parenthesis. +// +// Combining parenthesis handling with the base level of regular expression +// is a trifle forced, but the need to tie the tails of the branches to what +// follows makes it hard to avoid. + + + +TCHAR *CRegExp::reg(int paren, int *flagp) +{ + char *ret; + char *br; + char *ender; + int parno; + int flags; + + *flagp = HASWIDTH; // Tentatively. + + if (paren) + { + // Make an OPEN node. + if (regnpar >= NSUBEXP) + { + TRACE1("Too many (). NSUBEXP is set to %d\n", NSUBEXP ); + return NULL; + } + parno = regnpar; + regnpar++; + ret = regnode(OPEN+parno); + } + + // Pick up the branches, linking them together. + br = regbranch(&flags); + if (br == NULL) + return(NULL); + if (paren) + regtail(ret, br); // OPEN -> first. + else + ret = br; + *flagp &= ~(~flags&HASWIDTH); // Clear bit if bit 0. + *flagp |= flags&SPSTART; + while (*regparse == _T('|')) { + regparse++; + br = regbranch(&flags); + if (br == NULL) + return(NULL); + regtail(ret, br); // BRANCH -> BRANCH. + *flagp &= ~(~flags&HASWIDTH); + *flagp |= flags&SPSTART; + } + + // Make a closing node, and hook it on the end. + ender = regnode((paren) ? CLOSE+parno : END); + regtail(ret, ender); + + // Hook the tails of the branches to the closing node. + for (br = ret; br != NULL; br = regnext(br)) + regoptail(br, ender); + + // Check for proper termination. + if (paren && *regparse++ != _T(')')) + { + TRACE0("unterminated ()\n"); + return NULL; + } + else if (!paren && *regparse != _T('\0')) + { + if (*regparse == _T(')')) + { + TRACE0("unmatched ()\n"); + return NULL; + } + else + { + TRACE0("internal error: junk on end\n"); + return NULL; + } + // NOTREACHED + } + + return(ret); +} + + + + +// +// regbranch - one alternative of an | operator +// +// Implements the concatenation operator. + +TCHAR *CRegExp::regbranch(int *flagp) +{ + TCHAR *ret; + TCHAR *chain; + TCHAR *latest; + int flags; + int c; + + *flagp = WORST; // Tentatively. + + ret = regnode(BRANCH); + chain = NULL; + while ((c = *regparse) != _T('\0') && c != _T('|') && c != _T(')')) { + latest = regpiece(&flags); + if (latest == NULL) + return(NULL); + *flagp |= flags&HASWIDTH; + if (chain == NULL) // First piece. + *flagp |= flags&SPSTART; + else + regtail(chain, latest); + chain = latest; + } + if (chain == NULL) // Loop ran zero times. + (void) regnode(NOTHING); + + return(ret); +} + +// +// regpiece - something followed by possible [*+?] +// +// Note that the branching code sequences used for ? and the general cases +// of * and + are somewhat optimized: they use the same NOTHING node as +// both the endmarker for their branch list and the body of the last branch. +// It might seem that this node could be dispensed with entirely, but the +// endmarker role is not redundant. + +TCHAR *CRegExp::regpiece(int *flagp) +{ + TCHAR *ret; + TCHAR op; + TCHAR *next; + int flags; + + ret = regatom(&flags); + if (ret == NULL) + return(NULL); + + op = *regparse; + if (!ISREPN(op)) { + *flagp = flags; + return(ret); + } + + if (!(flags&HASWIDTH) && op != _T('?')) + { + TRACE0("*+ operand could be empty\n"); + return NULL; + } + + switch (op) { + case _T('*'): *flagp = WORST|SPSTART; break; + case _T('+'): *flagp = WORST|SPSTART|HASWIDTH; break; + case _T('?'): *flagp = WORST; break; + } + + if (op == _T('*') && (flags&SIMPLE)) + reginsert(STAR, ret); + else if (op == _T('*')) { + // Emit x* as (x&|), where & means "self". + reginsert(BRANCH, ret); // Either x + regoptail(ret, regnode(BACK)); // and loop + regoptail(ret, ret); // back + regtail(ret, regnode(BRANCH)); // or + regtail(ret, regnode(NOTHING)); // null. + } else if (op == _T('+') && (flags&SIMPLE)) + reginsert(PLUS, ret); + else if (op == _T('+')) { + // Emit x+ as x(&|), where & means "self". + next = regnode(BRANCH); // Either + regtail(ret, next); + regtail(regnode(BACK), ret); // loop back + regtail(next, regnode(BRANCH)); // or + regtail(ret, regnode(NOTHING)); // null. + } else if (op == _T('?')) { + // Emit x? as (x|) + reginsert(BRANCH, ret); // Either x + regtail(ret, regnode(BRANCH)); // or + next = regnode(NOTHING); // null. + regtail(ret, next); + regoptail(ret, next); + } + regparse++; + if (ISREPN(*regparse)) + { + TRACE0("nested *?+\n"); + return NULL; + } + + return(ret); +} + +// +// regatom - the lowest level +// +// Optimization: gobbles an entire sequence of ordinary characters so that +// it can turn them into a single node, which is smaller to store and +// faster to run. Backslashed characters are exceptions, each becoming a +// separate node; the code is simpler that way and it's not worth fixing. + +TCHAR *CRegExp::regatom(int *flagp) +{ + TCHAR *ret; + int flags; + + *flagp = WORST; // Tentatively. + + switch (*regparse++) { + case _T('^'): + ret = regnode(BOL); + break; + case _T('$'): + ret = regnode(EOL); + break; + case _T('.'): + ret = regnode(ANY); + *flagp |= HASWIDTH|SIMPLE; + break; + case _T('['): { + int range; + int rangeend; + int c; + + if (*regparse == _T('^')) { // Complement of range. + ret = regnode(ANYBUT); + regparse++; + } else + ret = regnode(ANYOF); + if ((c = *regparse) == _T(']') || c == _T('-')) { + regc(c); + regparse++; + } + while ((c = *regparse++) != _T('\0') && c != _T(']')) { + if (c != _T('-')) + regc(c); + else if ((c = *regparse) == _T(']') || c == _T('\0')) + regc(_T('-')); + else + { + range = (unsigned) (TCHAR)*(regparse-2); + rangeend = (unsigned) (TCHAR)c; + if (range > rangeend) + { + TRACE0("invalid [] range\n"); + return NULL; + } + for (range++; range <= rangeend; range++) + regc(range); + regparse++; + } + } + regc(_T('\0')); + if (c != _T(']')) + { + TRACE0("unmatched []\n"); + return NULL; + } + *flagp |= HASWIDTH|SIMPLE; + break; + } + case _T('('): + ret = reg(1, &flags); + if (ret == NULL) + return(NULL); + *flagp |= flags&(HASWIDTH|SPSTART); + break; + case _T('\0'): + case _T('|'): + case _T(')'): + // supposed to be caught earlier + TRACE0("internal error: \\0|) unexpected\n"); + return NULL; + break; + case _T('?'): + case _T('+'): + case _T('*'): + TRACE0("?+* follows nothing\n"); + return NULL; + break; + case _T('\\'): + if (*regparse == _T('\0')) + { + TRACE0("trailing \\\n"); + return NULL; + } + ret = regnode(EXACTLY); + regc(*regparse++); + regc(_T('\0')); + *flagp |= HASWIDTH|SIMPLE; + break; + default: { + size_t len; + TCHAR ender; + + regparse--; + len = _tcscspn(regparse, META); + if (len == 0) + { + TRACE0("internal error: strcspn 0\n"); + return NULL; + } + ender = *(regparse+len); + if (len > 1 && ISREPN(ender)) + len--; // Back off clear of ?+* operand. + *flagp |= HASWIDTH; + if (len == 1) + *flagp |= SIMPLE; + ret = regnode(EXACTLY); + for (; len > 0; len--) + regc(*regparse++); + regc(_T('\0')); + break; + } + } + + return(ret); +} + + + +// reginsert - insert an operator in front of already-emitted operand +// +// Means relocating the operand. + +void CRegExp::reginsert(TCHAR op, TCHAR *opnd) +{ + TCHAR *place; + + if (!bEmitCode) { + regsize += 3; + return; + } + + (void) memmove(opnd+3, opnd, (size_t)((regcode - opnd)*sizeof(TCHAR))); + regcode += 3; + + place = opnd; // Op node, where operand used to be. + *place++ = op; + *place++ = _T('\0'); + *place++ = _T('\0'); +} + +// +// regtail - set the next-pointer at the end of a node chain + +void CRegExp::regtail(TCHAR *p, TCHAR *val) +{ + TCHAR *scan; + TCHAR *temp; +// int offset; + + if (!bEmitCode) + return; + + // Find last node. + for (scan = p; (temp = regnext(scan)) != NULL; scan = temp) + continue; + + *((short *)(scan+1)) = (OP(scan) == BACK) ? scan - val : val - scan; +} + + +// regoptail - regtail on operand of first argument; nop if operandless + +void CRegExp::regoptail(TCHAR *p, TCHAR *val) +{ + // "Operandless" and "op != BRANCH" are synonymous in practice. + if (!bEmitCode || OP(p) != BRANCH) + return; + regtail(OPERAND(p), val); +} + + +// RegFind - match a regexp against a string +// Returns - Returns position of regexp or -1 +// if regular expression not found +// Note - The regular expression should have been +// previously compiled using RegComp +int CRegExp::RegFind(const TCHAR *str) +{ + TCHAR *string = (TCHAR *)str; // avert const poisoning + TCHAR *s; + + // Delete any previously stored found string + delete sFoundText; + sFoundText = NULL; + + // Be paranoid. + if(string == NULL) + { + TRACE0("NULL argument to regexec\n"); + return(-1); + } + + // Check validity of regex + if (!bCompiled) + { + TRACE0("No regular expression provided yet.\n"); + return(-1); + } + + // If there is a "must appear" string, look for it. + if (regmust != NULL && _tcsstr(string, regmust) == NULL) + return(-1); + + // Mark beginning of line for ^ + regbol = string; + + // Simplest case: anchored match need be tried only once. + if (reganch) + { + if( regtry(string) ) + { + // Save the found substring in case we need it + sFoundText = new TCHAR[GetFindLen()+1]; + sFoundText[GetFindLen()] = _T('\0'); + _tcsncpy(sFoundText, string, GetFindLen() ); + + return 0; + } + //String not found + return -1; + } + + // Messy cases: unanchored match. + if (regstart != _T('\0')) + { + // We know what TCHAR it must start with. + for (s = string; s != NULL; s = _tcschr(s+1, regstart)) + if (regtry(s)) + { + int nPos = s-str; + + // Save the found substring in case we need it later + sFoundText = new TCHAR[GetFindLen()+1]; + sFoundText[GetFindLen()] = _T('\0'); + _tcsncpy(sFoundText, s, GetFindLen() ); + + return nPos; + } + return -1; + } + else + { + // We don't -- general case + for (s = string; !regtry(s); s++) + if (*s == _T('\0')) + return(-1); + + int nPos = s-str; + + // Save the found substring in case we need it later + sFoundText = new TCHAR[GetFindLen()+1]; + sFoundText[GetFindLen()] = _T('\0'); + _tcsncpy(sFoundText, s, GetFindLen() ); + + return nPos; + } + // NOTREACHED +} + + +// regtry - try match at specific point + +int CRegExp::regtry(TCHAR *string) +{ + int i; + TCHAR **stp; + TCHAR **enp; + + reginput = string; + + stp = startp; + enp = endp; + for (i = NSUBEXP; i > 0; i--) + { + *stp++ = NULL; + *enp++ = NULL; + } + if (regmatch(program)) + { + startp[0] = string; + endp[0] = reginput; + return(1); + } + else + return(0); +} + +// regmatch - main matching routine +// +// Conceptually the strategy is simple: check to see whether the current +// node matches, call self recursively to see whether the rest matches, +// and then act accordingly. In practice we make some effort to avoid +// recursion, in particular by going through "ordinary" nodes (that don't +// need to know whether the rest of the match failed) by a loop instead of +// by recursion. + +int CRegExp::regmatch(TCHAR *prog) +{ + TCHAR *scan; // Current node. + TCHAR *next; // Next node. + + for (scan = prog; scan != NULL; scan = next) { + next = regnext(scan); + + switch (OP(scan)) { + case BOL: + if (reginput != regbol) + return(0); + break; + case EOL: + if (*reginput != _T('\0')) + return(0); + break; + case ANY: + if (*reginput == _T('\0')) + return(0); + reginput++; + break; + case EXACTLY: { + size_t len; + TCHAR *const opnd = OPERAND(scan); + + // Inline the first character, for speed. + if (*opnd != *reginput) + return(0); + len = _tcslen(opnd); + if (len > 1 && _tcsncmp(opnd, reginput, len) != 0) + return(0); + reginput += len; + break; + } + case ANYOF: + if (*reginput == _T('\0') || + _tcschr(OPERAND(scan), *reginput) == NULL) + return(0); + reginput++; + break; + case ANYBUT: + if (*reginput == _T('\0') || + _tcschr(OPERAND(scan), *reginput) != NULL) + return(0); + reginput++; + break; + case NOTHING: + break; + case BACK: + break; + case OPEN+1: case OPEN+2: case OPEN+3: + case OPEN+4: case OPEN+5: case OPEN+6: + case OPEN+7: case OPEN+8: case OPEN+9: { + const int no = OP(scan) - OPEN; + TCHAR *const input = reginput; + + if (regmatch(next)) { + // Don't set startp if some later + // invocation of the same parentheses + // already has. + + if (startp[no] == NULL) + startp[no] = input; + return(1); + } else + return(0); + break; + } + case CLOSE+1: case CLOSE+2: case CLOSE+3: + case CLOSE+4: case CLOSE+5: case CLOSE+6: + case CLOSE+7: case CLOSE+8: case CLOSE+9: { + const int no = OP(scan) - CLOSE; + TCHAR *const input = reginput; + + if (regmatch(next)) { + // Don't set endp if some later + // invocation of the same parentheses + // already has. + + if (endp[no] == NULL) + endp[no] = input; + return(1); + } else + return(0); + break; + } + case BRANCH: { + TCHAR *const save = reginput; + + if (OP(next) != BRANCH) // No choice. + next = OPERAND(scan); // Avoid recursion. + else { + while (OP(scan) == BRANCH) { + if (regmatch(OPERAND(scan))) + return(1); + reginput = save; + scan = regnext(scan); + } + return(0); + // NOTREACHED + } + break; + } + case STAR: + case PLUS: { + const TCHAR nextch = + (OP(next) == EXACTLY) ? *OPERAND(next) : _T('\0'); + size_t no; + TCHAR *const save = reginput; + const size_t min = (OP(scan) == STAR) ? 0 : 1; + + for (no = regrepeat(OPERAND(scan)) + 1; no > min; no--) { + reginput = save + no - 1; + // If it could work, try it. + if (nextch == _T('\0') || *reginput == nextch) + if (regmatch(next)) + return(1); + } + return(0); + break; + } + case END: + return(1); // Success! + break; + default: + TRACE0("regexp corruption\n"); + return(0); + break; + } + } + + // We get here only if there's trouble -- normally "case END" is + // the terminating point. + + TRACE0("corrupted pointers\n"); + return(0); +} + + +// regrepeat - report how many times something simple would match + +size_t CRegExp::regrepeat(TCHAR *node) +{ + size_t count; + TCHAR *scan; + TCHAR ch; + + switch (OP(node)) + { + case ANY: + return(_tcslen(reginput)); + break; + case EXACTLY: + ch = *OPERAND(node); + count = 0; + for (scan = reginput; *scan == ch; scan++) + count++; + return(count); + break; + case ANYOF: + return(_tcsspn(reginput, OPERAND(node))); + break; + case ANYBUT: + return(_tcscspn(reginput, OPERAND(node))); + break; + default: // Oh dear. Called inappropriately. + TRACE0("internal error: bad call of regrepeat\n"); + return(0); // Best compromise. + break; + } + // NOTREACHED +} + +// regnext - dig the "next" pointer out of a node + +TCHAR *CRegExp::regnext(TCHAR *p) +{ + const short &offset = *((short*)(p+1)); + + if (offset == 0) + return(NULL); + + return((OP(p) == BACK) ? p-offset : p+offset); +} + +// GetReplaceString - Converts a replace expression to a string +// Returns - Pointer to newly allocated string +// Caller is responsible for deleting it +TCHAR* CRegExp::GetReplaceString( const TCHAR* sReplaceExp ) +{ + TCHAR *src = (TCHAR *)sReplaceExp; + TCHAR *buf; + TCHAR c; + int no; + size_t len; + + if( sReplaceExp == NULL || sFoundText == NULL ) + return NULL; + + + // First compute the length of the string + int replacelen = 0; + while ((c = *src++) != _T('\0')) + { + if (c == _T('&')) + no = 0; + else if (c == _T('\\') && isdigit(*src)) + no = *src++ - _T('0'); + else + no = -1; + + if (no < 0) + { + // Ordinary character. + if (c == _T('\\') && (*src == _T('\\') || *src == _T('&'))) + c = *src++; + replacelen++; + } + else if (startp[no] != NULL && endp[no] != NULL && + endp[no] > startp[no]) + { + // Get tagged expression + len = endp[no] - startp[no]; + replacelen += len; + } + } + + // Now allocate buf + buf = new TCHAR[replacelen+1]; + if( buf == NULL ) + return NULL; + + TCHAR* sReplaceStr = buf; + + // Add null termination + buf[replacelen] = _T('\0'); + + // Now we can create the string + src = (TCHAR *)sReplaceExp; + while ((c = *src++) != _T('\0')) + { + if (c == _T('&')) + no = 0; + else if (c == _T('\\') && isdigit(*src)) + no = *src++ - _T('0'); + else + no = -1; + + if (no < 0) + { + // Ordinary character. + if (c == _T('\\') && (*src == _T('\\') || *src == _T('&'))) + c = *src++; + *buf++ = c; + } + else if (startp[no] != NULL && endp[no] != NULL && + endp[no] > startp[no]) + { + // Get tagged expression + len = endp[no] - startp[no]; + int tagpos = startp[no] - startp[0]; + + _tcsncpy(buf, sFoundText + tagpos, len); + buf += len; + } + } + + return sReplaceStr; +} diff --git a/monitord/.svn/text-base/regexp.h.svn-base b/monitord/.svn/text-base/regexp.h.svn-base new file mode 100644 index 0000000..fcb714d --- /dev/null +++ b/monitord/.svn/text-base/regexp.h.svn-base @@ -0,0 +1,123 @@ + +//////////////////////////////////////////////////////////////////////// +// RegExp.h +// +// This code has been derived from work by Henry Spencer. +// The main changes are +// 1. All char variables and functions have been changed to TCHAR +// counterparts +// 2. Added GetFindLen() & GetReplaceString() to enable search +// and replace operations. +// 3. And of course, added the C++ Wrapper +// +// The original copyright notice follows: +// +// Copyright (c) 1986, 1993, 1995 by University of Toronto. +// Written by Henry Spencer. Not derived from licensed software. +// +// Permission is granted to anyone to use this software for any +// purpose on any computer system, and to redistribute it in any way, +// subject to the following restrictions: +// +// 1. The author is not responsible for the consequences of use of +// this software, no matter how awful, even if they arise +// from defects in it. +// +// 2. The origin of this software must not be misrepresented, either +// by explicit claim or by omission. +// +// 3. Altered versions must be plainly marked as such, and must not +// be misrepresented (by explicit claim or omission) as being +// the original software. +// +// 4. This notice must not be removed or altered. +///////////////////////////////////////////////////////////////////////////// + +#define NSUBEXP 10 +#define TCHAR char + + +class CRegExp +{ +public: + CRegExp(); + ~CRegExp(); + + CRegExp *RegComp( const TCHAR *re ); + int RegFind(const TCHAR *str); + TCHAR* GetReplaceString( const TCHAR* sReplaceExp ); + int GetFindLen() + { + if( startp[0] == NULL || endp[0] == NULL ) + return 0; + + return endp[0] - startp[0]; + } + + +private: + TCHAR *regnext(TCHAR *node); + void reginsert(TCHAR op, TCHAR *opnd); + + int regtry(TCHAR *string); + int regmatch(TCHAR *prog); + size_t regrepeat(TCHAR *node); + TCHAR *reg(int paren, int *flagp); + TCHAR *regbranch(int *flagp); + void regtail(TCHAR *p, TCHAR *val); + void regoptail(TCHAR *p, TCHAR *val); + TCHAR *regpiece(int *flagp); + TCHAR *regatom(int *flagp); + + // Inline functions +private: + TCHAR OP(TCHAR *p) {return *p;}; + TCHAR *OPERAND( TCHAR *p) {return (TCHAR*)((short *)(p+1)+1); }; + + // regc - emit (if appropriate) a byte of code + void regc(TCHAR b) + { + if (bEmitCode) + *regcode++ = b; + else + regsize++; + }; + + // regnode - emit a node + TCHAR * regnode(TCHAR op) + { + if (!bEmitCode) { + regsize += 3; + return regcode; + } + + *regcode++ = op; + *regcode++ = _T('\0'); /* Null next pointer. */ + *regcode++ = _T('\0'); + + return regcode-3; + }; + + +private: + BOOL bEmitCode; + BOOL bCompiled; + TCHAR *sFoundText; + + TCHAR *startp[NSUBEXP]; + TCHAR *endp[NSUBEXP]; + TCHAR regstart; // Internal use only. + TCHAR reganch; // Internal use only. + TCHAR *regmust; // Internal use only. + int regmlen; // Internal use only. + TCHAR *program; // Unwarranted chumminess with compiler. + + TCHAR *regparse; // Input-scan pointer. + int regnpar; // () count. + TCHAR *regcode; // Code-emit pointer; ®dummy = don't. + TCHAR regdummy[3]; // NOTHING, 0 next ptr + long regsize; // Code size. + + TCHAR *reginput; // String-input pointer. + TCHAR *regbol; // Beginning of input, for ^ check. +}; \ No newline at end of file diff --git a/monitord/.svn/text-base/xmltools.cpp.svn-base b/monitord/.svn/text-base/xmltools.cpp.svn-base new file mode 100644 index 0000000..9b045f2 --- /dev/null +++ b/monitord/.svn/text-base/xmltools.cpp.svn-base @@ -0,0 +1,45 @@ +#include "xmltools.h" + +#include "convert.h" +#include + +using namespace std ; + +std::string getNodeText(XMLNode parent,std::string childName,std::string defaultValue, bool trim) +{ + XMLNode xNode ; + std::string returnValue ; + if (!((xNode=parent.getChildNode(childName.c_str())).isEmpty())) + { + returnValue=xNode.getText() ; + } else { + returnValue=defaultValue ; + } + + return returnValue; +} + +bool getNodeBool(XMLNode parent,std::string childName,bool defaultValue) +{ + int iDefault ; + iDefault = (defaultValue==true ? 1:0) ; + int temp=getNodeInt(parent,childName,iDefault) ; + return (temp!=0); +} + + +int getNodeInt(XMLNode parent,std::string childName,int defaultValue) +{ + int returnValue ; + std::string nodeText=getNodeText(parent,childName,"") ; + + try + { + returnValue=convertToInt(nodeText) ; + } + catch (BadConversion e) + { + returnValue=defaultValue ; + } + return returnValue; +} diff --git a/monitord/.svn/text-base/xmltools.h.svn-base b/monitord/.svn/text-base/xmltools.h.svn-base new file mode 100644 index 0000000..1964f93 --- /dev/null +++ b/monitord/.svn/text-base/xmltools.h.svn-base @@ -0,0 +1,12 @@ +#ifndef XMLTOOLS_H_ +#define XMLTOOLS_H_ + +#include "../xmlParser/xmlParser.h" +#include + +int getNodeInt(XMLNode parent,std::string childName,int defaultValue) ; +std::string getNodeText(XMLNode parent,std::string childName,std::string defaultValue, bool trim=true) ; +bool getNodeBool(XMLNode parent,std::string childName,bool defaultValue); + + +#endif /*XMLTOOLS_H_*/ diff --git a/monitord/Monitor.cpp b/monitord/Monitor.cpp new file mode 100644 index 0000000..7b2c819 --- /dev/null +++ b/monitord/Monitor.cpp @@ -0,0 +1,244 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Monitor.h" +#include "SocketServer.h" +#include "MonitorConfiguration.h" +#include "SocketThreadMonitord.h" + +#include "MonitorLogging.h" + +#ifdef PLUGINS +#include "plugins/mplugin.h" +#include "PluginThread.h" +#endif +#ifdef WIN32 +#include +#define usleep Sleep +#endif + +#include "lua.hpp" + +using namespace std ; + +void Monitor::CreateSocketServer(MonitorConfiguration *config) +{ + static SocketServer socketServer(config,0) ; + + static SocketServer fms32ProServer(config,1000) ; + fms32ProServer.m_ServerModus = SocketThread::fms32pro ; + + static SocketServer crusaderServer(config,2000) ; + crusaderServer.m_ServerModus = SocketThread::crusader ; + + socketServer.Start() ; + fms32ProServer.Start() ; + crusaderServer.Start() ; +} + + +void Monitor::Initialize (int argc, char *argv[]) +{ + m_bWantStop=false; + if ( memLockCreate( 12345, & s) < 0) { + ThrowMonitorException("memLockCreate failed") ; + } + + m_MonitorConfig.ParseCommandline(argc,argv) ; + m_MonitorConfig.ReadConfiguration(m_MonitorConfig.m_ConfigFile) ; + m_MonitorConfig.ParseCommandline(argc,argv) ; +} + +void initFileLogging(MonitorConfiguration *config) +{ + + if (!(config->m_sLogfile=="screen")) + { + FILE* pFile = fopen(config->m_sLogfile.c_str(), "a"); + Output2FILE::Stream() = pFile; + FILE_LOG(logINFO) << "monitord restarted - logging with loglevel " << config->m_sLoglevel; + } else { + FILE_LOG(logINFO) << "Logging with loglevel " << config->m_sLoglevel; + } + + FILELog::ReportingLevel() = FILELog::FromString(config->m_sLoglevel); +} + +int main(int argc, char** argv) +{ + Monitor m_monitor; + try { + m_monitor.Initialize (argc, argv); + initFileLogging(&m_monitor.m_MonitorConfig) ; + m_monitor.m_SignalStopped = new MonitorBlockingSignal(); + GlobalDispatcher = new MonitorResultsDispatcher(); + #ifdef WIN32 + /** + * Soll als Dienst ausgef�hrt werden ? + */ + + try + { + if (m_monitor.m_MonitorConfig.m_service_uninstall == true) { + FILE_LOG(logINFO) << PACKAGE_NAME << " wird als Dienst entfernt."; + /* uninstall service from service control daemon */ + MonitorService *m_MonitorService = new MonitorService(&m_monitor); + m_MonitorService->UnInstallService(); + delete m_MonitorService; + } else if (m_monitor.m_MonitorConfig.m_service_install == true) { + FILE_LOG(logINFO) << PACKAGE_NAME << " wird als Dienst eingerichtet."; + /* install service in service control daemon */ + MonitorService *m_MonitorService = new MonitorService(&m_monitor); + m_MonitorService->InstallService(); + delete m_MonitorService ; + } else { + if (m_monitor.m_MonitorConfig.m_service_run == true) { + FILE_LOG(logINFO) << PACKAGE_NAME << " startet als Dienst."; + /* running monitor as windows service application */ + MonitorService *m_MonitorService = new MonitorService(&m_monitor); + m_MonitorService->Run (); + delete m_MonitorService ; + } else { + #endif + /* running monitor as command line application */ + FILE_LOG(logINFO) << PACKAGE_STRING << " READY" ; + cout << PACKAGE_STRING << " running...\r\n"; + if (!(m_monitor.m_MonitorConfig.m_sLogfile == "screen")) { + cout << "Logging in Logfiles, keine weiteren Ausgaben hier."; + } + m_monitor.MainLoop (); + #ifdef WIN32 + } + } + } catch (MonitorServiceException(err)) + { + // FIXME: Dienste koennen nicht auf die Console schreiben, da siehe + // unsichtbar im Hintergrund laufen + FILE_LOG(logERROR) << err.what() ; + } + #endif + + } catch (MonitorException(err)) + { + FILE_LOG(logERROR) << err.what() ; + } +} + + +void Monitor::MainLoop() +{ + // Soundkarte initialisieren + InitSndCard() ; + + /********************************************************/ + + + static SocketServer socketServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,0) ; + socketServer.Start() ; + FILE_LOG(logINFO) << "monitord socketserver started" ; + + + static SocketServer fms32ProServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,1000) ; + fms32ProServer.m_ServerModus=SocketThread::fms32pro ; + fms32ProServer.Start() ; + FILE_LOG(logINFO) << "fms32pro socketserver started" ; + + static SocketServer crusaderServer(&m_MonitorConfig,m_MonitorConfig.m_socketFilterFileName ,2000) ; + crusaderServer.m_ServerModus=SocketThread::crusader ; + crusaderServer.Start() ; + FILE_LOG(logINFO) << "crusader socketserver started" ; + + + /*******************************************************/ + + #ifdef PLUGINS + //GetPluginsManager().loadPlugin("plugins/.libs/libmplugin_mysql-0.dll",NULL); + GetPluginsManager().loadScriptFilter(m_MonitorConfig.m_pluginFilterFileName) ; + GetPluginsManager().loadPluginsFromConfigNode(&m_MonitorConfig.m_configDataPlugins); + FILE_LOG(logDEBUG) << "PluginManager started" ; + #endif + /*********************************************************/ + + while (!m_bWantStop) + { + /** + * Wer sich fragt, wo eigentlich denn die Arbeit gemacht wird: + * Die drei SocketServer sind eigenstaendige Threads. Die bedienen + * die TCP/IP Verbindungen und laufen unabhaegig. + * + * Die eigentliche (Ton) Auswertung erfolgt in jeweils einem Thread + * pro Soundkarte. Diese Threads werden im InitSndCard gestartet. + * + * Dann gibt es noch den GlobalDispatcher. Er ist auch ein eigenstaendiger + * Thread. Er wird von dem Auswerten mit ResultSets versorgt. Die Auswerter + * haben damit Ihren Teil erledigt. + * Der Dispatcher verteilt dann die Results an alle Sockets und Plugins (ohne die + * Auswerter zu blockieren) + * + */ + + usleep(100); + // Wie man sieht: hier gibt es im Moment nichts zu tun :- + } + + FILE_LOG(logINFO) << PACKAGE_NAME << " shutting down..." ; + StopSndCard() ; + + FILE_LOG(logINFO) << "stopping socketserver monitord"; + socketServer.m_bWantStop=true ; + FILE_LOG(logINFO) << "stopping socketserver FMS32"; + fms32ProServer.m_bWantStop=true ; + FILE_LOG(logINFO) << "stopping socketserver Crusader"; + crusaderServer.m_bWantStop=true ; + + usleep(1000) ; + m_SignalStopped->SetSignal() ; + usleep(500) ; + FILE_LOG(logINFO) << "all done. " << PACKAGE_NAME << " exiting"; +} + +void Monitor::InitSndCard() +{ + unsigned int cardnum; + for (cardnum=0;cardnum<4;cardnum++) + { + if (m_MonitorConfig.m_sndConfig[cardnum].iAktiv==1) + { + m_sndIn[cardnum] = new CSndPipe(); + FILE_LOG(logINFO) << "starting soundcard #" << cardnum ; + m_sndIn[cardnum]->initDecoderModules(cardnum,&m_MonitorConfig) ; + m_sndIn[cardnum]->m_SoundIn.setDevice(m_MonitorConfig.m_sndConfig[cardnum].sDevice, 22050) ; + + #ifdef PLUGINS + m_sndIn[cardnum]->loadPlugins(&m_MonitorConfig, m_MonitorConfig.m_sndConfig[cardnum].configChannel[0],m_MonitorConfig.m_sndConfig[cardnum].configChannel[1]) ; + #endif + m_sndIn[cardnum]->m_SoundIn.Start() ; + FILE_LOG(logINFO) << "Soundcard #" << cardnum << " started - complete" ; + } + } +} + + +void Monitor::StopSndCard() +{ + unsigned int cardnum; + for (cardnum=0;cardnum<4;cardnum++) + { + if (m_MonitorConfig.m_sndConfig[cardnum].iAktiv==1) + { + FILE_LOG(logINFO) << "stopping soundcard# " << cardnum ; + m_sndIn[cardnum]->m_SoundIn.Stop() ; + FILE_LOG(logINFO) << "soundcard #" << cardnum<< " halted." ; + delete m_sndIn[cardnum]; + } + } +} diff --git a/monitord/Monitor.h b/monitord/Monitor.h new file mode 100644 index 0000000..8eb0ced --- /dev/null +++ b/monitord/Monitor.h @@ -0,0 +1,34 @@ +#ifndef MONITORD_MONITOR_H +#define MONITORD_MONITOR_H + +#include +#include "memlock.h" +#include "MonitorConfiguration.h" +#include "SndPipe.h" +#include "convert.h" +#include "MonitorExceptions.h" +#include "MonitorSignals.h" +#include "config.h" + +/** + * @brief Repraesentiert die Anwendung (MainApp) + * + * + */ + +class Monitor { +public: + void Initialize(int argc, char* argv[]); + void MainLoop(); + MonitorConfiguration m_MonitorConfig; + bool m_bWantStop; + CSndPipe *m_sndIn[4]; + MonitorBlockingSignal *m_SignalStopped ; +private: + void CreateSocketServer(MonitorConfiguration*); + void InitSndCard(); + void StopSndCard(); + MEMLOCK s; +}; + +#endif /* MONITORD_MONITOR_H */ diff --git a/monitord/MonitorAudio.cpp b/monitord/MonitorAudio.cpp new file mode 100644 index 0000000..e4efa03 --- /dev/null +++ b/monitord/MonitorAudio.cpp @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include "math.h" +#include + +using namespace std ; + +#include "MonitorAudio.h" +#include "MonitorLogging.h" + +CAudioBuffer::CAudioBuffer() { + CAudioBuffer(16384) ; +} +CAudioBuffer::CAudioBuffer(tFramecount len) { + SampleLen = len; + Samples = 0; + /* Laenge pro Kanal */ + ByteLen = SampleLen * sizeof(float); + + Left = (float*) malloc(ByteLen); + Right = (float*) malloc(ByteLen); + + Ptrs = (float**) malloc(sizeof(float*) * 2); + Ptrs[0] = Left; + Ptrs[1] = Right; + + for (unsigned int i=0; i< len; i++) { + Left[i] = sin(((float) i)*3.14159265/180.0 ) ; + Right[i] = sin(((float) i)*3.14159265/180.0 ) ; + } +} + +CAudioBuffer::~CAudioBuffer() { + free(Ptrs); + free(Left); + free(Right); + Samples = 0; + ByteLen = 0; +} + + +/*****************************************************************************/ + +MonitorAudio::MonitorAudio(const std::string *name, tSamplerate rate) { + if (name != NULL) { + pcm_name = *name; + } + pcm_rate = rate; + /* Audiopuffer ca. 1/3 Sekunden Laenge */ + audio_buffer = new CAudioBuffer(16384); +} + +MonitorAudio::~MonitorAudio() { + delete audio_buffer; +} + +void MonitorAudio::Stop(){} + +bool MonitorAudio::Start(void* format){return true;} + +void MonitorAudio::setDevice (const std::string name, tSamplerate rate) { + pcm_name = name; + if (rate != 0) { + pcm_rate = rate; + } +} + +void MonitorAudio::setCallback (void (* callback)(CAudioBuffer* buffer, void* Owner)) { + this->DataFromSoundIn = callback; +} + + +void MonitorAudio::setOwner (void *owner) { + this->m_pOwner = owner; +} + +// vim: sw=4 ts=4 cindent diff --git a/monitord/MonitorAudio.h b/monitord/MonitorAudio.h new file mode 100644 index 0000000..12bb0d6 --- /dev/null +++ b/monitord/MonitorAudio.h @@ -0,0 +1,78 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_AUDIO_H_ +#define MONITORD_AUDIO_H_ + +#include + +#include + +/** Samplerate in Hz */ +typedef unsigned int tSamplerate; + +/** Anzahl Frames (Samples * Kanaele) */ +typedef unsigned int tFramecount; + +/** Position in Frames (Samples * Kanaele) */ +typedef unsigned int tFrameposition; + +class CAudioBuffer +{ + public: + // int len: Länge des Buffers in Frames + CAudioBuffer(); + CAudioBuffer(tFramecount); + ~CAudioBuffer(); + + size_t ByteLen; + tFramecount SampleLen; + tFramecount Samples; + float* Left; + float* Right; + float **Ptrs; +}; + + + +/** Basisklasse f�r den Zugriff auf Soundkarten */ +class MonitorAudio : public JThread { + public: + MonitorAudio(const std::string* = NULL, const tSamplerate=0); + ~MonitorAudio(); + + virtual void Stop(); + virtual bool Start(void* format=NULL); + + void setCallback (void (* callback)(CAudioBuffer* buffer, void* Owner)); + void setDevice (const std::string name, const tSamplerate rate=0); + void setOwner (void *owner); + + protected: + // pointer to callback function + void (*DataFromSoundIn)(CAudioBuffer* buffer, void* Owner); + void* m_pOwner; + + CAudioBuffer *audio_buffer; + std::string pcm_name; + tSamplerate pcm_rate; +}; + +#endif + +// vim: sw=4 ts=4 diff --git a/monitord/MonitorConfiguration.cpp b/monitord/MonitorConfiguration.cpp new file mode 100644 index 0000000..e06780f --- /dev/null +++ b/monitord/MonitorConfiguration.cpp @@ -0,0 +1,417 @@ + +#include "MonitorConfiguration.h" +#include "convert.h" +#include +#include "MonitorLogging.h" + +#ifdef WIN32 + #include // gethostbyname, inet_ntoa +#else + #include // fuer gethostbyname + #include // fuer inet_ntoa +#endif + +// Startparameter (Kommandozeile) auslesen +#include +#include + + +using namespace std ; + +// ---------- + +MonitorConfiguration::MonitorConfiguration() +{ + ResetConfiguration() ; +} + +MonitorConfiguration::~MonitorConfiguration() +{ +} + +// ---------- + +bool MonitorConfiguration::ResetConfiguration() +{ + int i ; + + m_sMonitordName="default" ; + m_Daemonize=true ; +#ifdef WIN32 + m_service_install=false; + m_service_run=false; + m_service_uninstall=false; +#endif + m_ConfigFile="monitord.xml" ; + m_crusaderUsername="crusader" ; + + m_IPBlacklist.clear() ; + m_IPWhitelist.clear() ; + m_IPLoginlist.clear() ; + + m_Port=9333 ; + m_PortFMS32Pro=0 ; + m_PortCrusader=0 ; + m_BindIP="" ; + + m_sndConfig[0].sDevice="/dev/dsp" ; + m_sndConfig[1].sDevice="/dev/dsp1" ; + m_sndConfig[2].sDevice="/dev/dsp2" ; + m_sndConfig[3].sDevice="/dev/dsp3" ; + + for (i=0; i<4;i++) + { + m_sndConfig[i].iAktiv=0 ; + m_sndConfig[i].iChannel=2 ; + m_sndConfig[i].iFMS[0]=0 ; + m_sndConfig[i].iFMS[1]=0 ; + m_sndConfig[i].iZVEI[0]=0 ; + m_sndConfig[i].iZVEI[1]=0 ; + m_sndConfig[i].iPOC512[0]=0 ; + m_sndConfig[i].iPOC512[1]=0 ; + m_sndConfig[i].iPOC1200[0]=0 ; + m_sndConfig[i].iPOC1200[1]=0 ; + + strcpy(m_sndConfig[i].sChannelName0,"default") ; + strcpy(m_sndConfig[i].sChannelName1,"default") ; + } + + return true ; +} + +std::string MonitorConfiguration::ReadChannel(XMLNode channelNode, int sndCard, int channelNum) +{ + std::string name; + int nModules=channelNode.nChildNode("module"); + m_sndConfig[sndCard].iFMS[channelNum]= 0 ; + m_sndConfig[sndCard].iZVEI[channelNum]= 0 ; + m_sndConfig[sndCard].iPOC512[channelNum]= 0 ; + m_sndConfig[sndCard].iPOC1200[channelNum]= 0 ; + name = getNodeText(channelNode,"name","default") ; + + for (int module=0; moduleLoginname=user ; + accountData->Password=pass ; + + m_MasterLogins.push_back(*accountData) ; + } + } + } + + // Loginnamen lesen + int nIP=authNode.nChildNode("ip"); + + for (int num=0; numh_addr; + m_BindIP=inet_ntoa(* address); + + } else { + m_BindIP="" ; + } + } +} + +bool MonitorConfiguration::ReadConfiguration(std::string filename) +{ + XMLNode xNode; + XMLNode config=XMLNode::openFileHelper(filename.c_str(),"monitordconfig"); + + // Monitord Bezeichnung + m_sMonitordName = getNodeText(config,"name","default") ; + m_sLogfile = getNodeText(config,"logfile","screen") ; + m_sLoglevel = getNodeText(config,"loglevel","INFO") ; + + + m_socketFilterFileName=getNodeText(config,"SocketFilterScript","") ; + m_pluginFilterFileName=getNodeText(config,"PluginFilterScript","") ; + XMLNode tcpNode = config.getChildNode("tcpsocket",0) ; + + if (!(tcpNode.isEmpty())) + { + ReadTCPConfiguration(tcpNode) ; + } + + + // Anmeldedaten + XMLNode authNode = config.getChildNode("auth",0) ; + + if (!(authNode.isEmpty())) + { + ReadAuthenticationData(authNode) ; + } + + // Soundkarten Elemente durchgehen + int nSoundkarten=config.nChildNode("soundcard"); + for (int sndCard=0;sndCard a.cpp, b.cpp, c.cpp, etc) + // See the SimpleGlob.h header file for details of the flags + + CSimpleGlob glob(SG_GLOB_NODOT|SG_GLOB_NOCHECK); + if (SG_SUCCESS != glob.Add(args.FileCount(), args.Files())) { + return false; + } + + + // while there are arguments left to process + while (args.Next()) { + if (args.LastError() == SO_SUCCESS) { + if (strcmp (args.OptionText(), "-d") == 0){ + m_Daemonize=true ; + } else if (strcmp (args.OptionText(), "-c") == 0) { + m_ConfigFile=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev0") == 0) { + m_sndConfig[0].sDevice=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev1") == 0) { + m_sndConfig[1].sDevice=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev2") == 0) { + m_sndConfig[2].sDevice=args.OptionArg() ; + } else if (strcmp (args.OptionText(), "--dev3") == 0) { + m_sndConfig[3].sDevice=args.OptionArg() ; +#ifdef WIN32 + } else if (strcmp (args.OptionText(), "--install") == 0) { + m_service_install = true; + } else if (strcmp (args.OptionText(), "--service") == 0) { + m_service_run = true; + } else if (strcmp (args.OptionText(), "--uninstall") == 0) { + m_service_uninstall = true; +#endif + } + } + else { + return false; + } + } + + return true; +} + +bool MonitorConfiguration::IsValidLogin(std::string loginname, std::string password, std::string host) +{ + bool skipBlackList=false ; + std::vector::iterator i ; + + // In IP Whitelist ? + for (i=m_IPWhitelist.begin() ; i != m_IPWhitelist.end() ; ++i) + { + if ((host==*i) || (*i=="any")) // Treffer oder Codewort "any" ? + { + return true ; + } + } + + // In IP Login erforderlich ? + for (i=m_IPLoginlist.begin() ; i != m_IPLoginlist.end() ; ++i) + { + if ((host==*i) || (*i=="any")) // Treffer oder Codewort "any" ? + { + skipBlackList=true ; + } + } + + if (!skipBlackList) + { + // In IP Blacklist ? + for (i=m_IPBlacklist.begin() ; i != m_IPBlacklist.end() ; i++) + { + if ((host==*i) || (*i=="any")) // Treffer oder Codewort "any" ? + { + return false ; + } + } + } + + // Name und Passwort pruefen + for (std::vector::iterator i=m_MasterLogins.begin() ; i != m_MasterLogins.end() ; i++) + { + if ((loginname==i->Loginname) && (password==i->Password)) + { + return true ; + } + } + return false ; +} + diff --git a/monitord/MonitorConfiguration.h b/monitord/MonitorConfiguration.h new file mode 100644 index 0000000..0b9f7eb --- /dev/null +++ b/monitord/MonitorConfiguration.h @@ -0,0 +1,97 @@ +#ifndef __MonitorConfiguration_H +#define __MonitorConfiguration_H 0 + +#ifndef WIN32 + #define TCHAR char +#endif + +#include +#include "MonitorModules.h" +#include "xmltools.h" + +enum MonitorChannel {links=0,rechts=1} ; + +struct LoginAccount +{ + std::string Loginname ; + std::string Password ; +} ; + +class SNDConfiguration +{ +public: + int iAktiv ; + std::string sDevice ; + int iChannel ; + int iFMS[2] ; + int iZVEI[2] ; + int iPOC512[2] ; + int iPOC1200[2] ; + + // Namen der Kanaele (hier geht komischerweise kein std::string mit dem gcc 4.0.3 + char sChannelName0[255] ; + char sChannelName1[255] ; + + XMLNode configSoundcard ; + XMLNode configChannel[2]; + // Parameter der Module + XMLNode configFMS[2], + configZVEI[2], + configPOC512[2], + configPOC1200[2] ; + +} ; + +class MonitorConfiguration +{ +public: + MonitorConfiguration() ; + virtual ~MonitorConfiguration() ; + + SNDConfiguration m_sndConfig[4] ; + std::string m_sMonitordName ; + std::string m_sLogfile ; + std::string m_sLoglevel ; + bool ReadConfiguration(std::string filename) ; + bool ResetConfiguration() ; + bool IsValidLogin(std::string loginname, std::string password, std::string host="") ; + + //MonitorModuleArray m_ModulesLinks[4] ; + //MonitorModuleArray m_ModulesRechts[4] ; + unsigned int m_Port ; + unsigned int m_PortFMS32Pro ; + unsigned int m_PortCrusader ; + XMLNode m_configDataPlugins ; + + std::string m_BindIP ; + bool m_Daemonize ; +#ifdef WIN32 + bool m_service_install; + bool m_service_run; + bool m_service_uninstall; +#endif + std::string m_ConfigFile ; + std::string m_crusaderUsername ; + std::string m_socketFilterFileName ; + std::string m_pluginFilterFileName ; + + bool ParseCommandline (int argc, TCHAR * argv[]) ; +/* int getNodeInt(XMLNode parent,std::string childName,int defaultValue) ; + std::string getNodeText(XMLNode parent,std::string childName,std::string defaultValue) ; +*/ + +protected: + std::string ReadChannel(XMLNode channelNode, int sndCard, int channelNum) ; + void ReadSoundCard(XMLNode sndNode, int sndCard); + void ReadTCPConfiguration(XMLNode tcpNode) ; + + void ReadAuthenticationData(XMLNode authNode) ; + void ReadMySQLConfiguration(XMLNode dbNode, int moduleNum=0); + std::vector m_MasterLogins ; + std::vector m_IPBlacklist ; + std::vector m_IPWhitelist ; + std::vector m_IPLoginlist ; + +}; + +#endif diff --git a/monitord/MonitorExceptions.h b/monitord/MonitorExceptions.h new file mode 100644 index 0000000..0ba3c2a --- /dev/null +++ b/monitord/MonitorExceptions.h @@ -0,0 +1,15 @@ +#ifndef MONITOREXCEPTIONS_H_ +#define MONITOREXCEPTIONS_H_ + +#include +#include "convert.h" + +class MonitorException : public std::runtime_error { + public: + MonitorException(const std::string& s) + : std::runtime_error(s) + { } + }; + #define ThrowMonitorException(err) throw( MonitorException(std::string(__FILE__)+ std::string(" Line ") + convertIntToString(__LINE__) + std::string(": ") + std::string(err) )) + +#endif /*MONITOREXCEPTIONS_H_*/ diff --git a/monitord/MonitorLogging.h b/monitord/MonitorLogging.h new file mode 100644 index 0000000..7d56531 --- /dev/null +++ b/monitord/MonitorLogging.h @@ -0,0 +1,180 @@ +#ifndef MONITORLOGGING_H_ +#define MONITORLOGGING_H_ + +/* + * Nice small logging class seen at: http://www.ddj.com/cpp/201804215 + */ + +#include +#include +#include +#include +#include "convert.h" + + +inline std::string NowTime(); + +enum TLogLevel {logERROR, logWARNING, logINFO, logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4}; + +template +class Log +{ +public: + Log(); + virtual ~Log(); + std::ostringstream& Get(TLogLevel level = logINFO); +public: + static TLogLevel& ReportingLevel(); + static std::string ToString(TLogLevel level); + static TLogLevel FromString(const std::string& level); +protected: + std::ostringstream os; +private: + Log(const Log&); + Log& operator =(const Log&); +}; + +template +Log::Log() +{ +} + +template +std::ostringstream& Log::Get(TLogLevel level) +{ + os << " " << NowTime(); + os << " " << ToString(level) << ": "; + os << std::string(level > logDEBUG ? level - logDEBUG : 0, '\t'); + return os; +} + +template +Log::~Log() +{ + os << std::endl; + T::Output(os.str()); +} + +template +TLogLevel& Log::ReportingLevel() +{ + static TLogLevel reportingLevel = logDEBUG4; + return reportingLevel; +} + +template +std::string Log::ToString(TLogLevel level) +{ + static const char* const buffer[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4"}; + return buffer[level]; +} + +template +TLogLevel Log::FromString(const std::string& level) +{ + if (level == "DEBUG4") + return logDEBUG4; + if (level == "DEBUG3") + return logDEBUG3; + if (level == "DEBUG2") + return logDEBUG2; + if (level == "DEBUG1") + return logDEBUG1; + if (level == "DEBUG") + return logDEBUG; + if (level == "INFO") + return logINFO; + if (level == "WARNING") + return logWARNING; + if (level == "ERROR") + return logERROR; + Log().Get(logWARNING) << "Unknown logging level '" << level << "'. Using INFO level as default."; + return logINFO; +} + +class Output2FILE +{ +public: + static FILE*& Stream(); + static void Output(const std::string& msg); +}; + +inline FILE*& Output2FILE::Stream() +{ + static FILE* pStream = stderr; + return pStream; +} + +inline void Output2FILE::Output(const std::string& msg) +{ + FILE* pStream = Stream(); + if (!pStream) + return; + fprintf(pStream, "%s", msg.c_str()); + fflush(pStream); +} + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) +# if defined (BUILDING_FILELOG_DLL) +# define FILELOG_DECLSPEC __declspec (dllexport) +# elif defined (USING_FILELOG_DLL) +# define FILELOG_DECLSPEC __declspec (dllimport) +# else +# define FILELOG_DECLSPEC +# endif // BUILDING_DBSIMPLE_DLL +#else +# define FILELOG_DECLSPEC +#endif // _WIN32 + +class FILELOG_DECLSPEC FILELog : public Log {}; +//typedef Log FILELog; + +#ifndef FILELOG_MAX_LEVEL +#define FILELOG_MAX_LEVEL logDEBUG4 +#endif + +#define FILE_LOG(level) \ + if (level > FILELOG_MAX_LEVEL) ;\ + else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ; \ + else FILELog().Get(level) << std::string(__FILE__) << "(" << convertIntToString(__LINE__) << ") " + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) + +#include + +inline std::string NowTime() +{ + const int MAX_LEN = 200; + char buffer[MAX_LEN]; + if (GetTimeFormatA(LOCALE_USER_DEFAULT, 0, 0, + "HH':'mm':'ss", buffer, MAX_LEN) == 0) + return "Error in NowTime()"; + + char result[100] = {0}; + static DWORD first = GetTickCount(); + sprintf(result, "%s.%03ld", buffer, (long)(GetTickCount() - first) % 1000); + return result; +} + +#else + +#include + +inline std::string NowTime() +{ + char buffer[11]; + time_t t; + time(&t); + tm r = {0}; + strftime(buffer, sizeof(buffer), "%X", localtime_r(&t, &r)); + struct timeval tv; + gettimeofday(&tv, 0); + char result[100] = {0}; + sprintf(result, "%s.%03ld", buffer, (long)tv.tv_usec / 1000); + return result; +} + +#endif //WIN32 + + +#endif /*MONITORLOGGING_H_*/ diff --git a/monitord/MonitorModuleFMS.cpp b/monitord/MonitorModuleFMS.cpp new file mode 100644 index 0000000..f273483 --- /dev/null +++ b/monitord/MonitorModuleFMS.cpp @@ -0,0 +1,1312 @@ +/** MonitorModuleFMS.cpp + * + * This file is part of MyMonitor / BOSAssistent / monitor 2.0 + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ + +#include "MonitorModuleFMS.h" +#include +#include +#include +#include +#include "stdio.h" +#include "convert.h" +#include "time.h" +#include "MonitorLogging.h" + +#include +using namespace std; + +#include "memlock.h" +#include "base64.h" +#include "MonitorConfiguration.h" + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define MINPREAMBEL 8 +#define READ_AHEAD 80*CORRLEN + +// Wenn die nachfolgende Variable Definiert ist, wird der mrtty decode f?r FMS genutzt +// Bei MRTTY sollte SUBSAMP auf 1 definiert sein ! Sonst geht NIX ! +//#define MRTTY 0 + +#ifdef WIN32 +//#define MON_DEBUG +#endif + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModuleFMS::MonitorModuleFMS(unsigned int sampleRate,XMLNode* pConfig) +{ + int signallevel=10000 ; + + int vorlaufbits=getNodeInt(*pConfig,"syncbits",8) ; + int crccheck=getNodeInt(*pConfig,"crc-check",1) ; + int algorithm=getNodeInt(*pConfig,"algorithmus",0) ; + + initialize( sampleRate, + vorlaufbits, + crccheck, + (((float)(signallevel))/65535.0), + false, + false, + algorithm, + false, + false); +} + + +MonitorModuleFMS::MonitorModuleFMS(int sampleRate, int vorlaufbits, bool crccheck, float signallevel, bool ignore_Wiederholung, bool ignore_Quittung, int algorithm, bool error_correction, bool force_preambel) +{ + initialize(sampleRate, vorlaufbits, crccheck, signallevel, ignore_Wiederholung, ignore_Quittung, algorithm, error_correction, force_preambel); + } + +void MonitorModuleFMS::initialize(int sampleRate, int vorlaufbits, bool crccheck, float signallevel, bool ignore_Wiederholung, bool ignore_Quittung, int algorithm, bool error_correction, bool force_preambel) +{ + float f; + int i; + FILE_LOG(logDEBUG) << "FMS Parameter" ; + FILE_LOG(logDEBUG) << "sample : " << sampleRate ; + FILE_LOG(logDEBUG) << "syncbits: " << vorlaufbits ; + FILE_LOG(logDEBUG) << "crc : " << crccheck ; + FILE_LOG(logDEBUG) << "level : " << signallevel ; + FILE_LOG(logDEBUG) << "Algo : " << algorithm ; + FILE_LOG(logDEBUG) << "ignW : " << ignore_Wiederholung ; + FILE_LOG(logDEBUG) << "ignQ : " << ignore_Quittung ; + FILE_LOG(logDEBUG) << "ErrC : " << error_correction ; + FILE_LOG(logDEBUG) << "force : " << force_preambel ; + + m_bErrorCorrection=error_correction ; + m_iAlgorithmus=algorithm ; + rxstate=0 ; + distCounter=0 ; + + + bit_phase=0 ; + m_iLastSyncState=0 ; + + summe=0 ; + + FREQ_SAMP=sampleRate ; + + CORRLEN=(int) (FREQ_SAMP / BAUD) ; + SPHASEINC=(0x10000u * BAUD * SUBSAMP / FREQ_SAMP) ; + SPHASEINC_BASE=(0x10000u * BAUD * SUBSAMP / FREQ_SAMP) ; + + m_fSignallevel=signallevel ; + + m_lpszStatusTabelle="status" ; + memset(&fms,0,sizeof(FMS)) ; + memset(&lasts,0,sizeof(unsigned int[11])) ; + memset(&m_LastMessage,0,sizeof(FMS)) ; + + lastout=0 ; + quittung=0 ; + subsamp=0 ; + sphase=0 ; + // + memset(&vals, 0, sizeof(VALS)); + + rxstate = 0; + + for (f = 0, i = 0; i < CORRLEN; i++) { + corr_mark_i[i] = cos(f); + corr_mark_q[i] = sin(f); + //int_corr_mark_i[i] = (int) corr_mark_i[i]*32768 ; + //int_corr_mark_q[i] = (int) corr_mark_q[i]*32768 ; + + f += 2.0 * M_PI * (float) FREQ_MARK / (float) FREQ_SAMP; + } + + for (f = 0, i = 0; i < CORRLEN; i++) { + corr_space_i[i] = cos(f); + corr_space_q[i] = sin(f); + //int_corr_space_i[i] = (int) corr_space_i[i]*32768 ; + //int_corr_space_q[i] = (int) corr_space_q[i]*32768 ; + + f += 2.0 * M_PI * (float) FREQ_SPACE / (float) FREQ_SAMP; + m_fZwPuffer[i]=0.0 ; + m_fZwPuffer[CORRLEN+i]=0.0 ; + } + + + vals.quality=vorlaufbits ; + vals.ctrl=0 ; + + if (crccheck) // Wenn CRC-Check, dann um 20 erh?hen + vals.quality+=20 ; + + m_lpszName="FMS" ; + //m_bSuppressQuittung=true ; + //m_bSuppressDupes=true ; + + + + set_filters(FREQ_SPACE,FREQ_MARK,BAUD); + + + #ifdef FMSDEBUG + debugFile1 = fopen("fms_in.raw", "wb"); + debugFile2 = fopen("fms_takt.raw", "wb"); + debugFile3 = fopen("fms_pfd.raw", "wb"); + debugFile4 = fopen("fms_4.raw", "wb"); + #endif +} + + +MonitorModuleFMS::~MonitorModuleFMS() +{ + #ifdef FMSDEBUG + fclose(debugFile1) ; + fclose(debugFile2) ; + fclose(debugFile3) ; + fclose(debugFile4) ; + #endif +} + +void MonitorModuleFMS::parseConfigData() +{ + +} + +//////////////////////////////////////////////////////////////////// +// Sucht im Bereitgestellten Datenpuffer (*buffer) nach enthaltenen +// Bits gem. FMS Codierung +// Jedes einzelne Bit wird an rxbit ?bergeben und dort im Kontext +// analysiert +// + +int counter =0 ; + + +void MonitorModuleFMS::demod(float *buffer, int length) +{ + m_fSignallevel=0.3 ; + + if (m_iAlgorithmus==1) + { + demod_se(buffer,length) ; + return ; + } ; + + float f, ampl_mark, ampl_space ; + + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + + for (; length >= max(SUBSAMP, CORRLEN) ; length -= SUBSAMP, buffer += SUBSAMP) + { + ampl_mark= fsqr(mac(buffer, corr_mark_i, CORRLEN)) + + fsqr(mac(buffer, corr_mark_q, CORRLEN)) ; + ampl_space= fsqr(mac(buffer, corr_space_i, CORRLEN)) + + fsqr(mac(buffer, corr_space_q, CORRLEN)); + + f = ampl_mark - ampl_space ; + + dcd_shreg <<= 1; + dcd_shreg |= (f > 0); + + // check if transition + // + if ((dcd_shreg ^ (dcd_shreg >> 1)) & 1) { + if (sphase < (0x8000u - (SPHASEINC / 2))) + sphase += SPHASEINC / 8; + else + sphase -= SPHASEINC / 8; + } + sphase += SPHASEINC; + + + summe=summe + ( (f > 0) ? 1 : -1) ; + + if (sphase>=0x10000u) + { + sphase &= 0xffffu; + // curbit = dcd_shreg & 1; + + if ( (summe >= (int) (m_fSignallevel * ((float) (FREQ_SAMP/SPHASEINC_BASE))) ) || (-summe >= (int) (m_fSignallevel * ((float) (FREQ_SAMP/SPHASEINC_BASE)) ) )) + //(f >= m_fSignallevel) || (f <=-m_fSignallevel)) // Es muss schon ein wenig dahinterstehen ;-) + { + // TRACE1("summe: %d\n",summe) ; + int bit=(summe >= 0) ? 1 : 0 ; + rxbit(bit); + + } else { + // ggf. laufende Auswertung abbrechen, da Signal zu schwach + // + //TRACE2("FMS: Low Power Signal %d < %d \n",summe,(int) (m_fSignallevel * ((float)(FREQ_SAMP/SPHASEINC_BASE)) )) ; + if (rxstate) rxstate=0 ; + } ; + summe=0 ; + } + } + + subsamp = length; +} + +/////////////////////////////////////////////////////////// +// Verarbeiten des Empfangenen Bits und Untersuchung +// im Kontext bisher empfangener Daten +// + +bool MonitorModuleFMS::rxbit(unsigned char bit, bool test) +{ + // #define ITEMLEN 80 + bool returnValue=false ; + + unsigned int i = 0, j = 0; + unsigned int filter= 0xffff >> (15 - (vals.quality >= 20 ? vals.quality - 20 : vals.quality)); + unsigned int sync = 0xff1a & filter; + char c[ITEMLEN], *p; + char kontrollString[ITEMLEN] ; + + + /* F?llen des Vorlaufstromes aus dem Overflow vom Rxbitstream und Schieben */ + for(;i < 10; i++){ + lasts[i] <<= 1; + lasts[i] |= lasts[i + 1] >> 31; + } + lasts[10] <<= 1; + lasts[10] |= rxbitstream >> 31; + rxbitstream <<= 1; + rxbitstream |= !!bit; + + // CString outstring ; + // itoa(rxbitstream, outstring.GetBuffer(20),16) ; + // TRACE(outstring) ; + + unsigned int testen=(rxbitstream & filter) ; + if (!rxstate && (testen==sync) ) { + /* ein Syncwort wurde gefunden */ + // TRACE0 ("->SYNC<-") ; + if (m_iLastSyncState>0) + { + m_bPrintError=true ; + //TRACE0 ("->SYNC<-") ; + // //DebugMessage("-> SYNC-WORT <- gefunden") ; + } else { + m_bPrintError=false ; + // //DebugMessage("Ohne Pr?ambel: -> SYNC-WORT <- gefunden") ; + } + // counter = -1 ; + + rxstate = 1; // In den Empfangsmodus schalten + rxptr = rxbuf; // und das nachfolgende Auswerten + return false ; + } + + if (rxstate) + { + if (rxstate++ <= 48) + { + rxbitbuf |= !!bit; + *rxptr++ = !!bit; + if (rxstate == 49) + { + *fms.stat = (unsigned short) 0; + + /* Dekodiere das empfangene Codewort */ + i = decode(test); + + if (i) returnValue=true ; + + if (!i) + { + if (m_iLastSyncState>0) + { + ErrorOut() ; + m_iLastSyncState=0 ; + } + /* + * CRC-Fehler + * Zur?ckschieben des Buffers f?r Neutests + */ + rxbitstream = lasts[9]; + rxbitstream <<= 16; + rxbitstream |= lasts[10] >> 16; + + for (i = 10; i > 1; i--) { + lasts[i] = lasts[i - 2]; + lasts[i] <<= 16; + lasts[i] |= lasts[i - 1] >> 16; + } + lasts[1] = lasts[0] >> 16; + rxstate--; + + while (rxstate--) { + + for(i = 0; i < 10; i++){ + lasts[i] <<= 1; + lasts[i] |= lasts[i + 1] >> 31; + } + lasts[10] <<= 1; + lasts[10] |= rxbitstream >> 31; + p = (char*) rxbuf; + rxbitstream <<= 1; + rxbitstream |= *p; + for (i = 0; i < rxstate; i++, p++) *p = *(p + 1); + rxptr--; + + if ((rxbitstream & filter) == sync) { + + /* ein Syncwort wurde gefunden */ + p = (char*) rxbuf; + for (; j < rxstate; j++) { + for(i = 0; i < 10; i++){ + lasts[i] <<= 1; + lasts[i] |= lasts[i + 1] >> 31; + } + lasts[10] <<= 1; + lasts[10] |= rxbitstream >> 31; + rxbitstream <<= 1; + rxbitstream |= *p++; + } + rxstate++; + return false; + } + } + rxstate = 0; + } + else + { + returnValue=true ; + if (i < 2) { + /* + * Telegramm ok, wurde ausgegeben + */ + rxstate = 0; + } + else { /* i == 2 Text?bertragung */ + /* Buffer vorbereiten */ + txtbuf = (Line *) malloc (sizeof(Line)); + memset(txtbuf, 0, sizeof(Line)); + txtbuf->next = (Line *) malloc (sizeof(Line)); + memset(txtbuf->next, 0, sizeof(Line)); + } + } + return returnValue ; + } + } + else + { + /* Text?bertragung */ + Line *txt; + + *rxptr++ = !!bit; + + if (rxstate == 97) + { + memset(c, 0, 5); + memset(c, 46, 4); + txt = txtbuf->next; + + while (txt->next != NULL) txt = txt->next; + + if (!vals.txtinc) + { + memcpy (kontrollString,c,ITEMLEN) ; + + if (!decode(test)) + { + rxstate = 0; + return false ; + } + + returnValue=true ; + if (fms.dir[0]==0) // Bein Fz->Lst keine ?bersetzung von Sonderzeichen ! + { + m_bTranslate=false ; // Fz-Daten nicht ?bersetzen ! + // if (!crc_check(48)) + //{ + fms_bin(48,c); + + fms.txtnr=2 ; // Ausgedachter Wert 0xb schlie?t es ja ab + //} + } else { + if (!crc_check(48)) + { + m_bTranslate=false ; + fms_txt(48,kontrollString); + m_bTranslate=true ; + fms_txt(48,c); + + fms.txtnr= kontrollString[0]; + //TRACE1("L?nge: %d\n",fms.txtnr) ; + // *c = ' '; + } + } ; + + vals.txtinc = 1; + } + else + { + if (fms.dir[0]==0) + { + fms_bin(0,c) ; + }else { + if (!crc_check(0)) + { + fms_txt(0, c); + } + } ; + + } ; + + if (fms.dir[0]==0) + { + char tempString [20]="" ; + + char rotateByte[4] ; // =((c[i]>>4) & 0xf) + ((c[i] & 0xf) << 4) ; + + /* + rotateByte[0]= (((c[3]>>7) &0x1)<<0) + (((c[3]>>6) &0x1)<<1) + (((c[3]>>5) &0x1)<<2) + (((c[3]>>4) &0x1)<<3) + (((c[3]>>3) &0x1)<<4) + (((c[3]>>2) &0x1)<<5) + (((c[3]>>1) &0x1)<<6) + (((c[3]>>0) &0x1)<<7) ; + rotateByte[1]= (((c[2]>>7) &0x1)<<0) + (((c[2]>>6) &0x1)<<1) + (((c[2]>>5) &0x1)<<2) + (((c[2]>>4) &0x1)<<3) + (((c[2]>>3) &0x1)<<4) + (((c[2]>>2) &0x1)<<5) + (((c[2]>>1) &0x1)<<6) + (((c[2]>>0) &0x1)<<7) ; + rotateByte[2]= (((c[1]>>7) &0x1)<<0) + (((c[1]>>6) &0x1)<<1) + (((c[1]>>5) &0x1)<<2) + (((c[1]>>4) &0x1)<<3) + (((c[1]>>3) &0x1)<<4) + (((c[1]>>2) &0x1)<<5) + (((c[1]>>1) &0x1)<<6) + (((c[1]>>0) &0x1)<<7) ; + rotateByte[3]= (((c[0]>>7) &0x1)<<0) + (((c[0]>>6) &0x1)<<1) + (((c[0]>>5) &0x1)<<2) + (((c[0]>>4) &0x1)<<3) + (((c[0]>>3) &0x1)<<4) + (((c[0]>>2) &0x1)<<5) + (((c[0]>>1) &0x1)<<6) + (((c[0]>>0) &0x1)<<7) ; + + int test=(c[0]>>7) &0x1 ; + test=c[0]>>0 ; +*/ + for (i=0;i<4;i++) + { + // Oberes und unteres Nibble vertauschen + rotateByte[i]=((c[i]>>4) & 0xf) + ((c[i] & 0xf) << 4) ; + + // Nibbles nicht tauschen + // + //rotateByte[i]=c[i] & 0xff ; + + sprintf(tempString,"%02x",(unsigned char) rotateByte[i]) ; + strcat (txt->string,tempString) ; + } ; + } + else + { + strcat(txt->string, c); + } ; + + rxptr = rxbuf; + fms.txtnr -= (4 >> 1); + // fms.txtnr -= 4 ; + rxstate = 49; + + if (vals.txtinc) + { + if (rxbuf[32] || (fms.txtnr<=0)) + { + /* Status b: Abschluss (bisher Status a, + * unterscheidet sich in Bit 32) + * txtnr: 0 + * idealerweise trifft beides zu */ + + // txt_change(txt->string, s->l1.fms.subst); + // txt_break(txt, MAXROW); + + txt = txtbuf; + i = 0; + std::string outString ; + + while (txt != NULL) + { + outString +=txt->string ; + txt = txt->next; + } + + if (!test) + { + DisplayResult(outString.c_str()) ; + StoreForDupeCheck() ; // F?r sp?ter sichen, um zu pr?fen, ob was doppelt ist + } + vals.txtinc = 0; + rxstate = 0; + fms.stat[0]=0xb ; + returnValue=true ; + } + } + } + } + } + return returnValue ; +} + +int MonitorModuleFMS::decode(bool test) +{ + int i = 0, rules_; + short bit = 0; + + if (error_correction()) + { + return 0 ; + } + + + // if (crc_check(0)) return 0; + + /* falls keine laufende Text?bertragung */ + if (fms.stat[0] != 0xa) { + + fms.bos[0] = rxbuf[3] << 3 | rxbuf[2] << 2 | rxbuf[1] << 1 | rxbuf[0]; + + fms.land[0] = rxbuf[7] << 3 | rxbuf[6] << 2 | rxbuf[5] << 1 | rxbuf[4]; + + fms.ort[0] = rxbuf[11] << 3 | rxbuf[10] << 2 | rxbuf[9] << 1 | rxbuf[8]; + fms.ort[1] = rxbuf[15] << 3 | rxbuf[14] << 2 | rxbuf[13] << 1 | rxbuf[12]; + + fms.kfz[0] = rxbuf[19] << 3 | rxbuf[18] << 2 | rxbuf[17] << 1 | rxbuf[16]; + fms.kfz[1] = rxbuf[23] << 3 | rxbuf[22] << 2 | rxbuf[21] << 1 | rxbuf[20]; + fms.kfz[2] = rxbuf[27] << 3 | rxbuf[26] << 2 | rxbuf[25] << 1 | rxbuf[24]; + fms.kfz[3] = rxbuf[31] << 3 | rxbuf[30] << 2 | rxbuf[29] << 1 | rxbuf[28]; + + fms.stat[0] = rxbuf[35] << 3 | rxbuf[34] << 2 | rxbuf[33] << 1 | rxbuf[32]; + + fms.bst[0] = rxbuf[36]; + fms.dir[0] = rxbuf[37]; + fms.tki[0] = rxbuf[38] << 1 | rxbuf[39]; + + for (i = 0; i < 7; i++) fms.crc[i] = rxbuf[40 + i]; + + rules_ = rules(); + + if (!(rules_ )) { + bit = vals.bit; + if (bit < 49 && bit) rxbuf[bit - 1] ^= 1; + return 0; + } + } + /* noch keine Ausgabe falls Text?bertragung (sp?ter mit Zeichennzahl)) */ + if (fms.stat[0] == 0xa) return 2; + + bit = vals.bit; + + // if(!rxbuf[47]) /* Stoppbit == 0 */ + { + if (!test) + { + DisplayResult() ; /* Auf dem Bildschirm ausgeben */ + StoreForDupeCheck() ; // F?r sp?ter sichen, um zu pr?fen, ob was doppelt ist + } + + } + if (bit < 49 && bit) rxbuf[bit - 1] ^= 1; + return !rxbuf[47] ; +} + + + +int MonitorModuleFMS::crc_check(int offset) +{ +/***************************************************************************** + * CRC-Pr?froutine und teilweise blindes Korrigieren, offset=[0, 48] + *****************************************************************************/ + + #define CODE 47 + + unsigned char g[] = {1,0,0,0,1,0,1}; + unsigned char r[] = {0,0,0,0,0,0,0,0}; + char *p; + unsigned int i = 0, j; + + // rxbuf,fms.vals.quality,0, &vals.bit + + + /* CRC-Pr?froutine Begin */ + for (i = 0; i < CODE; i++) { + vals.bit = rxbuf[i + offset] ^ r[0]; + p = (char*) r; + for (j = 0; j < 7; j++) *p++ = (vals.bit & g[j]) ^ r[j + 1]; + } + /* CRC-Pr?froutine Ende */ + + /* Pr?fen des Rest-Polynoms */ + vals.bit = 0; + for (i = 0; i < 7; i++) { + vals.bit <<= 1; + vals.bit |= r[i]; + } + /* ok, falls kein Rest (*bit=0) */ + + // TRACE1("CRC-Check: %d\n",vals.bit) ; + if (vals.quality >= 20) return vals.bit; /* crc_check on */ + else{ + if (vals.bit) { + vals.bit = crc_table[vals.bit]; + if (vals.bit < 48) rxbuf[(vals.bit)++] ^= 1; + else return vals.bit; + } + } + return 0; +} + +int MonitorModuleFMS::rules() +{ + // ung?ltige Telegramme: + // Ort : > 9* && > *9 + // BOS : 0 ; + // SE: ge�ndert auf Ort bis F* und *F, da in Bayern so gebr�uchlich + + if (fms.ort[0] > 0xf) return 0 ; + if (fms.ort[1] > 0xf) return 0 ; + if (fms.bos==0) return 0 ; + return 1 ; +} + +void MonitorModuleFMS::DisplayResult(std::string input) +{ + // + + // TRACE2("Ergebnisse: Dupes: %d - Quittung: %d\n", (int) CheckForDupes(), (int) CheckForQuittung()) ; + if (!CheckForDupes() && !CheckForQuittung() ) + { + char statusString[5] ; // war: traceString + char kfzString[10] ; // war: traceString1 + char ortString[10] ; // war: traceString2 + char bosString[3] =" " ; + char landString[3]=" " ; + char richtungString[3]=" " ; + char tkiString[3] = " " ; + char baustufeString[3] = " " ; + char dateStr[9]; + char timeStr[9]; + + std::string fahrzeugKennung; + std::string bosDezimalString ; + std::string landDezimalString ; + std::string statusDezimalString ; + std::string jetzt ; + + sprintf(statusString,"%01x",fms.stat[0]) ; + sprintf(kfzString, "%04x", fms.kfz[0]*0x1000+fms.kfz[1]*0x100+fms.kfz[2]*0x10+fms.kfz[3]*0x1) ; + sprintf(ortString, "%02x", fms.ort[0]*0x10+fms.ort[1]*0x1) ; + + + // kfzString in Uppercase umwandeln (ist immer 4 stellig) + kfzString[0]=toupper( kfzString[0] ); + kfzString[1]=toupper( kfzString[1] ); + kfzString[2]=toupper( kfzString[2] ); + kfzString[3]=toupper( kfzString[3] ); + + // ortString + ortString[0]=toupper( ortString[0] ); + ortString[1]=toupper( ortString[1] ); + + // das gleiche f�r den StatusString + statusString[0]=toupper(statusString[0]) ; + + bosDezimalString=convertIntToString(fms.bos[0]) ; + landDezimalString=convertIntToString(fms.land[0]) ; + statusDezimalString=convertIntToString(fms.stat[0]) ; + + richtungString[0] = '0'+fms.dir[0] ; + tkiString[0] = '0'+fms.tki[0] ; + baustufeString[0]= '0' + fms.bst[0] ; + + bosString[0]= fms.bos[0]<=9 ? '0'+fms.bos[0] : ('A'+fms.bos[0]-10) ; + landString[0]= fms.land[0]<=9 ? '0'+fms.land[0] : ('A'+fms.land[0]-10) ; + fahrzeugKennung=std::string(bosString)+landString+ortString+kfzString ; + + currentTime(jetzt) ; // aktuelle Uhrzeit holen + struct tm* tm_time= localtime(&m_time) ; + strftime(dateStr,9,"%d.%m.%y" ,tm_time) ; + strftime(timeStr,9,"%H:%M:%S" ,tm_time) ; + + ModuleResultBase *pRes =new ModuleResultBase() ; + + pRes->set("timestamp",jetzt); + pRes->set("uhrzeit",timeStr) ; + pRes->set("datum",dateStr) ; + pRes->set("servernamehex",m_serverNameHex); + pRes->set("channelnamehex",m_channelNameHex); + pRes->set("channelnum",convertIntToString(m_iChannelNum)); + + pRes->set("typ","fms"); + pRes->set("fmskennung",fahrzeugKennung); + pRes->set("status",statusString); + pRes->set("baustufe",baustufeString); + pRes->set("timestamp",jetzt); + pRes->set("richtung",richtungString); + pRes->set("tki",tkiString); + pRes->set("bosdezimal",bosDezimalString) ; + pRes->set("landdezimal",landDezimalString) ; + pRes->set("statusdezimal",statusDezimalString) ; + pRes->set("bos",bosString) ; + pRes->set("land",landString) ; + pRes->set("ort",ortString) ; + pRes->set("kfz",kfzString) ; + pRes->set("textuebertragung",input) ; + + FILE_LOG(logDEBUG) << (*pRes) << "-----" ; + GlobalDispatcher->addResult(pRes) ; + } ; +} + +void MonitorModuleFMS::fms_txt(short offset, char *c) +{ + int j, letters = 4, tlen; + char *str = c, *bpp; + const char * tstr; + + bpp = (char*) &rxbuf[offset + 6]; + + for (; letters; letters--) { + *str = 0x20 ; + for (j = 7; j; j--) { + *str <<= 1; + *str |= *bpp--; + } + + if (m_bTranslate) tstr=translate_alpha(*str) ; + else tstr=(const char *)NULL ; + + if (tstr != NULL) { + /* Steuerzeichen ausgeben? */ + if (vals.ctrl + /* Umlaute */ + || ((*str & 0x58) == 0x58 && (*str & 0x7) >= 3 && (*str && 0x7) <= 5) + /* ? */ + || *str == 0x7e) { + tlen= strlen(tstr); + memcpy(str, tstr, tlen); + str += tlen - 1; + } + else + { + /* Enter */ + if (*str == 13 || *str == 10) { + *str = '\n'; + } else { + str--; + } + } + + } ; + str++; + bpp += 15; + } ; + *str = 0; + /* fms_txt*/ +} + + +void MonitorModuleFMS::fms_bin(short offset, char *c) +{ + int j, letters = 4 ; + char *str = c, *bpp ; + + bpp = (char*) &rxbuf[offset + 7]; + + for (; letters; letters--) { + *str = 0x00 ; + for (j = 8; j; j--) { + *str <<= 1; + *str |= *bpp--; + } + + + str++; + bpp += 16; // ????????? + } ; + *str = 0; + /* fms_txt*/ +} + +void MonitorModuleFMS::StoreForDupeCheck() +{ + if (!CheckForDupes() && !CheckForQuittung() ) + { + memcpy (&m_LastMessage,&fms,sizeof(FMS)) ; + // TRACE1("Gespeichert als letzte Nachricht %d\n",fms.bos[0]) ; + } + StoreForReverseCheck() ; +} + +bool MonitorModuleFMS::CheckForDupes() +{ + if ( (m_LastMessage.bos[0]==fms.bos[0]) && + (m_LastMessage.bst[0]==fms.bst[0]) && + (m_LastMessage.tki[0]==fms.tki[0]) && + (m_LastMessage.dir[0]==fms.dir[0]) && + (m_LastMessage.kfz[0]==fms.kfz[0]) && + (m_LastMessage.kfz[1]==fms.kfz[1]) && + (m_LastMessage.kfz[2]==fms.kfz[2]) && + (m_LastMessage.kfz[3]==fms.kfz[3]) && + (m_LastMessage.land[0]==fms.land[0]) && + (m_LastMessage.ort[0]==fms.ort[0]) && + (m_LastMessage.ort[1]==fms.ort[1]) && + (m_LastMessage.stat[0]==fms.stat[0]) + ) + { + return false ; /* Doppelte nicht verwerfen */ + } + + return false ; +} + +bool MonitorModuleFMS::CheckForQuittung() +{ + if ( (m_LastMessage.bos[0]==fms.bos[0]) && + (m_LastMessage.bst[0]==fms.bst[0]) && + (m_LastMessage.dir[0]==(1-fms.dir[0])) && + (m_LastMessage.kfz[0]==fms.kfz[0]) && + (m_LastMessage.kfz[1]==fms.kfz[1]) && + (m_LastMessage.kfz[2]==fms.kfz[2]) && + (m_LastMessage.kfz[3]==fms.kfz[3]) && + (m_LastMessage.land[0]==fms.land[0]) && + (m_LastMessage.ort[0]==fms.ort[0]) && + (m_LastMessage.ort[1]==fms.ort[1]) && + (fms.stat[0]==15) + ) + { + /*if (m_bSuppressQuittung) + { + //TRACE0 ("Quittung raus raus !\n") ; + } ; + return m_bSuppressQuittung ;*/ + } + + return false ; +} + + +// ********************************************************* +// ** IIR Filter +// ********************************************************* + +inline float MonitorModuleFMS::biq_lp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x+buf[0]+buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModuleFMS::biq_bp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModuleFMS::biq_hp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[0]-buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +void MonitorModuleFMS::gen_coef(int tipo, float f0, float Q, float *pcoef) +{ + float w0,a,d; + + w0=2.*M_PI*f0; + + //Prewharping + w0=2.0*FREQ_SAMP*tan(w0/FREQ_SAMP/2.0); + + a=FREQ_SAMP/w0; + d=4.*a*a +2.*a/Q +1.; + + switch(tipo){ + case 0: (*pcoef++)=1.0/d; break; + case 1: (*pcoef++)=2.*a/Q/d; break; + case 2: (*pcoef++)=4.*a*a/d; break; + } + + (*pcoef++)=(8.*a*a -2.)/d; + (*pcoef++)=-(4.*a*a -2.*a/Q +1.)/d; +} + +void MonitorModuleFMS::set_filters(float f0, float f1, float dr) +{ + gen_coef(1,f0,f0/dr/2.0,bp0_c); /* Space filter */ + gen_coef(1,f1,f1/dr/2.0,bp1_c); /* Mark filter */ + gen_coef(0,dr,0.5412,lp1_c); /* Low-Pass order-4 Butt. filter */ + gen_coef(0,dr,1.3066,lp2_c); + + for (int i=0;i<4;i++) lp1_b[i]=lp2_b[i]=bp0_b[i]=bp1_b[i]=0.0; +} + +void MonitorModuleFMS::demod_se(float *buffer, int length) +{ + float xs,xm,y, sample; + + /* This function implements a digital PLL for data recovery */ + static int x0; + static int x_se ; + + static int x,f=0; + + + #ifdef FMSDEBUG + // Startwerte + fwrite(buffer, sizeof(float), length,debugFile1); + pBuffer1=fileBuffer1 ; + pBuffer2=fileBuffer2 ; + pBuffer3=fileBuffer3 ; + bufferLen1=0 ; + bufferLen2=0 ; + bufferLen3=0 ; + #endif + + + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) + { + // rtty (2) decoder + // + sample=(*buffer)*128 ; + + xs=biq_bp(sample,bp0_c,bp0_b); + xm=biq_bp(sample,bp1_c,bp1_b); + xs*=xs; // xs RMS + xm*=xm; // xm RMS + y=biq_lp(biq_lp(xm-xs,lp1_c,lp1_b),lp2_c,lp2_b); + + + x=(y>0.0)?1:0 ; + + if ((x^x0)) // Data Change + { + if (!f) + { + if (bit_phase>0x8000) + { // Late + bit_phase+=SPHASEINC_BASE*1.5; // war: /8 + } else // Early + { + bit_phase-=SPHASEINC_BASE*1.5 ;// war: /8 + } + + f=1; + } + } + + x0=x; + + x_se=bit_phase; + + bit_phase+=SPHASEINC_BASE ; + + + #ifdef FMSDEBUG + /* + debugFile1 = fopen("fms_in.raw", "wb"); + debugFile2 = fopen("fms_takt.raw", "wb"); + debugFile3 = fopen("fms_pfd.raw", "wb"); + debugFile4 = fopen("fms_4.raw", "wb"); + + pBuffer1=debugFile2 ; + pBuffer2=debugFile3 + pBuffer3=debugFile4 ; + */ + + *pBuffer1=(bit_phase <0x8000)?0.7:-0.7 ; + *pBuffer2=y ; + *pBuffer3=(Ud*0.75)/0x8000 ; + + pBuffer1++ ; + pBuffer2++ ; + pBuffer3++ ; + bufferLen1++ ; + bufferLen2++ ; + bufferLen3++ ; + #endif + + if (((bit_phase & 0x8000)>0) && ((x_se & 0x8000)==0)) // in der "Mitte" bit_phase=0x8000 wird ein einzelnes Bit "empfangen", wichtig wg. der early/late - nicht erst am Ende ! + { + f=0 ; + + //if ( (!m_bForcePreambel) || rxstate ) // rxstate bei lfd. Text?bertragung + { + #ifdef FMSDEBUG + pBuffer3-- ; + *pBuffer3= x0==1 ? 0.7:-0.7 ; + pBuffer3++ ; + #endif + + if (rxbit(x0<<7)) // Gibt true zur?ck, wenn ein korrektes Wort empfangen worden ist + { + // Daten korrekt empfagen + ErrorOut() ; + } + } + + // This function returns in the middle of a bit + } ; + } + #ifdef FMSDEBUG + fwrite(fileBuffer1, sizeof(float), bufferLen1,debugFile2); + fwrite(fileBuffer2, sizeof(float), bufferLen2,debugFile3); + fwrite(fileBuffer3, sizeof(float), bufferLen3,debugFile4); + #endif + +} + +void MonitorModuleFMS::ErrorOut() +{ + if (fms.stat[0] != 0xa) { + + fms.bos[0] = rxbuf[3] << 3 | rxbuf[2] << 2 | rxbuf[1] << 1 | rxbuf[0]; + + fms.land[0] = rxbuf[7] << 3 | rxbuf[6] << 2 | rxbuf[5] << 1 | rxbuf[4]; + + fms.ort[0] = rxbuf[11] << 3 | rxbuf[10] << 2 | rxbuf[9] << 1 | rxbuf[8]; + fms.ort[1] = rxbuf[15] << 3 | rxbuf[14] << 2 | rxbuf[13] << 1 | rxbuf[12]; + + fms.kfz[0] = rxbuf[19] << 3 | rxbuf[18] << 2 | rxbuf[17] << 1 | rxbuf[16]; + fms.kfz[1] = rxbuf[23] << 3 | rxbuf[22] << 2 | rxbuf[21] << 1 | rxbuf[20]; + fms.kfz[2] = rxbuf[27] << 3 | rxbuf[26] << 2 | rxbuf[25] << 1 | rxbuf[24]; + fms.kfz[3] = rxbuf[31] << 3 | rxbuf[30] << 2 | rxbuf[29] << 1 | rxbuf[28]; + + fms.stat[0] = rxbuf[35] << 3 | rxbuf[34] << 2 | rxbuf[33] << 1 | rxbuf[32]; + + fms.bst[0] = rxbuf[36]; + fms.dir[0] = rxbuf[37]; + fms.tki[0] = rxbuf[38] << 1 | rxbuf[39]; + + for (int i = 0; i < 7; i++) fms.crc[i] = rxbuf[40 + i]; + + } + + char traceString [5] ; + // itoa( fms.stat[0], traceString,16) ; + sprintf(traceString,"%01x",fms.stat[0]) ; + + char traceString1[10] ; + sprintf(traceString1, "%04x", fms.kfz[0]*0x1000+fms.kfz[1]*0x100+fms.kfz[2]*0x10+fms.kfz[3]*0x1) ; + + char traceString2[10] ; + sprintf(traceString2, "%02x", fms.ort[0]*0x10+fms.ort[1]*0x1) ; + +#ifdef MON_DEBUG_ERR + TRACE0("KFZ: ") ; + TRACE0(traceString1) ; + TRACE0 (" ") ; + + TRACE0("Ort: ") ; + TRACE0(traceString2) ; + TRACE0(" ") ; + + TRACE0("Status: ") ; + TRACE0(traceString) ; + TRACE0("\n") ; +#endif +/* + COleDateTime now ; + now=COleDateTime::GetCurrentTime() ; + + CString outString=now.Format("%H:%M:%S - ") ; + */ + std::string outString ; + outString+="received: " ; + + char tempString[10]=" " ; + tempString[0]= fms.bos[0]<=9 ? '0'+fms.bos[0] : ('A'+fms.bos[0]-10) ; + // itoa(fms.bos[0], tempString,16) ; // BOS + outString += tempString ; + outString +=" " ; + + tempString[0]= fms.land[0]<=9 ? '0'+fms.land[0] : ('A'+fms.land[0]-10) ; + //itoa(fms.land[0], tempString,16) ; // LAND + outString += tempString ; + + outString += traceString2 ; // ORT + outString +=" " ; + outString += traceString1 ; // KFZ + + std::transform (outString.begin(), outString.end(), outString.begin(), + (int(*)(int)) toupper); + + outString +=" : " ; + outString += traceString ; // Status ; + + outString += " - " ; + tempString[0]= fms.bst[0]<=9 ? '0'+fms.bst[0] : ('A'+fms.bst[0]-10) ; + // itoa(fms.bst[0], tempString,16) ; // BST + outString += tempString ; + + outString += "/" ; + if (fms.dir[0]==0) + outString += "Kfz->Lst" ; + else + outString += "Lst->Kfz" ; + + // itoa(fms.dir[0], tempString,16) ; // DIR + // outString += tempString ; + + outString += "/" ; + tempString[0]= fms.tki[0]<=9 ? '0'+fms.tki[0] : ('A'+fms.tki[0]-10) ; + // itoa(fms.tki[0], tempString,16) ; // TKI + outString += tempString ; + + + ////DebugMessage(outString) ; + + //TRACE1("%s\n",outString) ; +} + +void MonitorModuleFMS::StoreForReverseCheck() +{ + + memcpy (&m_ReverseCheckMessage,&fms,sizeof(FMS)) ; + // TRACE1("Gespeichert als letzte Nachricht %d\n",fms.bos[0]) ; + +} + +bool MonitorModuleFMS::IsRelatedMessage() +{ + if ( (m_ReverseCheckMessage.bos[0]==fms.bos[0]) && + (m_ReverseCheckMessage.kfz[0]==fms.kfz[0]) && + (m_ReverseCheckMessage.kfz[1]==fms.kfz[1]) && + (m_ReverseCheckMessage.kfz[2]==fms.kfz[2]) && + (m_ReverseCheckMessage.kfz[3]==fms.kfz[3]) && + (m_ReverseCheckMessage.land[0]==fms.land[0]) && + (m_ReverseCheckMessage.ort[0]==fms.ort[0]) && + (m_ReverseCheckMessage.ort[1]==fms.ort[1]) + ) + { + return true ; + } else + { + return false ; + } +} + +bool MonitorModuleFMS::error_correction() +{ + #define CODE 47 + // Gibt true zur?ck, wenn keine Fehlerkorrektur o.?. helfen konnte + // + if (crc_check(0)) + { + // + if (m_bPrintError && m_bErrorCorrection) + { + // TRACE0("CRC Check failed...\n") ; + // CRC-Check war nicht ok ... + // Deswegen + + // Ein Bit Fehler versuchen zu korrigieren + // + // gr?ssere Hamming-Dist m?glich ? (48 Bit, davon 7 Bit CRC = 42 Bit Nutzdaten) + // + int pos1=0 ; + do + { + rxbuf[pos1] = (1-rxbuf[pos1]) ; // Bit invertieren + if (!crc_check(0) ) + { + if (RMExists()) + { + //std::string outString ; + //outString.Format("1) CRC corrected at %d.",pos1) ; + ////DebugMessage(outString) ; + ErrorOut() ; + + return false ; + } + } + rxbuf[pos1] = (1-rxbuf[pos1]) ; // Bit invertieren + pos1++ ; + } while (pos1<(CODE)) ; + } + return true ; + } else + { + return false ; + } +} + +bool MonitorModuleFMS::RMExists() +{ + return true ; +} + +bool MonitorModuleFMS::IsSyncWord(unsigned long rxbitstream) +{ + int minbits= vals.quality >= 20 ? vals.quality - 20 : vals.quality; + int i,bitcounter=0 ; + + unsigned int sync = 0xfff1a ; + + for (i=0;i<20;i++) + { + unsigned int bit1=rxbitstream & 0x1 ; + unsigned int bit2=sync & 0x1 ; + if (bit1==bit2) + { + bitcounter++ ; + } + rxbitstream>>=1 ; + sync>>=1 ; + } + + return (bitcounter >= minbits) ; +} + + +void MonitorModuleFMS::demod_neu(float *buffer, int length) +{ + +} + + +bool MonitorModuleFMS::IsValid() +{ + return !(fms.bos[0]==0) ; +} diff --git a/monitord/MonitorModuleFMS.h b/monitord/MonitorModuleFMS.h new file mode 100644 index 0000000..65e1fd6 --- /dev/null +++ b/monitord/MonitorModuleFMS.h @@ -0,0 +1,230 @@ +/* MyMonModulesFMS.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (mail@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ + +#if !defined(AFX_MYMONMODULEFMS_H__680AB4C3_EAB0_4D03_A913_869FB97EA730__INCLUDED_) +#define AFX_MYMONMODULEFMS_H__680AB4C3_EAB0_4D03_A913_869FB97EA730__INCLUDED_ + +#if _MSC_VER > 1000 +// #pragma once +#endif // _MSC_VER > 1000 + +#include "MonitorModules.h" +#include "math.h" +//#include "resource.h" + +// #define FMSDEBUG + +#define FREQ_MARK 1200 +#define FREQ_SPACE 1800 +#define BAUD 1200 +#define SUBSAMP 1 +// war:2 + +#define LINELEN 240 +#define ITEMLEN 50 + +// F�r die SE - FMS Auswertung +// kann bis 44100 Hz eine ganze FMS Aussendung erfassen +// (44100Hz/1200Bit/s)*56Bit=2058 + Auswertungsspielraum + + + +#define FMS_BUFFERSIZE 10000 + +struct LINE { + char string[LINELEN], subst[ITEMLEN]; + long value; + struct LINE *next; +}; + +typedef struct LINE Line ; + +// + +/* ---------------------------------------------------------------------- */ + +#ifdef WIN32 +#ifndef M_PI +const float M_PI = 3.14159265358979 ; +#endif +#endif + +static const unsigned short crc_table[] = { + 48, 48, 48, 48, 48, 48, 48, 27, + 48, 48, 48, 18, 48, 5, 26, 48, + 48, 48, 48, 37, 48, 1, 17, 48, + 48, 8, 4, 48, 25, 48, 48, 48, + 48, 48, 48, 42, 48, 22, 36, 48, + 48, 30, 0, 48, 16, 48, 48, 13, + 48, 48, 7, 48, 3, 48, 48, 10, + 24, 48, 48, 32, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 46, 41, 48, + 48, 40, 21, 48, 35, 48, 48, 45, + 48, 20, 29, 48, 48, 48, 48, 39, + 15, 48, 48, 44, 48, 34, 12, 48, + 48, 28, 48, 48, 6, 48, 48, 19, + 2, 48, 48, 38, 48, 48, 9, 48, + 23, 48, 48, 43, 48, 14, 31, 48, + 48, 11, 48, 48, 48, 48, 48, 33, +}; + +/** Auswerter f�r FMS Aussendungen. + * Werte die �bergebenen Tondaten aus und sucht nach FMS Aussendungen + * Gefundene Daten werden per XML an den Hauptproze� zur�ckgegeben + */ +class MonitorModuleFMS : + public MonitorModule { +public: + bool IsValid(); + bool test_rxbit(unsigned char bit); + void ClearRXBuf(); + int PruefeTelegramm(int start); + int SucheSync(int start); + void demod_neu(float *buffer, int length); + void demod_se(float *buffer, int length); + virtual void demod(float* buffer, int length); + MonitorModuleFMS(int sampleRate=22050,int vorlaufbits=8, bool crccheck=0, float signallevel=0.4, bool ignore_Wiederholung=true, bool ignore_Quittung=true, int algorithm=1,bool error_correction=false, bool force_preambel=false) ; + MonitorModuleFMS(unsigned int sampleRate,XMLNode *pConfig) ; + virtual ~MonitorModuleFMS(); + +protected: + int distCounter ; + int rules(); + int crc_check(int offset); + int decode(bool test=false); + int dcd_buffer[FMS_BUFFERSIZE+100] ; + int CORRLEN ; + long SPHASEINC ; + + virtual void parseConfigData() ; + bool rxbit(unsigned char bit, bool test=false); + void initialize(int sampleRate, int vorlaufbits, bool crccheck, float signallevel, bool ignore_Wiederholung, bool ignore_Quittung, int algorithm, bool error_correction, bool force_preambel); + + /******************************************************* + Decoder Variables & Coef. calculation + *******************************************************/ + float lp1_c[3],lp2_c[3],bp0_c[3],bp1_c[3]; + float lp1_b[4],lp2_b[4],bp0_b[4],bp1_b[4]; + + unsigned short bit_phase ; + + // Das geht bis max 44100 Hz Samplerate (MaxWert=Samplerate/Baud) (44100/1200=37) ; + float corr_mark_i[40]; + float corr_mark_q[40]; + float corr_space_i[40]; + float corr_space_q[40]; + + float m_fZwPuffer[80] ; // Um den Bereich der L�nge CORRLEN am Ende des Blocks zwischenzuspeichern + + //short int int_corr_mark_i[40]; + //short int int_corr_mark_q[40]; + //short int int_corr_space_i[40]; + //short int int_corr_space_q[40]; + + unsigned int dcd_shreg ; + unsigned int sphase ; + unsigned int lasts[11] ; + unsigned int lastout ; + unsigned int subsamp ; + short quittung ; + + struct FMS { + unsigned short + bos[1], + land[1], + ort[2], + kfz[4], + stat[1], + bst[1], + dir[1], + tki[1], + crc[7]; + short txtnr ; + } fms ; + + + struct VALS{ + short quality ; + unsigned short txtinc, bit, ctrl ; + } vals ; + + +protected: + void fms_bin(short offset, char *c); + void DisplayResult(const std::string input=""); + bool CheckForQuittung(); + bool CheckForDupes(); + void StoreForDupeCheck(); + void fms_txt(short offset,char *c); + bool error_correction(); + bool IsRelatedMessage(); + void StoreForReverseCheck(); + void ErrorOut(); + bool IsSyncWord(unsigned long); + bool feedBuffer(int & start); + bool RMExists(); + bool rx_sample(int x); + void set_filters(float f0, float f1, float dr); + void gen_coef(int tipo, float f0, float Q, float *pcoef); + float biq_hp(float x,float *pcoef,float *buf); + float biq_bp(float x,float *pcoef,float *buf); + float biq_lp(float x,float *pcoef,float *buf); + + //int m_iSkipCounter; + bool m_bErrorCorrection; + int m_iLastSyncState, m_bPrintError ; + int m_iAlgorithmus; + unsigned int m_iLastrxstate ; + float m_fSignallevel; + Line* txtbuf; + std::string m_lpszStatusTabelle; + float m_PLLFaktor; + int SPHASEINC_BASE; + int summe; + struct FMS m_LastMessage; + struct FMS m_ReverseCheckMessage ; + + + float m_fPLLFaktor ; + float Ud ; + + #ifdef FMSDEBUG + FILE *debugFile1, *debugFile2, *debugFile3, *debugFile4; + float fileBuffer1[50000],fileBuffer2[50000], fileBuffer3[50000] ; + float *pBuffer1, *pBuffer2, *pBuffer3 ; + long bufferLen1,bufferLen2, bufferLen3 ; + #endif + +}; + +#endif // !defined(AFX_MYMONMODULEFMS_H__680AB4C3_EAB0_4D03_A913_869FB97EA730__INCLUDED_) diff --git a/monitord/MonitorModulePocsag.cpp b/monitord/MonitorModulePocsag.cpp new file mode 100644 index 0000000..81efc14 --- /dev/null +++ b/monitord/MonitorModulePocsag.cpp @@ -0,0 +1,590 @@ +// MyMonModulePocsag.cpp: Implementierung der Klasse MonitorModulePocsag. +// +////////////////////////////////////////////////////////////////////// + + +#include +using namespace std; +#ifdef WIN32 + #include + #include + #include +#endif + +#include "time.h" +#include "MonitorModulePocsag.h" +#include "convert.h" +#include "MonitorLogging.h" + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define LONG unsigned long + +/* + * the code used by POCSAG is a (n=31,k=21) BCH Code with dmin=5, + * thus it could correct two bit errors in a 31-Bit codeword. + * It is a systematic code. + * The generator polynomial is: + * g(x) = x^10+x^9+x^8+x^6+x^5+x^3+1 + * The parity check polynomial is: + * h(x) = x^21+x^20+x^18+x^16+x^14+x^13+x^12+x^11+x^8+x^5+x^3+1 + * g(x) * h(x) = x^n+1 + */ +#define BCH_POLY 03551 /* octal */ +#define BCH_N 31 +#define BCH_K 21 + +/* + * some codewords with special POCSAG meaning + */ +#define POCSAG_SYNC 0x7CD215D8 +#define POCSAG_SYNCINFO 0x7CF21436 +#define POCSAG_IDLE 0x7a89c197 + +#define POCSAG_SYNC_WORDS ((2000000 >> 3) << 13) + + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModulePocsag::MonitorModulePocsag() +{ + maxVal=0.0 ; + dcd_shreg=0 ; + sphase=0 ; + subsamp=0 ; + lastbit=0 ; + m_fTrigger=0.2 ; + global_rx_data=0; + // ctrl=0; + m_bPreambel_detected=false ; + m_bErrorCorrection=true ; + m_iPreambelLen=0 ; + m_bRXmode=false ; + m_iRXErrorCount=0 ; + MAX_RX_ERRORS=1500 ; + PREAMBEL_MINLEN=300 ; + m_iAlgorithmus=0 ; + + SetFilter("^1(.*)",1) ; + for (int i=0; i<2;i++) + { + rx_buff[i].rx_sync=0 ; + rx_buff[i].rx_word=0 ; + rx_buff[i].rx_bit=0 ; + rx_buff[i].numnibbles=0; + rx_buff[i].func=0; + rx_buff[i].adr=0; + memset(rx_buff[i].buffer,0,sizeof(rx_buff[i].buffer)); + rx_buff[i].receiving=0; + } +} + +MonitorModulePocsag::~MonitorModulePocsag() +{ + +} + +void MonitorModulePocsag::demod(float *buffer, int length) +{ + switch (m_iAlgorithmus) + { + case 1: + demod_se(buffer, length) ; // war demod_se ... + break ; + case 0: + default: + demod_mg(buffer, length) ; + } ; +} + +void MonitorModulePocsag::demod_se(float *buffer, int length) +{ + +} + +void MonitorModulePocsag::demod_mg(float *buffer, int length) +{ + +} + +void MonitorModulePocsag::rxbit(int bit) +{ + global_rx_data <<= 1; + global_rx_data |= ( bit==0 ? 0 : 1) ; + // + // Wozu dient das nachfolgende ? Alle Bits invertieren ? + // Skyper Modus ??????? + do_one_bit(rx_buff, ~(global_rx_data)); + + // Mit dieser Zeile alleine geht's zumindest bei mir ;-) + // + do_one_bit(rx_buff + 1, global_rx_data); +} + +void MonitorModulePocsag::do_one_bit(struct rx *rx, unsigned long rx_data) +{ + unsigned char rxword; + + unsigned char dumpString[5] ; + unsigned long data; + unsigned char *bp; + + dumpString[0]=0x00 ; + dumpString[1]=0x00 ; + dumpString[2]=0x00 ; + dumpString[3]=0x00 ; + dumpString[4]=0x00 ; + + /* TODO: Hack fuer 64Bit Systeme. Da ist ein unsigned long 8 Byte gross. Die + * SYNC-Worte etc. sind aber nur 4 Byte gross. Da uns immer nur die letzten 4 Bytes + * interessieren werden vorderen 4 Bytes per Und-Verknüpfung auf Null gesetzt. + * Dann passen auch wieder die Vergleiche bei den Sync-Worten + * + * Ggf. muesste man das hier noch netter gestalten. Aber so geht's auf jeden Fall :) + * SE, 15.08.09 + */ + rx_data &= 0xffffffff ; + + if ( ( (!rx->rx_sync)) ) // || (m_iRXErrorCount>MAX_RX_ERRORS) ) + { + rx->rx_sync=0 ; + } ; + + + if (!rx->rx_sync) { + if (isSync(rx_data)) { + rx->rx_sync = 2 ; // war: 10 -- vielleicht auch 4/5/6 ? + rx->rx_bit = rx->rx_word = 0; + rx->func = -1; + FILE_LOG(logDEBUG)<< "Sync gefunden\n" ; + //TRACE0("Sync gefunden\n") ; + m_iPreambelLen =0 ; + m_bRXmode=true ; + m_iRXErrorCount=0 ; + return; + } + return; + } + + if ((++(rx->rx_bit)) < 32) return; + + /* one complete word received */ + rx->rx_bit = 0; + + unsigned long compareData =rx_data ; + + /* check codeword */ + if (error_correction(rx_data)==false) { + //TRACE2("CODEWORD ung?ltig (DATA=0x%4x = \"%s\")\n",rx_data,dumpString) ; + /* codeword not valid */ + rx->rx_sync--; + rx->rx_word++; /* Zeile als Programmkorrektur eingef?gt */ + m_iRXErrorCount++ ; + /*Bad codeword */ + if (!(rx->func & (~3))) { + /* message garbled */ + printmessage(rx) ; + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + } + rx->func = -1; /* invalidate message */ + return; + } + + // Hier kommen wir nur hin, wenn das Codewort g?ltig ist + // + + if (rx_data!=compareData) + { + //TRACE0("Error correction applied\n") ; + }; + + /* do something with the data */ + // printf("%s%s: Codeword: %08lx\n", s->dem_par->name, add_name, rx_data); + rxword = rx->rx_word++; + + if (rxword >= 16) { + /* received word shoud be a frame synch */ + rx->rx_word = 0; + if ((rx_data == POCSAG_SYNC) || (rx_data == POCSAG_SYNCINFO)) + { + rx->rx_sync = 10; + //TRACE0("erneutes Sync gefunden\n") ; + // m_iPreambelLen =0 ; + m_bRXmode=true ; + m_iRXErrorCount=0 ; + } + else + rx->rx_sync -= 2; + return; + } + + if (rx_data == POCSAG_IDLE) { + // RotateString(dumpString, rx_data) ; + + //TRACE1("CODEWORD g?ltig (IDLE-WORD = %s) \n",dumpString) ; + /* it seems that we can output the message right here */ + if (!(rx->func & (~3))) + { + printmessage(rx); + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + } + rx->func = -1; /* invalidate message */ + return; + } + + + if ((rx_data & 0x80000000) ==0) + { + LONG testadr= ((rx_data >> 10) & 0x1ffff8) | ((rxword >> 1) & 7); + + if ((unsigned char)(testadr & 0x7) != (rx->rx_word>>1)) + { + //TRACE0("Adresswort im falschen Frame -> Als Daten auswerten \n") ; + // rx_data |= 0x80000000 ; + } ; + } ; + + if (rx_data & 0x80000000 || rx_data == 0x7cd215d8) { + //RotateString(dumpString, rx_data) ; + // TRACE2("CODEWORD g?ltig (DATA=0x%4x = \"%s\") \n",rx_data,dumpString) ; + /* this is a data word */ + + if (rx_data & 0x80000000) rx->receiving = 1; + else rx->receiving = 0; + + if (rx->func & (~3)) { + /* no message being received + * Lonesome data codeword */ + return; + } + if (rx->numnibbles > sizeof(rx->buffer) * 2 - 5) { + /* Warning: Message too long */ + printmessage(rx); + rx->func = -1; + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + return; + } + + bp = rx->buffer + (rx->numnibbles >> 1); + data = rx_data >> 11; + if (rx->numnibbles & 1) { + bp[0] = (bp[0] & 0xf0) | ((data >> 16) & 0xf); + bp[1] = data >> 8; + bp[2] = data; + } + else { + bp[0] = data >> 12; + bp[1] = data >> 4; + bp[2] = data << 4; + } + rx->numnibbles += 5; + return; + } + + /* process address codeword */ +/* if (rx_data >= POCSAG_SYNC_WORDS) { + unsigned char func = (rx_data >> 11) & 3; + unsigned long adr = ((rx_data >> 10) & 0x1ffff8) | + ((rxword >> 1) & 7); + + verbprintf(0, "%s%s: Nonstandard address codeword: %08lx " + "func %1u adr %08lx\n", s->dem_par->name, add_name, rx_data, + func, adr); + return; + } +*/ + + if (!(rx->func & (~3))) + { + printmessage(rx); + rx->buffer[0]= 0x00 ; + rx->buffer[1]= 0x00 ; + } + + /*rx->buffer[0]=0x00 ; + rx->buffer[1]=0x00 ; + */ + + + //long tempAdr ; - Kann man da noch etwas retten ??? (Test,SE) + rx->func = (rx_data >> 11) & 3; + rx->adr = ((rx_data >> 10) & 0x1ffff8) | ((rxword >> 1) & 7); + //tempAdr = ((rx_data >> 10) & 0x1ffff8) | ((rxword >> 1) & 7); + rx->numnibbles = 0; + /* + if (tempAdr>8) + { + rx->adr=tempAdr ; + + bp=(unsigned char*) dumpString ; + data=rx_data>> 11 ; + + if (rx->numnibbles & 1) { + bp[0] = (bp[0] & 0xf0) | ((data >> 16) & 0xf); + bp[1] = data >> 8; + bp[2] = data; + } + else { + bp[0] = data >> 12; + bp[1] = data >> 4; + bp[2] = data << 4; + } + + //TRACE3("CODEWORD g?ltig (ADDRESS=%d ,Frame=%d, rxCount=%d) \n",rx->adr,rx->adr & 0x7,rx->rx_word>>1) ; + if ((rx->adr & 0x7) != (rx->rx_word>>1)) + int doof=0 ; + //TRACE0("Vermutlich ein Fehlerhaftes Adresswort !-------------------------------\n") ; + } ; + */ + +} + +void MonitorModulePocsag::printmessage(struct MonitorModulePocsag::rx *rx) +{ + char Funktionsbit [5]= " " ; + + if (rx->adr==0) return ; // Adresse == 0 macht keine Sinn ... + + Funktionsbit[0] = rx->func < 10 ? '0' + rx->func : 'A' + rx->func-10 ; + //itoa( rx->func , Funktionsbit,16) ; + + char Adresse[10] ; + sprintf(Adresse, "%07d", (int) rx->adr ) ; + + std::string outString ; + std::string message="" ; + + // Fuer Crusader und FMS32Pro Modus + char dateStr[9]; + char timeStr[9]; + //char subString[2]; + std::string subString ; + + std::string counterCString ; + + if (!isnumeric(rx, message)) + { + RotateString (message,rx) ; + } ; + + std::string jetzt ; + + currentTime(jetzt) ; // aktuelle Uhrzeit holen + struct tm* tm_time= localtime(&m_time) ; + strftime(dateStr,9,"%d.%m.%y" ,tm_time) ; + strftime(timeStr,9,"%H:%M:%S" ,tm_time) ; + + + ModuleResultBase *pRes =new ModuleResultBase() ; + + pRes->set("timestamp",jetzt); + pRes->set("uhrzeit",timeStr) ; + pRes->set("datum",dateStr) ; + pRes->set("servernamehex",m_serverNameHex); + pRes->set("channelnamehex",m_channelNameHex); + pRes->set("channelnum",convertIntToString(m_iChannelNum)); + + pRes->set("typ","pocsag"); + pRes->set("subhex",subString) ; + pRes->set("sub",std::string(Funktionsbit)) ; + pRes->set("ric",Adresse) ; + pRes->set("text",message) ; + + FILE_LOG(logDEBUG) << "Debug(POCSAG):" << endl << (*pRes) ; + + + GlobalDispatcher->addResult(pRes) ; + + // StoreResult(rx) ; +} + +unsigned int MonitorModulePocsag::syndrome(unsigned long data) +{ + unsigned long shreg = data >> 1; /* throw away parity bit */ + unsigned long mask = 1L << (BCH_N-1), coeff = BCH_POLY << (BCH_K-1); + int n = BCH_K; + + for(; n > 0; mask >>= 1, coeff >>= 1, n--) + if (shreg & mask) + shreg ^= coeff; + if (even_parity(data)) + shreg |= (1 << (BCH_N - BCH_K)); +// printf("BCH syndrome: data: %08lx syn: %08lx\n", data, shreg); + return shreg; +} + +unsigned char MonitorModulePocsag::even_parity(unsigned long data) +{ + unsigned int temp = data ^ (data >> 16); + + temp = temp ^ (temp >> 8); + temp = temp ^ (temp >> 4); + temp = temp ^ (temp >> 2); + temp = temp ^ (temp >> 1); + return temp & 1; +} + +bool MonitorModulePocsag::error_correction(unsigned long & rx_data) +{ + if (!syndrome(rx_data)) return true ; + if (!m_bErrorCorrection) return false ; + + if (rx_data==0) return false ; + + int bit1=0,bit2=0 ; + unsigned long mask1=1 , mask2 ; + + bit2=0 ; + mask2=1 ; + + // Im ersten Lauf alle Bit's einmal invertieren + // + do + { + rx_data ^= mask2 ; + if (!syndrome(rx_data)) return true ; + bit2++ ; + rx_data ^= mask2 ; + mask2 <<=1 ; + } while (bit2<31) ; + + // Offensichtlich bringt das invertieren eines Bits nichts, also versuchen 2 Bits + // zu invertieren + // + do + { // Das Bit laut Z?hler bit1 invertieren + // + rx_data ^= mask1 ; + if (!syndrome(rx_data)) return true ; + + bit2=bit1 ; + mask2= 1 ; + mask2 <<= bit2 ; + + do + { // Als zweites das Bit bit2 invertieren + // + rx_data ^= mask2 ; + if (!syndrome(rx_data)) return true ; + bit2++ ; + rx_data ^= mask2 ; + mask2 <<=1 ; + } while (bit2<32) ; + + bit1 ++ ; + rx_data ^= mask1 ; + mask1 <<=1 ; + } while (bit1 < 32) ; + + return false ; +} + +void MonitorModulePocsag::RotateString(std::string & buffer, struct rx *rx) +{ + unsigned long data = 0; + int datalen = 0; + unsigned char *bp = rx->buffer; + int len = rx->numnibbles; + + + unsigned char curchr; + const char *tstr; + bool ctrl=true ; + + while (len > 0) { + while (datalen < 7 && len > 0) { + if (len == 1) { + data = (data << 4) | ((*bp >> 4) & 0xf); + datalen += 4; + len = 0; + } else { + data = (data << 8) | *bp++; + datalen += 8; + len -= 2; + } + } + if (datalen < 7) + continue; + datalen -= 7; + /* 7-bit-Code, ein Shift left und revers: */ + curchr = ((data >> datalen) & 0x7f) << 1; + curchr = ((curchr & 0xf0) >> 4) | ((curchr & 0x0f) << 4); + curchr = ((curchr & 0xcc) >> 2) | ((curchr & 0x33) << 2); + curchr = ((curchr & 0xaa) >> 1) | ((curchr & 0x55) << 1); + tstr = translate_alpha(curchr); + if (tstr) { + /* Steuerzeichen ausgeben? */ + if (ctrl + || ((curchr & 0x58) == 0x58 && (curchr & 0x7) >= 3 && (curchr & 0x7) <= 5) + || curchr == 0x7e) { + buffer.append(tstr) ; + } + } + else { + buffer.append (1,curchr) ; + } + } +} + +void MonitorModulePocsag::StoreResult(struct rx *rx) +{ + + +} + +bool MonitorModulePocsag::isnumeric(rx *rx, std::string & message) +{ + // Keine Numeric-Kontrolle mehr ;-) + return false ; + +} + + +void MonitorModulePocsag::SetTrigger(float trigger) +{ + m_fTrigger=trigger ; +} + +bool MonitorModulePocsag::isSync(unsigned long rxdata) +{ + int counter_SYNC=0, counter_SYNCINFO=0 ; + /* ToDo: unsigned long / signed long sind auf 64Bit System (8 !) Byte gross statt 4 ! + * Deswegen vermutlich Fehler in der Sync-Detection ! + */ + unsigned long VergleichSYNC=POCSAG_SYNC ; + unsigned long VergleichSYNCINFO=POCSAG_SYNCINFO ; + + + if (!m_bErrorCorrection) + return (rxdata == POCSAG_SYNC || rxdata == POCSAG_SYNCINFO ) ; + + // Aha - Fehlerkorrektur gew?nscht + // + + for (int i=0; i < 32 ; i++) + { + if ( (rxdata & 0x1) == (VergleichSYNC & 0x1) ) + { + counter_SYNC++ ; + } ; + + if ( (rxdata & 0x1) == (VergleichSYNCINFO & 0x1) ) + { + counter_SYNCINFO++ ; + } ; + + VergleichSYNC >>= 1 ; + VergleichSYNCINFO >>= 1 ; + rxdata >>=1 ; + } + return ((counter_SYNC >30) || (counter_SYNCINFO>30)) ; +} diff --git a/monitord/MonitorModulePocsag.h b/monitord/MonitorModulePocsag.h new file mode 100644 index 0000000..01dda44 --- /dev/null +++ b/monitord/MonitorModulePocsag.h @@ -0,0 +1,140 @@ +/* MyMonModulePocsag.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ +#if !defined(AFX_MYMONMODULEPOCSAG_H__B679D6FA_C954_4D9C_BDBE_920B4374E572__INCLUDED_) +#define AFX_MYMONMODULEPOCSAG_H__B679D6FA_C954_4D9C_BDBE_920B4374E572__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +// -------------------------------------------- +// 1. POCDEBUG definieren +// 2. POCDEBUG512 oder POCDEBUG1200 definieren +// = Aufname der Audiodaten, des Schmitt-Triggers, des PD-Outputs und des regen. Taktsignals +// als RAW, 32Bit Float, Mono +// -------------------------------------------- + +//#define POCDEBUG +#ifdef POCDEBUG + // ACHTUNG ! Dateiname ist fest vorgegeben NUR EINE BAUDRATE DEBUGGEN ! + #define POCDEBUG1200 + //#define POCDEBUG512 +#endif + +#include "MonitorModules.h" +//#include "regexp.h" +#include "math.h" + +#define MAXSAMPLEVALUES 350 + +class MonitorModulePocsag : public MonitorModule +{ +public: + void SetTrigger(float trigger); + void demod(float *buffer, int length); + virtual void demod_se(float *buffer, int length); + virtual void demod_mg(float *buffer, int length); + + MonitorModulePocsag(); + virtual ~MonitorModulePocsag(); + + struct rx { + unsigned char rx_sync, rx_word, rx_bit, numnibbles; + char func; + unsigned long adr; + unsigned char buffer[128]; + int receiving; + // bool m_bRXmode ; + // int m_iPreambelLen + // bool m_bPreambel_detected ; + // COleDateTime m_dtPreambel_detected ; + } ; + +protected: + bool isSync(unsigned long rxdata); + float maxVal; + bool isnumeric(struct rx *rx, std::string & message); + int lastbit; + unsigned int dcd_shreg; + unsigned int sphase; + unsigned int subsamp; + int m_iReceivedBits; + int m_iAlgorithmus; + + // -- Fier SE demod Algorithmus + float m_fTrigger; // Schmitt-Trigger Grenzwert + float m_fPLLFaktor; // Max. "Geschwindigkeitsnderung des PLL + int m_lastVal[50] ; // letzte Werte fr Edgedetektor, Laenge = ? + int Ud ; // Ausgang Phasendetektor + int Udiff ; // "Differenziertes Eingangssignal" + bool didBit ; // Fr aktuelle Tankwelle ein Bit schon empfagen (fallend Flanke im Taksignal) + int Uphase ; // Taktsignal selbst (1 oder -1) + int lastUdiff ;// Fr Schmitt-Trigger + int SPHASEINC_BASE; + + bool m_negativeCorrection; //Kennzeichner ob SPAHASE ins positive oder ins negative korrigiert werden muss + + // Debugging: + #ifdef POCDEBUG + FILE *debugFile1, *debugFile2, *debugFile3, *debugFile4; + float fileBuffer1[50000],fileBuffer2[50000], fileBuffer3[50000] ; + float *pBuffer1, *pBuffer2, *pBuffer3 ; + long bufferLen1,bufferLen2, bufferLen3 ; + #endif + + + void StoreResult(struct rx *rx); + void RotateString(std::string & buffer,struct rx *rx) ; + + bool m_bRXmode; + int m_iRXErrorCount ; + int m_iPreambelLen ; + bool m_bErrorCorrection; + int PREAMBEL_MINLEN ; + int MAX_RX_ERRORS ; + //COleDateTime m_dtPreambel_detected; + bool m_bPreambel_detected; + bool error_correction(unsigned long & rx_data); + unsigned int SPHASEINC ; + unsigned long global_rx_data; + // unsigned short ctrl; + struct rx rx_buff[2] ; + + static inline unsigned char even_parity(unsigned long data); + unsigned int syndrome(unsigned long data); + void printmessage(struct rx *rx); + void do_one_bit(struct rx *rx, unsigned long rx_data); + void rxbit(int bit); +}; + +#endif // !defined(AFX_MYMONMODULEPOCSAG_H__B679D6FA_C954_4D9C_BDBE_920B4374E572__INCLUDED_) diff --git a/monitord/MonitorModulePocsag1200.cpp b/monitord/MonitorModulePocsag1200.cpp new file mode 100644 index 0000000..2729423 --- /dev/null +++ b/monitord/MonitorModulePocsag1200.cpp @@ -0,0 +1,345 @@ +/* MyMonModulesPocsag1200.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +// MyMonModulePocsag1200.cpp: Implementierung der Klasse MonitorModulePocsag1200. +// +////////////////////////////////////////////////////////////////////// + + +#include "MonitorModulePocsag1200.h" + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define BAUD 1200 +// es wird nur jedes x-te Sample ausgewertet (Auch PLLFaktor und Detektorbreite anpassen) +#define SUBSAMP 2 +// max. Prozent-�nderungen Frq.-�nderung am PLL +// und Schmitt-Trigger +// und Breite der Rechtecke des Flankendetektors +// +#define PLLFaktor (5.0/100.0) +#define SchmittTriggerLevel (0.05/1000.0) +#define DETEKTOR_BREITE 7 + + +#define FILTLEN 1 + +#define GRENZWERT 0.3 + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModulePocsag1200::MonitorModulePocsag1200(XMLNode *pConfig) +{ + int sampleRate=22050 ; + bool crccheck=getNodeBool(*pConfig,"crc-check",true) ; + bool errorcorrection=getNodeBool(*pConfig,"ecc",false) ; + int minpreambel=getNodeInt(*pConfig,"minpreambel",0) ; + int maxerrors=getNodeInt(*pConfig,"maxerrors",0) ; + int algorithmus=getNodeInt(*pConfig,"algorithm",0) ; + MonitorModulePocsag1200( sampleRate, + crccheck, + errorcorrection, + minpreambel, + maxerrors, + algorithmus); + +} + +MonitorModulePocsag1200::MonitorModulePocsag1200(int sampleRate, bool crccheck, bool errorcorrection, int minpreambel, int maxerrors, int algorithmus) +{ + m_bErrorCorrection=errorcorrection ; + // m_bCRCCheck=crccheck ; + MAX_RX_ERRORS=maxerrors ; + PREAMBEL_MINLEN=minpreambel ; + + m_iAlgorithmus=algorithmus ; + //m_iAlgorithmus=1; + + FREQ_SAMP=sampleRate ; + + + SPHASEINC=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + SPHASEINC_BASE=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + m_lpszName="POC 1200" ; + + m_fPLLFaktor=PLLFaktor ; // max. Prozent-�nderungen Frq.-�nderung am PLL + m_fTrigger=SchmittTriggerLevel ; + // debugging + + #ifdef POCDEBUG1200 + debugFile1 = fopen("_in.raw", "wb"); + debugFile2 = fopen("_sphase.raw", "wb"); + debugFile3 = fopen("_trigger.raw", "wb"); + debugFile4 = fopen("_rx.raw", "wb"); + #endif +} + +MonitorModulePocsag1200::~MonitorModulePocsag1200() +{ + #ifdef POCDEBUG1200 + fclose(debugFile1) ; + fclose(debugFile2) ; + fclose(debugFile3) ; + fclose(debugFile4) ; + #endif +} + +void MonitorModulePocsag1200::demod(float *buffer, int length) +{ + switch (m_iAlgorithmus) + { + case 0: + demod_mg(buffer, length) ; // war demod_se ... + break ; + case 1: + demod_se(buffer, length) ; // war demod_se ... + break ; + default: + demod_mg(buffer, length) ; + } ; +} + + +void MonitorModulePocsag1200::demod_se(float *buffer, int length) +{ + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + + + #ifdef POCDEBUG1200 + // Startwerte + fwrite(buffer, sizeof(float), length,debugFile1); + pBuffer1=fileBuffer1 ; + pBuffer2=fileBuffer2 ; + pBuffer3=fileBuffer3 ; + bufferLen1=0 ; + bufferLen2=0 ; + bufferLen3=0 ; + #endif + + + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + + + //m_LastFilterVal= m_weight * ((double)(*buffer)) + ( 1.0 - m_weight ) * m_LastFilterVal; + + //m_LastFilterVal= m_LastFilterVal + (m_weight * ( ((double)(*buffer)) - m_LastFilterVal)) ; + + // m_LastFilterVal=*buffer ; + + + // Mit einem Schmitt-Trigger die Flanken ansteilen und Rauschen + // Eliminieren + // + if (lastbit==0) + { + if ((*buffer) > m_fTrigger) + { + lastbit=1; + } ; + } else { + if ((*buffer) < -m_fTrigger) + { + lastbit=0; + } ; + } ; + + dcd_shreg |= (lastbit==1 ? 1 : 0) ; + //dcd_shreg |= lastbit; + + for (int ming=40;ming>0;ming--) + { + m_lastVal[ming] = m_lastVal[ming-1] ; + } + + m_lastVal[0] = lastbit ; + + if ((m_lastVal[0] + m_lastVal[DETEKTOR_BREITE]) == 1 ) + //if ( ((dcd_shreg >>9) &0x01) ^ (dcd_shreg & 0x01)) // Flankendetektor + { + Udiff=1 ; + } + else + { + Udiff=0 ; + } + + // Udiff = Eingang zum PD + // + // PD ist ein Exor -> + // SPHASE 0...0x8000 = positive Halbwelle (1) + // SPHASE 0x8000...0x10000 = negative Halbwelle (0) + // 0x8 ist die H�lfte von 0x10 -> Hexadezimal !! :) + + // text darueber ist wertlos + // 0x0000 ... 0xFFFF: Beschreibt ein Bit (eine HALBwelle) + //--> 0x8000 ist der Punk im Rechteck genau zwischen zwei Flanken (zumindest bei der Pr�ambel) + + + if (sphase <= 0x8000) + { + Uphase=1 ; + } else + { + Uphase=0 ; + } + + if (Udiff > lastUdiff) + { + // Flanke im Schmitt-Trigger (u1) + //ah + if (sphase >0x8000) + { + //sphase is too slow + Ud= (0x10000-sphase) ; + m_negativeCorrection = false; + } else + { + //sphase is too fast + Ud = sphase ; + m_negativeCorrection = true; + } + } + + if(m_negativeCorrection) + SPHASEINC=(unsigned int) (( (double) SPHASEINC_BASE) * (1.0 - ( m_fPLLFaktor*Ud)/0x8000 )) ; + else + SPHASEINC=(unsigned int) (( (double) SPHASEINC_BASE) * (1.0 + ( m_fPLLFaktor*Ud)/0x8000 )) ; + + //Ud=(Ud*99) /100 ; + sphase += SPHASEINC ; + + lastUdiff = Udiff ; + //lastUphase = Uphase ; + + #ifdef POCDEBUG1200 + //*pBuffer1=Uphase*0.75 ; + //*pBuffer2=Udiff*0.75 ; + //*pBuffer3=(Ud*0.75)/0x8000 ; + //*pBuffer3=m_LastFilterVal ; + //*pBuffer1 = (*buffer); + *pBuffer1 = ((sphase) * 0.5) / 0x10000; + *pBuffer2 = (lastbit==1 ? 0.5 : -0.5); + //*pBuffer3 = 0.0f; + *pBuffer3 = Ud / 0x8000; + + + //if ((rx_buff+1)->rx_sync) // inSync + //{ + //*pBuffer2=Udiff*0.45+0.5 ; + //} + pBuffer1++ ; + pBuffer2++ ; + pBuffer3++ ; + bufferLen1++ ; + bufferLen2++ ; + bufferLen3++ ; + #endif + + + if ((sphase>=0x8000u) && (didBit==false)) + { + #ifdef POCDEBUG1200 + //*(pBuffer2-1)=-0.3 - 0.3*lastbit ; + //*(pBuffer2-1)= -1.0; + #endif + rxbit( lastbit ) ; + didBit = true ; + } + + if (sphase>=0x10000u) + { + // FILE_LOG(logINFO) << "sphase:" << sphase << " -> " << (sphase & (0xffff)) ; + sphase = sphase & 0xffff ; + didBit = false ; + } + + + } + + #ifdef POCDEBUG1200 + fwrite(fileBuffer1, sizeof(float), bufferLen1,debugFile2); + fwrite(fileBuffer2, sizeof(float), bufferLen2,debugFile3); + fwrite(fileBuffer3, sizeof(float), bufferLen3,debugFile4); + #endif + subsamp = length; +} + + + + +// ------------------ old version ------------------------- + +void MonitorModulePocsag1200::demod_mg(float *buffer, int length) +{ + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + dcd_shreg |= ((*buffer) > 0); + + // check if transition + if ((dcd_shreg ^ (dcd_shreg >> 1)) & 1) { + if (sphase < (0x8000u - (SPHASEINC / 2))) + sphase += SPHASEINC / 8; + else + sphase -= SPHASEINC / 8; + } + sphase += SPHASEINC; + + if (sphase >= 0x10000u) { + sphase &= 0xffffu; + rxbit(dcd_shreg & 1); + } + } + subsamp = length; +} diff --git a/monitord/MonitorModulePocsag1200.h b/monitord/MonitorModulePocsag1200.h new file mode 100644 index 0000000..c4a5fc5 --- /dev/null +++ b/monitord/MonitorModulePocsag1200.h @@ -0,0 +1,58 @@ +/* MyMonModulesPocsag1200.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */// MyMonModulePocsag1200.h: Schnittstelle f�r die Klasse MonitorModulePocsag1200. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MYMONMODULEPOCSAG1200_H__572ACD5B_3877_41FC_9C6B_1073970E7100__INCLUDED_) +#define AFX_MYMONMODULEPOCSAG1200_H__572ACD5B_3877_41FC_9C6B_1073970E7100__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "MonitorModulePocsag.h" + +class MonitorModulePocsag1200 : public MonitorModulePocsag +{ +public: + virtual void demod_se(float *buffer, int length); + virtual void demod_mg(float *buffer, int length); + MonitorModulePocsag1200(int sampleRate=22050, bool crcheck=true, bool errorcorrection=true, int minpreambel=300, int maxerrors=10, int algorithmus=1) ; + MonitorModulePocsag1200(XMLNode *pConfig); + virtual ~MonitorModulePocsag1200(); + void demod(float *buffer, int length) ; +protected: + +}; + +#endif // !defined(AFX_MYMONMODULEPOCSAG1200_H__572ACD5B_3877_41FC_9C6B_1073970E7100__INCLUDED_) diff --git a/monitord/MonitorModulePocsag512.cpp b/monitord/MonitorModulePocsag512.cpp new file mode 100644 index 0000000..b6bb6f0 --- /dev/null +++ b/monitord/MonitorModulePocsag512.cpp @@ -0,0 +1,374 @@ +// MyMonModulesPocsag512.cpp: Implementierung der Klasse CMyMonModulesPocsag512. +// +////////////////////////////////////////////////////////////////////// + + +#include "MonitorModulePocsag512.h" + + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#define BAUD 512 +//#define POC512SUBSAMP 1 +// es wird nur jedes x-te Sample ausgewertet (Auch PLLFaktor und Detektorbreite anpassen) +#define SUBSAMP 1 +// max. Prozent-�nderungen Frq.-�nderung am PLL +// und Schmitt-Trigger +// und Breite der Rechtecke des Flankendetektors +// 1.0 ,0 ,7 - ganz gut +// 0.3 , 0.0001 , 7 - gut +// 0.1 , 0.0001 , 7 - ? +// 0.15 , 0.0001, 3 - schaut gut aus +#define PLLFaktor (0.25/100.0) +#define SchmittTriggerLevel (0.0000) +#define DETEKTOR_BREITE 5 +// war SUBSAMP = 5 + + +/* ---------------------------------------------------------------------- */ + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModulePocsag512::MonitorModulePocsag512(int sampleRate,XMLNode *pConfig) +{ + bool crccheck=getNodeBool(*pConfig,"crc-check",true) ; + bool errorcorrection=getNodeBool(*pConfig,"ecc",false) ; + int minpreambel=getNodeInt(*pConfig,"minpreambel",300) ; + int maxerrors=getNodeInt(*pConfig,"maxerrors",10) ; + int algorithmus=getNodeInt(*pConfig,"algorithm",1) ; + FILE_LOG(logINFO) << "(1) sample - crc - ecc - minpreambel - maxerrors - algo:" + << sampleRate << " - " + << crccheck << " - " + << errorcorrection << " - " + << minpreambel << " - " + << maxerrors << " - " + << algorithmus ; + + MonitorModulePocsag512(sampleRate,1,0) ; + /* + MonitorModulePocsag512( sampleRate, + crccheck == true ? 1:0 , + errorcorrection== true ? 1:0, + minpreambel, + maxerrors, + algorithmus); + */ +} + +MonitorModulePocsag512::MonitorModulePocsag512(int sampleRate, bool crccheck, bool errorcorrection, int minpreambel, int maxerrors, int algorithmus) +{ + FILE_LOG(logINFO) << "(2) sample - crc - ecc - minpreambel - maxerrors - algo:" + << sampleRate << " - " + << crccheck << " - " + << errorcorrection << " - " + << minpreambel << " - " + << maxerrors << " - " + << algorithmus ; + m_bErrorCorrection=errorcorrection ; + + MAX_RX_ERRORS=maxerrors ; + PREAMBEL_MINLEN=minpreambel ; + + m_iAlgorithmus=algorithmus ; + FILE_LOG(logINFO) << "Algorithmus:" << m_iAlgorithmus ; + + FREQ_SAMP=sampleRate ; + + SPHASEINC=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + SPHASEINC_BASE=(0x10000u * BAUD * SUBSAMP) / FREQ_SAMP ; + + FILE_LOG(logINFO) << "SPHASE_INC is:" << SPHASEINC_BASE ; + m_lpszName="POC 512" ; + + m_fPLLFaktor=PLLFaktor ; // max. Prozent-�nderungen Frq.-�nderung am PLL + m_fTrigger=SchmittTriggerLevel ; + // debugging + + #ifdef POCDEBUG512 + debugFile1 = fopen("_in.raw", "wb"); + debugFile2 = fopen("_takt.raw", "wb"); + debugFile3 = fopen("_trigger.raw", "wb"); + debugFile4 = fopen("_pfd.raw", "wb"); + #endif + + set_filters(1200,1800,BAUD); +} + +MonitorModulePocsag512::~MonitorModulePocsag512() +{ + #ifdef POCDEBUG512 + fclose(debugFile1) ; + fclose(debugFile2) ; + fclose(debugFile3) ; + fclose(debugFile4) ; + #endif +} + + +void MonitorModulePocsag512::demod_se(float *buffer, int length) +{ + double y ; + + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + + + #ifdef POCDEBUG512 + // Startwerte + fwrite(buffer, sizeof(float), length,debugFile1); + pBuffer1=fileBuffer1 ; + pBuffer2=fileBuffer2 ; + pBuffer3=fileBuffer3 ; + bufferLen1=0 ; + bufferLen2=0 ; + bufferLen3=0 ; + #endif + + + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + + // Mit einem Schmitt-Trigger die Flanken ansteilen und Rauschen + // Eliminieren + // + if (lastbit==0) + { + if ((*buffer) > m_fTrigger) + { + lastbit=1; + } ; + } else { + if ((*buffer) < -m_fTrigger) + { + lastbit=0; + } ; + } ; + + y=biq_lp(biq_lp( (lastbit==1? 1.0:-1.0) ,lp1_c,lp1_b),lp2_c,lp2_b); + + //dcd_shreg |= (lastbit==1 ? 1 : 0) ; + lastbit= (y>0 ? 1:0) ; + dcd_shreg |= (lastbit==1 ? 1 : 0) ; + + for (int ming=40;ming>0;ming--) + { + m_lastVal[ming] = m_lastVal[ming-1] ; + } + + m_lastVal[0] = lastbit ; + + if ((m_lastVal[0] + m_lastVal[DETEKTOR_BREITE]) == 1 ) + //if ( ((dcd_shreg >>9) &0x01) ^ (dcd_shreg & 0x01)) // Flankendetektor + { + Udiff=1 ; + } + else + { + Udiff=0 ; + } + + // Udiff = Eingang zum PD + // + // PD ist ein Exor -> + // SPHASE 0...0x8000 = positive Halbwelle (1) + // SPHASE 0x8000...0x10000 = negative Halbwelle (0) + // 0x8 ist die H�lfte von 0x10 -> Hexadezimal !! :) + + + if (sphase <= 0x8000) + { + Uphase=1 ; + } else + { + Uphase=0 ; + } + + + if (Udiff > lastUdiff) + { + // Flanke im Schmitt-Trigger (u1) + if (sphase >0x8000) + { + Ud= (0x10000-sphase) ; + } else + { + Ud = sphase ; + } + } + + #ifdef POCDEBUG512 + *pBuffer1=Uphase*0.75 ; + *pBuffer2=Udiff*0.75 ; + *pBuffer3=(Ud*0.75)/0x8000 ; + //*pBuffer3=m_LastFilterVal ; + + if ((rx_buff+1)->rx_sync) // inSync + { + *pBuffer2=Udiff*0.45+0.5 ; + } + pBuffer1++ ; + pBuffer2++ ; + pBuffer3++ ; + bufferLen1++ ; + bufferLen2++ ; + bufferLen3++ ; + #endif + + + SPHASEINC=(unsigned int) (( (double) SPHASEINC_BASE) * (1.0 + ( m_fPLLFaktor*Ud)/0x8000 )) ; + sphase += SPHASEINC ; + + lastUdiff = Udiff ; + + if ((sphase>=0x8000u) && (didBit==false)) + { + #ifdef POCDEBUG512 + *(pBuffer2-1)=-0.3 - 0.3*lastbit ; + #endif + rxbit( lastbit ) ; + didBit = true ; + } + + if (sphase>=0x10000u) + { + // FILE_LOG(logINFO) << "sphase:" << sphase << " -> " << (sphase & (0xffff)) ; + sphase = sphase & 0xffffu ; + didBit = false ; + } + } + + #ifdef POCDEBUG512 + + fwrite(fileBuffer1, sizeof(float), bufferLen1,debugFile2); + fwrite(fileBuffer2, sizeof(float), bufferLen2,debugFile3); + fwrite(fileBuffer3, sizeof(float), bufferLen3,debugFile4); + #endif + subsamp = length; +} + + +// --------- old function ----------- +void MonitorModulePocsag512::demod_mg(float *buffer, int length) +{ + if (subsamp) { + int numfill = SUBSAMP - subsamp; + if (length < numfill) { + subsamp += length; + return; + } + buffer += numfill; + length -= numfill; + subsamp = 0; + } + for (; length >= SUBSAMP; length -= SUBSAMP, buffer += SUBSAMP) { + dcd_shreg <<= 1; + dcd_shreg |= ((*buffer) > 0); + + // check if transition + if ((dcd_shreg ^ (dcd_shreg >> 1)) & 1) { + if (sphase < (0x8000u - (SPHASEINC / 2))) + sphase += SPHASEINC / 8; + else + sphase -= SPHASEINC / 8; + } + sphase += SPHASEINC; + + if (sphase >= 0x10000u) { + sphase &= 0xffffu; + rxbit(dcd_shreg & 1); + } + } + subsamp = length; +} + + +// ********************************************************* +// ** IIR Filter +// ********************************************************* + +inline float MonitorModulePocsag512::biq_lp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x+buf[0]+buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModulePocsag512::biq_bp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +inline float MonitorModulePocsag512::biq_hp(float x, float *pcoef, float *buf) +{ + float y; + y =(*pcoef++)*(x-buf[0]-buf[0]+buf[1]); + y+=(*pcoef++)*buf[2]; + y+=(*pcoef)*buf[3]; + + buf[1]=buf[0]; buf[0]=x; + buf[3]=buf[2]; buf[2]=y; + + return y; +} + +void MonitorModulePocsag512::gen_coef(int tipo, float f0, float Q, float *pcoef) +{ + float w0,a,d; + + w0=2.*M_PI*f0; + + //Prewharping + w0=2.0*FREQ_SAMP*tan(w0/FREQ_SAMP/2.0); + + a=FREQ_SAMP/w0; + d=4.*a*a +2.*a/Q +1.; + + switch(tipo){ + case 0: (*pcoef++)=1.0/d; break; + case 1: (*pcoef++)=2.*a/Q/d; break; + case 2: (*pcoef++)=4.*a*a/d; break; + } + + (*pcoef++)=(8.*a*a -2.)/d; + (*pcoef++)=-(4.*a*a -2.*a/Q +1.)/d; +} + +void MonitorModulePocsag512::set_filters(float f0, float f1, float dr) +{ + gen_coef(1,f0,f0/dr/2.0,bp0_c); /* Space filter */ + gen_coef(1,f1,f1/dr/2.0,bp1_c); /* Mark filter */ + gen_coef(0,dr,0.5412,lp1_c); /* Low-Pass order-4 Butt. filter */ + gen_coef(0,dr,1.3066,lp2_c); + + for (int i=0;i<4;i++) lp1_b[i]=lp2_b[i]=bp0_b[i]=bp1_b[i]=0.0; +} + + diff --git a/monitord/MonitorModulePocsag512.h b/monitord/MonitorModulePocsag512.h new file mode 100644 index 0000000..f5262a7 --- /dev/null +++ b/monitord/MonitorModulePocsag512.h @@ -0,0 +1,74 @@ +/* MyMonModulesPocsag512.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ +// MyMonModulesPocsag512.h: Schnittstelle f�r die Klasse CMyMonModulesPocsag512. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_MYMONMODULESPOCSAG512_H__EC75A96B_A1A1_4806_948A_A60F8A0503D6__INCLUDED_) +#define AFX_MYMONMODULESPOCSAG512_H__EC75A96B_A1A1_4806_948A_A60F8A0503D6__INCLUDED_ + + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +#include "MonitorModulePocsag.h" + +class MonitorModulePocsag512 : public MonitorModulePocsag +{ +public: + virtual void demod_se(float *buffer, int length); + virtual void demod_mg(float *buffer, int length); + MonitorModulePocsag512(int SampleRate=22050, bool crcheck=true, bool errorcorrection=true, int minpreambel=300, int maxerrors=10, int algorithmus=1); + MonitorModulePocsag512(int SampleRate, XMLNode *pConfig); + virtual ~MonitorModulePocsag512(); + +protected: + /******************************************************* + Decoder Variables & Coef. calculation + *******************************************************/ + float lp1_c[3],lp2_c[3],bp0_c[3],bp1_c[3]; + float lp1_b[4],lp2_b[4],bp0_b[4],bp1_b[4]; + + void set_filters(float f0, float f1, float dr); + void gen_coef(int tipo, float f0, float Q, float *pcoef); + float biq_hp(float x,float *pcoef,float *buf); + float biq_bp(float x,float *pcoef,float *buf); + float biq_lp(float x,float *pcoef,float *buf); + + + +}; + +#endif // !defined(AFX_MYMONMODULESPOCSAG512_H__EC75A96B_A1A1_4806_948A_A60F8A0503D6__INCLUDED_) diff --git a/monitord/MonitorModuleZVEI.cpp b/monitord/MonitorModuleZVEI.cpp new file mode 100644 index 0000000..2a33cac --- /dev/null +++ b/monitord/MonitorModuleZVEI.cpp @@ -0,0 +1,715 @@ +// MyMonModuleZVEI.cpp: Implementierung der Klasse MonitorModuleZVEI. +// +// Edited 02/2007 - demod rewritten, fully functional but to be tested "in the wild": +// Martin Diedrich (martin@mdiedrich.de) +////////////////////////////////////////////////////////////////////// + +#include +#include +#include "math.h" +#include "time.h" +#include "convert.h" + +#include "MonitorModuleZVEI.h" +#include "MonitorLogging.h" + +using namespace std; + +#ifdef WIN32 + #include + #include + #include +#endif + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + +#ifdef WIN32 +#ifndef M_PI +const float M_PI = 3.14159265358979 ; +#endif +#endif + +#define COS(x) costabf[(((x) >> 6) & 0x3ffu)] +#define SIN(x) COS((x) + 0xc000) +#define BLOCKNUM 4 + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +int MonitorModuleZVEI::PHINC(int x) +{ + return (x * 0x10000 / FREQ_SAMP) ; +} + +/** + * @brief constructor, initializing most of our little ZVEI universe ;) + * @param sampleRate sample rate of data from soundcard to be analyzed by demod() + */ +MonitorModuleZVEI::MonitorModuleZVEI(int sampleRate,XMLNode* pConfig) +{ + unsigned int i ; + + debugmodus = getNodeInt(*pConfig,"debugmodus",0); + int gm900 = getNodeInt(*pConfig,"gm900",0); // ONLY FOR GM900 AT FHD OSTERODE + squelch = getNodeInt(*pConfig,"squelch",51); + squelch = squelch/100; + + m_lpszName="ZVEI" ; + + FREQ_SAMP=sampleRate ; + BLOCKLEN=sampleRate / 100 ; + + // Definition der zu betrachtenden Frequenzen + zvei_freq[0]=PHINC(2400) ; // Ziffer 0 + if(gm900 == 1) { + zvei_freq[0]=PHINC(2410) ; // Ziffer 0 for slightly too high tone by motorola gm900 in use at fhd osterode + } + zvei_freq[1]=PHINC(1060) ; // Ziffer 1 + zvei_freq[2]=PHINC(1160) ; // Ziffer 2 + zvei_freq[3]=PHINC(1270) ; // Ziffer 3 + zvei_freq[4]=PHINC(1400) ; // Ziffer 4 + zvei_freq[5]=PHINC(1530) ; // Ziffer 5 + zvei_freq[6]=PHINC(1670) ; // Ziffer 6 + zvei_freq[7]=PHINC(1830) ; // Ziffer 7 + zvei_freq[8]=PHINC(2000) ; // Ziffer 8 + zvei_freq[9]=PHINC(2200) ; // Ziffer 9 + zvei_freq[10]=PHINC(2800) ; // A = N / Spezialfall Gruppenruf + zvei_freq[11]=PHINC(810) ; // C + zvei_freq[12]=PHINC(675) ; // Sirenendoppelton I + zvei_freq[13]=PHINC(1240) ; // Sirenendoppelton II + zvei_freq[14]=PHINC(2600) ; // E = W (Wiederholungs- und Melderweckton) + zvei_freq[15]=PHINC(0) ; // Stille/Rauschen/keine eindeutige Frequenz + zvei_freq[16]=PHINC(1860) ; // Sirenendoppelton III + zvei_freq[17]=PHINC(825) ; // Sirenendoppelton IV + zvei_freq[18]=PHINC(2280) ; // Sirenendoppelton V + zvei_freq[19]=PHINC(1010) ; // Sirenendoppelton VI + + // Definition der zu betrachtenden Frequenzen + zvei_character[0]='0' ; // Ziffer 0 + zvei_character[1]='1' ; // Ziffer 1 + zvei_character[2]='2' ; // Ziffer 2 + zvei_character[3]='3' ; // Ziffer 3 + zvei_character[4]='4' ; // Ziffer 4 + zvei_character[5]='5' ; // Ziffer 5 + zvei_character[6]='6' ; // Ziffer 6 + zvei_character[7]='7' ; // Ziffer 7 + zvei_character[8]='8' ; // Ziffer 8 + zvei_character[9]='9' ; // Ziffer 9 + zvei_character[10]='A' ; // A = N / Spezialfall Gruppenruf + zvei_character[11]='C' ; // C + zvei_character[12]='S' ; // Sirenendoppelton I + zvei_character[13]='S' ; // Sirenendoppelton II + zvei_character[14]='W' ; // E = W (Wiederholungs- und Melderweckton) + zvei_character[15]='-' ; // Stille/Rauschen/keine eindeutige Frequenz + zvei_character[16]='S' ; // Sirenendoppelton III + zvei_character[17]='S' ; // Sirenendoppelton IV + zvei_character[18]='S' ; // Sirenendoppelton V + zvei_character[19]='S' ; // Sirenendoppelton VI + + // initializing our matrixes -> zeroing + for (i=0; i <= sizeof(zvei_freq)/sizeof(zvei_freq[0]); i++) { + ph[i]=0; + } + for (i=0; i < 4 ;i++) { + energy[i]=0; + } + for (i=0; i< 4; i++) { + for (unsigned int j=0; j <= 2*sizeof(zvei_freq)/sizeof(zvei_freq[0]); j++) { + tenergy[i][j]=0; + } + } + + blkcount=0 ; + + folge_position = 0; // gibt die aktuelle Position bei der Erkennung an, in gewisser Weise der "Zustandsautomat" + timeout = 0; // Zu lange Pause nach Tonfolge -> triggert Ausgabe und Resets + pause_length = 0; // Laenge der bisher gemessenen Pause, reset bei 100 + tone_count = 0; // wie oft wurde der ton erkannt? + seven_count = 0; + siren_count = 0; + maxlength = sizeof(zvei_folge)/sizeof(zvei_folge[0]); // Laenge der n-Tonfolge. Normalerweise 5. Es gab einen Request fuer 7. + + /* + * Format des Arrays fount_tones: + * [0] - energiereichste Frequenz, [1] - zweitenergier. Freq., [2] - drittenergier. Freq., [3] - Energie I, [4] - Energie II - [5] - Energie III, + * [6] - Totale Energie; damit stehen drei Toene und Energien zur Verfuegung fuer Auswertung und Filter + */ + found_tones = new int[7]; // Rueckgabe der process_block()-Methode + for (i=0; i < 7; i++) { + for(int j=0; j<7; j++) { + detected_seven[i][j] = -1; + } + } + + for(i=0; i < maxlength; i++) { + zvei_folge[i] = -2; + } + + for (i = 0; i < COSTABSIZE; i++) { + costabf[i] = (float) cos(M_PI*2.0*i/COSTABSIZE); + } + +} + +MonitorModuleZVEI::~MonitorModuleZVEI() +{ + +} + +/** + * @brief demodulates raw sounddata from card to ZVEI-Tonfolgen + * @param buffer pointer to sound buffer + * @param length length of that buffer + * @author Martin Diedrich (mdi) + * @date 11/2007 + */ +void MonitorModuleZVEI::demod(float *buffer, int length) +{ + unsigned int i ; + float s_in=0; + short int last_zvei_last_character = -2; + + // uebernommen aus dem vorherigen code + for (; length > 0; length--, buffer++) { + s_in = *buffer; + energy[0] += fsqr(s_in); + + +/* Berechnen und Aufaddieren der Spalte 0 der tenergy-Matrix + * mit 220 (BLOCKLEN) aufeinanderfolgenden Bufferwerten: + * Zeilen 0-17: Cos-Werte, Zeilen 18-35: Sin-Werte */ + for (i = 0; i < sizeof(zvei_freq)/sizeof(zvei_freq[0]); i++) { + tenergy[0][i] += COS(ph[i]) * s_in; + tenergy[0][i + sizeof(zvei_freq)/sizeof(zvei_freq[0])] += SIN(ph[i]) * s_in; + ph[i] += zvei_freq[i]; + } + + if ((blkcount--) <= 0) { + blkcount = BLOCKLEN; + found_tones = process_block(found_tones); + + memcpy(detected_seven[seven_count], found_tones, sizeof(int)*7); + + int f = fuzzyseven(); + + if( debugmodus > 5 && ((f >= 0 && f <= 11) || f == 14)) { + cout << " -> " << f << " -> " << zvei_character[f] << endl; + } + + // ZVEI digit or repeating tone found, not end of ZVEI quintett + if(((f >= 0 && f <= 11) || f == 14) && folge_position != maxlength) { + if(folge_position != 0) { + if(f != zvei_folge[folge_position-1]) { + zvei_folge[folge_position] = f; + folge_position++; + } + } else { + zvei_folge[folge_position] = f; + folge_position++; + } + pause_length = 0; + } + + // wakeup found shortly before maximum pause time + if(f == 14 && folge_position == maxlength && pause_length > 52) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i<5; i++) { + cout << (zvei_folge[i] == 14 ? zvei_folge[(i+(maxlength-1))%maxlength] : zvei_folge[i]); + } + cout << " (Melderausloesung)" << endl << endl; + } + std::string numString=""; + for(unsigned int counter=0;counter 5) { + cout << " Pause: " << pause_length; + } + } + + // waiting for siren or wakeup - or reacting on timeout + if ((f == 15 || f == -1) && folge_position == maxlength ) { + pause_length++; + if(debugmodus > 5) { + cout << " Pause: " << pause_length; + } + if(pause_length == 64) { // timeout + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i 20) { + if(zvei_ok()) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i= 0 && f <= 11) || f == 14) && folge_position == maxlength && zvei_ok() && (zvei_folge[4] != f || pause_length > 10 )) { + if(debugmodus > 2) { + cout << endl; + for(i=0; i%8.5f\t1->%8.5f\t2->%8.5f\n3->%8.5f\t4->%8.5f\t5->%8.5f\n6->%8.5f\t7->%8.5f\t" + "8->%8.5f\n9->%8.5f\t10(2800)->%8.5f\t11(810)->%8.5f\n12(675)->%8.5f\t13(1240)->%8.5f\t14(w)->%8.5f\n15(NULL)->%8.5f\t16(1860)->%8.5f\t17(825)->%8.5f\n18(2280)->%8.5f\t19(1010)->%8.5f\n\n", + tote, totte[0], totte[1], totte[2], totte[3], totte[4], totte[5], totte[6], totte[7], + totte[8], totte[9], totte[10], totte[11], totte[12], totte[13], totte[14], totte[15], totte[16], totte[17], totte[18], totte[19]); + } + + if(debugmodus > 9) { //DEBUG, USE WITH CAUTION, generates possibly big logfile on long runtime! + ofstream outfile; + outfile.open ("freq_dmp.txt", ios_base::app); + outfile << tote << "|"; + for(unsigned int count = 0; count < sizeof(zvei_freq)/sizeof(zvei_freq[0]); count++) { + outfile << (int)totte[count] << "|"; + } + outfile << endl; + outfile.close(); + } + + // kein groesster index gefunden -> -1 zurueckgeben + /*if ((i = find_max_index(totte, -1, -1)) < 0) { + //return -1; + } */ + + found_tones[0] = find_max_index(totte, -1, -1); // groesste Energie + found_tones[1] = find_max_index(totte, found_tones[0], -1); // zweitgroesste Energie + found_tones[2] = find_max_index(totte, found_tones[0], found_tones[1]); // drittgroesste Energie + found_tones[3] = (int) totte[found_tones[0]]; // Energie I + found_tones[4] = (int) totte[found_tones[1]]; // Energie II + found_tones[5] = (int) totte[found_tones[2]]; // Energie III + found_tones[6] = (int) tote; // Total Energie + + if(false) { // DEBUG + cout << "process_block/found_tones: " << endl; + cout << found_tones[0] << " -> " << totte[found_tones[0]] << ", " << found_tones[1] << " -> " << totte[found_tones[1]] << ", " << found_tones[2] << " -> " << totte[found_tones[2]] << endl; + cout << found_tones[3] << ", " << found_tones[4] << ", " << "Squelch: " << (squelch * found_tones[6]) << " (" << (found_tones[3] > (squelch * found_tones[6])) << ")" << endl << endl; + } + + if(false) { // DEBUG + cout << "Tone index: " << found_tones[0] << " above squelch: " << (found_tones[3] > (squelch * found_tones[6])) << endl; + } + + // Energielevel passen nicht (hier ist der Energielevel des gefundenen Tons kleiner als 40% der Gesamtenergie, zu geringer Rauschabstand) + //if ((tote * 0.4) > totte[index1]) return -1; + + return found_tones; +} + +/** + * @brief finds maximum energy from energies matrix given by MonitorModuleZVEI::process_block() + * @param totte energies matrix created in MonitorModuleZVEI::process_block() + * @return index pointing to frequency holding maximum energy/-1 if problem/filter + */ +int MonitorModuleZVEI::find_max_index(const float *totte, int index1, int index2) +{ + + float en = 0; + int index = -1; + int i; + + /* Ermitteln des Index' fuer den (erst-, zweit-, dritt-) groessten Eintrag */ + for (i = 0; i < (int)(sizeof(zvei_freq)/sizeof(zvei_freq[0])); i++) { + if (totte[i] > en && i != index1 && i != index2){ + en = totte[i]; + index = i; + } + } + +/* en *= 0.25; // sirenenton ab 0.8 detektiert - Gruetze irgendwo/Algorithmus sinnvoll? + + for (i = 0; i < 16; i++) { + if (index != i && totte[i] > en) return -1; + } */ + + return index; +} + +/** + * @brief finds a digit out of o block of seven buffers; must be same digit four times following for detection + */ +int MonitorModuleZVEI::fuzzyseven() { + int tone0count = 0; + int fail = 0; + int tone0 = detected_seven[(seven_count + 1) % 7][0]; + + if(debugmodus > 5) { + cout << endl; + for(int i=0; i<7; i++) { + cout << detected_seven[(seven_count + i + 1) % 7][0] << " "; + } + } + + if(detected_seven[(seven_count + 1) % 7][0] == -1) { + return -1; // deleted entry, already being detected + } + + if(detected_seven[(seven_count + 1) % 7][3] < (squelch * detected_seven[(seven_count + 1) % 7][6])) { + if(debugmodus > 3) { + cout << "SQUELCH (" << detected_seven[(seven_count + 1) % 7][0] << ")!" << endl; + } + return -1; // Rauschsperre zu + } + + for(int i = 0; i < 5; i++) { + if(detected_seven[(seven_count + i + 1) % 7][0] == tone0) { + tone0count++; + } else { + fail++; + } + if(debugmodus > 6) { + cout << "tone0count: " << tone0count << " " << "(" << tone0 << ")"; + } + if(tone0count == 4) { + return tone0; + } + } + return -1; +} + +/** + * @brief checks zvei tones for correctness + */ +bool MonitorModuleZVEI::zvei_ok() { + + // Geloeschte Folge oder Pause in der Tonfolge: + for(unsigned int i = 0; i < maxlength; i++) { + if(zvei_folge[i] == -1 || zvei_folge[i] == -2) { + return false; + } + } + + // Fehlerfall: Doppeleintraege + for(int i = 0; i < 4; i++) { + if(zvei_folge[i] == zvei_folge[i+1]) { + return false; + } + } + + // sonst: ok. + return true; +} + +/** + * @brief output alarm/ZVEI-Tonfolge to connected clients (NO storing of data!) + * @param Adresse ZVEI-Tonfolge + * @param typ alarm type [0|1|2] + * @param Text free text (human readable type) + */ +void MonitorModuleZVEI::DisplayResult(std::string Adresse,int typ, std::string Text) +{ + std::string alarmTypString ; + std::string jetzt ; + char dateStr[9]; + char timeStr[9]; + + alarmTypString = convertIntToString(typ) ; + + // aktuelle Uhrzeit holen (Klartext & unix timestamp) + currentTime(jetzt) ; + struct tm* tm_time= localtime(&m_time) ; + // FIXME warum nur ein zweistelliges Jahr? + strftime(dateStr,9,"%d.%m.%y" ,tm_time) ; + strftime(timeStr,9,"%H:%M:%S" ,tm_time) ; + + ModuleResultBase *pRes =new ModuleResultBase() ; + + pRes->set("timestamp",jetzt); + pRes->set("uhrzeit",timeStr) ; + pRes->set("datum",dateStr) ; + pRes->set("servernamehex",m_serverNameHex); + pRes->set("channelnamehex",m_channelNameHex); + pRes->set("channelnum",convertIntToString(m_iChannelNum)); + + pRes->set("typ","zvei"); + pRes->set("zvei",Adresse) ; + pRes->set("weckton",alarmTypString) ; + pRes->set("text",Text) ; + + FILE_LOG(logDEBUG) << endl << (*pRes) ; + GlobalDispatcher->addResult(pRes) ; +} + + +/** + * @brief output alarm/ZVEI-Tonfolge to some storage engine (NO displaying!) + * @param Adresse ZVEI-Tonfolge + * @param typ alarm type [0|1|2] + * @param text free text (human readable type) + */ +void MonitorModuleZVEI::StoreResult(std::string Adresse,int typ, std::string text) +{ + +} diff --git a/monitord/MonitorModuleZVEI.h b/monitord/MonitorModuleZVEI.h new file mode 100644 index 0000000..208bb9a --- /dev/null +++ b/monitord/MonitorModuleZVEI.h @@ -0,0 +1,89 @@ +// MyMonModuleZVEI.h: Schnittstelle f�r die Klasse MonitorModuleZVEI. +/* + * based on: demod_zvei.c -- ZVEI signalling demodulator/decoder + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002-2007 + * Stephan Effertz (info@stephan-effertz.de) + * + * Edited 11/2007 - demod partly rewritten, fully functional but to be tested "in the wild": + * Martin Diedrich (martin@mdiedrich.de) + * + * (Demodulation parts taken from monitor (c) Markus Grohmann, Thomas Sailor) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#if !defined(AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_) +#define AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "MonitorModules.h" + +#define COSTABSIZE 0x400 + +class MonitorModuleZVEI : public MonitorModule +{ +public: + int find_max_index(const float *totte, int index1, int index2); + void demod(float* buffer, int length); + MonitorModuleZVEI(int sampleRate,XMLNode *pConfig); + int debugmodus; + float squelch; + // MonitorModuleZVEI(XMLNode *pConfig); + virtual ~MonitorModuleZVEI(); + +protected: + void StoreResult(std::string Adresse,int typ, std::string text); + void DisplayResult(std::string Adresse, int typ, std::string Text); + int *process_block(int *found_tones); + + int BLOCKLEN; + int PHINC(int x); + + short int pause_length; + short int lastch; + short int lastout; + short int zvei_folge[5]; // array length of ZVEI-Tonfolge - change when needed longer! + unsigned int folge_position; + unsigned int maxlength; + bool timeout; + int* found_tones; + short int tone_count; + int detected_seven[7][7]; + short int seven_count; + int fuzzyseven(); + bool zvei_ok(); + short int siren_count; + + char zvei_character[20]; + unsigned int zvei_freq[20] ; + unsigned int ph[20]; + float energy[4],tenergy[4][40]; + int blkcount; + float costabf[COSTABSIZE]; + +}; + +#endif // !defined(AFX_MYMONMODULEZVEI_H__AE2C7DF3_BFD5_4A65_A86B_09BD277F35FD__INCLUDED_) diff --git a/monitord/MonitorModules.cpp b/monitord/MonitorModules.cpp new file mode 100644 index 0000000..43c3e8f --- /dev/null +++ b/monitord/MonitorModules.cpp @@ -0,0 +1,264 @@ +/*MonitorModules.cpp + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ +#include + +#include "MonitorModules.h" +#include "convert.h" +#include "base64.h" + + +#ifdef _DEBUG +#undef THIS_FILE +//static char THIS_FILE[]=__FILE__; +#endif + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +MonitorModule::MonitorModule() +{ + memset(rxbuf,0,512) ; + rxstate=0 ; + rxbitbuf=0 ; + rxbitstream=0L ; + FREQ_SAMP=22050 ; + m_bTranslate=true ; + m_iFilterModus=2 ; + m_lpszFilter="" ; + //m_pCriticalSection=NULL ; + m_iFunkkanal=0 ; + m_iChannelNum=0 ; + + if (memLockOpen( 12345, & m_queueLock) < 0) { + // Erstmal tun wir hier nix ... + } + + this->setChannelName("channel01" ) ; + this->setServerName("monitord") ; +} + +MonitorModule::~MonitorModule() +{ + +} + + +void MonitorModule::demod(float *buffer, int length) +{ + +} + +void MonitorModule::SetName(std::string Name) +{ + m_lpszName=Name ; +} + +void MonitorModule::SetSampleRate(int rate) +{ + +} + +void MonitorModule::getCurrentTime() +{ + time(&m_time); +} + +void MonitorModule::setChannelName(std::string name) +{ + convertStringToHex(name,m_channelNameHex) ; +} + + +void MonitorModule::setChannelNum(int num) +{ + m_iChannelNum=num ; +} + +std::string MonitorModule::getChannelNameHex() +{ + return (m_channelNameHex) ; +} + +int MonitorModule::getChannelNum() +{ + return (m_iChannelNum) ; +} + +void MonitorModule::setServerName(std::string name) +{ + convertStringToHex(name,m_serverNameHex) ; +} + + +bool MonitorModule::currentTime(std::string & timeString) +{ + getCurrentTime() ; + try + { + timeString = convertIntToString(m_time) ; + } catch (BadConversion e) + { + return false ; + } + return true ; + +} + +const char* MonitorModule::translate_alpha(unsigned char chr) +{ + + static const struct trtab { + const unsigned char code; + const char *str; + } + + trtab[] = { + { 0, "" }, + { 1, "" }, + { 2, "" }, + { 3, "" }, + { 4, "" }, + { 5, "" }, + { 6, "" }, + { 7, "" }, + { 8, "" }, + { 9, "" }, + { 10, "" }, + { 11, "" }, + { 12, "" }, + { 13, "" }, + { 14, "" }, + { 15, "" }, + { 16, "" }, + { 17, "" }, + { 18, "" }, + { 19, "" }, + { 20, "" }, + { 21, "" }, + { 22, "" }, + { 23, "" }, + { 24, "" }, + { 25, "" }, + { 26, "" }, + { 27, "" }, + { 28, "" }, + { 29, "" }, + { 30, "" }, + { 31, "" }, +#ifdef CHARSET_LATIN1 + { 0x5b, "\304" }, /* upper case A dieresis */ + { 0x5c, "\326" }, /* upper case O dieresis */ + { 0x5d, "\334" }, /* upper case U dieresis */ + { 0x7b, "\344" }, /* lower case a dieresis */ + { 0x7c, "\366" }, /* lower case o dieresis */ + { 0x7d, "\374" }, /* lower case u dieresis */ + { 0x7e, "\337" }}; /* sharp s */ +#else /* CHARSET_LATIN1 */ + { 0x5b, "AE" }, /* upper case A dieresis */ + { 0x5c, "OE" }, /* upper case O dieresis */ + { 0x5d, "UE" }, /* upper case U dieresis */ + { 0x7b, "ae" }, /* lower case a dieresis */ + { 0x7c, "oe" }, /* lower case o dieresis */ + { 0x7d, "ue" }, /* lower case u dieresis */ + { 0x7e, "ss" }}; /* sharp s */ +#endif /* CHARSET_LATIN1 */ + + int min = 0, max = (sizeof(trtab) / sizeof(trtab[0])) - 1; + + /* binary search, list must be ordered! */ + for (;;) { + int mid = (min + max) >> 1; + const struct trtab *tb = trtab + mid; + int cmp = ((int) tb->code) - ((int) chr); + + if (!cmp) return tb->str; + if (cmp < 0) { + min = mid + 1; + if (min > max) return NULL; + } + if (cmp > 0) { + max = mid - 1; + if (max < min) return NULL; + } + } +} + +void MonitorModule::SetFilter(std::string filter,int modus) +{ + m_lpszFilter=filter ; + m_iFilterModus=modus ; +} + +void MonitorModule::setConfigData(XMLNode *pConfigNode) +{ + m_pXMLConfig=pConfigNode ; + parseConfigData() ; +} + +bool MonitorModule::MatchFilter(std::string filterstring) +{ + /* + int nPos = 0; + int nReplaced = 0; + CRegExp r; + //LPTSTR str = filterstring.c_str() ; + + if (m_iFilterModus==2) + { + return true ; + } ; + + r.RegComp( m_lpszFilter.c_str() ); + if ( (nPos = r.RegFind( m_lpszFilter.c_str())) != -1 ) + { + return m_iFilterModus==0 ; + } else { + return !(m_iFilterModus==0) ; + }*/ + return true ; +} + +void MonitorModule::DebugMessage(std::string message) +{ + //GetBAMon()->LogMessage(message) ; + +} + +void MonitorModule::SetFunkkanal(int kanal) +{ + m_iFunkkanal=kanal ; +} + + diff --git a/monitord/MonitorModules.h b/monitord/MonitorModules.h new file mode 100644 index 0000000..925519d --- /dev/null +++ b/monitord/MonitorModules.h @@ -0,0 +1,173 @@ +/* MonitorModules.h + * + * This file is part of MyMonitor + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * Copyright (c) 2002 + * Stephan Effertz (info@stephan-effertz.de) + * + * + * (Demodulation parts taken from monitor (c) Markus Grohmann) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* ---------------------------------------------------------------------- */ + +#if !defined(AFX_MYMONMODULES_H__452DBCB3_6D8D_4B6B_9A1D_081EBE3308B1__INCLUDED_) +#define AFX_MYMONMODULES_H__452DBCB3_6D8D_4B6B_9A1D_081EBE3308B1__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +#define MAX_SAMPLES 4096 +//65536*2 //>>>>>>>> must also be defined in CFft +#define MAX_VOIE 2 +#define MAX_SIZE_SAMPLES 1 // WORD +#define MAX_SIZE_INPUT_BUFFER MAX_SAMPLES*MAX_VOIE*MAX_SIZE_SAMPLES +// #define MAX_SIZE_INPUT_BUFFER 1024 +#define DEFAULT_CAL_OFFSET 0x80 // >>>>> depends of you sound card +#define DEFAULT_CAL_GAIN 256.0 + + + +///////////////////////////////////////////////////////////////////////// +// Die hdlc Dekodierung scheint eine Art Grundlage zu sein. +// Zumindest wird deren Init-Routine z.B. vom FMS Module aufgerufen +// Deswegen nun dieses "Modul" hier als Basisklasse definiert +// +///////////////////////////////////////////////////////////////////////// + +#include "time.h" +#include +#include +#include "memlock.h" + +#include "MonitorModulesResults.h" +#include "xmltools.h" +#include "MonitorLogging.h" + +/* --------------------------------------------------------- + BEGIN: Helper Functions + ---------------------------------------------------------*/ + +inline float mac( float *a, float *b, unsigned int size) { + float sum = 0; + unsigned int i; + + FILE_LOG(logDEBUG2) << "processing mac() Block with size=" << size ; + for (i = 0; i < size; i++) + sum += (*a++) * (*b++); + return sum; +} + + +inline float fsqr(float f) { + return f*f; +} + + +/* --------------------------------------------------------- + END: Helper Functions + ---------------------------------------------------------*/ + +/* + * translat.c -- Charakter printable translation + * + * Copyright (C) 1996 + * Thomas Sailer (sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu) + * + * Copyright (C) 1998-2002 + * Markus Grohmann (markus_grohmann@gmx.de) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ---------------------------------------------------------------------- */ + + +#define CHARSET_LATIN1 + +/* ---------------------------------------------------------------------- */ + +class MonitorModule ; + +typedef std::vector MonitorModuleArray ; + +class MonitorModule +{ +public: + void SetFunkkanal(int kanal); + void SetFilter(std::string filter, int modus); + void SetSampleRate(int rate); + void SetName(std::string Name); + virtual void demod(float *buffer, int length); + MonitorModule(); + virtual ~MonitorModule(); + + void setChannelName(std::string name) ; + void setServerName(std::string name) ; + void setChannelNum(int num) ; + std::string getChannelNameHex() ; + int getChannelNum() ; + void setConfigData(XMLNode *pConfigNode) ; + + +protected: + virtual void parseConfigData(){} ; + void getCurrentTime() ; + bool currentTime(std::string & time) ; + bool makeResponseHeader(int code) ; + void DebugMessage(std::string message); + bool MatchFilter(std::string string); + const char* translate_alpha(unsigned char chr); + + int m_iChannelNum ; + int m_iFunkkanal; + int FREQ_SAMP; + std::string m_lpszName; + time_t m_time ; //< Aktuelle Uhrzeit zwischenspeichern + int m_iFilterModus; + std::string m_lpszFilter; + std::string m_serverNameHex ; + std::string m_channelNameHex ; + bool m_bTranslate; + XMLNode* m_pXMLConfig ; + unsigned char rxbuf[512], *rxptr; + unsigned int rxstate, rxbitbuf; + unsigned long rxbitstream; + MEMLOCK m_queueLock ; + +}; + +#endif // !defined(AFX_MYMONMODULES_H__452DBCB3_6D8D_4B6B_9A1D_081EBE3308B1__INCLUDED_) diff --git a/monitord/MonitorModulesResults.cpp b/monitord/MonitorModulesResults.cpp new file mode 100644 index 0000000..b4f1ab1 --- /dev/null +++ b/monitord/MonitorModulesResults.cpp @@ -0,0 +1,132 @@ +#include + +#include "MonitorModulesResults.h" +#include "MonitorExceptions.h" +#include "SocketServer.h" +#include "MonitorLogging.h" + +#ifdef PLUGINS +#include "PluginThread.h" +#endif + +using namespace std; + +#ifdef WIN32 + #define sleep Sleep +#endif + +MODULERESULTSET ModuleResultSet ; +MonitorResultsDispatcher *GlobalDispatcher; + + +ModuleResultBase::ModuleResultBase() +{ +} + +ModuleResultBase::~ModuleResultBase() +{ + m_Items.clear() ; +} + +void ModuleResultBase::copyTo(ModuleResultBase & target) +{ + target.m_Items = m_Items ; +} + + +ostream& operator<<(ostream & os, ModuleResultBase & m) +{ + for (ResultItemsMap::iterator iter=m.m_Items.begin(); iter!=m.m_Items.end(); ++iter) + { + os << iter->first << " = \"" << iter->second << "\"" << endl ; + } + return os ; +} + +//---------------------------------------------------------------- +// MonitorResultsDispatcher +// +MonitorResultsDispatcher::MonitorResultsDispatcher() +{ + FILE_LOG(logDEBUG) << "Dispatcher startet" ; + + if ( memLockCreate( 12346, & m_MemLock) < 0) { + ThrowMonitorException("Dispatcher: memLockCreate failed") ; + } + + Start() ; + m_bStop=false ; +} + +MonitorResultsDispatcher::~MonitorResultsDispatcher() +{ + memLockDestroy(m_MemLock) ; +} + +bool MonitorResultsDispatcher::addResult(ModuleResultBase* pResult) +{ + // Neues Element in die Liste einfuegen + // ACHTUNG: dieses Kommando wird im Kontext des Dekoders ausgef�hrt + // Somit k�nnte der Thread des Dispatchers gerade die Liste + // L�schen/bearbeiten wollen. Deshalb erst das Lock setzen + // + + memLock(m_MemLock) ; + m_Results.push_back(pResult) ; + m_Signal.SetSignal() ; + memUnlock(m_MemLock) ; + return true ; +} + +void* MonitorResultsDispatcher::Thread() +{ + ModuleResultBase *pRes ; + + JThread::ThreadStarted(); + + /* + * All Lua contexts are held in this structure. We work with it almost + * all the time. + */ + + do + { + FILE_LOG(logDEBUG1) << "Dispatcher waiting" ; + m_Signal.WaitForSignal() ; // Auf neue Daten warten ... + FILE_LOG(logDEBUG1) << "Dispatcher running" ; + + while (m_Results.size()>0) + { + m_bSkipDispatching=false ; + memLock(m_MemLock) ; + for (MODULERESULTSET::iterator i=m_Results.begin(); idispatchResult(pRes) ; + #ifdef PLUGINS + GetPluginsManager().dispatchResult(pRes) ; + #endif + } + // Eintrag aus der Warteschlange loeschen + FILE_LOG(logDEBUG4) << "loesche ResultSet aus GlobalDispatcher Queue" ; + m_Results.erase(i) ; + FILE_LOG(logDEBUG4) << "delete pRes" ; + delete pRes ; + FILE_LOG(logDEBUG4) << "delete pRes:done" ; + } + memUnlock(m_MemLock) ; + } + m_Signal.ResetSignal() ; + + } while (m_bStop==false) ; + + return NULL ; +} + diff --git a/monitord/MonitorModulesResults.h b/monitord/MonitorModulesResults.h new file mode 100644 index 0000000..0b59c1b --- /dev/null +++ b/monitord/MonitorModulesResults.h @@ -0,0 +1,92 @@ +#ifndef MONITORMODULESRESULTS_H_ +#define MONITORMODULESRESULTS_H_ + +/** @brief Basisklasse fuer Rueckgabewerte aus den Modulen + * + * In dieser Struktur werden Typ, Zeit und weitere Daten zur Rueckgabe + * gespeichert. + */ + +#include +#include +#include +#include +#include +#include "MonitorSignals.h" +#include "memlock.h" + +#define MAX_CHAR 512 + + +typedef std::map ResultItemsMap ; + +/** + * @brief Basisklasse f�r Rueckgabewerte der Auswerter + */ + + +class ModuleResultBase +{ +public: + /** Zum einfacheren Zugriff geht folgendes: + * + * meinString = Result["feldname"] + * Result.set("feldname","test") + * + * Fuers debugging geht auch " os << Result " + */ + + std::string& operator[](std::string key) { return get(key);} ; + std::string& operator[](const char key[]) { return operator[](std::string(key));} ; + std::string& operator[](char key[]) { return operator[](std::string(key));} ; + + friend std::ostream & operator<<(std::ostream & os, ModuleResultBase &m) ; + + ModuleResultBase(); + virtual ~ModuleResultBase(); + void copyTo(ModuleResultBase & target) ; + + std::string& get(std::string key) { return m_Items[key];} ; + bool add(std::string key,std::string item) { m_Items[key]=item; return true;} ; + bool set(std::string key,std::string item) { return add(key,item);} ; + ResultItemsMap m_Items ; + +protected: + //time_t m_tTime ; +} ; + +std::ostream & operator<<(std::ostream & os, ModuleResultBase & m) ; + +typedef ModuleResultBase* ModuleResultBasePtr ; +typedef std::vector MODULERESULTSET ; + +extern MODULERESULTSET ModuleResultSet ; + +/** + * @brief Sammelt und verteilt Ergebnisse der Decodermodule + * + */ + +class MonitorResultsDispatcher : public JThread +{ +public: + MonitorResultsDispatcher(); + virtual ~MonitorResultsDispatcher(); + + bool addResult(ModuleResultBase* pResult) ; + virtual void* Thread() ; + bool m_bStop ; + +private: + MODULERESULTSET m_Results ; + MEMLOCK m_MemLock ; + MonitorBlockingSignal m_Signal ; + bool m_bSkipDispatching ; + +}; + + + +extern MonitorResultsDispatcher *GlobalDispatcher ; + +#endif /*MONITORMODULESRESULTS_H_*/ diff --git a/monitord/MonitorSignals.cpp b/monitord/MonitorSignals.cpp new file mode 100644 index 0000000..03ea8ff --- /dev/null +++ b/monitord/MonitorSignals.cpp @@ -0,0 +1,71 @@ +#include "MonitorSignals.h" +#include "MonitorLogging.h" + +using namespace std; + +MonitorBlockingSignal::MonitorBlockingSignal() +{ +#ifdef WIN32 + m_Handle = CreateEvent(NULL,FALSE,FALSE,NULL); + if (m_Handle == NULL) { + ThrowMonitorException("Win32 Eventhandle is null") ; + } +#else + int res=pthread_cond_init (&m_ptCondition,NULL) ; + res+=pthread_mutex_init( &m_ptLock, NULL) ; + res+=pthread_mutex_lock(&m_ptLock) ; + if (res!=0) + { + ThrowMonitorException("error initialising pthreads Condition/Mutex") ; + } +#endif + FILE_LOG(logDEBUG1) << "Signal erstellt..." ; +} + +MonitorBlockingSignal::~MonitorBlockingSignal() +{ +#ifdef WIN32 + if (m_Handle) CloseHandle(m_Handle) ; +#else + pthread_cond_destroy (&m_ptCondition) ; +#endif +} + +void MonitorBlockingSignal::ResetSignal() +{ +#ifdef WIN32 + if (m_Handle) + ResetEvent(m_Handle) ; + else + ThrowMonitorException("Win32 Eventhandle is null") ; +#else + // pthread Gegenstueck ? +#endif +} + +void MonitorBlockingSignal::SetSignal() +{ + FILE_LOG(logDEBUG1) << "Signal wird gesetzt" ; +#ifdef WIN32 + if (m_Handle) + SetEvent(m_Handle); + else + ThrowMonitorException("Win32 Eventhandle is null") ; +#else + pthread_cond_signal(&m_ptCondition) ; +#endif +} + +void MonitorBlockingSignal::WaitForSignal() +{ + FILE_LOG(logDEBUG1) << "Waiting for signal" ; +#ifdef WIN32 + if (m_Handle) + WaitForSingleObject(m_Handle,INFINITE) ; + else + ThrowMonitorException("Win32 Eventhandle is null") ; +#else + pthread_cond_wait(&m_ptCondition,&m_ptLock) ; +#endif + FILE_LOG(logDEBUG1) << "Waiting for signal beendet" ; +} diff --git a/monitord/MonitorSignals.h b/monitord/MonitorSignals.h new file mode 100644 index 0000000..9752b29 --- /dev/null +++ b/monitord/MonitorSignals.h @@ -0,0 +1,36 @@ +#ifndef MONSIGNALS_H_ +#define MONSIGNALS_H_ 1 + +#include "MonitorExceptions.h" +#include "memlock.h" + +#if (defined(WIN32) || defined(_WIN32_WCE)) + #ifndef _WIN32_WCE + #include + #endif // _WIN32_WCE + #include + #include + //#define JMUTEX_CRITICALSECTION +#else // using pthread + #include +#endif // WIN32 + + +class MonitorBlockingSignal { +public: + MonitorBlockingSignal() ; + virtual ~MonitorBlockingSignal() ; + void WaitForSignal() ; + void SetSignal() ; + void ResetSignal() ; + +private: +#ifdef WIN32 + HANDLE m_Handle; +#else + pthread_cond_t m_ptCondition ; + pthread_mutex_t m_ptLock ; +#endif +} ; + +#endif /*MONSIGNALS_H_*/ diff --git a/monitord/PluginThread.cpp b/monitord/PluginThread.cpp new file mode 100644 index 0000000..078a701 --- /dev/null +++ b/monitord/PluginThread.cpp @@ -0,0 +1,362 @@ +#include "PluginThread.h" +/** + * PluginThread + */ + +#include "MonitorLogging.h" + +#ifdef WIN32 + #define usleep Sleep +#endif + +#define MAX_QUEUESIZE (100) + +PluginThread::PluginThread() : ThreadBase(-1) +{ + FILE_LOG(logDEBUG) << "Erstellt PT:" ; + m_iLockNum=-1 ; + m_plugin=NULL ; + m_bStop=false ; + dll=NULL ; +} + +bool PluginThread::initPlugin(int LOCKNUM, std::string dllfile,XMLNode *pConfig) +{ + m_iLockNum=LOCKNUM ; + + char dllname[255] ; + memset(dllname,0,255) ; + strncpy(dllname,dllfile.c_str(),255) ; + FILE_LOG(logDEBUG) << "DLL Name:" << dllname ; + + dll= new DLLFactory(dllname); + + FILE_LOG(logDEBUG) << "done" ; + // + // If it worked we should have dll.factory pointing + // to a subclass of PlugInFactory + // + if (dll) + { + if( dll->factory ) + { + m_plugin=dll->factory->CreatePlugIn() ; + if (m_plugin==NULL) + { + ThrowMonitorException("Error creating Plugin !") ; + } else + { + // Plugin ist erstellt, nun konfigurieren + m_plugin->initProcessing(NULL,*pConfig) ; + } + } else { + ThrowMonitorException("Error accessing factory from " + dllfile) ; + } + } else { + ThrowMonitorException("Error loading dll:" + dllfile) ; + } + return true ; +} + + +PluginThread::PluginThread(int LOCKNUM, std::string dllfile,XMLNode *pConfig) +:ThreadBase(LOCKNUM) +{ + initPlugin(LOCKNUM,dllfile,pConfig) ; +} + +PluginThread::~PluginThread() +{ + +} + + +void *PluginThread::Thread() +{ + ModuleResultBase* pRes ; + + + FILE_LOG(logINFO) << "PluginThread starting" ; + this->ThreadStarted() ; // Erstmal Bescheid geben, dass wir laufen + createLock() ; + + while (!m_bStop) + { + m_signal.WaitForSignal() ; + // Daten an Plugin uebergeben + memLock(m_Lock) ; + while (m_queue.size()>0) + { + FILE_LOG(logDEBUG) << "plugin processing - size=" << m_queue.size() ; + pRes=m_queue.back() ; + m_queue.pop_back() ; + memUnlock(m_Lock) ; + + /* to avoid a lock caused by a crashed plugin we release our lock*/ + if (m_plugin) + { + m_plugin->processResult(pRes) ; + } + delete pRes ; + memLock(m_Lock) ; + } + memUnlock(m_Lock) ; + + } + FILE_LOG(logINFO) << "PluginThread was stopped" ; + + m_plugin->quitProcessing(); + return NULL; +} + +std::string PluginThread::getPluginName() +{ + return m_pluginName ; +} + +void PluginThread::setPluginName(std::string name) +{ + m_pluginName=name ; + +} +void PluginThread::addResult(ModuleResultBase* pRes) +{ + ModuleResultBase* localResult=new ModuleResultBase; + pRes->copyTo(*localResult) ; + + memLock(m_Lock) ; + if (m_queue.size()m_Items.begin(); iter!=pRes->m_Items.end(); ++iter) + { + { + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,iter->first.c_str(),199) ; + strncpy(zwei,iter->second.c_str(),199) ; + + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + } + } + + // Plugintype + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"plugin_name",199) ; + strncpy(zwei,(*i)->getPluginName().c_str(),199) ; + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // set the number of elements (index to the last array element) + lua_pushliteral( L, "n" ); + lua_pushnumber( L, numCount-1 ); + lua_rawset( L, -3 ); + + // set the name of the array that the script will access + lua_setglobal( L, "arg" ); + + /* do the call (2 arguments, 1 result) */ + if (lua_pcall(L, 0, LUA_MULTRET, 0) != 0) { + FILE_LOG(logERROR) << "Fehler beim Aufruf lua dispatcher script:" << lua_tostring(L, -1); + //error(L, "error running function `f': %s", + // lua_tostring(L, -1)); + } + + /* retrieve result */ + if (!lua_isnumber(L, -1)) { + FILE_LOG(logERROR) << "nicht-numerische Antwort vom lua dispatcher script" ; + //error(L, "function `f' must return a number"); + } + z = lua_tonumber(L, -1); + lua_pop(L, 1); /* pop returned value */ + FILE_LOG(logDEBUG1) << "lua Result (global dispatcher)" << z ; + + if (z==1) m_bSkipDispatching=true ; + } + #endif + + if (m_bSkipDispatching==false) + { + (*i)->addResult(pRes) ; + } + } + return true ; +} + +bool MonitorPluginsManager::loadPlugin(std::string dllfile, XMLNode *pConfig, std::string pluginName) +{ + PluginThread* pt=new PluginThread() ; + if (pt->initPlugin(4000,dllfile,pConfig)) + { + FILE_LOG(logDEBUG) << "startet plugin " << dllfile ; + pt->Start() ; + pt->setPluginName(pluginName) ; + addModule(pt) ; + + return true ; + } else { + FILE_LOG(logERROR) << "DLL Factory konnte nicht initialisiert werden !" ; + return false ; + } +} + +bool MonitorPluginsManager::loadPluginsFromConfigNode(XMLNode *pConfig) +{ + // Plugins durchgehen + + std::string pluginName ; + std::string pluginFile ; + XMLNode parameterNode ; + XMLNode *pParameters ; + XMLNode pluginNode; // = pConfig->getChildNode("plugin",sndCard) ; + + FILE_LOG(logINFO) << "reading plugin configuration" ; + int nPlugins=pConfig->nChildNode("plugin"); + for (int plugin=0;plugingetChildNode("plugin",plugin))).isEmpty()) + { + pluginName=pluginNode.getAttribute("name"); + pluginFile=getNodeText(pluginNode,"file","") ; + parameterNode=pluginNode.getChildNode("parameters"); + + FILE_LOG(logINFO) << "Plugin found: " << pluginName ; + FILE_LOG(logDEBUG) << "File:" << pluginFile ; + if (parameterNode.isEmpty()==false) + { + FILE_LOG(logDEBUG) << "found parameters" ; + pParameters=¶meterNode ; + } else + { + FILE_LOG(logDEBUG) << "no parameters found" ; + pParameters=NULL; + } + + if (pluginFile.size()>0) + { + loadPlugin(pluginFile,pParameters,pluginName) ; + } + } + } + return true ; +} + + + + + + diff --git a/monitord/PluginThread.h b/monitord/PluginThread.h new file mode 100644 index 0000000..ef9040e --- /dev/null +++ b/monitord/PluginThread.h @@ -0,0 +1,66 @@ +#ifndef PLUGINTHREAD_H_ +#define PLUGINTHREAD_H_ + +#include "SocketServer.h" + +/* sofern lua aktiviert ist ? -> ifdef noetig ? */ +#include "lua.hpp" + +/* + * PluginThread + */ + +class PluginThread : public ThreadBase +{ +public: + PluginThread(int LOCKNUM, std::string dllfile,XMLNode *pConfig=NULL); + PluginThread(); + virtual ~PluginThread(); + virtual void *Thread() ; + bool initPlugin(int LOCKNUM, std::string,XMLNode *pConfig=NULL) ; + std::string getPluginName() ; + void setPluginName(std::string pluginName) ; + MonitorBlockingSignal m_signal ; + virtual void addResult(ModuleResultBase* pRes) ; + bool m_bStop ; + +private: + MonitorPlugIn* m_plugin ; + MODULERESULTSET m_queue ; + DLLFactory* dll ; + std::string m_pluginName ; +} ; + +typedef std::vector tMonitorPluginThreadVector ; +/** + * @brief Verwaltet alle Nicht-Audio Plugins + */ + +class MonitorPluginsManager +{ +public: + MonitorPluginsManager() ; + bool loadScriptFilter(std::string FilterFileName) ; + virtual ~MonitorPluginsManager() ; + bool addModule(PluginThread* pThread) ; + bool removeModule(PluginThread* pThread); + bool dispatchResult(ModuleResultBase *pRes) ; + bool loadPlugin(std::string dllfile, XMLNode *pConfig, std::string pluginName); + bool loadPluginsFromConfigNode(XMLNode *pConfig); + +protected: + MEMLOCK m_MemLock ; + tMonitorPluginThreadVector m_Modules ; + bool m_bStop ; + + bool m_bSkipDispatching ; + #ifdef LUA + lua_State *L; + bool m_bUseLUAScript ; + #endif +}; + +MonitorPluginsManager& GetPluginsManager() ; + + +#endif /*PLUGINTHREAD_H_*/ diff --git a/monitord/ReadMe.txt b/monitord/ReadMe.txt new file mode 100644 index 0000000..ee8062c --- /dev/null +++ b/monitord/ReadMe.txt @@ -0,0 +1,3 @@ + + +... diff --git a/monitord/SndPipe.cpp b/monitord/SndPipe.cpp new file mode 100644 index 0000000..857034d --- /dev/null +++ b/monitord/SndPipe.cpp @@ -0,0 +1,332 @@ +// SndPipe.cpp: Implementierung der Klasse CSndPipe. +// +////////////////////////////////////////////////////////////////////// + +#include "SndPipe.h" +#include "MonitorAudio.h" +#include "MonitorExceptions.h" +#include "convert.h" +#include "Monitor.h" + +#include "MonitorModules.h" +#include "MonitorModuleFMS.h" +#include "MonitorModuleZVEI.h" +#include "MonitorModulePocsag512.h" +#include "MonitorModulePocsag1200.h" +#include "MonitorConfiguration.h" + +#include "MonitorLogging.h" + +#include +using namespace std ; + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CSndPipe::CSndPipe() +{ + m_SoundIn.setCallback (&DataFromSoundIn); + m_SoundIn.setOwner (this); + m_cardNum=0 ; + + #ifdef PLUGINS + for (int i=0;iProcessBuffer(buffer); +} + +void CSndPipe::ProcessBuffer(CAudioBuffer *buffer) +{ + for ( std::vector::iterator currentModule=m_ModulesLinks.begin() ; currentModule != m_ModulesLinks.end() ;currentModule++) + { + (*currentModule)->demod(buffer->Left, buffer->Samples) ; + } + + #ifdef PLUGINS + SocketMessage msg ; + + if (m_pluginsLeft[0]!=NULL) + { + m_pluginsLeft[0]->ProcessAudio(buffer->Left,buffer->Samples) ; + + while (m_pluginsLeft[0]->getThreadMessage(msg)) + { + if(msg.pThread) + { + if (msg.pThread->IsRunning()) + { + FILE_LOG(logDEBUG) << "L: Nachricht wird versendet ..." ; + msg.pThread->addOutputText(msg.message); + } + } + } + } + #endif + + for ( std::vector::iterator currentModule=m_ModulesRechts.begin() ; currentModule != m_ModulesRechts.end() ;currentModule++) + { + (*currentModule)->demod(buffer->Right, buffer->Samples) ; + } + + #ifdef PLUGINS + if (m_pluginsRight[0]!=NULL) + { + m_pluginsRight[0]->ProcessAudio(buffer->Right,buffer->Samples) ; + + while (m_pluginsRight[0]->getThreadMessage(msg)) + { + if(msg.pThread) + { + if (msg.pThread->IsRunning()) + { + FILE_LOG(logDEBUG) << "R: Nachricht wird versendet ..." ; + msg.pThread->addOutputText(msg.message); + } + } + } + } + #endif +} + +std::string CSndPipe::PluginCommand(int channel,std::string command, SocketThread* pThread) +{ + std::string returnString="" ; + + #ifdef PLUGINS + int i ; + switch (channel) + { + case 0: + for (i=0;iDoCommand(command,pThread) ; + if (returnString.size()>0) break ; + } + break ; + case 1: + for (i=0;iDoCommand(command,pThread) ; + if (returnString.size()>0) break ; + } + + break ; + default: + ThrowMonitorException("Ungueltige Kanalnummer fuer PluginCommand:" + convertIntToString(channel)) ; + break ; + } + #else + returnString="not implemented" ; + #endif + + if (returnString.size()==0) returnString="not implemented" ; + return returnString ; +} + + +bool CSndPipe::initDecoderModules(int cardnum, MonitorConfiguration* pConfig) +{ + MonitorModule* newModule ; + m_cardNum=cardnum ; + unsigned int sampleRate=22050 ; + std::string fms_Filter="" ; + + try + { + if (pConfig->m_sndConfig[cardnum].iAktiv==1) + { + FILE_LOG(logINFO) << "creating decoders for soundcard #" << cardnum ; + // FMS ? + if (pConfig->m_sndConfig[cardnum].iFMS[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:FMS" ; + newModule= (MonitorModule*) new MonitorModuleFMS(sampleRate, &(pConfig->m_sndConfig[cardnum].configFMS[0])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iFMS[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:FMS" ; + newModule= (MonitorModule*) new MonitorModuleFMS(sampleRate,&(pConfig->m_sndConfig[cardnum].configFMS[1])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + + // ZVEI + if (pConfig->m_sndConfig[cardnum].iZVEI[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:ZVEI" ; + newModule= (MonitorModule*) new MonitorModuleZVEI(sampleRate,&(pConfig->m_sndConfig[cardnum].configZVEI[0])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iZVEI[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:ZVEI" ; + newModule= (MonitorModule*) new MonitorModuleZVEI(sampleRate,&(pConfig->m_sndConfig[cardnum].configZVEI[1])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + + // POC512 + if (pConfig->m_sndConfig[cardnum].iPOC512[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:POC512" ; + //newModule= (MonitorModule*) new MonitorModulePocsag512(sampleRate,&(pConfig->m_sndConfig[cardnum].configPOC512[0])) ; + newModule= (MonitorModule*) new MonitorModulePocsag512(sampleRate,1,0) ; + //(sampleRate,1,0) ; + + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iPOC512[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:POC512" ; + newModule= (MonitorModule*) new MonitorModulePocsag512(sampleRate,1,0) ; + //newModule= (MonitorModule*) new MonitorModulePocsag512(&(pConfig->m_sndConfig[cardnum].configPOC512[1])) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + + // POC1200 + if (pConfig->m_sndConfig[cardnum].iPOC1200[0]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "L:POC1200" ; + newModule= (MonitorModule*) new MonitorModulePocsag1200(sampleRate,1,0) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName0) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum) ; // 2*n+0=Links + + m_ModulesLinks.insert(m_ModulesLinks.end(),newModule) ; + } + + if (pConfig->m_sndConfig[cardnum].iPOC1200[1]==1) + { + FILE_LOG(logINFO) << "creating decoder for soundcard #" << cardnum << "R:POC1200" ; + newModule= (MonitorModule*) new MonitorModulePocsag1200(sampleRate,1,0) ; + newModule->setChannelName(pConfig->m_sndConfig[cardnum].sChannelName1) ; + newModule->setServerName(pConfig->m_sMonitordName) ; + newModule->setChannelNum(2*cardnum+1) ; // 2*n+1=Rechts + + m_ModulesRechts.insert(m_ModulesRechts.end(),newModule) ; + } + } else { + FILE_LOG(logINFO) << "skipping decoders for soundcard #" << cardnum << " : card not active !" ; + } + + } catch (MonitorException e) + { + FILE_LOG(logERROR) << "Error initialising decoder modules for soundcard #" << cardnum << ":" << e.what() ; + return false ; + } + return true ; +} +#ifdef PLUGINS + +bool CSndPipe::loadPlugins(MonitorConfiguration* pConfig, XMLNode configLeft, XMLNode configRight) +{ + + FILE_LOG(logINFO) << "loading audioplugins for left channel" ; + loadPlugins(pConfig, configLeft,m_pluginsLeft,2*m_cardNum+0) ; + FILE_LOG(logINFO) << "loading audioplugins for right channel" ; + loadPlugins(pConfig, configRight,m_pluginsRight,2*m_cardNum+1) ; + + return true ; +} + +bool CSndPipe::loadPlugins(MonitorConfiguration* pConfig, XMLNode config,MonitorAudioPlugIn* plugins[],int channelNum) +{ + std::string file ; + int nPlugins=0 ; + + nPlugins=config.nChildNode("plugin"); + for (int plugin=0; plugin dll( dllfile.c_str() ); + #else + static DLLFactory dll( dllfile.c_str() ) ; // "plugins//.libs//libmplugin_audiorecorder.so" ); + #endif + + // + // If it worked we should have dll.factory pointing + // to a subclass of PlugInFactory + // + + if( dll.factory ) + { + if ((plugins[i]=dll.factory->CreatePlugIn())==NULL) + { + ThrowMonitorException("Error Creating Plugin"); + } else { + plugins[i]->InitAudioProcessing(pConfig, config, channelNum) ; + } + } else { + FILE_LOG(logERROR) << "Error plugin Factory from file " << dllfile ; + } + } + return true ; +} + +#endif + diff --git a/monitord/SndPipe.h b/monitord/SndPipe.h new file mode 100644 index 0000000..782ba5f --- /dev/null +++ b/monitord/SndPipe.h @@ -0,0 +1,73 @@ +// SndPipe.h: Schnittstelle f�r die Klasse CSndPipe. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_SNDPIPE_H__8570FCEC_4C9F_4E14_ACCA_6B1559855881__INCLUDED_) +#define AFX_SNDPIPE_H__8570FCEC_4C9F_4E14_ACCA_6B1559855881__INCLUDED_ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifdef WIN32 +#include +#else +#ifdef HAVE_LIBASOUND +#include +#else +#include +#endif +#endif +//#include +//#include +#include "MonitorAudio.h" +#include "MonitorModules.h" +#include "plugins/mpluginAudio.h" +#include "SocketServer.h" +#include "xmltools.h" + +#define MAXPLUGINS 10 + + +class MonitorAudioPlugIn ; + +class CSndPipe +{ +public: + void ProcessBuffer(CAudioBuffer* buffer); + CSndPipe(); + virtual ~CSndPipe(); + static void DataFromSoundIn(CAudioBuffer* buffer, void* Owner); + int m_cardNum ; + bool initDecoderModules(int cardnum,MonitorConfiguration* pConfig) ; + std::string PluginCommand(int channel,std::string command,SocketThread* pThread=NULL) ; + #ifdef PLUGINS + + MonitorAudioPlugIn* m_pluginsLeft[MAXPLUGINS] ; + MonitorAudioPlugIn* m_pluginsRight[MAXPLUGINS] ; + + bool loadPlugins(MonitorConfiguration* pConfig, XMLNode configLeft,XMLNode configRight) ; //< Alle Plugins einer Soundkarte laden + bool loadPlugins(MonitorConfiguration* pConfig, XMLNode config,MonitorAudioPlugIn* plugins[],int channelNum) ; //< Alle Plugins eines Kanals laden + bool loadPlugin(MonitorConfiguration* pConfig, std::string dllfile,XMLNode config, MonitorAudioPlugIn* plugins[],int channelNum) ; //< einzelnes Plugin laden + #endif + + +#ifdef WIN32 /* bisheriger Code unter Sound */ + MonitorAudioWin32 m_SoundIn; +#else /* WIN32 */ +#ifdef HAVE_LIBASOUND + MonitorAudioALSA m_SoundIn; +#else /* HAVE_LIBASOUND */ + MonitorAudioOSS m_SoundIn; +#endif /* HAVE_LIBASOUND */ +#endif /* WIN32 */ + MonitorModuleArray m_ModulesLinks ; + MonitorModuleArray m_ModulesRechts ; + +}; + +#endif // !defined(AFX_SNDPIPE_H__8570FCEC_4C9F_4E14_ACCA_6B1559855881__INCLUDED_) diff --git a/monitord/SocketServer.cpp b/monitord/SocketServer.cpp new file mode 100644 index 0000000..54a014e --- /dev/null +++ b/monitord/SocketServer.cpp @@ -0,0 +1,889 @@ +#include "SocketServer.h" +#include "SocketThreadMonitord.h" +#include "SocketThreadFMS32.h" +#include "SocketThreadCrusader.h" + +#ifndef WIN32 + #include + #include // fuer inet_ntoa +#else + #define usleep Sleep + #define socklen_t int +#endif + +#include "memlock.h" +#include "MonitorModulesResults.h" +#include "base64.h" +#include "convert.h" +#include "Monitor.h" +#include "MonitorLogging.h" + +#include +#include +#include + +#ifdef HAVE_CONFIG_H +#include +#endif + +using namespace std; + +// Vielleicht sollte man das hier spaeter mal auslagern ... +// TODO Auslagern in externe Dateien (.h, .cpp)-Paar +// + +const int SERVER_PORT = 9333 ; + +typedef struct {long tv_sec; long tv_usec;} timval; + + + + +SocketServer::SocketServer(MonitorConfiguration *config, int iLockStartwert) +{ + m_MonitorConfiguration=config ; + m_ServerModus=SocketThread::monitord ; + m_iLockStartwert=iLockStartwert ; + m_bWantStop=false ; +} + + +SocketServer::SocketServer(MonitorConfiguration *config, std::string FilterFileName, int iLockStartwert) +{ + m_MonitorConfiguration=config ; + m_ServerModus=SocketThread::monitord ; + m_iLockStartwert=iLockStartwert ; + m_bWantStop=false ; + #ifdef LUA + m_bUseLUAScript=false ; + #endif + + if (! FilterFileName.empty()) { + + #ifdef LUA + // LUA TEST + try + { + L = lua_open() ; + luaL_openlibs(L) ; + + + if(luaL_loadfile(L, FilterFileName.c_str())) + { + throw std::string(std::string(lua_tostring(L, -1))); + } + + if (lua_pcall(L, 0, 0, 0)) + { + FILE_LOG(logERROR) << "LUA test fehlgeschlagen" << endl ; + } + + m_bUseLUAScript=true ; + FILE_LOG(logINFO) << "Successfully loaded LUA filter: " << FilterFileName ; + } + catch (const std::string &e) + { + FILE_LOG(logERROR) << "Error loading lua script: " << e; + } + + #endif + } + +} + + +SocketServer::~SocketServer() +{ + // Beim SocketManager abmelden + GetSocketsManager()->removeModule(this); + + #ifdef LUA + if (L!=NULL) + { + lua_close(L) ; + } + #endif +} + + +bool SocketServer::createListeningSocket() +{ + bool result=false; +#ifdef _WIN32 + /* Initialisiere TCP fuer Windows ("winsock") */ + short wVersionRequested; + WSADATA wsaData; + wVersionRequested = MAKEWORD (1, 1); + if (WSAStartup (wVersionRequested, &wsaData) != 0) { + ThrowMonitorException("Failed to init windows sockets (WSAStartup)") ; + //fprintf( stderr, "Failed to init windows sockets\n"); + //exit(1); + } +#endif + + /* Erzeuge das Socket */ + m_sock = socket( PF_INET, SOCK_STREAM, 0); + if (m_sock < 0) { + ThrowMonitorException("Failed to create listening socket") ; + //perror( "failed to create socket"); + //exit(1); + } + + + switch (m_ServerModus) + { + case SocketThread::fms32pro: + m_iPort=m_MonitorConfiguration->m_PortFMS32Pro ; + break ; + case SocketThread::crusader: + m_iPort=m_MonitorConfiguration->m_PortCrusader ; + break ; + case SocketThread::monitord: + default: + m_iPort=m_MonitorConfiguration->m_Port ; + break ; + } + + if ( (m_iPort<=0) && (m_iPort >65535)) + { + if (m_ServerModus==SocketThread::monitord) + { + m_iPort=SERVER_PORT ; + } else { + m_iPort=0 ; + } + } + /* Erzeuge die Socketadresse des Servers + * Sie besteht aus Typ und Portnummer */ + memset( &m_server, 0, sizeof (m_server)); + m_server.sin_family = AF_INET; + + if (m_MonitorConfiguration->m_BindIP=="") + { + m_server.sin_addr.s_addr = htonl( INADDR_ANY); + } else { + m_server.sin_addr.s_addr = (inet_addr(m_MonitorConfiguration->m_BindIP.c_str())); + } + m_server.sin_port = htons( m_iPort); + + int on = 1 ; +#ifndef WIN32 + setsockopt(m_sock,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)) ; +#else + setsockopt(m_sock,SOL_SOCKET,SO_REUSEADDR,(char*) &on,sizeof(on)) ; +#endif + + /* Erzeuge die Bindung an die Serveradresse + * (d.h. an einen bestimmten Port) */ + if (bind( m_sock, (struct sockaddr*)&m_server, sizeof( m_server)) < 0) { + // Verbindungsfehler ignorieren, damit die Nachrichten auf jeden Fall + // aus dem ModuleResultSet "gepumpt" werden ! + // + //perror( "can't bind socket"); + //exit(1); + } else { + /* Teile dem Socket mit, dass Verbindungswuensche + * von Clients entgegengenommen werden */ + listen( m_sock, 10); + result=true ; + + /** + * In globaler ManagerListe eintragen/anmelden + */ + GetSocketsManager()->addModule(this) ; + } + + + return result ; +} + +void *SocketServer::Thread() +{ + this->ThreadStarted() ; // Erstmal Bescheid geben, dass wir laufen + + if (createListeningSocket()) + { + initSocketThreads() ; + } + + + if (memLockOpen( 12345, & m_queueLock) < 0) { + ThrowMonitorException("memLockOpen failed") ; + } + + while (!m_bWantStop) + { + /* Bearbeite die Verbindungswünsche von Clients + * in einer Endlosschleife + * Der Aufruf von accept() blockiert solange, + * bis ein Client Verbindung aufnimmt, oder der timeout abgelaufen ist */ + + fd_set fdset ; + timeval tv ; + int result=0 ; + int maxHandle ; + m_bWantStop=false ; + while ((result==0) && (!m_bWantStop)) + { + tv.tv_sec=0; // Wartezeit auf Socketereignis, danach Kontrolle, ob ein "Sendeauftrag" vorliegt + tv.tv_usec=100000 ; + FD_ZERO(&fdset) ; // Den Socket m_sock ueberwachen ... + FD_SET(m_sock,&fdset); + + // Diese Zeile sollte man NICHT mit "1" uebersetzen ! + // Das geht voll daneben. Es muss m_sock+1 sein ! Auch bei einem (!) Socket ! + maxHandle = m_sock + 1; + + result= select(maxHandle, &fdset, &fdset, &fdset, &tv); // wartet Zeitraum wie in tv definiert + + if (FD_ISSET(m_sock,&fdset)>0) // Socket ereignis ? + { + result=1 ; + } + + // Neue Verbindungsanfrage ? + // Dann annehmen und als eigenen Thread laufen lassen + // + if (result>0) + { + int useSocket=-1 ; + + // Jetzt freien SocketThread suchen + for (int i=0;iIsRunning()) + { + useSocket=i ; + i=MAX_CLIENTS ; + } + } + + if ((useSocket>=MAX_CLIENTS) || (useSocket<0)) + { + // TODO zu viele Clients ! + ThrowMonitorException("Too many client connects") ; + perror("Zu viele Clients !\r\n") ; + exit (1) ; + } + + socklen_t sin_size = sizeof (sockaddr_in); + int fd = accept(m_sock,(sockaddr*) &socketThread[useSocket]->m_client,&sin_size); + FILE_LOG(logINFO) << "new connection from " << inet_ntoa(socketThread[useSocket]->m_client.sin_addr) ; + + // Thread mit dem oben angenommenen Socket starten + socketThread[useSocket]->setFD(fd) ; + socketThread[useSocket]->Start() ; + } + } + } + + // Listening Socket beenden + closesocket( m_sock); + + // Alle Clients beenden + FILE_LOG(logINFO) << "Beende alle Clients" ; + for (int i=0;iIsRunning()) + { + socketThread[i]->closeSocket() ; + FILE_LOG(logINFO) << i << ": closesocket done" ; + socketThread[i]->Kill() ; + FILE_LOG(logINFO) << i << ": kill done" ; + } + } + + // uns selbst beenden + usleep(1000) ; + //JThread::Kill() ; + return NULL ; +} + + +void SocketServer::initSocketThreads() +{ + int i ; + for (i=0;iIsRunning()) + { + m_bSkipDispatching=false ; + // erstmal ggf. LUA Filter aufrufen + #ifdef LUA + + if (m_bUseLUAScript==true) + { + int z ; + /* push functions and arguments */ + lua_getglobal(L, "filter"); /* function to be called */ + // start array structure + lua_newtable( L ); + int numCount=1 ; + for (ResultItemsMap::iterator iter=pRes->m_Items.begin(); iter!=pRes->m_Items.end(); ++iter) + { + { + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,iter->first.c_str(),199) ; + strncpy(zwei,iter->second.c_str(),199) ; + + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + } + } + + // noch clientIP, authenticated und loginname dazupacken + + // Authenticated + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_authenticated",199) ; + if (socketThread[i]->isClientAuthenticated()) + { + strncpy(zwei,"1",199) ; + } else { + strncpy(zwei,"0",199) ; + } + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // ClientIP + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_ip",199) ; + strncpy(zwei,socketThread[i]->getClientIP().c_str(),199) ; + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // Loginname + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_loginname",199) ; + strncpy(zwei,socketThread[i]->getClientLogin().c_str(),199) ; + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // Clienttype + memset(eins,0,200) ; + memset(zwei,0,200) ; + strncpy(eins,"client_type",199) ; + switch (m_ServerModus) + { + case SocketThread::monitord: + strncpy(zwei,"monitord",199) ; + break ; + case SocketThread::fms32pro: + strncpy(zwei,"fms32",199) ; + break ; + case SocketThread::crusader: + strncpy(zwei,"crusader",199) ; + break ; + default: + strncpy(zwei,"unknown",199) ; + break ; + } + lua_pushstring( L, eins ); + lua_pushstring( L, zwei ); + lua_rawset( L, -3 ); + numCount++ ; + + // set the number of elements (index to the last array element) + lua_pushliteral( L, "n" ); + lua_pushnumber( L, numCount-1 ); + lua_rawset( L, -3 ); + + // set the name of the array that the script will access + lua_setglobal( L, "arg" ); + + /* do the call (2 arguments, 1 result) */ + if (lua_pcall(L, 0, LUA_MULTRET, 0) != 0) { + FILE_LOG(logERROR) << "Fehler beim Aufruf lua dispatcher script:" << lua_tostring(L, -1); + //error(L, "error running function `f': %s", + // lua_tostring(L, -1)); + } + + /* retrieve result */ + if (!lua_isnumber(L, -1)) { + FILE_LOG(logERROR) << "nicht-numerische Antwort vom lua dispatcher script" ; + //error(L, "function `f' must return a number"); + } + z = lua_tonumber(L, -1); + lua_pop(L, 1); /* pop returned value */ + FILE_LOG(logDEBUG1) << "lua Result (global dispatcher)" << z ; + + if (z==1) m_bSkipDispatching=true ; + } + #endif + + if (m_bSkipDispatching==false) + { + socketThread[i]->addResult(pRes) ; + } + } + + } +} + + +/* + * ----------------------------------------------------------- + * ThreadBase + * ----------------------------------------------------------- + */ + +ThreadBase::~ThreadBase() +{ +} + +ThreadBase::ThreadBase(int locknum) +{ + m_iLockNum= locknum ; + m_exitThread=false ; +} + +bool ThreadBase::createLock() +{ + if ( memLockCreate( m_iLockNum, &m_Lock) < 0) { + + ThrowMonitorException("memLockCreate failed for " + convertIntToString(m_iLockNum)) ; + } + return true; +} + +void ThreadBase::releaseLock() +{ + memLockDestroy(m_Lock) ; + +} + + +/* + * ----------------------------------------------------------- + * SocketThread + * ----------------------------------------------------------- + */ + +SocketThread::~SocketThread() +{ +} + +SocketThread::SocketThread(MonitorConfiguration *config, int locknum, int PortNum, SocketMode ServerMode) +: ThreadBase(locknum) +{ + m_MonitorConfiguration = config; + m_iPortNum = PortNum ; + m_ServerMode = ServerMode ; + ResetThreadVars() ; +} + +void SocketThread::setFD(int fd) +{ + m_fd=fd ; +} + +void SocketThread::ResetThreadVars() +{ + // Zuruecksetzen: + // Kein Socket zugewiesen + // Client ist nicht angemeldet + // Thread soll sich nicht beenden + // + + m_fd=0 ; + m_authenticated=false ; + m_exitThread=false ; + + // Commandbuffer loeschen + memset(m_CommandBuffer,0,MAX_COMMANDLINE) ; + +} + +void *SocketThread::Thread() +{ + if (m_fd==0) + { + ThrowMonitorException("SocketThread started wird fd=NULL") ; + return NULL ; + } + + this->ThreadStarted() ; // Erstmal Bescheid geben, dass wir laufen + createLock() ; + createSocket() ; + + FILE_LOG(logINFO) << "SocketThreads exits" ; + + releaseLock() ; + return NULL; +} + + +std::string SocketThread::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + return socketText ; +} + + +std::string SocketThread::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + return socketText ; +} + +std::string SocketThread::createFMSOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + + return socketText ; +} + +std::string SocketThread::createOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + + if (Result["typ"]=="fms") + { + socketText=createFMSOutputString(Result) ; + } + else if (Result["typ"]== "pocsag") + { + socketText=createPOCSAGOutputString(Result) ; + } + else if (Result["typ"]=="zvei") + { + socketText=createZVEIOutputString(Result) ; + } + + return socketText ; +} +void SocketThread::addResult(ModuleResultBase* pRes) +{ + std::string outText ; + + outText=createOutputString(*pRes); + addOutputText(outText) ; +} + +void SocketThread::addOutputText(std::string outText) +{ + memLock(m_Lock) ; + if (!(outText=="")) + { + m_outputStrings.insert(m_outputStrings.begin(),outText) ; + } + memUnlock(m_Lock) ; +} + +void SocketThread::say(const std::string& something) +{ + unsigned int len=send( m_fd, something.c_str(), something.length(), 0); + if (len!=something.length()) + { + FILE_LOG(logERROR) << "error sending date to client. thread exiting" ; + doLogout() ; + } +} + +void SocketThread::say(const char *something) +{ + unsigned int len = send( m_fd, something, strlen(something), 0); + if (len!=strlen(something)) + { + FILE_LOG(logERROR) << "error sending date to client. thread exiting" ; + doLogout() ; + } +} + +void SocketThread::processInput() +{ + +} + + +void SocketThread::doLogout() +{ + m_exitThread=true ; +} + + +void SocketThread::sayWelcome() +{ +} + +void SocketThread::sayGoodbye() +{ +} + +void SocketThread::createSocket() +{ + timeval tv ; + + if (m_fd < 0) { + ThrowMonitorException("accept failed") ; + //perror( "accept failed"); + //exit(1); + } + + // Hier ist die Sitzung noch nicht "authenticated" + fd_set fdset ; + + FD_ZERO(&fdset) ; + FD_SET(m_fd,&fdset); + + m_sClientIP= inet_ntoa(m_client.sin_addr) ; + + m_authenticated=false ; + // Gültige IP Adresse, die sich nicht anmelden muss ? + if (m_MonitorConfiguration->IsValidLogin("","",this->m_sClientIP)) + { + FILE_LOG(logINFO) << "login authentication (ip allowed): " << m_sClientIP ; + this->m_authenticated=true ; + } + + // FMS32Pro ist dafuer zu doof ;-) + // + if ((m_ServerMode==SocketThread::fms32pro)) + { + // TODO: IP Liste auch bei FMS32 anwenden ? dann nachfolgendes auskommentiert lassen + // this->m_authenticated=true ; + } + + m_CommandBuffer[0]='\0'; + + // Wir sagen natuerlich brav "Guten Tag" ... + sayWelcome() ; + + fd_set fdset_write ; + fd_set fdset_exceptions ; + + + for (;;) { + if (m_exitThread) + { + break ; + } + + // Fuer eine Sekunde auf Meldung am Port warten + tv.tv_sec=0 ; + tv.tv_usec=10000 ; + FD_ZERO(&fdset) ; + FD_SET(m_fd,&fdset); + + // Neu: write + exceptions + FD_ZERO(&fdset_write) ; + FD_ZERO(&fdset_exceptions) ; + //FD_SET(m_fd,&fdset_write); + FD_SET(m_fd,&fdset_exceptions); + + + int result = select(1, &fdset, NULL, &fdset_exceptions, &tv); + + if (FD_ISSET(m_fd,&fdset)>0) // Socket ereignis ? + { + FILE_LOG(logDEBUG) << "Socket reports read event" ; + result=1 ; + } + + if (FD_ISSET(m_fd,&fdset_write)>0) // Problem ? + { + FILE_LOG(logDEBUG) << "Socket reports write event" ; + result=0 ; + //m_exitThread=true ; + } + + if (FD_ISSET(m_fd,&fdset_exceptions)>0) // Problem ? + { + FILE_LOG(logDEBUG) << "Socket reports exception event" ; + result=0 ; + m_exitThread=true ; + } + + if (result>0) + { + char buffer[RECV_BUFFER] ; + char * posPtr ; + int gelesen ; + gelesen=recv (m_fd, buffer, RECV_BUFFER-1, 0) ; + if (gelesen<=0) // Nix am Port, aber doch Port Event ? + { + FILE_LOG(logINFO) << "recv()<=0 => socketthread exiting" ; + m_exitThread=true ; + } + buffer[gelesen]='\0'; + + /* gelesenen Puffer an evtl. vorhanden Reste im Kommandopuffer anhängen */ + strncat(m_CommandBuffer,buffer,MAX_COMMANDLINE-strlen(m_CommandBuffer)-1) ; + + /* Erst wenn mindestens eine Eingabezeile empfangen wurde, werden alle vollständigen Zeilen ausgewertet */ + while ((posPtr=strstr(m_CommandBuffer,"\r\n"))>0) + { + /* Puffer nach dem CRLF zwischenspeichern */ + char tempbuffer[MAX_COMMANDLINE] ; + tempbuffer[0]='\0'; + strncpy(tempbuffer,&posPtr[2],MAX_COMMANDLINE) ; + + /* Kommando mit dem Zeilenende beenden */ + posPtr[0]='\0'; + + processInput() ; + + /* restlichen Puffer nach dem CRLF wiederherstellen */ + strncpy(m_CommandBuffer,tempbuffer,MAX_COMMANDLINE) ; + } + + } else + { + // Nix tun + } + + // Gibt es etwas zu senden ? + // + memLock(m_Lock) ; + while (!m_outputStrings.empty()) + { + std::string retString=m_outputStrings.back() ; + + if (m_authenticated) + { + retString.push_back('\r') ; + retString.push_back('\n') ; + say(retString) ; + } + m_outputStrings.pop_back() ; + } + memUnlock(m_Lock) ; + } + + closesocket(m_fd); + ResetThreadVars() ; +} + +std::string SocketThread::getClientIP() +{ + return (m_sClientIP) ; +} + +std::string SocketThread::getClientLogin() +{ + return (m_loginname) ; +} + +bool SocketThread::isClientAuthenticated() +{ + return (m_authenticated) ; +} + +void SocketThread::closeSocket() +{ + closesocket( m_fd); +} + + +bool SocketThread::paramIsHex(int param) +{ + // TODO + return true ; +} + +bool SocketThread::paramIsBase64(int param) +{ + // TODO + return true ; +} + + +bool SocketThread::HexToString(int param, std::string &result) +{ + return convertHexToString(m_cmdParam[param],result); +} + +// ---------------------------------------- +//MonitorSocketsManager + +MonitorSocketsManager *GlobalMonitorSocketsManager=NULL; +MonitorSocketsManager* GetSocketsManager() { + if (GlobalMonitorSocketsManager==NULL) { + GlobalMonitorSocketsManager = new MonitorSocketsManager(); + } + return (GlobalMonitorSocketsManager); +} + +MonitorSocketsManager::MonitorSocketsManager() +{ + FILE_LOG(logDEBUG) << "SocketManager erstellt" ; + + if ( memLockCreate( 12347, & m_MemLock) < 0) { + ThrowMonitorException("SocketsManager: memLockCreate failed") ; + } + + m_bStop=false ; +} + + +MonitorSocketsManager::~MonitorSocketsManager() +{ +} + + +bool MonitorSocketsManager::addModule(SocketServer* pServer) +{ + m_Modules.push_back(pServer) ; + + return true ; +} + + +bool MonitorSocketsManager::dispatchResult(ModuleResultBase *pRes) +{ + tMonitorSocketServerVector::iterator i ; + + for (i= m_Modules.begin(); i< m_Modules.end(); i++) + { + (*i)->addResult(pRes) ; + } + return true ; +} + + +bool MonitorSocketsManager::removeModule(SocketServer* pServer) +{ + return true ; +} diff --git a/monitord/SocketServer.h b/monitord/SocketServer.h new file mode 100644 index 0000000..275d705 --- /dev/null +++ b/monitord/SocketServer.h @@ -0,0 +1,185 @@ +#ifndef SOCKETSERVER_H_ +#define SOCKETSERVER_H_ + +#include +#include "MonitorModulesResults.h" +#include "MonitorConfiguration.h" +#include "memlock.h" + +#include "MonitorSignals.h" +#ifdef PLUGINS + #include "plugins/mplugin.h" +#endif + +#ifdef _WIN32 + /* Headerfiles für Windows */ + #include + #include +#else + /* Headerfiles für Unix/Linux */ + #include + #include + #include + #include + #define closesocket(s) close(s) +#endif + +/* sofern lua aktiviert ist ? -> ifdef noetig ? */ +#include "lua.hpp" + +#define MAX_CLIENTS 50 +#define RECV_BUFFER 512 +#define MAX_COMMANDLINE 1024 +#define MAX_PARAMS 9 + + +class ThreadBase : public JThread +{ +public: + ThreadBase(int LOCKNUM); + virtual ~ThreadBase(); + virtual void *Thread() = 0 ; + virtual void addResult(ModuleResultBase* pRes)=0 ; + + MonitorConfiguration *m_MonitorConfiguration ; +protected: + virtual void ResetThreadVars(){} ; + MEMLOCK m_Lock ; + bool m_exitThread ; + int m_iLockNum ; + bool createLock() ; + void releaseLock() ; +}; + + +/** + * @brief Repraesentiert immer genau einen verbunden Client. + * + * Der SocketThread wird fuer jeden verbundenen Client gestartet. Er prueft die Anmeldung + * und gibt die Daten weiter, die vom Master-Thread SocketServer an ihn weitergeleitet werden + */ +class SocketThread : public ThreadBase +{ +public: + enum SocketMode {monitord,crusader,fms32pro} ; + + //SocketThread(int LOCKNUM, int PortNum); + SocketThread(MonitorConfiguration *config, int LOCKNUM, int PortNum, SocketMode ServerMode=monitord); + virtual ~SocketThread(); + virtual void *Thread() ; + virtual void addResult(ModuleResultBase* pRes) ; + void setFD(int fd) ; + void addOutputText(std::string outText) ; + void closeSocket() ; + + std::string getClientLogin() ; + std::string getClientIP() ; + bool isClientAuthenticated() ; + struct sockaddr_in m_client; // war sockaddr_in + +protected: + MonitorConfiguration m_MonitorConfig; + SocketMode m_ServerMode ; + bool m_authenticated ; + int m_fd; + int m_iPortNum ; + char m_CommandBuffer[MAX_COMMANDLINE] ; + int m_cmd; + int m_paramCount ; + std::string m_cmdString; + std::string m_cmdParam[MAX_PARAMS] ; + std::string m_sClientIP ; + std::vector m_outputStrings ; + std::string m_loginname ; + + virtual std::string createFMSOutputString(ModuleResultBase Result); //< Erstellt die Ausgaben fuer FMS + virtual std::string createPOCSAGOutputString(ModuleResultBase Result); //< Erstellt die Ausgaben fuer POCSAG + virtual std::string createZVEIOutputString(ModuleResultBase Result); //< Erstellt die Ausgaben fuer ZVEI + std::string createOutputString(ModuleResultBase Result) ; + + virtual void ResetThreadVars() ; + void say(const std::string& something) ; + void say(const char* something) ; + virtual void sayWelcome() ; + virtual void sayGoodbye() ; + void createSocket() ; + virtual void processInput() ; + + // Kommandos auf reine HEX Characters pruefen + // + bool paramIsHex(int param) ; + bool paramIsBase64(int param) ; + bool HexToString(int param, std::string& result) ; + bool StringToHex(const std::string& input, std::string &result) ; + + void doLogout() ; // 299 +}; + +/** + * @brief Oeffnet den TCP Socket und nimmt Verbindungsanfragen an. + * + * Der SocketServer oeffnet den listening port und startet fuer jeden Client, der sich + * verbindet einen Thread vom Typ SocketThread. + */ + +class SocketServer : public JThread +{ +public: + SocketServer(MonitorConfiguration* config, int iLockStartwert=0); + SocketServer(MonitorConfiguration* config, std::string FilterFileName , int iLockStartwert=0); + virtual ~SocketServer(); + virtual void *Thread() ; + unsigned int m_iPort ; + int m_iLockStartwert ; + SocketThread::SocketMode m_ServerModus ; + MEMLOCK m_queueLock ; + MODULERESULTSET m_queue ; + void addResult(ModuleResultBase* pRes) ; + bool m_bWantStop ; +protected: + int m_sock ; + struct sockaddr_in m_server ; + SocketThread* socketThread[MAX_CLIENTS] ; + MonitorConfiguration *m_MonitorConfiguration ; + bool createListeningSocket() ; + void initSocketThreads() ; + + bool m_bSkipDispatching ; + #ifdef LUA + lua_State *L; + bool m_bUseLUAScript ; + #endif +} ; + + +/** + * @brief Verwaltet alle SocketModule + */ + +typedef std::vector< SocketServer*> tMonitorSocketServerVector ; + +class MonitorSocketsManager +{ +public: + + + MonitorSocketsManager() ; + virtual ~MonitorSocketsManager() ; + bool addModule(SocketServer* pServer); + bool removeModule(SocketServer *pServer) ; + bool dispatchResult(ModuleResultBase *pRes) ; +protected: + MEMLOCK m_MemLock ; + tMonitorSocketServerVector m_Modules ; + bool m_bStop ; +}; + +extern MonitorSocketsManager *GlobalMonitorSocketsManager ; +MonitorSocketsManager* GetSocketsManager() ; + +// in SocketServer.cpp als globale Variable definiert +//extern tMonitorSocketServerVector globalRegisteredSocketServers ; + + + +#endif /*SOCKETSERVER_H_*/ diff --git a/monitord/SocketThreadCrusader.cpp b/monitord/SocketThreadCrusader.cpp new file mode 100644 index 0000000..821931c --- /dev/null +++ b/monitord/SocketThreadCrusader.cpp @@ -0,0 +1,177 @@ +#include "SocketThreadCrusader.h" +#include +#include "MonitorLogging.h" +#include "convert.h" + +using namespace std ; + +SocketThreadCrusader::SocketThreadCrusader(MonitorConfiguration *config, int LOCKNUM, int PortNum) + : SocketThread(config, LOCKNUM, PortNum, monitord) +{ + telegrammCounter=0 ; +} + +SocketThreadCrusader::~SocketThreadCrusader() +{ +} + +void SocketThreadCrusader::sayWelcome() +{ +} + +std::string SocketThreadCrusader::createFMSOutputString(ModuleResultBase Result) +{ + std::string baustufeCString, richtungCString ; + std::string counterCString ; + std::string socketText ; + + baustufeCString = convertStringBoolText (Result["baustufe"]); + richtungCString = convertStringBoolText (Result["richtung"]); + + counterCString=convertIntToString(telegrammCounter++) ; + + + socketText = Result["datum"] // dateStr + + "#![]!#" + Result["uhrzeit"] //timeStr + + "#![]!#" + Result["fmskennung"] // fahrzeugKennung + + "#![]!#" + Result["status"] // statusString + + "#![]!#" + baustufeCString + + "#![]!#" + richtungCString + + "#![]!#" + Result["tki"] + + "#![]!#-1#![]!#false#![]!#false#![]!#" + counterCString ; + + /* + if ( (Result["textuebertragung"].size()>0) && (convertToInt(Result["status"])==10)) + { + socketText+= "#![]!#" + Result["textuebertragung"] + + "#![]!#" ; + } + */ + + return socketText ; + +} + +std::string SocketThreadCrusader::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string hexText ; + std::string counterCString ; + + convertStringToHex(Result["text"],hexText) ; + counterCString=convertIntToString(telegrammCounter++) ; + + socketText = Result["datum"] + + "#![]!#" + Result["uhrzeit"] + + "#![]!#" + Result["zvei"] + + "#![]!#16#![]!#false#![]!#true#![]!#-1#![]!#-1#![]!#false#![]!#false#![]!#" + counterCString + + "#![]!#Melderalarm#![]!#" + ; + + return socketText ; +} + +std::string SocketThreadCrusader::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string hexText ; + std::string counterCString ; + + counterCString=convertIntToString(telegrammCounter++) ; + convertStringToHex(Result["text"],hexText) ; + + socketText = Result["datum"] + + "#![]!#" + Result["uhrzeit"] + + "#![]!#" + Result["ric"] + Result["subhex"] + + "#![]!#17#![]!#false#![]!#true#![]!#0#![]!#-1#![]!#false#![]!#false#![]!#" + counterCString + + "#![]!#" + Result["text"] + + "#![]!#" + ; + return socketText ; +} + +void SocketThreadCrusader::processInput() +{ + // Anmeldung ? + std::string Kommando=m_CommandBuffer ; + + if (Kommando.substr(0,5)=="PASS:") + { + std::string password=Kommando.substr(5) ; + checkLogin(password) ; + } + else if (Kommando=="ClientCiao") + { + doLogout() ; + } else if (Kommando.substr(8, 6) == "#![]!#") { + ModuleResultBase *pfms = new ModuleResultBase(); + size_t position; + std::string datum, zeit, fmskennung, status, a, b, c, d, e, f, g, text; + /* Status im Crusader manuell gesetzt: + * 23.07.08#![]!#22:19:36#![]!#93185811#![]!#7#![]!#true#![]!#false#![]!#3#![]!#1#![]!#false#![]!#true#![]!#-1#![]!#7 TelegrammText#![]!# + */ + FILE_LOG (logDEBUG) << "manueller Status von Crusader Client empfangen."; + + /* es wird nur FMS betrachtet */ + pfms->set ("typ", "fms"); + /* Feld 1: Datum */ + pfms->set ("datum", Kommando.substr(0, 8)); + /* Feld 2: Uhrzeit */ + position = Kommando.find_first_of(CRUSADER_DELIMITER) + 6; + pfms->set ("uhrzeit", Kommando.substr(position, 8)); + /* Feld 3: FMS Kennung */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + fmskennung = Kommando.substr(position, 8); + pfms->set ("fmskennung", fmskennung); + pfms->set ("bosdezimal", convertIntToString (convertNibbleToInt (fmskennung[0]))); + pfms->set ("landdezimal", convertIntToString (convertNibbleToInt (fmskennung[1]))); + pfms->set ("bos", fmskennung.substr(0, 1)); + pfms->set ("land", fmskennung.substr(1, 1)); + pfms->set ("ort", fmskennung.substr(2, 2)); + pfms->set ("kfz", fmskennung.substr(4, 4)); + /* Feld 4: Fahrzeugstatus */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + status = Kommando.substr(position, 1); + pfms->set ("status", status); + pfms->set ("statusdezimal", convertIntToString (convertNibbleToInt (status[0]))); + // TODO Status 16 bedeutet ZVEI und 17 POCSAG + /* Feld 5: Baustufe */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("baustufe", convertStringTextBool(Kommando.substr(position, Kommando.find_first_of(CRUSADER_DELIMITER, position) - position))); + /* Feld 6: Richtung */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("richtung", convertStringTextBool(Kommando.substr(position, Kommando.find_first_of(CRUSADER_DELIMITER, position) - position))); + /* Feld 7: TKI */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("tki", Kommando.substr(position, 1)); + /* Feld 8: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 9: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 10: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 11: ? */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + /* Feld 12: Text */ + position = Kommando.find_first_of(CRUSADER_DELIMITER, position) + 6; + pfms->set ("textuebertragung", Kommando.substr(position, Kommando.find_first_of(CRUSADER_DELIMITER, position) - position)); + + FILE_LOG(logDEBUG) << "Debug(FMS vom Crusader):" << endl << (*pfms); + + GlobalDispatcher->addResult (pfms); + } else { + FILE_LOG (logDEBUG) << "received from Crusader: " << m_CommandBuffer ; + } +} + +void SocketThreadCrusader::checkLogin(std::string password) +{ + if (m_MonitorConfiguration->IsValidLogin(m_MonitorConfiguration->m_crusaderUsername,password,m_sClientIP)) + { + m_authenticated=true ; + FILE_LOG(logINFO) << "login accepted (crusader pw allowed): from ip " << m_sClientIP ; + } else { + FILE_LOG(logINFO) << "login denied (crusader pw not allowed): " << password << " from ip " << m_sClientIP ; + } +} + diff --git a/monitord/SocketThreadCrusader.h b/monitord/SocketThreadCrusader.h new file mode 100644 index 0000000..d3a5574 --- /dev/null +++ b/monitord/SocketThreadCrusader.h @@ -0,0 +1,26 @@ +#ifndef SOCKETTHREADCRUSADER_H_ +#define SOCKETTHREADCRUSADER_H_ + +#include "SocketServer.h" + +#define CRUSADER_DELIMITER "#![]!#" + +class SocketThreadCrusader : public SocketThread +{ +public: + SocketThreadCrusader(MonitorConfiguration *config, int LOCKNUM, int PortNum); + virtual ~SocketThreadCrusader(); + +protected: + virtual void processInput() ; + void checkLogin(std:: string) ; + virtual void sayWelcome() ; + bool parseCommand() ; + virtual std::string createFMSOutputString(ModuleResultBase Result) ; + virtual std::string createZVEIOutputString(ModuleResultBase Result) ; + virtual std::string createPOCSAGOutputString(ModuleResultBase Result) ; + unsigned long telegrammCounter ; + +}; + +#endif /*SOCKETTHREADCRUSADER_H_*/ diff --git a/monitord/SocketThreadFMS32.cpp b/monitord/SocketThreadFMS32.cpp new file mode 100644 index 0000000..05185a8 --- /dev/null +++ b/monitord/SocketThreadFMS32.cpp @@ -0,0 +1,129 @@ +#include "SocketThreadFMS32.h" +#include "MonitorLogging.h" + +SocketThreadFMS32::SocketThreadFMS32(MonitorConfiguration *config, int LOCKNUM, int PortNum) + : SocketThread(config, LOCKNUM, PortNum, fms32pro) +{ +} + +SocketThreadFMS32::~SocketThreadFMS32() +{ +} + +void SocketThreadFMS32::sayWelcome() +{ + std::string welcomeStringFMS32Pro="#Verbindung zu FMS32-Server erfolgreich hergestellt!\r\n#Verbunden mit Anschluss: " ; + std::string Port=convertIntToString(this->m_iPortNum) ; + + say(welcomeStringFMS32Pro + Port + "\r\nAN" + Port+"\r\n") ; +} + +void SocketThreadFMS32::processInput() +{ + std::string Kommando=m_CommandBuffer; + + if (Kommando == "AllFMS") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (�bertragung aktueller Fahrzeugstatus aller Fahrzeuge)."; + } else if (Kommando == "GetAlarmListe") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (GetAlarmListe)."; + } else if (Kommando.substr(0, 12) == "GetFMSListe\t") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (�bertragung Statuswechsel der letzten n Stunden)."; + } else if (Kommando.substr(0, 12) == "GetPOCListe\t") { + FILE_LOG (logDEBUG) << "FMS32 Kommando nicht implementiert (�bertragung POCSAG Rufe der letzten n Stunden)."; + } else { + FILE_LOG (logDEBUG) << "received from FMS32: " << m_CommandBuffer; + } + + return; +} + + +std::string SocketThreadFMS32::createFMSOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string Feld10="0"; + std::string Feld11="0" ; + std::string Feld12="0" ; + std::string Feld13="" ; + std::string Feld14="0" ; + std::string Feld15="0" ; + + socketText = std::string("FMSTlg") + + "\t" + Result["fmskennung"] //fahrzeugKennung + + "\t" + Result["bosdezimal"] //bosDezimalString // kein HEX + + "\t" + Result["landdezimal"] //landDezimalString // kein HEX + + "\t" + Result["bos"]+Result["land"]+Result["ort"] // bosString + landString + ortString + + "\t" + Result["kfz"] + + "\t" + Result["statusdezimal"] // kein HEX + + "\t" + Result["baustufe"] //baustufeString + + "\t" + Result["richtung"] //richtungString + + "\t" + Result["tki"] //tkiString + ; + if (Result["textuebertragung"].size()>0) + { + if (convertToInt(Result["richtung"])==0) + { + // Vom Fahrzeug, Ortstaste wird im Moment + // nicht unterstuetzt + Feld10="2"; + Feld11="0" ; + Feld12="0" ; + Feld13=Result["textuebertragung"] ; + Feld14="0" ; + Feld15="0" ; + } else if (convertToInt(Result["richtung"])==1) + { + // Von der Leitstelle + Feld10="0"; + Feld11="-1" ; + Feld12="0" ; + Feld13=Result["textuebertragung"] ; + Feld14="0" ; + Feld15="0" ; + } + } + socketText +="\t"+Feld10 // 10: Folgetelegramm vom Fzg 0=Nein,1=Ort,2=Sonst + + "\t"+Feld11 // 11: Folgetelegramm von der Lst 0=Nein, 1=ja + + "\t"+Feld12 // 12: Folgenummer dezimal (Feld10=1, Ortstaste) + + "\t"+Feld13 // 13: Folgetelegramm (vom Fzg in Hex, von der Lst in ASCII + + "\t"+Feld14 // 14: Soundkarte(0..3) + + "\t"+Feld15 // 15: Kanal (0,1) + ; + return socketText ; +} + +std::string SocketThreadFMS32::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + socketText = std::string("ZVEI") + + "\t" + Result["zvei"] + + "\t0\t0" + ; + + return socketText ; +} + +std::string SocketThreadFMS32::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + std::string subString ; + int sub=0 ; + try { + sub = convertToInt( Result["sub"])+1 ; + } + catch (BadConversion) + { + sub=0 ; + FILE_LOG (logERROR) << "Error converting subaddress : " << Result["sub"] ; + } + + subString=convertIntToString(sub) ; + + socketText = std::string("POC") + + "\t" + Result["ric"] + + "\t" + subString //Funktionsbit + + "\t" + Result["text"] + + "\t0\t0" + ; + return socketText ; +} diff --git a/monitord/SocketThreadFMS32.h b/monitord/SocketThreadFMS32.h new file mode 100644 index 0000000..89ac707 --- /dev/null +++ b/monitord/SocketThreadFMS32.h @@ -0,0 +1,24 @@ +#ifndef SOCKETTHREADFMS32_H_ +#define SOCKETTHREADFMS32_H_ + +#include "SocketServer.h" + +/** + * FMS32-Pro Protokoll nach der Beschreibung in http://www.heirue-soft.de/neues321.pdf + * erstellt + */ +class SocketThreadFMS32 : public SocketThread +{ +public: + SocketThreadFMS32(MonitorConfiguration *config, int LOCKNUM, int PortNum); + virtual ~SocketThreadFMS32(); + +protected: + virtual void processInput() ; + virtual void sayWelcome() ; + virtual std::string createFMSOutputString(ModuleResultBase Result) ; + virtual std::string createZVEIOutputString(ModuleResultBase Result) ; + virtual std::string createPOCSAGOutputString(ModuleResultBase Result) ; +}; + +#endif /*SOCKETTHREADFMS32_H_*/ diff --git a/monitord/SocketThreadMonitord.cpp b/monitord/SocketThreadMonitord.cpp new file mode 100644 index 0000000..409ddd6 --- /dev/null +++ b/monitord/SocketThreadMonitord.cpp @@ -0,0 +1,418 @@ +#include "SocketThreadMonitord.h" +#include "config.h" +#include "Monitor.h" +#include +#include + +#include "MonitorLogging.h" + +const std::string welcomeString="100;" +std::string(PACKAGE_STRING)+ " READY\r\n"; +const std::string authenticateString="101:001\r\n" ; +const std::string illegalFormatString="101:004\r\n" ; + +const std::string CAPABILITY_MONITORD_VERSION="0020" ; +const std::string CAPABILITY_MONITORD_PROTOCOLVERSION="0004" ; + +using namespace std; + +SocketThreadMonitord::SocketThreadMonitord(MonitorConfiguration *config, int LOCKNUM, int PortNum) + : SocketThread(config, LOCKNUM, PortNum, monitord) +{ +} + +SocketThreadMonitord::~SocketThreadMonitord() +{ +} + +void SocketThreadMonitord::sayWelcome() +{ + say(welcomeString) ; +} + +bool SocketThreadMonitord::parseCommand() +{ + m_paramCount=0 ; + std::string parserTemp =m_CommandBuffer ; + std::string item ; // Aktueller Teil zwischen den Doppelpunkten + size_t len = 0 ; // Laenge bis zum naechsten Doppelpunkt + int itemCount=0; // Wievielter Parameter ? + bool lastItem=false ; // letzter Eintrag ? (fuer CR/LF interessant) + bool illegalCommand=false ; + int i ; + + for (i=0;i=0;i--) + { + if (m_MonitorConfiguration->m_sndConfig[i].iAktiv==1) + { + convertStringToHex(m_MonitorConfiguration->m_sndConfig[i].sChannelName0,hexString) ; + summe= 1*(m_MonitorConfiguration->m_sndConfig[i].iZVEI[0]) + + 2*(m_MonitorConfiguration->m_sndConfig[i].iFMS[0]) + + 4*(m_MonitorConfiguration->m_sndConfig[i].iPOC512[0]) + + 8*(m_MonitorConfiguration->m_sndConfig[i].iPOC1200[0]) + ; + say ("103:" + convertIntToString(2*i+1) + ":" + hexString + ":" + convertIntToString(summe) +"\r\n") ; + + convertStringToHex(m_MonitorConfiguration->m_sndConfig[i].sChannelName1,hexString) ; + summe= 1*(m_MonitorConfiguration->m_sndConfig[i].iZVEI[1]) + + 2*(m_MonitorConfiguration->m_sndConfig[i].iFMS[1]) + + 4*(m_MonitorConfiguration->m_sndConfig[i].iPOC512[1]) + + 8*(m_MonitorConfiguration->m_sndConfig[i].iPOC1200[1]) + ; + say ("103:" + convertIntToString(2*i) + ":" + hexString + ":" + convertIntToString(summe) +"\r\n") ; + } + } +#endif +} + + +void SocketThreadMonitord::startRecording(int seconds, int channel) +{ + int tempSeconds=0; + int tempChannel=0; + + bool bErrConversion=false ; + try + { + tempChannel=convertToInt(m_cmdParam[0]) ; + tempSeconds=convertToInt(m_cmdParam[1]) ; + } catch (BadConversion e) + { + bErrConversion=true ; + } + + if (bErrConversion==false) + { + seconds=tempSeconds ; + channel=tempChannel ; + } + + int sndCardNum =channel / 2 ; + int sndCardLeftRight=channel % 2 ; + + FILE_LOG(logDEBUG) << "Starte Aufnahme mit" << seconds << " Sekunden" << " auf Karte " << sndCardNum << ", Kanal=" << sndCardLeftRight << endl ; + std::string command=std::string("RECORD:" + convertIntToString(seconds)+ ":") + convertIntToString(channel) ; +#if 0 /* FIXME mu� noch umstrukturiert werden */ + std::string resultString =m_monitor.m_sndIn[sndCardNum].PluginCommand(sndCardLeftRight,command,this); + + if (resultString=="not accepted") + { + say ("101:009\r\n") ; + }; + + if (resultString=="not implemented") + { + say ("101:005\r\n") ; + }; +#endif +} +void SocketThreadMonitord::checkLogin() +{ + + + // if (m_authenticated==false) + // Auskommentiert: Auch bei freigeschalteter IP noch eine + // Anmeldung zulassen. Auth-Status wird bei falschem Benutzernamen aber + // nicht zur�ckgesetzt. Dient eher f�r Filter u.�. um ggf. h�here Rechte + // zu erlangen. Nur: Was antwortet man dem Client dann, wenn er das falsche PW ausgibt ? + // + { + if (m_paramCount>3) + { + std::string loginname,password ; + std::string protocol ; + try { + HexToString(0,loginname) ; + HexToString(1,password) ; + protocol= m_cmdParam[2] ; //HexToString(2,protocol) ; + } + catch (std::runtime_error err) + { + return ; + } + + if (protocol==CAPABILITY_MONITORD_PROTOCOLVERSION) + { + if (m_MonitorConfiguration->IsValidLogin(loginname,password,m_sClientIP)) + { + m_authenticated=true ; + m_loginname=loginname ; + FILE_LOG(logINFO) << "login accepted (user allowed): " << m_loginname << " from ip " << m_sClientIP ; + say ("100\r\n") ; // Login OK + } else { + say ("101:003\r\n") ; // Benutzername falsch + FILE_LOG(logINFO) <<"login denied: " << m_loginname << " from ip " << m_sClientIP ; + } + } else { + say ("101:008\r\n") ; // Falsche Protokollversion + FILE_LOG(logINFO) <<"login denied, incorrect protocol version: " << protocol << " from ip: " << m_sClientIP << " with username: " << loginname ; + } + } else { + FILE_LOG(logINFO) << "login with too few arguments detected" ; + say ("101:004;TOO FEW ARGUMENTS\r\n") ; // Fehler: Anfrage nicht verstanden ! + } + } + + /* + } else { + say ("100\r\n") ; // Login OK + } + */ + +} + + + +std::string SocketThreadMonitord::createFMSOutputString(ModuleResultBase Result) +{ + std::string socketText ; + std::string text ; + + convertStringToHex(Result["textuebertragung"],text) ; + + socketText = std::string("310") + + ":" + Result["timestamp"] + //+ ":" + Result["servernamehex"] + //+ ":" + Result["channelnamehex"] + + ":" + Result["channelnum"] + + ":" + Result["fmskennung"] + + ":" + Result["status"] + + ":" + Result["baustufe"] + + ":" + Result["richtung"] + + ":" + Result["tki"] ; + + if (text.size()>0) + { + socketText+= ":" + text ; + } ; + + std::transform ( socketText.begin(), + socketText.end(), + socketText.begin(), + (int(*)(int)) toupper); + + return socketText ; +} + +std::string SocketThreadMonitord::createZVEIOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + std::string hexText; + + convertStringToHex(Result["text"],hexText) ; + + socketText = std::string("300") + + ":" + Result["timestamp"] + //+ ":" + Result["servernamehex"] + //+ ":" + Result["channelnamehex"] + + ":" + Result["channelnum"] + + ":" + Result["zvei"] + + ":" + Result["weckton"] + + ":" + hexText ; + ; + std::transform (socketText.begin(), socketText.end(), socketText.begin(), + (int(*)(int)) toupper); + + return socketText ; +} + +std::string SocketThreadMonitord::createPOCSAGOutputString(ModuleResultBase Result) +{ + std::string socketText="" ; + std::string hexText; + + convertStringToHex(Result["text"],hexText) ; + + socketText = std::string("320") + + ":" + Result["timestamp"] + //+ ":" + Result["servernamehex"] + //+ ":" + Result["channelnamehex"] + + ":" + Result["channelnum"] + + ":" + Result["ric"] + + ":" + Result["sub"] + + ":" + hexText ; + ; + std::transform (socketText.begin(), socketText.end(), socketText.begin(), + (int(*)(int)) toupper); + return socketText ; +} diff --git a/monitord/SocketThreadMonitord.h b/monitord/SocketThreadMonitord.h new file mode 100644 index 0000000..2db2ddc --- /dev/null +++ b/monitord/SocketThreadMonitord.h @@ -0,0 +1,25 @@ +#ifndef SOCKETTHREADMONITORD_H_ +#define SOCKETTHREADMONITORD_H_ + +#include "SocketServer.h" + +class SocketThreadMonitord : public SocketThread +{ +public: + SocketThreadMonitord(MonitorConfiguration *config, int LOCKNUM, int PortNum); + virtual ~SocketThreadMonitord(); + +protected: + virtual void processInput() ; + void checkLogin() ; + virtual void sayWelcome() ; + bool parseCommand() ; + virtual std::string createFMSOutputString(ModuleResultBase Result) ; + virtual std::string createZVEIOutputString(ModuleResultBase Result) ; + virtual std::string createPOCSAGOutputString(ModuleResultBase Result) ; + void startRecording(int seconds=60, int channel=0) ; + void tellCapabilites() ; + void tellChannels() ; +}; + +#endif /*SOCKETTHREADMONITORD_H_*/ diff --git a/monitord/base64.cpp b/monitord/base64.cpp new file mode 100644 index 0000000..4179020 --- /dev/null +++ b/monitord/base64.cpp @@ -0,0 +1,104 @@ +#include "base64.h" +#include + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + + +static inline bool is_base64(unsigned char c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + +std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for(i = 0; (i <4) ; i++) + ret += base64_chars[char_array_4[i]]; + i = 0; + } + } + + if (i) + { + for(j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (j = 0; (j < i + 1); j++) + ret += base64_chars[char_array_4[j]]; + + while((i++ < 3)) + ret += '='; + + } + + return ret; + +} + +std::string base64_encode(const std::string & in_string) { + + const char *bytes_to_encode = in_string.c_str() ; + unsigned int in_len = in_string.length() ; + + return base64_encode((const unsigned char*) bytes_to_encode,in_len) ; +} + +std::string base64_decode(std::string const& encoded_string) { + int in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i ==4) { + for (i = 0; i <4; i++) + char_array_4[i] = base64_chars.find(char_array_4[i]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = i; j <4; j++) + char_array_4[j] = 0; + + for (j = 0; j <4; j++) + char_array_4[j] = base64_chars.find(char_array_4[j]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; +} diff --git a/monitord/base64.h b/monitord/base64.h new file mode 100644 index 0000000..4797606 --- /dev/null +++ b/monitord/base64.h @@ -0,0 +1,34 @@ +#ifndef BASE64_H_ +#define BASE64_H_ + +#include + +/** + * @brief kodiert den �bergebenen string ins base64 Format + * @author Stephan Effertz (buebchen) + * @param bytes_to_encode Ausgangszeichenkette + * @param len Laenge der Ausgangszeichenkette + */ +std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int len); + +/** + * @brief kodiert den �bergebenen string ins base64 Format + * @author Stephan Effertz (buebchen) + * @param s Ausgangszeichenkette + * + * Achtung diese Funktion kann keine Nullbytes umwandeln, da Nullbytes + * das Ende der Eingabe markieren + */ +std::string base64_encode(std::string const& s); + +/** + * @brief wandelt einen base64 kodierten String in den Originaltext + * @author Stephan Effertz (buebchen) + * @param s Base64 kodierter String + * @return dekodierter String + * + * Achtung kann zur Zeit keine Nullbytes verarbeiten ! + */ +std::string base64_decode(std::string const& s); + +#endif /*BASE64_H_*/ diff --git a/monitord/convert.h b/monitord/convert.h new file mode 100644 index 0000000..0c65c05 --- /dev/null +++ b/monitord/convert.h @@ -0,0 +1,298 @@ +#ifndef CONVERT_H_ +#define CONVERT_H_ + + // File: convert.h + #include + #include + #include + #include + +#include // TODO bis auf strcat/strlen alles C++ + + +/** + * @brief Fehlerklasse fuer Konvertierungsfehler + * @author Stephan Effertz (buebchen) + */ + + class BadConversion : public std::runtime_error { + public: + BadConversion(const std::string& s) + : std::runtime_error(s) + { } + }; + +/** + * @brief double (Fliesskommazahl) in String konvertieren + * @author Stephan Effertz (buebchen) + */ +inline double convertToDouble(const std::string& s) + { + std::istringstream i(s); + double x; + if (!(i >> x)) + throw BadConversion("convertToDouble(\"" + s + "\")"); + return x; + } + +/** + * @brief Integer nach String konvertieren + * @author Stephan Effertz (buebchen) + */ +inline std::string convertIntToString(const int& x) + { + + std::ostringstream o; + + if (!(o << x)) + throw BadConversion("convertIntoToString") ; + + return o.str(); +} + +/** + * @brief Integer nach Hexadezimal (string) konvertieren + * @author Stephan Effertz (buebchen) + */ +inline std::string convertIntToHexString(const int& x) + { + + std::ostringstream o; + + if (!(o << std::hex << x)) + throw BadConversion("convertIntoToString") ; + + return o.str(); +} + + /** + * @brief Zeichenkette nach Integer konvertieren (wie atoi) + * @author Stephan Effertz (buebchen) + */ +inline int convertToInt(const std::string& s) + { + std::istringstream i(s); + int x; + if (!(i >> x)) + throw BadConversion("convertToInt(\"" + s + "\")"); + return x; + } + + /** + * @brief Konvertiert Nibble (0..F) nach Integer (0..15) + * @author Stephan Effertz (buebchen) + */ + inline int convertNibbleToInt(const char& c) + { + int x ; + if (c >='0' && c<='9') + { + x=c-'0' ; + } else if (c >='A' && c<='F') + { + x=c-'A'+10 ; + } else if (c >='a' && c<='f') + { + x=c-'a'+10 ; + } else { + throw BadConversion("convertNibbleToInt"); + } + return x ; + } + + /** + * @brief Konvertiert Integer (0..15) nach Nibble (0..F) + * @author Stephan Effertz (buebchen) + */ + inline char convertIntToNibble(const unsigned int& intVal) + { + char c ; + if ((intVal>16) || (intVal <0)) + { + std::string iString = convertIntToString(intVal) ; + throw BadConversion("convertIntToNibble: integer out of range : "+iString); + } + + if (intVal<10) + { + c='0'+intVal ; + } + else + { + c='a'+(intVal-10) ; + } + return c ; + } + + /** + * @brief Konvertiert String in einen HEX-String + * @author Stephan Effertz (buebchen) + */ + inline std::string convertStringToHex(const std::string& input) + { + std::string result; + result.clear() ; + int i=0 ; + + while (input.length()-i>0) + { + unsigned char temp=input[i] ; + + unsigned char c1,c2 ; + + c2=convertIntToNibble(temp & 0xf) ; // quasi: LSB + c1=convertIntToNibble(temp >>4) ; // quasi: MSB + + result.push_back(c1) ; + result.push_back(c2) ; + + i++; + } + + return result ; + } + + /** + * @brief Konvertiert String in einen HEX-String + * @author Stephan Effertz (buebchen) + */ + inline bool convertStringToHex(const std::string& input, std::string &result) +{ + result.clear() ; + int i=0 ; + + while (input.length()-i>0) + { + unsigned char temp=input[i] ; + + unsigned char c1,c2 ; + + c2=convertIntToNibble(temp & 0xf) ; // quasi: LSB + c1=convertIntToNibble(temp >>4) ; // quasi: MSB + + result.push_back(c1) ; + result.push_back(c2) ; + + i++; + } + + return true ; +} + +/** + * @brief Konvertiert String in einen HEX-String + * @author Stephan Effertz (buebchen) + */ +inline bool convertStringToHex(char input[], char* result) +{ + //result.clear() ; + int i=0 ; + + char byteString[3] ; + + while (strlen(input)-i>0) + { + unsigned char temp=input[i] ; + + unsigned char c1,c2 ; + + c2=convertIntToNibble(temp & 0xf) ; // quasi: LSB + c1=convertIntToNibble(temp >>4) ; // quasi: MSB + + byteString[0]=c1 ; + byteString[1]=c2 ; + byteString[2]=0 ; + + strcat (result,byteString) ; + i++; + } + + return true ; +} + +/** + * @brief Konvertiert HEX-String in einen String + * @author Stephan Effertz (buebchen) + */ +inline bool convertHexToString(char input[], std::string &result) +{ + result.clear() ; + char tempChar ; + int i=0 ; + + + while ((strlen(input)-i) >= 2) + { + tempChar = convertNibbleToInt(input[i])*16 + convertNibbleToInt(input[i+1]) ; + result.push_back(tempChar) ; + i=i+2 ; + } + return true ; +} + +/** + * @brief Konvertiert HEX-String in einen String + * @author Stephan Effertz (buebchen) + */ +inline bool convertHexToString(char input[], char result[]) +{ + char tempChar ; + int i=0 ; + + while ((strlen(input)-i) >= 2) + { + tempChar = convertNibbleToInt(input[i])*16 + convertNibbleToInt(input[i+1]) ; + result[i/2]=tempChar ; + i=i+2 ; + } + result[i/2]=0 ; + return true ; +} + +/** + * @brief Konvertiert HEX-String in einen String + * @author Stephan Effertz (buebchen) + */ +inline bool convertHexToString(std::string input, std::string &result) +{ + result.clear() ; + char tempChar ; + int i=0 ; + + + while ((input.length()-i) >= 2) + { + tempChar = convertNibbleToInt(input[i])*16 + convertNibbleToInt(input[i+1]) ; + result.push_back(tempChar) ; + i=i+2 ; + } + return true ; +} + +inline const char *convertStringBoolText(const std::string &number) +{ + const char *result; + if (number == "0") { + result = "false"; + } else if (number == "1") { + result = "true"; + } else { + throw BadConversion("convertStringBoolText"); + } + return result; +} + +inline const char *convertStringTextBool(const std::string &text) +{ + const char *result; + if (text == "false") { + result = "0"; + } else if (text == "true") { + result = "1"; + } else { + throw BadConversion("convertStringTextBool"); + } + return result; +} + +#endif /*CONVERT_H_*/ diff --git a/monitord/costab.cpp b/monitord/costab.cpp new file mode 100644 index 0000000..f61b2b0 --- /dev/null +++ b/monitord/costab.cpp @@ -0,0 +1,394 @@ +#include "stdafx.h" + +#pragma warning( disable : 4305 ) + +int costabi[0x400] = { + 32767, 32766, 32764, 32761, 32757, 32751, 32744, 32736, + 32727, 32717, 32705, 32692, 32678, 32662, 32646, 32628, + 32609, 32588, 32567, 32544, 32520, 32495, 32468, 32441, + 32412, 32382, 32350, 32318, 32284, 32249, 32213, 32176, + 32137, 32097, 32056, 32014, 31970, 31926, 31880, 31833, + 31785, 31735, 31684, 31633, 31580, 31525, 31470, 31413, + 31356, 31297, 31236, 31175, 31113, 31049, 30984, 30918, + 30851, 30783, 30713, 30643, 30571, 30498, 30424, 30349, + 30272, 30195, 30116, 30036, 29955, 29873, 29790, 29706, + 29621, 29534, 29446, 29358, 29268, 29177, 29085, 28992, + 28897, 28802, 28706, 28608, 28510, 28410, 28309, 28208, + 28105, 28001, 27896, 27790, 27683, 27575, 27466, 27355, + 27244, 27132, 27019, 26905, 26789, 26673, 26556, 26437, + 26318, 26198, 26077, 25954, 25831, 25707, 25582, 25456, + 25329, 25201, 25072, 24942, 24811, 24679, 24546, 24413, + 24278, 24143, 24006, 23869, 23731, 23592, 23452, 23311, + 23169, 23027, 22883, 22739, 22594, 22448, 22301, 22153, + 22004, 21855, 21705, 21554, 21402, 21249, 21096, 20942, + 20787, 20631, 20474, 20317, 20159, 20000, 19840, 19680, + 19519, 19357, 19194, 19031, 18867, 18702, 18537, 18371, + 18204, 18036, 17868, 17699, 17530, 17360, 17189, 17017, + 16845, 16672, 16499, 16325, 16150, 15975, 15799, 15623, + 15446, 15268, 15090, 14911, 14732, 14552, 14372, 14191, + 14009, 13827, 13645, 13462, 13278, 13094, 12909, 12724, + 12539, 12353, 12166, 11980, 11792, 11604, 11416, 11227, + 11038, 10849, 10659, 10469, 10278, 10087, 9895, 9703, + 9511, 9319, 9126, 8932, 8739, 8545, 8351, 8156, + 7961, 7766, 7571, 7375, 7179, 6982, 6786, 6589, + 6392, 6195, 5997, 5799, 5601, 5403, 5205, 5006, + 4807, 4608, 4409, 4210, 4011, 3811, 3611, 3411, + 3211, 3011, 2811, 2610, 2410, 2209, 2009, 1808, + 1607, 1406, 1206, 1005, 804, 603, 402, 201, + 0, -201, -402, -603, -804, -1005, -1206, -1406, + -1607, -1808, -2009, -2209, -2410, -2610, -2811, -3011, + -3211, -3411, -3611, -3811, -4011, -4210, -4409, -4608, + -4807, -5006, -5205, -5403, -5601, -5799, -5997, -6195, + -6392, -6589, -6786, -6982, -7179, -7375, -7571, -7766, + -7961, -8156, -8351, -8545, -8739, -8932, -9126, -9319, + -9511, -9703, -9895, -10087, -10278, -10469, -10659, -10849, + -11038, -11227, -11416, -11604, -11792, -11980, -12166, -12353, + -12539, -12724, -12909, -13094, -13278, -13462, -13645, -13827, + -14009, -14191, -14372, -14552, -14732, -14911, -15090, -15268, + -15446, -15623, -15799, -15975, -16150, -16325, -16499, -16672, + -16845, -17017, -17189, -17360, -17530, -17699, -17868, -18036, + -18204, -18371, -18537, -18702, -18867, -19031, -19194, -19357, + -19519, -19680, -19840, -20000, -20159, -20317, -20474, -20631, + -20787, -20942, -21096, -21249, -21402, -21554, -21705, -21855, + -22004, -22153, -22301, -22448, -22594, -22739, -22883, -23027, + -23169, -23311, -23452, -23592, -23731, -23869, -24006, -24143, + -24278, -24413, -24546, -24679, -24811, -24942, -25072, -25201, + -25329, -25456, -25582, -25707, -25831, -25954, -26077, -26198, + -26318, -26437, -26556, -26673, -26789, -26905, -27019, -27132, + -27244, -27355, -27466, -27575, -27683, -27790, -27896, -28001, + -28105, -28208, -28309, -28410, -28510, -28608, -28706, -28802, + -28897, -28992, -29085, -29177, -29268, -29358, -29446, -29534, + -29621, -29706, -29790, -29873, -29955, -30036, -30116, -30195, + -30272, -30349, -30424, -30498, -30571, -30643, -30713, -30783, + -30851, -30918, -30984, -31049, -31113, -31175, -31236, -31297, + -31356, -31413, -31470, -31525, -31580, -31633, -31684, -31735, + -31785, -31833, -31880, -31926, -31970, -32014, -32056, -32097, + -32137, -32176, -32213, -32249, -32284, -32318, -32350, -32382, + -32412, -32441, -32468, -32495, -32520, -32544, -32567, -32588, + -32609, -32628, -32646, -32662, -32678, -32692, -32705, -32717, + -32727, -32736, -32744, -32751, -32757, -32761, -32764, -32766, + -32767, -32766, -32764, -32761, -32757, -32751, -32744, -32736, + -32727, -32717, -32705, -32692, -32678, -32662, -32646, -32628, + -32609, -32588, -32567, -32544, -32520, -32495, -32468, -32441, + -32412, -32382, -32350, -32318, -32284, -32249, -32213, -32176, + -32137, -32097, -32056, -32014, -31970, -31926, -31880, -31833, + -31785, -31735, -31684, -31633, -31580, -31525, -31470, -31413, + -31356, -31297, -31236, -31175, -31113, -31049, -30984, -30918, + -30851, -30783, -30713, -30643, -30571, -30498, -30424, -30349, + -30272, -30195, -30116, -30036, -29955, -29873, -29790, -29706, + -29621, -29534, -29446, -29358, -29268, -29177, -29085, -28992, + -28897, -28802, -28706, -28608, -28510, -28410, -28309, -28208, + -28105, -28001, -27896, -27790, -27683, -27575, -27466, -27355, + -27244, -27132, -27019, -26905, -26789, -26673, -26556, -26437, + -26318, -26198, -26077, -25954, -25831, -25707, -25582, -25456, + -25329, -25201, -25072, -24942, -24811, -24679, -24546, -24413, + -24278, -24143, -24006, -23869, -23731, -23592, -23452, -23311, + -23169, -23027, -22883, -22739, -22594, -22448, -22301, -22153, + -22004, -21855, -21705, -21554, -21402, -21249, -21096, -20942, + -20787, -20631, -20474, -20317, -20159, -20000, -19840, -19680, + -19519, -19357, -19194, -19031, -18867, -18702, -18537, -18371, + -18204, -18036, -17868, -17699, -17530, -17360, -17189, -17017, + -16845, -16672, -16499, -16325, -16150, -15975, -15799, -15623, + -15446, -15268, -15090, -14911, -14732, -14552, -14372, -14191, + -14009, -13827, -13645, -13462, -13278, -13094, -12909, -12724, + -12539, -12353, -12166, -11980, -11792, -11604, -11416, -11227, + -11038, -10849, -10659, -10469, -10278, -10087, -9895, -9703, + -9511, -9319, -9126, -8932, -8739, -8545, -8351, -8156, + -7961, -7766, -7571, -7375, -7179, -6982, -6786, -6589, + -6392, -6195, -5997, -5799, -5601, -5403, -5205, -5006, + -4807, -4608, -4409, -4210, -4011, -3811, -3611, -3411, + -3211, -3011, -2811, -2610, -2410, -2209, -2009, -1808, + -1607, -1406, -1206, -1005, -804, -603, -402, -201, + 0, 201, 402, 603, 804, 1005, 1206, 1406, + 1607, 1808, 2009, 2209, 2410, 2610, 2811, 3011, + 3211, 3411, 3611, 3811, 4011, 4210, 4409, 4608, + 4807, 5006, 5205, 5403, 5601, 5799, 5997, 6195, + 6392, 6589, 6786, 6982, 7179, 7375, 7571, 7766, + 7961, 8156, 8351, 8545, 8739, 8932, 9126, 9319, + 9511, 9703, 9895, 10087, 10278, 10469, 10659, 10849, + 11038, 11227, 11416, 11604, 11792, 11980, 12166, 12353, + 12539, 12724, 12909, 13094, 13278, 13462, 13645, 13827, + 14009, 14191, 14372, 14552, 14732, 14911, 15090, 15268, + 15446, 15623, 15799, 15975, 16150, 16325, 16499, 16672, + 16845, 17017, 17189, 17360, 17530, 17699, 17868, 18036, + 18204, 18371, 18537, 18702, 18867, 19031, 19194, 19357, + 19519, 19680, 19840, 20000, 20159, 20317, 20474, 20631, + 20787, 20942, 21096, 21249, 21402, 21554, 21705, 21855, + 22004, 22153, 22301, 22448, 22594, 22739, 22883, 23027, + 23169, 23311, 23452, 23592, 23731, 23869, 24006, 24143, + 24278, 24413, 24546, 24679, 24811, 24942, 25072, 25201, + 25329, 25456, 25582, 25707, 25831, 25954, 26077, 26198, + 26318, 26437, 26556, 26673, 26789, 26905, 27019, 27132, + 27244, 27355, 27466, 27575, 27683, 27790, 27896, 28001, + 28105, 28208, 28309, 28410, 28510, 28608, 28706, 28802, + 28897, 28992, 29085, 29177, 29268, 29358, 29446, 29534, + 29621, 29706, 29790, 29873, 29955, 30036, 30116, 30195, + 30272, 30349, 30424, 30498, 30571, 30643, 30713, 30783, + 30851, 30918, 30984, 31049, 31113, 31175, 31236, 31297, + 31356, 31413, 31470, 31525, 31580, 31633, 31684, 31735, + 31785, 31833, 31880, 31926, 31970, 32014, 32056, 32097, + 32137, 32176, 32213, 32249, 32284, 32318, 32350, 32382, + 32412, 32441, 32468, 32495, 32520, 32544, 32567, 32588, + 32609, 32628, 32646, 32662, 32678, 32692, 32705, 32717, + 32727, 32736, 32744, 32751, 32757, 32761, 32764, 32766 +} ; +float costabf[1024] = { + 1.000000000, 0.999981165, 0.999924719, 0.999830604, + 0.999698818, 0.999529421, 0.999322355, 0.999077737, + 0.998795450, 0.998475552, 0.998118103, 0.997723043, + 0.997290432, 0.996820271, 0.996312618, 0.995767415, + 0.995184720, 0.994564593, 0.993906975, 0.993211925, + 0.992479563, 0.991709769, 0.990902662, 0.990058184, + 0.989176512, 0.988257587, 0.987301409, 0.986308098, + 0.985277653, 0.984210074, 0.983105481, 0.981963873, + 0.980785251, 0.979569793, 0.978317380, 0.977028131, + 0.975702107, 0.974339366, 0.972939968, 0.971503913, + 0.970031261, 0.968522072, 0.966976464, 0.965394437, + 0.963776052, 0.962121427, 0.960430503, 0.958703458, + 0.956940353, 0.955141187, 0.953306019, 0.951435030, + 0.949528158, 0.947585583, 0.945607305, 0.943593442, + 0.941544056, 0.939459205, 0.937339008, 0.935183525, + 0.932992816, 0.930766940, 0.928506076, 0.926210225, + 0.923879504, 0.921514034, 0.919113874, 0.916679084, + 0.914209783, 0.911706030, 0.909168005, 0.906595707, + 0.903989315, 0.901348829, 0.898674488, 0.895966232, + 0.893224299, 0.890448749, 0.887639642, 0.884797096, + 0.881921291, 0.879012227, 0.876070082, 0.873094976, + 0.870086968, 0.867046237, 0.863972843, 0.860866964, + 0.857728601, 0.854557991, 0.851355195, 0.848120332, + 0.844853580, 0.841554999, 0.838224709, 0.834862888, + 0.831469595, 0.828045070, 0.824589312, 0.821102500, + 0.817584813, 0.814036310, 0.810457170, 0.806847572, + 0.803207517, 0.799537241, 0.795836926, 0.792106569, + 0.788346410, 0.784556568, 0.780737221, 0.776888490, + 0.773010433, 0.769103348, 0.765167236, 0.761202395, + 0.757208824, 0.753186822, 0.749136388, 0.745057762, + 0.740951121, 0.736816585, 0.732654274, 0.728464365, + 0.724247098, 0.720002532, 0.715730846, 0.711432219, + 0.707106769, 0.702754736, 0.698376238, 0.693971455, + 0.689540565, 0.685083687, 0.680601001, 0.676092684, + 0.671558976, 0.666999936, 0.662415802, 0.657806695, + 0.653172851, 0.648514390, 0.643831551, 0.639124453, + 0.634393275, 0.629638255, 0.624859512, 0.620057225, + 0.615231574, 0.610382795, 0.605511069, 0.600616455, + 0.595699310, 0.590759695, 0.585797846, 0.580813944, + 0.575808167, 0.570780754, 0.565731823, 0.560661554, + 0.555570245, 0.550457954, 0.545324981, 0.540171444, + 0.534997642, 0.529803634, 0.524589658, 0.519356012, + 0.514102757, 0.508830130, 0.503538370, 0.498227656, + 0.492898196, 0.487550169, 0.482183784, 0.476799220, + 0.471396744, 0.465976506, 0.460538715, 0.455083579, + 0.449611336, 0.444122136, 0.438616246, 0.433093816, + 0.427555084, 0.422000259, 0.416429549, 0.410843164, + 0.405241311, 0.399624199, 0.393992037, 0.388345033, + 0.382683426, 0.377007425, 0.371317208, 0.365612984, + 0.359895051, 0.354163527, 0.348418683, 0.342660725, + 0.336889863, 0.331106305, 0.325310290, 0.319502026, + 0.313681751, 0.307849646, 0.302005947, 0.296150893, + 0.290284663, 0.284407526, 0.278519690, 0.272621363, + 0.266712755, 0.260794103, 0.254865646, 0.248927608, + 0.242980182, 0.237023607, 0.231058106, 0.225083917, + 0.219101235, 0.213110313, 0.207111374, 0.201104641, + 0.195090324, 0.189068660, 0.183039889, 0.177004218, + 0.170961887, 0.164913118, 0.158858150, 0.152797192, + 0.146730468, 0.140658244, 0.134580702, 0.128498107, + 0.122410677, 0.116318628, 0.110222206, 0.104121633, + 0.098017141, 0.091908954, 0.085797310, 0.079682440, + 0.073564567, 0.067443922, 0.061320737, 0.055195246, + 0.049067676, 0.042938258, 0.036807224, 0.030674804, + 0.024541229, 0.018406730, 0.012271538, 0.006135885, + 0.000000000, -0.006135885, -0.012271538, -0.018406730, + -0.024541229, -0.030674804, -0.036807224, -0.042938258, + -0.049067676, -0.055195246, -0.061320737, -0.067443922, + -0.073564567, -0.079682440, -0.085797310, -0.091908954, + -0.098017141, -0.104121633, -0.110222206, -0.116318628, + -0.122410677, -0.128498107, -0.134580702, -0.140658244, + -0.146730468, -0.152797192, -0.158858150, -0.164913118, + -0.170961887, -0.177004218, -0.183039889, -0.189068660, + -0.195090324, -0.201104641, -0.207111374, -0.213110313, + -0.219101235, -0.225083917, -0.231058106, -0.237023607, + -0.242980182, -0.248927608, -0.254865646, -0.260794103, + -0.266712755, -0.272621363, -0.278519690, -0.284407526, + -0.290284663, -0.296150893, -0.302005947, -0.307849646, + -0.313681751, -0.319502026, -0.325310290, -0.331106305, + -0.336889863, -0.342660725, -0.348418683, -0.354163527, + -0.359895051, -0.365612984, -0.371317208, -0.377007425, + -0.382683426, -0.388345033, -0.393992037, -0.399624199, + -0.405241311, -0.410843164, -0.416429549, -0.422000259, + -0.427555084, -0.433093816, -0.438616246, -0.444122136, + -0.449611336, -0.455083579, -0.460538715, -0.465976506, + -0.471396744, -0.476799220, -0.482183784, -0.487550169, + -0.492898196, -0.498227656, -0.503538370, -0.508830130, + -0.514102757, -0.519356012, -0.524589658, -0.529803634, + -0.534997642, -0.540171444, -0.545324981, -0.550457954, + -0.555570245, -0.560661554, -0.565731823, -0.570780754, + -0.575808167, -0.580813944, -0.585797846, -0.590759695, + -0.595699310, -0.600616455, -0.605511069, -0.610382795, + -0.615231574, -0.620057225, -0.624859512, -0.629638255, + -0.634393275, -0.639124453, -0.643831551, -0.648514390, + -0.653172851, -0.657806695, -0.662415802, -0.666999936, + -0.671558976, -0.676092684, -0.680601001, -0.685083687, + -0.689540565, -0.693971455, -0.698376238, -0.702754736, + -0.707106769, -0.711432219, -0.715730846, -0.720002532, + -0.724247098, -0.728464365, -0.732654274, -0.736816585, + -0.740951121, -0.745057762, -0.749136388, -0.753186822, + -0.757208824, -0.761202395, -0.765167236, -0.769103348, + -0.773010433, -0.776888490, -0.780737221, -0.784556568, + -0.788346410, -0.792106569, -0.795836926, -0.799537241, + -0.803207517, -0.806847572, -0.810457170, -0.814036310, + -0.817584813, -0.821102500, -0.824589312, -0.828045070, + -0.831469595, -0.834862888, -0.838224709, -0.841554999, + -0.844853580, -0.848120332, -0.851355195, -0.854557991, + -0.857728601, -0.860866964, -0.863972843, -0.867046237, + -0.870086968, -0.873094976, -0.876070082, -0.879012227, + -0.881921291, -0.884797096, -0.887639642, -0.890448749, + -0.893224299, -0.895966232, -0.898674488, -0.901348829, + -0.903989315, -0.906595707, -0.909168005, -0.911706030, + -0.914209783, -0.916679084, -0.919113874, -0.921514034, + -0.923879504, -0.926210225, -0.928506076, -0.930766940, + -0.932992816, -0.935183525, -0.937339008, -0.939459205, + -0.941544056, -0.943593442, -0.945607305, -0.947585583, + -0.949528158, -0.951435030, -0.953306019, -0.955141187, + -0.956940353, -0.958703458, -0.960430503, -0.962121427, + -0.963776052, -0.965394437, -0.966976464, -0.968522072, + -0.970031261, -0.971503913, -0.972939968, -0.974339366, + -0.975702107, -0.977028131, -0.978317380, -0.979569793, + -0.980785251, -0.981963873, -0.983105481, -0.984210074, + -0.985277653, -0.986308098, -0.987301409, -0.988257587, + -0.989176512, -0.990058184, -0.990902662, -0.991709769, + -0.992479563, -0.993211925, -0.993906975, -0.994564593, + -0.995184720, -0.995767415, -0.996312618, -0.996820271, + -0.997290432, -0.997723043, -0.998118103, -0.998475552, + -0.998795450, -0.999077737, -0.999322355, -0.999529421, + -0.999698818, -0.999830604, -0.999924719, -0.999981165, + -1.000000000, -0.999981165, -0.999924719, -0.999830604, + -0.999698818, -0.999529421, -0.999322355, -0.999077737, + -0.998795450, -0.998475552, -0.998118103, -0.997723043, + -0.997290432, -0.996820271, -0.996312618, -0.995767415, + -0.995184720, -0.994564593, -0.993906975, -0.993211925, + -0.992479563, -0.991709769, -0.990902662, -0.990058184, + -0.989176512, -0.988257587, -0.987301409, -0.986308098, + -0.985277653, -0.984210074, -0.983105481, -0.981963873, + -0.980785251, -0.979569793, -0.978317380, -0.977028131, + -0.975702107, -0.974339366, -0.972939968, -0.971503913, + -0.970031261, -0.968522072, -0.966976464, -0.965394437, + -0.963776052, -0.962121427, -0.960430503, -0.958703458, + -0.956940353, -0.955141187, -0.953306019, -0.951435030, + -0.949528158, -0.947585583, -0.945607305, -0.943593442, + -0.941544056, -0.939459205, -0.937339008, -0.935183525, + -0.932992816, -0.930766940, -0.928506076, -0.926210225, + -0.923879504, -0.921514034, -0.919113874, -0.916679084, + -0.914209783, -0.911706030, -0.909168005, -0.906595707, + -0.903989315, -0.901348829, -0.898674488, -0.895966232, + -0.893224299, -0.890448749, -0.887639642, -0.884797096, + -0.881921291, -0.879012227, -0.876070082, -0.873094976, + -0.870086968, -0.867046237, -0.863972843, -0.860866964, + -0.857728601, -0.854557991, -0.851355195, -0.848120332, + -0.844853580, -0.841554999, -0.838224709, -0.834862888, + -0.831469595, -0.828045070, -0.824589312, -0.821102500, + -0.817584813, -0.814036310, -0.810457170, -0.806847572, + -0.803207517, -0.799537241, -0.795836926, -0.792106569, + -0.788346410, -0.784556568, -0.780737221, -0.776888490, + -0.773010433, -0.769103348, -0.765167236, -0.761202395, + -0.757208824, -0.753186822, -0.749136388, -0.745057762, + -0.740951121, -0.736816585, -0.732654274, -0.728464365, + -0.724247098, -0.720002532, -0.715730846, -0.711432219, + -0.707106769, -0.702754736, -0.698376238, -0.693971455, + -0.689540565, -0.685083687, -0.680601001, -0.676092684, + -0.671558976, -0.666999936, -0.662415802, -0.657806695, + -0.653172851, -0.648514390, -0.643831551, -0.639124453, + -0.634393275, -0.629638255, -0.624859512, -0.620057225, + -0.615231574, -0.610382795, -0.605511069, -0.600616455, + -0.595699310, -0.590759695, -0.585797846, -0.580813944, + -0.575808167, -0.570780754, -0.565731823, -0.560661554, + -0.555570245, -0.550457954, -0.545324981, -0.540171444, + -0.534997642, -0.529803634, -0.524589658, -0.519356012, + -0.514102757, -0.508830130, -0.503538370, -0.498227656, + -0.492898196, -0.487550169, -0.482183784, -0.476799220, + -0.471396744, -0.465976506, -0.460538715, -0.455083579, + -0.449611336, -0.444122136, -0.438616246, -0.433093816, + -0.427555084, -0.422000259, -0.416429549, -0.410843164, + -0.405241311, -0.399624199, -0.393992037, -0.388345033, + -0.382683426, -0.377007425, -0.371317208, -0.365612984, + -0.359895051, -0.354163527, -0.348418683, -0.342660725, + -0.336889863, -0.331106305, -0.325310290, -0.319502026, + -0.313681751, -0.307849646, -0.302005947, -0.296150893, + -0.290284663, -0.284407526, -0.278519690, -0.272621363, + -0.266712755, -0.260794103, -0.254865646, -0.248927608, + -0.242980182, -0.237023607, -0.231058106, -0.225083917, + -0.219101235, -0.213110313, -0.207111374, -0.201104641, + -0.195090324, -0.189068660, -0.183039889, -0.177004218, + -0.170961887, -0.164913118, -0.158858150, -0.152797192, + -0.146730468, -0.140658244, -0.134580702, -0.128498107, + -0.122410677, -0.116318628, -0.110222206, -0.104121633, + -0.098017141, -0.091908954, -0.085797310, -0.079682440, + -0.073564567, -0.067443922, -0.061320737, -0.055195246, + -0.049067676, -0.042938258, -0.036807224, -0.030674804, + -0.024541229, -0.018406730, -0.012271538, -0.006135885, + -0.000000000, 0.006135885, 0.012271538, 0.018406730, + 0.024541229, 0.030674804, 0.036807224, 0.042938258, + 0.049067676, 0.055195246, 0.061320737, 0.067443922, + 0.073564567, 0.079682440, 0.085797310, 0.091908954, + 0.098017141, 0.104121633, 0.110222206, 0.116318628, + 0.122410677, 0.128498107, 0.134580702, 0.140658244, + 0.146730468, 0.152797192, 0.158858150, 0.164913118, + 0.170961887, 0.177004218, 0.183039889, 0.189068660, + 0.195090324, 0.201104641, 0.207111374, 0.213110313, + 0.219101235, 0.225083917, 0.231058106, 0.237023607, + 0.242980182, 0.248927608, 0.254865646, 0.260794103, + 0.266712755, 0.272621363, 0.278519690, 0.284407526, + 0.290284663, 0.296150893, 0.302005947, 0.307849646, + 0.313681751, 0.319502026, 0.325310290, 0.331106305, + 0.336889863, 0.342660725, 0.348418683, 0.354163527, + 0.359895051, 0.365612984, 0.371317208, 0.377007425, + 0.382683426, 0.388345033, 0.393992037, 0.399624199, + 0.405241311, 0.410843164, 0.416429549, 0.422000259, + 0.427555084, 0.433093816, 0.438616246, 0.444122136, + 0.449611336, 0.455083579, 0.460538715, 0.465976506, + 0.471396744, 0.476799220, 0.482183784, 0.487550169, + 0.492898196, 0.498227656, 0.503538370, 0.508830130, + 0.514102757, 0.519356012, 0.524589658, 0.529803634, + 0.534997642, 0.540171444, 0.545324981, 0.550457954, + 0.555570245, 0.560661554, 0.565731823, 0.570780754, + 0.575808167, 0.580813944, 0.585797846, 0.590759695, + 0.595699310, 0.600616455, 0.605511069, 0.610382795, + 0.615231574, 0.620057225, 0.624859512, 0.629638255, + 0.634393275, 0.639124453, 0.643831551, 0.648514390, + 0.653172851, 0.657806695, 0.662415802, 0.666999936, + 0.671558976, 0.676092684, 0.680601001, 0.685083687, + 0.689540565, 0.693971455, 0.698376238, 0.702754736, + 0.707106769, 0.711432219, 0.715730846, 0.720002532, + 0.724247098, 0.728464365, 0.732654274, 0.736816585, + 0.740951121, 0.745057762, 0.749136388, 0.753186822, + 0.757208824, 0.761202395, 0.765167236, 0.769103348, + 0.773010433, 0.776888490, 0.780737221, 0.784556568, + 0.788346410, 0.792106569, 0.795836926, 0.799537241, + 0.803207517, 0.806847572, 0.810457170, 0.814036310, + 0.817584813, 0.821102500, 0.824589312, 0.828045070, + 0.831469595, 0.834862888, 0.838224709, 0.841554999, + 0.844853580, 0.848120332, 0.851355195, 0.854557991, + 0.857728601, 0.860866964, 0.863972843, 0.867046237, + 0.870086968, 0.873094976, 0.876070082, 0.879012227, + 0.881921291, 0.884797096, 0.887639642, 0.890448749, + 0.893224299, 0.895966232, 0.898674488, 0.901348829, + 0.903989315, 0.906595707, 0.909168005, 0.911706030, + 0.914209783, 0.916679084, 0.919113874, 0.921514034, + 0.923879504, 0.926210225, 0.928506076, 0.930766940, + 0.932992816, 0.935183525, 0.937339008, 0.939459205, + 0.941544056, 0.943593442, 0.945607305, 0.947585583, + 0.949528158, 0.951435030, 0.953306019, 0.955141187, + 0.956940353, 0.958703458, 0.960430503, 0.962121427, + 0.963776052, 0.965394437, 0.966976464, 0.968522072, + 0.970031261, 0.971503913, 0.972939968, 0.974339366, + 0.975702107, 0.977028131, 0.978317380, 0.979569793, + 0.980785251, 0.981963873, 0.983105481, 0.984210074, + 0.985277653, 0.986308098, 0.987301409, 0.988257587, + 0.989176512, 0.990058184, 0.990902662, 0.991709769, + 0.992479563, 0.993211925, 0.993906975, 0.994564593, + 0.995184720, 0.995767415, 0.996312618, 0.996820271, + 0.997290432, 0.997723043, 0.998118103, 0.998475552, + 0.998795450, 0.999077737, 0.999322355, 0.999529421, + 0.999698818, 0.999830604, 0.999924719, 0.999981165 +}; +#pragma warning( default : 4305 ) + diff --git a/monitord/doxygen.config b/monitord/doxygen.config new file mode 100644 index 0000000..5f3aad1 --- /dev/null +++ b/monitord/doxygen.config @@ -0,0 +1,1417 @@ +# Doxyfile 1.5.6 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = monitord + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 2.0svn + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = ../doku + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, +# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, +# and Ukrainian. + +OUTPUT_LANGUAGE = German + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to FRAME, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. Other possible values +# for this tag are: HIERARCHIES, which will generate the Groups, Directories, +# and Class Hiererachy pages using a tree view instead of an ordered list; +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which +# disables this behavior completely. For backwards compatibility with previous +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE +# respectively. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is enabled by default, which results in a transparent +# background. Warning: Depending on the platform used, enabling this option +# may lead to badly anti-aliased labels on the edges of a graph (i.e. they +# become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/monitord/generators/.svn/all-wcprops b/monitord/generators/.svn/all-wcprops new file mode 100644 index 0000000..dc4aec8 --- /dev/null +++ b/monitord/generators/.svn/all-wcprops @@ -0,0 +1,53 @@ +K 25 +svn:wc:ra_dav:version-url +V 47 +/!svn/ver/323/monitor/trunk/monitord/generators +END +Buffer.h +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/323/monitor/trunk/monitord/generators/Buffer.h +END +GeneratorFMS.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/323/monitor/trunk/monitord/generators/GeneratorFMS.h +END +GeneratorZVEI.cpp +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/323/monitor/trunk/monitord/generators/GeneratorZVEI.cpp +END +Generator.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/323/monitor/trunk/monitord/generators/Generator.cpp +END +Buffer.cpp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/321/monitor/trunk/monitord/generators/Buffer.cpp +END +GeneratorZVEI.h +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/323/monitor/trunk/monitord/generators/GeneratorZVEI.h +END +Generator.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/323/monitor/trunk/monitord/generators/Generator.h +END +GeneratorFMS.cpp +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/323/monitor/trunk/monitord/generators/GeneratorFMS.cpp +END diff --git a/monitord/generators/.svn/entries b/monitord/generators/.svn/entries new file mode 100644 index 0000000..e0e5694 --- /dev/null +++ b/monitord/generators/.svn/entries @@ -0,0 +1,300 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/monitord/generators +http://svn.monitord.de + + + +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +Buffer.h +file + + + + +2012-01-23T14:07:03.108485Z +1c9b4c83741df784ee3ba20b156821a1 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +776 + +GeneratorFMS.h +file + + + + +2012-01-23T14:07:03.109485Z +fa5ceb8fbee1837aab46c9940933c28f +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1461 + +GeneratorZVEI.cpp +file + + + + +2012-01-23T14:07:03.109485Z +860201e3d4273830300a264b5ac90dab +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +6343 + +Generator.cpp +file + + + + +2012-01-23T14:07:03.110482Z +4483ad97f6f728bdd0a642882c090d09 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1155 + +Buffer.cpp +file + + + + +2012-01-23T14:07:03.110482Z +9032e964df17a3428320d40c644d61bd +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +952 + +GeneratorZVEI.h +file + + + + +2012-01-23T14:07:03.110482Z +11caef34b631afb95e41cfc5f329f7ca +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +971 + +Generator.h +file + + + + +2012-01-23T14:07:03.111644Z +4270f99557dc958892d71ae78019c793 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +947 + +GeneratorFMS.cpp +file + + + + +2012-01-23T14:07:03.111644Z +2707fd1f050a50398c9c1ac45983e9d5 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +7813 + diff --git a/monitord/generators/.svn/prop-base/Buffer.cpp.svn-base b/monitord/generators/.svn/prop-base/Buffer.cpp.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/Buffer.cpp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/prop-base/Buffer.h.svn-base b/monitord/generators/.svn/prop-base/Buffer.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/Buffer.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/prop-base/Generator.cpp.svn-base b/monitord/generators/.svn/prop-base/Generator.cpp.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/Generator.cpp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/prop-base/Generator.h.svn-base b/monitord/generators/.svn/prop-base/Generator.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/Generator.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/prop-base/GeneratorFMS.cpp.svn-base b/monitord/generators/.svn/prop-base/GeneratorFMS.cpp.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/GeneratorFMS.cpp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/prop-base/GeneratorFMS.h.svn-base b/monitord/generators/.svn/prop-base/GeneratorFMS.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/GeneratorFMS.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/prop-base/GeneratorZVEI.cpp.svn-base b/monitord/generators/.svn/prop-base/GeneratorZVEI.cpp.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/GeneratorZVEI.cpp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/prop-base/GeneratorZVEI.h.svn-base b/monitord/generators/.svn/prop-base/GeneratorZVEI.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/generators/.svn/prop-base/GeneratorZVEI.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/generators/.svn/text-base/Buffer.cpp.svn-base b/monitord/generators/.svn/text-base/Buffer.cpp.svn-base new file mode 100644 index 0000000..af4591e --- /dev/null +++ b/monitord/generators/.svn/text-base/Buffer.cpp.svn-base @@ -0,0 +1,55 @@ +// Buffer.cpp: implementation of the CBuffer class. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "Buffer.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CBuffer::CBuffer(DWORD size, bool AutoDelete) +{ + m_bAutoDelete = AutoDelete; + try + { + ptr.b = new BYTE[size]; + if(ptr.b) ByteLen = size; + } + catch(...) + { + ErrorMsg("Out of memory!"); + } +} + +CBuffer::CBuffer(void* buffer, DWORD length) +{ + m_bAutoDelete = false; + if(buffer) + { + ptr.v = buffer; + ByteLen = length; + } + else + { + ptr.b = NULL; + ByteLen = 0; + } +} + +CBuffer::~CBuffer() +{ + // remember to delete the memory + if(m_bAutoDelete && ptr.b != NULL) delete ptr.b; +} + +void CBuffer::Erase() +{ + if(ptr.b) ZeroMemory(ptr.b,ByteLen); +} diff --git a/monitord/generators/.svn/text-base/Buffer.h.svn-base b/monitord/generators/.svn/text-base/Buffer.h.svn-base new file mode 100644 index 0000000..b9c0f2a --- /dev/null +++ b/monitord/generators/.svn/text-base/Buffer.h.svn-base @@ -0,0 +1,39 @@ +// Buffer.h: interface for the CBuffer class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_BUFFER_H__B4B9CF06_B948_49A5_9145_ECB3E318BF05__INCLUDED_) +#define AFX_BUFFER_H__B4B9CF06_B948_49A5_9145_ECB3E318BF05__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +class CBuffer +{ +public: + void Erase(); + CBuffer(DWORD size, bool AutoDelete = true); + CBuffer(void* buffer, DWORD length); + virtual ~CBuffer(); + + union PointerUnion{ + BYTE* b; + char* c; + WORD* w; + short int* s; + DWORD* d; + int* i; + float* f; + double* r; // real + void* v; + }ptr; + + int ByteLen; // length in bytes + +private: + bool m_bAutoDelete; +}; + +#endif // !defined(AFX_BUFFER_H__B4B9CF06_B948_49A5_9145_ECB3E318BF05__INCLUDED_) diff --git a/monitord/generators/.svn/text-base/Generator.cpp.svn-base b/monitord/generators/.svn/text-base/Generator.cpp.svn-base new file mode 100644 index 0000000..5899585 --- /dev/null +++ b/monitord/generators/.svn/text-base/Generator.cpp.svn-base @@ -0,0 +1,65 @@ +// Generator.cpp: Implementierung der Klasse CGenerator. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "stdafx.h" +#include "Generator.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CGenerator::CGenerator() +{ + m_bValidSound=false ; + m_iAmpl=16384 ; + m_iSampleRate=22050 ; +} + +CGenerator::~CGenerator() +{ + +} + +int CGenerator::Generate(CBuffer* buffer) +{ + return 0 ; +} + +bool CGenerator::IsValidSound() +{ + return m_bValidSound ; +} + +void CGenerator::SetSampleRate(int rate) +{ + m_iSampleRate=rate ; +} + +void CGenerator::SetAmplitude(int ampl) +{ + m_iAmpl=ampl ; +} + +int CGenerator::GeneratePause(CBuffer *buffer, int offset, int ms_delay) +{ + int pause=MS(ms_delay) ; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf+=offset/2 ; + + for (; ((buflen > 0) && (pause>0)) ; buflen-- , buf++, num++) { + pause-- ; + + *buf=0 ; + } + return num*2 ; +} diff --git a/monitord/generators/.svn/text-base/Generator.h.svn-base b/monitord/generators/.svn/text-base/Generator.h.svn-base new file mode 100644 index 0000000..ba5d8e3 --- /dev/null +++ b/monitord/generators/.svn/text-base/Generator.h.svn-base @@ -0,0 +1,41 @@ +// Generator.h: Schnittstelle f�r die Klasse CGenerator. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_GENERATOR_H__E60BFF43_52FB_470A_875A_C1D63174C27A__INCLUDED_) +#define AFX_GENERATOR_H__E60BFF43_52FB_470A_875A_C1D63174C27A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +#include "Buffer.h" + +#define SAMPLE_RATE 22050 +#define MS(x) ((float)(x) * SAMPLE_RATE / 1000) + +#define COSTABSIZE 0x400 + +extern int costabi[0x400]; + +#define COS(x) costabi[(((x)>>6)&0x3ffu)] + +class CGenerator +{ +public: + int GeneratePause(CBuffer *buffer, int offset, int ms_delay); + void SetAmplitude(int ampl); + void SetSampleRate(int rate); + bool IsValidSound(); + virtual int Generate(CBuffer* buffer); + CGenerator(); + virtual ~CGenerator(); + +protected: + int m_iSampleRate; + bool m_bValidSound; + int m_iAmpl; +}; + +#endif // !defined(AFX_GENERATOR_H__E60BFF43_52FB_470A_875A_C1D63174C27A__INCLUDED_) diff --git a/monitord/generators/.svn/text-base/GeneratorFMS.cpp.svn-base b/monitord/generators/.svn/text-base/GeneratorFMS.cpp.svn-base new file mode 100644 index 0000000..e14ae5b --- /dev/null +++ b/monitord/generators/.svn/text-base/GeneratorFMS.cpp.svn-base @@ -0,0 +1,402 @@ +// GeneratorFMS.cpp: Implementierung der Klasse CGeneratorFMS. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "GeneratorFMS.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + + +#define PHINC(x) ((float)(x)*0x10000/SAMPLE_RATE) + +static const unsigned int fms_freq[2] = { + PHINC(1800), PHINC(1200) +}; + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CGeneratorFMS::CGeneratorFMS() +{ + m_iAmpl = 16384; + duration = MS((float)1000/1200); + pause = MS(0); + ch_idx=0 ; + memset(pkt,0,256) ; + memset(data,0,512) ; + ph_col=0 ; + ph_row=0 ; + ph=0 ; + phinc=0 ; + pktlen=0 ; + time=0 ; + time2=0 ; + + pkt[0] = 0xf; + pkt[1] = 0xf; + pkt[2] = 0xf; + pkt[3] = 0xf; + pkt[4] = 0x1; + pkt[5] = 0xa; + strncpy((char*) (pkt + 6), "B97168615111", + sizeof(pkt) - 6); + pktlen = 6 + strlen((char*)(pkt + 6)); +} + +CGeneratorFMS::~CGeneratorFMS() +{ + +} + +unsigned char CGeneratorFMS::reverse(unsigned char curchr) +{ +/***************************************************************************** + * dreht die Reihenfolge von 4 bits (1010 -> 0101) + *****************************************************************************/ + + curchr = ((curchr & 0xc) >> 2) | ((curchr & 0x3) << 2); + curchr = ((curchr & 0xa) >> 1) | ((curchr & 0x5) << 1); + return curchr; +} + +char CGeneratorFMS::convert(char c) +{ + + if (c >= '0' && c <= '9') return (c - '0'); + if (c >= 'A' && c <= 'F') return (c - 55); + if (c >= 'a' && c <= 'f') return (c - 87); + return (-1); +} + +int CGeneratorFMS::Generate(CBuffer *buffer) +{ + CString SendungsString, temp ; + int i ; + + int offset=0 ; + offset+=GeneratePause(buffer,offset,100) ; + offset+=GenerateTelegramm(buffer,offset) ; + offset+=GeneratePause(buffer,offset,100) ; + // offset+=GeneratePause(buffer,offset,20) ; + // offset+=GenerateTelegramm(buffer,offset) ; + + // Jetzt als "Kodierung" die Daten einpflegen und als Folgetelegramm anf�gen + // +/* + temp=m_sKodierung ; + + m_sKodierung[0]='6' ; + m_sKodierung[1]='6' ; + + m_sKodierung[2]=EncodeChar(ConvertChar('Q') >>4) ; + m_sKodierung[3]=EncodeChar(ConvertChar('Q') & 0xf) ; + + m_sKodierung[4]=EncodeChar(ConvertChar('b') >>4) ; + m_sKodierung[5]=EncodeChar(ConvertChar('b') & 0xf) ; + + m_sKodierung[6]=EncodeChar(ConvertChar('c') >>4) ; + m_sKodierung[7]=EncodeChar(ConvertChar('c') & 0xf) ; + + + offset+=GenerateTelegramm(buffer,offset,true) ; + + + m_iStatus=11 ; + + m_sKodierung[2]=EncodeChar(ConvertChar('d') >>4) ; + m_sKodierung[3]=EncodeChar(ConvertChar('d') & 0xf) ; + + m_sKodierung[2]=EncodeChar(ConvertChar('e') >>4) ; + m_sKodierung[3]=EncodeChar(ConvertChar('e') & 0xf) ; + + m_sKodierung[4]=EncodeChar(ConvertChar('f') >>4) ; + m_sKodierung[5]=EncodeChar(ConvertChar('f') & 0xf) ; + + m_sKodierung[6]=EncodeChar(ConvertChar('g') >>4) ; + m_sKodierung[7]=EncodeChar(ConvertChar('g') & 0xf) ; + + + offset+=GenerateTelegramm(buffer,offset,true) ; + + + // offset+=GenerateTelegramm(buffer,offset,true) ; + +*/ + return offset ; +} + +void CGeneratorFMS::SetKodierung(CString kodierung) +{ + strcpy(m_sKodierung,kodierung) ; +} + +void CGeneratorFMS::SetStatus(int status) +{ + m_iStatus=status ; +} + +void CGeneratorFMS::SetTKI(int tki) +{ + m_iTKI=tki ; +} + +void CGeneratorFMS::SetRichtung(int richtung) +{ + m_iRichtung=richtung ; +} + +void CGeneratorFMS::SetBaustufe(int baustufe) +{ + m_iBaustufe=baustufe ; +} + +void CGeneratorFMS::crc_check(unsigned char *bp) +{ +/***************************************************************************** + * CRC-Pr�froutine und teilweise blindes Korrigieren, offset=[0, 48] + *****************************************************************************/ + +#define CODE 40 + + unsigned char g[] = {1,0,0,0,1,0,1}; + unsigned char r[] = {0,0,0,0,0,0,0,0}, *rest; + char *p; + unsigned int i = 0, j, bit; + + /* CRC-Pr�froutine Begin */ + for (i = 0; i < CODE; i++) { + bit = bp[i] ^ r[0]; + p = (char*) r; + for (j = 0; j < 7; j++) *p++ = (bit & g[j]) ^ r[j + 1]; + } + /* CRC-Pr�froutine Ende */ + + /* Schreiben des Rest-Polynoms */ + rest = bp + 40; + for (i = 0; i < 7; i++) { + *rest++ = r[i] & 0x1; + } +} + +int CGeneratorFMS::GenerateTelegramm(CBuffer *buffer, int offset, bool folgetelegramm) +{ + #define MOD 8 + #define START 6 + unsigned char c, tx[1000], *bp; + int num = 0, i=0, j=0; + int char_counter ; + ch_idx=0 ; + ph=0 ; + + ph_col=0 ; + ph_row=0 ; + ph=0 ; + phinc=0 ; + pktlen=0 ; + time=0 ; + time2=0 ; + unsigned int temp ; + + BuildPktArray(folgetelegramm) ; + + char_counter=pktlen ; + // TRACE1("Gr�sse: %d\n",strlen((char*) pkt)) ; + + memset(tx, 0, 1000 * sizeof(char)); + + if (!folgetelegramm) + { + // Kodierung (Land/Ort/Fzg = 8 Nibbles) + // + /* Halbbytes drehen */ + for (i = START; i <= START + 8; i++) + pkt[i]= reverse(convert(pkt[i])); + + /* Zusatzinfos sammeln */ + for (i = START + 9; i <= START + 11; i++) + pkt[i]= convert(pkt[i]); + + + pkt[START + 9]= + (pkt[START + 9] << 3) | + (pkt[START + 10] << 2) | + pkt[START + 11]; + } + else + { + /* Halbbytes drehen */ + for (i = START; i <= START + 8; i++) + pkt[i]=convert(pkt[i]); + + /* Zusatzinfos sammeln */ + for (i = START + 9; i <= START + 11; i++) + pkt[i]= convert(pkt[i]); + + pkt[START + 9]= + (pkt[START + 9] << 3) | + (pkt[START + 10] << 2) | + pkt[START + 11]; + } + + + bp = tx; + for (i = START; i < START + 10; i++) + for (j = 3; j >= 0; j--) + *bp++ = (pkt[i] >> j) & 0x1; + + crc_check(tx); + + if (folgetelegramm!=true) // Folgetelegramme werden ohne Vorlauf direkt am Anschlu� versende ! + { + /* Platz f�r Vorlauf schaffen */ + memmove(tx + 24, tx, 48); + + bp = tx; + /* Vorlauf eintragen */ + for (i = 0; i < START; i++) + for (j = 3; j >= 0; j--) + *bp++ = (pkt[i] >> j) & 0x1; + } + + bp = tx; + for (i = 0; i < 1000; i++) *bp++ += '0'; + + if (folgetelegramm) + { + int hier_bleiben=0 ; + } + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + for (; ((buflen > 0) && (char_counter > ch_idx)) ; buflen--, buf++, num++) { + if (time <= 0) { + c = tx[ch_idx]; + if (!c) + return 2*num; + ch_idx++; + + if (!isxdigit(c)) { + time = time2 = 1; + // fprintf(stderr, "gen: fms; invalid char nr %i '%c'\n", s->s.fms.ch_idx, c); + } + else { + int dur = (int)(duration * ch_idx), + dur2 = (int)(duration * ch_idx + .5); + + if (dur == dur2) dur = (int)duration; + else dur = (int)duration + 1; + time = dur + pause; + time2 = dur; + // phinc = fms_freq[c & 0x1]; + phinc = fms_freq[c=='0' ? 0 : 1]; + } + } + else if (!time2) { + phinc = 0; + ph = 0xc000; + } + time--; + time2--; + + *buf=0 ; + if (phinc>0) + { + temp=m_iAmpl * COS(ph) ; + *buf += temp >> 15; + } + ph += phinc; + } + return 2*num; +} + +bool CGeneratorFMS::BuildPktArray(bool folgetelegramm) +{ + int i ; + + pkt[0]=0x0 ; + pkt[1]=0x7 ; + pkt[2]=0xf ; + pkt[3]=0xf ; // 12x 1 als Vorlauf + pkt[4]=0x1 ; // a1 = 00011010 <=> SYNC + pkt[5]=0xa ; + + { + + CString SendungsString ; + + SendungsString.Format(" %x%d%d%d", + m_iStatus, + m_iBaustufe, + m_iRichtung , + m_iTKI + ) ; + + for (i=0;i<8;i++) + { + pkt[6+i]=m_sKodierung[i] ; + } + + pktlen=49+6*4 ; // (Datenbits+Vorlauf+Sync) + + for (i=8; i < SendungsString.GetLength();i++) + { + pkt [6+i]=SendungsString.GetAt(i) ; + } + } + + if (folgetelegramm) + { + pktlen=48 ; + } + + return true ; +} + +void CGeneratorFMS::SetText(CString text) +{ + m_sText=text ; +} + +unsigned char CGeneratorFMS::ConvertChar(char c) +{ + int paritaet=0 ; + unsigned char c_out=0 ; + + c_out=c ; + + for (int i=0;i<7;i++) + { + paritaet=paritaet ^ (c & 0x1) ; + + /* + c_out <<= 1 ; + c_out |= c &0x1; + */ + c >>= 1; + } + + c_out <<=1 ; + c_out|= (paritaet) & 0x1 ; + + return c_out ; +} + +unsigned char CGeneratorFMS::EncodeChar(unsigned char curchr) +{ + if (curchr<=9) + { + return curchr+'0' ; + } + else + { + return curchr+55 ; + } + return '0' ; +} diff --git a/monitord/generators/.svn/text-base/GeneratorFMS.h.svn-base b/monitord/generators/.svn/text-base/GeneratorFMS.h.svn-base new file mode 100644 index 0000000..6ed35b8 --- /dev/null +++ b/monitord/generators/.svn/text-base/GeneratorFMS.h.svn-base @@ -0,0 +1,58 @@ +// GeneratorFMS.h: Schnittstelle f�r die Klasse CGeneratorFMS. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_GENERATORFMS_H__2A6424EB_1110_40D4_A377_D9AA3985E5DA__INCLUDED_) +#define AFX_GENERATORFMS_H__2A6424EB_1110_40D4_A377_D9AA3985E5DA__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "Generator.h" + +class CGeneratorFMS : public CGenerator +{ +public: + unsigned char EncodeChar(unsigned char curchr); + void SetText(CString text); + bool BuildPktArray(bool folgetelegramm=false); + void SetBaustufe(int baustufe); + void SetRichtung(int richtung); + void SetTKI(int tki); + void SetStatus(int status); + void SetKodierung(CString kodierung); + virtual int Generate(CBuffer* buffer); + CGeneratorFMS(); + virtual ~CGeneratorFMS(); + +protected: + unsigned char ConvertChar(char c); + CString m_sText; + int GenerateTelegramm(CBuffer *buffer, int offset, bool folgetelegramm=false); + void crc_check(unsigned char *bp); + int m_iRichtung ; + int m_iBaustufe ; + char m_sKodierung[10] ; + int m_iStatus ; + int m_iTKI ; + + char convert(char c); + static unsigned char reverse(unsigned char curchr); + // Verlaufsinformationen + // + int ch_idx; + int ph_row, ph_col, ph, phinc; + int time, time2; + unsigned char data[512]; + int lastb; + + // Parameter + // + unsigned char pkt[256]; + int pktlen; + int pause; + float duration; +}; + +#endif // !defined(AFX_GENERATORFMS_H__2A6424EB_1110_40D4_A377_D9AA3985E5DA__INCLUDED_) diff --git a/monitord/generators/.svn/text-base/GeneratorZVEI.cpp.svn-base b/monitord/generators/.svn/text-base/GeneratorZVEI.cpp.svn-base new file mode 100644 index 0000000..7b51ad7 --- /dev/null +++ b/monitord/generators/.svn/text-base/GeneratorZVEI.cpp.svn-base @@ -0,0 +1,280 @@ +// GeneratorZVEI.cpp: Implementierung der Klasse CGeneratorZVEI. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "GeneratorZVEI.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + +#define PHINC(x) ((float)(x)*0x10000/SAMPLE_RATE) + +#pragma warning( disable : 4244 ) + +static const unsigned int zvei_freq[16] = { + PHINC(2400), PHINC(1060), PHINC(1160), PHINC(1270), + PHINC(1400), PHINC(1530), PHINC(1670), PHINC(1830), + PHINC(2000), PHINC(2200), PHINC(2800), PHINC(810), + PHINC(970), PHINC(886), PHINC(2600), PHINC(0) +}; + +#pragma warning( default : 4244 ) +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CGeneratorZVEI::CGeneratorZVEI() +{ + +} + +CGeneratorZVEI::~CGeneratorZVEI() +{ + +} + +bool CGeneratorZVEI::SetZVEI(CString zveiCode) +{ + m_sInputString=zveiCode ; + return true ; +} + +int CGeneratorZVEI::Generate(CBuffer* buffer) +{ + int offset ; + int frequenz_weckton=0 ; + bool bKanalbelegungston=false ; + CString weckton ; + + // ist ein Weckton zu erzeugen ? + // Wenn ja, welcher ? + if (m_sInputString.GetLength()<5) + { + return 0 ; + } + + CString zvei=m_sInputString.Left(5) ; + + if (m_sInputString.GetLength()>5) + { + weckton=m_sInputString.GetAt(5) ; + + switch (weckton.GetAt(0)) + { + case 'B': + case 'b' : + frequenz_weckton=0 ; + bKanalbelegungston=true ; + break ; + + case 'F': + case 'f' : + frequenz_weckton=1240 ; + break ; + case 'P': + case 'p' : + frequenz_weckton=1860 ; + break ; + case 'W': + case 'w' : + frequenz_weckton=2280 ; + break ; + case 'Z': + case 'z' : + frequenz_weckton=825 ; + break ; + case 'E': + case 'e' : + frequenz_weckton=1010 ; + break ; + default: + frequenz_weckton=0 ; + m_sInputString+="X" ; + break ; + + } + } else + { + frequenz_weckton=0 ; + m_sInputString+="X" ; + } + + offset=GeneratePause(buffer,0,600) ; + offset+=GenerateSequence(buffer,offset) ; + offset+=GeneratePause(buffer,offset,600) ; + offset+=GenerateSequence(buffer,offset) ; + offset+=GeneratePause(buffer,offset,600) ; + + if (frequenz_weckton>0) + { + offset+=GenerateWeckton(buffer,offset,frequenz_weckton) ; + } + else + { + if (bKanalbelegungston) + { + offset+=GenerateBelegungston(buffer,offset) ; + offset+=GenerateBelegungston(buffer,offset) ; + offset+=GenerateBelegungston(buffer,offset) ; + offset+=GenerateBelegungston(buffer,offset) ; + } + } + offset+=GeneratePause(buffer,offset,70) ; + + return offset ; +} + +int CGeneratorZVEI::GenerateSequence(CBuffer* buffer, int offset) +{ + // Standardwerte setzen + ch_idx=0 ; + ph=0 ; + phinc=0 ; + time=0 ; + time2=0 ; + duration=MS(70); + pause=MS(1) ; + + char c; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + for (; ((buflen > 0) && (ch_idxs.zvei.time ist die gesamtdauer (mit Pause) + time2 = duration; // s->s.zvei.time2 ist die Dauer des Tones an sich + if (c >= '0' && c <= '9') + i = c - '0'; + else if (c >= 'A' && c <= 'F') + i = c - 'A' + 10; + else + i = c - 'a' + 10; + phinc = zvei_freq[i & 0xf]; // Die Schwingungsl�nge 2pi=1 Periode ist wie lange ? + } // 10000 "Einheiten". Wobei 10000 Einheiten ja abh�ngig von der Samplerate sind + // phinc ist �hnlich wie Omega (Kreisgeschwindigkeit) + } + else if (!time2) { + phinc = 0; // Phi-Increment + ph = 0xc000; // Phi + } + time--; + time2--; + //*buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + *buf=0 ; + *buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + ph += phinc; + } + return num*2 ; + +} + +//DEL int CGeneratorZVEI::GeneratePause(CBuffer *buffer, int offset, int ms_delay) +//DEL { +//DEL +//DEL } + + + +int CGeneratorZVEI::GenerateWeckton(CBuffer *buffer, int offset, int freq) +{ + // Standardwerte setzen + ch_idx=0 ; + int ph_Basis=0 ; + ph=0 ; + phinc=0 ; + int phinc_Basis ; + time=0 ; + time2=0 ; + duration=MS(5000); + pause=MS(1) ; + + char c; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + time = duration + pause; //s->s.zvei.time ist die gesamtdauer (mit Pause) + time2 = duration; // s->s.zvei.time2 ist die Dauer des Tones an sich + + phinc_Basis=PHINC(675) ; + phinc = PHINC(freq) ; // Die Schwingungsl�nge 2pi=1 Periode ist wie lange ? + + for (; ((buflen > 0) && time>0) ; buflen-- , buf++, num++) { + + if (time2<=0) { + phinc = 0; // Phi-Increment + phinc_Basis = 0; // Phi-Increment + ph_Basis=0xc000 ; // Phi Basiston + ph = 0xc000; // Phi + } + time--; + time2--; + //*buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + *buf=0 ; + *buf += ((m_iAmpl * COS(ph_Basis)) + (m_iAmpl * COS(ph)) ) >> 16; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + + ph += phinc; + ph_Basis += phinc_Basis ; + } + return num*2 ; + +} + +int CGeneratorZVEI::GenerateBelegungston(CBuffer *buffer, int offset, int dauer, int pause) +{ + // Standardwerte setzen + ph=0 ; + phinc=0 ; + time=0 ; + time2=0 ; + duration=MS(dauer); + pause=MS(pause) ; + + char c; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + time = duration + pause; //s->s.zvei.time ist die gesamtdauer (mit Pause) + time2 = duration; // s->s.zvei.time2 ist die Dauer des Tones an sich + + phinc = PHINC(2600) ; // Die Schwingungsl�nge 2pi=1 Periode ist wie lange ? + + for (; ((buflen > 0) && time>0) ; buflen-- , buf++, num++) { + + if (time2<=0) { + phinc = 0; // Phi-Increment + ph = 0xc000; // Phi + } + time--; + time2--; + *buf=0 ; + *buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + + ph += phinc; + + } + return num*2 ; + + + +} diff --git a/monitord/generators/.svn/text-base/GeneratorZVEI.h.svn-base b/monitord/generators/.svn/text-base/GeneratorZVEI.h.svn-base new file mode 100644 index 0000000..f9ba445 --- /dev/null +++ b/monitord/generators/.svn/text-base/GeneratorZVEI.h.svn-base @@ -0,0 +1,36 @@ +// GeneratorZVEI.h: Schnittstelle f�r die Klasse CGeneratorZVEI. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_GENERATORZVEI_H__8F64A74E_D08C_4183_953E_646740D6F8A0__INCLUDED_) +#define AFX_GENERATORZVEI_H__8F64A74E_D08C_4183_953E_646740D6F8A0__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "Generator.h" + +class CGeneratorZVEI : public CGenerator +{ +public: + int GenerateBelegungston(CBuffer *buffer, int offset, int dauer=800, int pause=300); + int GenerateWeckton(CBuffer* buffer, int offset, int freq); + int GenerateSequence(CBuffer* buffer, int offset=0); + virtual int Generate(CBuffer* buffer); + bool SetZVEI(CString zveicode); + CGeneratorZVEI(); + virtual ~CGeneratorZVEI(); + +protected: + int ph; + int phinc; + int pause; + int duration; + int time2; + int time; + int ch_idx; + CString m_sInputString; +}; + +#endif // !defined(AFX_GENERATORZVEI_H__8F64A74E_D08C_4183_953E_646740D6F8A0__INCLUDED_) diff --git a/monitord/generators/Buffer.cpp b/monitord/generators/Buffer.cpp new file mode 100644 index 0000000..af4591e --- /dev/null +++ b/monitord/generators/Buffer.cpp @@ -0,0 +1,55 @@ +// Buffer.cpp: implementation of the CBuffer class. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "Buffer.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CBuffer::CBuffer(DWORD size, bool AutoDelete) +{ + m_bAutoDelete = AutoDelete; + try + { + ptr.b = new BYTE[size]; + if(ptr.b) ByteLen = size; + } + catch(...) + { + ErrorMsg("Out of memory!"); + } +} + +CBuffer::CBuffer(void* buffer, DWORD length) +{ + m_bAutoDelete = false; + if(buffer) + { + ptr.v = buffer; + ByteLen = length; + } + else + { + ptr.b = NULL; + ByteLen = 0; + } +} + +CBuffer::~CBuffer() +{ + // remember to delete the memory + if(m_bAutoDelete && ptr.b != NULL) delete ptr.b; +} + +void CBuffer::Erase() +{ + if(ptr.b) ZeroMemory(ptr.b,ByteLen); +} diff --git a/monitord/generators/Buffer.h b/monitord/generators/Buffer.h new file mode 100644 index 0000000..b9c0f2a --- /dev/null +++ b/monitord/generators/Buffer.h @@ -0,0 +1,39 @@ +// Buffer.h: interface for the CBuffer class. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_BUFFER_H__B4B9CF06_B948_49A5_9145_ECB3E318BF05__INCLUDED_) +#define AFX_BUFFER_H__B4B9CF06_B948_49A5_9145_ECB3E318BF05__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +class CBuffer +{ +public: + void Erase(); + CBuffer(DWORD size, bool AutoDelete = true); + CBuffer(void* buffer, DWORD length); + virtual ~CBuffer(); + + union PointerUnion{ + BYTE* b; + char* c; + WORD* w; + short int* s; + DWORD* d; + int* i; + float* f; + double* r; // real + void* v; + }ptr; + + int ByteLen; // length in bytes + +private: + bool m_bAutoDelete; +}; + +#endif // !defined(AFX_BUFFER_H__B4B9CF06_B948_49A5_9145_ECB3E318BF05__INCLUDED_) diff --git a/monitord/generators/Generator.cpp b/monitord/generators/Generator.cpp new file mode 100644 index 0000000..5899585 --- /dev/null +++ b/monitord/generators/Generator.cpp @@ -0,0 +1,65 @@ +// Generator.cpp: Implementierung der Klasse CGenerator. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "stdafx.h" +#include "Generator.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CGenerator::CGenerator() +{ + m_bValidSound=false ; + m_iAmpl=16384 ; + m_iSampleRate=22050 ; +} + +CGenerator::~CGenerator() +{ + +} + +int CGenerator::Generate(CBuffer* buffer) +{ + return 0 ; +} + +bool CGenerator::IsValidSound() +{ + return m_bValidSound ; +} + +void CGenerator::SetSampleRate(int rate) +{ + m_iSampleRate=rate ; +} + +void CGenerator::SetAmplitude(int ampl) +{ + m_iAmpl=ampl ; +} + +int CGenerator::GeneratePause(CBuffer *buffer, int offset, int ms_delay) +{ + int pause=MS(ms_delay) ; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf+=offset/2 ; + + for (; ((buflen > 0) && (pause>0)) ; buflen-- , buf++, num++) { + pause-- ; + + *buf=0 ; + } + return num*2 ; +} diff --git a/monitord/generators/Generator.h b/monitord/generators/Generator.h new file mode 100644 index 0000000..ba5d8e3 --- /dev/null +++ b/monitord/generators/Generator.h @@ -0,0 +1,41 @@ +// Generator.h: Schnittstelle f�r die Klasse CGenerator. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_GENERATOR_H__E60BFF43_52FB_470A_875A_C1D63174C27A__INCLUDED_) +#define AFX_GENERATOR_H__E60BFF43_52FB_470A_875A_C1D63174C27A__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + + +#include "Buffer.h" + +#define SAMPLE_RATE 22050 +#define MS(x) ((float)(x) * SAMPLE_RATE / 1000) + +#define COSTABSIZE 0x400 + +extern int costabi[0x400]; + +#define COS(x) costabi[(((x)>>6)&0x3ffu)] + +class CGenerator +{ +public: + int GeneratePause(CBuffer *buffer, int offset, int ms_delay); + void SetAmplitude(int ampl); + void SetSampleRate(int rate); + bool IsValidSound(); + virtual int Generate(CBuffer* buffer); + CGenerator(); + virtual ~CGenerator(); + +protected: + int m_iSampleRate; + bool m_bValidSound; + int m_iAmpl; +}; + +#endif // !defined(AFX_GENERATOR_H__E60BFF43_52FB_470A_875A_C1D63174C27A__INCLUDED_) diff --git a/monitord/generators/GeneratorFMS.cpp b/monitord/generators/GeneratorFMS.cpp new file mode 100644 index 0000000..e14ae5b --- /dev/null +++ b/monitord/generators/GeneratorFMS.cpp @@ -0,0 +1,402 @@ +// GeneratorFMS.cpp: Implementierung der Klasse CGeneratorFMS. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "GeneratorFMS.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + + +#define PHINC(x) ((float)(x)*0x10000/SAMPLE_RATE) + +static const unsigned int fms_freq[2] = { + PHINC(1800), PHINC(1200) +}; + + +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CGeneratorFMS::CGeneratorFMS() +{ + m_iAmpl = 16384; + duration = MS((float)1000/1200); + pause = MS(0); + ch_idx=0 ; + memset(pkt,0,256) ; + memset(data,0,512) ; + ph_col=0 ; + ph_row=0 ; + ph=0 ; + phinc=0 ; + pktlen=0 ; + time=0 ; + time2=0 ; + + pkt[0] = 0xf; + pkt[1] = 0xf; + pkt[2] = 0xf; + pkt[3] = 0xf; + pkt[4] = 0x1; + pkt[5] = 0xa; + strncpy((char*) (pkt + 6), "B97168615111", + sizeof(pkt) - 6); + pktlen = 6 + strlen((char*)(pkt + 6)); +} + +CGeneratorFMS::~CGeneratorFMS() +{ + +} + +unsigned char CGeneratorFMS::reverse(unsigned char curchr) +{ +/***************************************************************************** + * dreht die Reihenfolge von 4 bits (1010 -> 0101) + *****************************************************************************/ + + curchr = ((curchr & 0xc) >> 2) | ((curchr & 0x3) << 2); + curchr = ((curchr & 0xa) >> 1) | ((curchr & 0x5) << 1); + return curchr; +} + +char CGeneratorFMS::convert(char c) +{ + + if (c >= '0' && c <= '9') return (c - '0'); + if (c >= 'A' && c <= 'F') return (c - 55); + if (c >= 'a' && c <= 'f') return (c - 87); + return (-1); +} + +int CGeneratorFMS::Generate(CBuffer *buffer) +{ + CString SendungsString, temp ; + int i ; + + int offset=0 ; + offset+=GeneratePause(buffer,offset,100) ; + offset+=GenerateTelegramm(buffer,offset) ; + offset+=GeneratePause(buffer,offset,100) ; + // offset+=GeneratePause(buffer,offset,20) ; + // offset+=GenerateTelegramm(buffer,offset) ; + + // Jetzt als "Kodierung" die Daten einpflegen und als Folgetelegramm anf�gen + // +/* + temp=m_sKodierung ; + + m_sKodierung[0]='6' ; + m_sKodierung[1]='6' ; + + m_sKodierung[2]=EncodeChar(ConvertChar('Q') >>4) ; + m_sKodierung[3]=EncodeChar(ConvertChar('Q') & 0xf) ; + + m_sKodierung[4]=EncodeChar(ConvertChar('b') >>4) ; + m_sKodierung[5]=EncodeChar(ConvertChar('b') & 0xf) ; + + m_sKodierung[6]=EncodeChar(ConvertChar('c') >>4) ; + m_sKodierung[7]=EncodeChar(ConvertChar('c') & 0xf) ; + + + offset+=GenerateTelegramm(buffer,offset,true) ; + + + m_iStatus=11 ; + + m_sKodierung[2]=EncodeChar(ConvertChar('d') >>4) ; + m_sKodierung[3]=EncodeChar(ConvertChar('d') & 0xf) ; + + m_sKodierung[2]=EncodeChar(ConvertChar('e') >>4) ; + m_sKodierung[3]=EncodeChar(ConvertChar('e') & 0xf) ; + + m_sKodierung[4]=EncodeChar(ConvertChar('f') >>4) ; + m_sKodierung[5]=EncodeChar(ConvertChar('f') & 0xf) ; + + m_sKodierung[6]=EncodeChar(ConvertChar('g') >>4) ; + m_sKodierung[7]=EncodeChar(ConvertChar('g') & 0xf) ; + + + offset+=GenerateTelegramm(buffer,offset,true) ; + + + // offset+=GenerateTelegramm(buffer,offset,true) ; + +*/ + return offset ; +} + +void CGeneratorFMS::SetKodierung(CString kodierung) +{ + strcpy(m_sKodierung,kodierung) ; +} + +void CGeneratorFMS::SetStatus(int status) +{ + m_iStatus=status ; +} + +void CGeneratorFMS::SetTKI(int tki) +{ + m_iTKI=tki ; +} + +void CGeneratorFMS::SetRichtung(int richtung) +{ + m_iRichtung=richtung ; +} + +void CGeneratorFMS::SetBaustufe(int baustufe) +{ + m_iBaustufe=baustufe ; +} + +void CGeneratorFMS::crc_check(unsigned char *bp) +{ +/***************************************************************************** + * CRC-Pr�froutine und teilweise blindes Korrigieren, offset=[0, 48] + *****************************************************************************/ + +#define CODE 40 + + unsigned char g[] = {1,0,0,0,1,0,1}; + unsigned char r[] = {0,0,0,0,0,0,0,0}, *rest; + char *p; + unsigned int i = 0, j, bit; + + /* CRC-Pr�froutine Begin */ + for (i = 0; i < CODE; i++) { + bit = bp[i] ^ r[0]; + p = (char*) r; + for (j = 0; j < 7; j++) *p++ = (bit & g[j]) ^ r[j + 1]; + } + /* CRC-Pr�froutine Ende */ + + /* Schreiben des Rest-Polynoms */ + rest = bp + 40; + for (i = 0; i < 7; i++) { + *rest++ = r[i] & 0x1; + } +} + +int CGeneratorFMS::GenerateTelegramm(CBuffer *buffer, int offset, bool folgetelegramm) +{ + #define MOD 8 + #define START 6 + unsigned char c, tx[1000], *bp; + int num = 0, i=0, j=0; + int char_counter ; + ch_idx=0 ; + ph=0 ; + + ph_col=0 ; + ph_row=0 ; + ph=0 ; + phinc=0 ; + pktlen=0 ; + time=0 ; + time2=0 ; + unsigned int temp ; + + BuildPktArray(folgetelegramm) ; + + char_counter=pktlen ; + // TRACE1("Gr�sse: %d\n",strlen((char*) pkt)) ; + + memset(tx, 0, 1000 * sizeof(char)); + + if (!folgetelegramm) + { + // Kodierung (Land/Ort/Fzg = 8 Nibbles) + // + /* Halbbytes drehen */ + for (i = START; i <= START + 8; i++) + pkt[i]= reverse(convert(pkt[i])); + + /* Zusatzinfos sammeln */ + for (i = START + 9; i <= START + 11; i++) + pkt[i]= convert(pkt[i]); + + + pkt[START + 9]= + (pkt[START + 9] << 3) | + (pkt[START + 10] << 2) | + pkt[START + 11]; + } + else + { + /* Halbbytes drehen */ + for (i = START; i <= START + 8; i++) + pkt[i]=convert(pkt[i]); + + /* Zusatzinfos sammeln */ + for (i = START + 9; i <= START + 11; i++) + pkt[i]= convert(pkt[i]); + + pkt[START + 9]= + (pkt[START + 9] << 3) | + (pkt[START + 10] << 2) | + pkt[START + 11]; + } + + + bp = tx; + for (i = START; i < START + 10; i++) + for (j = 3; j >= 0; j--) + *bp++ = (pkt[i] >> j) & 0x1; + + crc_check(tx); + + if (folgetelegramm!=true) // Folgetelegramme werden ohne Vorlauf direkt am Anschlu� versende ! + { + /* Platz f�r Vorlauf schaffen */ + memmove(tx + 24, tx, 48); + + bp = tx; + /* Vorlauf eintragen */ + for (i = 0; i < START; i++) + for (j = 3; j >= 0; j--) + *bp++ = (pkt[i] >> j) & 0x1; + } + + bp = tx; + for (i = 0; i < 1000; i++) *bp++ += '0'; + + if (folgetelegramm) + { + int hier_bleiben=0 ; + } + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + for (; ((buflen > 0) && (char_counter > ch_idx)) ; buflen--, buf++, num++) { + if (time <= 0) { + c = tx[ch_idx]; + if (!c) + return 2*num; + ch_idx++; + + if (!isxdigit(c)) { + time = time2 = 1; + // fprintf(stderr, "gen: fms; invalid char nr %i '%c'\n", s->s.fms.ch_idx, c); + } + else { + int dur = (int)(duration * ch_idx), + dur2 = (int)(duration * ch_idx + .5); + + if (dur == dur2) dur = (int)duration; + else dur = (int)duration + 1; + time = dur + pause; + time2 = dur; + // phinc = fms_freq[c & 0x1]; + phinc = fms_freq[c=='0' ? 0 : 1]; + } + } + else if (!time2) { + phinc = 0; + ph = 0xc000; + } + time--; + time2--; + + *buf=0 ; + if (phinc>0) + { + temp=m_iAmpl * COS(ph) ; + *buf += temp >> 15; + } + ph += phinc; + } + return 2*num; +} + +bool CGeneratorFMS::BuildPktArray(bool folgetelegramm) +{ + int i ; + + pkt[0]=0x0 ; + pkt[1]=0x7 ; + pkt[2]=0xf ; + pkt[3]=0xf ; // 12x 1 als Vorlauf + pkt[4]=0x1 ; // a1 = 00011010 <=> SYNC + pkt[5]=0xa ; + + { + + CString SendungsString ; + + SendungsString.Format(" %x%d%d%d", + m_iStatus, + m_iBaustufe, + m_iRichtung , + m_iTKI + ) ; + + for (i=0;i<8;i++) + { + pkt[6+i]=m_sKodierung[i] ; + } + + pktlen=49+6*4 ; // (Datenbits+Vorlauf+Sync) + + for (i=8; i < SendungsString.GetLength();i++) + { + pkt [6+i]=SendungsString.GetAt(i) ; + } + } + + if (folgetelegramm) + { + pktlen=48 ; + } + + return true ; +} + +void CGeneratorFMS::SetText(CString text) +{ + m_sText=text ; +} + +unsigned char CGeneratorFMS::ConvertChar(char c) +{ + int paritaet=0 ; + unsigned char c_out=0 ; + + c_out=c ; + + for (int i=0;i<7;i++) + { + paritaet=paritaet ^ (c & 0x1) ; + + /* + c_out <<= 1 ; + c_out |= c &0x1; + */ + c >>= 1; + } + + c_out <<=1 ; + c_out|= (paritaet) & 0x1 ; + + return c_out ; +} + +unsigned char CGeneratorFMS::EncodeChar(unsigned char curchr) +{ + if (curchr<=9) + { + return curchr+'0' ; + } + else + { + return curchr+55 ; + } + return '0' ; +} diff --git a/monitord/generators/GeneratorFMS.h b/monitord/generators/GeneratorFMS.h new file mode 100644 index 0000000..6ed35b8 --- /dev/null +++ b/monitord/generators/GeneratorFMS.h @@ -0,0 +1,58 @@ +// GeneratorFMS.h: Schnittstelle f�r die Klasse CGeneratorFMS. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_GENERATORFMS_H__2A6424EB_1110_40D4_A377_D9AA3985E5DA__INCLUDED_) +#define AFX_GENERATORFMS_H__2A6424EB_1110_40D4_A377_D9AA3985E5DA__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "Generator.h" + +class CGeneratorFMS : public CGenerator +{ +public: + unsigned char EncodeChar(unsigned char curchr); + void SetText(CString text); + bool BuildPktArray(bool folgetelegramm=false); + void SetBaustufe(int baustufe); + void SetRichtung(int richtung); + void SetTKI(int tki); + void SetStatus(int status); + void SetKodierung(CString kodierung); + virtual int Generate(CBuffer* buffer); + CGeneratorFMS(); + virtual ~CGeneratorFMS(); + +protected: + unsigned char ConvertChar(char c); + CString m_sText; + int GenerateTelegramm(CBuffer *buffer, int offset, bool folgetelegramm=false); + void crc_check(unsigned char *bp); + int m_iRichtung ; + int m_iBaustufe ; + char m_sKodierung[10] ; + int m_iStatus ; + int m_iTKI ; + + char convert(char c); + static unsigned char reverse(unsigned char curchr); + // Verlaufsinformationen + // + int ch_idx; + int ph_row, ph_col, ph, phinc; + int time, time2; + unsigned char data[512]; + int lastb; + + // Parameter + // + unsigned char pkt[256]; + int pktlen; + int pause; + float duration; +}; + +#endif // !defined(AFX_GENERATORFMS_H__2A6424EB_1110_40D4_A377_D9AA3985E5DA__INCLUDED_) diff --git a/monitord/generators/GeneratorZVEI.cpp b/monitord/generators/GeneratorZVEI.cpp new file mode 100644 index 0000000..7b51ad7 --- /dev/null +++ b/monitord/generators/GeneratorZVEI.cpp @@ -0,0 +1,280 @@ +// GeneratorZVEI.cpp: Implementierung der Klasse CGeneratorZVEI. +// +////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "GeneratorZVEI.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#endif + +#define PHINC(x) ((float)(x)*0x10000/SAMPLE_RATE) + +#pragma warning( disable : 4244 ) + +static const unsigned int zvei_freq[16] = { + PHINC(2400), PHINC(1060), PHINC(1160), PHINC(1270), + PHINC(1400), PHINC(1530), PHINC(1670), PHINC(1830), + PHINC(2000), PHINC(2200), PHINC(2800), PHINC(810), + PHINC(970), PHINC(886), PHINC(2600), PHINC(0) +}; + +#pragma warning( default : 4244 ) +////////////////////////////////////////////////////////////////////// +// Konstruktion/Destruktion +////////////////////////////////////////////////////////////////////// + +CGeneratorZVEI::CGeneratorZVEI() +{ + +} + +CGeneratorZVEI::~CGeneratorZVEI() +{ + +} + +bool CGeneratorZVEI::SetZVEI(CString zveiCode) +{ + m_sInputString=zveiCode ; + return true ; +} + +int CGeneratorZVEI::Generate(CBuffer* buffer) +{ + int offset ; + int frequenz_weckton=0 ; + bool bKanalbelegungston=false ; + CString weckton ; + + // ist ein Weckton zu erzeugen ? + // Wenn ja, welcher ? + if (m_sInputString.GetLength()<5) + { + return 0 ; + } + + CString zvei=m_sInputString.Left(5) ; + + if (m_sInputString.GetLength()>5) + { + weckton=m_sInputString.GetAt(5) ; + + switch (weckton.GetAt(0)) + { + case 'B': + case 'b' : + frequenz_weckton=0 ; + bKanalbelegungston=true ; + break ; + + case 'F': + case 'f' : + frequenz_weckton=1240 ; + break ; + case 'P': + case 'p' : + frequenz_weckton=1860 ; + break ; + case 'W': + case 'w' : + frequenz_weckton=2280 ; + break ; + case 'Z': + case 'z' : + frequenz_weckton=825 ; + break ; + case 'E': + case 'e' : + frequenz_weckton=1010 ; + break ; + default: + frequenz_weckton=0 ; + m_sInputString+="X" ; + break ; + + } + } else + { + frequenz_weckton=0 ; + m_sInputString+="X" ; + } + + offset=GeneratePause(buffer,0,600) ; + offset+=GenerateSequence(buffer,offset) ; + offset+=GeneratePause(buffer,offset,600) ; + offset+=GenerateSequence(buffer,offset) ; + offset+=GeneratePause(buffer,offset,600) ; + + if (frequenz_weckton>0) + { + offset+=GenerateWeckton(buffer,offset,frequenz_weckton) ; + } + else + { + if (bKanalbelegungston) + { + offset+=GenerateBelegungston(buffer,offset) ; + offset+=GenerateBelegungston(buffer,offset) ; + offset+=GenerateBelegungston(buffer,offset) ; + offset+=GenerateBelegungston(buffer,offset) ; + } + } + offset+=GeneratePause(buffer,offset,70) ; + + return offset ; +} + +int CGeneratorZVEI::GenerateSequence(CBuffer* buffer, int offset) +{ + // Standardwerte setzen + ch_idx=0 ; + ph=0 ; + phinc=0 ; + time=0 ; + time2=0 ; + duration=MS(70); + pause=MS(1) ; + + char c; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + for (; ((buflen > 0) && (ch_idxs.zvei.time ist die gesamtdauer (mit Pause) + time2 = duration; // s->s.zvei.time2 ist die Dauer des Tones an sich + if (c >= '0' && c <= '9') + i = c - '0'; + else if (c >= 'A' && c <= 'F') + i = c - 'A' + 10; + else + i = c - 'a' + 10; + phinc = zvei_freq[i & 0xf]; // Die Schwingungsl�nge 2pi=1 Periode ist wie lange ? + } // 10000 "Einheiten". Wobei 10000 Einheiten ja abh�ngig von der Samplerate sind + // phinc ist �hnlich wie Omega (Kreisgeschwindigkeit) + } + else if (!time2) { + phinc = 0; // Phi-Increment + ph = 0xc000; // Phi + } + time--; + time2--; + //*buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + *buf=0 ; + *buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + ph += phinc; + } + return num*2 ; + +} + +//DEL int CGeneratorZVEI::GeneratePause(CBuffer *buffer, int offset, int ms_delay) +//DEL { +//DEL +//DEL } + + + +int CGeneratorZVEI::GenerateWeckton(CBuffer *buffer, int offset, int freq) +{ + // Standardwerte setzen + ch_idx=0 ; + int ph_Basis=0 ; + ph=0 ; + phinc=0 ; + int phinc_Basis ; + time=0 ; + time2=0 ; + duration=MS(5000); + pause=MS(1) ; + + char c; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + time = duration + pause; //s->s.zvei.time ist die gesamtdauer (mit Pause) + time2 = duration; // s->s.zvei.time2 ist die Dauer des Tones an sich + + phinc_Basis=PHINC(675) ; + phinc = PHINC(freq) ; // Die Schwingungsl�nge 2pi=1 Periode ist wie lange ? + + for (; ((buflen > 0) && time>0) ; buflen-- , buf++, num++) { + + if (time2<=0) { + phinc = 0; // Phi-Increment + phinc_Basis = 0; // Phi-Increment + ph_Basis=0xc000 ; // Phi Basiston + ph = 0xc000; // Phi + } + time--; + time2--; + //*buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + *buf=0 ; + *buf += ((m_iAmpl * COS(ph_Basis)) + (m_iAmpl * COS(ph)) ) >> 16; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + + ph += phinc; + ph_Basis += phinc_Basis ; + } + return num*2 ; + +} + +int CGeneratorZVEI::GenerateBelegungston(CBuffer *buffer, int offset, int dauer, int pause) +{ + // Standardwerte setzen + ph=0 ; + phinc=0 ; + time=0 ; + time2=0 ; + duration=MS(dauer); + pause=MS(pause) ; + + char c; + int num = 0, i; + + int buflen=(buffer->ByteLen-offset)/2 ; + signed short *buf=(signed short *) buffer->ptr.s ; + buf += offset/2 ; + + time = duration + pause; //s->s.zvei.time ist die gesamtdauer (mit Pause) + time2 = duration; // s->s.zvei.time2 ist die Dauer des Tones an sich + + phinc = PHINC(2600) ; // Die Schwingungsl�nge 2pi=1 Periode ist wie lange ? + + for (; ((buflen > 0) && time>0) ; buflen-- , buf++, num++) { + + if (time2<=0) { + phinc = 0; // Phi-Increment + ph = 0xc000; // Phi + } + time--; + time2--; + *buf=0 ; + *buf += (m_iAmpl * COS(ph)) >> 15; // Nun ja, es ist eigentlich dann wohl eine COS-Schwingung ;-) + + ph += phinc; + + } + return num*2 ; + + + +} diff --git a/monitord/generators/GeneratorZVEI.h b/monitord/generators/GeneratorZVEI.h new file mode 100644 index 0000000..f9ba445 --- /dev/null +++ b/monitord/generators/GeneratorZVEI.h @@ -0,0 +1,36 @@ +// GeneratorZVEI.h: Schnittstelle f�r die Klasse CGeneratorZVEI. +// +////////////////////////////////////////////////////////////////////// + +#if !defined(AFX_GENERATORZVEI_H__8F64A74E_D08C_4183_953E_646740D6F8A0__INCLUDED_) +#define AFX_GENERATORZVEI_H__8F64A74E_D08C_4183_953E_646740D6F8A0__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "Generator.h" + +class CGeneratorZVEI : public CGenerator +{ +public: + int GenerateBelegungston(CBuffer *buffer, int offset, int dauer=800, int pause=300); + int GenerateWeckton(CBuffer* buffer, int offset, int freq); + int GenerateSequence(CBuffer* buffer, int offset=0); + virtual int Generate(CBuffer* buffer); + bool SetZVEI(CString zveicode); + CGeneratorZVEI(); + virtual ~CGeneratorZVEI(); + +protected: + int ph; + int phinc; + int pause; + int duration; + int time2; + int time; + int ch_idx; + CString m_sInputString; +}; + +#endif // !defined(AFX_GENERATORZVEI_H__8F64A74E_D08C_4183_953E_646740D6F8A0__INCLUDED_) diff --git a/monitord/lua.hpp b/monitord/lua.hpp new file mode 100644 index 0000000..3998bd1 --- /dev/null +++ b/monitord/lua.hpp @@ -0,0 +1,21 @@ +#ifndef LUA_HPP_ +#define LUA_HPP_ + +#include "config.h" + +#ifdef HAVE_LUA_H + #ifdef HAVE_LUALIB_H + // Alles f�r LUA scheint vorhanden zu sein + #define LUA + #endif +#endif + +#ifdef LUA +extern "C" { +#include "lua.h" +#include "lauxlib.h" +#include "lualib.h" +} +#endif + +#endif /*LUA_HPP_*/ diff --git a/monitord/memlock.cpp b/monitord/memlock.cpp new file mode 100644 index 0000000..1b1b6d0 --- /dev/null +++ b/monitord/memlock.cpp @@ -0,0 +1,81 @@ +#include + +#include "memlock.h" + +#ifndef _WIN32 +//#include +#include +#include +#else +#include +#include +#endif + +int memLockCreate( int key, MEMLOCK *s) +{ +#ifdef _WIN32 + char semname[30]; + sprintf( semname, "sem%08x", key); + *s = CreateSemaphore( NULL, 1, 1, semname); + return (*s != NULL)? 0 : -1; +#else + *s = semget( key, 1, IPC_CREAT|0600); + if (*s > 0) memUnlock( *s); + return (*s >= 0)? 0 : -1; +#endif +} + +int memLockOpen( int key, MEMLOCK *s) +{ +#ifdef _WIN32 + char semname[30]; + sprintf( semname, "sem%08x", key); + *s = OpenSemaphore( SEMAPHORE_ALL_ACCESS, FALSE, semname); + return (*s != NULL)? 0 : -1; +#else + *s = semget( key, 1, 0); + return (*s >= 0)? 0 : -1; +#endif +} + +void memLockDestroy( MEMLOCK s) +{ +#ifdef _WIN32 + CloseHandle( s); +#else + semctl( s, 0, IPC_RMID); +#endif +} + +int memLock( MEMLOCK s) +{ +#ifdef _WIN32 + return (WAIT_FAILED == WaitForSingleObject( s, INFINITE)); +#else + struct sembuf sop; + + sop.sem_num = 0; + sop.sem_op = -1; + sop.sem_flg = 0; + + return semop( s, &sop, 1); +#endif +} + +int memUnlock( MEMLOCK s) +{ +#ifdef _WIN32 + return !ReleaseSemaphore ( s, 1, NULL); +#else + struct sembuf sop; + + if (semctl( s, 0, GETVAL) > 0) + return -1 ; /* already unlocked */ + + sop.sem_num = 0; + sop.sem_op = 1; + sop.sem_flg = 0; + + return semop( s, &sop, 1); +#endif +} diff --git a/monitord/memlock.h b/monitord/memlock.h new file mode 100644 index 0000000..77cfe0e --- /dev/null +++ b/monitord/memlock.h @@ -0,0 +1,64 @@ +#ifndef MEMLOCK_H_ +#define MEMLOCK_H_ + +#ifdef _WIN32 +#include +#include +typedef HANDLE MEMLOCK; +#else +//#include +typedef int MEMLOCK; +#endif + +/* create a new semaphore + * Input Parameter: + * key_t : system unique key of the semaphore + * Output Parameter: + * s : the handle of the semaphore + * Return value: + * 0 : OK + * -1 : error + */ +int memLockCreate( int key, MEMLOCK *s); + + +/* open an existing semaphore + * Input Parameter: + * key_t : system unique key of the semaphore + * Output Parameter: + * s : the handle of the semaphore + * Return value: + * 0 : OK + * -1 : error + */ +int memLockOpen( int key, MEMLOCK *s); + + +/* destroy a semaphore + * Input Parameter: + * s : the semaphore handle + */ +void memLockDestroy( MEMLOCK s); + + +/* request a lock + * Input Parameter: + * s : the semaphore handle + * Return value: + * 0 : OK + * else : error + */ +int memLock( MEMLOCK s); + + +/* release a lock + * Input Parameter: + * s : the semaphore handle + * Return value: + * 0 : OK + * else : error + */ +int memUnlock( MEMLOCK s); + + +#endif /*MEMLOCK_H_*/ diff --git a/monitord/plugins/.svn/all-wcprops b/monitord/plugins/.svn/all-wcprops new file mode 100644 index 0000000..cfa196a --- /dev/null +++ b/monitord/plugins/.svn/all-wcprops @@ -0,0 +1,65 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/!svn/ver/454/monitor/trunk/monitord/plugins +END +dll-elf.cpp +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/323/monitor/trunk/monitord/plugins/dll-elf.cpp +END +dll.h +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/323/monitor/trunk/monitord/plugins/dll.h +END +mplugin.h +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/364/monitor/trunk/monitord/plugins/mplugin.h +END +mpluginAudio.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/377/monitor/trunk/monitord/plugins/mpluginAudio.h +END +libmplugin_audiorecorderSOX.cpp +K 25 +svn:wc:ra_dav:version-url +V 76 +/!svn/ver/378/monitor/trunk/monitord/plugins/libmplugin_audiorecorderSOX.cpp +END +libmplugin_mysql.cpp +K 25 +svn:wc:ra_dav:version-url +V 65 +/!svn/ver/454/monitor/trunk/monitord/plugins/libmplugin_mysql.cpp +END +libmplugin_audiorecorder.cpp +K 25 +svn:wc:ra_dav:version-url +V 73 +/!svn/ver/377/monitor/trunk/monitord/plugins/libmplugin_audiorecorder.cpp +END +dll-win32.cpp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/323/monitor/trunk/monitord/plugins/dll-win32.cpp +END +mplugin.cpp +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/323/monitor/trunk/monitord/plugins/mplugin.cpp +END +mpluginAudio.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/377/monitor/trunk/monitord/plugins/mpluginAudio.cpp +END diff --git a/monitord/plugins/.svn/dir-prop-base b/monitord/plugins/.svn/dir-prop-base new file mode 100644 index 0000000..56a1490 --- /dev/null +++ b/monitord/plugins/.svn/dir-prop-base @@ -0,0 +1,8 @@ +K 10 +svn:ignore +V 25 +.deps +.dirstamp +.libs + +END diff --git a/monitord/plugins/.svn/entries b/monitord/plugins/.svn/entries new file mode 100644 index 0000000..bfab7e1 --- /dev/null +++ b/monitord/plugins/.svn/entries @@ -0,0 +1,368 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/monitord/plugins +http://svn.monitord.de + + + +2011-05-06T19:36:29.013037Z +454 +mdi +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +dll-elf.cpp +file + + + + +2012-01-23T14:07:03.268513Z +fa76f20fbcb3970dd3e72e1c7a4e9d5d +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1248 + +dll.h +file + + + + +2012-01-23T14:07:03.268513Z +09fb4ad7c086750c4036a183950d289c +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2842 + +mplugin.h +file + + + + +2012-01-23T14:07:03.269503Z +f59e4ae0c6059e94037eaa759c5ba84f +2009-08-14T15:49:52.571335Z +364 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +1549 + +mpluginAudio.h +file + + + + +2012-01-23T14:07:03.270510Z +10bab397273c66f11f354ebfc75c19eb +2009-08-25T14:09:58.653151Z +377 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +2328 + +libmplugin_audiorecorderSOX.cpp +file + + + + +2012-01-23T14:07:03.270510Z +eddc2b4bd46f37308b96af24e851a115 +2009-08-25T15:11:33.265430Z +378 +buebchen + + + + + + + + + + + + + + + + + + + + + +8120 + +libmplugin_mysql.cpp +file + + + + +2012-01-23T14:07:03.271503Z +43c11f37bc3c0652488b681ac6bbdccf +2011-05-06T19:36:29.013037Z +454 +mdi +has-props + + + + + + + + + + + + + + + + + + + + +8216 + +libmplugin_audiorecorder.cpp +file + + + + +2012-01-23T14:07:03.271503Z +f7575983700c3aa56ac3c062ac96a0dc +2009-08-25T14:09:58.653151Z +377 +buebchen + + + + + + + + + + + + + + + + + + + + + +8926 + +dll-win32.cpp +file + + + + +2012-01-23T14:07:03.272502Z +785e624cdf9c50046c43dbe5e6bcf633 +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2173 + +mplugin.cpp +file + + + + +2012-01-23T14:07:03.272502Z +024f2c18f6e2c2687ebebf5049442c20 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +271 + +mpluginAudio.cpp +file + + + + +2012-01-23T14:07:03.272502Z +4a9938c850074b2e80c269ab105a61e9 +2009-08-25T14:09:58.653151Z +377 +buebchen + + + + + + + + + + + + + + + + + + + + + +4056 + diff --git a/monitord/plugins/.svn/prop-base/dll-elf.cpp.svn-base b/monitord/plugins/.svn/prop-base/dll-elf.cpp.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/plugins/.svn/prop-base/dll-elf.cpp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/plugins/.svn/prop-base/dll-win32.cpp.svn-base b/monitord/plugins/.svn/prop-base/dll-win32.cpp.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/plugins/.svn/prop-base/dll-win32.cpp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/plugins/.svn/prop-base/dll.h.svn-base b/monitord/plugins/.svn/prop-base/dll.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/plugins/.svn/prop-base/dll.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/plugins/.svn/prop-base/libmplugin_mysql.cpp.svn-base b/monitord/plugins/.svn/prop-base/libmplugin_mysql.cpp.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/plugins/.svn/prop-base/libmplugin_mysql.cpp.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/plugins/.svn/prop-base/mplugin.h.svn-base b/monitord/plugins/.svn/prop-base/mplugin.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/plugins/.svn/prop-base/mplugin.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/plugins/.svn/prop-base/mpluginAudio.h.svn-base b/monitord/plugins/.svn/prop-base/mpluginAudio.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/plugins/.svn/prop-base/mpluginAudio.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/plugins/.svn/text-base/dll-elf.cpp.svn-base b/monitord/plugins/.svn/text-base/dll-elf.cpp.svn-base new file mode 100644 index 0000000..aa1c36d --- /dev/null +++ b/monitord/plugins/.svn/text-base/dll-elf.cpp.svn-base @@ -0,0 +1,83 @@ +#ifndef WIN32 + +#include +#include "dll.h" +#include "../MonitorLogging.h" + + +DLLManager::DLLManager( const char *fname ) +{ + // Try to open the library now and get any error message. + + h=dlopen( fname, RTLD_NOW ); + if (h==NULL) + { + FILE_LOG(logERROR) << "error loading library file \"" << fname << "\"" ; + } + err=dlerror(); +} + +DLLManager::~DLLManager() +{ + // close the library if it isn't null + if( h!=0 ) + dlclose(h); +} + + +bool DLLManager::GetSymbol( + void **v, + const char *sym_name + ) +{ + // try extract a symbol from the library + // get any error message is there is any + + if( h!=0 ) + { + *v = dlsym( h, sym_name ); + err=dlerror(); + if( err==0 ) + return true; + else { + *v=0 ; + return false; + } + } + else + { + *v=0 ; + return false; + } + +} + + +const char * DLLManager::GetDLLExtension() +{ + return ".so"; +} + +DLLFactoryBase::DLLFactoryBase( + const char *fname, + const char *factory + ) : DLLManager(fname) +{ + // try get the factory function if there is no error yet + + factory_func=0; + + if( LastError()==0 ) + { + GetSymbol( (void **)&factory_func, factory ? factory : "factory0" ); + } + +} + + +DLLFactoryBase::~DLLFactoryBase() +{ +} + +#endif /* ndef WIN32 */ + diff --git a/monitord/plugins/.svn/text-base/dll-win32.cpp.svn-base b/monitord/plugins/.svn/text-base/dll-win32.cpp.svn-base new file mode 100644 index 0000000..629f31f --- /dev/null +++ b/monitord/plugins/.svn/text-base/dll-win32.cpp.svn-base @@ -0,0 +1,114 @@ +#ifdef WIN32 + +#include "dll.h" + +#include "../MonitorLogging.h" + + +DLLManager::DLLManager( const char *fname ) +{ + // Try to open the library now and get any error message. + FILE_LOG(logDEBUG) << "calling LoadLibrary.." ; + h = LoadLibrary(fname); + FILE_LOG(logDEBUG) << "LoadLib done." ; + if (h == NULL) + { + + DWORD m; + int errorCode=GetLastError() ; + m = FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER| + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, /* Instance */ + errorCode, /* Message Number */ + 0, /* Language */ + (char*)&err, /* Buffer */ + 0, /* Min/Max Buffer size */ + NULL); /* Arguments */ + + FILE_LOG(logERROR) << "Error loading library \"" << fname << "\":" << err ; + } + else + { + err=NULL ; + } +} + +DLLManager::~DLLManager() +{ + // Free error string if allocated + LocalFree(err); + + // close the library if it isn't null + if (h != NULL) + FreeLibrary(h); + +} + + +bool DLLManager::GetSymbol( + void **v, + const char *sym_name + ) +{ + // try extract a symbol from the library + // get any error message is there is any + + if( h!=0 ) + { + *v = (void*) GetProcAddress(h, sym_name); + + if ((*v) != NULL) + return true; + else + { + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, /* Instance */ + GetLastError(), /* Message Number */ + 0, /* Language */ + err, /* Buffer */ + 0, /* Min/Max Buffer size */ + NULL); /* Arguments */ + return false; + } + } + else + { + return false; + } + +} + +const char * DLLManager::GetDLLExtension() +{ + return ".dll"; +} + +DLLFactoryBase::DLLFactoryBase( + const char *fname, + const char *factory + ) : DLLManager(fname) +{ + // try get the factory function if there is no error yet + + factory_func=0; + + if( LastError()==0 ) + { + GetSymbol( (void **)&factory_func, factory ? factory : "factory0" ); + } else { + FILE_LOG(logERROR) << "Lasterror=" << LastError() ; + } + +} + + +DLLFactoryBase::~DLLFactoryBase() +{ +} + + +#endif /* WIN32 */ diff --git a/monitord/plugins/.svn/text-base/dll.h.svn-base b/monitord/plugins/.svn/text-base/dll.h.svn-base new file mode 100644 index 0000000..04ddabd --- /dev/null +++ b/monitord/plugins/.svn/text-base/dll.h.svn-base @@ -0,0 +1,137 @@ + +#ifndef __DLL_H +#define __DLL_H + +// include the common header files + +#include +#include +#include + +#ifdef WIN32 +#include +#include +#endif + +#ifdef WIN32 +#define DLL_EXPORT extern "C" __declspec(dllexport) +#else +#define DLL_EXPORT extern "C" +#endif + +// +// class DLLManager is the simple ELF C++ Library manager. +// +// It tries to dynamically load the specified shared library +// when it is construted. +// +// You should call LastError() before doing anything. If it +// returns NULL there is no error. +// + + +class DLLManager +{ + public: + DLLManager( const char *fname ); + virtual ~DLLManager(); + + bool GetSymbol( void **, const char *sym_name ); + + static const char *GetDLLExtension(); + + const char *LastError() + { + return err; + } + + protected: +#ifdef WIN32 + HMODULE h; +#else + void *h; +#endif + char* err; +}; + + +// +// class DLLFactoryBase is the base class used for the DLLFactory +// template class. +// +// It inherits from the DLLManager class and must be constructed with +// the file name of the shared library and the function name within that +// library which will create the desired C++ factory class. +// If you do not provide func_name to the constructor, it defaults to +// the undecorated "C" symbol "factory0" +// +// factory_func will be set to a pointer to the requested factory creator +// function. If there was an error linking to the shared library, +// factory_func will be 0. +// +// You can call 'LastError()' to find the error message that occurred. +// +// + +class DLLFactoryBase : public DLLManager +{ + public: + DLLFactoryBase( + const char *fname, + const char *func_name=0 + ); + + virtual ~DLLFactoryBase(); + + void * (*factory_func)(void); +}; + + +// +// The DLLFactory template class inherits from DLLFactoryBase. +// The constructor takes the file name of the shared library +// and the undecorated "C" symbol name of the factory creator +// function. The factory creator function in your shared library +// MUST either return a pointer to an object that is a subclass +// of 'T' or it must return 0. +// +// If everything is cool, then 'factory' will point to the +// requested factory class. If not, it will be 0. +// +// Since the DLLFactory template ultimately inherits DLLManager, +// you can call LastError() to get any error code information +// +// The created factory is OWNED by the DLLFactory class. +// The created factory will get deleted when the DLLFactory class +// is deleted, because the DLL will get unloaded as well. +// + +template +class DLLFactory : public DLLFactoryBase +{ + public: + DLLFactory( + const char *fname, + const char *func_name=0 + ) : DLLFactoryBase( fname, func_name ) + { + if( factory_func ) + factory = (T *)factory_func(); + else + factory = 0; + } + + ~DLLFactory() + { + delete factory; + } + + T *factory; +}; + + + + + + +#endif diff --git a/monitord/plugins/.svn/text-base/libmplugin_audiorecorder.cpp.svn-base b/monitord/plugins/.svn/text-base/libmplugin_audiorecorder.cpp.svn-base new file mode 100644 index 0000000..e789855 --- /dev/null +++ b/monitord/plugins/.svn/text-base/libmplugin_audiorecorder.cpp.svn-base @@ -0,0 +1,376 @@ +#include +#include +#include +#include "mpluginAudio.h" +#include "../../config.h" +#include "../convert.h" +#include "../MonitorExceptions.h" +#include "../MonitorLogging.h" + +#ifdef HAVE_LIBMP3LAME + #include +#endif + +#ifndef WIN32 + typedef short SHORT ; + #include +#else + #include +#endif + +using namespace std ; + +class MonitorAudioPlugInRecorder : public MonitorAudioPlugIn +{ + public: + #ifdef HAVE_LIBMP3LAME + /** + * + */ + lame_global_flags *gfp ; + + #endif + + + MonitorAudioPlugInRecorder() + { + useLame=false ; + m_channelNum=0 ; + } + + virtual ~MonitorAudioPlugInRecorder() + { + #ifdef HAVE_LIBMP3LAME + lame_close(gfp) ; + gfp=NULL ; + #endif + } + + virtual bool InitAudioProcessing(class MonitorConfiguration* configPtr, XMLNode config, int channelNum) + { + std::string logFile="screen" ; + std::string logLevel="DEBUG" ; + XMLNode parameters ; + m_channelNum=channelNum; + + if (!((parameters=config.getChildNode("parameters"))).isEmpty()) + { + m_filePath=getNodeText(parameters,"path","./") ; + logFile=getNodeText(parameters,"logfile","screen") ; + logLevel=getNodeText(parameters,"loglevel","INFO") ; + } + + #ifdef WIN32 + if (!(logFile=="screen")) + { + FILE* pFile = fopen(logFile.c_str(), "a"); + Output2FILE::Stream() = pFile; + } + FILELog::ReportingLevel() = FILELog::FromString(logLevel); + FILE_LOG(logINFO) << "logging started"; + #endif + + #ifdef HAVE_LIBMP3LAME + + try { + FILE_LOG(logINFO) << "enabling lame mp3 support" ; + FILE_LOG(logINFO) << "Using MP3Lame Lib Version: " << get_lame_version() ; + + gfp=lame_init() ; + if (gfp==NULL) + { + ThrowMonitorException("Error initializing lame library!") ; + } + + lame_set_bWriteVbrTag(gfp,0) ; // Kein ID3 Tag + lame_mp3_tags_fid(gfp,NULL) ; + lame_set_num_channels(gfp,1) ; + lame_set_in_samplerate(gfp,22050) ; + lame_set_brate(gfp,32) ; + lame_set_mode(gfp,MONO) ; + lame_set_quality(gfp,7) ; + + int retCode = lame_init_params(gfp) ; + if (retCode<0) + { + ThrowMonitorException("LIBMP3Lame init failed") ; + }else{ + useLame=1 ; + } + } catch (MonitorException e) + { + FILE_LOG(logERROR) << e.what() ; + } + #endif + + return true ; + } + + virtual void Show() + { + FILE_LOG(logINFO) << "MonitorAudioPluginRecorder successfully loaded" ; + } + + virtual void WriteRAWToFile (FILE *pFile,SHORT buffer[],unsigned int bufferSize) + { + size_t len=fwrite(buffer, sizeof(SHORT), bufferSize,pFile); + if (len!=bufferSize) + { + FILE_LOG(logERROR) << "Fehler beim Schreiben: " << len << " statt " << bufferSize ; + // Fehler beim Schreiben ? + } + } + + virtual void WriteMP3ToFile (FILE *pFile,unsigned char buffer[],unsigned int bufferSize) + { + size_t len=fwrite(buffer, sizeof(unsigned char), bufferSize,pFile); + if (len!=bufferSize) + { + FILE_LOG(logERROR) << "Fehler beim Schreiben: " << len << " statt " << bufferSize ; + // Fehler beim Schreiben ? + } + } + + virtual void ProcessAudio(float *buffer, int length) + { + const int MAXTEMP=20000 ; + int jobID=0 ; + int retCode=0 ; // LIB_MP3Lame encoding return code + static SHORT tempBuf[MAXTEMP] ; + static unsigned char mp3Buffer[2*MAXTEMP] ; + unsigned int tempBufCounter=0 ; + FILE* pFile=NULL ; + time_t startTime ; + + if (length>MAXTEMP) + { + ThrowMonitorException ("Audiobuffer size exceeds temporary buffer size!") ; + } + + //if (m_bRecording) + { + for (int i=0;i(time_t) seconds) + { + StopRecording(jobID) ; + } + } + } + } + } + + void StartRecording(int jobID,std::string fname,int Sekunden) + { + FILE_LOG(logINFO) << "Starte Aufnahme .." ; + + // Aufnahmedatei erzeugen + FILE_LOG(logINFO) << "Starte mit dauer:" << Sekunden ; + if (fname.size()>0) + { + // Dateiname wurde vorgegeben + } else + { + fname="kein_datename" ; + } + + FILE * f_File = fopen(fname.c_str(), "wb"); + + if(f_File==NULL) { + FILE_LOG(logERROR) << "File ist NICHT erstellt" ; + } + else + { + FILE_LOG(logERROR) << "File ist erstellt"<< fname ; + } + + // Aufnahme starten, Daten beim Job hinterlegen + updateClient(jobID, + (unsigned long) f_File, + 0, + Sekunden, + fname, + time(NULL)) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":1:") + convertStringToHex(fname)) ; + } + + void StopRecording(int jobID) + { + FILE_LOG(logINFO) << "Aufnahme beendet" ; + + FILE* pFile=(FILE*) getCustomValue(jobID) ; + std::string fname=getInfoText(jobID) ; + + fclose(pFile) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":0:") + convertStringToHex(fname)) ; + clearClient(jobID) ; + } + + virtual std::string DoCommand(std::string command, SocketThread* pClient) + { + std::string resultString="" ; + std::string fname ; + int Sekunden=0 ; + + FILE_LOG(logINFO) << "Kommando: " << command ; + parseCommand(command) ; + + for (int i=0;i<10;i++) + { + FILE_LOG(logINFO) << "Param " << i << ":" << m_param[i] ; + } + + if (m_param[0]=="RECORD") //RECORD: + { + if (m_paramCount>1) + { + try + { + Sekunden=convertToInt(m_param[1]) ; + FILE_LOG(logINFO) << "Sekunden als param:" << m_param[1] ; + FILE_LOG(logINFO) << "Sekunden als int:" << Sekunden ; + } catch (BadConversion e) + { + FILE_LOG(logERROR) << "Fehler bei der Datenkonvertierung " << m_param[1] ; + Sekunden=60 ; + } + } + + int jobID=addClient(pClient) ; //< Auftraggeber, fuer callback mit Result + FILE_LOG(logINFO) << "jobID=" << jobID ; + + // Laeuft mit der jobID schon eine Aufzeichnung ? + // Wenn, dann keine neue starten, sondern nur verlaengern + + long SekundenAlterJob = getInfo(jobID) ; + FILE_LOG(logINFO) << "Zeitdauer alte Aufnahme:" << SekundenAlterJob ; + if (SekundenAlterJob>0) + { + // Nur die Zeit anpassen + time_t curTime=time(NULL) ; + time_t startTime=getTime1(jobID) ; + + FILE_LOG(logDEBUG) << "Zeiten curTime+Sekunden:" << curTime+Sekunden ; + FILE_LOG(logDEBUG) << "Zeiten startTime+SekundenAlterJob:" << startTime+SekundenAlterJob ; + if (curTime+Sekunden>startTime+SekundenAlterJob) + { + fname=getInfoText(jobID) ; + Sekunden=curTime+Sekunden-startTime ; + FILE_LOG(logINFO) << "Aufnahme wird auf " << Sekunden << "verlaengert " ; + updateClient(jobID,getCustomValue(jobID),0,Sekunden,getInfoText(jobID),startTime) ; + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":2:") + convertStringToHex(fname)) ; + } + } else { + time_t m_startTime=time(NULL) ; + struct tm *strTime = localtime(&m_startTime) ; + + char zeitString[60] ; + sprintf(zeitString,"%04d%02d%02d%02d%02d%02d", + 1900+strTime->tm_year, + 1+strTime->tm_mon, + strTime->tm_mday, + strTime->tm_hour, + strTime->tm_min, + strTime->tm_sec) ; + FILE_LOG(logDEBUG) << zeitString ; + + if (m_paramCount<2) + { + m_param[2]="X" ; + } + + fname= m_filePath + + std::string(zeitString) + + "_" + + m_param[2] + + "_"+ convertIntToString(jobID) ; + + cout << fname << endl ; + if (useLame==1) + { + fname+=".mp3"; ; + } else + { + fname+=".raw"; ; + } + + StartRecording(jobID,fname,Sekunden) ; + } + } ; + resultString="OK" ; + + return (resultString) ; + } + +protected: + std::string m_filePath ; + int useLame ; + int m_channelNum ; + +}; + + + +class MonitorAudioPlugInRecorderFactory : public MonitorAudioPlugInFactory +{ + public: + MonitorAudioPlugInRecorderFactory() + { + } + + ~MonitorAudioPlugInRecorderFactory() + { + } + + virtual MonitorAudioPlugIn * CreatePlugIn() + { + return new MonitorAudioPlugInRecorder; + } +}; + + +// +// The "C" linkage factory0() function creates the PlugInFunFactory +// class for this library +// + +DLL_EXPORT void * factory0( void ) +{ + return new MonitorAudioPlugInRecorderFactory; +} diff --git a/monitord/plugins/.svn/text-base/libmplugin_audiorecorderSOX.cpp.svn-base b/monitord/plugins/.svn/text-base/libmplugin_audiorecorderSOX.cpp.svn-base new file mode 100644 index 0000000..9ddcf1b --- /dev/null +++ b/monitord/plugins/.svn/text-base/libmplugin_audiorecorderSOX.cpp.svn-base @@ -0,0 +1,346 @@ +#include +#include +#include +#include "mpluginAudio.h" +#include "../../config.h" +#include "../convert.h" +#include "../MonitorExceptions.h" +#include "../MonitorLogging.h" + +extern "C" { + #include "sox.h" +} + + +#ifndef WIN32 + typedef short SHORT ; + #include +#else + #include +#endif + +using namespace std ; + +class MonitorAudioPlugInRecorderSOX : public MonitorAudioPlugIn +{ + public: + + /** + * + */ + + MonitorAudioPlugInRecorderSOX() + { + m_channelNum=0 ; + } + + virtual ~MonitorAudioPlugInRecorderSOX() + { + sox_format_quit() ; + } + + virtual bool InitAudioProcessing(class MonitorConfiguration* configPtr, XMLNode config, int channelNum) + { + std::string logFile="screen" ; + std::string logLevel="DEBUG" ; + XMLNode parameters ; + m_channelNum=channelNum; + + if (!((parameters=config.getChildNode("parameters"))).isEmpty()) + { + m_filePath=getNodeText(parameters,"path","./") ; + logFile=getNodeText(parameters,"logfile","screen") ; + logLevel=getNodeText(parameters,"loglevel","INFO") ; + } + + #ifdef WIN32 + if (!(logFile=="screen")) + { + FILE* pFile = fopen(logFile.c_str(), "a"); + Output2FILE::Stream() = pFile; + } + FILELog::ReportingLevel() = FILELog::FromString(logLevel); + FILE_LOG(logINFO) << "logging started"; + #endif + + + if (sox_init() != SOX_SUCCESS) + { + ThrowMonitorException("Error initializing sox library!") ; + } ; + + StartRecording(1,"test",10) ; + return true ; + } + + virtual void Show() + { + FILE_LOG(logINFO) << "MonitorAudioPluginRecorder successfully loaded" ; + } + + virtual void WriteToFile (FILE *pFile,unsigned char buffer[],unsigned int bufferSize) + { + size_t len=fwrite(buffer, sizeof(unsigned char), bufferSize,pFile); + if (len!=bufferSize) + { + FILE_LOG(logERROR) << "Fehler beim Schreiben: " << len << " statt " << bufferSize ; + // Fehler beim Schreiben ? + } + } + + virtual void ProcessAudio(float *buffer, int length) + { + SOX_SAMPLE_LOCALS ; + const int MAXTEMP=20000 ; + int jobID=0 ; + int myCount=0 ; + static sox_sample_t tempBuf[MAXTEMP] ; + //static unsigned char mp3Buffer[2*MAXTEMP] ; + unsigned int tempBufCounter=0 ; + time_t startTime ; + + if (length>MAXTEMP) + { + ThrowMonitorException ("Audiobuffer size exceeds temporary buffer size!") ; + } + + + { + for (int i=0;i(time_t) seconds) + { + StopRecording(jobID) ; + } + } + } + } + } + + void StartRecording(int jobID,std::string fname,int Sekunden) + { + FILE_LOG(logINFO) << "Starte Aufnahme .." ; + + // Aufnahmedatei erzeugen + FILE_LOG(logINFO) << "Starte mit dauer:" << Sekunden ; + if (fname.size()>0) + { + // Dateiname wurde vorgegeben + } else + { + fname="kein_datename" ; + } + + sox_format_t * pFormat = new sox_format_t ; + sox_signalinfo_t info ; + sox_encodinginfo_t encoding ; + + + info.rate=8000 ; + info.channels=1 ; + info.precision= 32 ; + info.length=SOX_IGNORE_LENGTH ; + info.mult=0 ; + + sox_init_encodinginfo(&encoding) ; + + encoding.encoding = SOX_ENCODING_LPC10 ; + encoding.bits_per_sample = 0 ; // TODO ? + encoding.compression = 0 ; + + pFormat =sox_open_write ("test.mp3", // war: lpc + &info, + &encoding, + 0, + 0, + 0) ; + + if(pFormat==NULL) { + FILE_LOG(logERROR) << "File ist NICHT erstellt" ; + } + else + { + FILE_LOG(logERROR) << "File ist erstellt: "<< fname ; + } + + // Aufnahme starten, Daten beim Job hinterlegen + updateClient(jobID, + (unsigned long) pFormat, + 0, + Sekunden, + fname, + time(NULL)) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":1:") + convertStringToHex(fname)) ; + } + + void StopRecording(int jobID) + { + FILE_LOG(logINFO) << "Aufnahme beendet" ; + + sox_format_t* pFormat=(sox_format_t*) getCustomValue(jobID) ; + std::string fname=getInfoText(jobID) ; + + sox_close(pFormat) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":0:") + convertStringToHex(fname)) ; + clearClient(jobID) ; + delete pFormat ; + } + + virtual std::string DoCommand(std::string command, SocketThread* pClient) + { + std::string resultString="" ; + std::string fname ; + int Sekunden=0 ; + + FILE_LOG(logINFO) << "Kommando: " << command ; + parseCommand(command) ; + + for (int i=0;i<10;i++) + { + FILE_LOG(logINFO) << "Param " << i << ":" << m_param[i] ; + } + + if (m_param[0]=="RECORD") //RECORD: + { + if (m_paramCount>1) + { + try + { + Sekunden=convertToInt(m_param[1]) ; + FILE_LOG(logINFO) << "Sekunden als param:" << m_param[1] ; + FILE_LOG(logINFO) << "Sekunden als int:" << Sekunden ; + } catch (BadConversion e) + { + FILE_LOG(logERROR) << "Fehler bei der Datenkonvertierung " << m_param[1] ; + Sekunden=60 ; + } + } + + int jobID=addClient(pClient) ; //< Auftraggeber, fuer callback mit Result + FILE_LOG(logINFO) << "jobID=" << jobID ; + + // Laeuft mit der jobID schon eine Aufzeichnung ? + // Wenn, dann keine neue starten, sondern nur verlaengern + + long SekundenAlterJob = getInfo(jobID) ; + FILE_LOG(logINFO) << "Zeitdauer alte Aufnahme:" << SekundenAlterJob ; + if (SekundenAlterJob>0) + { + // Nur die Zeit anpassen + time_t curTime=time(NULL) ; + time_t startTime=getTime1(jobID) ; + + FILE_LOG(logDEBUG) << "Zeiten curTime+Sekunden:" << curTime+Sekunden ; + FILE_LOG(logDEBUG) << "Zeiten startTime+SekundenAlterJob:" << startTime+SekundenAlterJob ; + if (curTime+Sekunden>startTime+SekundenAlterJob) + { + fname=getInfoText(jobID) ; + Sekunden=curTime+Sekunden-startTime ; + FILE_LOG(logINFO) << "Aufnahme wird auf " << Sekunden << "verlaengert " ; + updateClient(jobID,getCustomValue(jobID),0,Sekunden,getInfoText(jobID),startTime) ; + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":2:") + convertStringToHex(fname)) ; + } + } else { + time_t m_startTime=time(NULL) ; + struct tm *strTime = localtime(&m_startTime) ; + + char zeitString[60] ; + sprintf(zeitString,"%04d%02d%02d%02d%02d%02d", + 1900+strTime->tm_year, + 1+strTime->tm_mon, + strTime->tm_mday, + strTime->tm_hour, + strTime->tm_min, + strTime->tm_sec) ; + FILE_LOG(logDEBUG) << zeitString ; + + if (m_paramCount<2) + { + m_param[2]="X" ; + } + + fname= m_filePath + + std::string(zeitString) + + "_" + + m_param[2] + + "_"+ convertIntToString(jobID) ; + + cout << fname << endl ; + if (useLame==1) + { + fname+=".mp3"; ; + } else + { + fname+=".raw"; ; + } + + StartRecording(jobID,fname,Sekunden) ; + } + } ; + resultString="OK" ; + + return (resultString) ; + } + +protected: + std::string m_filePath ; + int useLame ; + int m_channelNum ; + +}; + + + +class MonitorAudioPlugInRecorderFactory : public MonitorAudioPlugInFactory +{ + public: + MonitorAudioPlugInRecorderFactory() + { + } + + ~MonitorAudioPlugInRecorderFactory() + { + } + + virtual MonitorAudioPlugIn * CreatePlugIn() + { + return new MonitorAudioPlugInRecorderSOX; + } +}; + + +// +// The "C" linkage factory0() function creates the PlugInFunFactory +// class for this library +// + +DLL_EXPORT void * factory0( void ) +{ + return new MonitorAudioPlugInRecorderFactory; +} + diff --git a/monitord/plugins/.svn/text-base/libmplugin_mysql.cpp.svn-base b/monitord/plugins/.svn/text-base/libmplugin_mysql.cpp.svn-base new file mode 100644 index 0000000..379bced --- /dev/null +++ b/monitord/plugins/.svn/text-base/libmplugin_mysql.cpp.svn-base @@ -0,0 +1,336 @@ + +#include +#include + +#ifdef WIN32 +#define usleep Sleep +#include +#endif + + +#include "mysql/mysql.h" +#include "mplugin.h" +#include "../MonitorLogging.h" + +using namespace std ; + +enum fieldsource {mysql=0,resultset=1} ; + +typedef struct +{ + string value ; + fieldsource source ; +} FieldInfo ; + +typedef map MappingInfo ; +typedef pair PairMapping ; + +// Class PlugInFun inherits from PlugIn +// and shows the world when one is created/destroyed +// and supplies a Show() method that announces its name + + +class MonitorPlugInMySQL : public MonitorPlugIn +{ + public: + MYSQL m_mysql ; + std::string hostname ; + std::string username ; + std::string password ; + std::string database ; + unsigned int port ; + unsigned int ssl; + std::string ssl_cacert; + std::string ssl_cert; + std::string ssl_key; + bool m_bConnected ; + + MappingInfo fmsMapping ; + MappingInfo zveiMapping ; + MappingInfo pocsagMapping ; + + std::string fmsTable; + std::string zveiTable; + std::string pocsagTable; + + MonitorPlugInMySQL() + { + m_bConnected=false ; + } + + virtual ~MonitorPlugInMySQL() + { + } + + virtual void Show() + { + FILE_LOG(logINFO) << "MonitorMySQLPlugin successfully loaded" ; + } + + std::string escape_string(std::string text) + { + const unsigned int MAXLEN=255 ; + char result[MAXLEN+1] ; + + memset(result,0,MAXLEN+1) ; + mysql_real_escape_string(&m_mysql,result,text.c_str(),text.size()>MAXLEN ? MAXLEN : text.size()) ; + return string(result) ; + } + + virtual bool processResult(class ModuleResultBase *pRes) + { + FILE_LOG(logDEBUG) << "mysql: processing Result..." ; + + if (m_bConnected==false) + { + return false ; + } + + int pingcounter=0 ; + while (mysql_ping(&m_mysql) && pingcounter<100) + { + usleep(100) ; + pingcounter++ ; + FILE_LOG(logINFO) << "mysql connection lost ... trying reconnect" ; + } + + if (mysql_ping(&m_mysql)) + { + FILE_LOG(logERROR) << " unable to reconnect to mysql database" ; + return false ; + } + + if (pingcounter>0) + { + FILE_LOG(logINFO) << "mysql: connection re-established" ; + } + + // wenn wir latin1 einfuegen sollten wir das mysql auch mitteilen! + mysql_query(&m_mysql, "SET NAMES latin1"); + + if ((*pRes)["typ"]=="fms") + { + std::string insertString ; + insertString = createInsertString(pRes,fmsMapping,fmsTable); + mysql_query(&m_mysql,insertString.c_str()) ; + } else if ((*pRes)["typ"]=="pocsag") + { + std::string insertString ; + insertString = createInsertString(pRes,pocsagMapping,pocsagTable); + mysql_query(&m_mysql,insertString.c_str()) ; + }else if ((*pRes)["typ"]=="zvei") + { + std::string insertString; + insertString = createInsertString(pRes,zveiMapping,zveiTable); + mysql_query(&m_mysql,insertString.c_str()) ; + } + + + return true ; + } + + virtual bool initProcessing(class MonitorConfiguration* configPtr,XMLNode config) + { + mysql_init(&m_mysql) ; + + #if (MYSQL_VERSION_ID>50013) + /* for mysql V5.0.3+ is auto_reconnect disabled by default*/ + my_bool reconnect = 1; + mysql_options(&m_mysql, MYSQL_OPT_RECONNECT, &reconnect); + #endif + + hostname=getNodeText(config,"hostname","localhost") ; + username=getNodeText(config,"username","root") ; + password=getNodeText(config,"password","rootpw") ; + database=getNodeText(config,"database","demo") ; + port=getNodeInt(config,"port",3306) ; + ssl=getNodeInt(config,"ssl",0); + ssl_cacert=getNodeText(config,"ssl-cacert","0"); + ssl_cert=getNodeText(config,"ssl-cert","0"); + ssl_key=getNodeText(config,"ssl-key","0"); + std::string logFile=getNodeText(config,"logfile","screen") ; + std::string logLevel=getNodeText(config,"loglevel","INFO") ; + #ifdef WIN32 + if (!(logFile=="screen")) + { + FILE* pFile = fopen(logFile.c_str(), "a"); + Output2FILE::Stream() = pFile; + + } + FILELog::ReportingLevel() = FILELog::FromString(logLevel); + FILE_LOG(logINFO) << "logging started"; + #endif + + if (ssl == 1 && ssl_cacert != "0" && ssl_cert != "0" && ssl_key != "0") + { + mysql_ssl_set(&m_mysql, + ssl_key.c_str(), + ssl_cert.c_str(), + ssl_cacert.c_str(), + NULL, + NULL); + FILE_LOG(logINFO) << "mySQL ssl support configured with key=" << ssl_key << " and cert=" << ssl_cert << " and cacert=" << ssl_cacert; + } + + // Parameter parsen + parseParameter(config) ; + if (mysql_real_connect( &m_mysql, + hostname.c_str(), + username.c_str(), + password.c_str(), + database.c_str(), + port, + NULL, // Unix Socket + 0 // Options + ) ==NULL) + { + FILE_LOG(logERROR) << "Could not connect to database \"" << database << "\" on host " << hostname << " with username=\"" << username << "\"" ; + m_bConnected=false ; + } else + { + FILE_LOG(logINFO) << "successfully connected to mysql database " << database << " on host " << hostname << " with username=\"" << username << "\"" ; + m_bConnected=true ; + } + return m_bConnected ; + } ; + + virtual bool quitProcessing() {return true;} ; + + void parseParameter(XMLNode config) + { + XMLNode mappingNode ; + + int nMapping=config.nChildNode("mapping"); + + for (int num=0; numvalue=value ; + if (source=="mysql") + { + pFieldInfo->source=mysql ; + } else + { + pFieldInfo->source=resultset ; + } + mappingInfo.insert( PairMapping(name,pFieldInfo)); + } + } + } + + std::string createInsertString(class ModuleResultBase *pRes,MappingInfo mapping,std::string table) + { + std::string insertString=""; + std::string valueString="" ; + MappingInfo::iterator i ; + FieldInfo* pFieldInfo ; + std::string fieldName="" ; + + insertString=" insert into " + table + " (" ; + for (i=mapping.begin();i!=mapping.end();i++) + { + fieldName= i->first ; + pFieldInfo= i->second ; + + FILE_LOG(logDEBUG) << "field:" << fieldName << " | value=" << pFieldInfo->value ; + if (i!=mapping.begin()) + { + insertString+="," ; + valueString+="," ; + } + + insertString+=fieldName ; + if (pFieldInfo->source==mysql) + { + valueString+= pFieldInfo->value ; + } else + { + valueString+="\"" +escape_string((*pRes)[pFieldInfo->value])+"\"" ; + } + } + insertString+=") values (" ; + insertString+=valueString + ")" ; + + FILE_LOG(logDEBUG) << "Insertstring:" << insertString ; + return insertString ; + } + +}; + +// +// The PlugInFunFactory class inherits from PlugInFactory +// and creates a PlugInFun object when requested. +// + + +class MonitorPlugInMySQLFactory : public MonitorPlugInFactory +{ + public: + MonitorPlugInMySQLFactory() + { + } + + ~MonitorPlugInMySQLFactory() + { + } + + virtual MonitorPlugIn * CreatePlugIn() + { + return new MonitorPlugInMySQL() ; + } +}; + + +// +// The "C" linkage factory0() function creates the PlugInFunFactory +// class for this library +// + +DLL_EXPORT void * factory0( void ) +{ + return new MonitorPlugInMySQLFactory; +} diff --git a/monitord/plugins/.svn/text-base/mplugin.cpp.svn-base b/monitord/plugins/.svn/text-base/mplugin.cpp.svn-base new file mode 100644 index 0000000..39017c8 --- /dev/null +++ b/monitord/plugins/.svn/text-base/mplugin.cpp.svn-base @@ -0,0 +1,20 @@ + +#include +#include +#include "mplugin.h" + +using namespace std ; + +// +// Announce to the world that the PlugIn base +// class has been created or destroyed +// + +MonitorPlugIn::MonitorPlugIn() +{ +} + +MonitorPlugIn::~MonitorPlugIn() +{ +} + diff --git a/monitord/plugins/.svn/text-base/mplugin.h.svn-base b/monitord/plugins/.svn/text-base/mplugin.h.svn-base new file mode 100644 index 0000000..a1a0b01 --- /dev/null +++ b/monitord/plugins/.svn/text-base/mplugin.h.svn-base @@ -0,0 +1,71 @@ +#ifndef MPLUGIN_H_ +#define MPLUGIN_H_ + +#ifdef PLUGINS + +#include "dll.h" +#include "../MonitorModulesResults.h" +#include "../MonitorConfiguration.h" +#include "../xmltools.h" + + +// +// PlugIn is an abstract class. +// +// This is an example plug in. This plug in only has one method, Show(), +// which we will use to show its name. +// +// + +class MonitorPlugIn +{ + public: + MonitorPlugIn(); + + virtual ~MonitorPlugIn(); + + virtual bool initProcessing(class MonitorConfiguration* configPtr,XMLNode config) {return true ; } ; + virtual bool processResult(class ModuleResultBase *pRes)=0 ; + virtual bool quitProcessing() {return true;} ; + virtual void Show() = 0; +protected: + +}; + + +// +// The is an example factory for plug ins. +// +// This example factory only announces when it is created/destroyed and +// has the single abstract method CreatePlugIn() which returns a type +// of plug in. +// +// In the real world, you may have multiple different classes in each +// shared library that are made to work together. All these classes +// must be created by the Factory class. +// +// You may find it useful to have the objects that you create with +// the factory class be given a pointer to the factory class so +// they can create their own objects that they need, using the same +// factory class. Compiler support of covariant return types is +// real useful here. +// + + +class MonitorPlugInFactory +{ + public: + MonitorPlugInFactory() + { } + + virtual ~MonitorPlugInFactory() + { } + + virtual MonitorPlugIn * CreatePlugIn() { + return NULL ; + } +}; + +#endif + +#endif /*MPLUGIN_H_*/ diff --git a/monitord/plugins/.svn/text-base/mpluginAudio.cpp.svn-base b/monitord/plugins/.svn/text-base/mpluginAudio.cpp.svn-base new file mode 100644 index 0000000..d76ee35 --- /dev/null +++ b/monitord/plugins/.svn/text-base/mpluginAudio.cpp.svn-base @@ -0,0 +1,187 @@ +#include "mpluginAudio.h" + +using namespace std ; + +MonitorAudioPlugIn::MonitorAudioPlugIn() +{ + m_bLockSocketMessages=false; + for (int i=0; ipThread=pClient ; + pMsg->message=message ; + + while (m_bLockSocketMessages==true) Sleep(3) ; + + m_bLockSocketMessages=true ; + m_SocketMessages.push_back(pMsg) ; + m_bLockSocketMessages=false ; +} + +void MonitorAudioPlugIn::addThreadMessage(int jobID, std::string message) +{ + if ((jobID<0) || (jobID>=MAXAUDIOCLIENTS)) + { + ThrowMonitorException ("jobID nicht im erlaubten Bereich: " + convertIntToString(jobID)) ; + } ; + + addThreadMessage (m_pClient[jobID].pThread,message) ; +} + +bool MonitorAudioPlugIn::getThreadMessage(SocketMessage & msg) +{ + bool retVal=false ; + + while (m_bLockSocketMessages) Sleep(1) ; + + m_bLockSocketMessages=true ; + + SocketMessage* pMsg ; + if (m_SocketMessages.size()>0) + { + pMsg=m_SocketMessages.back() ; + m_SocketMessages.pop_back() ; + + msg.pThread=pMsg->pThread ; + msg.message=pMsg->message ; + + delete pMsg ; + retVal=true ; + } + m_bLockSocketMessages=false ; + + return retVal ; +} + +void MonitorAudioPlugIn::broadcastMessage(std::string message) +{ + for (int i=0; i=MAXAUDIOCLIENTS) i=-1 ; + + return i ; +} + +void MonitorAudioPlugIn::updateClient(int jobID, unsigned long customValue,unsigned long customValue2,unsigned long info, std::string infoText, time_t time1,time_t time2) +{ + m_pClient[jobID].customValue=customValue ; + m_pClient[jobID].customValue2=customValue2 ; + m_pClient[jobID].info=info ; + m_pClient[jobID].infoText=infoText; + m_pClient[jobID].time1=time1 ; + m_pClient[jobID].time2=time2 ; +} + +unsigned long MonitorAudioPlugIn::getCustomValue(int jobID) +{ + return m_pClient[jobID].customValue ; +} + +unsigned long MonitorAudioPlugIn::getCustomValue2(int jobID) +{ + return m_pClient[jobID].customValue2 ; +} +SocketThread* MonitorAudioPlugIn::getClient(int jobID) +{ + return m_pClient[jobID].pThread ; +} + +unsigned long MonitorAudioPlugIn::getInfo(int jobID) +{ + return m_pClient[jobID].info ; +} + +std::string MonitorAudioPlugIn::getInfoText(int jobID) +{ + return m_pClient[jobID].infoText ; +} + +time_t MonitorAudioPlugIn::getTime1(int jobID) +{ + return m_pClient[jobID].time1; +} + + +time_t MonitorAudioPlugIn::getTime2(int jobID) +{ + return m_pClient[jobID].time2; +} + +void MonitorAudioPlugIn::clearClient(int jobID) +{ + m_pClient[jobID].pThread=NULL ; + m_pClient[jobID].info=0 ; + m_pClient[jobID].infoText="" ; + m_pClient[jobID].customValue=0 ; +} +int MonitorAudioPlugIn::parseCommand(std::string command) +{ + m_paramCount=0 ; + + for (int i=0;i<9;i++) m_param[i].clear() ; + + int pos ; + unsigned int start=0 ; + m_paramCount=0; + + pos=command.find(":",start) ; + while ((pos>0) && (m_paramCount<9)) + { + m_param[m_paramCount++]=command.substr(start,pos-start) ; + cout << "ParamScan:" << m_paramCount-1 << ":" << m_param[m_paramCount-1] << endl ; + start=pos+1 ; + pos=command.find(":",start) ; + } + + if (command.size()>start) + { + m_param[m_paramCount++]=command.substr(start,command.size()-start) ; + } + +return m_paramCount ; +} + + + + + diff --git a/monitord/plugins/.svn/text-base/mpluginAudio.h.svn-base b/monitord/plugins/.svn/text-base/mpluginAudio.h.svn-base new file mode 100644 index 0000000..70b5e0f --- /dev/null +++ b/monitord/plugins/.svn/text-base/mpluginAudio.h.svn-base @@ -0,0 +1,92 @@ +#ifndef MPLUGINAUDIO_H_ +#define MPLUGINAUDIO_H_ + +#ifdef PLUGINS + +#include "dll.h" +#include "../MonitorModulesResults.h" +#include "../MonitorConfiguration.h" +#include "../SocketServer.h" +#include "../xmltools.h" +#include + +#ifndef WIN32 + #define Sleep sleep +#endif + +#define MAXAUDIOCLIENTS 20 + + +struct strSocketMessage +{ + SocketThread* pThread ; + std::string message ; +} ; + +struct strClientInfo { + SocketThread* pThread ; + time_t time1 ; + time_t time2 ; + unsigned long customValue ; + unsigned long customValue2 ; + unsigned long info ; + std::string infoText ; +}; + +typedef strSocketMessage SocketMessage ; +typedef strClientInfo ClientInfo ; + +class MonitorAudioPlugIn +{ + public: + MonitorAudioPlugIn() ; + virtual ~MonitorAudioPlugIn() {} ; + + virtual bool InitAudioProcessing(class MonitorConfiguration* configPtr, XMLNode config, int channelNum) { return true ;} ; + virtual void ProcessAudio(float *buffer, int length)=0 ; + virtual bool QuitAudioProcessing() {return true;} ; + virtual std::string DoCommand(std::string command, SocketThread* pClient=NULL)=0; + virtual void Show() = 0; + + void addThreadMessage(SocketThread* pClient, std::string message) ; + void addThreadMessage(int jobID, std::string message) ; + bool getThreadMessage(SocketMessage & msg) ; + +protected: + ClientInfo m_pClient[MAXAUDIOCLIENTS] ; + std::vector m_SocketMessages ; + std::string m_param[10] ; + int m_paramCount ; + bool m_bLockSocketMessages ; + + void broadcastMessage(std::string message); + int addClient(SocketThread *pClient, unsigned long customValue=0,unsigned long info=0, std::string infoText="") ; + void updateClient(int jobID, unsigned long customValue=0,unsigned long customValue2=0,unsigned long info=0, std::string infoText="",time_t time1=0, time_t time2=0) ; + SocketThread* getClient(int jobID) ; + unsigned long getCustomValue(int jobID) ; + unsigned long getCustomValue2(int jobID) ; + unsigned long getInfo(int jobID) ; + time_t getTime1(int jobID) ; + time_t getTime2(int jobID) ; + std::string getInfoText (int jobID) ; + int parseCommand(std::string command); + void clearClient(int jobID) ; +}; + +class MonitorAudioPlugInFactory +{ + public: + MonitorAudioPlugInFactory() + { + } + + virtual ~MonitorAudioPlugInFactory() + { + } + + virtual MonitorAudioPlugIn * CreatePlugIn() = 0; + +}; +#endif + +#endif /*MPLUGINAUDIO_H_*/ diff --git a/monitord/plugins/dll-elf.cpp b/monitord/plugins/dll-elf.cpp new file mode 100644 index 0000000..aa1c36d --- /dev/null +++ b/monitord/plugins/dll-elf.cpp @@ -0,0 +1,83 @@ +#ifndef WIN32 + +#include +#include "dll.h" +#include "../MonitorLogging.h" + + +DLLManager::DLLManager( const char *fname ) +{ + // Try to open the library now and get any error message. + + h=dlopen( fname, RTLD_NOW ); + if (h==NULL) + { + FILE_LOG(logERROR) << "error loading library file \"" << fname << "\"" ; + } + err=dlerror(); +} + +DLLManager::~DLLManager() +{ + // close the library if it isn't null + if( h!=0 ) + dlclose(h); +} + + +bool DLLManager::GetSymbol( + void **v, + const char *sym_name + ) +{ + // try extract a symbol from the library + // get any error message is there is any + + if( h!=0 ) + { + *v = dlsym( h, sym_name ); + err=dlerror(); + if( err==0 ) + return true; + else { + *v=0 ; + return false; + } + } + else + { + *v=0 ; + return false; + } + +} + + +const char * DLLManager::GetDLLExtension() +{ + return ".so"; +} + +DLLFactoryBase::DLLFactoryBase( + const char *fname, + const char *factory + ) : DLLManager(fname) +{ + // try get the factory function if there is no error yet + + factory_func=0; + + if( LastError()==0 ) + { + GetSymbol( (void **)&factory_func, factory ? factory : "factory0" ); + } + +} + + +DLLFactoryBase::~DLLFactoryBase() +{ +} + +#endif /* ndef WIN32 */ + diff --git a/monitord/plugins/dll-win32.cpp b/monitord/plugins/dll-win32.cpp new file mode 100644 index 0000000..629f31f --- /dev/null +++ b/monitord/plugins/dll-win32.cpp @@ -0,0 +1,114 @@ +#ifdef WIN32 + +#include "dll.h" + +#include "../MonitorLogging.h" + + +DLLManager::DLLManager( const char *fname ) +{ + // Try to open the library now and get any error message. + FILE_LOG(logDEBUG) << "calling LoadLibrary.." ; + h = LoadLibrary(fname); + FILE_LOG(logDEBUG) << "LoadLib done." ; + if (h == NULL) + { + + DWORD m; + int errorCode=GetLastError() ; + m = FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER| + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, /* Instance */ + errorCode, /* Message Number */ + 0, /* Language */ + (char*)&err, /* Buffer */ + 0, /* Min/Max Buffer size */ + NULL); /* Arguments */ + + FILE_LOG(logERROR) << "Error loading library \"" << fname << "\":" << err ; + } + else + { + err=NULL ; + } +} + +DLLManager::~DLLManager() +{ + // Free error string if allocated + LocalFree(err); + + // close the library if it isn't null + if (h != NULL) + FreeLibrary(h); + +} + + +bool DLLManager::GetSymbol( + void **v, + const char *sym_name + ) +{ + // try extract a symbol from the library + // get any error message is there is any + + if( h!=0 ) + { + *v = (void*) GetProcAddress(h, sym_name); + + if ((*v) != NULL) + return true; + else + { + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, /* Instance */ + GetLastError(), /* Message Number */ + 0, /* Language */ + err, /* Buffer */ + 0, /* Min/Max Buffer size */ + NULL); /* Arguments */ + return false; + } + } + else + { + return false; + } + +} + +const char * DLLManager::GetDLLExtension() +{ + return ".dll"; +} + +DLLFactoryBase::DLLFactoryBase( + const char *fname, + const char *factory + ) : DLLManager(fname) +{ + // try get the factory function if there is no error yet + + factory_func=0; + + if( LastError()==0 ) + { + GetSymbol( (void **)&factory_func, factory ? factory : "factory0" ); + } else { + FILE_LOG(logERROR) << "Lasterror=" << LastError() ; + } + +} + + +DLLFactoryBase::~DLLFactoryBase() +{ +} + + +#endif /* WIN32 */ diff --git a/monitord/plugins/dll.h b/monitord/plugins/dll.h new file mode 100644 index 0000000..04ddabd --- /dev/null +++ b/monitord/plugins/dll.h @@ -0,0 +1,137 @@ + +#ifndef __DLL_H +#define __DLL_H + +// include the common header files + +#include +#include +#include + +#ifdef WIN32 +#include +#include +#endif + +#ifdef WIN32 +#define DLL_EXPORT extern "C" __declspec(dllexport) +#else +#define DLL_EXPORT extern "C" +#endif + +// +// class DLLManager is the simple ELF C++ Library manager. +// +// It tries to dynamically load the specified shared library +// when it is construted. +// +// You should call LastError() before doing anything. If it +// returns NULL there is no error. +// + + +class DLLManager +{ + public: + DLLManager( const char *fname ); + virtual ~DLLManager(); + + bool GetSymbol( void **, const char *sym_name ); + + static const char *GetDLLExtension(); + + const char *LastError() + { + return err; + } + + protected: +#ifdef WIN32 + HMODULE h; +#else + void *h; +#endif + char* err; +}; + + +// +// class DLLFactoryBase is the base class used for the DLLFactory +// template class. +// +// It inherits from the DLLManager class and must be constructed with +// the file name of the shared library and the function name within that +// library which will create the desired C++ factory class. +// If you do not provide func_name to the constructor, it defaults to +// the undecorated "C" symbol "factory0" +// +// factory_func will be set to a pointer to the requested factory creator +// function. If there was an error linking to the shared library, +// factory_func will be 0. +// +// You can call 'LastError()' to find the error message that occurred. +// +// + +class DLLFactoryBase : public DLLManager +{ + public: + DLLFactoryBase( + const char *fname, + const char *func_name=0 + ); + + virtual ~DLLFactoryBase(); + + void * (*factory_func)(void); +}; + + +// +// The DLLFactory template class inherits from DLLFactoryBase. +// The constructor takes the file name of the shared library +// and the undecorated "C" symbol name of the factory creator +// function. The factory creator function in your shared library +// MUST either return a pointer to an object that is a subclass +// of 'T' or it must return 0. +// +// If everything is cool, then 'factory' will point to the +// requested factory class. If not, it will be 0. +// +// Since the DLLFactory template ultimately inherits DLLManager, +// you can call LastError() to get any error code information +// +// The created factory is OWNED by the DLLFactory class. +// The created factory will get deleted when the DLLFactory class +// is deleted, because the DLL will get unloaded as well. +// + +template +class DLLFactory : public DLLFactoryBase +{ + public: + DLLFactory( + const char *fname, + const char *func_name=0 + ) : DLLFactoryBase( fname, func_name ) + { + if( factory_func ) + factory = (T *)factory_func(); + else + factory = 0; + } + + ~DLLFactory() + { + delete factory; + } + + T *factory; +}; + + + + + + +#endif diff --git a/monitord/plugins/libmplugin_audiorecorder.cpp b/monitord/plugins/libmplugin_audiorecorder.cpp new file mode 100644 index 0000000..e789855 --- /dev/null +++ b/monitord/plugins/libmplugin_audiorecorder.cpp @@ -0,0 +1,376 @@ +#include +#include +#include +#include "mpluginAudio.h" +#include "../../config.h" +#include "../convert.h" +#include "../MonitorExceptions.h" +#include "../MonitorLogging.h" + +#ifdef HAVE_LIBMP3LAME + #include +#endif + +#ifndef WIN32 + typedef short SHORT ; + #include +#else + #include +#endif + +using namespace std ; + +class MonitorAudioPlugInRecorder : public MonitorAudioPlugIn +{ + public: + #ifdef HAVE_LIBMP3LAME + /** + * + */ + lame_global_flags *gfp ; + + #endif + + + MonitorAudioPlugInRecorder() + { + useLame=false ; + m_channelNum=0 ; + } + + virtual ~MonitorAudioPlugInRecorder() + { + #ifdef HAVE_LIBMP3LAME + lame_close(gfp) ; + gfp=NULL ; + #endif + } + + virtual bool InitAudioProcessing(class MonitorConfiguration* configPtr, XMLNode config, int channelNum) + { + std::string logFile="screen" ; + std::string logLevel="DEBUG" ; + XMLNode parameters ; + m_channelNum=channelNum; + + if (!((parameters=config.getChildNode("parameters"))).isEmpty()) + { + m_filePath=getNodeText(parameters,"path","./") ; + logFile=getNodeText(parameters,"logfile","screen") ; + logLevel=getNodeText(parameters,"loglevel","INFO") ; + } + + #ifdef WIN32 + if (!(logFile=="screen")) + { + FILE* pFile = fopen(logFile.c_str(), "a"); + Output2FILE::Stream() = pFile; + } + FILELog::ReportingLevel() = FILELog::FromString(logLevel); + FILE_LOG(logINFO) << "logging started"; + #endif + + #ifdef HAVE_LIBMP3LAME + + try { + FILE_LOG(logINFO) << "enabling lame mp3 support" ; + FILE_LOG(logINFO) << "Using MP3Lame Lib Version: " << get_lame_version() ; + + gfp=lame_init() ; + if (gfp==NULL) + { + ThrowMonitorException("Error initializing lame library!") ; + } + + lame_set_bWriteVbrTag(gfp,0) ; // Kein ID3 Tag + lame_mp3_tags_fid(gfp,NULL) ; + lame_set_num_channels(gfp,1) ; + lame_set_in_samplerate(gfp,22050) ; + lame_set_brate(gfp,32) ; + lame_set_mode(gfp,MONO) ; + lame_set_quality(gfp,7) ; + + int retCode = lame_init_params(gfp) ; + if (retCode<0) + { + ThrowMonitorException("LIBMP3Lame init failed") ; + }else{ + useLame=1 ; + } + } catch (MonitorException e) + { + FILE_LOG(logERROR) << e.what() ; + } + #endif + + return true ; + } + + virtual void Show() + { + FILE_LOG(logINFO) << "MonitorAudioPluginRecorder successfully loaded" ; + } + + virtual void WriteRAWToFile (FILE *pFile,SHORT buffer[],unsigned int bufferSize) + { + size_t len=fwrite(buffer, sizeof(SHORT), bufferSize,pFile); + if (len!=bufferSize) + { + FILE_LOG(logERROR) << "Fehler beim Schreiben: " << len << " statt " << bufferSize ; + // Fehler beim Schreiben ? + } + } + + virtual void WriteMP3ToFile (FILE *pFile,unsigned char buffer[],unsigned int bufferSize) + { + size_t len=fwrite(buffer, sizeof(unsigned char), bufferSize,pFile); + if (len!=bufferSize) + { + FILE_LOG(logERROR) << "Fehler beim Schreiben: " << len << " statt " << bufferSize ; + // Fehler beim Schreiben ? + } + } + + virtual void ProcessAudio(float *buffer, int length) + { + const int MAXTEMP=20000 ; + int jobID=0 ; + int retCode=0 ; // LIB_MP3Lame encoding return code + static SHORT tempBuf[MAXTEMP] ; + static unsigned char mp3Buffer[2*MAXTEMP] ; + unsigned int tempBufCounter=0 ; + FILE* pFile=NULL ; + time_t startTime ; + + if (length>MAXTEMP) + { + ThrowMonitorException ("Audiobuffer size exceeds temporary buffer size!") ; + } + + //if (m_bRecording) + { + for (int i=0;i(time_t) seconds) + { + StopRecording(jobID) ; + } + } + } + } + } + + void StartRecording(int jobID,std::string fname,int Sekunden) + { + FILE_LOG(logINFO) << "Starte Aufnahme .." ; + + // Aufnahmedatei erzeugen + FILE_LOG(logINFO) << "Starte mit dauer:" << Sekunden ; + if (fname.size()>0) + { + // Dateiname wurde vorgegeben + } else + { + fname="kein_datename" ; + } + + FILE * f_File = fopen(fname.c_str(), "wb"); + + if(f_File==NULL) { + FILE_LOG(logERROR) << "File ist NICHT erstellt" ; + } + else + { + FILE_LOG(logERROR) << "File ist erstellt"<< fname ; + } + + // Aufnahme starten, Daten beim Job hinterlegen + updateClient(jobID, + (unsigned long) f_File, + 0, + Sekunden, + fname, + time(NULL)) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":1:") + convertStringToHex(fname)) ; + } + + void StopRecording(int jobID) + { + FILE_LOG(logINFO) << "Aufnahme beendet" ; + + FILE* pFile=(FILE*) getCustomValue(jobID) ; + std::string fname=getInfoText(jobID) ; + + fclose(pFile) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":0:") + convertStringToHex(fname)) ; + clearClient(jobID) ; + } + + virtual std::string DoCommand(std::string command, SocketThread* pClient) + { + std::string resultString="" ; + std::string fname ; + int Sekunden=0 ; + + FILE_LOG(logINFO) << "Kommando: " << command ; + parseCommand(command) ; + + for (int i=0;i<10;i++) + { + FILE_LOG(logINFO) << "Param " << i << ":" << m_param[i] ; + } + + if (m_param[0]=="RECORD") //RECORD: + { + if (m_paramCount>1) + { + try + { + Sekunden=convertToInt(m_param[1]) ; + FILE_LOG(logINFO) << "Sekunden als param:" << m_param[1] ; + FILE_LOG(logINFO) << "Sekunden als int:" << Sekunden ; + } catch (BadConversion e) + { + FILE_LOG(logERROR) << "Fehler bei der Datenkonvertierung " << m_param[1] ; + Sekunden=60 ; + } + } + + int jobID=addClient(pClient) ; //< Auftraggeber, fuer callback mit Result + FILE_LOG(logINFO) << "jobID=" << jobID ; + + // Laeuft mit der jobID schon eine Aufzeichnung ? + // Wenn, dann keine neue starten, sondern nur verlaengern + + long SekundenAlterJob = getInfo(jobID) ; + FILE_LOG(logINFO) << "Zeitdauer alte Aufnahme:" << SekundenAlterJob ; + if (SekundenAlterJob>0) + { + // Nur die Zeit anpassen + time_t curTime=time(NULL) ; + time_t startTime=getTime1(jobID) ; + + FILE_LOG(logDEBUG) << "Zeiten curTime+Sekunden:" << curTime+Sekunden ; + FILE_LOG(logDEBUG) << "Zeiten startTime+SekundenAlterJob:" << startTime+SekundenAlterJob ; + if (curTime+Sekunden>startTime+SekundenAlterJob) + { + fname=getInfoText(jobID) ; + Sekunden=curTime+Sekunden-startTime ; + FILE_LOG(logINFO) << "Aufnahme wird auf " << Sekunden << "verlaengert " ; + updateClient(jobID,getCustomValue(jobID),0,Sekunden,getInfoText(jobID),startTime) ; + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":2:") + convertStringToHex(fname)) ; + } + } else { + time_t m_startTime=time(NULL) ; + struct tm *strTime = localtime(&m_startTime) ; + + char zeitString[60] ; + sprintf(zeitString,"%04d%02d%02d%02d%02d%02d", + 1900+strTime->tm_year, + 1+strTime->tm_mon, + strTime->tm_mday, + strTime->tm_hour, + strTime->tm_min, + strTime->tm_sec) ; + FILE_LOG(logDEBUG) << zeitString ; + + if (m_paramCount<2) + { + m_param[2]="X" ; + } + + fname= m_filePath + + std::string(zeitString) + + "_" + + m_param[2] + + "_"+ convertIntToString(jobID) ; + + cout << fname << endl ; + if (useLame==1) + { + fname+=".mp3"; ; + } else + { + fname+=".raw"; ; + } + + StartRecording(jobID,fname,Sekunden) ; + } + } ; + resultString="OK" ; + + return (resultString) ; + } + +protected: + std::string m_filePath ; + int useLame ; + int m_channelNum ; + +}; + + + +class MonitorAudioPlugInRecorderFactory : public MonitorAudioPlugInFactory +{ + public: + MonitorAudioPlugInRecorderFactory() + { + } + + ~MonitorAudioPlugInRecorderFactory() + { + } + + virtual MonitorAudioPlugIn * CreatePlugIn() + { + return new MonitorAudioPlugInRecorder; + } +}; + + +// +// The "C" linkage factory0() function creates the PlugInFunFactory +// class for this library +// + +DLL_EXPORT void * factory0( void ) +{ + return new MonitorAudioPlugInRecorderFactory; +} diff --git a/monitord/plugins/libmplugin_audiorecorderSOX.cpp b/monitord/plugins/libmplugin_audiorecorderSOX.cpp new file mode 100644 index 0000000..9ddcf1b --- /dev/null +++ b/monitord/plugins/libmplugin_audiorecorderSOX.cpp @@ -0,0 +1,346 @@ +#include +#include +#include +#include "mpluginAudio.h" +#include "../../config.h" +#include "../convert.h" +#include "../MonitorExceptions.h" +#include "../MonitorLogging.h" + +extern "C" { + #include "sox.h" +} + + +#ifndef WIN32 + typedef short SHORT ; + #include +#else + #include +#endif + +using namespace std ; + +class MonitorAudioPlugInRecorderSOX : public MonitorAudioPlugIn +{ + public: + + /** + * + */ + + MonitorAudioPlugInRecorderSOX() + { + m_channelNum=0 ; + } + + virtual ~MonitorAudioPlugInRecorderSOX() + { + sox_format_quit() ; + } + + virtual bool InitAudioProcessing(class MonitorConfiguration* configPtr, XMLNode config, int channelNum) + { + std::string logFile="screen" ; + std::string logLevel="DEBUG" ; + XMLNode parameters ; + m_channelNum=channelNum; + + if (!((parameters=config.getChildNode("parameters"))).isEmpty()) + { + m_filePath=getNodeText(parameters,"path","./") ; + logFile=getNodeText(parameters,"logfile","screen") ; + logLevel=getNodeText(parameters,"loglevel","INFO") ; + } + + #ifdef WIN32 + if (!(logFile=="screen")) + { + FILE* pFile = fopen(logFile.c_str(), "a"); + Output2FILE::Stream() = pFile; + } + FILELog::ReportingLevel() = FILELog::FromString(logLevel); + FILE_LOG(logINFO) << "logging started"; + #endif + + + if (sox_init() != SOX_SUCCESS) + { + ThrowMonitorException("Error initializing sox library!") ; + } ; + + StartRecording(1,"test",10) ; + return true ; + } + + virtual void Show() + { + FILE_LOG(logINFO) << "MonitorAudioPluginRecorder successfully loaded" ; + } + + virtual void WriteToFile (FILE *pFile,unsigned char buffer[],unsigned int bufferSize) + { + size_t len=fwrite(buffer, sizeof(unsigned char), bufferSize,pFile); + if (len!=bufferSize) + { + FILE_LOG(logERROR) << "Fehler beim Schreiben: " << len << " statt " << bufferSize ; + // Fehler beim Schreiben ? + } + } + + virtual void ProcessAudio(float *buffer, int length) + { + SOX_SAMPLE_LOCALS ; + const int MAXTEMP=20000 ; + int jobID=0 ; + int myCount=0 ; + static sox_sample_t tempBuf[MAXTEMP] ; + //static unsigned char mp3Buffer[2*MAXTEMP] ; + unsigned int tempBufCounter=0 ; + time_t startTime ; + + if (length>MAXTEMP) + { + ThrowMonitorException ("Audiobuffer size exceeds temporary buffer size!") ; + } + + + { + for (int i=0;i(time_t) seconds) + { + StopRecording(jobID) ; + } + } + } + } + } + + void StartRecording(int jobID,std::string fname,int Sekunden) + { + FILE_LOG(logINFO) << "Starte Aufnahme .." ; + + // Aufnahmedatei erzeugen + FILE_LOG(logINFO) << "Starte mit dauer:" << Sekunden ; + if (fname.size()>0) + { + // Dateiname wurde vorgegeben + } else + { + fname="kein_datename" ; + } + + sox_format_t * pFormat = new sox_format_t ; + sox_signalinfo_t info ; + sox_encodinginfo_t encoding ; + + + info.rate=8000 ; + info.channels=1 ; + info.precision= 32 ; + info.length=SOX_IGNORE_LENGTH ; + info.mult=0 ; + + sox_init_encodinginfo(&encoding) ; + + encoding.encoding = SOX_ENCODING_LPC10 ; + encoding.bits_per_sample = 0 ; // TODO ? + encoding.compression = 0 ; + + pFormat =sox_open_write ("test.mp3", // war: lpc + &info, + &encoding, + 0, + 0, + 0) ; + + if(pFormat==NULL) { + FILE_LOG(logERROR) << "File ist NICHT erstellt" ; + } + else + { + FILE_LOG(logERROR) << "File ist erstellt: "<< fname ; + } + + // Aufnahme starten, Daten beim Job hinterlegen + updateClient(jobID, + (unsigned long) pFormat, + 0, + Sekunden, + fname, + time(NULL)) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":1:") + convertStringToHex(fname)) ; + } + + void StopRecording(int jobID) + { + FILE_LOG(logINFO) << "Aufnahme beendet" ; + + sox_format_t* pFormat=(sox_format_t*) getCustomValue(jobID) ; + std::string fname=getInfoText(jobID) ; + + sox_close(pFormat) ; + + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":0:") + convertStringToHex(fname)) ; + clearClient(jobID) ; + delete pFormat ; + } + + virtual std::string DoCommand(std::string command, SocketThread* pClient) + { + std::string resultString="" ; + std::string fname ; + int Sekunden=0 ; + + FILE_LOG(logINFO) << "Kommando: " << command ; + parseCommand(command) ; + + for (int i=0;i<10;i++) + { + FILE_LOG(logINFO) << "Param " << i << ":" << m_param[i] ; + } + + if (m_param[0]=="RECORD") //RECORD: + { + if (m_paramCount>1) + { + try + { + Sekunden=convertToInt(m_param[1]) ; + FILE_LOG(logINFO) << "Sekunden als param:" << m_param[1] ; + FILE_LOG(logINFO) << "Sekunden als int:" << Sekunden ; + } catch (BadConversion e) + { + FILE_LOG(logERROR) << "Fehler bei der Datenkonvertierung " << m_param[1] ; + Sekunden=60 ; + } + } + + int jobID=addClient(pClient) ; //< Auftraggeber, fuer callback mit Result + FILE_LOG(logINFO) << "jobID=" << jobID ; + + // Laeuft mit der jobID schon eine Aufzeichnung ? + // Wenn, dann keine neue starten, sondern nur verlaengern + + long SekundenAlterJob = getInfo(jobID) ; + FILE_LOG(logINFO) << "Zeitdauer alte Aufnahme:" << SekundenAlterJob ; + if (SekundenAlterJob>0) + { + // Nur die Zeit anpassen + time_t curTime=time(NULL) ; + time_t startTime=getTime1(jobID) ; + + FILE_LOG(logDEBUG) << "Zeiten curTime+Sekunden:" << curTime+Sekunden ; + FILE_LOG(logDEBUG) << "Zeiten startTime+SekundenAlterJob:" << startTime+SekundenAlterJob ; + if (curTime+Sekunden>startTime+SekundenAlterJob) + { + fname=getInfoText(jobID) ; + Sekunden=curTime+Sekunden-startTime ; + FILE_LOG(logINFO) << "Aufnahme wird auf " << Sekunden << "verlaengert " ; + updateClient(jobID,getCustomValue(jobID),0,Sekunden,getInfoText(jobID),startTime) ; + addThreadMessage(jobID,std::string("104:" +convertIntToString(m_channelNum)+ ":2:") + convertStringToHex(fname)) ; + } + } else { + time_t m_startTime=time(NULL) ; + struct tm *strTime = localtime(&m_startTime) ; + + char zeitString[60] ; + sprintf(zeitString,"%04d%02d%02d%02d%02d%02d", + 1900+strTime->tm_year, + 1+strTime->tm_mon, + strTime->tm_mday, + strTime->tm_hour, + strTime->tm_min, + strTime->tm_sec) ; + FILE_LOG(logDEBUG) << zeitString ; + + if (m_paramCount<2) + { + m_param[2]="X" ; + } + + fname= m_filePath + + std::string(zeitString) + + "_" + + m_param[2] + + "_"+ convertIntToString(jobID) ; + + cout << fname << endl ; + if (useLame==1) + { + fname+=".mp3"; ; + } else + { + fname+=".raw"; ; + } + + StartRecording(jobID,fname,Sekunden) ; + } + } ; + resultString="OK" ; + + return (resultString) ; + } + +protected: + std::string m_filePath ; + int useLame ; + int m_channelNum ; + +}; + + + +class MonitorAudioPlugInRecorderFactory : public MonitorAudioPlugInFactory +{ + public: + MonitorAudioPlugInRecorderFactory() + { + } + + ~MonitorAudioPlugInRecorderFactory() + { + } + + virtual MonitorAudioPlugIn * CreatePlugIn() + { + return new MonitorAudioPlugInRecorderSOX; + } +}; + + +// +// The "C" linkage factory0() function creates the PlugInFunFactory +// class for this library +// + +DLL_EXPORT void * factory0( void ) +{ + return new MonitorAudioPlugInRecorderFactory; +} + diff --git a/monitord/plugins/libmplugin_mysql.cpp b/monitord/plugins/libmplugin_mysql.cpp new file mode 100644 index 0000000..379bced --- /dev/null +++ b/monitord/plugins/libmplugin_mysql.cpp @@ -0,0 +1,336 @@ + +#include +#include + +#ifdef WIN32 +#define usleep Sleep +#include +#endif + + +#include "mysql/mysql.h" +#include "mplugin.h" +#include "../MonitorLogging.h" + +using namespace std ; + +enum fieldsource {mysql=0,resultset=1} ; + +typedef struct +{ + string value ; + fieldsource source ; +} FieldInfo ; + +typedef map MappingInfo ; +typedef pair PairMapping ; + +// Class PlugInFun inherits from PlugIn +// and shows the world when one is created/destroyed +// and supplies a Show() method that announces its name + + +class MonitorPlugInMySQL : public MonitorPlugIn +{ + public: + MYSQL m_mysql ; + std::string hostname ; + std::string username ; + std::string password ; + std::string database ; + unsigned int port ; + unsigned int ssl; + std::string ssl_cacert; + std::string ssl_cert; + std::string ssl_key; + bool m_bConnected ; + + MappingInfo fmsMapping ; + MappingInfo zveiMapping ; + MappingInfo pocsagMapping ; + + std::string fmsTable; + std::string zveiTable; + std::string pocsagTable; + + MonitorPlugInMySQL() + { + m_bConnected=false ; + } + + virtual ~MonitorPlugInMySQL() + { + } + + virtual void Show() + { + FILE_LOG(logINFO) << "MonitorMySQLPlugin successfully loaded" ; + } + + std::string escape_string(std::string text) + { + const unsigned int MAXLEN=255 ; + char result[MAXLEN+1] ; + + memset(result,0,MAXLEN+1) ; + mysql_real_escape_string(&m_mysql,result,text.c_str(),text.size()>MAXLEN ? MAXLEN : text.size()) ; + return string(result) ; + } + + virtual bool processResult(class ModuleResultBase *pRes) + { + FILE_LOG(logDEBUG) << "mysql: processing Result..." ; + + if (m_bConnected==false) + { + return false ; + } + + int pingcounter=0 ; + while (mysql_ping(&m_mysql) && pingcounter<100) + { + usleep(100) ; + pingcounter++ ; + FILE_LOG(logINFO) << "mysql connection lost ... trying reconnect" ; + } + + if (mysql_ping(&m_mysql)) + { + FILE_LOG(logERROR) << " unable to reconnect to mysql database" ; + return false ; + } + + if (pingcounter>0) + { + FILE_LOG(logINFO) << "mysql: connection re-established" ; + } + + // wenn wir latin1 einfuegen sollten wir das mysql auch mitteilen! + mysql_query(&m_mysql, "SET NAMES latin1"); + + if ((*pRes)["typ"]=="fms") + { + std::string insertString ; + insertString = createInsertString(pRes,fmsMapping,fmsTable); + mysql_query(&m_mysql,insertString.c_str()) ; + } else if ((*pRes)["typ"]=="pocsag") + { + std::string insertString ; + insertString = createInsertString(pRes,pocsagMapping,pocsagTable); + mysql_query(&m_mysql,insertString.c_str()) ; + }else if ((*pRes)["typ"]=="zvei") + { + std::string insertString; + insertString = createInsertString(pRes,zveiMapping,zveiTable); + mysql_query(&m_mysql,insertString.c_str()) ; + } + + + return true ; + } + + virtual bool initProcessing(class MonitorConfiguration* configPtr,XMLNode config) + { + mysql_init(&m_mysql) ; + + #if (MYSQL_VERSION_ID>50013) + /* for mysql V5.0.3+ is auto_reconnect disabled by default*/ + my_bool reconnect = 1; + mysql_options(&m_mysql, MYSQL_OPT_RECONNECT, &reconnect); + #endif + + hostname=getNodeText(config,"hostname","localhost") ; + username=getNodeText(config,"username","root") ; + password=getNodeText(config,"password","rootpw") ; + database=getNodeText(config,"database","demo") ; + port=getNodeInt(config,"port",3306) ; + ssl=getNodeInt(config,"ssl",0); + ssl_cacert=getNodeText(config,"ssl-cacert","0"); + ssl_cert=getNodeText(config,"ssl-cert","0"); + ssl_key=getNodeText(config,"ssl-key","0"); + std::string logFile=getNodeText(config,"logfile","screen") ; + std::string logLevel=getNodeText(config,"loglevel","INFO") ; + #ifdef WIN32 + if (!(logFile=="screen")) + { + FILE* pFile = fopen(logFile.c_str(), "a"); + Output2FILE::Stream() = pFile; + + } + FILELog::ReportingLevel() = FILELog::FromString(logLevel); + FILE_LOG(logINFO) << "logging started"; + #endif + + if (ssl == 1 && ssl_cacert != "0" && ssl_cert != "0" && ssl_key != "0") + { + mysql_ssl_set(&m_mysql, + ssl_key.c_str(), + ssl_cert.c_str(), + ssl_cacert.c_str(), + NULL, + NULL); + FILE_LOG(logINFO) << "mySQL ssl support configured with key=" << ssl_key << " and cert=" << ssl_cert << " and cacert=" << ssl_cacert; + } + + // Parameter parsen + parseParameter(config) ; + if (mysql_real_connect( &m_mysql, + hostname.c_str(), + username.c_str(), + password.c_str(), + database.c_str(), + port, + NULL, // Unix Socket + 0 // Options + ) ==NULL) + { + FILE_LOG(logERROR) << "Could not connect to database \"" << database << "\" on host " << hostname << " with username=\"" << username << "\"" ; + m_bConnected=false ; + } else + { + FILE_LOG(logINFO) << "successfully connected to mysql database " << database << " on host " << hostname << " with username=\"" << username << "\"" ; + m_bConnected=true ; + } + return m_bConnected ; + } ; + + virtual bool quitProcessing() {return true;} ; + + void parseParameter(XMLNode config) + { + XMLNode mappingNode ; + + int nMapping=config.nChildNode("mapping"); + + for (int num=0; numvalue=value ; + if (source=="mysql") + { + pFieldInfo->source=mysql ; + } else + { + pFieldInfo->source=resultset ; + } + mappingInfo.insert( PairMapping(name,pFieldInfo)); + } + } + } + + std::string createInsertString(class ModuleResultBase *pRes,MappingInfo mapping,std::string table) + { + std::string insertString=""; + std::string valueString="" ; + MappingInfo::iterator i ; + FieldInfo* pFieldInfo ; + std::string fieldName="" ; + + insertString=" insert into " + table + " (" ; + for (i=mapping.begin();i!=mapping.end();i++) + { + fieldName= i->first ; + pFieldInfo= i->second ; + + FILE_LOG(logDEBUG) << "field:" << fieldName << " | value=" << pFieldInfo->value ; + if (i!=mapping.begin()) + { + insertString+="," ; + valueString+="," ; + } + + insertString+=fieldName ; + if (pFieldInfo->source==mysql) + { + valueString+= pFieldInfo->value ; + } else + { + valueString+="\"" +escape_string((*pRes)[pFieldInfo->value])+"\"" ; + } + } + insertString+=") values (" ; + insertString+=valueString + ")" ; + + FILE_LOG(logDEBUG) << "Insertstring:" << insertString ; + return insertString ; + } + +}; + +// +// The PlugInFunFactory class inherits from PlugInFactory +// and creates a PlugInFun object when requested. +// + + +class MonitorPlugInMySQLFactory : public MonitorPlugInFactory +{ + public: + MonitorPlugInMySQLFactory() + { + } + + ~MonitorPlugInMySQLFactory() + { + } + + virtual MonitorPlugIn * CreatePlugIn() + { + return new MonitorPlugInMySQL() ; + } +}; + + +// +// The "C" linkage factory0() function creates the PlugInFunFactory +// class for this library +// + +DLL_EXPORT void * factory0( void ) +{ + return new MonitorPlugInMySQLFactory; +} diff --git a/monitord/plugins/mplugin.cpp b/monitord/plugins/mplugin.cpp new file mode 100644 index 0000000..39017c8 --- /dev/null +++ b/monitord/plugins/mplugin.cpp @@ -0,0 +1,20 @@ + +#include +#include +#include "mplugin.h" + +using namespace std ; + +// +// Announce to the world that the PlugIn base +// class has been created or destroyed +// + +MonitorPlugIn::MonitorPlugIn() +{ +} + +MonitorPlugIn::~MonitorPlugIn() +{ +} + diff --git a/monitord/plugins/mplugin.h b/monitord/plugins/mplugin.h new file mode 100644 index 0000000..a1a0b01 --- /dev/null +++ b/monitord/plugins/mplugin.h @@ -0,0 +1,71 @@ +#ifndef MPLUGIN_H_ +#define MPLUGIN_H_ + +#ifdef PLUGINS + +#include "dll.h" +#include "../MonitorModulesResults.h" +#include "../MonitorConfiguration.h" +#include "../xmltools.h" + + +// +// PlugIn is an abstract class. +// +// This is an example plug in. This plug in only has one method, Show(), +// which we will use to show its name. +// +// + +class MonitorPlugIn +{ + public: + MonitorPlugIn(); + + virtual ~MonitorPlugIn(); + + virtual bool initProcessing(class MonitorConfiguration* configPtr,XMLNode config) {return true ; } ; + virtual bool processResult(class ModuleResultBase *pRes)=0 ; + virtual bool quitProcessing() {return true;} ; + virtual void Show() = 0; +protected: + +}; + + +// +// The is an example factory for plug ins. +// +// This example factory only announces when it is created/destroyed and +// has the single abstract method CreatePlugIn() which returns a type +// of plug in. +// +// In the real world, you may have multiple different classes in each +// shared library that are made to work together. All these classes +// must be created by the Factory class. +// +// You may find it useful to have the objects that you create with +// the factory class be given a pointer to the factory class so +// they can create their own objects that they need, using the same +// factory class. Compiler support of covariant return types is +// real useful here. +// + + +class MonitorPlugInFactory +{ + public: + MonitorPlugInFactory() + { } + + virtual ~MonitorPlugInFactory() + { } + + virtual MonitorPlugIn * CreatePlugIn() { + return NULL ; + } +}; + +#endif + +#endif /*MPLUGIN_H_*/ diff --git a/monitord/plugins/mpluginAudio.cpp b/monitord/plugins/mpluginAudio.cpp new file mode 100644 index 0000000..d76ee35 --- /dev/null +++ b/monitord/plugins/mpluginAudio.cpp @@ -0,0 +1,187 @@ +#include "mpluginAudio.h" + +using namespace std ; + +MonitorAudioPlugIn::MonitorAudioPlugIn() +{ + m_bLockSocketMessages=false; + for (int i=0; ipThread=pClient ; + pMsg->message=message ; + + while (m_bLockSocketMessages==true) Sleep(3) ; + + m_bLockSocketMessages=true ; + m_SocketMessages.push_back(pMsg) ; + m_bLockSocketMessages=false ; +} + +void MonitorAudioPlugIn::addThreadMessage(int jobID, std::string message) +{ + if ((jobID<0) || (jobID>=MAXAUDIOCLIENTS)) + { + ThrowMonitorException ("jobID nicht im erlaubten Bereich: " + convertIntToString(jobID)) ; + } ; + + addThreadMessage (m_pClient[jobID].pThread,message) ; +} + +bool MonitorAudioPlugIn::getThreadMessage(SocketMessage & msg) +{ + bool retVal=false ; + + while (m_bLockSocketMessages) Sleep(1) ; + + m_bLockSocketMessages=true ; + + SocketMessage* pMsg ; + if (m_SocketMessages.size()>0) + { + pMsg=m_SocketMessages.back() ; + m_SocketMessages.pop_back() ; + + msg.pThread=pMsg->pThread ; + msg.message=pMsg->message ; + + delete pMsg ; + retVal=true ; + } + m_bLockSocketMessages=false ; + + return retVal ; +} + +void MonitorAudioPlugIn::broadcastMessage(std::string message) +{ + for (int i=0; i=MAXAUDIOCLIENTS) i=-1 ; + + return i ; +} + +void MonitorAudioPlugIn::updateClient(int jobID, unsigned long customValue,unsigned long customValue2,unsigned long info, std::string infoText, time_t time1,time_t time2) +{ + m_pClient[jobID].customValue=customValue ; + m_pClient[jobID].customValue2=customValue2 ; + m_pClient[jobID].info=info ; + m_pClient[jobID].infoText=infoText; + m_pClient[jobID].time1=time1 ; + m_pClient[jobID].time2=time2 ; +} + +unsigned long MonitorAudioPlugIn::getCustomValue(int jobID) +{ + return m_pClient[jobID].customValue ; +} + +unsigned long MonitorAudioPlugIn::getCustomValue2(int jobID) +{ + return m_pClient[jobID].customValue2 ; +} +SocketThread* MonitorAudioPlugIn::getClient(int jobID) +{ + return m_pClient[jobID].pThread ; +} + +unsigned long MonitorAudioPlugIn::getInfo(int jobID) +{ + return m_pClient[jobID].info ; +} + +std::string MonitorAudioPlugIn::getInfoText(int jobID) +{ + return m_pClient[jobID].infoText ; +} + +time_t MonitorAudioPlugIn::getTime1(int jobID) +{ + return m_pClient[jobID].time1; +} + + +time_t MonitorAudioPlugIn::getTime2(int jobID) +{ + return m_pClient[jobID].time2; +} + +void MonitorAudioPlugIn::clearClient(int jobID) +{ + m_pClient[jobID].pThread=NULL ; + m_pClient[jobID].info=0 ; + m_pClient[jobID].infoText="" ; + m_pClient[jobID].customValue=0 ; +} +int MonitorAudioPlugIn::parseCommand(std::string command) +{ + m_paramCount=0 ; + + for (int i=0;i<9;i++) m_param[i].clear() ; + + int pos ; + unsigned int start=0 ; + m_paramCount=0; + + pos=command.find(":",start) ; + while ((pos>0) && (m_paramCount<9)) + { + m_param[m_paramCount++]=command.substr(start,pos-start) ; + cout << "ParamScan:" << m_paramCount-1 << ":" << m_param[m_paramCount-1] << endl ; + start=pos+1 ; + pos=command.find(":",start) ; + } + + if (command.size()>start) + { + m_param[m_paramCount++]=command.substr(start,command.size()-start) ; + } + +return m_paramCount ; +} + + + + + diff --git a/monitord/plugins/mpluginAudio.h b/monitord/plugins/mpluginAudio.h new file mode 100644 index 0000000..70b5e0f --- /dev/null +++ b/monitord/plugins/mpluginAudio.h @@ -0,0 +1,92 @@ +#ifndef MPLUGINAUDIO_H_ +#define MPLUGINAUDIO_H_ + +#ifdef PLUGINS + +#include "dll.h" +#include "../MonitorModulesResults.h" +#include "../MonitorConfiguration.h" +#include "../SocketServer.h" +#include "../xmltools.h" +#include + +#ifndef WIN32 + #define Sleep sleep +#endif + +#define MAXAUDIOCLIENTS 20 + + +struct strSocketMessage +{ + SocketThread* pThread ; + std::string message ; +} ; + +struct strClientInfo { + SocketThread* pThread ; + time_t time1 ; + time_t time2 ; + unsigned long customValue ; + unsigned long customValue2 ; + unsigned long info ; + std::string infoText ; +}; + +typedef strSocketMessage SocketMessage ; +typedef strClientInfo ClientInfo ; + +class MonitorAudioPlugIn +{ + public: + MonitorAudioPlugIn() ; + virtual ~MonitorAudioPlugIn() {} ; + + virtual bool InitAudioProcessing(class MonitorConfiguration* configPtr, XMLNode config, int channelNum) { return true ;} ; + virtual void ProcessAudio(float *buffer, int length)=0 ; + virtual bool QuitAudioProcessing() {return true;} ; + virtual std::string DoCommand(std::string command, SocketThread* pClient=NULL)=0; + virtual void Show() = 0; + + void addThreadMessage(SocketThread* pClient, std::string message) ; + void addThreadMessage(int jobID, std::string message) ; + bool getThreadMessage(SocketMessage & msg) ; + +protected: + ClientInfo m_pClient[MAXAUDIOCLIENTS] ; + std::vector m_SocketMessages ; + std::string m_param[10] ; + int m_paramCount ; + bool m_bLockSocketMessages ; + + void broadcastMessage(std::string message); + int addClient(SocketThread *pClient, unsigned long customValue=0,unsigned long info=0, std::string infoText="") ; + void updateClient(int jobID, unsigned long customValue=0,unsigned long customValue2=0,unsigned long info=0, std::string infoText="",time_t time1=0, time_t time2=0) ; + SocketThread* getClient(int jobID) ; + unsigned long getCustomValue(int jobID) ; + unsigned long getCustomValue2(int jobID) ; + unsigned long getInfo(int jobID) ; + time_t getTime1(int jobID) ; + time_t getTime2(int jobID) ; + std::string getInfoText (int jobID) ; + int parseCommand(std::string command); + void clearClient(int jobID) ; +}; + +class MonitorAudioPlugInFactory +{ + public: + MonitorAudioPlugInFactory() + { + } + + virtual ~MonitorAudioPlugInFactory() + { + } + + virtual MonitorAudioPlugIn * CreatePlugIn() = 0; + +}; +#endif + +#endif /*MPLUGINAUDIO_H_*/ diff --git a/monitord/posix/.svn/all-wcprops b/monitord/posix/.svn/all-wcprops new file mode 100644 index 0000000..a490c9b --- /dev/null +++ b/monitord/posix/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/323/monitor/trunk/monitord/posix +END +MonitorAudioOSS.cpp +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/265/monitor/trunk/monitord/posix/MonitorAudioOSS.cpp +END +MonitorAudioALSA.h +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/321/monitor/trunk/monitord/posix/MonitorAudioALSA.h +END +MonitorAudioOSS.h +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/321/monitor/trunk/monitord/posix/MonitorAudioOSS.h +END +MonitorAudioALSA.cpp +K 25 +svn:wc:ra_dav:version-url +V 63 +/!svn/ver/323/monitor/trunk/monitord/posix/MonitorAudioALSA.cpp +END diff --git a/monitord/posix/.svn/dir-prop-base b/monitord/posix/.svn/dir-prop-base new file mode 100644 index 0000000..eefa0ac --- /dev/null +++ b/monitord/posix/.svn/dir-prop-base @@ -0,0 +1,7 @@ +K 10 +svn:ignore +V 16 +.deps +.dirstamp + +END diff --git a/monitord/posix/.svn/entries b/monitord/posix/.svn/entries new file mode 100644 index 0000000..7fdc241 --- /dev/null +++ b/monitord/posix/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/monitord/posix +http://svn.monitord.de + + + +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +MonitorAudioOSS.cpp +file + + + + +2012-01-23T14:07:03.371483Z +4cfb43f87cd801f71d56f0f4b3ed94ba +2008-01-05T01:37:59.496590Z +265 +buebchen + + + + + + + + + + + + + + + + + + + + + +2851 + +MonitorAudioALSA.h +file + + + + +2012-01-23T14:07:03.371483Z +4626a531593dc7208318aac323679c44 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1412 + +MonitorAudioOSS.h +file + + + + +2012-01-23T14:07:03.371483Z +59a7ccbeaf40b50c1bcb6a0469007270 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1265 + +MonitorAudioALSA.cpp +file + + + + +2012-01-23T14:07:03.372482Z +b0694d73986672fa3ba8379b66cd8c71 +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +5428 + diff --git a/monitord/posix/.svn/prop-base/MonitorAudioALSA.h.svn-base b/monitord/posix/.svn/prop-base/MonitorAudioALSA.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/posix/.svn/prop-base/MonitorAudioALSA.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/posix/.svn/prop-base/MonitorAudioOSS.h.svn-base b/monitord/posix/.svn/prop-base/MonitorAudioOSS.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/posix/.svn/prop-base/MonitorAudioOSS.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/posix/.svn/text-base/MonitorAudioALSA.cpp.svn-base b/monitord/posix/.svn/text-base/MonitorAudioALSA.cpp.svn-base new file mode 100644 index 0000000..0cdee7f --- /dev/null +++ b/monitord/posix/.svn/text-base/MonitorAudioALSA.cpp.svn-base @@ -0,0 +1,155 @@ +#include +#include "MonitorAudioALSA.h" +#include "../MonitorLogging.h" + +MonitorAudioALSA::MonitorAudioALSA(const std::string* name, tSamplerate rate) +: MonitorAudio(name, rate) { + run = false; +} + +MonitorAudioALSA::~MonitorAudioALSA() { + CloseDevice(); +} + +bool MonitorAudioALSA::Start(void *format) { + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "[ALSA] Error initializing PCM device " << pcm_name; + exit(10); + } + + run = true; + JThread::Start(); + return true; +} + +void MonitorAudioALSA::Stop() { + run = false; +} + +int MonitorAudioALSA::InitDevice() { + if ((pcm_name.length() == 0) || (pcm_rate == 0)) { + FILE_LOG(logERROR) << "[ALSA] InitDevice Argument Error: pcm_name=" << pcm_name << " pcm_rate=" << pcm_rate ; + return -1; + } + + + int ret; + + snd_pcm_uframes_t pcm_buffer_size = audio_buffer->SampleLen; + snd_pcm_stream_t pcm_stream = SND_PCM_STREAM_CAPTURE; + + unsigned int periods = 2; + int direction = 0; + + /* Allocate the snd_pcm_hw_params_t structure on the stack. */ + snd_pcm_hw_params_t *hwparams; + snd_pcm_hw_params_alloca(&hwparams); + /* Open PCM. The last parameter of this function is the mode. */ + /* If this is set to 0, the standard mode is used. Possible */ + /* other values are SND_PCM_NONBLOCK and SND_PCM_ASYNC. */ + /* If SND_PCM_NONBLOCK is used, read / write access to the */ + /* PCM device will return immediately. If SND_PCM_ASYNC is */ + /* specified, SIGIO will be emitted whenever a period has */ + /* been completely processed by the soundcard. */ + ret = snd_pcm_open(&pcm_handle, pcm_name.c_str(), pcm_stream, 0); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error opening PCM device " << pcm_name << " ret:" << ret << snd_strerror(ret); + return -1; + } + /* Init hwparams with full configuration space */ + ret = snd_pcm_hw_params_any(pcm_handle, hwparams); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Can not configure this PCM device " << pcm_name << ". " << ret << "(" << snd_strerror(ret) << ")" ; + return -1; + } + /* Set access type. This can be either */ + /* SND_PCM_ACCESS_RW_INTERLEAVED or */ + /* SND_PCM_ACCESS_RW_NONINTERLEAVED. */ + /* There are also access types for MMAPed */ + /* access, but this is beyond the scope */ + /* of this introduction. */ + ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_NONINTERLEAVED); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting access " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set number of channels */ + ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, 2); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting channels " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set sample rate. If the exact rate is not supported */ + /* by the hardware, use nearest possible rate. */ + ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &pcm_rate, &direction); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting rate " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set sample format */ + /* FLOAT LE -1.0 .. 1.0 */ + ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, SND_PCM_FORMAT_FLOAT_LE); + //ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, SND_PCM_FORMAT_S16_LE); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting format " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set buffer size */ + ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &pcm_buffer_size); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting buffer size " << pcm_name << ". " << (int)pcm_buffer_size << " - " << ret <<"(" << snd_strerror(ret)<<")"; + } + /* Set number of periods. Periods used to be called fragments. */ + ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &periods, &direction); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting periods " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + } + FILE_LOG(logINFO) << "[ALSA] Using pcm_buffer_size=" <<(int)pcm_buffer_size << " periods=" << periods ; + + /* Apply HW parameter settings to */ + /* PCM device and prepare device */ + ret = snd_pcm_hw_params(pcm_handle, hwparams); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting HW params " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + + return 1; +} + +int MonitorAudioALSA::CloseDevice() { + snd_pcm_close(pcm_handle); + return 0; +} + +void* MonitorAudioALSA::Thread() { + signed int num_samples; + + JThread::ThreadStarted(); + + while(run) { + num_samples = snd_pcm_readn(pcm_handle, (void**)audio_buffer->Ptrs, audio_buffer->SampleLen); + if (num_samples > 0) { + audio_buffer->Samples = num_samples; + + DataFromSoundIn(audio_buffer, m_pOwner); + } else if (num_samples == -EPIPE) { + int err = snd_pcm_prepare(pcm_handle); + if (err < 0) { + FILE_LOG(logERROR) << "[ALSA] Can't recovery from underrun, prepare failed: " << snd_strerror(err); + } + } else if (num_samples < 0) { + FILE_LOG(logERROR) << "[ALSA] Read error " << num_samples << "(" << snd_strerror(num_samples) << ")" ; + /* Schliessen des Sounddevices und neustarten */ + CloseDevice(); + sleep(1); + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "[ALSA] Error initializing PCM device " << pcm_name ; + } + } + } + + return NULL; +} + +// vim: sw=4 ts=4 cindent diff --git a/monitord/posix/.svn/text-base/MonitorAudioALSA.h.svn-base b/monitord/posix/.svn/text-base/MonitorAudioALSA.h.svn-base new file mode 100644 index 0000000..9cf2a7e --- /dev/null +++ b/monitord/posix/.svn/text-base/MonitorAudioALSA.h.svn-base @@ -0,0 +1,45 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_POSIX_MONITORAUDIOALSA_H_ +#define MONITORD_POSIX_MONITORAUDIOALSA_H_ + +#include + +#include + +class MonitorAudioALSA : public MonitorAudio { + public: + // const char *device_name: Devicename + // unsigned int sample_rate: Sample Rate in Hz + MonitorAudioALSA(const std::string* = NULL, tSamplerate = 0); + ~MonitorAudioALSA(); + + void Stop(); + bool Start(void* format=NULL); + private: + bool run; + snd_pcm_t *pcm_handle; + int InitDevice(); + int CloseDevice(); + void* Thread(); +}; + +#endif + +// vim: sw=4 ts=4 diff --git a/monitord/posix/.svn/text-base/MonitorAudioOSS.cpp.svn-base b/monitord/posix/.svn/text-base/MonitorAudioOSS.cpp.svn-base new file mode 100644 index 0000000..ce3d81c --- /dev/null +++ b/monitord/posix/.svn/text-base/MonitorAudioOSS.cpp.svn-base @@ -0,0 +1,122 @@ + #include +#include +#include +#include +#include +#include +#include +#include + +#include "MonitorAudioOSS.h" +#include "../MonitorLogging.h" + +using namespace std ; + +MonitorAudioOSS::MonitorAudioOSS(const std::string* name, tSamplerate rate) +: MonitorAudio (name, rate) { + run = false; +} + +MonitorAudioOSS::~MonitorAudioOSS() { + CloseDevice(); +} + +bool MonitorAudioOSS::Start(void *format) { + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "Error initializing PCM device " << pcm_name ; + exit(10); + } + + run = true; + JThread::Start(); + return true; +} + +void MonitorAudioOSS::Stop() { + FILE_LOG(logERROR) << "stopping " << pcm_name ; + run = false; +} + +int MonitorAudioOSS::InitDevice() { + int sndparam; + + if ((pcm_name.length() == 0) || (pcm_rate == 0)) { + return -1; + } + + if ((dev_handle = open(pcm_name.c_str(), O_RDONLY)) < 0) { + FILE_LOG(logERROR) << "open" ; + return -1; + } + sndparam = AFMT_S16_LE; /* we want 16 bits/sample signed */ + /* little endian; works only on little endian systems! */ + if (ioctl(dev_handle, SNDCTL_DSP_SETFMT, &sndparam) == -1) { + FILE_LOG(logERROR) << "ioctl: SNDCTL_DSP_SETFMT"; + return -1; + } + + sndparam = 1; /* 2 Kanäle */ + if (ioctl(dev_handle, SNDCTL_DSP_STEREO, &sndparam) == -1) { + FILE_LOG(logERROR) << ("ioctl: SNDCTL_DSP_STEREO"); + return -1; + } + if (sndparam != 1) { + /* Monovariante? */ + FILE_LOG(logERROR) << "soundif: Error, cannot set the channel " << + "number to 2"; + return -1; + } + + ioctl(dev_handle, SNDCTL_DSP_SPEED, &pcm_rate); + return 0; +} + +int MonitorAudioOSS::CloseDevice() { + close(dev_handle); + return 0; +} + +void *MonitorAudioOSS::Thread() { + int bytes; + short *temp_buffer; + float *left, *right; + if ((temp_buffer = (short*) malloc(audio_buffer->SampleLen * sizeof (short) * 2)) == NULL) { + FILE_LOG(logERROR) << "cannot allocate temporary audio buffer"; + exit (-1); + } + + JThread::ThreadStarted(); + FILE_LOG(logINFO) << "AudioThread " << pcm_name << " is running" ; + + while(run) { + bytes = read(dev_handle, temp_buffer, audio_buffer->SampleLen * sizeof (short) * 2); + if (bytes > 0) { + left = audio_buffer->Left; + right = audio_buffer->Right; + + /* bytes / Kan�le / bytes pro sample */ + audio_buffer->Samples = bytes / sizeof(short) / 2; + + for (tFramecount i=0; i < audio_buffer->Samples; i++) { + left[i] = temp_buffer[i*2] / 32768.0; + right[i] = temp_buffer[i*2+1] / 32768.0; + } + + DataFromSoundIn(audio_buffer, m_pOwner); + } else if (bytes < 0) { + /* Schliessen des Sounddevices und neustarten */ + CloseDevice(); + sleep(1); + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "Error initializing PCM device "<< pcm_name ; + } + } + } + + FILE_LOG(logINFO) << "AudioThread " << pcm_name << " has stopped" ; + + free(temp_buffer); + return NULL; +} + +// vim: sw=4 ts=4 diff --git a/monitord/posix/.svn/text-base/MonitorAudioOSS.h.svn-base b/monitord/posix/.svn/text-base/MonitorAudioOSS.h.svn-base new file mode 100644 index 0000000..35d6525 --- /dev/null +++ b/monitord/posix/.svn/text-base/MonitorAudioOSS.h.svn-base @@ -0,0 +1,42 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_POSIX_MONITORAUDIOOSS_H_ +#define MONITORD_POSIX_MONITORAUDIOOSS_H_ + +#include + +class MonitorAudioOSS : public MonitorAudio { + public: + MonitorAudioOSS(const std::string* = NULL, tSamplerate = 0); + ~MonitorAudioOSS(); + + void Stop(); + bool Start(void* format=NULL); + + private: + bool run; + int dev_handle; + + int InitDevice(); + int CloseDevice(); + + void* Thread(); +}; + +#endif diff --git a/monitord/posix/MonitorAudioALSA.cpp b/monitord/posix/MonitorAudioALSA.cpp new file mode 100644 index 0000000..0cdee7f --- /dev/null +++ b/monitord/posix/MonitorAudioALSA.cpp @@ -0,0 +1,155 @@ +#include +#include "MonitorAudioALSA.h" +#include "../MonitorLogging.h" + +MonitorAudioALSA::MonitorAudioALSA(const std::string* name, tSamplerate rate) +: MonitorAudio(name, rate) { + run = false; +} + +MonitorAudioALSA::~MonitorAudioALSA() { + CloseDevice(); +} + +bool MonitorAudioALSA::Start(void *format) { + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "[ALSA] Error initializing PCM device " << pcm_name; + exit(10); + } + + run = true; + JThread::Start(); + return true; +} + +void MonitorAudioALSA::Stop() { + run = false; +} + +int MonitorAudioALSA::InitDevice() { + if ((pcm_name.length() == 0) || (pcm_rate == 0)) { + FILE_LOG(logERROR) << "[ALSA] InitDevice Argument Error: pcm_name=" << pcm_name << " pcm_rate=" << pcm_rate ; + return -1; + } + + + int ret; + + snd_pcm_uframes_t pcm_buffer_size = audio_buffer->SampleLen; + snd_pcm_stream_t pcm_stream = SND_PCM_STREAM_CAPTURE; + + unsigned int periods = 2; + int direction = 0; + + /* Allocate the snd_pcm_hw_params_t structure on the stack. */ + snd_pcm_hw_params_t *hwparams; + snd_pcm_hw_params_alloca(&hwparams); + /* Open PCM. The last parameter of this function is the mode. */ + /* If this is set to 0, the standard mode is used. Possible */ + /* other values are SND_PCM_NONBLOCK and SND_PCM_ASYNC. */ + /* If SND_PCM_NONBLOCK is used, read / write access to the */ + /* PCM device will return immediately. If SND_PCM_ASYNC is */ + /* specified, SIGIO will be emitted whenever a period has */ + /* been completely processed by the soundcard. */ + ret = snd_pcm_open(&pcm_handle, pcm_name.c_str(), pcm_stream, 0); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error opening PCM device " << pcm_name << " ret:" << ret << snd_strerror(ret); + return -1; + } + /* Init hwparams with full configuration space */ + ret = snd_pcm_hw_params_any(pcm_handle, hwparams); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Can not configure this PCM device " << pcm_name << ". " << ret << "(" << snd_strerror(ret) << ")" ; + return -1; + } + /* Set access type. This can be either */ + /* SND_PCM_ACCESS_RW_INTERLEAVED or */ + /* SND_PCM_ACCESS_RW_NONINTERLEAVED. */ + /* There are also access types for MMAPed */ + /* access, but this is beyond the scope */ + /* of this introduction. */ + ret = snd_pcm_hw_params_set_access(pcm_handle, hwparams, SND_PCM_ACCESS_RW_NONINTERLEAVED); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting access " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set number of channels */ + ret = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, 2); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting channels " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set sample rate. If the exact rate is not supported */ + /* by the hardware, use nearest possible rate. */ + ret = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &pcm_rate, &direction); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting rate " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set sample format */ + /* FLOAT LE -1.0 .. 1.0 */ + ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, SND_PCM_FORMAT_FLOAT_LE); + //ret = snd_pcm_hw_params_set_format(pcm_handle, hwparams, SND_PCM_FORMAT_S16_LE); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting format " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + /* Set buffer size */ + ret = snd_pcm_hw_params_set_buffer_size_near(pcm_handle, hwparams, &pcm_buffer_size); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting buffer size " << pcm_name << ". " << (int)pcm_buffer_size << " - " << ret <<"(" << snd_strerror(ret)<<")"; + } + /* Set number of periods. Periods used to be called fragments. */ + ret = snd_pcm_hw_params_set_periods_near(pcm_handle, hwparams, &periods, &direction); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting periods " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + } + FILE_LOG(logINFO) << "[ALSA] Using pcm_buffer_size=" <<(int)pcm_buffer_size << " periods=" << periods ; + + /* Apply HW parameter settings to */ + /* PCM device and prepare device */ + ret = snd_pcm_hw_params(pcm_handle, hwparams); + if (ret < 0) { + FILE_LOG(logERROR) << "[ALSA] Error setting HW params " << pcm_name << ". " << ret <<"(" << snd_strerror(ret)<<")"; + return -1; + } + + return 1; +} + +int MonitorAudioALSA::CloseDevice() { + snd_pcm_close(pcm_handle); + return 0; +} + +void* MonitorAudioALSA::Thread() { + signed int num_samples; + + JThread::ThreadStarted(); + + while(run) { + num_samples = snd_pcm_readn(pcm_handle, (void**)audio_buffer->Ptrs, audio_buffer->SampleLen); + if (num_samples > 0) { + audio_buffer->Samples = num_samples; + + DataFromSoundIn(audio_buffer, m_pOwner); + } else if (num_samples == -EPIPE) { + int err = snd_pcm_prepare(pcm_handle); + if (err < 0) { + FILE_LOG(logERROR) << "[ALSA] Can't recovery from underrun, prepare failed: " << snd_strerror(err); + } + } else if (num_samples < 0) { + FILE_LOG(logERROR) << "[ALSA] Read error " << num_samples << "(" << snd_strerror(num_samples) << ")" ; + /* Schliessen des Sounddevices und neustarten */ + CloseDevice(); + sleep(1); + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "[ALSA] Error initializing PCM device " << pcm_name ; + } + } + } + + return NULL; +} + +// vim: sw=4 ts=4 cindent diff --git a/monitord/posix/MonitorAudioALSA.h b/monitord/posix/MonitorAudioALSA.h new file mode 100644 index 0000000..9cf2a7e --- /dev/null +++ b/monitord/posix/MonitorAudioALSA.h @@ -0,0 +1,45 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_POSIX_MONITORAUDIOALSA_H_ +#define MONITORD_POSIX_MONITORAUDIOALSA_H_ + +#include + +#include + +class MonitorAudioALSA : public MonitorAudio { + public: + // const char *device_name: Devicename + // unsigned int sample_rate: Sample Rate in Hz + MonitorAudioALSA(const std::string* = NULL, tSamplerate = 0); + ~MonitorAudioALSA(); + + void Stop(); + bool Start(void* format=NULL); + private: + bool run; + snd_pcm_t *pcm_handle; + int InitDevice(); + int CloseDevice(); + void* Thread(); +}; + +#endif + +// vim: sw=4 ts=4 diff --git a/monitord/posix/MonitorAudioOSS.cpp b/monitord/posix/MonitorAudioOSS.cpp new file mode 100644 index 0000000..ce3d81c --- /dev/null +++ b/monitord/posix/MonitorAudioOSS.cpp @@ -0,0 +1,122 @@ + #include +#include +#include +#include +#include +#include +#include +#include + +#include "MonitorAudioOSS.h" +#include "../MonitorLogging.h" + +using namespace std ; + +MonitorAudioOSS::MonitorAudioOSS(const std::string* name, tSamplerate rate) +: MonitorAudio (name, rate) { + run = false; +} + +MonitorAudioOSS::~MonitorAudioOSS() { + CloseDevice(); +} + +bool MonitorAudioOSS::Start(void *format) { + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "Error initializing PCM device " << pcm_name ; + exit(10); + } + + run = true; + JThread::Start(); + return true; +} + +void MonitorAudioOSS::Stop() { + FILE_LOG(logERROR) << "stopping " << pcm_name ; + run = false; +} + +int MonitorAudioOSS::InitDevice() { + int sndparam; + + if ((pcm_name.length() == 0) || (pcm_rate == 0)) { + return -1; + } + + if ((dev_handle = open(pcm_name.c_str(), O_RDONLY)) < 0) { + FILE_LOG(logERROR) << "open" ; + return -1; + } + sndparam = AFMT_S16_LE; /* we want 16 bits/sample signed */ + /* little endian; works only on little endian systems! */ + if (ioctl(dev_handle, SNDCTL_DSP_SETFMT, &sndparam) == -1) { + FILE_LOG(logERROR) << "ioctl: SNDCTL_DSP_SETFMT"; + return -1; + } + + sndparam = 1; /* 2 Kanäle */ + if (ioctl(dev_handle, SNDCTL_DSP_STEREO, &sndparam) == -1) { + FILE_LOG(logERROR) << ("ioctl: SNDCTL_DSP_STEREO"); + return -1; + } + if (sndparam != 1) { + /* Monovariante? */ + FILE_LOG(logERROR) << "soundif: Error, cannot set the channel " << + "number to 2"; + return -1; + } + + ioctl(dev_handle, SNDCTL_DSP_SPEED, &pcm_rate); + return 0; +} + +int MonitorAudioOSS::CloseDevice() { + close(dev_handle); + return 0; +} + +void *MonitorAudioOSS::Thread() { + int bytes; + short *temp_buffer; + float *left, *right; + if ((temp_buffer = (short*) malloc(audio_buffer->SampleLen * sizeof (short) * 2)) == NULL) { + FILE_LOG(logERROR) << "cannot allocate temporary audio buffer"; + exit (-1); + } + + JThread::ThreadStarted(); + FILE_LOG(logINFO) << "AudioThread " << pcm_name << " is running" ; + + while(run) { + bytes = read(dev_handle, temp_buffer, audio_buffer->SampleLen * sizeof (short) * 2); + if (bytes > 0) { + left = audio_buffer->Left; + right = audio_buffer->Right; + + /* bytes / Kan�le / bytes pro sample */ + audio_buffer->Samples = bytes / sizeof(short) / 2; + + for (tFramecount i=0; i < audio_buffer->Samples; i++) { + left[i] = temp_buffer[i*2] / 32768.0; + right[i] = temp_buffer[i*2+1] / 32768.0; + } + + DataFromSoundIn(audio_buffer, m_pOwner); + } else if (bytes < 0) { + /* Schliessen des Sounddevices und neustarten */ + CloseDevice(); + sleep(1); + if (InitDevice() < 0) { + FILE_LOG(logERROR) << "Error initializing PCM device "<< pcm_name ; + } + } + } + + FILE_LOG(logINFO) << "AudioThread " << pcm_name << " has stopped" ; + + free(temp_buffer); + return NULL; +} + +// vim: sw=4 ts=4 diff --git a/monitord/posix/MonitorAudioOSS.h b/monitord/posix/MonitorAudioOSS.h new file mode 100644 index 0000000..35d6525 --- /dev/null +++ b/monitord/posix/MonitorAudioOSS.h @@ -0,0 +1,42 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_POSIX_MONITORAUDIOOSS_H_ +#define MONITORD_POSIX_MONITORAUDIOOSS_H_ + +#include + +class MonitorAudioOSS : public MonitorAudio { + public: + MonitorAudioOSS(const std::string* = NULL, tSamplerate = 0); + ~MonitorAudioOSS(); + + void Stop(); + bool Start(void* format=NULL); + + private: + bool run; + int dev_handle; + + int InitDevice(); + int CloseDevice(); + + void* Thread(); +}; + +#endif diff --git a/monitord/regexp.cpp b/monitord/regexp.cpp new file mode 100644 index 0000000..d90adb4 --- /dev/null +++ b/monitord/regexp.cpp @@ -0,0 +1,911 @@ +//////////////////////////////////////////////////////////////////////////////// +// RegExp.cpp +//////////////////////////////////////////////////////////////////////////////// + +#include "stdafx.h" +#include "RegExp.h" + + +// definition number opnd? meaning +#define END 0 // no End of program. +#define BOL 1 // no Match beginning of line. +#define EOL 2 // no Match end of line. +#define ANY 3 // no Match any character. +#define ANYOF 4 // str Match any of these. +#define ANYBUT 5 // str Match any but one of these. +#define BRANCH 6 // node Match this, or the next..\&. +#define BACK 7 // no "next" ptr points backward. +#define EXACTLY 8 // str Match this string. +#define NOTHING 9 // no Match empty string. +#define STAR 10 // node Match this 0 or more times. +#define PLUS 11 // node Match this 1 or more times. +#define OPEN 20 // no Sub-RE starts here. + // OPEN+1 is number 1, etc. +#define CLOSE 30 // no Analogous to OPEN. + +// Utility definitions. + +#define FAIL(m) { regerror(m); return(NULL); } +#define ISREPN(c) ((c) == _T('*') || (c) == _T('+') || (c) == _T('?')) +#define META "^$.[()|?+*\\" + +// Flags to be passed up and down. + +#define HASWIDTH 01 // Known never to match null string. +#define SIMPLE 02 // Simple enough to be STAR/PLUS operand. +#define SPSTART 04 // Starts with * or +. +#define WORST 0 // Worst case. + + +CRegExp::CRegExp() +{ + bCompiled = FALSE; + program = NULL; + sFoundText = NULL; + + for( int i = 0; i < NSUBEXP; i++ ) + { + startp[i] = NULL; + endp[i] = NULL; + } +} + +CRegExp::~CRegExp() +{ + delete program; + delete sFoundText; +} + + +CRegExp* CRegExp::RegComp(const TCHAR *exp) +{ + TCHAR *scan; + int flags; + + if (exp == NULL) + return NULL; + + bCompiled = TRUE; + + // First pass: determine size, legality. + bEmitCode = FALSE; + regparse = (TCHAR *)exp; + regnpar = 1; + regsize = 0L; + regdummy[0] = NOTHING; + regdummy[1] = regdummy[2] = 0; + regcode = regdummy; + if (reg(0, &flags) == NULL) + return(NULL); + + // Allocate space. + delete program; + program = new TCHAR[regsize]; + memset( program, 0, regsize * sizeof(TCHAR) ); + + if (program == NULL) + return NULL; + + // Second pass: emit code. + bEmitCode = TRUE; + regparse = (TCHAR *)exp; + regnpar = 1; + regcode = program; + if (reg(0, &flags) == NULL) + return NULL; + + // Dig out information for optimizations. + regstart = _T('\0'); // Worst-case defaults. + reganch = 0; + regmust = NULL; + regmlen = 0; + scan = program; // First BRANCH. + if (OP(regnext(scan)) == END) + { + // Only one top-level choice. + scan = OPERAND(scan); + + // Starting-point info. + if (OP(scan) == EXACTLY) + regstart = *OPERAND(scan); + else if (OP(scan) == BOL) + reganch = 1; + + // If there's something expensive in the r.e., find the + // longest literal string that must appear and make it the + // regmust. Resolve ties in favor of later strings, since + // the regstart check works with the beginning of the r.e. + // and avoiding duplication strengthens checking. Not a + // strong reason, but sufficient in the absence of others. + + if (flags&SPSTART) + { + char *longest = NULL; + size_t len = 0; + + for (; scan != NULL; scan = regnext(scan)) + if (OP(scan) == EXACTLY && _tcslen(OPERAND(scan)) >= len) + { + longest = OPERAND(scan); + len = _tcslen(OPERAND(scan)); + } + regmust = longest; + regmlen = (int)len; + } + } + + return this; +} + +// reg - regular expression, i.e. main body or parenthesized thing +// +// Caller must absorb opening parenthesis. +// +// Combining parenthesis handling with the base level of regular expression +// is a trifle forced, but the need to tie the tails of the branches to what +// follows makes it hard to avoid. + + + +TCHAR *CRegExp::reg(int paren, int *flagp) +{ + char *ret; + char *br; + char *ender; + int parno; + int flags; + + *flagp = HASWIDTH; // Tentatively. + + if (paren) + { + // Make an OPEN node. + if (regnpar >= NSUBEXP) + { + TRACE1("Too many (). NSUBEXP is set to %d\n", NSUBEXP ); + return NULL; + } + parno = regnpar; + regnpar++; + ret = regnode(OPEN+parno); + } + + // Pick up the branches, linking them together. + br = regbranch(&flags); + if (br == NULL) + return(NULL); + if (paren) + regtail(ret, br); // OPEN -> first. + else + ret = br; + *flagp &= ~(~flags&HASWIDTH); // Clear bit if bit 0. + *flagp |= flags&SPSTART; + while (*regparse == _T('|')) { + regparse++; + br = regbranch(&flags); + if (br == NULL) + return(NULL); + regtail(ret, br); // BRANCH -> BRANCH. + *flagp &= ~(~flags&HASWIDTH); + *flagp |= flags&SPSTART; + } + + // Make a closing node, and hook it on the end. + ender = regnode((paren) ? CLOSE+parno : END); + regtail(ret, ender); + + // Hook the tails of the branches to the closing node. + for (br = ret; br != NULL; br = regnext(br)) + regoptail(br, ender); + + // Check for proper termination. + if (paren && *regparse++ != _T(')')) + { + TRACE0("unterminated ()\n"); + return NULL; + } + else if (!paren && *regparse != _T('\0')) + { + if (*regparse == _T(')')) + { + TRACE0("unmatched ()\n"); + return NULL; + } + else + { + TRACE0("internal error: junk on end\n"); + return NULL; + } + // NOTREACHED + } + + return(ret); +} + + + + +// +// regbranch - one alternative of an | operator +// +// Implements the concatenation operator. + +TCHAR *CRegExp::regbranch(int *flagp) +{ + TCHAR *ret; + TCHAR *chain; + TCHAR *latest; + int flags; + int c; + + *flagp = WORST; // Tentatively. + + ret = regnode(BRANCH); + chain = NULL; + while ((c = *regparse) != _T('\0') && c != _T('|') && c != _T(')')) { + latest = regpiece(&flags); + if (latest == NULL) + return(NULL); + *flagp |= flags&HASWIDTH; + if (chain == NULL) // First piece. + *flagp |= flags&SPSTART; + else + regtail(chain, latest); + chain = latest; + } + if (chain == NULL) // Loop ran zero times. + (void) regnode(NOTHING); + + return(ret); +} + +// +// regpiece - something followed by possible [*+?] +// +// Note that the branching code sequences used for ? and the general cases +// of * and + are somewhat optimized: they use the same NOTHING node as +// both the endmarker for their branch list and the body of the last branch. +// It might seem that this node could be dispensed with entirely, but the +// endmarker role is not redundant. + +TCHAR *CRegExp::regpiece(int *flagp) +{ + TCHAR *ret; + TCHAR op; + TCHAR *next; + int flags; + + ret = regatom(&flags); + if (ret == NULL) + return(NULL); + + op = *regparse; + if (!ISREPN(op)) { + *flagp = flags; + return(ret); + } + + if (!(flags&HASWIDTH) && op != _T('?')) + { + TRACE0("*+ operand could be empty\n"); + return NULL; + } + + switch (op) { + case _T('*'): *flagp = WORST|SPSTART; break; + case _T('+'): *flagp = WORST|SPSTART|HASWIDTH; break; + case _T('?'): *flagp = WORST; break; + } + + if (op == _T('*') && (flags&SIMPLE)) + reginsert(STAR, ret); + else if (op == _T('*')) { + // Emit x* as (x&|), where & means "self". + reginsert(BRANCH, ret); // Either x + regoptail(ret, regnode(BACK)); // and loop + regoptail(ret, ret); // back + regtail(ret, regnode(BRANCH)); // or + regtail(ret, regnode(NOTHING)); // null. + } else if (op == _T('+') && (flags&SIMPLE)) + reginsert(PLUS, ret); + else if (op == _T('+')) { + // Emit x+ as x(&|), where & means "self". + next = regnode(BRANCH); // Either + regtail(ret, next); + regtail(regnode(BACK), ret); // loop back + regtail(next, regnode(BRANCH)); // or + regtail(ret, regnode(NOTHING)); // null. + } else if (op == _T('?')) { + // Emit x? as (x|) + reginsert(BRANCH, ret); // Either x + regtail(ret, regnode(BRANCH)); // or + next = regnode(NOTHING); // null. + regtail(ret, next); + regoptail(ret, next); + } + regparse++; + if (ISREPN(*regparse)) + { + TRACE0("nested *?+\n"); + return NULL; + } + + return(ret); +} + +// +// regatom - the lowest level +// +// Optimization: gobbles an entire sequence of ordinary characters so that +// it can turn them into a single node, which is smaller to store and +// faster to run. Backslashed characters are exceptions, each becoming a +// separate node; the code is simpler that way and it's not worth fixing. + +TCHAR *CRegExp::regatom(int *flagp) +{ + TCHAR *ret; + int flags; + + *flagp = WORST; // Tentatively. + + switch (*regparse++) { + case _T('^'): + ret = regnode(BOL); + break; + case _T('$'): + ret = regnode(EOL); + break; + case _T('.'): + ret = regnode(ANY); + *flagp |= HASWIDTH|SIMPLE; + break; + case _T('['): { + int range; + int rangeend; + int c; + + if (*regparse == _T('^')) { // Complement of range. + ret = regnode(ANYBUT); + regparse++; + } else + ret = regnode(ANYOF); + if ((c = *regparse) == _T(']') || c == _T('-')) { + regc(c); + regparse++; + } + while ((c = *regparse++) != _T('\0') && c != _T(']')) { + if (c != _T('-')) + regc(c); + else if ((c = *regparse) == _T(']') || c == _T('\0')) + regc(_T('-')); + else + { + range = (unsigned) (TCHAR)*(regparse-2); + rangeend = (unsigned) (TCHAR)c; + if (range > rangeend) + { + TRACE0("invalid [] range\n"); + return NULL; + } + for (range++; range <= rangeend; range++) + regc(range); + regparse++; + } + } + regc(_T('\0')); + if (c != _T(']')) + { + TRACE0("unmatched []\n"); + return NULL; + } + *flagp |= HASWIDTH|SIMPLE; + break; + } + case _T('('): + ret = reg(1, &flags); + if (ret == NULL) + return(NULL); + *flagp |= flags&(HASWIDTH|SPSTART); + break; + case _T('\0'): + case _T('|'): + case _T(')'): + // supposed to be caught earlier + TRACE0("internal error: \\0|) unexpected\n"); + return NULL; + break; + case _T('?'): + case _T('+'): + case _T('*'): + TRACE0("?+* follows nothing\n"); + return NULL; + break; + case _T('\\'): + if (*regparse == _T('\0')) + { + TRACE0("trailing \\\n"); + return NULL; + } + ret = regnode(EXACTLY); + regc(*regparse++); + regc(_T('\0')); + *flagp |= HASWIDTH|SIMPLE; + break; + default: { + size_t len; + TCHAR ender; + + regparse--; + len = _tcscspn(regparse, META); + if (len == 0) + { + TRACE0("internal error: strcspn 0\n"); + return NULL; + } + ender = *(regparse+len); + if (len > 1 && ISREPN(ender)) + len--; // Back off clear of ?+* operand. + *flagp |= HASWIDTH; + if (len == 1) + *flagp |= SIMPLE; + ret = regnode(EXACTLY); + for (; len > 0; len--) + regc(*regparse++); + regc(_T('\0')); + break; + } + } + + return(ret); +} + + + +// reginsert - insert an operator in front of already-emitted operand +// +// Means relocating the operand. + +void CRegExp::reginsert(TCHAR op, TCHAR *opnd) +{ + TCHAR *place; + + if (!bEmitCode) { + regsize += 3; + return; + } + + (void) memmove(opnd+3, opnd, (size_t)((regcode - opnd)*sizeof(TCHAR))); + regcode += 3; + + place = opnd; // Op node, where operand used to be. + *place++ = op; + *place++ = _T('\0'); + *place++ = _T('\0'); +} + +// +// regtail - set the next-pointer at the end of a node chain + +void CRegExp::regtail(TCHAR *p, TCHAR *val) +{ + TCHAR *scan; + TCHAR *temp; +// int offset; + + if (!bEmitCode) + return; + + // Find last node. + for (scan = p; (temp = regnext(scan)) != NULL; scan = temp) + continue; + + *((short *)(scan+1)) = (OP(scan) == BACK) ? scan - val : val - scan; +} + + +// regoptail - regtail on operand of first argument; nop if operandless + +void CRegExp::regoptail(TCHAR *p, TCHAR *val) +{ + // "Operandless" and "op != BRANCH" are synonymous in practice. + if (!bEmitCode || OP(p) != BRANCH) + return; + regtail(OPERAND(p), val); +} + + +// RegFind - match a regexp against a string +// Returns - Returns position of regexp or -1 +// if regular expression not found +// Note - The regular expression should have been +// previously compiled using RegComp +int CRegExp::RegFind(const TCHAR *str) +{ + TCHAR *string = (TCHAR *)str; // avert const poisoning + TCHAR *s; + + // Delete any previously stored found string + delete sFoundText; + sFoundText = NULL; + + // Be paranoid. + if(string == NULL) + { + TRACE0("NULL argument to regexec\n"); + return(-1); + } + + // Check validity of regex + if (!bCompiled) + { + TRACE0("No regular expression provided yet.\n"); + return(-1); + } + + // If there is a "must appear" string, look for it. + if (regmust != NULL && _tcsstr(string, regmust) == NULL) + return(-1); + + // Mark beginning of line for ^ + regbol = string; + + // Simplest case: anchored match need be tried only once. + if (reganch) + { + if( regtry(string) ) + { + // Save the found substring in case we need it + sFoundText = new TCHAR[GetFindLen()+1]; + sFoundText[GetFindLen()] = _T('\0'); + _tcsncpy(sFoundText, string, GetFindLen() ); + + return 0; + } + //String not found + return -1; + } + + // Messy cases: unanchored match. + if (regstart != _T('\0')) + { + // We know what TCHAR it must start with. + for (s = string; s != NULL; s = _tcschr(s+1, regstart)) + if (regtry(s)) + { + int nPos = s-str; + + // Save the found substring in case we need it later + sFoundText = new TCHAR[GetFindLen()+1]; + sFoundText[GetFindLen()] = _T('\0'); + _tcsncpy(sFoundText, s, GetFindLen() ); + + return nPos; + } + return -1; + } + else + { + // We don't -- general case + for (s = string; !regtry(s); s++) + if (*s == _T('\0')) + return(-1); + + int nPos = s-str; + + // Save the found substring in case we need it later + sFoundText = new TCHAR[GetFindLen()+1]; + sFoundText[GetFindLen()] = _T('\0'); + _tcsncpy(sFoundText, s, GetFindLen() ); + + return nPos; + } + // NOTREACHED +} + + +// regtry - try match at specific point + +int CRegExp::regtry(TCHAR *string) +{ + int i; + TCHAR **stp; + TCHAR **enp; + + reginput = string; + + stp = startp; + enp = endp; + for (i = NSUBEXP; i > 0; i--) + { + *stp++ = NULL; + *enp++ = NULL; + } + if (regmatch(program)) + { + startp[0] = string; + endp[0] = reginput; + return(1); + } + else + return(0); +} + +// regmatch - main matching routine +// +// Conceptually the strategy is simple: check to see whether the current +// node matches, call self recursively to see whether the rest matches, +// and then act accordingly. In practice we make some effort to avoid +// recursion, in particular by going through "ordinary" nodes (that don't +// need to know whether the rest of the match failed) by a loop instead of +// by recursion. + +int CRegExp::regmatch(TCHAR *prog) +{ + TCHAR *scan; // Current node. + TCHAR *next; // Next node. + + for (scan = prog; scan != NULL; scan = next) { + next = regnext(scan); + + switch (OP(scan)) { + case BOL: + if (reginput != regbol) + return(0); + break; + case EOL: + if (*reginput != _T('\0')) + return(0); + break; + case ANY: + if (*reginput == _T('\0')) + return(0); + reginput++; + break; + case EXACTLY: { + size_t len; + TCHAR *const opnd = OPERAND(scan); + + // Inline the first character, for speed. + if (*opnd != *reginput) + return(0); + len = _tcslen(opnd); + if (len > 1 && _tcsncmp(opnd, reginput, len) != 0) + return(0); + reginput += len; + break; + } + case ANYOF: + if (*reginput == _T('\0') || + _tcschr(OPERAND(scan), *reginput) == NULL) + return(0); + reginput++; + break; + case ANYBUT: + if (*reginput == _T('\0') || + _tcschr(OPERAND(scan), *reginput) != NULL) + return(0); + reginput++; + break; + case NOTHING: + break; + case BACK: + break; + case OPEN+1: case OPEN+2: case OPEN+3: + case OPEN+4: case OPEN+5: case OPEN+6: + case OPEN+7: case OPEN+8: case OPEN+9: { + const int no = OP(scan) - OPEN; + TCHAR *const input = reginput; + + if (regmatch(next)) { + // Don't set startp if some later + // invocation of the same parentheses + // already has. + + if (startp[no] == NULL) + startp[no] = input; + return(1); + } else + return(0); + break; + } + case CLOSE+1: case CLOSE+2: case CLOSE+3: + case CLOSE+4: case CLOSE+5: case CLOSE+6: + case CLOSE+7: case CLOSE+8: case CLOSE+9: { + const int no = OP(scan) - CLOSE; + TCHAR *const input = reginput; + + if (regmatch(next)) { + // Don't set endp if some later + // invocation of the same parentheses + // already has. + + if (endp[no] == NULL) + endp[no] = input; + return(1); + } else + return(0); + break; + } + case BRANCH: { + TCHAR *const save = reginput; + + if (OP(next) != BRANCH) // No choice. + next = OPERAND(scan); // Avoid recursion. + else { + while (OP(scan) == BRANCH) { + if (regmatch(OPERAND(scan))) + return(1); + reginput = save; + scan = regnext(scan); + } + return(0); + // NOTREACHED + } + break; + } + case STAR: + case PLUS: { + const TCHAR nextch = + (OP(next) == EXACTLY) ? *OPERAND(next) : _T('\0'); + size_t no; + TCHAR *const save = reginput; + const size_t min = (OP(scan) == STAR) ? 0 : 1; + + for (no = regrepeat(OPERAND(scan)) + 1; no > min; no--) { + reginput = save + no - 1; + // If it could work, try it. + if (nextch == _T('\0') || *reginput == nextch) + if (regmatch(next)) + return(1); + } + return(0); + break; + } + case END: + return(1); // Success! + break; + default: + TRACE0("regexp corruption\n"); + return(0); + break; + } + } + + // We get here only if there's trouble -- normally "case END" is + // the terminating point. + + TRACE0("corrupted pointers\n"); + return(0); +} + + +// regrepeat - report how many times something simple would match + +size_t CRegExp::regrepeat(TCHAR *node) +{ + size_t count; + TCHAR *scan; + TCHAR ch; + + switch (OP(node)) + { + case ANY: + return(_tcslen(reginput)); + break; + case EXACTLY: + ch = *OPERAND(node); + count = 0; + for (scan = reginput; *scan == ch; scan++) + count++; + return(count); + break; + case ANYOF: + return(_tcsspn(reginput, OPERAND(node))); + break; + case ANYBUT: + return(_tcscspn(reginput, OPERAND(node))); + break; + default: // Oh dear. Called inappropriately. + TRACE0("internal error: bad call of regrepeat\n"); + return(0); // Best compromise. + break; + } + // NOTREACHED +} + +// regnext - dig the "next" pointer out of a node + +TCHAR *CRegExp::regnext(TCHAR *p) +{ + const short &offset = *((short*)(p+1)); + + if (offset == 0) + return(NULL); + + return((OP(p) == BACK) ? p-offset : p+offset); +} + +// GetReplaceString - Converts a replace expression to a string +// Returns - Pointer to newly allocated string +// Caller is responsible for deleting it +TCHAR* CRegExp::GetReplaceString( const TCHAR* sReplaceExp ) +{ + TCHAR *src = (TCHAR *)sReplaceExp; + TCHAR *buf; + TCHAR c; + int no; + size_t len; + + if( sReplaceExp == NULL || sFoundText == NULL ) + return NULL; + + + // First compute the length of the string + int replacelen = 0; + while ((c = *src++) != _T('\0')) + { + if (c == _T('&')) + no = 0; + else if (c == _T('\\') && isdigit(*src)) + no = *src++ - _T('0'); + else + no = -1; + + if (no < 0) + { + // Ordinary character. + if (c == _T('\\') && (*src == _T('\\') || *src == _T('&'))) + c = *src++; + replacelen++; + } + else if (startp[no] != NULL && endp[no] != NULL && + endp[no] > startp[no]) + { + // Get tagged expression + len = endp[no] - startp[no]; + replacelen += len; + } + } + + // Now allocate buf + buf = new TCHAR[replacelen+1]; + if( buf == NULL ) + return NULL; + + TCHAR* sReplaceStr = buf; + + // Add null termination + buf[replacelen] = _T('\0'); + + // Now we can create the string + src = (TCHAR *)sReplaceExp; + while ((c = *src++) != _T('\0')) + { + if (c == _T('&')) + no = 0; + else if (c == _T('\\') && isdigit(*src)) + no = *src++ - _T('0'); + else + no = -1; + + if (no < 0) + { + // Ordinary character. + if (c == _T('\\') && (*src == _T('\\') || *src == _T('&'))) + c = *src++; + *buf++ = c; + } + else if (startp[no] != NULL && endp[no] != NULL && + endp[no] > startp[no]) + { + // Get tagged expression + len = endp[no] - startp[no]; + int tagpos = startp[no] - startp[0]; + + _tcsncpy(buf, sFoundText + tagpos, len); + buf += len; + } + } + + return sReplaceStr; +} diff --git a/monitord/regexp.h b/monitord/regexp.h new file mode 100644 index 0000000..fcb714d --- /dev/null +++ b/monitord/regexp.h @@ -0,0 +1,123 @@ + +//////////////////////////////////////////////////////////////////////// +// RegExp.h +// +// This code has been derived from work by Henry Spencer. +// The main changes are +// 1. All char variables and functions have been changed to TCHAR +// counterparts +// 2. Added GetFindLen() & GetReplaceString() to enable search +// and replace operations. +// 3. And of course, added the C++ Wrapper +// +// The original copyright notice follows: +// +// Copyright (c) 1986, 1993, 1995 by University of Toronto. +// Written by Henry Spencer. Not derived from licensed software. +// +// Permission is granted to anyone to use this software for any +// purpose on any computer system, and to redistribute it in any way, +// subject to the following restrictions: +// +// 1. The author is not responsible for the consequences of use of +// this software, no matter how awful, even if they arise +// from defects in it. +// +// 2. The origin of this software must not be misrepresented, either +// by explicit claim or by omission. +// +// 3. Altered versions must be plainly marked as such, and must not +// be misrepresented (by explicit claim or omission) as being +// the original software. +// +// 4. This notice must not be removed or altered. +///////////////////////////////////////////////////////////////////////////// + +#define NSUBEXP 10 +#define TCHAR char + + +class CRegExp +{ +public: + CRegExp(); + ~CRegExp(); + + CRegExp *RegComp( const TCHAR *re ); + int RegFind(const TCHAR *str); + TCHAR* GetReplaceString( const TCHAR* sReplaceExp ); + int GetFindLen() + { + if( startp[0] == NULL || endp[0] == NULL ) + return 0; + + return endp[0] - startp[0]; + } + + +private: + TCHAR *regnext(TCHAR *node); + void reginsert(TCHAR op, TCHAR *opnd); + + int regtry(TCHAR *string); + int regmatch(TCHAR *prog); + size_t regrepeat(TCHAR *node); + TCHAR *reg(int paren, int *flagp); + TCHAR *regbranch(int *flagp); + void regtail(TCHAR *p, TCHAR *val); + void regoptail(TCHAR *p, TCHAR *val); + TCHAR *regpiece(int *flagp); + TCHAR *regatom(int *flagp); + + // Inline functions +private: + TCHAR OP(TCHAR *p) {return *p;}; + TCHAR *OPERAND( TCHAR *p) {return (TCHAR*)((short *)(p+1)+1); }; + + // regc - emit (if appropriate) a byte of code + void regc(TCHAR b) + { + if (bEmitCode) + *regcode++ = b; + else + regsize++; + }; + + // regnode - emit a node + TCHAR * regnode(TCHAR op) + { + if (!bEmitCode) { + regsize += 3; + return regcode; + } + + *regcode++ = op; + *regcode++ = _T('\0'); /* Null next pointer. */ + *regcode++ = _T('\0'); + + return regcode-3; + }; + + +private: + BOOL bEmitCode; + BOOL bCompiled; + TCHAR *sFoundText; + + TCHAR *startp[NSUBEXP]; + TCHAR *endp[NSUBEXP]; + TCHAR regstart; // Internal use only. + TCHAR reganch; // Internal use only. + TCHAR *regmust; // Internal use only. + int regmlen; // Internal use only. + TCHAR *program; // Unwarranted chumminess with compiler. + + TCHAR *regparse; // Input-scan pointer. + int regnpar; // () count. + TCHAR *regcode; // Code-emit pointer; ®dummy = don't. + TCHAR regdummy[3]; // NOTHING, 0 next ptr + long regsize; // Code size. + + TCHAR *reginput; // String-input pointer. + TCHAR *regbol; // Beginning of input, for ^ check. +}; \ No newline at end of file diff --git a/monitord/win32/.svn/all-wcprops b/monitord/win32/.svn/all-wcprops new file mode 100644 index 0000000..5a75df8 --- /dev/null +++ b/monitord/win32/.svn/all-wcprops @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 42 +/!svn/ver/418/monitor/trunk/monitord/win32 +END +MonitorAudioWin32.h +K 25 +svn:wc:ra_dav:version-url +V 62 +/!svn/ver/323/monitor/trunk/monitord/win32/MonitorAudioWin32.h +END +MonitorService.cpp +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/418/monitor/trunk/monitord/win32/MonitorService.cpp +END +MonitorAudioWin32.cpp +K 25 +svn:wc:ra_dav:version-url +V 64 +/!svn/ver/323/monitor/trunk/monitord/win32/MonitorAudioWin32.cpp +END +MonitorService.h +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/323/monitor/trunk/monitord/win32/MonitorService.h +END diff --git a/monitord/win32/.svn/dir-prop-base b/monitord/win32/.svn/dir-prop-base new file mode 100644 index 0000000..56a1490 --- /dev/null +++ b/monitord/win32/.svn/dir-prop-base @@ -0,0 +1,8 @@ +K 10 +svn:ignore +V 25 +.deps +.dirstamp +.libs + +END diff --git a/monitord/win32/.svn/entries b/monitord/win32/.svn/entries new file mode 100644 index 0000000..3a47aa2 --- /dev/null +++ b/monitord/win32/.svn/entries @@ -0,0 +1,164 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/monitord/win32 +http://svn.monitord.de + + + +2010-02-10T19:20:54.536647Z +418 +dekarl +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +MonitorAudioWin32.h +file + + + + +2012-01-23T14:07:03.379483Z +523d12ec83733d2f3c93b3b5222abd3d +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1632 + +MonitorService.cpp +file + + + + +2012-01-23T14:07:03.380483Z +b715e908b67dee9c7ec142c80a299efb +2010-02-10T19:20:54.536647Z +418 +dekarl + + + + + + + + + + + + + + + + + + + + + +7932 + +MonitorAudioWin32.cpp +file + + + + +2012-01-23T14:07:03.380483Z +277c4d354b57173f93228c9eb8b6fbeb +2008-07-23T21:57:36.909704Z +323 +dekarl + + + + + + + + + + + + + + + + + + + + + +6768 + +MonitorService.h +file + + + + +2012-01-23T14:07:03.380483Z +0bc82bb6caf4cc3f1896cef9d08d61eb +2008-07-23T21:57:36.909704Z +323 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1450 + diff --git a/monitord/win32/.svn/prop-base/MonitorAudioWin32.h.svn-base b/monitord/win32/.svn/prop-base/MonitorAudioWin32.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/win32/.svn/prop-base/MonitorAudioWin32.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/win32/.svn/prop-base/MonitorService.h.svn-base b/monitord/win32/.svn/prop-base/MonitorService.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/monitord/win32/.svn/prop-base/MonitorService.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/monitord/win32/.svn/text-base/MonitorAudioWin32.cpp.svn-base b/monitord/win32/.svn/text-base/MonitorAudioWin32.cpp.svn-base new file mode 100644 index 0000000..e7fb68f --- /dev/null +++ b/monitord/win32/.svn/text-base/MonitorAudioWin32.cpp.svn-base @@ -0,0 +1,274 @@ + +#include + +#include "MonitorAudioWin32.h" +#include "math.h" +#include "../convert.h" +#include "../MonitorExceptions.h" +#include "../MonitorLogging.h" + +#define usleep Sleep +#define short2float (1.0/32768.0) + +using namespace std ; + +MonitorAudioWin32::MonitorAudioWin32(const std::string* name, tSamplerate rate) +: MonitorAudio(name, rate) { + run = false; + hwi=NULL ; + m_bBufferInUse=false ; +} + +MonitorAudioWin32::~MonitorAudioWin32() { + +} + +bool MonitorAudioWin32::Start(void *format) { + JThread::Start(); + return true; +} + +void MonitorAudioWin32::Stop() { + run = false; + usleep(2000) ; + CloseDevice(); +} + +int MonitorAudioWin32::InitDevice() { + if ((pcm_name.length() == 0) || (pcm_rate == 0)) { + FILE_LOG(logERROR) << "[WINMM] InitDevice Argument Error: pcm_name=" + << pcm_name << ", pcm_rate=" << pcm_rate ; + return -1; + } + + /* FIXME es wird einfach die erste Soundkarte geoeffnet */ + + WAVEINCAPS wic; + WAVEFORMATEX wfx; + UINT nDevId; + MMRESULT rc; + //UINT nMaxDevices = waveInGetNumDevs(); + + hwi = NULL; + + handle = CreateEvent(NULL,FALSE,FALSE,NULL); + if (handle == NULL) { + return -1; + } + std::string devString="/dev/dsp" ; + std::string deviceName = pcm_name; + + nDevId = 0; + if (deviceName.substr(0,devString.size())==devString) + { + nDevId=convertToInt(deviceName.substr(devString.size())); + FILE_LOG(logINFO) << "using windows device #" << nDevId ; + } + if ((nDevId<0)) + { + nDevId=0 ; + } + + + rc = waveInGetDevCaps(nDevId, &wic, sizeof(wic)); + + if (rc == MMSYSERR_NOERROR) { + FILE_LOG(logINFO) << "starting wavein for sounddevice: \"" << wic.szPname << "\"" ; + wfx.nChannels = 2; // stereo + wfx.nSamplesPerSec = 22050; // 22.05 kHz (22.05 * 1000) + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + wfx.cbSize = 0; + + // rc = waveInOpen(&hwi, nDevId, &wfx, (DWORD)handle, 0, CALLBACK_EVENT | WAVE_FORMAT_DIRECT); + rc = waveInOpen(&hwi, nDevId, &wfx, (DWORD_PTR)MonitorAudioWin32::waveInProc, (DWORD_PTR) this, CALLBACK_FUNCTION ); // | WAVE_FORMAT_DIRECT + if (rc == MMSYSERR_NOERROR) { + // break; + } else { + waveInErrorMsg (rc, "waveInOpen"); + return -1; + } + } else { + waveInErrorMsg (rc, "waveInGetDevCaps"); + return -1 ; + } + + + // device not found, error condition + //.................................. + + if (hwi == NULL) { + return -1; + } + + // allocate two WAVEHDR buffer blocks + //................................... + for (int i = 0; i < MAX_BUFFERS; i++) { + whin[i] = new WAVEHDR; + if (whin[i]) { + whin[i]->lpData = new char[DATABLOCK_SIZE]; + whin[i]->dwBufferLength = DATABLOCK_SIZE; + whin[i]->dwFlags = 0; + } + } + next_buffer = 0; + + return 1; +} + +int MonitorAudioWin32::CloseDevice() { + FILE_LOG(logINFO) << "Closing sound device..." ; + int i=0 ; + // waveInReset Stops the device and sets all the pending buffers to zero. + if (hwi != NULL) { + + waveInStop(hwi) ; + // waveInReset friert den laufenden proze� ein. Deswegen waveInStop + //waveInReset(hwi); + + // Unprepare headers + //.................. + + for (i = 0; i < MAX_BUFFERS; i++) { + waveInUnprepareHeader(hwi, whin[i], sizeof(WAVEHDR)); + } + + waveInClose(hwi); + + // I do not know if cleanup is really necessary since the buffers were dynamically allocated. + // I think the memory is freed once the process is destroyed. + + // free the WAVEHDR buffer blocks + //............................... + + for (i = 0; i < MAX_BUFFERS; i++) { + if (whin[i] != NULL) { + delete whin[i]->lpData; + delete whin[i]; + whin[i] = NULL; + } + } + } + FILE_LOG(logINFO) << "sound device closed" ; + return 0; +} + + +void MonitorAudioWin32::waveInProc(HWAVEIN hwin, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2 ) +{ + MonitorAudioWin32* me=(MonitorAudioWin32*) dwInstance ; + WAVEHDR* pwhin= (WAVEHDR*) dwParam1; + MMRESULT rc; + + switch (uMsg) + { + case WIM_DATA: + rc=waveInUnprepareHeader(hwin,pwhin,sizeof(WAVEHDR)); + me->waveInErrorMsg (rc, "waveInUnprepareHeader"); + + + /* + while ((me->m_bBufferInUse)==true) + { + printf("Win32AudioThread waiting\n") ; + Sleep(10) ; + } + */ + + me->m_bBufferInUse=true ; + + /* convert buffer and send off to pipe */ + me->audio_buffer->Samples = pwhin->dwBytesRecorded / sizeof (short) / 2; + short *temp_buffer = (short *) pwhin->lpData; + + for (unsigned int i=0; i< (me->audio_buffer->Samples); i++) { + me->audio_buffer->Left[i] = temp_buffer[i*2] * short2float; + me->audio_buffer->Right[i] = temp_buffer[i*2+1] * short2float; + } + SetEvent(me->handle) ; + /** Hauptprozess mitteilen, da� er einen Datenblock verarbeiten kann + * wir verlassen aber die Callback Funktion trotzdem schonmal + * FIXME: Koennte hier eine Race-Condition auftreten ? + */ + + /* recycle buffer */ + rc = waveInPrepareHeader(hwin, pwhin, sizeof(WAVEHDR)); + if (rc == MMSYSERR_NOERROR) { + rc = waveInAddBuffer(hwin, pwhin, sizeof(WAVEHDR)); + me->waveInErrorMsg (rc, "waveInAddBuffer"); + } else { + me->waveInErrorMsg (rc, "waveInPrepareHeader"); + } + } +} + +void* MonitorAudioWin32::Thread() { + int rc; + + rc=InitDevice() ; + if ( rc < 0) { + FILE_LOG(logERROR) << "[WINMM] Error initializing PCM device " << pcm_name; + + return NULL ; + } + + /* prepare buffers */ + for (int i = 0; i < MAX_BUFFERS; i++) { + rc = waveInPrepareHeader(hwi, whin[i], sizeof(WAVEHDR)); + + // add buffers to the input queue + if (rc == MMSYSERR_NOERROR) { + rc = waveInAddBuffer(hwi, whin[i], sizeof(WAVEHDR)); + waveInErrorMsg (rc, "waveInAddBuffer"); + } else { + waveInErrorMsg (rc, "waveInPrepareHeader"); + } + } + + /* start waveIn */ + rc = waveInStart(hwi); + waveInErrorMsg (rc, "waveInStart"); + + /* check for ready buffers on every event */ + + JThread::ThreadStarted(); + run = true; + + while(run) { + int res = WaitForSingleObject(handle,1000); + if (res==WAIT_OBJECT_0) { + /** + * Wenn die Callbackfunktion den audio_buffer gefuellt hat + * schickt sie ein Event. + * Erst dann landen wir hier und verarbeiten dann auch den + * Audio_buffer + * Sinn dahinter ist, die Callbackfunktion schnell wieder zu + * verlassen + */ + ResetEvent(handle) ; + DataFromSoundIn(audio_buffer, m_pOwner); + m_bBufferInUse=false ; + } + } + + FILE_LOG(logINFO) << "stopping soundcard" ; + /* stop waveIn */ + waveInStop(hwi); + Sleep(1000) ; + FILE_LOG(logINFO) << "soundcard stopped" ; + + return NULL; +} + +void MonitorAudioWin32::waveInErrorMsg(MMRESULT result, std::string addstr) +{ + if (result != MMSYSERR_NOERROR) { + char errorbuffer[100]; + waveInGetErrorText (result, errorbuffer, 100); + FILE_LOG(logERROR) << "[WINMM] Error " << result << ":" << errorbuffer << " (" << addstr << ")" ; + } +} + +// vim: sw=4 ts=4 cindent diff --git a/monitord/win32/.svn/text-base/MonitorAudioWin32.h.svn-base b/monitord/win32/.svn/text-base/MonitorAudioWin32.h.svn-base new file mode 100644 index 0000000..1efa838 --- /dev/null +++ b/monitord/win32/.svn/text-base/MonitorAudioWin32.h.svn-base @@ -0,0 +1,55 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_POSIX_MONITORAUDIOWIN32_H_ +#define MONITORD_POSIX_MONITORAUDIOWIN32_H_ + +#include + +#define MAX_BUFFERS 2 +#define DATABLOCK_SIZE 8192*4 + +class MonitorAudioWin32 : public MonitorAudio { + public: + MonitorAudioWin32(const std::string* = NULL, const tSamplerate = 0); + ~MonitorAudioWin32(); + + void Stop(); + bool Start(void* format=NULL); + + static void CALLBACK waveInProc( HWAVEIN hwi, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2 ); + + private: + bool run; + + int InitDevice(); + int CloseDevice(); + + void* Thread(); + + HWAVEIN hwi; + HANDLE handle; + LPWAVEHDR whin[MAX_BUFFERS]; + int next_buffer; + bool m_bBufferInUse ; + void waveInErrorMsg(MMRESULT result, std::string addstr); +}; + +#endif + +// vim: sw=4 ts=4 diff --git a/monitord/win32/.svn/text-base/MonitorService.cpp.svn-base b/monitord/win32/.svn/text-base/MonitorService.cpp.svn-base new file mode 100644 index 0000000..f1e45d5 --- /dev/null +++ b/monitord/win32/.svn/text-base/MonitorService.cpp.svn-base @@ -0,0 +1,304 @@ +/** + * Windows Service Application f�r den Monitor, basierend auf + * http://weblogs.asp.net/kennykerr/archive/2004/05/18/134342.aspx + */ + +#include +#include +#include +#include "../convert.h" + + +#include "MonitorService.h" +#include "../MonitorLogging.h" + +#ifdef WIN32 + #define sleep Sleep +#endif + + +using namespace std ; + +MonitorService* MonitorService::m_service = 0; + +MonitorService::MonitorService(Monitor* monitor) +{ + m_handle = 0; + m_monitor = monitor; + m_service = this; + m_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS; + m_status.dwCurrentState = SERVICE_START_PENDING; + m_status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; + + m_installServiceName="monitord" ; + m_installServiceDisplayName="monitord" ; +} + +MonitorService::~MonitorService() +{ +} + + +void MonitorService::Stop() +{ + m_service->UpdateState(SERVICE_STOP_PENDING); + m_monitor->m_bWantStop = true; + m_service->m_debugFile << "Warte auf beenden des monitord" << endl ; + m_monitor->m_SignalStopped->WaitForSignal() ; + Sleep(2000) ; + m_service->UpdateState(SERVICE_STOPPED); + m_service->m_debugFile << "monitord Signal empfangen" << endl ; + Sleep(1000) ; +} + + +/** + * Provides the main entry point for an executable that + * contains a single service. Loads the service into + * memory so it can be started. This method blocks until + * the service has stopped. + */ +void MonitorService::Run() +{ + assert (0 != m_service); + + SERVICE_TABLE_ENTRY serviceTable[] = + { + // Even though the service name is ignored for own process services, + // it must be a valid string and cannot be 0. + { "", (LPSERVICE_MAIN_FUNCTION)ServiceMain }, + + // Designates the end of table. + { 0, 0 } + }; + + if (!::StartServiceCtrlDispatcher(serviceTable)) + { + char msg[1024]; + snprintf (msg, 1024, "Fehler bei Dispatcher-Registrierung, siehe net helpmsg %ld", GetLastError()); + ThrowMonitorServiceException(msg); + } +} + +/** + * The starting point for the service. + * + * @param argc number of arguments in arguments + * @param argv array of string pointers containing the arguments + */ +void WINAPI MonitorService::ServiceMain(DWORD argc, PSTR* argv) +{ + // + // Since there's no way to inform the SCM of failure before a successful + // call to RegisterServiceCtrlHandler, if an error occurs before we have + // a service status handle we don't catch any exceptions and let the + // process terminate. The SCM will diligently log this event. + // + + FILE_LOG(logINFO) << "ServiceMain Startet" ; + assert (0 != m_service); + + if (1 != argc || 0 == argv || 0 == argv[0]) + { + // FIXME AtlThrow(E_INVALIDARG); + } + + m_service->m_serviceName = argv[0]; + m_service->m_handle = ::RegisterServiceCtrlHandler(m_service->m_serviceName.c_str(), Handler); + + if (0 == m_service->m_handle) + { + // FIXME AtlThrowLastWin32(); + //m_service->m_debugFile << "Handler registiert ?=N�" << endl ; + } + + m_service->UpdateState(SERVICE_START_PENDING); + sleep(100) ; + m_service->UpdateState(SERVICE_RUNNING); + + /** + * now we can call the m_monitor mainloop und wait until the SCM + * tells us to stop (via Handler) + */ + m_service->m_monitor->MainLoop(); + + m_service->Stop() ; +} + +/** + * The handler function called by the control dispatcher when an event occurs. + */ +void WINAPI MonitorService::Handler(DWORD control) +{ + #ifdef _DEBUG + FILE_LOG(logINFO) << "Handler: empfangen:" << control << ".." << m_service ; + #endif + //assert (0 == m_service); + switch (control) + { + case SERVICE_CONTROL_CONTINUE : + { + m_service->UpdateState(SERVICE_CONTINUE_PENDING); + //m_service->Start(control); + m_service->UpdateState(SERVICE_RUNNING); + break; + } + case SERVICE_CONTROL_PAUSE : + { + m_service->UpdateState(SERVICE_PAUSE_PENDING); + //m_service->Stop(); + m_service->UpdateState(SERVICE_PAUSED); + break; + } + case SERVICE_CONTROL_SHUTDOWN : + case SERVICE_CONTROL_STOP : + { + FILE_LOG(logINFO) << "ServiceMain stopping ... " ; + m_service->Stop(); + break; + } + } +} + + + +/** + * Updates the current state and exit code of the service + * and notifies the service control manager of the change. + */ +void MonitorService::UpdateState(DWORD state, HRESULT errorCode) +{ + #ifdef _DEBUG + FILE_LOG(logDEBUG) << "Updatestatus ..." ; + #endif + + //assert (0 != m_service); + m_status.dwCurrentState = state; + + + if (FAILED(errorCode)) + { + if (FACILITY_WIN32 == HRESULT_FACILITY(errorCode)) + { + m_status.dwWin32ExitCode = errorCode & ~0x80070000; + } + else + { + m_status.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR; + m_status.dwServiceSpecificExitCode = errorCode; + } + } + + if (!::SetServiceStatus(m_handle, + &m_status)) + { + // FIXME AtlThrowLastWin32(); + } + + FILE_LOG(logDEBUG) << "Updatestatus ... done" ; + +} + + +bool MonitorService::InstallService() +{ + // Get this exes full pathname + TCHAR szAppPath[_MAX_PATH]; + GetModuleFileName(NULL, szAppPath, _MAX_PATH); + + std::string sServiceCommandline ; + + sServiceCommandline=szAppPath ; + sServiceCommandline+=" --service" ; + + // Versuche die aktuell genutzte Configdatei als Parameter zu hinterlegen + if (m_monitor->m_MonitorConfig.m_ConfigFile == "monitord.xml") { + // default + TCHAR szConfigPath[_MAX_PATH]; + strncpy(szConfigPath,szAppPath,_MAX_PATH) ; + + char* pos=strrchr(szConfigPath, '\\') ; + if (pos) + { + *pos='\0' ; + string configFile=std::string(" -c ") + szConfigPath+"\\monitord.xml" ; + // << "configFile:" << configFile << endl ; + sServiceCommandline+=configFile ; + } + } else { + sServiceCommandline += std::string(" -c "); + sServiceCommandline += m_monitor->m_MonitorConfig.m_ConfigFile; + } + + + //Open up the SCM requesting Creation rights + SC_HANDLE hSCM = ::OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CREATE_SERVICE); + SC_HANDLE hService ; + + if (hSCM==NULL) + { + // FIXME: TRACE(_T("Failed in call to open SCM in Install, GetLastError:%d\n"), ::GetLastError()); + return FALSE; + } + + //Create the new service entry in the SCM database + hService = ::CreateService( hSCM, + m_installServiceName.c_str(), + m_installServiceDisplayName.c_str(), + 0, + SERVICE_WIN32_OWN_PROCESS, + SERVICE_DEMAND_START, + SERVICE_ERROR_IGNORE, + sServiceCommandline.c_str(), + NULL, + NULL, + NULL, + NULL, + NULL); + + + + if (hService == NULL) + { + //FIXME: + //TRACE(_T("Failed in call to CreateService in Create, GetLastError:%d\n"), ::GetLastError()); + } else + { + ::CloseServiceHandle(hService); + } + + if (hSCM!=NULL) + { + ::CloseServiceHandle(hSCM); + } + + return (hService != NULL); +} + +bool MonitorService::UnInstallService() +{ + bool bSuccess=false ; + + SC_HANDLE hSCM = ::OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT); + + if (hSCM==NULL) + { + // FIXME: TRACE(_T("Failed in call to open SCM in Install, GetLastError:%d\n"), ::GetLastError()); + return FALSE; + } + + + SC_HANDLE hService = ::OpenService(hSCM, m_installServiceName.c_str(), DELETE | SERVICE_STOP | SERVICE_QUERY_STATUS); + if (hService != NULL) + { + bSuccess = ::DeleteService(hService); + + ::CloseServiceHandle(hService); + } + if (hSCM!=NULL) + { + ::CloseServiceHandle(hSCM); + } + + return (bSuccess); +} diff --git a/monitord/win32/.svn/text-base/MonitorService.h.svn-base b/monitord/win32/.svn/text-base/MonitorService.h.svn-base new file mode 100644 index 0000000..502d20e --- /dev/null +++ b/monitord/win32/.svn/text-base/MonitorService.h.svn-base @@ -0,0 +1,53 @@ +/** + * Windows Server f�r den Monitor, basierend auf http://weblogs.asp.net/kennykerr/archive/2004/05/18/134342.aspx + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "monitord/Monitor.h" + +using namespace std ; + +class MonitorServiceException : public std::runtime_error { + public: + MonitorServiceException(const std::string& s) + : std::runtime_error(s) + { } + }; + #define ThrowMonitorServiceException(err) throw( MonitorServiceException(std::string(__FILE__)+ std::string(" Zeile ") + convertIntToString(__LINE__) + std::string(": ") + std::string(err) )) + + +class MonitorService +{ +public: + MonitorService(Monitor* monitor); + virtual ~MonitorService() ; + + static void Run(); + void Stop(); + bool InstallService() ; + bool UnInstallService() ; + +private: + static void WINAPI Handler(DWORD control); + static void WINAPI ServiceMain(DWORD argumentCount, PSTR* arguments); + ofstream m_debugFile ; + void UpdateState(DWORD state, HRESULT errorCode = S_OK); + + Monitor* m_monitor; + + SERVICE_STATUS_HANDLE m_handle; + SERVICE_STATUS m_status; + + static MonitorService *m_service; + std::string m_serviceName; // Executed file (started from SCM) + std::string m_installServiceName ; // Shortname in SCM (NOT filename) + std::string m_installServiceDisplayName ; // Displayname SCN +}; diff --git a/monitord/win32/MonitorAudioWin32.cpp b/monitord/win32/MonitorAudioWin32.cpp new file mode 100644 index 0000000..e7fb68f --- /dev/null +++ b/monitord/win32/MonitorAudioWin32.cpp @@ -0,0 +1,274 @@ + +#include + +#include "MonitorAudioWin32.h" +#include "math.h" +#include "../convert.h" +#include "../MonitorExceptions.h" +#include "../MonitorLogging.h" + +#define usleep Sleep +#define short2float (1.0/32768.0) + +using namespace std ; + +MonitorAudioWin32::MonitorAudioWin32(const std::string* name, tSamplerate rate) +: MonitorAudio(name, rate) { + run = false; + hwi=NULL ; + m_bBufferInUse=false ; +} + +MonitorAudioWin32::~MonitorAudioWin32() { + +} + +bool MonitorAudioWin32::Start(void *format) { + JThread::Start(); + return true; +} + +void MonitorAudioWin32::Stop() { + run = false; + usleep(2000) ; + CloseDevice(); +} + +int MonitorAudioWin32::InitDevice() { + if ((pcm_name.length() == 0) || (pcm_rate == 0)) { + FILE_LOG(logERROR) << "[WINMM] InitDevice Argument Error: pcm_name=" + << pcm_name << ", pcm_rate=" << pcm_rate ; + return -1; + } + + /* FIXME es wird einfach die erste Soundkarte geoeffnet */ + + WAVEINCAPS wic; + WAVEFORMATEX wfx; + UINT nDevId; + MMRESULT rc; + //UINT nMaxDevices = waveInGetNumDevs(); + + hwi = NULL; + + handle = CreateEvent(NULL,FALSE,FALSE,NULL); + if (handle == NULL) { + return -1; + } + std::string devString="/dev/dsp" ; + std::string deviceName = pcm_name; + + nDevId = 0; + if (deviceName.substr(0,devString.size())==devString) + { + nDevId=convertToInt(deviceName.substr(devString.size())); + FILE_LOG(logINFO) << "using windows device #" << nDevId ; + } + if ((nDevId<0)) + { + nDevId=0 ; + } + + + rc = waveInGetDevCaps(nDevId, &wic, sizeof(wic)); + + if (rc == MMSYSERR_NOERROR) { + FILE_LOG(logINFO) << "starting wavein for sounddevice: \"" << wic.szPname << "\"" ; + wfx.nChannels = 2; // stereo + wfx.nSamplesPerSec = 22050; // 22.05 kHz (22.05 * 1000) + wfx.wFormatTag = WAVE_FORMAT_PCM; + wfx.wBitsPerSample = 16; + wfx.nBlockAlign = wfx.nChannels * wfx.wBitsPerSample / 8; + wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; + wfx.cbSize = 0; + + // rc = waveInOpen(&hwi, nDevId, &wfx, (DWORD)handle, 0, CALLBACK_EVENT | WAVE_FORMAT_DIRECT); + rc = waveInOpen(&hwi, nDevId, &wfx, (DWORD_PTR)MonitorAudioWin32::waveInProc, (DWORD_PTR) this, CALLBACK_FUNCTION ); // | WAVE_FORMAT_DIRECT + if (rc == MMSYSERR_NOERROR) { + // break; + } else { + waveInErrorMsg (rc, "waveInOpen"); + return -1; + } + } else { + waveInErrorMsg (rc, "waveInGetDevCaps"); + return -1 ; + } + + + // device not found, error condition + //.................................. + + if (hwi == NULL) { + return -1; + } + + // allocate two WAVEHDR buffer blocks + //................................... + for (int i = 0; i < MAX_BUFFERS; i++) { + whin[i] = new WAVEHDR; + if (whin[i]) { + whin[i]->lpData = new char[DATABLOCK_SIZE]; + whin[i]->dwBufferLength = DATABLOCK_SIZE; + whin[i]->dwFlags = 0; + } + } + next_buffer = 0; + + return 1; +} + +int MonitorAudioWin32::CloseDevice() { + FILE_LOG(logINFO) << "Closing sound device..." ; + int i=0 ; + // waveInReset Stops the device and sets all the pending buffers to zero. + if (hwi != NULL) { + + waveInStop(hwi) ; + // waveInReset friert den laufenden proze� ein. Deswegen waveInStop + //waveInReset(hwi); + + // Unprepare headers + //.................. + + for (i = 0; i < MAX_BUFFERS; i++) { + waveInUnprepareHeader(hwi, whin[i], sizeof(WAVEHDR)); + } + + waveInClose(hwi); + + // I do not know if cleanup is really necessary since the buffers were dynamically allocated. + // I think the memory is freed once the process is destroyed. + + // free the WAVEHDR buffer blocks + //............................... + + for (i = 0; i < MAX_BUFFERS; i++) { + if (whin[i] != NULL) { + delete whin[i]->lpData; + delete whin[i]; + whin[i] = NULL; + } + } + } + FILE_LOG(logINFO) << "sound device closed" ; + return 0; +} + + +void MonitorAudioWin32::waveInProc(HWAVEIN hwin, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2 ) +{ + MonitorAudioWin32* me=(MonitorAudioWin32*) dwInstance ; + WAVEHDR* pwhin= (WAVEHDR*) dwParam1; + MMRESULT rc; + + switch (uMsg) + { + case WIM_DATA: + rc=waveInUnprepareHeader(hwin,pwhin,sizeof(WAVEHDR)); + me->waveInErrorMsg (rc, "waveInUnprepareHeader"); + + + /* + while ((me->m_bBufferInUse)==true) + { + printf("Win32AudioThread waiting\n") ; + Sleep(10) ; + } + */ + + me->m_bBufferInUse=true ; + + /* convert buffer and send off to pipe */ + me->audio_buffer->Samples = pwhin->dwBytesRecorded / sizeof (short) / 2; + short *temp_buffer = (short *) pwhin->lpData; + + for (unsigned int i=0; i< (me->audio_buffer->Samples); i++) { + me->audio_buffer->Left[i] = temp_buffer[i*2] * short2float; + me->audio_buffer->Right[i] = temp_buffer[i*2+1] * short2float; + } + SetEvent(me->handle) ; + /** Hauptprozess mitteilen, da� er einen Datenblock verarbeiten kann + * wir verlassen aber die Callback Funktion trotzdem schonmal + * FIXME: Koennte hier eine Race-Condition auftreten ? + */ + + /* recycle buffer */ + rc = waveInPrepareHeader(hwin, pwhin, sizeof(WAVEHDR)); + if (rc == MMSYSERR_NOERROR) { + rc = waveInAddBuffer(hwin, pwhin, sizeof(WAVEHDR)); + me->waveInErrorMsg (rc, "waveInAddBuffer"); + } else { + me->waveInErrorMsg (rc, "waveInPrepareHeader"); + } + } +} + +void* MonitorAudioWin32::Thread() { + int rc; + + rc=InitDevice() ; + if ( rc < 0) { + FILE_LOG(logERROR) << "[WINMM] Error initializing PCM device " << pcm_name; + + return NULL ; + } + + /* prepare buffers */ + for (int i = 0; i < MAX_BUFFERS; i++) { + rc = waveInPrepareHeader(hwi, whin[i], sizeof(WAVEHDR)); + + // add buffers to the input queue + if (rc == MMSYSERR_NOERROR) { + rc = waveInAddBuffer(hwi, whin[i], sizeof(WAVEHDR)); + waveInErrorMsg (rc, "waveInAddBuffer"); + } else { + waveInErrorMsg (rc, "waveInPrepareHeader"); + } + } + + /* start waveIn */ + rc = waveInStart(hwi); + waveInErrorMsg (rc, "waveInStart"); + + /* check for ready buffers on every event */ + + JThread::ThreadStarted(); + run = true; + + while(run) { + int res = WaitForSingleObject(handle,1000); + if (res==WAIT_OBJECT_0) { + /** + * Wenn die Callbackfunktion den audio_buffer gefuellt hat + * schickt sie ein Event. + * Erst dann landen wir hier und verarbeiten dann auch den + * Audio_buffer + * Sinn dahinter ist, die Callbackfunktion schnell wieder zu + * verlassen + */ + ResetEvent(handle) ; + DataFromSoundIn(audio_buffer, m_pOwner); + m_bBufferInUse=false ; + } + } + + FILE_LOG(logINFO) << "stopping soundcard" ; + /* stop waveIn */ + waveInStop(hwi); + Sleep(1000) ; + FILE_LOG(logINFO) << "soundcard stopped" ; + + return NULL; +} + +void MonitorAudioWin32::waveInErrorMsg(MMRESULT result, std::string addstr) +{ + if (result != MMSYSERR_NOERROR) { + char errorbuffer[100]; + waveInGetErrorText (result, errorbuffer, 100); + FILE_LOG(logERROR) << "[WINMM] Error " << result << ":" << errorbuffer << " (" << addstr << ")" ; + } +} + +// vim: sw=4 ts=4 cindent diff --git a/monitord/win32/MonitorAudioWin32.h b/monitord/win32/MonitorAudioWin32.h new file mode 100644 index 0000000..1efa838 --- /dev/null +++ b/monitord/win32/MonitorAudioWin32.h @@ -0,0 +1,55 @@ +/* + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * ------------------------------------------------------------------------- */ + +#ifndef MONITORD_POSIX_MONITORAUDIOWIN32_H_ +#define MONITORD_POSIX_MONITORAUDIOWIN32_H_ + +#include + +#define MAX_BUFFERS 2 +#define DATABLOCK_SIZE 8192*4 + +class MonitorAudioWin32 : public MonitorAudio { + public: + MonitorAudioWin32(const std::string* = NULL, const tSamplerate = 0); + ~MonitorAudioWin32(); + + void Stop(); + bool Start(void* format=NULL); + + static void CALLBACK waveInProc( HWAVEIN hwi, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2 ); + + private: + bool run; + + int InitDevice(); + int CloseDevice(); + + void* Thread(); + + HWAVEIN hwi; + HANDLE handle; + LPWAVEHDR whin[MAX_BUFFERS]; + int next_buffer; + bool m_bBufferInUse ; + void waveInErrorMsg(MMRESULT result, std::string addstr); +}; + +#endif + +// vim: sw=4 ts=4 diff --git a/monitord/win32/MonitorService.cpp b/monitord/win32/MonitorService.cpp new file mode 100644 index 0000000..f1e45d5 --- /dev/null +++ b/monitord/win32/MonitorService.cpp @@ -0,0 +1,304 @@ +/** + * Windows Service Application f�r den Monitor, basierend auf + * http://weblogs.asp.net/kennykerr/archive/2004/05/18/134342.aspx + */ + +#include +#include +#include +#include "../convert.h" + + +#include "MonitorService.h" +#include "../MonitorLogging.h" + +#ifdef WIN32 + #define sleep Sleep +#endif + + +using namespace std ; + +MonitorService* MonitorService::m_service = 0; + +MonitorService::MonitorService(Monitor* monitor) +{ + m_handle = 0; + m_monitor = monitor; + m_service = this; + m_status.dwServiceType = SERVICE_WIN32_OWN_PROCESS; + m_status.dwCurrentState = SERVICE_START_PENDING; + m_status.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN; + + m_installServiceName="monitord" ; + m_installServiceDisplayName="monitord" ; +} + +MonitorService::~MonitorService() +{ +} + + +void MonitorService::Stop() +{ + m_service->UpdateState(SERVICE_STOP_PENDING); + m_monitor->m_bWantStop = true; + m_service->m_debugFile << "Warte auf beenden des monitord" << endl ; + m_monitor->m_SignalStopped->WaitForSignal() ; + Sleep(2000) ; + m_service->UpdateState(SERVICE_STOPPED); + m_service->m_debugFile << "monitord Signal empfangen" << endl ; + Sleep(1000) ; +} + + +/** + * Provides the main entry point for an executable that + * contains a single service. Loads the service into + * memory so it can be started. This method blocks until + * the service has stopped. + */ +void MonitorService::Run() +{ + assert (0 != m_service); + + SERVICE_TABLE_ENTRY serviceTable[] = + { + // Even though the service name is ignored for own process services, + // it must be a valid string and cannot be 0. + { "", (LPSERVICE_MAIN_FUNCTION)ServiceMain }, + + // Designates the end of table. + { 0, 0 } + }; + + if (!::StartServiceCtrlDispatcher(serviceTable)) + { + char msg[1024]; + snprintf (msg, 1024, "Fehler bei Dispatcher-Registrierung, siehe net helpmsg %ld", GetLastError()); + ThrowMonitorServiceException(msg); + } +} + +/** + * The starting point for the service. + * + * @param argc number of arguments in arguments + * @param argv array of string pointers containing the arguments + */ +void WINAPI MonitorService::ServiceMain(DWORD argc, PSTR* argv) +{ + // + // Since there's no way to inform the SCM of failure before a successful + // call to RegisterServiceCtrlHandler, if an error occurs before we have + // a service status handle we don't catch any exceptions and let the + // process terminate. The SCM will diligently log this event. + // + + FILE_LOG(logINFO) << "ServiceMain Startet" ; + assert (0 != m_service); + + if (1 != argc || 0 == argv || 0 == argv[0]) + { + // FIXME AtlThrow(E_INVALIDARG); + } + + m_service->m_serviceName = argv[0]; + m_service->m_handle = ::RegisterServiceCtrlHandler(m_service->m_serviceName.c_str(), Handler); + + if (0 == m_service->m_handle) + { + // FIXME AtlThrowLastWin32(); + //m_service->m_debugFile << "Handler registiert ?=N�" << endl ; + } + + m_service->UpdateState(SERVICE_START_PENDING); + sleep(100) ; + m_service->UpdateState(SERVICE_RUNNING); + + /** + * now we can call the m_monitor mainloop und wait until the SCM + * tells us to stop (via Handler) + */ + m_service->m_monitor->MainLoop(); + + m_service->Stop() ; +} + +/** + * The handler function called by the control dispatcher when an event occurs. + */ +void WINAPI MonitorService::Handler(DWORD control) +{ + #ifdef _DEBUG + FILE_LOG(logINFO) << "Handler: empfangen:" << control << ".." << m_service ; + #endif + //assert (0 == m_service); + switch (control) + { + case SERVICE_CONTROL_CONTINUE : + { + m_service->UpdateState(SERVICE_CONTINUE_PENDING); + //m_service->Start(control); + m_service->UpdateState(SERVICE_RUNNING); + break; + } + case SERVICE_CONTROL_PAUSE : + { + m_service->UpdateState(SERVICE_PAUSE_PENDING); + //m_service->Stop(); + m_service->UpdateState(SERVICE_PAUSED); + break; + } + case SERVICE_CONTROL_SHUTDOWN : + case SERVICE_CONTROL_STOP : + { + FILE_LOG(logINFO) << "ServiceMain stopping ... " ; + m_service->Stop(); + break; + } + } +} + + + +/** + * Updates the current state and exit code of the service + * and notifies the service control manager of the change. + */ +void MonitorService::UpdateState(DWORD state, HRESULT errorCode) +{ + #ifdef _DEBUG + FILE_LOG(logDEBUG) << "Updatestatus ..." ; + #endif + + //assert (0 != m_service); + m_status.dwCurrentState = state; + + + if (FAILED(errorCode)) + { + if (FACILITY_WIN32 == HRESULT_FACILITY(errorCode)) + { + m_status.dwWin32ExitCode = errorCode & ~0x80070000; + } + else + { + m_status.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR; + m_status.dwServiceSpecificExitCode = errorCode; + } + } + + if (!::SetServiceStatus(m_handle, + &m_status)) + { + // FIXME AtlThrowLastWin32(); + } + + FILE_LOG(logDEBUG) << "Updatestatus ... done" ; + +} + + +bool MonitorService::InstallService() +{ + // Get this exes full pathname + TCHAR szAppPath[_MAX_PATH]; + GetModuleFileName(NULL, szAppPath, _MAX_PATH); + + std::string sServiceCommandline ; + + sServiceCommandline=szAppPath ; + sServiceCommandline+=" --service" ; + + // Versuche die aktuell genutzte Configdatei als Parameter zu hinterlegen + if (m_monitor->m_MonitorConfig.m_ConfigFile == "monitord.xml") { + // default + TCHAR szConfigPath[_MAX_PATH]; + strncpy(szConfigPath,szAppPath,_MAX_PATH) ; + + char* pos=strrchr(szConfigPath, '\\') ; + if (pos) + { + *pos='\0' ; + string configFile=std::string(" -c ") + szConfigPath+"\\monitord.xml" ; + // << "configFile:" << configFile << endl ; + sServiceCommandline+=configFile ; + } + } else { + sServiceCommandline += std::string(" -c "); + sServiceCommandline += m_monitor->m_MonitorConfig.m_ConfigFile; + } + + + //Open up the SCM requesting Creation rights + SC_HANDLE hSCM = ::OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CREATE_SERVICE); + SC_HANDLE hService ; + + if (hSCM==NULL) + { + // FIXME: TRACE(_T("Failed in call to open SCM in Install, GetLastError:%d\n"), ::GetLastError()); + return FALSE; + } + + //Create the new service entry in the SCM database + hService = ::CreateService( hSCM, + m_installServiceName.c_str(), + m_installServiceDisplayName.c_str(), + 0, + SERVICE_WIN32_OWN_PROCESS, + SERVICE_DEMAND_START, + SERVICE_ERROR_IGNORE, + sServiceCommandline.c_str(), + NULL, + NULL, + NULL, + NULL, + NULL); + + + + if (hService == NULL) + { + //FIXME: + //TRACE(_T("Failed in call to CreateService in Create, GetLastError:%d\n"), ::GetLastError()); + } else + { + ::CloseServiceHandle(hService); + } + + if (hSCM!=NULL) + { + ::CloseServiceHandle(hSCM); + } + + return (hService != NULL); +} + +bool MonitorService::UnInstallService() +{ + bool bSuccess=false ; + + SC_HANDLE hSCM = ::OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT); + + if (hSCM==NULL) + { + // FIXME: TRACE(_T("Failed in call to open SCM in Install, GetLastError:%d\n"), ::GetLastError()); + return FALSE; + } + + + SC_HANDLE hService = ::OpenService(hSCM, m_installServiceName.c_str(), DELETE | SERVICE_STOP | SERVICE_QUERY_STATUS); + if (hService != NULL) + { + bSuccess = ::DeleteService(hService); + + ::CloseServiceHandle(hService); + } + if (hSCM!=NULL) + { + ::CloseServiceHandle(hSCM); + } + + return (bSuccess); +} diff --git a/monitord/win32/MonitorService.h b/monitord/win32/MonitorService.h new file mode 100644 index 0000000..502d20e --- /dev/null +++ b/monitord/win32/MonitorService.h @@ -0,0 +1,53 @@ +/** + * Windows Server f�r den Monitor, basierend auf http://weblogs.asp.net/kennykerr/archive/2004/05/18/134342.aspx + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "monitord/Monitor.h" + +using namespace std ; + +class MonitorServiceException : public std::runtime_error { + public: + MonitorServiceException(const std::string& s) + : std::runtime_error(s) + { } + }; + #define ThrowMonitorServiceException(err) throw( MonitorServiceException(std::string(__FILE__)+ std::string(" Zeile ") + convertIntToString(__LINE__) + std::string(": ") + std::string(err) )) + + +class MonitorService +{ +public: + MonitorService(Monitor* monitor); + virtual ~MonitorService() ; + + static void Run(); + void Stop(); + bool InstallService() ; + bool UnInstallService() ; + +private: + static void WINAPI Handler(DWORD control); + static void WINAPI ServiceMain(DWORD argumentCount, PSTR* arguments); + ofstream m_debugFile ; + void UpdateState(DWORD state, HRESULT errorCode = S_OK); + + Monitor* m_monitor; + + SERVICE_STATUS_HANDLE m_handle; + SERVICE_STATUS m_status; + + static MonitorService *m_service; + std::string m_serviceName; // Executed file (started from SCM) + std::string m_installServiceName ; // Shortname in SCM (NOT filename) + std::string m_installServiceDisplayName ; // Displayname SCN +}; diff --git a/monitord/xmltools.cpp b/monitord/xmltools.cpp new file mode 100644 index 0000000..9b045f2 --- /dev/null +++ b/monitord/xmltools.cpp @@ -0,0 +1,45 @@ +#include "xmltools.h" + +#include "convert.h" +#include + +using namespace std ; + +std::string getNodeText(XMLNode parent,std::string childName,std::string defaultValue, bool trim) +{ + XMLNode xNode ; + std::string returnValue ; + if (!((xNode=parent.getChildNode(childName.c_str())).isEmpty())) + { + returnValue=xNode.getText() ; + } else { + returnValue=defaultValue ; + } + + return returnValue; +} + +bool getNodeBool(XMLNode parent,std::string childName,bool defaultValue) +{ + int iDefault ; + iDefault = (defaultValue==true ? 1:0) ; + int temp=getNodeInt(parent,childName,iDefault) ; + return (temp!=0); +} + + +int getNodeInt(XMLNode parent,std::string childName,int defaultValue) +{ + int returnValue ; + std::string nodeText=getNodeText(parent,childName,"") ; + + try + { + returnValue=convertToInt(nodeText) ; + } + catch (BadConversion e) + { + returnValue=defaultValue ; + } + return returnValue; +} diff --git a/monitord/xmltools.h b/monitord/xmltools.h new file mode 100644 index 0000000..1964f93 --- /dev/null +++ b/monitord/xmltools.h @@ -0,0 +1,12 @@ +#ifndef XMLTOOLS_H_ +#define XMLTOOLS_H_ + +#include "../xmlParser/xmlParser.h" +#include + +int getNodeInt(XMLNode parent,std::string childName,int defaultValue) ; +std::string getNodeText(XMLNode parent,std::string childName,std::string defaultValue, bool trim=true) ; +bool getNodeBool(XMLNode parent,std::string childName,bool defaultValue); + + +#endif /*XMLTOOLS_H_*/ diff --git a/sample-config/.svn/all-wcprops b/sample-config/.svn/all-wcprops new file mode 100644 index 0000000..1a2f433 --- /dev/null +++ b/sample-config/.svn/all-wcprops @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/!svn/ver/442/monitor/trunk/sample-config +END +pluginfilter.lua +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/423/monitor/trunk/sample-config/pluginfilter.lua +END +monitord.xml.linux +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/442/monitor/trunk/sample-config/monitord.xml.linux +END +monitord_mysql_tables.sql +K 25 +svn:wc:ra_dav:version-url +V 67 +/!svn/ver/423/monitor/trunk/sample-config/monitord_mysql_tables.sql +END +monitord.xml.win32 +K 25 +svn:wc:ra_dav:version-url +V 60 +/!svn/ver/437/monitor/trunk/sample-config/monitord.xml.win32 +END +socketfilter.lua +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/423/monitor/trunk/sample-config/socketfilter.lua +END diff --git a/sample-config/.svn/entries b/sample-config/.svn/entries new file mode 100644 index 0000000..2e0390d --- /dev/null +++ b/sample-config/.svn/entries @@ -0,0 +1,198 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/sample-config +http://svn.monitord.de + + + +2011-02-17T16:41:19.331356Z +442 +mdi + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +pluginfilter.lua +file + + + + +2012-01-23T14:07:02.467497Z +9d00b6e496847400d0343d8987067232 +2010-04-05T00:00:59.662223Z +423 +mdi + + + + + + + + + + + + + + + + + + + + + +691 + +monitord.xml.linux +file + + + + +2012-01-23T14:07:02.470483Z +29c40f470b0a775387cbeca153db97c9 +2011-02-17T16:41:19.331356Z +442 +mdi + + + + + + + + + + + + + + + + + + + + + +5396 + +monitord_mysql_tables.sql +file + + + + +2012-01-23T14:07:02.470483Z +ae03c23e094aae0cebeffb10d8779203 +2010-04-05T00:00:59.662223Z +423 +mdi + + + + + + + + + + + + + + + + + + + + + +1533 + +monitord.xml.win32 +file + + + + +2012-01-23T14:07:02.470483Z +aab8b49f0bed14cfe2e5132237aa3a2a +2011-02-16T00:59:40.485529Z +437 +mdi + + + + + + + + + + + + + + + + + + + + + +5447 + +socketfilter.lua +file + + + + +2012-01-23T14:07:02.470483Z +efa454171e1689b04a35a11c6cda90c1 +2010-04-05T00:00:59.662223Z +423 +mdi + + + + + + + + + + + + + + + + + + + + + +2047 + diff --git a/sample-config/.svn/text-base/monitord.xml.linux.svn-base b/sample-config/.svn/text-base/monitord.xml.linux.svn-base new file mode 100644 index 0000000..feb82af --- /dev/null +++ b/sample-config/.svn/text-base/monitord.xml.linux.svn-base @@ -0,0 +1,171 @@ + + + Monitord + monitord.log + INFO + socketfilter.lua + pluginfilter.lua + + + test + test + + + crusader + pw + + + + + + 192.168.0.1 + 192.168.0.2 + 192.168.0.3 + 127.0.0.1 + any + any + + + + + * + 9333 + 9300 + 7778 + + + + /dev/dsp0 + + 1 + 22050 + Erste Sondkarte + + + + + + monitord/plugins/.libs/libmplugin_audiorecorder.so.0.0.0 + + rec/ + + + + + Kanal 1 + + 12 + 1 + 0 + 3 + + + 1 + 0 + + + 1 + 0 + + + + + + + + Kanal 2 + + + + + + /dev/dsp1 + 0 + 22050 + Zweite Sondkarte + + + Kanal 1 + + 8 + 1 + + + 1 + 0 + + + + + + + + + + + + + + plugins/libmplugin_mysql-0.dll + + mysql.log + DEBUG + localhost + 3306 + monitord + monitord + monitord + + 0 + /etc/mysql/ssl/ca-cert.pem + /etc/mysql/ssl/client-cert.pem + /etc/mysql/ssl/client-key.pem + + + + + monitord_fms
    + now() + statusdezimal + fmskennung + richtung + textuebertragung + tki + channelnum +
    + + + monitord_pocsag
    + now() + ric + sub + text + channelnum +
    + + + monitord_zvei
    + now() + weckton + zvei + text + channelnum +
    +
    + +
    +
    + +
    diff --git a/sample-config/.svn/text-base/monitord.xml.win32.svn-base b/sample-config/.svn/text-base/monitord.xml.win32.svn-base new file mode 100644 index 0000000..43a41be --- /dev/null +++ b/sample-config/.svn/text-base/monitord.xml.win32.svn-base @@ -0,0 +1,174 @@ + + + Monitord + monitord.log + INFO + socketfilter.lua + pluginfilter.lua + + + test + test + + + crusader + pw + + + + + + 192.168.0.1 + 192.168.0.2 + 192.168.0.3 + 127.0.0.1 + any + any + + + + + * + 9333 + 9300 + 7778 + + + + /dev/dsp0 + 1 + 22050 + Erste Sondkarte + + + + + + plugins/libmplugin_audiorecorder-0.dll + + audio.log + INFO + rec/ + + + + + Kanal 1 + + 12 + 1 + 1 + 3 + + + 1 + 0 + + + 1 + 0 + 1 + 3 + + + + + + + + Kanal 2 + + + + + + /dev/dsp1 + 0 + 22050 + Zweite Sondkarte + + + Kanal 1 + + 8 + 1 + + + 1 + 0 + + + + + + + + + + + + + + plugins/libmplugin_mysql-0.dll + + mysql.log + DEBUG + localhost + 3306 + monitord + monitord + monitord + + 0 + /etc/mysql/ssl/ca-cert.pem + /etc/mysql/ssl/client-cert.pem + /etc/mysql/ssl/client-key.pem + + + + + monitord_fms
    + now() + statusdezimal + fmskennung + richtung + textuebertragung + tki + channelnum +
    + + + monitord_pocsag
    + now() + ric + sub + text + channelnum +
    + + + monitord_zvei
    + now() + weckton + zvei + text + channelnum +
    +
    + +
    +
    + +
    diff --git a/sample-config/.svn/text-base/monitord_mysql_tables.sql.svn-base b/sample-config/.svn/text-base/monitord_mysql_tables.sql.svn-base new file mode 100644 index 0000000..50f5e09 --- /dev/null +++ b/sample-config/.svn/text-base/monitord_mysql_tables.sql.svn-base @@ -0,0 +1,34 @@ +DROP TABLE IF EXISTS `monitord_fms`; +CREATE TABLE `monitord_fms` ( + `id` int(11) NOT NULL auto_increment, + `uhrzeit` datetime NOT NULL, + `status` smallint(2) unsigned default NULL, + `kennung` varchar(9) collate latin1_german1_ci NOT NULL, + `richtung` char(10) collate latin1_german1_ci NOT NULL, + `text` varchar(255) collate latin1_german1_ci NOT NULL, + `tki` char(1) collate latin1_german1_ci NOT NULL default '', + `quelle` varchar(2) collate latin1_german1_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +DROP TABLE IF EXISTS `monitord_pocsag`; +CREATE TABLE `monitord_pocsag` ( + `id` int(10) unsigned NOT NULL auto_increment, + `uhrzeit` datetime NOT NULL, + `kennung` varchar(45) collate latin1_german1_ci NOT NULL, + `sub` varchar(45) collate latin1_german1_ci NOT NULL, + `text` varchar(500) collate latin1_german1_ci NOT NULL, + `quelle` tinyint(2) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +DROP TABLE IF EXISTS `monitord_zvei`; +CREATE TABLE `monitord_zvei` ( + `id` int(11) NOT NULL auto_increment, + `uhrzeit` datetime NOT NULL, + `kennung` varchar(5) collate latin1_german1_ci NOT NULL, + `typ` char(1) collate latin1_german1_ci NOT NULL, + `text` varchar(80) collate latin1_german1_ci NOT NULL, + `quelle` varchar(2) collate latin1_german1_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; \ No newline at end of file diff --git a/sample-config/.svn/text-base/pluginfilter.lua.svn-base b/sample-config/.svn/text-base/pluginfilter.lua.svn-base new file mode 100644 index 0000000..861b16e --- /dev/null +++ b/sample-config/.svn/text-base/pluginfilter.lua.svn-base @@ -0,0 +1,27 @@ +-- pluginfilter.lua + +-- +-- Filter f�r den SocketServer - wird pro aktiven Client aufgerufen +-- +-- Globales Array "arg" enth�lt die Daten vom Auswertermodul +-- +-- Zus�tzliche Werte im Array: +-- +-- plugin_name: z.B. mysql (aus monitord.xml) +-- +-- R�ckgabewert: 0 = an Client senden, 1= nicht an Client senden, alle anderen = an Client senden +-- + +local toShowZVEI = {"99000", "99001"} ; + +function pluginFilter() + if (arg["plugin_name"]=="mysql") then + for index,testwert in pairs(toShowZVEI) do + if (testwert==arg["zvei"]) then + return 0 + end + end + end + -- change return value in next line to "return 1" to enable filtering defined above! + return 0; +end diff --git a/sample-config/.svn/text-base/socketfilter.lua.svn-base b/sample-config/.svn/text-base/socketfilter.lua.svn-base new file mode 100644 index 0000000..3a5e437 --- /dev/null +++ b/sample-config/.svn/text-base/socketfilter.lua.svn-base @@ -0,0 +1,92 @@ +-- SocketFilter.lua + +-- +-- Filter f�r den SocketServer - wird pro aktiven Client aufgerufen +-- +-- Globales Array "arg" enth�lt die Daten vom Auswertermodul +-- +-- Zus�tzliche Werte im Array: +-- +-- client_authenticated: 0/1 (1=angemeldet) +-- client_ip: IP-Adresse des Clients +-- client_loginname: Anmeldename +-- client_type: fms32, crusader, monitord +-- +-- R�ckgabewert: 0 = an Client senden, 1= nicht an Client senden, alle anderen = an Client senden +-- + +local toShowFMS = {"11111111", "22222222"} ; +local toShowPOCSAG = {"1111111", "2222222"} ; +local toShowZVEI = {"99000", "99001"} ; + +function myfilterFMS32() + for index,testwert in pairs(toShowFMS) do + if (testwert==arg["ric"]) then + return 0 + end + end + return 1 ; +end + +function myfilterMONITORD() + -- ZVEI + if(arg["typ"] == "zvei") then + for index,testwert in pairs(toShowZVEI) do + if(testwert == arg["zvei"]) then + return 0 + end + end + end + + -- FMS + if(arg["typ"] == "fms") then + for index,testwert in pairs(toShowFMS) do + if(testwert == arg["fmskennung"]) then + return 0 + end + end + end + + -- POCSAG + if(arg["typ"] == "pocsag") then + for index,testwert in pairs(toShowPOCSAG) do + if(testwert == arg["ric"]) then + return 0 + end + end + end + + -- default: anzeige unterdruecken + return 1; +end + +function filter() + + local dummyValue=1 ; + + -- DEBUG-Info: Alles ausgeben + for index,testwert in pairs(arg) do + print(index) + print(testwert) + end + + -- wird f�r jedes Telegramm (pocsag, fms, zvei) aufgerufen + if (arg["client_type"]=="fms32") then + return 0; -- delete this line to enable and uncomment the next one! + -- return myfilterFMS32() ; + end + + if (arg["client_type"]=="crusader") then + -- nix + dummyValue=2 ; + end + + if (arg["client_type"]=="monitord") then + return 0; -- delete this line to enable and uncomment the next one! + -- return myfilterMONITORD() ; + end + + -- default: alles anzeigen; �ndern auf "1" um nichts anzuzeigen! + return 0; + +end diff --git a/sample-config/monitord.xml.linux b/sample-config/monitord.xml.linux new file mode 100644 index 0000000..feb82af --- /dev/null +++ b/sample-config/monitord.xml.linux @@ -0,0 +1,171 @@ + + + Monitord + monitord.log + INFO + socketfilter.lua + pluginfilter.lua + + + test + test + + + crusader + pw + + + + + + 192.168.0.1 + 192.168.0.2 + 192.168.0.3 + 127.0.0.1 + any + any + + + + + * + 9333 + 9300 + 7778 + + + + /dev/dsp0 + + 1 + 22050 + Erste Sondkarte + + + + + + monitord/plugins/.libs/libmplugin_audiorecorder.so.0.0.0 + + rec/ + + + + + Kanal 1 + + 12 + 1 + 0 + 3 + + + 1 + 0 + + + 1 + 0 + + + + + + + + Kanal 2 + + + + + + /dev/dsp1 + 0 + 22050 + Zweite Sondkarte + + + Kanal 1 + + 8 + 1 + + + 1 + 0 + + + + + + + + + + + + + + plugins/libmplugin_mysql-0.dll + + mysql.log + DEBUG + localhost + 3306 + monitord + monitord + monitord + + 0 + /etc/mysql/ssl/ca-cert.pem + /etc/mysql/ssl/client-cert.pem + /etc/mysql/ssl/client-key.pem + + + + + monitord_fms
    + now() + statusdezimal + fmskennung + richtung + textuebertragung + tki + channelnum +
    + + + monitord_pocsag
    + now() + ric + sub + text + channelnum +
    + + + monitord_zvei
    + now() + weckton + zvei + text + channelnum +
    +
    + +
    +
    + +
    diff --git a/sample-config/monitord.xml.win32 b/sample-config/monitord.xml.win32 new file mode 100644 index 0000000..43a41be --- /dev/null +++ b/sample-config/monitord.xml.win32 @@ -0,0 +1,174 @@ + + + Monitord + monitord.log + INFO + socketfilter.lua + pluginfilter.lua + + + test + test + + + crusader + pw + + + + + + 192.168.0.1 + 192.168.0.2 + 192.168.0.3 + 127.0.0.1 + any + any + + + + + * + 9333 + 9300 + 7778 + + + + /dev/dsp0 + 1 + 22050 + Erste Sondkarte + + + + + + plugins/libmplugin_audiorecorder-0.dll + + audio.log + INFO + rec/ + + + + + Kanal 1 + + 12 + 1 + 1 + 3 + + + 1 + 0 + + + 1 + 0 + 1 + 3 + + + + + + + + Kanal 2 + + + + + + /dev/dsp1 + 0 + 22050 + Zweite Sondkarte + + + Kanal 1 + + 8 + 1 + + + 1 + 0 + + + + + + + + + + + + + + plugins/libmplugin_mysql-0.dll + + mysql.log + DEBUG + localhost + 3306 + monitord + monitord + monitord + + 0 + /etc/mysql/ssl/ca-cert.pem + /etc/mysql/ssl/client-cert.pem + /etc/mysql/ssl/client-key.pem + + + + + monitord_fms
    + now() + statusdezimal + fmskennung + richtung + textuebertragung + tki + channelnum +
    + + + monitord_pocsag
    + now() + ric + sub + text + channelnum +
    + + + monitord_zvei
    + now() + weckton + zvei + text + channelnum +
    +
    + +
    +
    + +
    diff --git a/sample-config/monitord_mysql_tables.sql b/sample-config/monitord_mysql_tables.sql new file mode 100644 index 0000000..50f5e09 --- /dev/null +++ b/sample-config/monitord_mysql_tables.sql @@ -0,0 +1,34 @@ +DROP TABLE IF EXISTS `monitord_fms`; +CREATE TABLE `monitord_fms` ( + `id` int(11) NOT NULL auto_increment, + `uhrzeit` datetime NOT NULL, + `status` smallint(2) unsigned default NULL, + `kennung` varchar(9) collate latin1_german1_ci NOT NULL, + `richtung` char(10) collate latin1_german1_ci NOT NULL, + `text` varchar(255) collate latin1_german1_ci NOT NULL, + `tki` char(1) collate latin1_german1_ci NOT NULL default '', + `quelle` varchar(2) collate latin1_german1_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +DROP TABLE IF EXISTS `monitord_pocsag`; +CREATE TABLE `monitord_pocsag` ( + `id` int(10) unsigned NOT NULL auto_increment, + `uhrzeit` datetime NOT NULL, + `kennung` varchar(45) collate latin1_german1_ci NOT NULL, + `sub` varchar(45) collate latin1_german1_ci NOT NULL, + `text` varchar(500) collate latin1_german1_ci NOT NULL, + `quelle` tinyint(2) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +DROP TABLE IF EXISTS `monitord_zvei`; +CREATE TABLE `monitord_zvei` ( + `id` int(11) NOT NULL auto_increment, + `uhrzeit` datetime NOT NULL, + `kennung` varchar(5) collate latin1_german1_ci NOT NULL, + `typ` char(1) collate latin1_german1_ci NOT NULL, + `text` varchar(80) collate latin1_german1_ci NOT NULL, + `quelle` varchar(2) collate latin1_german1_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; \ No newline at end of file diff --git a/sample-config/pluginfilter.lua b/sample-config/pluginfilter.lua new file mode 100644 index 0000000..861b16e --- /dev/null +++ b/sample-config/pluginfilter.lua @@ -0,0 +1,27 @@ +-- pluginfilter.lua + +-- +-- Filter f�r den SocketServer - wird pro aktiven Client aufgerufen +-- +-- Globales Array "arg" enth�lt die Daten vom Auswertermodul +-- +-- Zus�tzliche Werte im Array: +-- +-- plugin_name: z.B. mysql (aus monitord.xml) +-- +-- R�ckgabewert: 0 = an Client senden, 1= nicht an Client senden, alle anderen = an Client senden +-- + +local toShowZVEI = {"99000", "99001"} ; + +function pluginFilter() + if (arg["plugin_name"]=="mysql") then + for index,testwert in pairs(toShowZVEI) do + if (testwert==arg["zvei"]) then + return 0 + end + end + end + -- change return value in next line to "return 1" to enable filtering defined above! + return 0; +end diff --git a/sample-config/socketfilter.lua b/sample-config/socketfilter.lua new file mode 100644 index 0000000..3a5e437 --- /dev/null +++ b/sample-config/socketfilter.lua @@ -0,0 +1,92 @@ +-- SocketFilter.lua + +-- +-- Filter f�r den SocketServer - wird pro aktiven Client aufgerufen +-- +-- Globales Array "arg" enth�lt die Daten vom Auswertermodul +-- +-- Zus�tzliche Werte im Array: +-- +-- client_authenticated: 0/1 (1=angemeldet) +-- client_ip: IP-Adresse des Clients +-- client_loginname: Anmeldename +-- client_type: fms32, crusader, monitord +-- +-- R�ckgabewert: 0 = an Client senden, 1= nicht an Client senden, alle anderen = an Client senden +-- + +local toShowFMS = {"11111111", "22222222"} ; +local toShowPOCSAG = {"1111111", "2222222"} ; +local toShowZVEI = {"99000", "99001"} ; + +function myfilterFMS32() + for index,testwert in pairs(toShowFMS) do + if (testwert==arg["ric"]) then + return 0 + end + end + return 1 ; +end + +function myfilterMONITORD() + -- ZVEI + if(arg["typ"] == "zvei") then + for index,testwert in pairs(toShowZVEI) do + if(testwert == arg["zvei"]) then + return 0 + end + end + end + + -- FMS + if(arg["typ"] == "fms") then + for index,testwert in pairs(toShowFMS) do + if(testwert == arg["fmskennung"]) then + return 0 + end + end + end + + -- POCSAG + if(arg["typ"] == "pocsag") then + for index,testwert in pairs(toShowPOCSAG) do + if(testwert == arg["ric"]) then + return 0 + end + end + end + + -- default: anzeige unterdruecken + return 1; +end + +function filter() + + local dummyValue=1 ; + + -- DEBUG-Info: Alles ausgeben + for index,testwert in pairs(arg) do + print(index) + print(testwert) + end + + -- wird f�r jedes Telegramm (pocsag, fms, zvei) aufgerufen + if (arg["client_type"]=="fms32") then + return 0; -- delete this line to enable and uncomment the next one! + -- return myfilterFMS32() ; + end + + if (arg["client_type"]=="crusader") then + -- nix + dummyValue=2 ; + end + + if (arg["client_type"]=="monitord") then + return 0; -- delete this line to enable and uncomment the next one! + -- return myfilterMONITORD() ; + end + + -- default: alles anzeigen; �ndern auf "1" um nichts anzuzeigen! + return 0; + +end diff --git a/simpleopt/.svn/all-wcprops b/simpleopt/.svn/all-wcprops new file mode 100644 index 0000000..7982d98 --- /dev/null +++ b/simpleopt/.svn/all-wcprops @@ -0,0 +1,107 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/321/monitor/trunk/simpleopt +END +SimpleGlob.h +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/321/monitor/trunk/simpleopt/SimpleGlob.h +END +fullSample.cpp +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/simpleopt/fullSample.cpp +END +basicSample.vcproj +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/173/monitor/trunk/simpleopt/basicSample.vcproj +END +globSample.vcproj +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/173/monitor/trunk/simpleopt/globSample.vcproj +END +runtests.cmd +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/321/monitor/trunk/simpleopt/runtests.cmd +END +fullSample.dsp +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/simpleopt/fullSample.dsp +END +simpleopt.doxy +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/simpleopt/simpleopt.doxy +END +SimpleOpt.h +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/321/monitor/trunk/simpleopt/SimpleOpt.h +END +basicSample.cpp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/simpleopt/basicSample.cpp +END +runtests.txt +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/321/monitor/trunk/simpleopt/runtests.txt +END +globSample.cpp +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/simpleopt/globSample.cpp +END +fullSample.vcproj +K 25 +svn:wc:ra_dav:version-url +V 55 +/!svn/ver/173/monitor/trunk/simpleopt/fullSample.vcproj +END +SimpleOpt.sln +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/simpleopt/SimpleOpt.sln +END +basicSample.dsp +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/173/monitor/trunk/simpleopt/basicSample.dsp +END +SimpleOpt.dsw +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/simpleopt/SimpleOpt.dsw +END +globSample.dsp +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/173/monitor/trunk/simpleopt/globSample.dsp +END +Makefile +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/173/monitor/trunk/simpleopt/Makefile +END diff --git a/simpleopt/.svn/entries b/simpleopt/.svn/entries new file mode 100644 index 0000000..86e31f3 --- /dev/null +++ b/simpleopt/.svn/entries @@ -0,0 +1,606 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/simpleopt +http://svn.monitord.de + + + +2008-07-23T18:11:49.877019Z +321 +dekarl + + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +SimpleGlob.h +file + + + + +2012-01-23T14:07:04.995633Z +2204095d0f7bff63e4489bd200018433 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +27279 + +fullSample.cpp +file + + + + +2012-01-23T14:07:04.996494Z +2e1c153f358fec27518eafd6bed9d964 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +9253 + +basicSample.vcproj +file + + + + +2012-01-23T14:07:04.996494Z +1a74e6fd42dfea121525ec1f5dac4f97 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +6009 + +globSample.vcproj +file + + + + +2012-01-23T14:07:04.996494Z +4b1b5d2a242be500efcae7cdc0bd8845 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +5993 + +runtests.cmd +file + + + + +2012-01-23T14:07:04.997491Z +b73fd3607d6b07ac4c007dad1a7fb3cf +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +2269 + +fullSample.dsp +file + + + + +2012-01-23T14:07:04.997491Z +c9d0e8e379f1989bbf7cc01c67cd28ec +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +7592 + +simpleopt.doxy +file + + + + +2012-01-23T14:07:04.997491Z +bdc482ade3b7fbf7fe9a0d3e0cef08e2 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +53713 + +SimpleOpt.h +file + + + + +2012-01-23T14:07:05.011492Z +26630cd547e2299358d54168b24e52a0 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +31850 + +basicSample.cpp +file + + + + +2012-01-23T14:07:05.011492Z +7de629109c9cbbdcabc53813594cba60 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4361 + +runtests.txt +file + + + + +2012-01-23T14:07:05.012490Z +58cb16e40af83dc5699e008e900e370e +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4935 + +globSample.cpp +file + + + + +2012-01-23T14:07:05.012490Z +fbeaa3c4be9d51b0f6ffe3b24a8943ae +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4678 + +fullSample.vcproj +file + + + + +2012-01-23T14:07:05.012490Z +43bc9da7f035e1fef438c5d5bfaaf1a4 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +5993 + +SimpleOpt.sln +file + + + + +2012-01-23T14:07:05.012490Z +08391e390a86fd50552634ab7e074190 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +3147 + +basicSample.dsp +file + + + + +2012-01-23T14:07:05.016492Z +5ca4859e7d88d5ef91949ee8ac224e38 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +7626 + +SimpleOpt.dsw +file + + + + +2012-01-23T14:07:05.016492Z +34fc180beb206f3f495ba705004a5d60 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +935 + +globSample.dsp +file + + + + +2012-01-23T14:07:05.016492Z +f1172e90a1b60e3c9170acf041be3158 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +7592 + +Makefile +file + + + + +2012-01-23T14:07:05.017495Z +a6dd6afc3620f70e4b0ed39de0b623e9 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +378 + diff --git a/simpleopt/.svn/prop-base/SimpleGlob.h.svn-base b/simpleopt/.svn/prop-base/SimpleGlob.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/simpleopt/.svn/prop-base/SimpleGlob.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/simpleopt/.svn/prop-base/SimpleOpt.h.svn-base b/simpleopt/.svn/prop-base/SimpleOpt.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/simpleopt/.svn/prop-base/SimpleOpt.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/simpleopt/.svn/prop-base/runtests.cmd.svn-base b/simpleopt/.svn/prop-base/runtests.cmd.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/simpleopt/.svn/prop-base/runtests.cmd.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/simpleopt/.svn/prop-base/runtests.txt.svn-base b/simpleopt/.svn/prop-base/runtests.txt.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/simpleopt/.svn/prop-base/runtests.txt.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/simpleopt/.svn/text-base/Makefile.svn-base b/simpleopt/.svn/text-base/Makefile.svn-base new file mode 100644 index 0000000..2372d9a --- /dev/null +++ b/simpleopt/.svn/text-base/Makefile.svn-base @@ -0,0 +1,17 @@ +CC=g++ +CFLAGS=-Wall +CPPFLAGS=-Wall + +OBJS=fullSample.o basicSample.o globSample.o + +all: $(OBJS) + $(CC) -o globSample globSample.o + $(CC) -o basicSample basicSample.o + $(CC) -o fullSample fullSample.o + +clean: + rm -f core *.o fullSample basicSample globSample + +globSample.o: SimpleOpt.h SimpleGlob.h +fullSample.o: SimpleOpt.h SimpleGlob.h +basicSample.o: SimpleOpt.h SimpleGlob.h diff --git a/simpleopt/.svn/text-base/SimpleGlob.h.svn-base b/simpleopt/.svn/text-base/SimpleGlob.h.svn-base new file mode 100644 index 0000000..0ed1946 --- /dev/null +++ b/simpleopt/.svn/text-base/SimpleGlob.h.svn-base @@ -0,0 +1,849 @@ +/*! @file SimpleGlob.h + + @version 2.8 + + @brief A cross-platform file globbing library providing the ability to + expand wildcards in command-line arguments to a list of all matching files. + It is designed explicitly to be portable to any platform and has been tested on + Windows and Linux. See CSimpleGlobTempl for the class definition. + + @section features FEATURES + + - MIT Licence allows free use in all software (including GPL and commercial) + - multi-platform (Windows 95/98/ME/NT/2K/XP, Linux, Unix) + - supports most of the standard linux glob() options + - recognition of a forward paths as equivalent to a backward slash on Windows. + e.g. "c:/path/foo*" is equivalent to "c:\path\foo*". + - implemented with only a single C++ header file + - char, wchar_t and Windows TCHAR in the same program + - complete working examples included + - compiles cleanly at warning level 4 (Windows/VC.NET 2003), warning level + 3 (Windows/VC6) and -Wall (Linux/gcc) + + @section usage USAGE + + The SimpleGlob class is used by following these steps: + +
      +
    1. Include the SimpleGlob.h header file + +
      +        \#include "SimpleGlob.h"
      +        
      + +
    2. Instantiate a CSimpleGlob object supplying the appropriate flags. + +
      +        @link CSimpleGlobTempl CSimpleGlob @endlink glob(FLAGS);
      +        
      + +
    3. Add all file specifications to the glob class. + +
      +        glob.Add("file*");
      +        glob.Add(argc, argv);
      +        
      + +
    4. Process all files with File(), Files() and FileCount() + +
      +        for (int n = 0; n < glob.FileCount(); ++n) {
      +            ProcessFile(glob.File(n));
      +        }
      +        
      + +
    + + @section licence MIT LICENCE + + The licence text below is the boilerplate "MIT Licence" used from: + http://www.opensource.org/licenses/mit-license.php + + Copyright (c) 2006-2007, Brodie Thiesfield + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is furnished + to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef INCLUDED_SimpleGlob +#define INCLUDED_SimpleGlob + +/*! @brief The operation of SimpleGlob is fine-tuned via the use of a combination + of the following flags. + + The flags may be passed at initialization of the class and used for every + filespec added, or alternatively they may optionally be specified in the + call to Add() and be different for each filespec. + + @param SG_GLOB_ERR + Return upon read error (e.g. directory does not have read permission) + + @param SG_GLOB_MARK + Append a slash (backslash in Windows) to every path which corresponds + to a directory + + @param SG_GLOB_NOSORT + By default, files are returned in sorted into string order. With this + flag, no sorting is done. This is not compatible with SG_GLOB_FULLSORT. + + @param SG_GLOB_FULLSORT + By default, files are sorted in groups belonging to each filespec that + was added. For example if the filespec "b*" was added before the filespec + "a*" then the argv array will contain all b* files sorted in order, + followed by all a* files sorted in order. If this flag is specified, the + entire array will be sorted ignoring the filespec groups. + + @param SG_GLOB_NOCHECK + If the pattern doesn't match anything, return the original pattern. + + @param SG_GLOB_TILDE + Tilde expansion is carried out (on Unix platforms) + + @param SG_GLOB_ONLYDIR + Return only directories which match (not compatible with SG_GLOB_ONLYFILE) + + @param SG_GLOB_ONLYFILE + Return only files which match (not compatible with SG_GLOB_ONLYDIR) + + @param SG_GLOB_NODOT + Do not return the "." or ".." special directories. + */ +enum SG_Flags { + SG_GLOB_ERR = 1 << 0, + SG_GLOB_MARK = 1 << 1, + SG_GLOB_NOSORT = 1 << 2, + SG_GLOB_NOCHECK = 1 << 3, + SG_GLOB_TILDE = 1 << 4, + SG_GLOB_ONLYDIR = 1 << 5, + SG_GLOB_ONLYFILE = 1 << 6, + SG_GLOB_NODOT = 1 << 7, + SG_GLOB_FULLSORT = 1 << 8 +}; + +/*! @brief Error return codes */ +enum SG_Error { + SG_SUCCESS = 0, + SG_ERR_NOMATCH = 1, + SG_ERR_MEMORY = -1, + SG_ERR_FAILURE = -2 +}; + +// ---------------------------------------------------------------------------- +// Platform dependent implementations + +// don't include this in documentation as it isn't relevant +#ifndef DOXYGEN + +// on Windows we want to use MBCS aware string functions and mimic the +// Unix glob functionality. On Unix we just use glob. +#ifdef _WIN32 +# include +# define sg_strchr ::_mbschr +# define sg_strrchr ::_mbsrchr +# define sg_strlen ::_mbslen +# if __STDC_WANT_SECURE_LIB__ +# define sg_strcpy_s(a,n,b) ::_mbscpy_s(a,n,b) +# else +# define sg_strcpy_s(a,n,b) ::_mbscpy(a,b) +# endif +# define sg_strcmp ::_mbscmp +# define sg_strcasecmp ::_mbsicmp +# define SOCHAR_T unsigned char +#else +# include +# include +# include +# include +# define MAX_PATH PATH_MAX +# define sg_strchr ::strchr +# define sg_strrchr ::strrchr +# define sg_strlen ::strlen +# define sg_strcpy_s(a,n,b) ::strcpy(a,b) +# define sg_strcmp ::strcmp +# define sg_strcasecmp ::strcasecmp +# define SOCHAR_T char +#endif + +#include +#include +#include + +// use assertions to test the input data +#ifdef _DEBUG +// FIXME: again +//# ifdef _WIN32 +//# include +//# define SG_ASSERT(b) _ASSERTE(b) +//# else +# include +# define SG_ASSERT(b) assert(b) +//# endif +#else +# define SG_ASSERT(b) +#endif + +/*! @brief String manipulation functions. */ +class SimpleGlobUtil +{ +public: + static const char * strchr(const char *s, char c) { + return (char *) sg_strchr((const SOCHAR_T *)s, c); + } + static const wchar_t * strchr(const wchar_t *s, wchar_t c) { + return ::wcschr(s, c); + } + + static const char * strrchr(const char *s, char c) { + return (char *) sg_strrchr((const SOCHAR_T *)s, c); + } + static const wchar_t * strrchr(const wchar_t *s, wchar_t c) { + return ::wcsrchr(s, c); + } + + // Note: char strlen returns number of bytes, not characters + static size_t strlen(const char *s) { return ::strlen(s); } + static size_t strlen(const wchar_t *s) { return ::wcslen(s); } + + static void strcpy_s(char *dst, size_t n, const char *src) { + (void) n; + sg_strcpy_s((SOCHAR_T *)dst, n, (const SOCHAR_T *)src); + } + static void strcpy_s(wchar_t *dst, size_t n, const wchar_t *src) { +# if __STDC_WANT_SECURE_LIB__ + ::wcscpy_s(dst, n, src); +#else + (void) n; + ::wcscpy(dst, src); +#endif + } + + static int strcmp(const char *s1, const char *s2) { + return sg_strcmp((const SOCHAR_T *)s1, (const SOCHAR_T *)s2); + } + static int strcmp(const wchar_t *s1, const wchar_t *s2) { + return ::wcscmp(s1, s2); + } + + static int strcasecmp(const char *s1, const char *s2) { + return sg_strcasecmp((const SOCHAR_T *)s1, (const SOCHAR_T *)s2); + } +#if _WIN32 + static int strcasecmp(const wchar_t *s1, const wchar_t *s2) { + return ::_wcsicmp(s1, s2); + } +#endif // _WIN32 +}; + +enum SG_FileType { + SG_FILETYPE_INVALID, + SG_FILETYPE_FILE, + SG_FILETYPE_DIR +}; + +#ifdef _WIN32 + +#ifndef INVALID_FILE_ATTRIBUTES +# define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#endif + +#define SG_PATH_CHAR '\\' + +/*! @brief Windows glob implementation. */ +template +struct SimpleGlobBase +{ + SimpleGlobBase() : m_hFind(INVALID_HANDLE_VALUE) { } + + int FindFirstFileS(const char * a_pszFileSpec, unsigned int) { + m_hFind = FindFirstFileA(a_pszFileSpec, &m_oFindDataA); + if (m_hFind != INVALID_HANDLE_VALUE) { + return SG_SUCCESS; + } + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_FILE_NOT_FOUND) { + return SG_ERR_NOMATCH; + } + return SG_ERR_FAILURE; + } + int FindFirstFileS(const wchar_t * a_pszFileSpec, unsigned int) { + m_hFind = FindFirstFileW(a_pszFileSpec, &m_oFindDataW); + if (m_hFind != INVALID_HANDLE_VALUE) { + return SG_SUCCESS; + } + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_FILE_NOT_FOUND) { + return SG_ERR_NOMATCH; + } + return SG_ERR_FAILURE; + } + + bool FindNextFileS(char) { + return FindNextFileA(m_hFind, &m_oFindDataA) != FALSE; + } + bool FindNextFileS(wchar_t) { + return FindNextFileW(m_hFind, &m_oFindDataW) != FALSE; + } + + void FindDone() { + FindClose(m_hFind); + } + + const char * GetFileNameS(char) const { + return m_oFindDataA.cFileName; + } + const wchar_t * GetFileNameS(wchar_t) const { + return m_oFindDataW.cFileName; + } + + bool IsDirS(char) const { + return GetFileTypeS(m_oFindDataA.dwFileAttributes) == SG_FILETYPE_DIR; + } + bool IsDirS(wchar_t) const { + return GetFileTypeS(m_oFindDataW.dwFileAttributes) == SG_FILETYPE_DIR; + } + + SG_FileType GetFileTypeS(const char * a_pszPath) { + return GetFileTypeS(GetFileAttributesA(a_pszPath)); + } + SG_FileType GetFileTypeS(const wchar_t * a_pszPath) { + return GetFileTypeS(GetFileAttributesW(a_pszPath)); + } + SG_FileType GetFileTypeS(DWORD a_dwAttribs) const { + if (a_dwAttribs == INVALID_FILE_ATTRIBUTES) { + return SG_FILETYPE_INVALID; + } + if (a_dwAttribs & FILE_ATTRIBUTE_DIRECTORY) { + return SG_FILETYPE_DIR; + } + return SG_FILETYPE_FILE; + } + +private: + HANDLE m_hFind; + WIN32_FIND_DATAA m_oFindDataA; + WIN32_FIND_DATAW m_oFindDataW; +}; + +#else // !_WIN32 + +#define SG_PATH_CHAR '/' + +/*! @brief Unix glob implementation. */ +template +struct SimpleGlobBase +{ + SimpleGlobBase() { + memset(&m_glob, 0, sizeof(m_glob)); + m_uiCurr = (size_t)-1; + } + + ~SimpleGlobBase() { + globfree(&m_glob); + } + + void FilePrep() { + m_bIsDir = false; + size_t len = strlen(m_glob.gl_pathv[m_uiCurr]); + if (m_glob.gl_pathv[m_uiCurr][len-1] == '/') { + m_bIsDir = true; + m_glob.gl_pathv[m_uiCurr][len-1] = 0; + } + } + + int FindFirstFileS(const char * a_pszFileSpec, unsigned int a_uiFlags) { + int nFlags = GLOB_MARK | GLOB_NOSORT; + if (a_uiFlags & SG_GLOB_ERR) nFlags |= GLOB_ERR; + if (a_uiFlags & SG_GLOB_TILDE) nFlags |= GLOB_TILDE; + int rc = glob(a_pszFileSpec, nFlags, NULL, &m_glob); + if (rc == GLOB_NOSPACE) return SG_ERR_MEMORY; + if (rc == GLOB_ABORTED) return SG_ERR_FAILURE; + if (rc == GLOB_NOMATCH) return SG_ERR_NOMATCH; + m_uiCurr = 0; + FilePrep(); + return SG_SUCCESS; + } + + bool FindNextFileS(char) { + SG_ASSERT(m_uiCurr != (size_t)-1); + if (++m_uiCurr >= m_glob.gl_pathc) { + return false; + } + FilePrep(); + return true; + } + + void FindDone() { + globfree(&m_glob); + memset(&m_glob, 0, sizeof(m_glob)); + m_uiCurr = (size_t)-1; + } + + const char * GetFileNameS(char) const { + SG_ASSERT(m_uiCurr != (size_t)-1); + return m_glob.gl_pathv[m_uiCurr]; + } + + bool IsDirS(char) const { + SG_ASSERT(m_uiCurr != (size_t)-1); + return m_bIsDir; + } + + SG_FileType GetFileTypeS(const char * a_pszPath) const { + struct stat sb; + if (0 != stat(a_pszPath, &sb)) { + return SG_FILETYPE_INVALID; + } + if (S_ISDIR(sb.st_mode)) { + return SG_FILETYPE_DIR; + } + if (S_ISREG(sb.st_mode)) { + return SG_FILETYPE_FILE; + } + return SG_FILETYPE_INVALID; + } + +private: + glob_t m_glob; + size_t m_uiCurr; + bool m_bIsDir; +}; + +#endif // _WIN32 + +#endif // DOXYGEN + +// --------------------------------------------------------------------------- +// MAIN TEMPLATE CLASS +// --------------------------------------------------------------------------- + +/*! @brief Implementation of the SimpleGlob class */ +template +class CSimpleGlobTempl : private SimpleGlobBase +{ +public: + /*! @brief Initialize the class. + + @param a_uiFlags Combination of SG_GLOB flags. + @param a_nReservedSlots Number of slots in the argv array that + should be reserved. In the returned array these slots + argv[0] ... argv[a_nReservedSlots-1] will be left empty for + the caller to fill in. + */ + CSimpleGlobTempl(unsigned int a_uiFlags = 0, int a_nReservedSlots = 0); + + /*! @brief Deallocate all memory buffers. */ + ~CSimpleGlobTempl(); + + /*! @brief Initialize (or re-initialize) the class in preparation for + adding new filespecs. + + All existing files are cleared. Note that allocated memory is only + deallocated at object destruction. + + @param a_uiFlags Combination of SG_GLOB flags. + @param a_nReservedSlots Number of slots in the argv array that + should be reserved. In the returned array these slots + argv[0] ... argv[a_nReservedSlots-1] will be left empty for + the caller to fill in. + */ + int Init(unsigned int a_uiFlags = 0, int a_nReservedSlots = 0); + + /*! @brief Add a new filespec to the glob. + + The filesystem will be immediately scanned for all matching files and + directories and they will be added to the glob. + + @param a_pszFileSpec Filespec to add to the glob. + + @return SG_SUCCESS Matching files were added to the glob. + @return SG_ERR_NOMATCH Nothing matched the pattern. To ignore this error + compare the return value to >= SG_SUCCESS. + @return SG_ERR_MEMORY Out of memory failure. + @return SG_ERR_FAILURE General failure. + */ + int Add(const SOCHAR *a_pszFileSpec); + + /*! @brief Add an array of filespec to the glob. + + The filesystem will be immediately scanned for all matching files and + directories in each filespec and they will be added to the glob. + + @param a_nCount Number of filespec in the array. + @param a_rgpszFileSpec Array of filespec to add to the glob. + + @return SG_SUCCESS Matching files were added to the glob. + @return SG_ERR_NOMATCH Nothing matched the pattern. To ignore this error + compare the return value to >= SG_SUCCESS. + @return SG_ERR_MEMORY Out of memory failure. + @return SG_ERR_FAILURE General failure. + */ + int Add(int a_nCount, const SOCHAR * const * a_rgpszFileSpec); + + /*! @brief Return the number of files in the argv array. + */ + inline int FileCount() const { return m_nArgsLen; } + + /*! @brief Return the full argv array. */ + inline SOCHAR ** Files() { + SetArgvArrayType(POINTERS); + return m_rgpArgs; + } + + /*! @brief Return the a single file. */ + inline SOCHAR * File(int n) { + SG_ASSERT(n >= 0 && n < m_nArgsLen); + return Files()[n]; + } + +private: + /*! @brief The argv array has it's members stored as either an offset into + the string buffer, or as pointers to their string in the buffer. The offsets + are used because if the string buffer is dynamically resized, all pointers + into that buffer would become invalid. + */ + enum ARG_ARRAY_TYPE { OFFSETS, POINTERS }; + + /*! @brief Change the type of data stored in the argv array. */ + void SetArgvArrayType(ARG_ARRAY_TYPE a_nNewType); + + /*! @brief Add a filename to the array if it passes all requirements. */ + int AppendName(const SOCHAR *a_pszFileName, bool a_bIsDir); + + /*! @brief Grow the argv array to the required size. */ + bool GrowArgvArray(int a_nNewLen); + + /*! @brief Grow the string buffer to the required size. */ + bool GrowStringBuffer(size_t a_uiMinSize); + + /*! @brief Compare two (possible NULL) strings */ + static int fileSortCompare(const void *a1, const void *a2); + +private: + unsigned int m_uiFlags; + ARG_ARRAY_TYPE m_nArgArrayType; //!< is the argv array storing indexes or pointers + SOCHAR ** m_rgpArgs; //!< argv array + int m_nReservedSlots; //!< number of client reserved slots in the argv array + int m_nArgsSize; //!< allocated size of array + int m_nArgsLen; //!< used length + SOCHAR * m_pBuffer; //!< argv string buffer + size_t m_uiBufferSize; //!< allocated size of buffer + size_t m_uiBufferLen; //!< used length of buffer + SOCHAR m_szPathPrefix[MAX_PATH]; //!< path prefix of any wildcard filenames +}; + +// --------------------------------------------------------------------------- +// IMPLEMENTATION +// --------------------------------------------------------------------------- + +template +CSimpleGlobTempl::CSimpleGlobTempl( + unsigned int a_uiFlags, + int a_nReservedSlots + ) +{ + m_rgpArgs = NULL; + m_nArgsSize = 0; + m_pBuffer = NULL; + m_uiBufferSize = 0; + + Init(a_uiFlags, a_nReservedSlots); +} + +template +CSimpleGlobTempl::~CSimpleGlobTempl() +{ + if (m_rgpArgs) free(m_rgpArgs); + if (m_pBuffer) free(m_pBuffer); +} + +template +int +CSimpleGlobTempl::Init( + unsigned int a_uiFlags, + int a_nReservedSlots + ) +{ + m_nArgArrayType = POINTERS; + m_uiFlags = a_uiFlags; + m_nArgsLen = a_nReservedSlots; + m_nReservedSlots = a_nReservedSlots; + m_uiBufferLen = 0; + + if (m_nReservedSlots > 0) { + if (!GrowArgvArray(m_nReservedSlots)) { + return SG_ERR_MEMORY; + } + for (int n = 0; n < m_nReservedSlots; ++n) { + m_rgpArgs[n] = NULL; + } + } + + return SG_SUCCESS; +} + +template +int +CSimpleGlobTempl::Add( + const SOCHAR *a_pszFileSpec + ) +{ +#ifdef _WIN32 + // Windows FindFirst/FindNext recognizes forward slash as the same as backward slash + // and follows the directories. We need to do the same when calculating the prefix + // and when we have no wildcards. + SOCHAR szFileSpec[MAX_PATH]; + SimpleGlobUtil::strcpy_s(szFileSpec, MAX_PATH, a_pszFileSpec); + const SOCHAR * pszPath = SimpleGlobUtil::strchr(szFileSpec, '/'); + while (pszPath) { + szFileSpec[pszPath - szFileSpec] = SG_PATH_CHAR; + pszPath = SimpleGlobUtil::strchr(pszPath + 1, '/'); + } + a_pszFileSpec = szFileSpec; +#endif + + // if this doesn't contain wildcards then we can just add it directly + m_szPathPrefix[0] = 0; + if (!SimpleGlobUtil::strchr(a_pszFileSpec, '*') && + !SimpleGlobUtil::strchr(a_pszFileSpec, '?')) + { + SG_FileType nType = GetFileTypeS(a_pszFileSpec); + if (nType == SG_FILETYPE_INVALID) { + if (m_uiFlags & SG_GLOB_NOCHECK) { + return AppendName(a_pszFileSpec, false); + } + return SG_ERR_NOMATCH; + } + return AppendName(a_pszFileSpec, nType == SG_FILETYPE_DIR); + } + +#ifdef _WIN32 + // Windows doesn't return the directory with the filename, so we need to extract the + // path from the search string ourselves and prefix it to the filename we get back. + const SOCHAR * pszFilename = SimpleGlobUtil::strrchr(a_pszFileSpec, SG_PATH_CHAR); + if (pszFilename) { + SimpleGlobUtil::strcpy_s(m_szPathPrefix, MAX_PATH, a_pszFileSpec); + m_szPathPrefix[pszFilename - a_pszFileSpec + 1] = 0; + } +#endif + + // search for the first match on the file + int rc = FindFirstFileS(a_pszFileSpec, m_uiFlags); + if (rc != SG_SUCCESS) { + if (rc == SG_ERR_NOMATCH && (m_uiFlags & SG_GLOB_NOCHECK)) { + int ok = AppendName(a_pszFileSpec, false); + if (ok != SG_SUCCESS) rc = ok; + } + return rc; + } + + // add it and find all subsequent matches + int nError, nStartLen = m_nArgsLen; + bool bSuccess; + do { + nError = AppendName(GetFileNameS((SOCHAR)0), IsDirS((SOCHAR)0)); + bSuccess = FindNextFileS((SOCHAR)0); + } + while (nError == SG_SUCCESS && bSuccess); + SimpleGlobBase::FindDone(); + + // sort these files if required + if (m_nArgsLen > nStartLen && !(m_uiFlags & SG_GLOB_NOSORT)) { + if (m_uiFlags & SG_GLOB_FULLSORT) { + nStartLen = m_nReservedSlots; + } + SetArgvArrayType(POINTERS); + qsort( + m_rgpArgs + nStartLen, + m_nArgsLen - nStartLen, + sizeof(m_rgpArgs[0]), fileSortCompare); + } + + return nError; +} + +template +int +CSimpleGlobTempl::Add( + int a_nCount, + const SOCHAR * const * a_rgpszFileSpec + ) +{ + int nResult; + for (int n = 0; n < a_nCount; ++n) { + nResult = Add(a_rgpszFileSpec[n]); + if (nResult != SG_SUCCESS) { + return nResult; + } + } + return SG_SUCCESS; +} + +template +int +CSimpleGlobTempl::AppendName( + const SOCHAR * a_pszFileName, + bool a_bIsDir + ) +{ + // we need the argv array as offsets in case we resize it + SetArgvArrayType(OFFSETS); + + // check for special cases which cause us to ignore this entry + if ((m_uiFlags & SG_GLOB_ONLYDIR) && !a_bIsDir) { + return SG_SUCCESS; + } + if ((m_uiFlags & SG_GLOB_ONLYFILE) && a_bIsDir) { + return SG_SUCCESS; + } + if ((m_uiFlags & SG_GLOB_NODOT) && a_bIsDir) { + if (a_pszFileName[0] == '.') { + if (a_pszFileName[1] == '\0') { + return SG_SUCCESS; + } + if (a_pszFileName[1] == '.' && a_pszFileName[2] == '\0') { + return SG_SUCCESS; + } + } + } + + // ensure that we have enough room in the argv array + if (!GrowArgvArray(m_nArgsLen + 1)) { + return SG_ERR_MEMORY; + } + + // ensure that we have enough room in the string buffer + size_t uiPrefixLen = SimpleGlobUtil::strlen(m_szPathPrefix); + size_t uiLen = uiPrefixLen + SimpleGlobUtil::strlen(a_pszFileName) + 1; // + null character + if (a_bIsDir && (m_uiFlags & SG_GLOB_MARK) == SG_GLOB_MARK) { + ++uiLen; // need space for the backslash + } + if (!GrowStringBuffer(m_uiBufferLen + uiLen)) { + return SG_ERR_MEMORY; + } + + // add this entry + m_rgpArgs[m_nArgsLen++] = (SOCHAR*)m_uiBufferLen; // offset from beginning of buffer + SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen, + m_uiBufferSize - m_uiBufferLen, m_szPathPrefix); + SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen + uiPrefixLen, + m_uiBufferSize - m_uiBufferLen - uiPrefixLen, a_pszFileName); + m_uiBufferLen += uiLen; + + // add the directory slash if desired + if (a_bIsDir && (m_uiFlags & SG_GLOB_MARK) == SG_GLOB_MARK) { + const static SOCHAR szDirSlash[] = { SG_PATH_CHAR, 0 }; + SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen - 2, + m_uiBufferSize - (m_uiBufferLen - 2), szDirSlash); + } + + return SG_SUCCESS; +} + +template +void +CSimpleGlobTempl::SetArgvArrayType( + ARG_ARRAY_TYPE a_nNewType + ) +{ + if (m_nArgArrayType == a_nNewType) return; + if (a_nNewType == POINTERS) { + SG_ASSERT(m_nArgArrayType == OFFSETS); + for (int n = 0; n < m_nArgsLen; ++n) { + m_rgpArgs[n] = (m_rgpArgs[n] == (SOCHAR*)-1) ? + NULL : m_pBuffer + (size_t) m_rgpArgs[n]; + } + } + else { + SG_ASSERT(a_nNewType == OFFSETS); + SG_ASSERT(m_nArgArrayType == POINTERS); + for (int n = 0; n < m_nArgsLen; ++n) { + m_rgpArgs[n] = (m_rgpArgs[n] == NULL) ? + (SOCHAR*) -1 : (SOCHAR*) (m_rgpArgs[n] - m_pBuffer); + } + } + m_nArgArrayType = a_nNewType; +} + +template +bool +CSimpleGlobTempl::GrowArgvArray( + int a_nNewLen + ) +{ + if (a_nNewLen >= m_nArgsSize) { + static const int SG_ARGV_INITIAL_SIZE = 32; + int nNewSize = (m_nArgsSize > 0) ? m_nArgsSize * 2 : SG_ARGV_INITIAL_SIZE; + while (a_nNewLen >= nNewSize) { + nNewSize *= 2; + } + void * pNewBuffer = realloc(m_rgpArgs, nNewSize * sizeof(SOCHAR*)); + if (!pNewBuffer) return false; + m_nArgsSize = nNewSize; + m_rgpArgs = (SOCHAR**) pNewBuffer; + } + return true; +} + +template +bool +CSimpleGlobTempl::GrowStringBuffer( + size_t a_uiMinSize + ) +{ + if (a_uiMinSize >= m_uiBufferSize) { + static const int SG_BUFFER_INITIAL_SIZE = 1024; + size_t uiNewSize = (m_uiBufferSize > 0) ? m_uiBufferSize * 2 : SG_BUFFER_INITIAL_SIZE; + while (a_uiMinSize >= uiNewSize) { + uiNewSize *= 2; + } + void * pNewBuffer = realloc(m_pBuffer, uiNewSize * sizeof(SOCHAR)); + if (!pNewBuffer) return false; + m_uiBufferSize = uiNewSize; + m_pBuffer = (SOCHAR*) pNewBuffer; + } + return true; +} + +template +int +CSimpleGlobTempl::fileSortCompare( + const void *a1, + const void *a2 + ) +{ + const SOCHAR * s1 = *(const SOCHAR **)a1; + const SOCHAR * s2 = *(const SOCHAR **)a2; + if (s1 && s2) { + return SimpleGlobUtil::strcasecmp(s1, s2); + } + // NULL sorts first + return s1 == s2 ? 0 : (s1 ? 1 : -1); +} + +// --------------------------------------------------------------------------- +// TYPE DEFINITIONS +// --------------------------------------------------------------------------- + +typedef CSimpleGlobTempl CSimpleGlobA; /*!< @brief ASCII/MBCS version of CSimpleGlob */ +typedef CSimpleGlobTempl CSimpleGlobW; /*!< @brief wchar_t version of CSimpleGlob */ +#if defined(_UNICODE) +# define CSimpleGlob CSimpleGlobW /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#else +# define CSimpleGlob CSimpleGlobA /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#endif + +#endif // INCLUDED_SimpleGlob diff --git a/simpleopt/.svn/text-base/SimpleOpt.dsw.svn-base b/simpleopt/.svn/text-base/SimpleOpt.dsw.svn-base new file mode 100644 index 0000000..3f87357 --- /dev/null +++ b/simpleopt/.svn/text-base/SimpleOpt.dsw.svn-base @@ -0,0 +1,53 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "basicSample"=.\basicSample.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "fullSample"=.\fullSample.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "globSample"=.\globSample.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/simpleopt/.svn/text-base/SimpleOpt.h.svn-base b/simpleopt/.svn/text-base/SimpleOpt.h.svn-base new file mode 100644 index 0000000..8d656b7 --- /dev/null +++ b/simpleopt/.svn/text-base/SimpleOpt.h.svn-base @@ -0,0 +1,853 @@ +/*! @file SimpleOpt.h + + @version 2.8 + + @brief A cross-platform command line library which can parse almost any + of the standard command line formats in use today. It is designed explicitly + to be portable to any platform and has been tested on Windows and Linux. + See CSimpleOptTempl for the class definition. + + @section features FEATURES + + - MIT Licence allows free use in all software (including GPL and commercial) + - multi-platform (Windows 95/98/ME/NT/2K/XP, Linux, Unix) + - supports all lengths of option names: + +
    - switch character only (e.g. use stdin for input) +
    -o short (single character) +
    -long long (multiple character, single switch character) +
    --longer long (multiple character, multiple switch characters) +
    + - supports all types of arguments for options: + +
    --option short/long option flag (no argument) +
    --option ARG short/long option with separate required argument +
    --option=ARG short/long option with combined required argument +
    --option[=ARG] short/long option with combined optional argument +
    -oARG short option with combined required argument +
    -o[ARG] short option with combined optional argument +
    + - supports options with multiple or variable numbers of arguments: + +
    --multi ARG1 ARG2 Multiple arguments +
    --multi N ARG-1 ARG-2 ... ARG-N Variable number of arguments +
    + - supports options which do not use a switch character. i.e. a special word + which is construed as an option. e.g. "foo.exe open /directory/file.txt" + supports clumping of multiple short options (no arguments) in a string, e.g. + "foo.exe -abcdef file1" <==> "foo.exe -a -b -c -d -e -f file1" + - automatic recognition of a single slash as equivalent to a single hyphen + on Windows, e.g. "/f FILE" is equivalent to "-f FILE". + - file arguments can appear anywhere in the argument list: + "foo.exe file1.txt -a ARG file2.txt --flag file3.txt file4.txt" + files will be returned to the application in the same order they were supplied + on the command line + - short-circuit option matching: "--man" will match "--mandate" + invalid options can be handled while continuing to parse the command line + valid options list can be changed dynamically during command line processing, + i.e. accept different options depending on an option supplied earlier in the + command line. + - implemented with only a single C++ header file + - uses no C runtime or OS functions + - char, wchar_t and Windows TCHAR in the same program + - complete working examples included + - compiles cleanly at warning level 4 (Windows/VC.NET 2003), warning level + 3 (Windows/VC6) and -Wall (Linux/gcc) + + @section usage USAGE + + The SimpleOpt class is used by following these steps: + +
      +
    1. Include the SimpleOpt.h header file + +
      +        \#include "SimpleOpt.h"
      +        
      + +
    2. Define an array of valid options for your program. + +
      +        @link CSimpleOptTempl::SOption CSimpleOpt::SOption @endlink g_rgOptions[] = {
      +            { OPT_FLAG, _T("-a"),     SO_NONE    }, // "-a"
      +            { OPT_FLAG, _T("-b"),     SO_NONE    }, // "-b"
      +            { OPT_ARG,  _T("-f"),     SO_REQ_SEP }, // "-f ARG"
      +            { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
      +            { OPT_HELP, _T("--help"), SO_NONE    }, // "--help"
      +            SO_END_OF_OPTIONS                       // END
      +        };
      +        
      + + Note that all options must start with a hyphen even if the slash will + be accepted. This is because the slash character is automatically + converted into a hyphen to test against the list of options. For example, + the following line matches both "-?" and "/?" (on Windows). + +
      +        { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
      +        
      + +
    3. Instantiate a CSimpleOpt object supplying argc, argv and the option table + +
      +        @link CSimpleOptTempl CSimpleOpt @endlink args(argc, argv, g_rgOptions);
      +        
      + +
    4. Process the arguments by calling Next() until it returns false. On each call, + first check for an error by calling LastError(), then either handle the error + or process the argument. + +
      +        while (args.Next()) {
      +            if (args.LastError() == SO_SUCCESS) {
      +                handle option: use OptionId(), OptionText() and OptionArg()
      +            }
      +            else {
      +                handle error: see ESOError enums
      +            }
      +        }
      +        
      + +
    5. Process all non-option arguments with File(), Files() and FileCount() + +
      +        ShowFiles(args.FileCount(), args.Files());
      +        
      + +
    + + @section notes NOTES + + - In MBCS mode, this library is guaranteed to work correctly only when all + option names use only ASCII characters. + + @section licence MIT LICENCE + + The licence text below is the boilerplate "MIT Licence" used from: + http://www.opensource.org/licenses/mit-license.php + + Copyright (c) 2006-2007, Brodie Thiesfield + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is furnished + to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/*! @mainpage + + +
    Library SimpleOpt +
    Author Brodie Thiesfield [code at jellycan dot com] +
    Source http://code.jellycan.com/simpleopt/ +
    + + @section SimpleOpt SimpleOpt + + A cross-platform library providing a simple method to parse almost any of the + standard command-line formats in use today. + + See the @link SimpleOpt.h SimpleOpt @endlink documentation for full details. + + @section SimpleGlob SimpleGlob + + A cross-platform file globbing library providing the ability to + expand wildcards in command-line arguments to a list of all matching files. + + See the @link SimpleGlob.h SimpleGlob @endlink documentation for full details. +*/ + +#ifndef INCLUDED_SimpleOpt +#define INCLUDED_SimpleOpt + + +//! Error values +typedef enum _ESOError +{ + SO_SUCCESS = 0, //!< No error + SO_OPT_INVALID = -1, /*!< It looks like an option (it starts with a switch character), + but it isn't registered in the option table. */ + SO_OPT_MULTIPLE = -2, /*!< Multiple options matched the supplied option text. + Only returned when NOT using SO_O_EXACT. */ + SO_ARG_INVALID = -3, /*!< Option doesn't take an argument, but a combined argument + was supplied. */ + SO_ARG_INVALID_TYPE = -4, /*!< SO_REQ_CMB style-argument was supplied to a SO_REQ_SEP option + Only returned when using SO_O_PEDANTIC. */ + SO_ARG_MISSING = -5, //!< Required argument was not supplied + SO_ARG_INVALID_DATA = -6 /*!< Option argument looks like another option. + Only returned when NOT using SO_O_NOERR. */ +} ESOError; + +//! Option flags +enum _ESOFlags +{ + SO_O_EXACT = 0x0001, /*!< Disallow partial matching of option names */ + SO_O_NOSLASH = 0x0002, /*!< Disallow use of slash as an option marker on Windows. + Un*x only ever recognizes a hyphen. */ + SO_O_SHORTARG = 0x0004, /*!< Permit arguments on single letter options with + no equals sign. e.g. -oARG or -o[ARG] */ + SO_O_CLUMP = 0x0008, /*!< Permit single character options to be clumped into + a single option string. e.g. "-a -b -c" <==> "-abc" */ + SO_O_USEALL = 0x0010, /*!< Process the entire argv array for options, including + the argv[0] entry. */ + SO_O_NOERR = 0x0020, /*!< Do not generate an error for invalid options. errors + for missing arguments will still be generated. invalid + options will be treated as files. invalid options in + clumps will be silently ignored. */ + SO_O_PEDANTIC = 0x0040 /*!< Validate argument type pedantically. Return an error when + a separated argument "-opt arg" is supplied by the user + as a combined argument "-opt=arg". By default this is + not considered an error. */ +}; + +/*! Types of arguments that options may have. Note that some of the _ESOFlags are + not compatible with all argument types. SO_O_SHORTARG requires that relevant + options use either SO_REQ_CMB or SO_OPT. SO_O_CLUMP requires that relevant options + use only SO_NONE. + */ +typedef enum _ESOArgType { + SO_NONE, //!< No argument. -o --opt + SO_REQ_SEP, //!< Required separate argument. -o ARG --opt ARG + SO_REQ_CMB, //!< Required combined argument. -oARG -o=ARG --opt=ARG + SO_OPT, //!< Optional combined argument. -o[ARG] -o[=ARG] --opt[=ARG] + SO_MULTI //!< Multiple separate arguments. -o ARG1 ARG2 ... --opt ARG1 ARG2 ... +} ESOArgType; + +//! this option definition must be the last entry in the table +#define SO_END_OF_OPTIONS { -1, NULL, SO_NONE } + +#ifdef _DEBUG +// FIXME +//# ifdef _WIN32 +//# include +//# define SO_ASSERT(b) _ASSERTE(b) +//# else +# include +# define SO_ASSERT(b) assert(b) +//# endif +#else +# define SO_ASSERT(b) //!< assertion used to test input data +#endif + +// --------------------------------------------------------------------------- +// MAIN TEMPLATE CLASS +// --------------------------------------------------------------------------- + +/*! @brief Implementation of the SimpleOpt class */ +template +class CSimpleOptTempl +{ +public: + /*! @brief Structure used to define all known options. */ + struct SOption { + int nId; //!< ID to return for this flag. Optional but must be >= 0 + SOCHAR * pszArg; //!< arg string to search for, e.g. "open", "-", "-f", "--file" + // Note that on Windows the slash option marker will be converted + // to a hyphen so that "-f" will also match "/f". + ESOArgType nArgType; //!< type of argument accepted by this option + }; + + /*! @brief Initialize the class. Init() must be called later. */ + CSimpleOptTempl() { Init(0, NULL, NULL, 0); } + + /*! @brief Initialize the class in preparation for use. */ + CSimpleOptTempl(int argc, SOCHAR * argv[], const SOption * a_rgOptions, int a_nFlags = 0) { + Init(argc, argv, a_rgOptions, a_nFlags); + } + + /*! @brief Initialize the class in preparation for calling Next. + + The table of options pointed to by a_rgOptions does not need to be valid + at the time that Init() is called. However on every call to Next() the + table pointed to must be a valid options table with the last valid + entry set to SO_END_OF_OPTIONS. + + NOTE: the array pointed to by a_argv will be modified by this + class and must not be used or modified outside of member calls to + this class. + + @param a_argc Argument array size + @param a_argv Argument array + @param a_rgOptions Valid option array + @param a_nFlags Optional flags to modify the processing of the arguments + */ + void Init(int a_argc, SOCHAR * a_argv[], const SOption * a_rgOptions, int a_nFlags = 0); + + /*! @brief Change the current options table during option parsing. + + @param a_rgOptions Valid option array + */ + inline void SetOptions(const SOption * a_rgOptions) { m_rgOptions = a_rgOptions; } + + /*! @brief Change the current flags during option parsing. + + Note that changing the SO_O_USEALL flag here will have no affect. + It must be set using Init() or the constructor. + + @param a_nFlags Flags to modify the processing of the arguments + */ + inline void SetFlags(int a_nFlags) { m_nFlags = a_nFlags; } + + /*! @brief Query if a particular flag is set */ + inline bool HasFlag(int a_nFlag) const { return (m_nFlags & a_nFlag) == a_nFlag; } + + /*! @brief Advance to the next option if available. + + When all options have been processed it will return false. When true has been + returned, you must check for an invalid or unrecognized option using the + LastError() method. This will be return an error value other than SO_SUCCESS + on an error. All standard data (e.g. OptionText(), OptionArg(), OptionId(), etc) + will be available depending on the error. + + After all options have been processed, the remaining files from the + command line can be processed in same order as they were passed to + the program. + + @return true option or error available for processing + @return false all options have been processed + */ + bool Next(); + + /*! @brief Return the last error that occurred. + + This function must always be called before processing the current option. + This function is available only when Next() has returned true. + */ + inline ESOError LastError() const { return m_nLastError; } + + /*! @brief Return the nId value from the options array for the current option. + + This function is available only when Next() has returned true. + */ + inline int OptionId() const { return m_nOptionId; } + + /*! @brief Return the pszArg from the options array for the current option. + + This function is available only when Next() has returned true. + */ + inline SOCHAR * OptionText() const { return m_pszOptionText; } + + /*! @brief Return the argument for the current option where one exists. + + If there is no argument for the option, this will return NULL. + This function is available only when Next() has returned true. + */ + inline SOCHAR * OptionArg() const { return m_pszOptionArg; } + + /*! @brief Validate and return the desired number of arguments. + + This is only valid when OptionId() has return the ID of an option + that is registered as SO_MULTI. It may be called multiple times + each time returning the desired number of arguments. Previously + returned argument pointers are remain valid. + + If an error occurs during processing, NULL will be returned and + the error will be available via LastError(). + + @param n Number of arguments to return. + */ + SOCHAR ** MultiArg(int n); + + /*! @brief Returned the number of entries in the Files() array. + + After Next() has returned false, this will be the list of files (or + otherwise unprocessed arguments). + */ + inline int FileCount() const { return m_argc - m_nLastArg; } + + /*! @brief Return the specified file argument. + + @param n Index of the file to return. This must be between 0 + and FileCount() - 1; + */ + inline SOCHAR * File(int n) const { + SO_ASSERT(n >= 0 && n < FileCount()); + return m_argv[m_nLastArg + n]; + } + + /*! @brief Return the array of files. */ + inline SOCHAR ** Files() const { return &m_argv[m_nLastArg]; } + +private: + SOCHAR PrepareArg(SOCHAR * a_pszString) const; + bool NextClumped(); + void ShuffleArg(int a_nStartIdx, int a_nCount); + int LookupOption(const SOCHAR * a_pszOption) const; + int CalcMatch(const SOCHAR *a_pszSource, const SOCHAR *a_pszTest) const; + + // Find the '=' character within a string. + inline SOCHAR * FindEquals(SOCHAR *s) const { + while (*s && *s != (SOCHAR)'=') ++s; + return *s ? s : NULL; + } + +private: + const SOption * m_rgOptions; // pointer to options table as passed in to soInit() + int m_nFlags; // flags for parsing the command line + int m_nOptionIdx; // index of the current option in argv + int m_nOptionId; // id of the current option (or -1 if invalid option) + int m_nNextOption; // index of the next option to be processed + int m_nLastArg; // last unprocessed argument, after this are files + int m_argc; // argc to process + SOCHAR ** m_argv; // argv (rearranged during processing) + SOCHAR * m_pszOptionText; // text of the current option, e.g. "-f" or "--file" + SOCHAR * m_pszOptionArg; // argument for the current option, e.g. "c:\blah.txt" (or NULL if no argument) + SOCHAR * m_pszClump; // processing of clumped single character options + SOCHAR m_szShort[3]; // extract short option text from clumps and combined arguments + ESOError m_nLastError; // error status from the last call +}; + +// --------------------------------------------------------------------------- +// IMPLEMENTATION +// --------------------------------------------------------------------------- + +template +void +CSimpleOptTempl::Init( + int a_argc, + SOCHAR * a_argv[], + const SOption * a_rgOptions, + int a_nFlags + ) +{ + m_argc = a_argc; + m_nLastArg = a_argc; + m_argv = a_argv; + m_rgOptions = a_rgOptions; + m_nLastError = SO_SUCCESS; + m_nOptionIdx = 0; + m_nOptionId = -1; + m_pszOptionText = NULL; + m_pszOptionArg = NULL; + m_nNextOption = (a_nFlags & SO_O_USEALL) ? 0 : 1; + m_szShort[0] = (SOCHAR)'-'; + m_szShort[2] = (SOCHAR)'\0'; + m_nFlags = a_nFlags; + m_pszClump = NULL; +} + +template +bool +CSimpleOptTempl::Next() +{ + // process a clumped option string if appropriate + if (m_pszClump && *m_pszClump) { + // silently discard invalid clumped option + bool bIsValid = NextClumped(); + while (*m_pszClump && !bIsValid && HasFlag(SO_O_NOERR)) { + bIsValid = NextClumped(); + } + + // return this option if valid or we are returning errors + if (bIsValid || !HasFlag(SO_O_NOERR)) { + return true; + } + } + SO_ASSERT(!m_pszClump || !*m_pszClump); + m_pszClump = NULL; + + // init for the next option + m_nOptionIdx = m_nNextOption; + m_nOptionId = -1; + m_pszOptionText = NULL; + m_pszOptionArg = NULL; + m_nLastError = SO_SUCCESS; + + // find the next option + SOCHAR cFirst; + int nTableIdx = -1; + int nOptIdx = m_nOptionIdx; + while (nTableIdx < 0 && nOptIdx < m_nLastArg) { + // assumed argument + m_pszOptionText = m_argv[nOptIdx]; + m_pszOptionArg = NULL; + + // find this option in the options table + cFirst = PrepareArg(m_pszOptionText); + if (m_pszOptionText[0] == (SOCHAR)'-') { + // find any combined argument string and remove equals sign + m_pszOptionArg = FindEquals(m_pszOptionText); + if (m_pszOptionArg) { + *m_pszOptionArg++ = (SOCHAR)'\0'; + } + } + nTableIdx = LookupOption(m_pszOptionText); + + // if we didn't find this option but if it is a short form + // option then we try the alternative forms + if (nTableIdx < 0 + && !m_pszOptionArg + && m_pszOptionText[0] == (SOCHAR)'-' + && m_pszOptionText[1] + && m_pszOptionText[1] != (SOCHAR)'-' + && m_pszOptionText[2]) + { + // test for a short-form with argument if appropriate + if (HasFlag(SO_O_SHORTARG)) { + m_szShort[1] = m_pszOptionText[1]; + int nIdx = LookupOption(m_szShort); + if (nIdx >= 0 + && (m_rgOptions[nIdx].nArgType == SO_REQ_CMB + || m_rgOptions[nIdx].nArgType == SO_OPT)) + { + m_pszOptionArg = &m_pszOptionText[2]; + m_pszOptionText = m_szShort; + nTableIdx = nIdx; + } + } + + // test for a clumped short-form option string and we didn't + // match on the short-form argument above + if (nTableIdx < 0 && HasFlag(SO_O_CLUMP)) { + m_pszClump = &m_pszOptionText[1]; + ++m_nNextOption; + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + return Next(); + } + } + + // The option wasn't found. If it starts with a switch character + // and we are not suppressing errors for invalid options then it + // is reported as an error, otherwise it is data. + if (nTableIdx < 0) { + if (!HasFlag(SO_O_NOERR) && m_pszOptionText[0] == (SOCHAR)'-') { + break; + } + m_pszOptionText[0] = cFirst; + ++nOptIdx; + if (m_pszOptionArg) { + *(--m_pszOptionArg) = (SOCHAR)'='; + } + } + } + + // end of options + if (nOptIdx >= m_nLastArg) { + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + return false; + } + ++m_nNextOption; + + // get the option id + ESOArgType nArgType = SO_NONE; + if (nTableIdx < 0) { + m_nLastError = (ESOError) nTableIdx; // error code + } + else { + m_nOptionId = m_rgOptions[nTableIdx].nId; + m_pszOptionText = m_rgOptions[nTableIdx].pszArg; + + // ensure that the arg type is valid + nArgType = m_rgOptions[nTableIdx].nArgType; + switch (nArgType) { + case SO_NONE: + if (m_pszOptionArg) { + m_nLastError = SO_ARG_INVALID; + } + break; + + case SO_REQ_SEP: + if (m_pszOptionArg) { + // they wanted separate args, but we got a combined one, unless + // we are being pedantic about things, just accept it. + if (HasFlag(SO_O_PEDANTIC)) { + m_nLastError = SO_ARG_INVALID_TYPE; + } + } + // more processing after we shuffle + break; + + case SO_REQ_CMB: + if (!m_pszOptionArg) { + m_nLastError = SO_ARG_MISSING; + } + break; + + case SO_OPT: + // nothing to do + break; + + case SO_MULTI: + // nothing to do. Caller must now check for valid arguments + // using GetMultiArg() + break; + } + } + + // shuffle the files out of the way + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + + // we need to return the separate arg if required, just re-use the + // multi-arg code because it all does the same thing + if (nArgType == SO_REQ_SEP && !m_pszOptionArg && m_nLastError == SO_SUCCESS) { + SOCHAR ** ppArgs = MultiArg(1); + if (ppArgs) { + m_pszOptionArg = *ppArgs; + } + } + + return true; +} + +template +SOCHAR +CSimpleOptTempl::PrepareArg( + SOCHAR * a_pszString + ) const +{ +#ifdef _WIN32 + // On Windows we can accept the forward slash as a single character + // option delimiter, but it cannot replace the '-' option used to + // denote stdin. On Un*x paths may start with slash so it may not + // be used to start an option. + if (!HasFlag(SO_O_NOSLASH) + && a_pszString[0] == (SOCHAR)'/' + && a_pszString[1] + && a_pszString[1] != (SOCHAR)'-') + { + a_pszString[0] = (SOCHAR)'-'; + return (SOCHAR)'/'; + } +#endif + return a_pszString[0]; +} + +template +bool +CSimpleOptTempl::NextClumped() +{ + // prepare for the next clumped option + m_szShort[1] = *m_pszClump++; + m_nOptionId = -1; + m_pszOptionText = m_szShort; + m_pszOptionArg = NULL; + m_nLastError = SO_SUCCESS; + + // lookup this option, ensure that we are using exact matching + int nSavedFlags = m_nFlags; + m_nFlags = SO_O_EXACT; + int nTableIdx = LookupOption(m_pszOptionText); + m_nFlags = nSavedFlags; + + // unknown option + if (nTableIdx < 0) { + m_nLastError = (ESOError) nTableIdx; // error code + return false; + } + + // valid option + ESOArgType nArgType = m_rgOptions[nTableIdx].nArgType; + if (nArgType == SO_NONE) { + m_nOptionId = m_rgOptions[nTableIdx].nId; + return true; + } + + if (nArgType == SO_REQ_CMB && *m_pszClump) { + m_nOptionId = m_rgOptions[nTableIdx].nId; + m_pszOptionArg = m_pszClump; + while (*m_pszClump) ++m_pszClump; // must point to an empty string + return true; + } + + // invalid option as it requires an argument + m_nLastError = SO_ARG_MISSING; + return true; +} + +// Shuffle arguments to the end of the argv array. +// +// For example: +// argv[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8" }; +// +// ShuffleArg(1, 1) = { "0", "2", "3", "4", "5", "6", "7", "8", "1" }; +// ShuffleArg(5, 2) = { "0", "1", "2", "3", "4", "7", "8", "5", "6" }; +// ShuffleArg(2, 4) = { "0", "1", "6", "7", "8", "2", "3", "4", "5" }; +template +void +CSimpleOptTempl::ShuffleArg( + int a_nStartIdx, + int a_nCount + ) +{ + SOCHAR * buf[200]; + int n, nSrc, nDst; + int nTail = m_argc - a_nStartIdx - a_nCount; + + // make a copy of the elements to be moved + nSrc = a_nStartIdx; + nDst = 0; + while (nDst < a_nCount) { + buf[nDst++] = m_argv[nSrc++]; + } + + // move the tail down + nSrc = a_nStartIdx + a_nCount; + nDst = a_nStartIdx; + for (n = 0; n < nTail; ++n) { + m_argv[nDst++] = m_argv[nSrc++]; + } + + // append the moved elements to the tail + nSrc = 0; + nDst = a_nStartIdx + nTail; + for (n = 0; n < a_nCount; ++n) { + m_argv[nDst++] = buf[nSrc++]; + } + + // update the index of the last unshuffled arg + m_nLastArg -= a_nCount; +} + +// match on the long format strings. partial matches will be +// accepted only if that feature is enabled. +template +int +CSimpleOptTempl::LookupOption( + const SOCHAR * a_pszOption + ) const +{ + int nBestMatch = -1; // index of best match so far + int nBestMatchLen = 0; // matching characters of best match + int nLastMatchLen = 0; // matching characters of last best match + + for (int n = 0; m_rgOptions[n].nId >= 0; ++n) { + // the option table must use hyphens as the option character, + // the slash character is converted to a hyphen for testing. + SO_ASSERT(m_rgOptions[n].pszArg[0] != (SOCHAR)'/'); + + int nMatchLen = CalcMatch(m_rgOptions[n].pszArg, a_pszOption); + if (nMatchLen == -1) { + return n; + } + if (nMatchLen > 0 && nMatchLen >= nBestMatchLen) { + nLastMatchLen = nBestMatchLen; + nBestMatchLen = nMatchLen; + nBestMatch = n; + } + } + + // only partial matches or no match gets to here, ensure that we + // don't return a partial match unless it is a clear winner + if (HasFlag(SO_O_EXACT) || nBestMatch == -1) { + return SO_OPT_INVALID; + } + return (nBestMatchLen > nLastMatchLen) ? nBestMatch : SO_OPT_MULTIPLE; +} + +// calculate the number of characters that match (case-sensitive) +// 0 = no match, > 0 == number of characters, -1 == perfect match +template +int +CSimpleOptTempl::CalcMatch( + const SOCHAR * a_pszSource, + const SOCHAR * a_pszTest + ) const +{ + if (!a_pszSource || !a_pszTest) { + return 0; + } + + // match and skip leading hyphens + while (*a_pszSource == (SOCHAR)'-' && *a_pszSource == *a_pszTest) { + ++a_pszSource; ++a_pszTest; + } + if (*a_pszSource == (SOCHAR)'-' || *a_pszTest == (SOCHAR)'-') { + return 0; + } + + // find matching number of characters in the strings + int nLen = 0; + while (*a_pszSource && *a_pszSource == *a_pszTest) { + ++a_pszSource; ++a_pszTest; ++nLen; + } + + // if we have exhausted the source... + if (!*a_pszSource) { + // and the test strings, then it's a perfect match + if (!*a_pszTest) { + return -1; + } + + // otherwise the match failed as the test is longer than + // the source. i.e. "--mant" will not match the option "--man". + return 0; + } + + // if we haven't exhausted the test string then it is not a match + // i.e. "--mantle" will not best-fit match to "--mandate" at all. + if (*a_pszTest) { + return 0; + } + + // partial match to the current length of the test string + return nLen; +} + +// calculate the number of characters that match (case-sensitive) +// 0 = no match, > 0 == number of characters, -1 == perfect match +template +SOCHAR ** +CSimpleOptTempl::MultiArg( + int a_nCount + ) +{ + // ensure we have enough arguments + if (m_nNextOption + a_nCount > m_nLastArg) { + m_nLastError = SO_ARG_MISSING; + return NULL; + } + + // our argument array + SOCHAR ** rgpszArg = &m_argv[m_nNextOption]; + + // Ensure that each of the following don't start with an switch character. + // Only make this check if we are returning errors for unknown arguments. + if (!HasFlag(SO_O_NOERR)) { + for (int n = 0; n < a_nCount; ++n) { + SOCHAR ch = PrepareArg(rgpszArg[n]); + if (rgpszArg[n][0] == (SOCHAR)'-') { + rgpszArg[n][0] = ch; + m_nLastError = SO_ARG_INVALID_DATA; + return NULL; + } + rgpszArg[n][0] = ch; + } + } + + // all good + m_nNextOption += a_nCount; + return rgpszArg; +} + + +// --------------------------------------------------------------------------- +// TYPE DEFINITIONS +// --------------------------------------------------------------------------- + +typedef CSimpleOptTempl CSimpleOptA; /*!< @brief ASCII/MBCS version of CSimpleOpt */ +typedef CSimpleOptTempl CSimpleOptW; /*!< @brief wchar_t version of CSimpleOpt */ +#if defined(_UNICODE) +# define CSimpleOpt CSimpleOptW /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#else +# define CSimpleOpt CSimpleOptA /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#endif + +#endif // INCLUDED_SimpleOpt diff --git a/simpleopt/.svn/text-base/SimpleOpt.sln.svn-base b/simpleopt/.svn/text-base/SimpleOpt.sln.svn-base new file mode 100644 index 0000000..52935d4 --- /dev/null +++ b/simpleopt/.svn/text-base/SimpleOpt.sln.svn-base @@ -0,0 +1,54 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "basicSample", "basicSample.vcproj", "{BC46A349-E59A-4FDC-B56A-A668ED552758}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fullSample", "fullSample.vcproj", "{4693B3B5-9070-4DC3-8C61-AAD6BF288E90}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "globSample", "globSample.vcproj", "{F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Debug Unicode = Debug Unicode + Release = Release + Release Unicode = Release Unicode + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug.ActiveCfg = Debug|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug.Build.0 = Debug|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug Unicode.ActiveCfg = Debug Unicode|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug Unicode.Build.0 = Debug Unicode|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release.ActiveCfg = Release|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release.Build.0 = Release|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release Unicode.ActiveCfg = Release Unicode|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release Unicode.Build.0 = Release Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug.ActiveCfg = Debug|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug.Build.0 = Debug|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug Unicode.ActiveCfg = Debug Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug Unicode.Build.0 = Debug Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release.ActiveCfg = Release|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release.Build.0 = Release|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release Unicode.ActiveCfg = Release Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release Unicode.Build.0 = Release Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug.ActiveCfg = Debug|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug.Build.0 = Debug|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug Unicode.ActiveCfg = Debug Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug Unicode.Build.0 = Debug Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release.ActiveCfg = Release|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release.Build.0 = Release|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release Unicode.ActiveCfg = Release Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release Unicode.Build.0 = Release Unicode|Win32 + EndGlobalSection + GlobalSection(SolutionItems) = postSolution + makefile = makefile + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/simpleopt/.svn/text-base/basicSample.cpp.svn-base b/simpleopt/.svn/text-base/basicSample.cpp.svn-base new file mode 100644 index 0000000..066624e --- /dev/null +++ b/simpleopt/.svn/text-base/basicSample.cpp.svn-base @@ -0,0 +1,112 @@ +// File: basicSample.cpp +// Library: SimpleOpt +// Author: Brodie Thiesfield +// Source: http://code.jellycan.com/simpleopt/ +// +// MIT LICENCE +// =========== +// The licence text below is the boilerplate "MIT Licence" used from: +// http://www.opensource.org/licenses/mit-license.php +// +// Copyright (c) 2006, Brodie Thiesfield +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is furnished +// to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#define _CRT_SECURE_NO_DEPRECATE + +#if defined(_MSC_VER) +# include +# include +#else +# define TCHAR char +# define _T(x) x +# define _tprintf printf +# define _tmain main +#endif +#include +#include + +#include "SimpleOpt.h" +#include "SimpleGlob.h" + +// define the ID values to indentify the option +enum { OPT_HELP, OPT_FLAG, OPT_ARG }; + +// declare a table of CSimpleOpt::SOption structures. See the SimpleOpt.h header +// for details of each entry in this structure. In summary they are: +// 1. ID for this option. This will be returned from OptionId() during processing. +// It may be anything >= 0 and may contain duplicates. +// 2. Option as it should be written on the command line +// 3. Type of the option. See the header file for details of all possible types. +// The SO_REQ_SEP type means an argument is required and must be supplied +// separately, e.g. "-f FILE" +// 4. The last entry must be SO_END_OF_OPTIONS. +// +CSimpleOpt::SOption g_rgOptions[] = { + { OPT_FLAG, _T("-a"), SO_NONE }, // "-a" + { OPT_FLAG, _T("-b"), SO_NONE }, // "-b" + { OPT_ARG, _T("-f"), SO_REQ_SEP }, // "-f ARG" + { OPT_HELP, _T("-?"), SO_NONE }, // "-?" + { OPT_HELP, _T("--help"), SO_NONE }, // "--help" + SO_END_OF_OPTIONS // END +}; + +// show the usage of this program +void ShowUsage() { + _tprintf(_T("Usage: basicSample [-a] [-b] [-f FILE] [-?] [--help] FILES\n")); +} + +int _tmain(int argc, TCHAR * argv[]) { + // declare our options parser, pass in the arguments from main + // as well as our array of valid options. + CSimpleOpt args(argc, argv, g_rgOptions); + + // while there are arguments left to process + while (args.Next()) { + if (args.LastError() == SO_SUCCESS) { + if (args.OptionId() == OPT_HELP) { + ShowUsage(); + return 0; + } + _tprintf(_T("Option, ID: %d, Text: '%s', Argument: '%s'\n"), + args.OptionId(), args.OptionText(), + args.OptionArg() ? args.OptionArg() : _T("")); + } + else { + _tprintf(_T("Invalid argument: %s\n"), args.OptionText()); + return 1; + } + } + + // process any files that were passed to us on the command line. + // send them to the globber so that all wildcards are expanded + // into valid filenames (e.g. *.cpp -> a.cpp, b.cpp, c.cpp, etc) + // See the SimpleGlob.h header file for details of the flags. + CSimpleGlob glob(SG_GLOB_NODOT|SG_GLOB_NOCHECK); + if (SG_SUCCESS != glob.Add(args.FileCount(), args.Files())) { + _tprintf(_T("Error while globbing files\n")); + return 1; + } + + // dump all of the details, the script that was passed on the + // command line and the expanded file names + for (int n = 0; n < glob.FileCount(); ++n) { + _tprintf(_T("file %d: '%s'\n"), n, glob.File(n)); + } + + return 0; +} diff --git a/simpleopt/.svn/text-base/basicSample.dsp.svn-base b/simpleopt/.svn/text-base/basicSample.dsp.svn-base new file mode 100644 index 0000000..2e000b6 --- /dev/null +++ b/simpleopt/.svn/text-base/basicSample.dsp.svn-base @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="basicSample" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=basicSample - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "basicSample.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "basicSample.mak" CFG="basicSample - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "basicSample - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "basicSample - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "basicSample - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "basicSample - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "basicSample - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "basicRelease" +# PROP BASE Intermediate_Dir "basicRelease" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "basicRelease" +# PROP Intermediate_Dir "basicRelease" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "basicSample - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "basicDebug" +# PROP BASE Intermediate_Dir "basicDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "basicDebug" +# PROP Intermediate_Dir "basicDebug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "basicSample - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "basicDebugUnicode" +# PROP BASE Intermediate_Dir "basicDebugUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "basicDebugUnicode" +# PROP Intermediate_Dir "basicDebugUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /GZ /c +# SUBTRACT CPP /Fr +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "basicSample - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "basicReleaseUnicode" +# PROP BASE Intermediate_Dir "basicReleaseUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "basicReleaseUnicode" +# PROP Intermediate_Dir "basicReleaseUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "basicSample - Win32 Release" +# Name "basicSample - Win32 Debug" +# Name "basicSample - Win32 Debug Unicode" +# Name "basicSample - Win32 Release Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\basicSample.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\SimpleGlob.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleOpt.h +# End Source File +# End Group +# End Target +# End Project diff --git a/simpleopt/.svn/text-base/basicSample.vcproj.svn-base b/simpleopt/.svn/text-base/basicSample.vcproj.svn-base new file mode 100644 index 0000000..95c867a --- /dev/null +++ b/simpleopt/.svn/text-base/basicSample.vcproj.svn-base @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simpleopt/.svn/text-base/fullSample.cpp.svn-base b/simpleopt/.svn/text-base/fullSample.cpp.svn-base new file mode 100644 index 0000000..b5c64cf --- /dev/null +++ b/simpleopt/.svn/text-base/fullSample.cpp.svn-base @@ -0,0 +1,247 @@ +// File: fullSample.cpp +// Library: SimpleOpt +// Author: Brodie Thiesfield +// Source: http://code.jellycan.com/simpleopt/ +// +// MIT LICENCE +// =========== +// The licence text below is the boilerplate "MIT Licence" used from: +// http://www.opensource.org/licenses/mit-license.php +// +// Copyright (c) 2006, Brodie Thiesfield +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is furnished +// to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#if defined(_MSC_VER) +# include +# include +#else +# define TCHAR char +# define _T(x) x +# define _tprintf printf +# define _tmain main +# define _ttoi atoi +#endif + +#include +#include +#include "SimpleOpt.h" +#include "SimpleGlob.h" + +static void ShowUsage() +{ + _tprintf( + _T("Usage: fullSample [OPTIONS] [FILES]\n") + _T("\n") + _T("--exact Disallow partial matching of option names\n") + _T("--noslash Disallow use of slash as an option marker on Windows\n") + _T("--shortarg Permit arguments on single letter options with no equals sign\n") + _T("--clump Permit single char options to be clumped as long string\n") + _T("--noerr Do not generate any errors for invalid options\n") + _T("--pedantic Generate an error for petty things\n") + _T("\n") + _T("-d -e -f -g -flag --flag Flag (no arg)\n") + _T("-s ARG -sep ARG --sep ARG Separate required arg\n") + _T("-cARG -c=ARG -com=ARG --com=ARG Combined required arg\n") + _T("-o[ARG] -o[=ARG] -opt[=ARG] --opt[=ARG] Combined optional arg\n") + _T("-man -mandy -mandate Shortcut matching tests\n") + _T("--man --mandy --mandate Shortcut matching tests\n") + _T("--multi0 --multi1 ARG --multi2 ARG1 ARG2 Multiple argument tests\n") + _T("--multi N ARG-1 ARG-2 ... ARG-N Multiple argument tests\n") + _T("open read write close zip unzip Special words\n") + _T("\n") + _T("-? -h -help --help Output this help.\n") + _T("\n") + _T("If a FILE is `-', read standard input.\n") + ); +} + +CSimpleOpt::SOption g_rgFlags[] = +{ + { SO_O_EXACT, _T("--exact"), SO_NONE }, + { SO_O_NOSLASH, _T("--noslash"), SO_NONE }, + { SO_O_SHORTARG, _T("--shortarg"), SO_NONE }, + { SO_O_CLUMP, _T("--clump"), SO_NONE }, + { SO_O_NOERR, _T("--noerr"), SO_NONE }, + { SO_O_PEDANTIC, _T("--pedantic"), SO_NONE }, + SO_END_OF_OPTIONS +}; + +enum { OPT_HELP = 0, OPT_MULTI = 100, OPT_MULTI0, OPT_MULTI1, OPT_MULTI2 }; +CSimpleOpt::SOption g_rgOptions[] = +{ + { OPT_HELP, _T("-?"), SO_NONE }, + { OPT_HELP, _T("-h"), SO_NONE }, + { OPT_HELP, _T("-help"), SO_NONE }, + { OPT_HELP, _T("--help"), SO_NONE }, + { 1, _T("-"), SO_NONE }, + { 2, _T("-d"), SO_NONE }, + { 3, _T("-e"), SO_NONE }, + { 4, _T("-f"), SO_NONE }, + { 5, _T("-g"), SO_NONE }, + { 6, _T("-flag"), SO_NONE }, + { 7, _T("--flag"), SO_NONE }, + { 8, _T("-s"), SO_REQ_SEP }, + { 9, _T("-sep"), SO_REQ_SEP }, + { 10, _T("--sep"), SO_REQ_SEP }, + { 11, _T("-c"), SO_REQ_CMB }, + { 12, _T("-com"), SO_REQ_CMB }, + { 13, _T("--com"), SO_REQ_CMB }, + { 14, _T("-o"), SO_OPT }, + { 15, _T("-opt"), SO_OPT }, + { 16, _T("--opt"), SO_OPT }, + { 17, _T("-man"), SO_NONE }, + { 18, _T("-mandy"), SO_NONE }, + { 19, _T("-mandate"), SO_NONE }, + { 20, _T("--man"), SO_NONE }, + { 21, _T("--mandy"), SO_NONE }, + { 22, _T("--mandate"), SO_NONE }, + { 23, _T("open"), SO_NONE }, + { 24, _T("read"), SO_NONE }, + { 25, _T("write"), SO_NONE }, + { 26, _T("close"), SO_NONE }, + { 27, _T("zip"), SO_NONE }, + { 28, _T("unzip"), SO_NONE }, + { OPT_MULTI, _T("--multi"), SO_MULTI }, + { OPT_MULTI0, _T("--multi0"), SO_MULTI }, + { OPT_MULTI1, _T("--multi1"), SO_MULTI }, + { OPT_MULTI2, _T("--multi2"), SO_MULTI }, + SO_END_OF_OPTIONS +}; + +void ShowFiles(int argc, TCHAR ** argv) { + // glob files to catch expand wildcards + CSimpleGlob glob(SG_GLOB_NODOT|SG_GLOB_NOCHECK); + if (SG_SUCCESS != glob.Add(argc, argv)) { + _tprintf(_T("Error while globbing files\n")); + return; + } + + for (int n = 0; n < glob.FileCount(); ++n) { + _tprintf(_T("file %2d: '%s'\n"), n, glob.File(n)); + } +} + +static const TCHAR * +GetLastErrorText( + int a_nError + ) +{ + switch (a_nError) { + case SO_SUCCESS: return _T("Success"); + case SO_OPT_INVALID: return _T("Unrecognized option"); + case SO_OPT_MULTIPLE: return _T("Option matched multiple strings"); + case SO_ARG_INVALID: return _T("Option does not accept argument"); + case SO_ARG_INVALID_TYPE: return _T("Invalid argument format"); + case SO_ARG_MISSING: return _T("Required argument is missing"); + case SO_ARG_INVALID_DATA: return _T("Invalid argument data"); + default: return _T("Unknown error"); + } +} + +static void +DoMultiArgs( + CSimpleOpt & args, + int nMultiArgs + ) +{ + TCHAR ** rgpszArg = NULL; + + // get the number of arguments if necessary + if (nMultiArgs == -1) { + // first arg is a count of how many we have + rgpszArg = args.MultiArg(1); + if (!rgpszArg) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + return; + } + + nMultiArgs = _ttoi(rgpszArg[0]); + } + _tprintf(_T("%s: expecting %d args\n"), args.OptionText(), nMultiArgs); + + // get the arguments to follow + rgpszArg = args.MultiArg(nMultiArgs); + if (!rgpszArg) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + return; + } + + for (int n = 0; n < nMultiArgs; ++n) { + _tprintf(_T("MultiArg %d: %s\n"), n, rgpszArg[n]); + } +} + + +int _tmain(int argc, TCHAR * argv[]) { + setlocale( LC_ALL, "Japanese" ); + + // get the flags to use for SimpleOpt from the command line + int nFlags = SO_O_USEALL; + CSimpleOpt flags(argc, argv, g_rgFlags, SO_O_NOERR|SO_O_EXACT); + while (flags.Next()) { + nFlags |= flags.OptionId(); + } + + // now process the remainder of the command line with these flags + CSimpleOpt args(flags.FileCount(), flags.Files(), g_rgOptions, nFlags); + while (args.Next()) { + if (args.LastError() != SO_SUCCESS) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + continue; + } + + switch (args.OptionId()) { + case OPT_HELP: + ShowUsage(); + return 0; + case OPT_MULTI: + DoMultiArgs(args, -1); + break; + case OPT_MULTI0: + DoMultiArgs(args, 0); + break; + case OPT_MULTI1: + DoMultiArgs(args, 1); + break; + case OPT_MULTI2: + DoMultiArgs(args, 2); + break; + default: + if (args.OptionArg()) { + _tprintf(_T("option: %2d, text: '%s', arg: '%s'\n"), + args.OptionId(), args.OptionText(), args.OptionArg()); + } + else { + _tprintf(_T("option: %2d, text: '%s'\n"), + args.OptionId(), args.OptionText()); + } + } + } + + /* process files from command line */ + ShowFiles(args.FileCount(), args.Files()); + + return 0; +} diff --git a/simpleopt/.svn/text-base/fullSample.dsp.svn-base b/simpleopt/.svn/text-base/fullSample.dsp.svn-base new file mode 100644 index 0000000..5ea66ca --- /dev/null +++ b/simpleopt/.svn/text-base/fullSample.dsp.svn-base @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="fullSample" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=fullSample - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "fullSample.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "fullSample.mak" CFG="fullSample - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "fullSample - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "fullSample - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "fullSample - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "fullSample - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "fullSample - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "fullRelease" +# PROP BASE Intermediate_Dir "fullRelease" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "fullRelease" +# PROP Intermediate_Dir "fullRelease" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "fullSample - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "fullDebug" +# PROP BASE Intermediate_Dir "fullDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "fullDebug" +# PROP Intermediate_Dir "fullDebug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "fullSample - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "fullDebugUnicode" +# PROP BASE Intermediate_Dir "fullDebugUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "fullDebugUnicode" +# PROP Intermediate_Dir "fullDebugUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /GZ /c +# SUBTRACT CPP /Fr +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "fullSample - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "fullReleaseUnicode" +# PROP BASE Intermediate_Dir "fullReleaseUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "fullReleaseUnicode" +# PROP Intermediate_Dir "fullReleaseUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "fullSample - Win32 Release" +# Name "fullSample - Win32 Debug" +# Name "fullSample - Win32 Debug Unicode" +# Name "fullSample - Win32 Release Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\fullSample.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\SimpleGlob.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleOpt.h +# End Source File +# End Group +# End Target +# End Project diff --git a/simpleopt/.svn/text-base/fullSample.vcproj.svn-base b/simpleopt/.svn/text-base/fullSample.vcproj.svn-base new file mode 100644 index 0000000..7da09e5 --- /dev/null +++ b/simpleopt/.svn/text-base/fullSample.vcproj.svn-base @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simpleopt/.svn/text-base/globSample.cpp.svn-base b/simpleopt/.svn/text-base/globSample.cpp.svn-base new file mode 100644 index 0000000..d88156b --- /dev/null +++ b/simpleopt/.svn/text-base/globSample.cpp.svn-base @@ -0,0 +1,130 @@ +// File: globSample.cpp +// Library: SimpleOpt +// Author: Brodie Thiesfield +// Source: http://code.jellycan.com/simpleopt/ +// +// MIT LICENCE +// =========== +// The licence text below is the boilerplate "MIT Licence" used from: +// http://www.opensource.org/licenses/mit-license.php +// +// Copyright (c) 2006, Brodie Thiesfield +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is furnished +// to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#if defined(_MSC_VER) +# include +# include +#else +# define TCHAR char +# define _T(x) x +# define _tprintf printf +# define _tmain main +#endif + +#include +#include +#include "SimpleOpt.h" +#include "SimpleGlob.h" + +static void ShowUsage() +{ + _tprintf( + _T("Usage: globSample [OPTIONS] [FILES]\n") + _T("\n") + _T(" -e Return upon read error (e.g. directory does not have\n") + _T(" read permission)\n") + _T(" -m Append a slash (backslash in Windows) to each path which\n") + _T(" corresponds to a directory\n") + _T(" -s Don't sort the returned pathnames\n") + _T(" -o Sort all pathnames as a single group instead of in filespec groups\n") + _T(" -c If no pattern matches, return the original pattern\n") + _T(" -t Tilde expansion is carried out (on Unix platforms)\n") + _T(" -d Return only directories (not compatible with --only-file)\n") + _T(" -f Return only files (not compatible with --only-dir)\n") + _T(" -n Do not return the \".\" or \"..\" special files\n") + _T("\n") + _T(" -? Output this help.\n") + ); +} + +CSimpleOpt::SOption g_rgOptions[] = +{ + { SG_GLOB_ERR, _T("-e"), SO_NONE }, + { SG_GLOB_MARK, _T("-m"), SO_NONE }, + { SG_GLOB_NOSORT, _T("-s"), SO_NONE }, + { SG_GLOB_NOCHECK, _T("-c"), SO_NONE }, + { SG_GLOB_TILDE, _T("-t"), SO_NONE }, + { SG_GLOB_ONLYDIR, _T("-d"), SO_NONE }, + { SG_GLOB_ONLYFILE, _T("-f"), SO_NONE }, + { SG_GLOB_NODOT, _T("-n"), SO_NONE }, + { SG_GLOB_FULLSORT, _T("-o"), SO_NONE }, + { 0, _T("-?"), SO_NONE }, + { 0, _T("-h"), SO_NONE }, + + SO_END_OF_OPTIONS +}; + +static const TCHAR * +GetLastErrorText( + int a_nError + ) +{ + switch (a_nError) { + case SO_SUCCESS: return _T("Success"); + case SO_OPT_INVALID: return _T("Unrecognized option"); + case SO_OPT_MULTIPLE: return _T("Option matched multiple strings"); + case SO_ARG_INVALID: return _T("Option does not accept argument"); + case SO_ARG_INVALID_TYPE: return _T("Invalid argument format"); + case SO_ARG_MISSING: return _T("Required argument is missing"); + case SO_ARG_INVALID_DATA: return _T("Invalid argument data"); + default: return _T("Unknown error"); + } +} + +int _tmain(int argc, TCHAR * argv[]) { + unsigned int uiFlags = 0; + + CSimpleOpt args(argc, argv, g_rgOptions, true); + while (args.Next()) { + if (args.LastError() != SO_SUCCESS) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + continue; + } + + if (args.OptionId() == 0) { + ShowUsage(); + return 0; + } + + uiFlags |= (unsigned int) args.OptionId(); + } + + CSimpleGlob glob(uiFlags); + if (glob.Add(args.FileCount(), args.Files()) < SG_SUCCESS) { + _tprintf(_T("Error while globbing files\n")); + return 1; + } + + for (int n = 0; n < glob.FileCount(); ++n) + _tprintf(_T("file %2d: '%s'\n"), n, glob.File(n)); + + return 0; +} diff --git a/simpleopt/.svn/text-base/globSample.dsp.svn-base b/simpleopt/.svn/text-base/globSample.dsp.svn-base new file mode 100644 index 0000000..4dc0f31 --- /dev/null +++ b/simpleopt/.svn/text-base/globSample.dsp.svn-base @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="globSample" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=globSample - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "globSample.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "globSample.mak" CFG="globSample - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "globSample - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "globSample - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "globSample - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "globSample - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "globSample - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "globRelease" +# PROP BASE Intermediate_Dir "globRelease" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "globRelease" +# PROP Intermediate_Dir "globRelease" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "globSample - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "globDebug" +# PROP BASE Intermediate_Dir "globDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "globDebug" +# PROP Intermediate_Dir "globDebug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "globSample - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "globDebugUnicode" +# PROP BASE Intermediate_Dir "globDebugUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "globDebugUnicode" +# PROP Intermediate_Dir "globDebugUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /GZ /c +# SUBTRACT CPP /Fr +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "globSample - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "globReleaseUnicode" +# PROP BASE Intermediate_Dir "globReleaseUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "globReleaseUnicode" +# PROP Intermediate_Dir "globReleaseUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "globSample - Win32 Release" +# Name "globSample - Win32 Debug" +# Name "globSample - Win32 Debug Unicode" +# Name "globSample - Win32 Release Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\globSample.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\SimpleGlob.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleOpt.h +# End Source File +# End Group +# End Target +# End Project diff --git a/simpleopt/.svn/text-base/globSample.vcproj.svn-base b/simpleopt/.svn/text-base/globSample.vcproj.svn-base new file mode 100644 index 0000000..5f47440 --- /dev/null +++ b/simpleopt/.svn/text-base/globSample.vcproj.svn-base @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simpleopt/.svn/text-base/runtests.cmd.svn-base b/simpleopt/.svn/text-base/runtests.cmd.svn-base new file mode 100644 index 0000000..19c1b9a --- /dev/null +++ b/simpleopt/.svn/text-base/runtests.cmd.svn-base @@ -0,0 +1,86 @@ +@echo off + +set TESTDIR= +set EXPECTED= +set OUTPUT= + +if exist .\fullSample.exe ( + set EXPECTED=..\runtests.txt + call :runtests . + exit /b 0 +) + +set EXPECTED=runtests.txt +for %%d in (fullDebug fullDebugUnicode fullRelease fullReleaseUnicode) do call :runtests %%d +pause +exit /b 0 + +:runtests +set TESTDIR=%1 + +if not exist %TESTDIR% ( + echo Skipping %TESTDIR% + exit /b 0 +) +if not exist %TESTDIR%\fullSample.exe ( + echo Skipping %TESTDIR% + exit /b 0 +) + +set TESTNAME=%TESTDIR% +set OUTPUT=runtests.%TESTNAME% + +if %TESTNAME%.==.. ( + set TESTNAME=CurrentDir + set OUTPUT=runtests.out +) + +if exist %OUTPUT% del %OUTPUT% + + +call :testcase -d -e -f -g -flag --flag +call :testcase -s SEP1 -sep SEP2 --sep SEP3 +call :testcase -s -s SEP1 -sep SEP2 --sep SEP3 +call :testcase --noerr -s -s SEP1 -sep SEP2 --sep SEP3 +call :testcase FILE0 -s SEP1 FILE1 -sep SEP2 FILE2 --sep SEP3 FILE3 +call :testcase FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +call :testcase --pedantic FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +call :testcase -c=COM1 -com=COM2 --com=COM3 +call :testcase --shortarg -cCOM +call :testcase --shortarg -cCOM1 -c=COM2 +call :testcase --shortarg --clump -defgcCOM1 -c=COM2 +call :testcase -o -opt --opt -o=OPT1 -opt=OPT2 --opt=OPT3 +call :testcase --shortarg -oOPT1 +call :testcase -man -mand -mandy -manda -mandat -mandate +call :testcase --man --mand --mandy --manda --mandat --mandate +call :testcase --exact -man -mand -mandy -manda -mandat -mandate +call :testcase FILE0 FILE1 +call :testcase --multi0 --multi1 ARG1 --multi2 ARG1 ARG2 +call :testcase FILE0 --multi0 FILE1 --multi1 ARG1 FILE2 --multi2 ARG1 ARG2 FILE3 +call :testcase FILE0 --multi 0 FILE1 --multi 4 ARG1 ARG2 ARG3 ARG4 FILE3 +call :testcase --multi 0 +call :testcase --multi 1 +call :testcase FILE0 --multi 1 +call :testcase /-sep SEP1 +call :testcase /sep SEP1 +call :testcase --noslash /sep SEP1 +call :testcase --multi 1 -sep +call :testcase --noerr --multi 1 -sep + + +fc /A %OUTPUT% %EXPECTED% > nul +if errorlevel 1 goto error +echo %TESTNAME%: All tests passed! +exit /b 0 + +:error +echo %TESTNAME%: Test results (%OUTPUT%) don't match expected (%EXPECTED%) +exit /b 1 + +:testcase +echo. >> %OUTPUT% +echo fullSample %* >> %OUTPUT% +%TESTDIR%\fullSample %* >> %OUTPUT% +exit /b 0 + + diff --git a/simpleopt/.svn/text-base/runtests.txt.svn-base b/simpleopt/.svn/text-base/runtests.txt.svn-base new file mode 100644 index 0000000..4a8277e --- /dev/null +++ b/simpleopt/.svn/text-base/runtests.txt.svn-base @@ -0,0 +1,174 @@ + +fullSample -d -e -f -g -flag --flag +option: 2, text: '-d' +option: 3, text: '-e' +option: 4, text: '-f' +option: 5, text: '-g' +option: 6, text: '-flag' +option: 7, text: '--flag' + +fullSample -s SEP1 -sep SEP2 --sep SEP3 +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' + +fullSample -s -s SEP1 -sep SEP2 --sep SEP3 +Invalid argument data: '-s' (use --help to get command line help) +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' + +fullSample --noerr -s -s SEP1 -sep SEP2 --sep SEP3 +option: 8, text: '-s', arg: '-s' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' +file 0: 'SEP1' + +fullSample FILE0 -s SEP1 FILE1 -sep SEP2 FILE2 --sep SEP3 FILE3 +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample --pedantic FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +Invalid argument format: '-s' (use --help to get command line help) +Invalid argument format: '-sep' (use --help to get command line help) +Invalid argument format: '--sep' (use --help to get command line help) +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample -c=COM1 -com=COM2 --com=COM3 +option: 11, text: '-c', arg: 'COM1' +option: 12, text: '-com', arg: 'COM2' +option: 13, text: '--com', arg: 'COM3' + +fullSample --shortarg -cCOM +option: 11, text: '-c', arg: 'COM' + +fullSample --shortarg -cCOM1 -c=COM2 +option: 11, text: '-c', arg: 'COM1' +option: 11, text: '-c', arg: 'COM2' + +fullSample --shortarg --clump -defgcCOM1 -c=COM2 +option: 2, text: '-d' +option: 3, text: '-e' +option: 4, text: '-f' +option: 5, text: '-g' +option: 11, text: '-c', arg: 'COM1' +option: 11, text: '-c', arg: 'COM2' + +fullSample -o -opt --opt -o=OPT1 -opt=OPT2 --opt=OPT3 +option: 14, text: '-o' +option: 15, text: '-opt' +option: 16, text: '--opt' +option: 14, text: '-o', arg: 'OPT1' +option: 15, text: '-opt', arg: 'OPT2' +option: 16, text: '--opt', arg: 'OPT3' + +fullSample --shortarg -oOPT1 +option: 14, text: '-o', arg: 'OPT1' + +fullSample -man -mand -mandy -manda -mandat -mandate +option: 17, text: '-man' +Option matched multiple strings: '-mand' (use --help to get command line help) +option: 18, text: '-mandy' +option: 19, text: '-mandate' +option: 19, text: '-mandate' +option: 19, text: '-mandate' + +fullSample --man --mand --mandy --manda --mandat --mandate +option: 20, text: '--man' +Option matched multiple strings: '--mand' (use --help to get command line help) +option: 21, text: '--mandy' +option: 22, text: '--mandate' +option: 22, text: '--mandate' +option: 22, text: '--mandate' + +fullSample --exact -man -mand -mandy -manda -mandat -mandate +option: 17, text: '-man' +Unrecognized option: '-mand' (use --help to get command line help) +option: 18, text: '-mandy' +Unrecognized option: '-manda' (use --help to get command line help) +Unrecognized option: '-mandat' (use --help to get command line help) +option: 19, text: '-mandate' + +fullSample FILE0 FILE1 +file 0: 'FILE0' +file 1: 'FILE1' + +fullSample --multi0 --multi1 ARG1 --multi2 ARG1 ARG2 +--multi0: expecting 0 args +--multi1: expecting 1 args +MultiArg 0: ARG1 +--multi2: expecting 2 args +MultiArg 0: ARG1 +MultiArg 1: ARG2 + +fullSample FILE0 --multi0 FILE1 --multi1 ARG1 FILE2 --multi2 ARG1 ARG2 FILE3 +--multi0: expecting 0 args +--multi1: expecting 1 args +MultiArg 0: ARG1 +--multi2: expecting 2 args +MultiArg 0: ARG1 +MultiArg 1: ARG2 +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample FILE0 --multi 0 FILE1 --multi 4 ARG1 ARG2 ARG3 ARG4 FILE3 +--multi: expecting 0 args +--multi: expecting 4 args +MultiArg 0: ARG1 +MultiArg 1: ARG2 +MultiArg 2: ARG3 +MultiArg 3: ARG4 +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE3' + +fullSample --multi 0 +--multi: expecting 0 args + +fullSample --multi 1 +--multi: expecting 1 args +Required argument is missing: '--multi' (use --help to get command line help) + +fullSample FILE0 --multi 1 +--multi: expecting 1 args +Required argument is missing: '--multi' (use --help to get command line help) +file 0: 'FILE0' + +fullSample /-sep SEP1 +file 0: '\-sep' +file 1: 'SEP1' + +fullSample /sep SEP1 +option: 9, text: '-sep', arg: 'SEP1' + +fullSample --noslash /sep SEP1 +file 0: '\sep' +file 1: 'SEP1' + +fullSample --multi 1 -sep +--multi: expecting 1 args +Invalid argument data: '--multi' (use --help to get command line help) +Required argument is missing: '-sep' (use --help to get command line help) + +fullSample --noerr --multi 1 -sep +--multi: expecting 1 args +MultiArg 0: -sep diff --git a/simpleopt/.svn/text-base/simpleopt.doxy.svn-base b/simpleopt/.svn/text-base/simpleopt.doxy.svn-base new file mode 100644 index 0000000..3ea85be --- /dev/null +++ b/simpleopt/.svn/text-base/simpleopt.doxy.svn-base @@ -0,0 +1,1267 @@ +# Doxyfile 1.5.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = SimpleOpt + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = D:/src/simpleopt-doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = D:/src/simpleopt/ + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file($line) : $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = D:/src/simpleopt/ + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = DOXYGEN + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen will always +# show the root nodes and its direct children regardless of this setting. + +DOT_GRAPH_MAX_NODES = 50 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/simpleopt/Makefile b/simpleopt/Makefile new file mode 100644 index 0000000..2372d9a --- /dev/null +++ b/simpleopt/Makefile @@ -0,0 +1,17 @@ +CC=g++ +CFLAGS=-Wall +CPPFLAGS=-Wall + +OBJS=fullSample.o basicSample.o globSample.o + +all: $(OBJS) + $(CC) -o globSample globSample.o + $(CC) -o basicSample basicSample.o + $(CC) -o fullSample fullSample.o + +clean: + rm -f core *.o fullSample basicSample globSample + +globSample.o: SimpleOpt.h SimpleGlob.h +fullSample.o: SimpleOpt.h SimpleGlob.h +basicSample.o: SimpleOpt.h SimpleGlob.h diff --git a/simpleopt/SimpleGlob.h b/simpleopt/SimpleGlob.h new file mode 100644 index 0000000..0ed1946 --- /dev/null +++ b/simpleopt/SimpleGlob.h @@ -0,0 +1,849 @@ +/*! @file SimpleGlob.h + + @version 2.8 + + @brief A cross-platform file globbing library providing the ability to + expand wildcards in command-line arguments to a list of all matching files. + It is designed explicitly to be portable to any platform and has been tested on + Windows and Linux. See CSimpleGlobTempl for the class definition. + + @section features FEATURES + + - MIT Licence allows free use in all software (including GPL and commercial) + - multi-platform (Windows 95/98/ME/NT/2K/XP, Linux, Unix) + - supports most of the standard linux glob() options + - recognition of a forward paths as equivalent to a backward slash on Windows. + e.g. "c:/path/foo*" is equivalent to "c:\path\foo*". + - implemented with only a single C++ header file + - char, wchar_t and Windows TCHAR in the same program + - complete working examples included + - compiles cleanly at warning level 4 (Windows/VC.NET 2003), warning level + 3 (Windows/VC6) and -Wall (Linux/gcc) + + @section usage USAGE + + The SimpleGlob class is used by following these steps: + +
      +
    1. Include the SimpleGlob.h header file + +
      +        \#include "SimpleGlob.h"
      +        
      + +
    2. Instantiate a CSimpleGlob object supplying the appropriate flags. + +
      +        @link CSimpleGlobTempl CSimpleGlob @endlink glob(FLAGS);
      +        
      + +
    3. Add all file specifications to the glob class. + +
      +        glob.Add("file*");
      +        glob.Add(argc, argv);
      +        
      + +
    4. Process all files with File(), Files() and FileCount() + +
      +        for (int n = 0; n < glob.FileCount(); ++n) {
      +            ProcessFile(glob.File(n));
      +        }
      +        
      + +
    + + @section licence MIT LICENCE + + The licence text below is the boilerplate "MIT Licence" used from: + http://www.opensource.org/licenses/mit-license.php + + Copyright (c) 2006-2007, Brodie Thiesfield + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is furnished + to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +#ifndef INCLUDED_SimpleGlob +#define INCLUDED_SimpleGlob + +/*! @brief The operation of SimpleGlob is fine-tuned via the use of a combination + of the following flags. + + The flags may be passed at initialization of the class and used for every + filespec added, or alternatively they may optionally be specified in the + call to Add() and be different for each filespec. + + @param SG_GLOB_ERR + Return upon read error (e.g. directory does not have read permission) + + @param SG_GLOB_MARK + Append a slash (backslash in Windows) to every path which corresponds + to a directory + + @param SG_GLOB_NOSORT + By default, files are returned in sorted into string order. With this + flag, no sorting is done. This is not compatible with SG_GLOB_FULLSORT. + + @param SG_GLOB_FULLSORT + By default, files are sorted in groups belonging to each filespec that + was added. For example if the filespec "b*" was added before the filespec + "a*" then the argv array will contain all b* files sorted in order, + followed by all a* files sorted in order. If this flag is specified, the + entire array will be sorted ignoring the filespec groups. + + @param SG_GLOB_NOCHECK + If the pattern doesn't match anything, return the original pattern. + + @param SG_GLOB_TILDE + Tilde expansion is carried out (on Unix platforms) + + @param SG_GLOB_ONLYDIR + Return only directories which match (not compatible with SG_GLOB_ONLYFILE) + + @param SG_GLOB_ONLYFILE + Return only files which match (not compatible with SG_GLOB_ONLYDIR) + + @param SG_GLOB_NODOT + Do not return the "." or ".." special directories. + */ +enum SG_Flags { + SG_GLOB_ERR = 1 << 0, + SG_GLOB_MARK = 1 << 1, + SG_GLOB_NOSORT = 1 << 2, + SG_GLOB_NOCHECK = 1 << 3, + SG_GLOB_TILDE = 1 << 4, + SG_GLOB_ONLYDIR = 1 << 5, + SG_GLOB_ONLYFILE = 1 << 6, + SG_GLOB_NODOT = 1 << 7, + SG_GLOB_FULLSORT = 1 << 8 +}; + +/*! @brief Error return codes */ +enum SG_Error { + SG_SUCCESS = 0, + SG_ERR_NOMATCH = 1, + SG_ERR_MEMORY = -1, + SG_ERR_FAILURE = -2 +}; + +// ---------------------------------------------------------------------------- +// Platform dependent implementations + +// don't include this in documentation as it isn't relevant +#ifndef DOXYGEN + +// on Windows we want to use MBCS aware string functions and mimic the +// Unix glob functionality. On Unix we just use glob. +#ifdef _WIN32 +# include +# define sg_strchr ::_mbschr +# define sg_strrchr ::_mbsrchr +# define sg_strlen ::_mbslen +# if __STDC_WANT_SECURE_LIB__ +# define sg_strcpy_s(a,n,b) ::_mbscpy_s(a,n,b) +# else +# define sg_strcpy_s(a,n,b) ::_mbscpy(a,b) +# endif +# define sg_strcmp ::_mbscmp +# define sg_strcasecmp ::_mbsicmp +# define SOCHAR_T unsigned char +#else +# include +# include +# include +# include +# define MAX_PATH PATH_MAX +# define sg_strchr ::strchr +# define sg_strrchr ::strrchr +# define sg_strlen ::strlen +# define sg_strcpy_s(a,n,b) ::strcpy(a,b) +# define sg_strcmp ::strcmp +# define sg_strcasecmp ::strcasecmp +# define SOCHAR_T char +#endif + +#include +#include +#include + +// use assertions to test the input data +#ifdef _DEBUG +// FIXME: again +//# ifdef _WIN32 +//# include +//# define SG_ASSERT(b) _ASSERTE(b) +//# else +# include +# define SG_ASSERT(b) assert(b) +//# endif +#else +# define SG_ASSERT(b) +#endif + +/*! @brief String manipulation functions. */ +class SimpleGlobUtil +{ +public: + static const char * strchr(const char *s, char c) { + return (char *) sg_strchr((const SOCHAR_T *)s, c); + } + static const wchar_t * strchr(const wchar_t *s, wchar_t c) { + return ::wcschr(s, c); + } + + static const char * strrchr(const char *s, char c) { + return (char *) sg_strrchr((const SOCHAR_T *)s, c); + } + static const wchar_t * strrchr(const wchar_t *s, wchar_t c) { + return ::wcsrchr(s, c); + } + + // Note: char strlen returns number of bytes, not characters + static size_t strlen(const char *s) { return ::strlen(s); } + static size_t strlen(const wchar_t *s) { return ::wcslen(s); } + + static void strcpy_s(char *dst, size_t n, const char *src) { + (void) n; + sg_strcpy_s((SOCHAR_T *)dst, n, (const SOCHAR_T *)src); + } + static void strcpy_s(wchar_t *dst, size_t n, const wchar_t *src) { +# if __STDC_WANT_SECURE_LIB__ + ::wcscpy_s(dst, n, src); +#else + (void) n; + ::wcscpy(dst, src); +#endif + } + + static int strcmp(const char *s1, const char *s2) { + return sg_strcmp((const SOCHAR_T *)s1, (const SOCHAR_T *)s2); + } + static int strcmp(const wchar_t *s1, const wchar_t *s2) { + return ::wcscmp(s1, s2); + } + + static int strcasecmp(const char *s1, const char *s2) { + return sg_strcasecmp((const SOCHAR_T *)s1, (const SOCHAR_T *)s2); + } +#if _WIN32 + static int strcasecmp(const wchar_t *s1, const wchar_t *s2) { + return ::_wcsicmp(s1, s2); + } +#endif // _WIN32 +}; + +enum SG_FileType { + SG_FILETYPE_INVALID, + SG_FILETYPE_FILE, + SG_FILETYPE_DIR +}; + +#ifdef _WIN32 + +#ifndef INVALID_FILE_ATTRIBUTES +# define INVALID_FILE_ATTRIBUTES ((DWORD)-1) +#endif + +#define SG_PATH_CHAR '\\' + +/*! @brief Windows glob implementation. */ +template +struct SimpleGlobBase +{ + SimpleGlobBase() : m_hFind(INVALID_HANDLE_VALUE) { } + + int FindFirstFileS(const char * a_pszFileSpec, unsigned int) { + m_hFind = FindFirstFileA(a_pszFileSpec, &m_oFindDataA); + if (m_hFind != INVALID_HANDLE_VALUE) { + return SG_SUCCESS; + } + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_FILE_NOT_FOUND) { + return SG_ERR_NOMATCH; + } + return SG_ERR_FAILURE; + } + int FindFirstFileS(const wchar_t * a_pszFileSpec, unsigned int) { + m_hFind = FindFirstFileW(a_pszFileSpec, &m_oFindDataW); + if (m_hFind != INVALID_HANDLE_VALUE) { + return SG_SUCCESS; + } + DWORD dwErr = GetLastError(); + if (dwErr == ERROR_FILE_NOT_FOUND) { + return SG_ERR_NOMATCH; + } + return SG_ERR_FAILURE; + } + + bool FindNextFileS(char) { + return FindNextFileA(m_hFind, &m_oFindDataA) != FALSE; + } + bool FindNextFileS(wchar_t) { + return FindNextFileW(m_hFind, &m_oFindDataW) != FALSE; + } + + void FindDone() { + FindClose(m_hFind); + } + + const char * GetFileNameS(char) const { + return m_oFindDataA.cFileName; + } + const wchar_t * GetFileNameS(wchar_t) const { + return m_oFindDataW.cFileName; + } + + bool IsDirS(char) const { + return GetFileTypeS(m_oFindDataA.dwFileAttributes) == SG_FILETYPE_DIR; + } + bool IsDirS(wchar_t) const { + return GetFileTypeS(m_oFindDataW.dwFileAttributes) == SG_FILETYPE_DIR; + } + + SG_FileType GetFileTypeS(const char * a_pszPath) { + return GetFileTypeS(GetFileAttributesA(a_pszPath)); + } + SG_FileType GetFileTypeS(const wchar_t * a_pszPath) { + return GetFileTypeS(GetFileAttributesW(a_pszPath)); + } + SG_FileType GetFileTypeS(DWORD a_dwAttribs) const { + if (a_dwAttribs == INVALID_FILE_ATTRIBUTES) { + return SG_FILETYPE_INVALID; + } + if (a_dwAttribs & FILE_ATTRIBUTE_DIRECTORY) { + return SG_FILETYPE_DIR; + } + return SG_FILETYPE_FILE; + } + +private: + HANDLE m_hFind; + WIN32_FIND_DATAA m_oFindDataA; + WIN32_FIND_DATAW m_oFindDataW; +}; + +#else // !_WIN32 + +#define SG_PATH_CHAR '/' + +/*! @brief Unix glob implementation. */ +template +struct SimpleGlobBase +{ + SimpleGlobBase() { + memset(&m_glob, 0, sizeof(m_glob)); + m_uiCurr = (size_t)-1; + } + + ~SimpleGlobBase() { + globfree(&m_glob); + } + + void FilePrep() { + m_bIsDir = false; + size_t len = strlen(m_glob.gl_pathv[m_uiCurr]); + if (m_glob.gl_pathv[m_uiCurr][len-1] == '/') { + m_bIsDir = true; + m_glob.gl_pathv[m_uiCurr][len-1] = 0; + } + } + + int FindFirstFileS(const char * a_pszFileSpec, unsigned int a_uiFlags) { + int nFlags = GLOB_MARK | GLOB_NOSORT; + if (a_uiFlags & SG_GLOB_ERR) nFlags |= GLOB_ERR; + if (a_uiFlags & SG_GLOB_TILDE) nFlags |= GLOB_TILDE; + int rc = glob(a_pszFileSpec, nFlags, NULL, &m_glob); + if (rc == GLOB_NOSPACE) return SG_ERR_MEMORY; + if (rc == GLOB_ABORTED) return SG_ERR_FAILURE; + if (rc == GLOB_NOMATCH) return SG_ERR_NOMATCH; + m_uiCurr = 0; + FilePrep(); + return SG_SUCCESS; + } + + bool FindNextFileS(char) { + SG_ASSERT(m_uiCurr != (size_t)-1); + if (++m_uiCurr >= m_glob.gl_pathc) { + return false; + } + FilePrep(); + return true; + } + + void FindDone() { + globfree(&m_glob); + memset(&m_glob, 0, sizeof(m_glob)); + m_uiCurr = (size_t)-1; + } + + const char * GetFileNameS(char) const { + SG_ASSERT(m_uiCurr != (size_t)-1); + return m_glob.gl_pathv[m_uiCurr]; + } + + bool IsDirS(char) const { + SG_ASSERT(m_uiCurr != (size_t)-1); + return m_bIsDir; + } + + SG_FileType GetFileTypeS(const char * a_pszPath) const { + struct stat sb; + if (0 != stat(a_pszPath, &sb)) { + return SG_FILETYPE_INVALID; + } + if (S_ISDIR(sb.st_mode)) { + return SG_FILETYPE_DIR; + } + if (S_ISREG(sb.st_mode)) { + return SG_FILETYPE_FILE; + } + return SG_FILETYPE_INVALID; + } + +private: + glob_t m_glob; + size_t m_uiCurr; + bool m_bIsDir; +}; + +#endif // _WIN32 + +#endif // DOXYGEN + +// --------------------------------------------------------------------------- +// MAIN TEMPLATE CLASS +// --------------------------------------------------------------------------- + +/*! @brief Implementation of the SimpleGlob class */ +template +class CSimpleGlobTempl : private SimpleGlobBase +{ +public: + /*! @brief Initialize the class. + + @param a_uiFlags Combination of SG_GLOB flags. + @param a_nReservedSlots Number of slots in the argv array that + should be reserved. In the returned array these slots + argv[0] ... argv[a_nReservedSlots-1] will be left empty for + the caller to fill in. + */ + CSimpleGlobTempl(unsigned int a_uiFlags = 0, int a_nReservedSlots = 0); + + /*! @brief Deallocate all memory buffers. */ + ~CSimpleGlobTempl(); + + /*! @brief Initialize (or re-initialize) the class in preparation for + adding new filespecs. + + All existing files are cleared. Note that allocated memory is only + deallocated at object destruction. + + @param a_uiFlags Combination of SG_GLOB flags. + @param a_nReservedSlots Number of slots in the argv array that + should be reserved. In the returned array these slots + argv[0] ... argv[a_nReservedSlots-1] will be left empty for + the caller to fill in. + */ + int Init(unsigned int a_uiFlags = 0, int a_nReservedSlots = 0); + + /*! @brief Add a new filespec to the glob. + + The filesystem will be immediately scanned for all matching files and + directories and they will be added to the glob. + + @param a_pszFileSpec Filespec to add to the glob. + + @return SG_SUCCESS Matching files were added to the glob. + @return SG_ERR_NOMATCH Nothing matched the pattern. To ignore this error + compare the return value to >= SG_SUCCESS. + @return SG_ERR_MEMORY Out of memory failure. + @return SG_ERR_FAILURE General failure. + */ + int Add(const SOCHAR *a_pszFileSpec); + + /*! @brief Add an array of filespec to the glob. + + The filesystem will be immediately scanned for all matching files and + directories in each filespec and they will be added to the glob. + + @param a_nCount Number of filespec in the array. + @param a_rgpszFileSpec Array of filespec to add to the glob. + + @return SG_SUCCESS Matching files were added to the glob. + @return SG_ERR_NOMATCH Nothing matched the pattern. To ignore this error + compare the return value to >= SG_SUCCESS. + @return SG_ERR_MEMORY Out of memory failure. + @return SG_ERR_FAILURE General failure. + */ + int Add(int a_nCount, const SOCHAR * const * a_rgpszFileSpec); + + /*! @brief Return the number of files in the argv array. + */ + inline int FileCount() const { return m_nArgsLen; } + + /*! @brief Return the full argv array. */ + inline SOCHAR ** Files() { + SetArgvArrayType(POINTERS); + return m_rgpArgs; + } + + /*! @brief Return the a single file. */ + inline SOCHAR * File(int n) { + SG_ASSERT(n >= 0 && n < m_nArgsLen); + return Files()[n]; + } + +private: + /*! @brief The argv array has it's members stored as either an offset into + the string buffer, or as pointers to their string in the buffer. The offsets + are used because if the string buffer is dynamically resized, all pointers + into that buffer would become invalid. + */ + enum ARG_ARRAY_TYPE { OFFSETS, POINTERS }; + + /*! @brief Change the type of data stored in the argv array. */ + void SetArgvArrayType(ARG_ARRAY_TYPE a_nNewType); + + /*! @brief Add a filename to the array if it passes all requirements. */ + int AppendName(const SOCHAR *a_pszFileName, bool a_bIsDir); + + /*! @brief Grow the argv array to the required size. */ + bool GrowArgvArray(int a_nNewLen); + + /*! @brief Grow the string buffer to the required size. */ + bool GrowStringBuffer(size_t a_uiMinSize); + + /*! @brief Compare two (possible NULL) strings */ + static int fileSortCompare(const void *a1, const void *a2); + +private: + unsigned int m_uiFlags; + ARG_ARRAY_TYPE m_nArgArrayType; //!< is the argv array storing indexes or pointers + SOCHAR ** m_rgpArgs; //!< argv array + int m_nReservedSlots; //!< number of client reserved slots in the argv array + int m_nArgsSize; //!< allocated size of array + int m_nArgsLen; //!< used length + SOCHAR * m_pBuffer; //!< argv string buffer + size_t m_uiBufferSize; //!< allocated size of buffer + size_t m_uiBufferLen; //!< used length of buffer + SOCHAR m_szPathPrefix[MAX_PATH]; //!< path prefix of any wildcard filenames +}; + +// --------------------------------------------------------------------------- +// IMPLEMENTATION +// --------------------------------------------------------------------------- + +template +CSimpleGlobTempl::CSimpleGlobTempl( + unsigned int a_uiFlags, + int a_nReservedSlots + ) +{ + m_rgpArgs = NULL; + m_nArgsSize = 0; + m_pBuffer = NULL; + m_uiBufferSize = 0; + + Init(a_uiFlags, a_nReservedSlots); +} + +template +CSimpleGlobTempl::~CSimpleGlobTempl() +{ + if (m_rgpArgs) free(m_rgpArgs); + if (m_pBuffer) free(m_pBuffer); +} + +template +int +CSimpleGlobTempl::Init( + unsigned int a_uiFlags, + int a_nReservedSlots + ) +{ + m_nArgArrayType = POINTERS; + m_uiFlags = a_uiFlags; + m_nArgsLen = a_nReservedSlots; + m_nReservedSlots = a_nReservedSlots; + m_uiBufferLen = 0; + + if (m_nReservedSlots > 0) { + if (!GrowArgvArray(m_nReservedSlots)) { + return SG_ERR_MEMORY; + } + for (int n = 0; n < m_nReservedSlots; ++n) { + m_rgpArgs[n] = NULL; + } + } + + return SG_SUCCESS; +} + +template +int +CSimpleGlobTempl::Add( + const SOCHAR *a_pszFileSpec + ) +{ +#ifdef _WIN32 + // Windows FindFirst/FindNext recognizes forward slash as the same as backward slash + // and follows the directories. We need to do the same when calculating the prefix + // and when we have no wildcards. + SOCHAR szFileSpec[MAX_PATH]; + SimpleGlobUtil::strcpy_s(szFileSpec, MAX_PATH, a_pszFileSpec); + const SOCHAR * pszPath = SimpleGlobUtil::strchr(szFileSpec, '/'); + while (pszPath) { + szFileSpec[pszPath - szFileSpec] = SG_PATH_CHAR; + pszPath = SimpleGlobUtil::strchr(pszPath + 1, '/'); + } + a_pszFileSpec = szFileSpec; +#endif + + // if this doesn't contain wildcards then we can just add it directly + m_szPathPrefix[0] = 0; + if (!SimpleGlobUtil::strchr(a_pszFileSpec, '*') && + !SimpleGlobUtil::strchr(a_pszFileSpec, '?')) + { + SG_FileType nType = GetFileTypeS(a_pszFileSpec); + if (nType == SG_FILETYPE_INVALID) { + if (m_uiFlags & SG_GLOB_NOCHECK) { + return AppendName(a_pszFileSpec, false); + } + return SG_ERR_NOMATCH; + } + return AppendName(a_pszFileSpec, nType == SG_FILETYPE_DIR); + } + +#ifdef _WIN32 + // Windows doesn't return the directory with the filename, so we need to extract the + // path from the search string ourselves and prefix it to the filename we get back. + const SOCHAR * pszFilename = SimpleGlobUtil::strrchr(a_pszFileSpec, SG_PATH_CHAR); + if (pszFilename) { + SimpleGlobUtil::strcpy_s(m_szPathPrefix, MAX_PATH, a_pszFileSpec); + m_szPathPrefix[pszFilename - a_pszFileSpec + 1] = 0; + } +#endif + + // search for the first match on the file + int rc = FindFirstFileS(a_pszFileSpec, m_uiFlags); + if (rc != SG_SUCCESS) { + if (rc == SG_ERR_NOMATCH && (m_uiFlags & SG_GLOB_NOCHECK)) { + int ok = AppendName(a_pszFileSpec, false); + if (ok != SG_SUCCESS) rc = ok; + } + return rc; + } + + // add it and find all subsequent matches + int nError, nStartLen = m_nArgsLen; + bool bSuccess; + do { + nError = AppendName(GetFileNameS((SOCHAR)0), IsDirS((SOCHAR)0)); + bSuccess = FindNextFileS((SOCHAR)0); + } + while (nError == SG_SUCCESS && bSuccess); + SimpleGlobBase::FindDone(); + + // sort these files if required + if (m_nArgsLen > nStartLen && !(m_uiFlags & SG_GLOB_NOSORT)) { + if (m_uiFlags & SG_GLOB_FULLSORT) { + nStartLen = m_nReservedSlots; + } + SetArgvArrayType(POINTERS); + qsort( + m_rgpArgs + nStartLen, + m_nArgsLen - nStartLen, + sizeof(m_rgpArgs[0]), fileSortCompare); + } + + return nError; +} + +template +int +CSimpleGlobTempl::Add( + int a_nCount, + const SOCHAR * const * a_rgpszFileSpec + ) +{ + int nResult; + for (int n = 0; n < a_nCount; ++n) { + nResult = Add(a_rgpszFileSpec[n]); + if (nResult != SG_SUCCESS) { + return nResult; + } + } + return SG_SUCCESS; +} + +template +int +CSimpleGlobTempl::AppendName( + const SOCHAR * a_pszFileName, + bool a_bIsDir + ) +{ + // we need the argv array as offsets in case we resize it + SetArgvArrayType(OFFSETS); + + // check for special cases which cause us to ignore this entry + if ((m_uiFlags & SG_GLOB_ONLYDIR) && !a_bIsDir) { + return SG_SUCCESS; + } + if ((m_uiFlags & SG_GLOB_ONLYFILE) && a_bIsDir) { + return SG_SUCCESS; + } + if ((m_uiFlags & SG_GLOB_NODOT) && a_bIsDir) { + if (a_pszFileName[0] == '.') { + if (a_pszFileName[1] == '\0') { + return SG_SUCCESS; + } + if (a_pszFileName[1] == '.' && a_pszFileName[2] == '\0') { + return SG_SUCCESS; + } + } + } + + // ensure that we have enough room in the argv array + if (!GrowArgvArray(m_nArgsLen + 1)) { + return SG_ERR_MEMORY; + } + + // ensure that we have enough room in the string buffer + size_t uiPrefixLen = SimpleGlobUtil::strlen(m_szPathPrefix); + size_t uiLen = uiPrefixLen + SimpleGlobUtil::strlen(a_pszFileName) + 1; // + null character + if (a_bIsDir && (m_uiFlags & SG_GLOB_MARK) == SG_GLOB_MARK) { + ++uiLen; // need space for the backslash + } + if (!GrowStringBuffer(m_uiBufferLen + uiLen)) { + return SG_ERR_MEMORY; + } + + // add this entry + m_rgpArgs[m_nArgsLen++] = (SOCHAR*)m_uiBufferLen; // offset from beginning of buffer + SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen, + m_uiBufferSize - m_uiBufferLen, m_szPathPrefix); + SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen + uiPrefixLen, + m_uiBufferSize - m_uiBufferLen - uiPrefixLen, a_pszFileName); + m_uiBufferLen += uiLen; + + // add the directory slash if desired + if (a_bIsDir && (m_uiFlags & SG_GLOB_MARK) == SG_GLOB_MARK) { + const static SOCHAR szDirSlash[] = { SG_PATH_CHAR, 0 }; + SimpleGlobUtil::strcpy_s(m_pBuffer + m_uiBufferLen - 2, + m_uiBufferSize - (m_uiBufferLen - 2), szDirSlash); + } + + return SG_SUCCESS; +} + +template +void +CSimpleGlobTempl::SetArgvArrayType( + ARG_ARRAY_TYPE a_nNewType + ) +{ + if (m_nArgArrayType == a_nNewType) return; + if (a_nNewType == POINTERS) { + SG_ASSERT(m_nArgArrayType == OFFSETS); + for (int n = 0; n < m_nArgsLen; ++n) { + m_rgpArgs[n] = (m_rgpArgs[n] == (SOCHAR*)-1) ? + NULL : m_pBuffer + (size_t) m_rgpArgs[n]; + } + } + else { + SG_ASSERT(a_nNewType == OFFSETS); + SG_ASSERT(m_nArgArrayType == POINTERS); + for (int n = 0; n < m_nArgsLen; ++n) { + m_rgpArgs[n] = (m_rgpArgs[n] == NULL) ? + (SOCHAR*) -1 : (SOCHAR*) (m_rgpArgs[n] - m_pBuffer); + } + } + m_nArgArrayType = a_nNewType; +} + +template +bool +CSimpleGlobTempl::GrowArgvArray( + int a_nNewLen + ) +{ + if (a_nNewLen >= m_nArgsSize) { + static const int SG_ARGV_INITIAL_SIZE = 32; + int nNewSize = (m_nArgsSize > 0) ? m_nArgsSize * 2 : SG_ARGV_INITIAL_SIZE; + while (a_nNewLen >= nNewSize) { + nNewSize *= 2; + } + void * pNewBuffer = realloc(m_rgpArgs, nNewSize * sizeof(SOCHAR*)); + if (!pNewBuffer) return false; + m_nArgsSize = nNewSize; + m_rgpArgs = (SOCHAR**) pNewBuffer; + } + return true; +} + +template +bool +CSimpleGlobTempl::GrowStringBuffer( + size_t a_uiMinSize + ) +{ + if (a_uiMinSize >= m_uiBufferSize) { + static const int SG_BUFFER_INITIAL_SIZE = 1024; + size_t uiNewSize = (m_uiBufferSize > 0) ? m_uiBufferSize * 2 : SG_BUFFER_INITIAL_SIZE; + while (a_uiMinSize >= uiNewSize) { + uiNewSize *= 2; + } + void * pNewBuffer = realloc(m_pBuffer, uiNewSize * sizeof(SOCHAR)); + if (!pNewBuffer) return false; + m_uiBufferSize = uiNewSize; + m_pBuffer = (SOCHAR*) pNewBuffer; + } + return true; +} + +template +int +CSimpleGlobTempl::fileSortCompare( + const void *a1, + const void *a2 + ) +{ + const SOCHAR * s1 = *(const SOCHAR **)a1; + const SOCHAR * s2 = *(const SOCHAR **)a2; + if (s1 && s2) { + return SimpleGlobUtil::strcasecmp(s1, s2); + } + // NULL sorts first + return s1 == s2 ? 0 : (s1 ? 1 : -1); +} + +// --------------------------------------------------------------------------- +// TYPE DEFINITIONS +// --------------------------------------------------------------------------- + +typedef CSimpleGlobTempl CSimpleGlobA; /*!< @brief ASCII/MBCS version of CSimpleGlob */ +typedef CSimpleGlobTempl CSimpleGlobW; /*!< @brief wchar_t version of CSimpleGlob */ +#if defined(_UNICODE) +# define CSimpleGlob CSimpleGlobW /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#else +# define CSimpleGlob CSimpleGlobA /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#endif + +#endif // INCLUDED_SimpleGlob diff --git a/simpleopt/SimpleOpt.dsw b/simpleopt/SimpleOpt.dsw new file mode 100644 index 0000000..3f87357 --- /dev/null +++ b/simpleopt/SimpleOpt.dsw @@ -0,0 +1,53 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "basicSample"=.\basicSample.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "fullSample"=.\fullSample.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "globSample"=.\globSample.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/simpleopt/SimpleOpt.h b/simpleopt/SimpleOpt.h new file mode 100644 index 0000000..8d656b7 --- /dev/null +++ b/simpleopt/SimpleOpt.h @@ -0,0 +1,853 @@ +/*! @file SimpleOpt.h + + @version 2.8 + + @brief A cross-platform command line library which can parse almost any + of the standard command line formats in use today. It is designed explicitly + to be portable to any platform and has been tested on Windows and Linux. + See CSimpleOptTempl for the class definition. + + @section features FEATURES + + - MIT Licence allows free use in all software (including GPL and commercial) + - multi-platform (Windows 95/98/ME/NT/2K/XP, Linux, Unix) + - supports all lengths of option names: + +
    - switch character only (e.g. use stdin for input) +
    -o short (single character) +
    -long long (multiple character, single switch character) +
    --longer long (multiple character, multiple switch characters) +
    + - supports all types of arguments for options: + +
    --option short/long option flag (no argument) +
    --option ARG short/long option with separate required argument +
    --option=ARG short/long option with combined required argument +
    --option[=ARG] short/long option with combined optional argument +
    -oARG short option with combined required argument +
    -o[ARG] short option with combined optional argument +
    + - supports options with multiple or variable numbers of arguments: + +
    --multi ARG1 ARG2 Multiple arguments +
    --multi N ARG-1 ARG-2 ... ARG-N Variable number of arguments +
    + - supports options which do not use a switch character. i.e. a special word + which is construed as an option. e.g. "foo.exe open /directory/file.txt" + supports clumping of multiple short options (no arguments) in a string, e.g. + "foo.exe -abcdef file1" <==> "foo.exe -a -b -c -d -e -f file1" + - automatic recognition of a single slash as equivalent to a single hyphen + on Windows, e.g. "/f FILE" is equivalent to "-f FILE". + - file arguments can appear anywhere in the argument list: + "foo.exe file1.txt -a ARG file2.txt --flag file3.txt file4.txt" + files will be returned to the application in the same order they were supplied + on the command line + - short-circuit option matching: "--man" will match "--mandate" + invalid options can be handled while continuing to parse the command line + valid options list can be changed dynamically during command line processing, + i.e. accept different options depending on an option supplied earlier in the + command line. + - implemented with only a single C++ header file + - uses no C runtime or OS functions + - char, wchar_t and Windows TCHAR in the same program + - complete working examples included + - compiles cleanly at warning level 4 (Windows/VC.NET 2003), warning level + 3 (Windows/VC6) and -Wall (Linux/gcc) + + @section usage USAGE + + The SimpleOpt class is used by following these steps: + +
      +
    1. Include the SimpleOpt.h header file + +
      +        \#include "SimpleOpt.h"
      +        
      + +
    2. Define an array of valid options for your program. + +
      +        @link CSimpleOptTempl::SOption CSimpleOpt::SOption @endlink g_rgOptions[] = {
      +            { OPT_FLAG, _T("-a"),     SO_NONE    }, // "-a"
      +            { OPT_FLAG, _T("-b"),     SO_NONE    }, // "-b"
      +            { OPT_ARG,  _T("-f"),     SO_REQ_SEP }, // "-f ARG"
      +            { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
      +            { OPT_HELP, _T("--help"), SO_NONE    }, // "--help"
      +            SO_END_OF_OPTIONS                       // END
      +        };
      +        
      + + Note that all options must start with a hyphen even if the slash will + be accepted. This is because the slash character is automatically + converted into a hyphen to test against the list of options. For example, + the following line matches both "-?" and "/?" (on Windows). + +
      +        { OPT_HELP, _T("-?"),     SO_NONE    }, // "-?"
      +        
      + +
    3. Instantiate a CSimpleOpt object supplying argc, argv and the option table + +
      +        @link CSimpleOptTempl CSimpleOpt @endlink args(argc, argv, g_rgOptions);
      +        
      + +
    4. Process the arguments by calling Next() until it returns false. On each call, + first check for an error by calling LastError(), then either handle the error + or process the argument. + +
      +        while (args.Next()) {
      +            if (args.LastError() == SO_SUCCESS) {
      +                handle option: use OptionId(), OptionText() and OptionArg()
      +            }
      +            else {
      +                handle error: see ESOError enums
      +            }
      +        }
      +        
      + +
    5. Process all non-option arguments with File(), Files() and FileCount() + +
      +        ShowFiles(args.FileCount(), args.Files());
      +        
      + +
    + + @section notes NOTES + + - In MBCS mode, this library is guaranteed to work correctly only when all + option names use only ASCII characters. + + @section licence MIT LICENCE + + The licence text below is the boilerplate "MIT Licence" used from: + http://www.opensource.org/licenses/mit-license.php + + Copyright (c) 2006-2007, Brodie Thiesfield + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is furnished + to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/*! @mainpage + + +
    Library SimpleOpt +
    Author Brodie Thiesfield [code at jellycan dot com] +
    Source http://code.jellycan.com/simpleopt/ +
    + + @section SimpleOpt SimpleOpt + + A cross-platform library providing a simple method to parse almost any of the + standard command-line formats in use today. + + See the @link SimpleOpt.h SimpleOpt @endlink documentation for full details. + + @section SimpleGlob SimpleGlob + + A cross-platform file globbing library providing the ability to + expand wildcards in command-line arguments to a list of all matching files. + + See the @link SimpleGlob.h SimpleGlob @endlink documentation for full details. +*/ + +#ifndef INCLUDED_SimpleOpt +#define INCLUDED_SimpleOpt + + +//! Error values +typedef enum _ESOError +{ + SO_SUCCESS = 0, //!< No error + SO_OPT_INVALID = -1, /*!< It looks like an option (it starts with a switch character), + but it isn't registered in the option table. */ + SO_OPT_MULTIPLE = -2, /*!< Multiple options matched the supplied option text. + Only returned when NOT using SO_O_EXACT. */ + SO_ARG_INVALID = -3, /*!< Option doesn't take an argument, but a combined argument + was supplied. */ + SO_ARG_INVALID_TYPE = -4, /*!< SO_REQ_CMB style-argument was supplied to a SO_REQ_SEP option + Only returned when using SO_O_PEDANTIC. */ + SO_ARG_MISSING = -5, //!< Required argument was not supplied + SO_ARG_INVALID_DATA = -6 /*!< Option argument looks like another option. + Only returned when NOT using SO_O_NOERR. */ +} ESOError; + +//! Option flags +enum _ESOFlags +{ + SO_O_EXACT = 0x0001, /*!< Disallow partial matching of option names */ + SO_O_NOSLASH = 0x0002, /*!< Disallow use of slash as an option marker on Windows. + Un*x only ever recognizes a hyphen. */ + SO_O_SHORTARG = 0x0004, /*!< Permit arguments on single letter options with + no equals sign. e.g. -oARG or -o[ARG] */ + SO_O_CLUMP = 0x0008, /*!< Permit single character options to be clumped into + a single option string. e.g. "-a -b -c" <==> "-abc" */ + SO_O_USEALL = 0x0010, /*!< Process the entire argv array for options, including + the argv[0] entry. */ + SO_O_NOERR = 0x0020, /*!< Do not generate an error for invalid options. errors + for missing arguments will still be generated. invalid + options will be treated as files. invalid options in + clumps will be silently ignored. */ + SO_O_PEDANTIC = 0x0040 /*!< Validate argument type pedantically. Return an error when + a separated argument "-opt arg" is supplied by the user + as a combined argument "-opt=arg". By default this is + not considered an error. */ +}; + +/*! Types of arguments that options may have. Note that some of the _ESOFlags are + not compatible with all argument types. SO_O_SHORTARG requires that relevant + options use either SO_REQ_CMB or SO_OPT. SO_O_CLUMP requires that relevant options + use only SO_NONE. + */ +typedef enum _ESOArgType { + SO_NONE, //!< No argument. -o --opt + SO_REQ_SEP, //!< Required separate argument. -o ARG --opt ARG + SO_REQ_CMB, //!< Required combined argument. -oARG -o=ARG --opt=ARG + SO_OPT, //!< Optional combined argument. -o[ARG] -o[=ARG] --opt[=ARG] + SO_MULTI //!< Multiple separate arguments. -o ARG1 ARG2 ... --opt ARG1 ARG2 ... +} ESOArgType; + +//! this option definition must be the last entry in the table +#define SO_END_OF_OPTIONS { -1, NULL, SO_NONE } + +#ifdef _DEBUG +// FIXME +//# ifdef _WIN32 +//# include +//# define SO_ASSERT(b) _ASSERTE(b) +//# else +# include +# define SO_ASSERT(b) assert(b) +//# endif +#else +# define SO_ASSERT(b) //!< assertion used to test input data +#endif + +// --------------------------------------------------------------------------- +// MAIN TEMPLATE CLASS +// --------------------------------------------------------------------------- + +/*! @brief Implementation of the SimpleOpt class */ +template +class CSimpleOptTempl +{ +public: + /*! @brief Structure used to define all known options. */ + struct SOption { + int nId; //!< ID to return for this flag. Optional but must be >= 0 + SOCHAR * pszArg; //!< arg string to search for, e.g. "open", "-", "-f", "--file" + // Note that on Windows the slash option marker will be converted + // to a hyphen so that "-f" will also match "/f". + ESOArgType nArgType; //!< type of argument accepted by this option + }; + + /*! @brief Initialize the class. Init() must be called later. */ + CSimpleOptTempl() { Init(0, NULL, NULL, 0); } + + /*! @brief Initialize the class in preparation for use. */ + CSimpleOptTempl(int argc, SOCHAR * argv[], const SOption * a_rgOptions, int a_nFlags = 0) { + Init(argc, argv, a_rgOptions, a_nFlags); + } + + /*! @brief Initialize the class in preparation for calling Next. + + The table of options pointed to by a_rgOptions does not need to be valid + at the time that Init() is called. However on every call to Next() the + table pointed to must be a valid options table with the last valid + entry set to SO_END_OF_OPTIONS. + + NOTE: the array pointed to by a_argv will be modified by this + class and must not be used or modified outside of member calls to + this class. + + @param a_argc Argument array size + @param a_argv Argument array + @param a_rgOptions Valid option array + @param a_nFlags Optional flags to modify the processing of the arguments + */ + void Init(int a_argc, SOCHAR * a_argv[], const SOption * a_rgOptions, int a_nFlags = 0); + + /*! @brief Change the current options table during option parsing. + + @param a_rgOptions Valid option array + */ + inline void SetOptions(const SOption * a_rgOptions) { m_rgOptions = a_rgOptions; } + + /*! @brief Change the current flags during option parsing. + + Note that changing the SO_O_USEALL flag here will have no affect. + It must be set using Init() or the constructor. + + @param a_nFlags Flags to modify the processing of the arguments + */ + inline void SetFlags(int a_nFlags) { m_nFlags = a_nFlags; } + + /*! @brief Query if a particular flag is set */ + inline bool HasFlag(int a_nFlag) const { return (m_nFlags & a_nFlag) == a_nFlag; } + + /*! @brief Advance to the next option if available. + + When all options have been processed it will return false. When true has been + returned, you must check for an invalid or unrecognized option using the + LastError() method. This will be return an error value other than SO_SUCCESS + on an error. All standard data (e.g. OptionText(), OptionArg(), OptionId(), etc) + will be available depending on the error. + + After all options have been processed, the remaining files from the + command line can be processed in same order as they were passed to + the program. + + @return true option or error available for processing + @return false all options have been processed + */ + bool Next(); + + /*! @brief Return the last error that occurred. + + This function must always be called before processing the current option. + This function is available only when Next() has returned true. + */ + inline ESOError LastError() const { return m_nLastError; } + + /*! @brief Return the nId value from the options array for the current option. + + This function is available only when Next() has returned true. + */ + inline int OptionId() const { return m_nOptionId; } + + /*! @brief Return the pszArg from the options array for the current option. + + This function is available only when Next() has returned true. + */ + inline SOCHAR * OptionText() const { return m_pszOptionText; } + + /*! @brief Return the argument for the current option where one exists. + + If there is no argument for the option, this will return NULL. + This function is available only when Next() has returned true. + */ + inline SOCHAR * OptionArg() const { return m_pszOptionArg; } + + /*! @brief Validate and return the desired number of arguments. + + This is only valid when OptionId() has return the ID of an option + that is registered as SO_MULTI. It may be called multiple times + each time returning the desired number of arguments. Previously + returned argument pointers are remain valid. + + If an error occurs during processing, NULL will be returned and + the error will be available via LastError(). + + @param n Number of arguments to return. + */ + SOCHAR ** MultiArg(int n); + + /*! @brief Returned the number of entries in the Files() array. + + After Next() has returned false, this will be the list of files (or + otherwise unprocessed arguments). + */ + inline int FileCount() const { return m_argc - m_nLastArg; } + + /*! @brief Return the specified file argument. + + @param n Index of the file to return. This must be between 0 + and FileCount() - 1; + */ + inline SOCHAR * File(int n) const { + SO_ASSERT(n >= 0 && n < FileCount()); + return m_argv[m_nLastArg + n]; + } + + /*! @brief Return the array of files. */ + inline SOCHAR ** Files() const { return &m_argv[m_nLastArg]; } + +private: + SOCHAR PrepareArg(SOCHAR * a_pszString) const; + bool NextClumped(); + void ShuffleArg(int a_nStartIdx, int a_nCount); + int LookupOption(const SOCHAR * a_pszOption) const; + int CalcMatch(const SOCHAR *a_pszSource, const SOCHAR *a_pszTest) const; + + // Find the '=' character within a string. + inline SOCHAR * FindEquals(SOCHAR *s) const { + while (*s && *s != (SOCHAR)'=') ++s; + return *s ? s : NULL; + } + +private: + const SOption * m_rgOptions; // pointer to options table as passed in to soInit() + int m_nFlags; // flags for parsing the command line + int m_nOptionIdx; // index of the current option in argv + int m_nOptionId; // id of the current option (or -1 if invalid option) + int m_nNextOption; // index of the next option to be processed + int m_nLastArg; // last unprocessed argument, after this are files + int m_argc; // argc to process + SOCHAR ** m_argv; // argv (rearranged during processing) + SOCHAR * m_pszOptionText; // text of the current option, e.g. "-f" or "--file" + SOCHAR * m_pszOptionArg; // argument for the current option, e.g. "c:\blah.txt" (or NULL if no argument) + SOCHAR * m_pszClump; // processing of clumped single character options + SOCHAR m_szShort[3]; // extract short option text from clumps and combined arguments + ESOError m_nLastError; // error status from the last call +}; + +// --------------------------------------------------------------------------- +// IMPLEMENTATION +// --------------------------------------------------------------------------- + +template +void +CSimpleOptTempl::Init( + int a_argc, + SOCHAR * a_argv[], + const SOption * a_rgOptions, + int a_nFlags + ) +{ + m_argc = a_argc; + m_nLastArg = a_argc; + m_argv = a_argv; + m_rgOptions = a_rgOptions; + m_nLastError = SO_SUCCESS; + m_nOptionIdx = 0; + m_nOptionId = -1; + m_pszOptionText = NULL; + m_pszOptionArg = NULL; + m_nNextOption = (a_nFlags & SO_O_USEALL) ? 0 : 1; + m_szShort[0] = (SOCHAR)'-'; + m_szShort[2] = (SOCHAR)'\0'; + m_nFlags = a_nFlags; + m_pszClump = NULL; +} + +template +bool +CSimpleOptTempl::Next() +{ + // process a clumped option string if appropriate + if (m_pszClump && *m_pszClump) { + // silently discard invalid clumped option + bool bIsValid = NextClumped(); + while (*m_pszClump && !bIsValid && HasFlag(SO_O_NOERR)) { + bIsValid = NextClumped(); + } + + // return this option if valid or we are returning errors + if (bIsValid || !HasFlag(SO_O_NOERR)) { + return true; + } + } + SO_ASSERT(!m_pszClump || !*m_pszClump); + m_pszClump = NULL; + + // init for the next option + m_nOptionIdx = m_nNextOption; + m_nOptionId = -1; + m_pszOptionText = NULL; + m_pszOptionArg = NULL; + m_nLastError = SO_SUCCESS; + + // find the next option + SOCHAR cFirst; + int nTableIdx = -1; + int nOptIdx = m_nOptionIdx; + while (nTableIdx < 0 && nOptIdx < m_nLastArg) { + // assumed argument + m_pszOptionText = m_argv[nOptIdx]; + m_pszOptionArg = NULL; + + // find this option in the options table + cFirst = PrepareArg(m_pszOptionText); + if (m_pszOptionText[0] == (SOCHAR)'-') { + // find any combined argument string and remove equals sign + m_pszOptionArg = FindEquals(m_pszOptionText); + if (m_pszOptionArg) { + *m_pszOptionArg++ = (SOCHAR)'\0'; + } + } + nTableIdx = LookupOption(m_pszOptionText); + + // if we didn't find this option but if it is a short form + // option then we try the alternative forms + if (nTableIdx < 0 + && !m_pszOptionArg + && m_pszOptionText[0] == (SOCHAR)'-' + && m_pszOptionText[1] + && m_pszOptionText[1] != (SOCHAR)'-' + && m_pszOptionText[2]) + { + // test for a short-form with argument if appropriate + if (HasFlag(SO_O_SHORTARG)) { + m_szShort[1] = m_pszOptionText[1]; + int nIdx = LookupOption(m_szShort); + if (nIdx >= 0 + && (m_rgOptions[nIdx].nArgType == SO_REQ_CMB + || m_rgOptions[nIdx].nArgType == SO_OPT)) + { + m_pszOptionArg = &m_pszOptionText[2]; + m_pszOptionText = m_szShort; + nTableIdx = nIdx; + } + } + + // test for a clumped short-form option string and we didn't + // match on the short-form argument above + if (nTableIdx < 0 && HasFlag(SO_O_CLUMP)) { + m_pszClump = &m_pszOptionText[1]; + ++m_nNextOption; + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + return Next(); + } + } + + // The option wasn't found. If it starts with a switch character + // and we are not suppressing errors for invalid options then it + // is reported as an error, otherwise it is data. + if (nTableIdx < 0) { + if (!HasFlag(SO_O_NOERR) && m_pszOptionText[0] == (SOCHAR)'-') { + break; + } + m_pszOptionText[0] = cFirst; + ++nOptIdx; + if (m_pszOptionArg) { + *(--m_pszOptionArg) = (SOCHAR)'='; + } + } + } + + // end of options + if (nOptIdx >= m_nLastArg) { + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + return false; + } + ++m_nNextOption; + + // get the option id + ESOArgType nArgType = SO_NONE; + if (nTableIdx < 0) { + m_nLastError = (ESOError) nTableIdx; // error code + } + else { + m_nOptionId = m_rgOptions[nTableIdx].nId; + m_pszOptionText = m_rgOptions[nTableIdx].pszArg; + + // ensure that the arg type is valid + nArgType = m_rgOptions[nTableIdx].nArgType; + switch (nArgType) { + case SO_NONE: + if (m_pszOptionArg) { + m_nLastError = SO_ARG_INVALID; + } + break; + + case SO_REQ_SEP: + if (m_pszOptionArg) { + // they wanted separate args, but we got a combined one, unless + // we are being pedantic about things, just accept it. + if (HasFlag(SO_O_PEDANTIC)) { + m_nLastError = SO_ARG_INVALID_TYPE; + } + } + // more processing after we shuffle + break; + + case SO_REQ_CMB: + if (!m_pszOptionArg) { + m_nLastError = SO_ARG_MISSING; + } + break; + + case SO_OPT: + // nothing to do + break; + + case SO_MULTI: + // nothing to do. Caller must now check for valid arguments + // using GetMultiArg() + break; + } + } + + // shuffle the files out of the way + if (nOptIdx > m_nOptionIdx) { + ShuffleArg(m_nOptionIdx, nOptIdx - m_nOptionIdx); + } + + // we need to return the separate arg if required, just re-use the + // multi-arg code because it all does the same thing + if (nArgType == SO_REQ_SEP && !m_pszOptionArg && m_nLastError == SO_SUCCESS) { + SOCHAR ** ppArgs = MultiArg(1); + if (ppArgs) { + m_pszOptionArg = *ppArgs; + } + } + + return true; +} + +template +SOCHAR +CSimpleOptTempl::PrepareArg( + SOCHAR * a_pszString + ) const +{ +#ifdef _WIN32 + // On Windows we can accept the forward slash as a single character + // option delimiter, but it cannot replace the '-' option used to + // denote stdin. On Un*x paths may start with slash so it may not + // be used to start an option. + if (!HasFlag(SO_O_NOSLASH) + && a_pszString[0] == (SOCHAR)'/' + && a_pszString[1] + && a_pszString[1] != (SOCHAR)'-') + { + a_pszString[0] = (SOCHAR)'-'; + return (SOCHAR)'/'; + } +#endif + return a_pszString[0]; +} + +template +bool +CSimpleOptTempl::NextClumped() +{ + // prepare for the next clumped option + m_szShort[1] = *m_pszClump++; + m_nOptionId = -1; + m_pszOptionText = m_szShort; + m_pszOptionArg = NULL; + m_nLastError = SO_SUCCESS; + + // lookup this option, ensure that we are using exact matching + int nSavedFlags = m_nFlags; + m_nFlags = SO_O_EXACT; + int nTableIdx = LookupOption(m_pszOptionText); + m_nFlags = nSavedFlags; + + // unknown option + if (nTableIdx < 0) { + m_nLastError = (ESOError) nTableIdx; // error code + return false; + } + + // valid option + ESOArgType nArgType = m_rgOptions[nTableIdx].nArgType; + if (nArgType == SO_NONE) { + m_nOptionId = m_rgOptions[nTableIdx].nId; + return true; + } + + if (nArgType == SO_REQ_CMB && *m_pszClump) { + m_nOptionId = m_rgOptions[nTableIdx].nId; + m_pszOptionArg = m_pszClump; + while (*m_pszClump) ++m_pszClump; // must point to an empty string + return true; + } + + // invalid option as it requires an argument + m_nLastError = SO_ARG_MISSING; + return true; +} + +// Shuffle arguments to the end of the argv array. +// +// For example: +// argv[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8" }; +// +// ShuffleArg(1, 1) = { "0", "2", "3", "4", "5", "6", "7", "8", "1" }; +// ShuffleArg(5, 2) = { "0", "1", "2", "3", "4", "7", "8", "5", "6" }; +// ShuffleArg(2, 4) = { "0", "1", "6", "7", "8", "2", "3", "4", "5" }; +template +void +CSimpleOptTempl::ShuffleArg( + int a_nStartIdx, + int a_nCount + ) +{ + SOCHAR * buf[200]; + int n, nSrc, nDst; + int nTail = m_argc - a_nStartIdx - a_nCount; + + // make a copy of the elements to be moved + nSrc = a_nStartIdx; + nDst = 0; + while (nDst < a_nCount) { + buf[nDst++] = m_argv[nSrc++]; + } + + // move the tail down + nSrc = a_nStartIdx + a_nCount; + nDst = a_nStartIdx; + for (n = 0; n < nTail; ++n) { + m_argv[nDst++] = m_argv[nSrc++]; + } + + // append the moved elements to the tail + nSrc = 0; + nDst = a_nStartIdx + nTail; + for (n = 0; n < a_nCount; ++n) { + m_argv[nDst++] = buf[nSrc++]; + } + + // update the index of the last unshuffled arg + m_nLastArg -= a_nCount; +} + +// match on the long format strings. partial matches will be +// accepted only if that feature is enabled. +template +int +CSimpleOptTempl::LookupOption( + const SOCHAR * a_pszOption + ) const +{ + int nBestMatch = -1; // index of best match so far + int nBestMatchLen = 0; // matching characters of best match + int nLastMatchLen = 0; // matching characters of last best match + + for (int n = 0; m_rgOptions[n].nId >= 0; ++n) { + // the option table must use hyphens as the option character, + // the slash character is converted to a hyphen for testing. + SO_ASSERT(m_rgOptions[n].pszArg[0] != (SOCHAR)'/'); + + int nMatchLen = CalcMatch(m_rgOptions[n].pszArg, a_pszOption); + if (nMatchLen == -1) { + return n; + } + if (nMatchLen > 0 && nMatchLen >= nBestMatchLen) { + nLastMatchLen = nBestMatchLen; + nBestMatchLen = nMatchLen; + nBestMatch = n; + } + } + + // only partial matches or no match gets to here, ensure that we + // don't return a partial match unless it is a clear winner + if (HasFlag(SO_O_EXACT) || nBestMatch == -1) { + return SO_OPT_INVALID; + } + return (nBestMatchLen > nLastMatchLen) ? nBestMatch : SO_OPT_MULTIPLE; +} + +// calculate the number of characters that match (case-sensitive) +// 0 = no match, > 0 == number of characters, -1 == perfect match +template +int +CSimpleOptTempl::CalcMatch( + const SOCHAR * a_pszSource, + const SOCHAR * a_pszTest + ) const +{ + if (!a_pszSource || !a_pszTest) { + return 0; + } + + // match and skip leading hyphens + while (*a_pszSource == (SOCHAR)'-' && *a_pszSource == *a_pszTest) { + ++a_pszSource; ++a_pszTest; + } + if (*a_pszSource == (SOCHAR)'-' || *a_pszTest == (SOCHAR)'-') { + return 0; + } + + // find matching number of characters in the strings + int nLen = 0; + while (*a_pszSource && *a_pszSource == *a_pszTest) { + ++a_pszSource; ++a_pszTest; ++nLen; + } + + // if we have exhausted the source... + if (!*a_pszSource) { + // and the test strings, then it's a perfect match + if (!*a_pszTest) { + return -1; + } + + // otherwise the match failed as the test is longer than + // the source. i.e. "--mant" will not match the option "--man". + return 0; + } + + // if we haven't exhausted the test string then it is not a match + // i.e. "--mantle" will not best-fit match to "--mandate" at all. + if (*a_pszTest) { + return 0; + } + + // partial match to the current length of the test string + return nLen; +} + +// calculate the number of characters that match (case-sensitive) +// 0 = no match, > 0 == number of characters, -1 == perfect match +template +SOCHAR ** +CSimpleOptTempl::MultiArg( + int a_nCount + ) +{ + // ensure we have enough arguments + if (m_nNextOption + a_nCount > m_nLastArg) { + m_nLastError = SO_ARG_MISSING; + return NULL; + } + + // our argument array + SOCHAR ** rgpszArg = &m_argv[m_nNextOption]; + + // Ensure that each of the following don't start with an switch character. + // Only make this check if we are returning errors for unknown arguments. + if (!HasFlag(SO_O_NOERR)) { + for (int n = 0; n < a_nCount; ++n) { + SOCHAR ch = PrepareArg(rgpszArg[n]); + if (rgpszArg[n][0] == (SOCHAR)'-') { + rgpszArg[n][0] = ch; + m_nLastError = SO_ARG_INVALID_DATA; + return NULL; + } + rgpszArg[n][0] = ch; + } + } + + // all good + m_nNextOption += a_nCount; + return rgpszArg; +} + + +// --------------------------------------------------------------------------- +// TYPE DEFINITIONS +// --------------------------------------------------------------------------- + +typedef CSimpleOptTempl CSimpleOptA; /*!< @brief ASCII/MBCS version of CSimpleOpt */ +typedef CSimpleOptTempl CSimpleOptW; /*!< @brief wchar_t version of CSimpleOpt */ +#if defined(_UNICODE) +# define CSimpleOpt CSimpleOptW /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#else +# define CSimpleOpt CSimpleOptA /*!< @brief TCHAR version dependent on if _UNICODE is defined */ +#endif + +#endif // INCLUDED_SimpleOpt diff --git a/simpleopt/SimpleOpt.sln b/simpleopt/SimpleOpt.sln new file mode 100644 index 0000000..52935d4 --- /dev/null +++ b/simpleopt/SimpleOpt.sln @@ -0,0 +1,54 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "basicSample", "basicSample.vcproj", "{BC46A349-E59A-4FDC-B56A-A668ED552758}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fullSample", "fullSample.vcproj", "{4693B3B5-9070-4DC3-8C61-AAD6BF288E90}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "globSample", "globSample.vcproj", "{F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Debug Unicode = Debug Unicode + Release = Release + Release Unicode = Release Unicode + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug.ActiveCfg = Debug|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug.Build.0 = Debug|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug Unicode.ActiveCfg = Debug Unicode|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Debug Unicode.Build.0 = Debug Unicode|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release.ActiveCfg = Release|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release.Build.0 = Release|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release Unicode.ActiveCfg = Release Unicode|Win32 + {BC46A349-E59A-4FDC-B56A-A668ED552758}.Release Unicode.Build.0 = Release Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug.ActiveCfg = Debug|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug.Build.0 = Debug|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug Unicode.ActiveCfg = Debug Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Debug Unicode.Build.0 = Debug Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release.ActiveCfg = Release|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release.Build.0 = Release|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release Unicode.ActiveCfg = Release Unicode|Win32 + {4693B3B5-9070-4DC3-8C61-AAD6BF288E90}.Release Unicode.Build.0 = Release Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug.ActiveCfg = Debug|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug.Build.0 = Debug|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug Unicode.ActiveCfg = Debug Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Debug Unicode.Build.0 = Debug Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release.ActiveCfg = Release|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release.Build.0 = Release|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release Unicode.ActiveCfg = Release Unicode|Win32 + {F3EED8E1-D911-4CAC-A8A2-BF127A6AC772}.Release Unicode.Build.0 = Release Unicode|Win32 + EndGlobalSection + GlobalSection(SolutionItems) = postSolution + makefile = makefile + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/simpleopt/basicSample.cpp b/simpleopt/basicSample.cpp new file mode 100644 index 0000000..066624e --- /dev/null +++ b/simpleopt/basicSample.cpp @@ -0,0 +1,112 @@ +// File: basicSample.cpp +// Library: SimpleOpt +// Author: Brodie Thiesfield +// Source: http://code.jellycan.com/simpleopt/ +// +// MIT LICENCE +// =========== +// The licence text below is the boilerplate "MIT Licence" used from: +// http://www.opensource.org/licenses/mit-license.php +// +// Copyright (c) 2006, Brodie Thiesfield +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is furnished +// to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#define _CRT_SECURE_NO_DEPRECATE + +#if defined(_MSC_VER) +# include +# include +#else +# define TCHAR char +# define _T(x) x +# define _tprintf printf +# define _tmain main +#endif +#include +#include + +#include "SimpleOpt.h" +#include "SimpleGlob.h" + +// define the ID values to indentify the option +enum { OPT_HELP, OPT_FLAG, OPT_ARG }; + +// declare a table of CSimpleOpt::SOption structures. See the SimpleOpt.h header +// for details of each entry in this structure. In summary they are: +// 1. ID for this option. This will be returned from OptionId() during processing. +// It may be anything >= 0 and may contain duplicates. +// 2. Option as it should be written on the command line +// 3. Type of the option. See the header file for details of all possible types. +// The SO_REQ_SEP type means an argument is required and must be supplied +// separately, e.g. "-f FILE" +// 4. The last entry must be SO_END_OF_OPTIONS. +// +CSimpleOpt::SOption g_rgOptions[] = { + { OPT_FLAG, _T("-a"), SO_NONE }, // "-a" + { OPT_FLAG, _T("-b"), SO_NONE }, // "-b" + { OPT_ARG, _T("-f"), SO_REQ_SEP }, // "-f ARG" + { OPT_HELP, _T("-?"), SO_NONE }, // "-?" + { OPT_HELP, _T("--help"), SO_NONE }, // "--help" + SO_END_OF_OPTIONS // END +}; + +// show the usage of this program +void ShowUsage() { + _tprintf(_T("Usage: basicSample [-a] [-b] [-f FILE] [-?] [--help] FILES\n")); +} + +int _tmain(int argc, TCHAR * argv[]) { + // declare our options parser, pass in the arguments from main + // as well as our array of valid options. + CSimpleOpt args(argc, argv, g_rgOptions); + + // while there are arguments left to process + while (args.Next()) { + if (args.LastError() == SO_SUCCESS) { + if (args.OptionId() == OPT_HELP) { + ShowUsage(); + return 0; + } + _tprintf(_T("Option, ID: %d, Text: '%s', Argument: '%s'\n"), + args.OptionId(), args.OptionText(), + args.OptionArg() ? args.OptionArg() : _T("")); + } + else { + _tprintf(_T("Invalid argument: %s\n"), args.OptionText()); + return 1; + } + } + + // process any files that were passed to us on the command line. + // send them to the globber so that all wildcards are expanded + // into valid filenames (e.g. *.cpp -> a.cpp, b.cpp, c.cpp, etc) + // See the SimpleGlob.h header file for details of the flags. + CSimpleGlob glob(SG_GLOB_NODOT|SG_GLOB_NOCHECK); + if (SG_SUCCESS != glob.Add(args.FileCount(), args.Files())) { + _tprintf(_T("Error while globbing files\n")); + return 1; + } + + // dump all of the details, the script that was passed on the + // command line and the expanded file names + for (int n = 0; n < glob.FileCount(); ++n) { + _tprintf(_T("file %d: '%s'\n"), n, glob.File(n)); + } + + return 0; +} diff --git a/simpleopt/basicSample.dsp b/simpleopt/basicSample.dsp new file mode 100644 index 0000000..2e000b6 --- /dev/null +++ b/simpleopt/basicSample.dsp @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="basicSample" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=basicSample - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "basicSample.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "basicSample.mak" CFG="basicSample - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "basicSample - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "basicSample - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "basicSample - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "basicSample - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "basicSample - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "basicRelease" +# PROP BASE Intermediate_Dir "basicRelease" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "basicRelease" +# PROP Intermediate_Dir "basicRelease" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "basicSample - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "basicDebug" +# PROP BASE Intermediate_Dir "basicDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "basicDebug" +# PROP Intermediate_Dir "basicDebug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "basicSample - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "basicDebugUnicode" +# PROP BASE Intermediate_Dir "basicDebugUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "basicDebugUnicode" +# PROP Intermediate_Dir "basicDebugUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /GZ /c +# SUBTRACT CPP /Fr +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "basicSample - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "basicReleaseUnicode" +# PROP BASE Intermediate_Dir "basicReleaseUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "basicReleaseUnicode" +# PROP Intermediate_Dir "basicReleaseUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "basicSample - Win32 Release" +# Name "basicSample - Win32 Debug" +# Name "basicSample - Win32 Debug Unicode" +# Name "basicSample - Win32 Release Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\basicSample.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\SimpleGlob.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleOpt.h +# End Source File +# End Group +# End Target +# End Project diff --git a/simpleopt/basicSample.vcproj b/simpleopt/basicSample.vcproj new file mode 100644 index 0000000..95c867a --- /dev/null +++ b/simpleopt/basicSample.vcproj @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simpleopt/fullSample.cpp b/simpleopt/fullSample.cpp new file mode 100644 index 0000000..b5c64cf --- /dev/null +++ b/simpleopt/fullSample.cpp @@ -0,0 +1,247 @@ +// File: fullSample.cpp +// Library: SimpleOpt +// Author: Brodie Thiesfield +// Source: http://code.jellycan.com/simpleopt/ +// +// MIT LICENCE +// =========== +// The licence text below is the boilerplate "MIT Licence" used from: +// http://www.opensource.org/licenses/mit-license.php +// +// Copyright (c) 2006, Brodie Thiesfield +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is furnished +// to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#if defined(_MSC_VER) +# include +# include +#else +# define TCHAR char +# define _T(x) x +# define _tprintf printf +# define _tmain main +# define _ttoi atoi +#endif + +#include +#include +#include "SimpleOpt.h" +#include "SimpleGlob.h" + +static void ShowUsage() +{ + _tprintf( + _T("Usage: fullSample [OPTIONS] [FILES]\n") + _T("\n") + _T("--exact Disallow partial matching of option names\n") + _T("--noslash Disallow use of slash as an option marker on Windows\n") + _T("--shortarg Permit arguments on single letter options with no equals sign\n") + _T("--clump Permit single char options to be clumped as long string\n") + _T("--noerr Do not generate any errors for invalid options\n") + _T("--pedantic Generate an error for petty things\n") + _T("\n") + _T("-d -e -f -g -flag --flag Flag (no arg)\n") + _T("-s ARG -sep ARG --sep ARG Separate required arg\n") + _T("-cARG -c=ARG -com=ARG --com=ARG Combined required arg\n") + _T("-o[ARG] -o[=ARG] -opt[=ARG] --opt[=ARG] Combined optional arg\n") + _T("-man -mandy -mandate Shortcut matching tests\n") + _T("--man --mandy --mandate Shortcut matching tests\n") + _T("--multi0 --multi1 ARG --multi2 ARG1 ARG2 Multiple argument tests\n") + _T("--multi N ARG-1 ARG-2 ... ARG-N Multiple argument tests\n") + _T("open read write close zip unzip Special words\n") + _T("\n") + _T("-? -h -help --help Output this help.\n") + _T("\n") + _T("If a FILE is `-', read standard input.\n") + ); +} + +CSimpleOpt::SOption g_rgFlags[] = +{ + { SO_O_EXACT, _T("--exact"), SO_NONE }, + { SO_O_NOSLASH, _T("--noslash"), SO_NONE }, + { SO_O_SHORTARG, _T("--shortarg"), SO_NONE }, + { SO_O_CLUMP, _T("--clump"), SO_NONE }, + { SO_O_NOERR, _T("--noerr"), SO_NONE }, + { SO_O_PEDANTIC, _T("--pedantic"), SO_NONE }, + SO_END_OF_OPTIONS +}; + +enum { OPT_HELP = 0, OPT_MULTI = 100, OPT_MULTI0, OPT_MULTI1, OPT_MULTI2 }; +CSimpleOpt::SOption g_rgOptions[] = +{ + { OPT_HELP, _T("-?"), SO_NONE }, + { OPT_HELP, _T("-h"), SO_NONE }, + { OPT_HELP, _T("-help"), SO_NONE }, + { OPT_HELP, _T("--help"), SO_NONE }, + { 1, _T("-"), SO_NONE }, + { 2, _T("-d"), SO_NONE }, + { 3, _T("-e"), SO_NONE }, + { 4, _T("-f"), SO_NONE }, + { 5, _T("-g"), SO_NONE }, + { 6, _T("-flag"), SO_NONE }, + { 7, _T("--flag"), SO_NONE }, + { 8, _T("-s"), SO_REQ_SEP }, + { 9, _T("-sep"), SO_REQ_SEP }, + { 10, _T("--sep"), SO_REQ_SEP }, + { 11, _T("-c"), SO_REQ_CMB }, + { 12, _T("-com"), SO_REQ_CMB }, + { 13, _T("--com"), SO_REQ_CMB }, + { 14, _T("-o"), SO_OPT }, + { 15, _T("-opt"), SO_OPT }, + { 16, _T("--opt"), SO_OPT }, + { 17, _T("-man"), SO_NONE }, + { 18, _T("-mandy"), SO_NONE }, + { 19, _T("-mandate"), SO_NONE }, + { 20, _T("--man"), SO_NONE }, + { 21, _T("--mandy"), SO_NONE }, + { 22, _T("--mandate"), SO_NONE }, + { 23, _T("open"), SO_NONE }, + { 24, _T("read"), SO_NONE }, + { 25, _T("write"), SO_NONE }, + { 26, _T("close"), SO_NONE }, + { 27, _T("zip"), SO_NONE }, + { 28, _T("unzip"), SO_NONE }, + { OPT_MULTI, _T("--multi"), SO_MULTI }, + { OPT_MULTI0, _T("--multi0"), SO_MULTI }, + { OPT_MULTI1, _T("--multi1"), SO_MULTI }, + { OPT_MULTI2, _T("--multi2"), SO_MULTI }, + SO_END_OF_OPTIONS +}; + +void ShowFiles(int argc, TCHAR ** argv) { + // glob files to catch expand wildcards + CSimpleGlob glob(SG_GLOB_NODOT|SG_GLOB_NOCHECK); + if (SG_SUCCESS != glob.Add(argc, argv)) { + _tprintf(_T("Error while globbing files\n")); + return; + } + + for (int n = 0; n < glob.FileCount(); ++n) { + _tprintf(_T("file %2d: '%s'\n"), n, glob.File(n)); + } +} + +static const TCHAR * +GetLastErrorText( + int a_nError + ) +{ + switch (a_nError) { + case SO_SUCCESS: return _T("Success"); + case SO_OPT_INVALID: return _T("Unrecognized option"); + case SO_OPT_MULTIPLE: return _T("Option matched multiple strings"); + case SO_ARG_INVALID: return _T("Option does not accept argument"); + case SO_ARG_INVALID_TYPE: return _T("Invalid argument format"); + case SO_ARG_MISSING: return _T("Required argument is missing"); + case SO_ARG_INVALID_DATA: return _T("Invalid argument data"); + default: return _T("Unknown error"); + } +} + +static void +DoMultiArgs( + CSimpleOpt & args, + int nMultiArgs + ) +{ + TCHAR ** rgpszArg = NULL; + + // get the number of arguments if necessary + if (nMultiArgs == -1) { + // first arg is a count of how many we have + rgpszArg = args.MultiArg(1); + if (!rgpszArg) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + return; + } + + nMultiArgs = _ttoi(rgpszArg[0]); + } + _tprintf(_T("%s: expecting %d args\n"), args.OptionText(), nMultiArgs); + + // get the arguments to follow + rgpszArg = args.MultiArg(nMultiArgs); + if (!rgpszArg) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + return; + } + + for (int n = 0; n < nMultiArgs; ++n) { + _tprintf(_T("MultiArg %d: %s\n"), n, rgpszArg[n]); + } +} + + +int _tmain(int argc, TCHAR * argv[]) { + setlocale( LC_ALL, "Japanese" ); + + // get the flags to use for SimpleOpt from the command line + int nFlags = SO_O_USEALL; + CSimpleOpt flags(argc, argv, g_rgFlags, SO_O_NOERR|SO_O_EXACT); + while (flags.Next()) { + nFlags |= flags.OptionId(); + } + + // now process the remainder of the command line with these flags + CSimpleOpt args(flags.FileCount(), flags.Files(), g_rgOptions, nFlags); + while (args.Next()) { + if (args.LastError() != SO_SUCCESS) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + continue; + } + + switch (args.OptionId()) { + case OPT_HELP: + ShowUsage(); + return 0; + case OPT_MULTI: + DoMultiArgs(args, -1); + break; + case OPT_MULTI0: + DoMultiArgs(args, 0); + break; + case OPT_MULTI1: + DoMultiArgs(args, 1); + break; + case OPT_MULTI2: + DoMultiArgs(args, 2); + break; + default: + if (args.OptionArg()) { + _tprintf(_T("option: %2d, text: '%s', arg: '%s'\n"), + args.OptionId(), args.OptionText(), args.OptionArg()); + } + else { + _tprintf(_T("option: %2d, text: '%s'\n"), + args.OptionId(), args.OptionText()); + } + } + } + + /* process files from command line */ + ShowFiles(args.FileCount(), args.Files()); + + return 0; +} diff --git a/simpleopt/fullSample.dsp b/simpleopt/fullSample.dsp new file mode 100644 index 0000000..5ea66ca --- /dev/null +++ b/simpleopt/fullSample.dsp @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="fullSample" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=fullSample - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "fullSample.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "fullSample.mak" CFG="fullSample - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "fullSample - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "fullSample - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "fullSample - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "fullSample - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "fullSample - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "fullRelease" +# PROP BASE Intermediate_Dir "fullRelease" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "fullRelease" +# PROP Intermediate_Dir "fullRelease" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "fullSample - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "fullDebug" +# PROP BASE Intermediate_Dir "fullDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "fullDebug" +# PROP Intermediate_Dir "fullDebug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "fullSample - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "fullDebugUnicode" +# PROP BASE Intermediate_Dir "fullDebugUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "fullDebugUnicode" +# PROP Intermediate_Dir "fullDebugUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /GZ /c +# SUBTRACT CPP /Fr +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "fullSample - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "fullReleaseUnicode" +# PROP BASE Intermediate_Dir "fullReleaseUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "fullReleaseUnicode" +# PROP Intermediate_Dir "fullReleaseUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "fullSample - Win32 Release" +# Name "fullSample - Win32 Debug" +# Name "fullSample - Win32 Debug Unicode" +# Name "fullSample - Win32 Release Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\fullSample.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\SimpleGlob.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleOpt.h +# End Source File +# End Group +# End Target +# End Project diff --git a/simpleopt/fullSample.vcproj b/simpleopt/fullSample.vcproj new file mode 100644 index 0000000..7da09e5 --- /dev/null +++ b/simpleopt/fullSample.vcproj @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simpleopt/globSample.cpp b/simpleopt/globSample.cpp new file mode 100644 index 0000000..d88156b --- /dev/null +++ b/simpleopt/globSample.cpp @@ -0,0 +1,130 @@ +// File: globSample.cpp +// Library: SimpleOpt +// Author: Brodie Thiesfield +// Source: http://code.jellycan.com/simpleopt/ +// +// MIT LICENCE +// =========== +// The licence text below is the boilerplate "MIT Licence" used from: +// http://www.opensource.org/licenses/mit-license.php +// +// Copyright (c) 2006, Brodie Thiesfield +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is furnished +// to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#if defined(_MSC_VER) +# include +# include +#else +# define TCHAR char +# define _T(x) x +# define _tprintf printf +# define _tmain main +#endif + +#include +#include +#include "SimpleOpt.h" +#include "SimpleGlob.h" + +static void ShowUsage() +{ + _tprintf( + _T("Usage: globSample [OPTIONS] [FILES]\n") + _T("\n") + _T(" -e Return upon read error (e.g. directory does not have\n") + _T(" read permission)\n") + _T(" -m Append a slash (backslash in Windows) to each path which\n") + _T(" corresponds to a directory\n") + _T(" -s Don't sort the returned pathnames\n") + _T(" -o Sort all pathnames as a single group instead of in filespec groups\n") + _T(" -c If no pattern matches, return the original pattern\n") + _T(" -t Tilde expansion is carried out (on Unix platforms)\n") + _T(" -d Return only directories (not compatible with --only-file)\n") + _T(" -f Return only files (not compatible with --only-dir)\n") + _T(" -n Do not return the \".\" or \"..\" special files\n") + _T("\n") + _T(" -? Output this help.\n") + ); +} + +CSimpleOpt::SOption g_rgOptions[] = +{ + { SG_GLOB_ERR, _T("-e"), SO_NONE }, + { SG_GLOB_MARK, _T("-m"), SO_NONE }, + { SG_GLOB_NOSORT, _T("-s"), SO_NONE }, + { SG_GLOB_NOCHECK, _T("-c"), SO_NONE }, + { SG_GLOB_TILDE, _T("-t"), SO_NONE }, + { SG_GLOB_ONLYDIR, _T("-d"), SO_NONE }, + { SG_GLOB_ONLYFILE, _T("-f"), SO_NONE }, + { SG_GLOB_NODOT, _T("-n"), SO_NONE }, + { SG_GLOB_FULLSORT, _T("-o"), SO_NONE }, + { 0, _T("-?"), SO_NONE }, + { 0, _T("-h"), SO_NONE }, + + SO_END_OF_OPTIONS +}; + +static const TCHAR * +GetLastErrorText( + int a_nError + ) +{ + switch (a_nError) { + case SO_SUCCESS: return _T("Success"); + case SO_OPT_INVALID: return _T("Unrecognized option"); + case SO_OPT_MULTIPLE: return _T("Option matched multiple strings"); + case SO_ARG_INVALID: return _T("Option does not accept argument"); + case SO_ARG_INVALID_TYPE: return _T("Invalid argument format"); + case SO_ARG_MISSING: return _T("Required argument is missing"); + case SO_ARG_INVALID_DATA: return _T("Invalid argument data"); + default: return _T("Unknown error"); + } +} + +int _tmain(int argc, TCHAR * argv[]) { + unsigned int uiFlags = 0; + + CSimpleOpt args(argc, argv, g_rgOptions, true); + while (args.Next()) { + if (args.LastError() != SO_SUCCESS) { + _tprintf( + _T("%s: '%s' (use --help to get command line help)\n"), + GetLastErrorText(args.LastError()), args.OptionText()); + continue; + } + + if (args.OptionId() == 0) { + ShowUsage(); + return 0; + } + + uiFlags |= (unsigned int) args.OptionId(); + } + + CSimpleGlob glob(uiFlags); + if (glob.Add(args.FileCount(), args.Files()) < SG_SUCCESS) { + _tprintf(_T("Error while globbing files\n")); + return 1; + } + + for (int n = 0; n < glob.FileCount(); ++n) + _tprintf(_T("file %2d: '%s'\n"), n, glob.File(n)); + + return 0; +} diff --git a/simpleopt/globSample.dsp b/simpleopt/globSample.dsp new file mode 100644 index 0000000..4dc0f31 --- /dev/null +++ b/simpleopt/globSample.dsp @@ -0,0 +1,155 @@ +# Microsoft Developer Studio Project File - Name="globSample" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=globSample - Win32 Debug Unicode +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "globSample.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "globSample.mak" CFG="globSample - Win32 Debug Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "globSample - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "globSample - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "globSample - Win32 Debug Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE "globSample - Win32 Release Unicode" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "globSample - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "globRelease" +# PROP BASE Intermediate_Dir "globRelease" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "globRelease" +# PROP Intermediate_Dir "globRelease" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "globSample - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "globDebug" +# PROP BASE Intermediate_Dir "globDebug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "globDebug" +# PROP Intermediate_Dir "globDebug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "globSample - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "globDebugUnicode" +# PROP BASE Intermediate_Dir "globDebugUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "globDebugUnicode" +# PROP Intermediate_Dir "globDebugUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /GZ /c +# SUBTRACT CPP /Fr +# ADD BASE RSC /l 0x411 /d "_DEBUG" +# ADD RSC /l 0x411 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ELSEIF "$(CFG)" == "globSample - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "globReleaseUnicode" +# PROP BASE Intermediate_Dir "globReleaseUnicode" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "globReleaseUnicode" +# PROP Intermediate_Dir "globReleaseUnicode" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x411 /d "NDEBUG" +# ADD RSC /l 0x411 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ENDIF + +# Begin Target + +# Name "globSample - Win32 Release" +# Name "globSample - Win32 Debug" +# Name "globSample - Win32 Debug Unicode" +# Name "globSample - Win32 Release Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\globSample.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\SimpleGlob.h +# End Source File +# Begin Source File + +SOURCE=.\SimpleOpt.h +# End Source File +# End Group +# End Target +# End Project diff --git a/simpleopt/globSample.vcproj b/simpleopt/globSample.vcproj new file mode 100644 index 0000000..5f47440 --- /dev/null +++ b/simpleopt/globSample.vcproj @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simpleopt/runtests.cmd b/simpleopt/runtests.cmd new file mode 100755 index 0000000..19c1b9a --- /dev/null +++ b/simpleopt/runtests.cmd @@ -0,0 +1,86 @@ +@echo off + +set TESTDIR= +set EXPECTED= +set OUTPUT= + +if exist .\fullSample.exe ( + set EXPECTED=..\runtests.txt + call :runtests . + exit /b 0 +) + +set EXPECTED=runtests.txt +for %%d in (fullDebug fullDebugUnicode fullRelease fullReleaseUnicode) do call :runtests %%d +pause +exit /b 0 + +:runtests +set TESTDIR=%1 + +if not exist %TESTDIR% ( + echo Skipping %TESTDIR% + exit /b 0 +) +if not exist %TESTDIR%\fullSample.exe ( + echo Skipping %TESTDIR% + exit /b 0 +) + +set TESTNAME=%TESTDIR% +set OUTPUT=runtests.%TESTNAME% + +if %TESTNAME%.==.. ( + set TESTNAME=CurrentDir + set OUTPUT=runtests.out +) + +if exist %OUTPUT% del %OUTPUT% + + +call :testcase -d -e -f -g -flag --flag +call :testcase -s SEP1 -sep SEP2 --sep SEP3 +call :testcase -s -s SEP1 -sep SEP2 --sep SEP3 +call :testcase --noerr -s -s SEP1 -sep SEP2 --sep SEP3 +call :testcase FILE0 -s SEP1 FILE1 -sep SEP2 FILE2 --sep SEP3 FILE3 +call :testcase FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +call :testcase --pedantic FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +call :testcase -c=COM1 -com=COM2 --com=COM3 +call :testcase --shortarg -cCOM +call :testcase --shortarg -cCOM1 -c=COM2 +call :testcase --shortarg --clump -defgcCOM1 -c=COM2 +call :testcase -o -opt --opt -o=OPT1 -opt=OPT2 --opt=OPT3 +call :testcase --shortarg -oOPT1 +call :testcase -man -mand -mandy -manda -mandat -mandate +call :testcase --man --mand --mandy --manda --mandat --mandate +call :testcase --exact -man -mand -mandy -manda -mandat -mandate +call :testcase FILE0 FILE1 +call :testcase --multi0 --multi1 ARG1 --multi2 ARG1 ARG2 +call :testcase FILE0 --multi0 FILE1 --multi1 ARG1 FILE2 --multi2 ARG1 ARG2 FILE3 +call :testcase FILE0 --multi 0 FILE1 --multi 4 ARG1 ARG2 ARG3 ARG4 FILE3 +call :testcase --multi 0 +call :testcase --multi 1 +call :testcase FILE0 --multi 1 +call :testcase /-sep SEP1 +call :testcase /sep SEP1 +call :testcase --noslash /sep SEP1 +call :testcase --multi 1 -sep +call :testcase --noerr --multi 1 -sep + + +fc /A %OUTPUT% %EXPECTED% > nul +if errorlevel 1 goto error +echo %TESTNAME%: All tests passed! +exit /b 0 + +:error +echo %TESTNAME%: Test results (%OUTPUT%) don't match expected (%EXPECTED%) +exit /b 1 + +:testcase +echo. >> %OUTPUT% +echo fullSample %* >> %OUTPUT% +%TESTDIR%\fullSample %* >> %OUTPUT% +exit /b 0 + + diff --git a/simpleopt/runtests.txt b/simpleopt/runtests.txt new file mode 100644 index 0000000..4a8277e --- /dev/null +++ b/simpleopt/runtests.txt @@ -0,0 +1,174 @@ + +fullSample -d -e -f -g -flag --flag +option: 2, text: '-d' +option: 3, text: '-e' +option: 4, text: '-f' +option: 5, text: '-g' +option: 6, text: '-flag' +option: 7, text: '--flag' + +fullSample -s SEP1 -sep SEP2 --sep SEP3 +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' + +fullSample -s -s SEP1 -sep SEP2 --sep SEP3 +Invalid argument data: '-s' (use --help to get command line help) +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' + +fullSample --noerr -s -s SEP1 -sep SEP2 --sep SEP3 +option: 8, text: '-s', arg: '-s' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' +file 0: 'SEP1' + +fullSample FILE0 -s SEP1 FILE1 -sep SEP2 FILE2 --sep SEP3 FILE3 +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +option: 8, text: '-s', arg: 'SEP1' +option: 9, text: '-sep', arg: 'SEP2' +option: 10, text: '--sep', arg: 'SEP3' +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample --pedantic FILE0 -s=SEP1 FILE1 -sep=SEP2 FILE2 --sep=SEP3 FILE3 +Invalid argument format: '-s' (use --help to get command line help) +Invalid argument format: '-sep' (use --help to get command line help) +Invalid argument format: '--sep' (use --help to get command line help) +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample -c=COM1 -com=COM2 --com=COM3 +option: 11, text: '-c', arg: 'COM1' +option: 12, text: '-com', arg: 'COM2' +option: 13, text: '--com', arg: 'COM3' + +fullSample --shortarg -cCOM +option: 11, text: '-c', arg: 'COM' + +fullSample --shortarg -cCOM1 -c=COM2 +option: 11, text: '-c', arg: 'COM1' +option: 11, text: '-c', arg: 'COM2' + +fullSample --shortarg --clump -defgcCOM1 -c=COM2 +option: 2, text: '-d' +option: 3, text: '-e' +option: 4, text: '-f' +option: 5, text: '-g' +option: 11, text: '-c', arg: 'COM1' +option: 11, text: '-c', arg: 'COM2' + +fullSample -o -opt --opt -o=OPT1 -opt=OPT2 --opt=OPT3 +option: 14, text: '-o' +option: 15, text: '-opt' +option: 16, text: '--opt' +option: 14, text: '-o', arg: 'OPT1' +option: 15, text: '-opt', arg: 'OPT2' +option: 16, text: '--opt', arg: 'OPT3' + +fullSample --shortarg -oOPT1 +option: 14, text: '-o', arg: 'OPT1' + +fullSample -man -mand -mandy -manda -mandat -mandate +option: 17, text: '-man' +Option matched multiple strings: '-mand' (use --help to get command line help) +option: 18, text: '-mandy' +option: 19, text: '-mandate' +option: 19, text: '-mandate' +option: 19, text: '-mandate' + +fullSample --man --mand --mandy --manda --mandat --mandate +option: 20, text: '--man' +Option matched multiple strings: '--mand' (use --help to get command line help) +option: 21, text: '--mandy' +option: 22, text: '--mandate' +option: 22, text: '--mandate' +option: 22, text: '--mandate' + +fullSample --exact -man -mand -mandy -manda -mandat -mandate +option: 17, text: '-man' +Unrecognized option: '-mand' (use --help to get command line help) +option: 18, text: '-mandy' +Unrecognized option: '-manda' (use --help to get command line help) +Unrecognized option: '-mandat' (use --help to get command line help) +option: 19, text: '-mandate' + +fullSample FILE0 FILE1 +file 0: 'FILE0' +file 1: 'FILE1' + +fullSample --multi0 --multi1 ARG1 --multi2 ARG1 ARG2 +--multi0: expecting 0 args +--multi1: expecting 1 args +MultiArg 0: ARG1 +--multi2: expecting 2 args +MultiArg 0: ARG1 +MultiArg 1: ARG2 + +fullSample FILE0 --multi0 FILE1 --multi1 ARG1 FILE2 --multi2 ARG1 ARG2 FILE3 +--multi0: expecting 0 args +--multi1: expecting 1 args +MultiArg 0: ARG1 +--multi2: expecting 2 args +MultiArg 0: ARG1 +MultiArg 1: ARG2 +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE2' +file 3: 'FILE3' + +fullSample FILE0 --multi 0 FILE1 --multi 4 ARG1 ARG2 ARG3 ARG4 FILE3 +--multi: expecting 0 args +--multi: expecting 4 args +MultiArg 0: ARG1 +MultiArg 1: ARG2 +MultiArg 2: ARG3 +MultiArg 3: ARG4 +file 0: 'FILE0' +file 1: 'FILE1' +file 2: 'FILE3' + +fullSample --multi 0 +--multi: expecting 0 args + +fullSample --multi 1 +--multi: expecting 1 args +Required argument is missing: '--multi' (use --help to get command line help) + +fullSample FILE0 --multi 1 +--multi: expecting 1 args +Required argument is missing: '--multi' (use --help to get command line help) +file 0: 'FILE0' + +fullSample /-sep SEP1 +file 0: '\-sep' +file 1: 'SEP1' + +fullSample /sep SEP1 +option: 9, text: '-sep', arg: 'SEP1' + +fullSample --noslash /sep SEP1 +file 0: '\sep' +file 1: 'SEP1' + +fullSample --multi 1 -sep +--multi: expecting 1 args +Invalid argument data: '--multi' (use --help to get command line help) +Required argument is missing: '-sep' (use --help to get command line help) + +fullSample --noerr --multi 1 -sep +--multi: expecting 1 args +MultiArg 0: -sep diff --git a/simpleopt/simpleopt.doxy b/simpleopt/simpleopt.doxy new file mode 100644 index 0000000..3ea85be --- /dev/null +++ b/simpleopt/simpleopt.doxy @@ -0,0 +1,1267 @@ +# Doxyfile 1.5.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file that +# follow. The default is UTF-8 which is also the encoding used for all text before +# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into +# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of +# possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = SimpleOpt + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = D:/src/simpleopt-doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, +# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, +# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, +# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = D:/src/simpleopt/ + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to +# include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = YES + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file($line) : $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = D:/src/simpleopt/ + +# This tag can be used to specify the character encoding of the source files that +# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default +# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. +# See http://www.gnu.org/software/libiconv for the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py + +FILE_PATTERNS = *.h + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the output. +# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, +# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentstion. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = DOXYGEN + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to +# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to +# specify the directory where the mscgen tool resides. If left empty the tool is assumed to +# be found in the default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a caller dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen will always +# show the root nodes and its direct children regardless of this setting. + +DOT_GRAPH_MAX_NODES = 50 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/win32-nsis/.svn/all-wcprops b/win32-nsis/.svn/all-wcprops new file mode 100644 index 0000000..97f6ea9 --- /dev/null +++ b/win32-nsis/.svn/all-wcprops @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 38 +/!svn/ver/386/monitor/trunk/win32-nsis +END +license.txt +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/321/monitor/trunk/win32-nsis/license.txt +END +_start.bat +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/321/monitor/trunk/win32-nsis/_start.bat +END +monitord.nsi +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/330/monitor/trunk/win32-nsis/monitord.nsi +END +monitor.nsi.in +K 25 +svn:wc:ra_dav:version-url +V 53 +/!svn/ver/333/monitor/trunk/win32-nsis/monitor.nsi.in +END +_install-service.bat +K 25 +svn:wc:ra_dav:version-url +V 59 +/!svn/ver/321/monitor/trunk/win32-nsis/_install-service.bat +END +_stop.bat +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/321/monitor/trunk/win32-nsis/_stop.bat +END +_uninstall-service.bat +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/321/monitor/trunk/win32-nsis/_uninstall-service.bat +END diff --git a/win32-nsis/.svn/dir-prop-base b/win32-nsis/.svn/dir-prop-base new file mode 100644 index 0000000..5d354e4 --- /dev/null +++ b/win32-nsis/.svn/dir-prop-base @@ -0,0 +1,6 @@ +K 10 +svn:ignore +V 6 +*.nsi + +END diff --git a/win32-nsis/.svn/entries b/win32-nsis/.svn/entries new file mode 100644 index 0000000..f898b64 --- /dev/null +++ b/win32-nsis/.svn/entries @@ -0,0 +1,266 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/win32-nsis +http://svn.monitord.de + + + +2009-09-16T09:03:10.253297Z +386 +dekarl +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +license.txt +file + + + + +2012-01-23T14:07:05.040506Z +18f52b67365b14fc169c3b7b907f9788 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +35581 + +_start.bat +file + + + + +2012-01-23T14:07:05.040506Z +45cbfbf5c02c478a08bbca00e17ab26a +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +57 + +monitord.nsi +file + + + + +2012-01-23T14:07:05.041505Z +a1721250e94677fd74dd8f6d1857f4e8 +2008-07-25T23:22:05.373872Z +330 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4283 + +monitor.nsi.in +file + + + + +2012-01-23T14:07:05.041505Z +d5aa710ae8f2eae6a5e740128f6c04a0 +2008-07-26T00:20:26.641176Z +333 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +4357 + +_install-service.bat +file + + + + +2012-01-23T14:07:05.041505Z +9e758afb89702dcea4e0fadc1c8bedd0 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +86 + +_stop.bat +file + + + + +2012-01-23T14:07:05.042493Z +f717d5e534e94043e58ee2d2fa2bc3a0 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +56 + +_uninstall-service.bat +file + + + + +2012-01-23T14:07:05.042493Z +a5e9c2ca1b303c2c757160b32e7ec517 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +80 + diff --git a/win32-nsis/.svn/prop-base/_install-service.bat.svn-base b/win32-nsis/.svn/prop-base/_install-service.bat.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/win32-nsis/.svn/prop-base/_install-service.bat.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/win32-nsis/.svn/prop-base/_start.bat.svn-base b/win32-nsis/.svn/prop-base/_start.bat.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/win32-nsis/.svn/prop-base/_start.bat.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/win32-nsis/.svn/prop-base/_stop.bat.svn-base b/win32-nsis/.svn/prop-base/_stop.bat.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/win32-nsis/.svn/prop-base/_stop.bat.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/win32-nsis/.svn/prop-base/_uninstall-service.bat.svn-base b/win32-nsis/.svn/prop-base/_uninstall-service.bat.svn-base new file mode 100644 index 0000000..9827de3 --- /dev/null +++ b/win32-nsis/.svn/prop-base/_uninstall-service.bat.svn-base @@ -0,0 +1,13 @@ +K 13 +svn:eol-style +V 6 +native +K 14 +svn:executable +V 1 +* +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/win32-nsis/.svn/prop-base/license.txt.svn-base b/win32-nsis/.svn/prop-base/license.txt.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/win32-nsis/.svn/prop-base/license.txt.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/win32-nsis/.svn/prop-base/monitor.nsi.in.svn-base b/win32-nsis/.svn/prop-base/monitor.nsi.in.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/win32-nsis/.svn/prop-base/monitor.nsi.in.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/win32-nsis/.svn/prop-base/monitord.nsi.svn-base b/win32-nsis/.svn/prop-base/monitord.nsi.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/win32-nsis/.svn/prop-base/monitord.nsi.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/win32-nsis/.svn/text-base/_install-service.bat.svn-base b/win32-nsis/.svn/text-base/_install-service.bat.svn-base new file mode 100644 index 0000000..ba28058 --- /dev/null +++ b/win32-nsis/.svn/text-base/_install-service.bat.svn-base @@ -0,0 +1,3 @@ +@rem installiert monitord aus dem aktuellen Ordner als Dienst + +monitord.exe --install diff --git a/win32-nsis/.svn/text-base/_start.bat.svn-base b/win32-nsis/.svn/text-base/_start.bat.svn-base new file mode 100644 index 0000000..fdf633f --- /dev/null +++ b/win32-nsis/.svn/text-base/_start.bat.svn-base @@ -0,0 +1,3 @@ +@rem startet den monitord als Dienst + +net start monitord diff --git a/win32-nsis/.svn/text-base/_stop.bat.svn-base b/win32-nsis/.svn/text-base/_stop.bat.svn-base new file mode 100644 index 0000000..7338918 --- /dev/null +++ b/win32-nsis/.svn/text-base/_stop.bat.svn-base @@ -0,0 +1,3 @@ +@rem beendet den monitord als Dienst + +net stop monitord diff --git a/win32-nsis/.svn/text-base/_uninstall-service.bat.svn-base b/win32-nsis/.svn/text-base/_uninstall-service.bat.svn-base new file mode 100644 index 0000000..532de3f --- /dev/null +++ b/win32-nsis/.svn/text-base/_uninstall-service.bat.svn-base @@ -0,0 +1,4 @@ +@rem deinstalliert den Dienst monitord + +call _stop.bat +monitord.exe --uninstall diff --git a/win32-nsis/.svn/text-base/license.txt.svn-base b/win32-nsis/.svn/text-base/license.txt.svn-base new file mode 100644 index 0000000..f4fb302 --- /dev/null +++ b/win32-nsis/.svn/text-base/license.txt.svn-base @@ -0,0 +1,687 @@ +The MONITORD program is released under the GPL v3 + + * monitord is based on monitor by Markus Grohmann (GPL v2) + (C) 1998-2002 (markus_grohmann@gmx.de) + http://www.monitor.mgrohmann.de + * monitor is based on multimon by Thomas Sailer (GPL v2) + (C) 1996,Thomas Sailer (sailer@ife.ee.ethz.ch) + http://www.baycom.org/~tom/ham/linux/multimon.html + + -- the monitord development team + (C) 2007 - http://www.monitord.de + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/win32-nsis/.svn/text-base/monitor.nsi.in.svn-base b/win32-nsis/.svn/text-base/monitor.nsi.in.svn-base new file mode 100644 index 0000000..3d27d69 --- /dev/null +++ b/win32-nsis/.svn/text-base/monitor.nsi.in.svn-base @@ -0,0 +1,138 @@ +;NSIS Modern User Interface +;Basic Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "@PACKAGE_NAME@ @PACKAGE_VERSION@" + OutFile "@PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.exe" + + ;Default installation folder + InstallDir "$PROGRAMFILES\monitord" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\monitord" "" + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "win32-nsis\license.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "German" + +;-------------------------------- +;Installer Sections + +Section "Grundprogramm" SecMonitord + + SetOutPath "$INSTDIR" + + ; Dateiliste + File monitord\monitord.exe + File win32-nsis\_start.bat + File win32-nsis\_stop.bat + File win32-nsis\_install-service.bat + File win32-nsis\_uninstall-service.bat + + + ;Konfigfile nur erstellen, wenn es noch keins gibt. Sonst als + ;monitord.xml.new speichern + IfFileExists "$INSTDIR\monitord.xml" +1 +3 + File /oname=monitord.xml.new sample-config\monitord.xml.win32 + goto +2 + File /oname=monitord.xml sample-config\monitord.xml.win32 + + ;Store installation folder + WriteRegStr HKCU "Software\monitord" "" $INSTDIR + + ;Startmenu + + CreateDirectory "$SMPROGRAMS\monitord" + CreateShortCut "$SMPROGRAMS\monitord\monitord.lnk" "$INSTDIR\monitord.exe" + CreateShortCut "$SMPROGRAMS\monitord\Konfiguration bearbeiten.lnk" "notepad" "$INSTDIR\monitord.xml" + CreateShortCut "$SMPROGRAMS\monitord\uninstall.lnk" "$INSTDIR\uninstall.exe" + + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + ; In Systemsteuerung/Software eintragen mit "Nur Entfernen" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "DisplayName" "monitord" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoRepair" 1 + +SectionEnd + +@PLUGINS_TRUE@Section "Plugins" SecPlugins +@PLUGINS_TRUE@ SetOutPath "$INSTDIR\plugins" +@PLUGINS_TRUE@@LAME_TRUE@ File monitord\plugins\.libs\libmplugin_audiorecorder-0.dll +@PLUGINS_TRUE@@MYSQLSTORAGE_TRUE@ File monitord\plugins\.libs\libmplugin_mysql-0.dll +@PLUGINS_TRUE@SectionEnd + +@PLUGINS_TRUE@Section "Dll" SecDLLs +@PLUGINS_TRUE@ SetOutPath "$INSTDIR" +@PLUGINS_TRUE@@MYSQLSTORAGE_TRUE@ File monitord\libmysql.dll +@PLUGINS_TRUE@@LAME_TRUE@ File monitord\libmp3lame-0.dll +@PLUGINS_TRUE@SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecMonitord ${LANG_GERMAN} "Das monitord Hauptprogramm" +@PLUGINS_TRUE@ LangString DESC_SecPlugins ${LANG_GERMAN} "Plugins zum monitord, z.B. Audiorekorder, MySQL Plugin, ..." +@PLUGINS_TRUE@ LangString DESC_SecDLLs ${LANG_GERMAN} "von Plugins ben�tigte DLLs (mysql.dll, mp3lame, ...)" + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecMonitord} $(DESC_SecMonitord) +@PLUGINS_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} $(DESC_SecPlugins) +@PLUGINS_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SecDLLs} $(DESC_SecDLLs) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir /r "$INSTDIR" + Delete "$SMPROGRAMS\monitord.lnk" + Delete "$SMPROGRAMS\uninstall.lnk" + RMDir /r "$SMPROGRAMS\monitord" + + DeleteRegKey /ifempty HKCU "Software\monitord" + ; Aus Systemsteuerung/Software wieder l�schen + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" + +SectionEnd diff --git a/win32-nsis/.svn/text-base/monitord.nsi.svn-base b/win32-nsis/.svn/text-base/monitord.nsi.svn-base new file mode 100644 index 0000000..8782d12 --- /dev/null +++ b/win32-nsis/.svn/text-base/monitord.nsi.svn-base @@ -0,0 +1,147 @@ +;NSIS Modern User Interface +;Basic Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "monitord v2.0svn" + OutFile "monitord-setup.exe" + + ;Default installation folder + InstallDir "$PROGRAMFILES\monitord" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\monitord" "" + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "license.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "German" + +;-------------------------------- +;Installer Sections + +Section "Grundprogramm" SecMonitord + + SetOutPath "$INSTDIR" + + ; Dateiliste + File ..\monitord\monitord.exe + File _start.bat + File _stop.bat + File _install-service.bat + File _uninstall-service.bat + + + ;Konfigfile nur erstellen, wenn es noch keins gibt. Sonst als + ;monitord.xml.new speichern + IfFileExists "$INSTDIR\monitord.xml" +1 +3 + File /oname=monitord.xml.new ..\sample-config\monitord.xml.win32 + goto +2 + File /oname=monitord.xml ..\sample-config\monitord.xml.win32 + + ;Store installation folder + WriteRegStr HKCU "Software\monitord" "" $INSTDIR + + ;Startmenu + + CreateDirectory "$SMPROGRAMS\monitord" + CreateShortCut "$SMPROGRAMS\monitord\monitord.lnk" "$INSTDIR\monitord.exe" + CreateShortCut "$SMPROGRAMS\monitord\Konfiguration bearbeiten.lnk" "notepad" "$INSTDIR\monitord.xml" + CreateShortCut "$SMPROGRAMS\monitord\uninstall.lnk" "$INSTDIR\uninstall.exe" + + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + ; In Systemsteuerung/Software eintragen mit "Nur Entfernen" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "DisplayName" "monitord" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoRepair" 1 + +SectionEnd + +Section "Beispielkonfiguration" SecSamples + SetOutPath "$INSTDIR\sample-config" + File "..\sample-config\*" +SectionEnd + +Section "Plugins" SecPlugins + SetOutPath "$INSTDIR\plugins" + File ..\monitord\plugins\.libs\libmplugin_audiorecorder-0.dll + File ..\monitord\plugins\.libs\libmplugin_mysql-0.dll +SectionEnd + +Section "Dll" SecDLLs + + SetOutPath "$INSTDIR" + File ..\monitord\libmysql.dll + File ..\monitord\libmp3lame-0.dll + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecMonitord ${LANG_GERMAN} "Das monitord Hauptprogramm" + LangString DESC_SecPlugins ${LANG_GERMAN} "Plugins zum monitord, z.B. Audiorekorder, MySQL Plugin, ..." + LangString DESC_SecDLLs ${LANG_GERMAN} "von Plugins ben�tigte DLLs (mysql.dll, mp3lame, ...)" + LangString DESC_SecSamples ${LANG_GERMAN} "Beispielkonfigurationen" + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecMonitord} $(DESC_SecMonitord) + !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} $(DESC_SecPlugins) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDLLs} $(DESC_SecDLLs) + !insertmacro MUI_DESCRIPTION_TEXT ${SecSamples} $(DESC_SecSamples) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir /r "$INSTDIR" + Delete "$SMPROGRAMS\monitord.lnk" + Delete "$SMPROGRAMS\uninstall.lnk" + RMDir /r "$SMPROGRAMS\monitord" + + DeleteRegKey /ifempty HKCU "Software\monitord" + ; Aus Systemsteuerung/Software wieder l�schen + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" + +SectionEnd \ No newline at end of file diff --git a/win32-nsis/_install-service.bat b/win32-nsis/_install-service.bat new file mode 100755 index 0000000..ba28058 --- /dev/null +++ b/win32-nsis/_install-service.bat @@ -0,0 +1,3 @@ +@rem installiert monitord aus dem aktuellen Ordner als Dienst + +monitord.exe --install diff --git a/win32-nsis/_start.bat b/win32-nsis/_start.bat new file mode 100755 index 0000000..fdf633f --- /dev/null +++ b/win32-nsis/_start.bat @@ -0,0 +1,3 @@ +@rem startet den monitord als Dienst + +net start monitord diff --git a/win32-nsis/_stop.bat b/win32-nsis/_stop.bat new file mode 100755 index 0000000..7338918 --- /dev/null +++ b/win32-nsis/_stop.bat @@ -0,0 +1,3 @@ +@rem beendet den monitord als Dienst + +net stop monitord diff --git a/win32-nsis/_uninstall-service.bat b/win32-nsis/_uninstall-service.bat new file mode 100755 index 0000000..532de3f --- /dev/null +++ b/win32-nsis/_uninstall-service.bat @@ -0,0 +1,4 @@ +@rem deinstalliert den Dienst monitord + +call _stop.bat +monitord.exe --uninstall diff --git a/win32-nsis/license.txt b/win32-nsis/license.txt new file mode 100644 index 0000000..f4fb302 --- /dev/null +++ b/win32-nsis/license.txt @@ -0,0 +1,687 @@ +The MONITORD program is released under the GPL v3 + + * monitord is based on monitor by Markus Grohmann (GPL v2) + (C) 1998-2002 (markus_grohmann@gmx.de) + http://www.monitor.mgrohmann.de + * monitor is based on multimon by Thomas Sailer (GPL v2) + (C) 1996,Thomas Sailer (sailer@ife.ee.ethz.ch) + http://www.baycom.org/~tom/ham/linux/multimon.html + + -- the monitord development team + (C) 2007 - http://www.monitord.de + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/win32-nsis/monitor.nsi.in b/win32-nsis/monitor.nsi.in new file mode 100644 index 0000000..3d27d69 --- /dev/null +++ b/win32-nsis/monitor.nsi.in @@ -0,0 +1,138 @@ +;NSIS Modern User Interface +;Basic Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "@PACKAGE_NAME@ @PACKAGE_VERSION@" + OutFile "@PACKAGE_TARNAME@-@host_os@-@PACKAGE_VERSION@.exe" + + ;Default installation folder + InstallDir "$PROGRAMFILES\monitord" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\monitord" "" + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "win32-nsis\license.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "German" + +;-------------------------------- +;Installer Sections + +Section "Grundprogramm" SecMonitord + + SetOutPath "$INSTDIR" + + ; Dateiliste + File monitord\monitord.exe + File win32-nsis\_start.bat + File win32-nsis\_stop.bat + File win32-nsis\_install-service.bat + File win32-nsis\_uninstall-service.bat + + + ;Konfigfile nur erstellen, wenn es noch keins gibt. Sonst als + ;monitord.xml.new speichern + IfFileExists "$INSTDIR\monitord.xml" +1 +3 + File /oname=monitord.xml.new sample-config\monitord.xml.win32 + goto +2 + File /oname=monitord.xml sample-config\monitord.xml.win32 + + ;Store installation folder + WriteRegStr HKCU "Software\monitord" "" $INSTDIR + + ;Startmenu + + CreateDirectory "$SMPROGRAMS\monitord" + CreateShortCut "$SMPROGRAMS\monitord\monitord.lnk" "$INSTDIR\monitord.exe" + CreateShortCut "$SMPROGRAMS\monitord\Konfiguration bearbeiten.lnk" "notepad" "$INSTDIR\monitord.xml" + CreateShortCut "$SMPROGRAMS\monitord\uninstall.lnk" "$INSTDIR\uninstall.exe" + + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + ; In Systemsteuerung/Software eintragen mit "Nur Entfernen" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "DisplayName" "monitord" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoRepair" 1 + +SectionEnd + +@PLUGINS_TRUE@Section "Plugins" SecPlugins +@PLUGINS_TRUE@ SetOutPath "$INSTDIR\plugins" +@PLUGINS_TRUE@@LAME_TRUE@ File monitord\plugins\.libs\libmplugin_audiorecorder-0.dll +@PLUGINS_TRUE@@MYSQLSTORAGE_TRUE@ File monitord\plugins\.libs\libmplugin_mysql-0.dll +@PLUGINS_TRUE@SectionEnd + +@PLUGINS_TRUE@Section "Dll" SecDLLs +@PLUGINS_TRUE@ SetOutPath "$INSTDIR" +@PLUGINS_TRUE@@MYSQLSTORAGE_TRUE@ File monitord\libmysql.dll +@PLUGINS_TRUE@@LAME_TRUE@ File monitord\libmp3lame-0.dll +@PLUGINS_TRUE@SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecMonitord ${LANG_GERMAN} "Das monitord Hauptprogramm" +@PLUGINS_TRUE@ LangString DESC_SecPlugins ${LANG_GERMAN} "Plugins zum monitord, z.B. Audiorekorder, MySQL Plugin, ..." +@PLUGINS_TRUE@ LangString DESC_SecDLLs ${LANG_GERMAN} "von Plugins ben�tigte DLLs (mysql.dll, mp3lame, ...)" + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecMonitord} $(DESC_SecMonitord) +@PLUGINS_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} $(DESC_SecPlugins) +@PLUGINS_TRUE@ !insertmacro MUI_DESCRIPTION_TEXT ${SecDLLs} $(DESC_SecDLLs) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir /r "$INSTDIR" + Delete "$SMPROGRAMS\monitord.lnk" + Delete "$SMPROGRAMS\uninstall.lnk" + RMDir /r "$SMPROGRAMS\monitord" + + DeleteRegKey /ifempty HKCU "Software\monitord" + ; Aus Systemsteuerung/Software wieder l�schen + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" + +SectionEnd diff --git a/win32-nsis/monitord.nsi b/win32-nsis/monitord.nsi new file mode 100644 index 0000000..8782d12 --- /dev/null +++ b/win32-nsis/monitord.nsi @@ -0,0 +1,147 @@ +;NSIS Modern User Interface +;Basic Example Script +;Written by Joost Verburg + +;-------------------------------- +;Include Modern UI + + !include "MUI.nsh" + +;-------------------------------- +;General + + ;Name and file + Name "monitord v2.0svn" + OutFile "monitord-setup.exe" + + ;Default installation folder + InstallDir "$PROGRAMFILES\monitord" + + ;Get installation folder from registry if available + InstallDirRegKey HKCU "Software\monitord" "" + +;-------------------------------- +;Interface Settings + + !define MUI_ABORTWARNING + +;-------------------------------- +;Pages + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "license.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_INSTFILES + + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH + +;-------------------------------- +;Languages + + !insertmacro MUI_LANGUAGE "German" + +;-------------------------------- +;Installer Sections + +Section "Grundprogramm" SecMonitord + + SetOutPath "$INSTDIR" + + ; Dateiliste + File ..\monitord\monitord.exe + File _start.bat + File _stop.bat + File _install-service.bat + File _uninstall-service.bat + + + ;Konfigfile nur erstellen, wenn es noch keins gibt. Sonst als + ;monitord.xml.new speichern + IfFileExists "$INSTDIR\monitord.xml" +1 +3 + File /oname=monitord.xml.new ..\sample-config\monitord.xml.win32 + goto +2 + File /oname=monitord.xml ..\sample-config\monitord.xml.win32 + + ;Store installation folder + WriteRegStr HKCU "Software\monitord" "" $INSTDIR + + ;Startmenu + + CreateDirectory "$SMPROGRAMS\monitord" + CreateShortCut "$SMPROGRAMS\monitord\monitord.lnk" "$INSTDIR\monitord.exe" + CreateShortCut "$SMPROGRAMS\monitord\Konfiguration bearbeiten.lnk" "notepad" "$INSTDIR\monitord.xml" + CreateShortCut "$SMPROGRAMS\monitord\uninstall.lnk" "$INSTDIR\uninstall.exe" + + + ;Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall.exe" + + ; In Systemsteuerung/Software eintragen mit "Nur Entfernen" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "DisplayName" "monitord" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" \ + "NoRepair" 1 + +SectionEnd + +Section "Beispielkonfiguration" SecSamples + SetOutPath "$INSTDIR\sample-config" + File "..\sample-config\*" +SectionEnd + +Section "Plugins" SecPlugins + SetOutPath "$INSTDIR\plugins" + File ..\monitord\plugins\.libs\libmplugin_audiorecorder-0.dll + File ..\monitord\plugins\.libs\libmplugin_mysql-0.dll +SectionEnd + +Section "Dll" SecDLLs + + SetOutPath "$INSTDIR" + File ..\monitord\libmysql.dll + File ..\monitord\libmp3lame-0.dll + +SectionEnd + +;-------------------------------- +;Descriptions + + ;Language strings + LangString DESC_SecMonitord ${LANG_GERMAN} "Das monitord Hauptprogramm" + LangString DESC_SecPlugins ${LANG_GERMAN} "Plugins zum monitord, z.B. Audiorekorder, MySQL Plugin, ..." + LangString DESC_SecDLLs ${LANG_GERMAN} "von Plugins ben�tigte DLLs (mysql.dll, mp3lame, ...)" + LangString DESC_SecSamples ${LANG_GERMAN} "Beispielkonfigurationen" + + ;Assign language strings to sections + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecMonitord} $(DESC_SecMonitord) + !insertmacro MUI_DESCRIPTION_TEXT ${SecPlugins} $(DESC_SecPlugins) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDLLs} $(DESC_SecDLLs) + !insertmacro MUI_DESCRIPTION_TEXT ${SecSamples} $(DESC_SecSamples) + !insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;Uninstaller Section + +Section "Uninstall" + + ;ADD YOUR OWN FILES HERE... + + Delete "$INSTDIR\Uninstall.exe" + + RMDir /r "$INSTDIR" + Delete "$SMPROGRAMS\monitord.lnk" + Delete "$SMPROGRAMS\uninstall.lnk" + RMDir /r "$SMPROGRAMS\monitord" + + DeleteRegKey /ifempty HKCU "Software\monitord" + ; Aus Systemsteuerung/Software wieder l�schen + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\monitord" + +SectionEnd \ No newline at end of file diff --git a/win32vars.sh b/win32vars.sh new file mode 100755 index 0000000..7933442 --- /dev/null +++ b/win32vars.sh @@ -0,0 +1,2 @@ +export CPPFLAGS="-I/include -Ilame-3.97/include" +export LDFLAGS="-L/lib" diff --git a/xmlParser/.svn/all-wcprops b/xmlParser/.svn/all-wcprops new file mode 100644 index 0000000..ecf8522 --- /dev/null +++ b/xmlParser/.svn/all-wcprops @@ -0,0 +1,149 @@ +K 25 +svn:wc:ra_dav:version-url +V 37 +/!svn/ver/321/monitor/trunk/xmlParser +END +xmlParser.vcproj +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParser.vcproj +END +xmlParser.html +K 25 +svn:wc:ra_dav:version-url +V 52 +/!svn/ver/321/monitor/trunk/xmlParser/xmlParser.html +END +xmlTest.cpp +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/173/monitor/trunk/xmlParser/xmlTest.cpp +END +xmlParser.suo +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParser.suo +END +utf8test.xml +K 25 +svn:wc:ra_dav:version-url +V 50 +/!svn/ver/321/monitor/trunk/xmlParser/utf8test.xml +END +PMMLModel.xml +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/321/monitor/trunk/xmlParser/PMMLModel.xml +END +xmlParserUnicode.vcproj +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParserUnicode.vcproj +END +makefile.solaris +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/173/monitor/trunk/xmlParser/makefile.solaris +END +xmlTestUnicode.cpp +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/173/monitor/trunk/xmlParser/xmlTestUnicode.cpp +END +xmlParser.cpp +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParser.cpp +END +xmlParserDLL.dsp +K 25 +svn:wc:ra_dav:version-url +V 54 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParserDLL.dsp +END +xmlParserTestDLL.dsp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParserTestDLL.dsp +END +xmlParser.dsp +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParser.dsp +END +xmlParser.h +K 25 +svn:wc:ra_dav:version-url +V 49 +/!svn/ver/321/monitor/trunk/xmlParser/xmlParser.h +END +outputTestUTF8.xml +K 25 +svn:wc:ra_dav:version-url +V 56 +/!svn/ver/321/monitor/trunk/xmlParser/outputTestUTF8.xml +END +xmlParser.sln +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParser.sln +END +xmlParser.dsw +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParser.dsw +END +xmlParserUnicode.dsp +K 25 +svn:wc:ra_dav:version-url +V 58 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParserUnicode.dsp +END +Readme.txt +K 25 +svn:wc:ra_dav:version-url +V 48 +/!svn/ver/321/monitor/trunk/xmlParser/Readme.txt +END +xmlParserDLL.vcproj +K 25 +svn:wc:ra_dav:version-url +V 57 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParserDLL.vcproj +END +xmlParserTestDLL.vcproj +K 25 +svn:wc:ra_dav:version-url +V 61 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParserTestDLL.vcproj +END +makefile +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/173/monitor/trunk/xmlParser/makefile +END +xmlParser.ncb +K 25 +svn:wc:ra_dav:version-url +V 51 +/!svn/ver/173/monitor/trunk/xmlParser/xmlParser.ncb +END +test.xml +K 25 +svn:wc:ra_dav:version-url +V 46 +/!svn/ver/321/monitor/trunk/xmlParser/test.xml +END diff --git a/xmlParser/.svn/dir-prop-base b/xmlParser/.svn/dir-prop-base new file mode 100644 index 0000000..56a1490 --- /dev/null +++ b/xmlParser/.svn/dir-prop-base @@ -0,0 +1,8 @@ +K 10 +svn:ignore +V 25 +.deps +.dirstamp +.libs + +END diff --git a/xmlParser/.svn/entries b/xmlParser/.svn/entries new file mode 100644 index 0000000..fac0841 --- /dev/null +++ b/xmlParser/.svn/entries @@ -0,0 +1,844 @@ +10 + +dir +455 +http://svn.monitord.de/monitor/trunk/xmlParser +http://svn.monitord.de + + + +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + +dc922ea4-9529-4c0e-9c9b-83963a890005 + +xmlParser.vcproj +file + + + + +2012-01-23T14:07:05.124486Z +50ed12abd343ad679c72eda8e30feb25 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4920 + +xmlParser.html +file + + + + +2012-01-23T14:07:05.125494Z +8dcf6784d239addef54370bf76d285d0 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +32167 + +xmlTest.cpp +file + + + + +2012-01-23T14:07:05.125494Z +309d170b1820a61d0b21f8bbafd6f5e1 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +13069 + +xmlParser.suo +file + + + + +2012-01-23T14:07:05.126492Z +feaa0d3a6944d293ff787f5ae2c3e4e3 +2007-11-15T17:57:46.787418Z +150 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +12800 + +utf8test.xml +file + + + + +2012-01-23T14:07:05.126492Z +3501bf0b5c2678cf7257dbef1007d3c7 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +660 + +PMMLModel.xml +file + + + + +2012-01-23T14:07:05.126492Z +c8252f5ce3b909a1f5f788f16c3dd07b +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +1274 + +xmlParserUnicode.vcproj +file + + + + +2012-01-23T14:07:05.130498Z +795b2628003fd290f38a8fa9a6d78669 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +5233 + +makefile.solaris +file + + + + +2012-01-23T14:07:05.130498Z +d843f004ba57f0c9b399aa74b950bc95 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +3022 + +xmlTestUnicode.cpp +file + + + + +2012-01-23T14:07:05.130498Z +170c713b8ab98212ba10480ecda2d4ef +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +11804 + +xmlParser.cpp +file + + + + +2012-01-23T14:07:05.131496Z +a64364afd227e21d392bc00d92c9bb1d +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +94192 + +xmlParserDLL.dsp +file + + + + +2012-01-23T14:07:05.131496Z +2ac2e102bb5034ba3c81ee9e01042c2a +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4608 + +xmlParserTestDLL.dsp +file + + + + +2012-01-23T14:07:05.130498Z +ab8e992adc3c69b44ed007dceb85d792 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4642 + +xmlParser.dsp +file + + + + +2012-01-23T14:07:05.131496Z +f054a4a794334d72186a5be11b37bfb9 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4454 + +xmlParser.h +file + + + + +2012-01-23T14:07:05.132493Z +2cf281bbe3c34e9807280fbb3fbeab65 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +29177 + +outputTestUTF8.xml +file + + + + +2012-01-23T14:07:05.132493Z +2f5a6ec76bebe64cbeccc9eaffd446fa +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +675 + +xmlParser.sln +file + + + + +2012-01-23T14:07:05.133491Z +dc6260aa4df44b3e158c325bdc0ee820 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +2450 + +xmlParser.dsw +file + + + + +2012-01-23T14:07:05.133491Z +1141cb470b49f034a0e7bfd1a4cef14c +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +1154 + +xmlParserUnicode.dsp +file + + + + +2012-01-23T14:07:05.133491Z +71fb8dbda0ecbe72b1a90cb8c7357dd0 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4622 + +Readme.txt +file + + + + +2012-01-23T14:07:05.134490Z +1035e33f807733a771c356b109e4f017 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +12124 + +xmlParserDLL.vcproj +file + + + + +2012-01-23T14:07:05.134490Z +eb96afc1e441289040a9527fa176e6ae +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +5063 + +xmlParserTestDLL.vcproj +file + + + + +2012-01-23T14:07:05.134490Z +c05b80feeefabea4922a6535f2064fc1 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +4802 + +makefile +file + + + + +2012-01-23T14:07:05.134490Z +6f14abab7cc11874a9c3716881398997 +2007-11-15T17:57:46.787418Z +150 +buebchen + + + + + + + + + + + + + + + + + + + + + +3073 + +xmlParser.ncb +file + + + + +2012-01-23T14:07:05.135490Z +d35b9bca97a809185efc684fdbf561ce +2007-11-15T17:57:46.787418Z +150 +buebchen +has-props + + + + + + + + + + + + + + + + + + + + +44032 + +test.xml +file + + + + +2012-01-23T14:07:05.135490Z +47ee40d758ec9b831c410c4fc4fa6f25 +2008-07-23T18:11:49.877019Z +321 +dekarl +has-props + + + + + + + + + + + + + + + + + + + + +100 + diff --git a/xmlParser/.svn/prop-base/PMMLModel.xml.svn-base b/xmlParser/.svn/prop-base/PMMLModel.xml.svn-base new file mode 100644 index 0000000..94feee6 --- /dev/null +++ b/xmlParser/.svn/prop-base/PMMLModel.xml.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 8 +text/xml +END diff --git a/xmlParser/.svn/prop-base/Readme.txt.svn-base b/xmlParser/.svn/prop-base/Readme.txt.svn-base new file mode 100644 index 0000000..4a83b70 --- /dev/null +++ b/xmlParser/.svn/prop-base/Readme.txt.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 10 +text/plain +END diff --git a/xmlParser/.svn/prop-base/outputTestUTF8.xml.svn-base b/xmlParser/.svn/prop-base/outputTestUTF8.xml.svn-base new file mode 100644 index 0000000..94feee6 --- /dev/null +++ b/xmlParser/.svn/prop-base/outputTestUTF8.xml.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 8 +text/xml +END diff --git a/xmlParser/.svn/prop-base/test.xml.svn-base b/xmlParser/.svn/prop-base/test.xml.svn-base new file mode 100644 index 0000000..94feee6 --- /dev/null +++ b/xmlParser/.svn/prop-base/test.xml.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 8 +text/xml +END diff --git a/xmlParser/.svn/prop-base/utf8test.xml.svn-base b/xmlParser/.svn/prop-base/utf8test.xml.svn-base new file mode 100644 index 0000000..94feee6 --- /dev/null +++ b/xmlParser/.svn/prop-base/utf8test.xml.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 8 +text/xml +END diff --git a/xmlParser/.svn/prop-base/xmlParser.h.svn-base b/xmlParser/.svn/prop-base/xmlParser.h.svn-base new file mode 100644 index 0000000..bdbd305 --- /dev/null +++ b/xmlParser/.svn/prop-base/xmlParser.h.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff --git a/xmlParser/.svn/prop-base/xmlParser.html.svn-base b/xmlParser/.svn/prop-base/xmlParser.html.svn-base new file mode 100644 index 0000000..a06cf0a --- /dev/null +++ b/xmlParser/.svn/prop-base/xmlParser.html.svn-base @@ -0,0 +1,9 @@ +K 13 +svn:eol-style +V 6 +native +K 13 +svn:mime-type +V 9 +text/html +END diff --git a/xmlParser/.svn/prop-base/xmlParser.ncb.svn-base b/xmlParser/.svn/prop-base/xmlParser.ncb.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/xmlParser/.svn/prop-base/xmlParser.ncb.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/xmlParser/.svn/prop-base/xmlParser.suo.svn-base b/xmlParser/.svn/prop-base/xmlParser.suo.svn-base new file mode 100644 index 0000000..5e9587e --- /dev/null +++ b/xmlParser/.svn/prop-base/xmlParser.suo.svn-base @@ -0,0 +1,5 @@ +K 13 +svn:mime-type +V 24 +application/octet-stream +END diff --git a/xmlParser/.svn/text-base/PMMLModel.xml.svn-base b/xmlParser/.svn/text-base/PMMLModel.xml.svn-base new file mode 100644 index 0000000..65aebf3 --- /dev/null +++ b/xmlParser/.svn/text-base/PMMLModel.xml.svn-base @@ -0,0 +1,31 @@ + + +
    + Hello World! + +
    + + + + + + + + + + + + + + + + + + This normally generates an unmatched tag error:
    + This normally generates an unknown escape sequence error: ' ' + +]]>
    +
    diff --git a/xmlParser/.svn/text-base/Readme.txt.svn-base b/xmlParser/.svn/text-base/Readme.txt.svn-base new file mode 100644 index 0000000..a6ff5df --- /dev/null +++ b/xmlParser/.svn/text-base/Readme.txt.svn-base @@ -0,0 +1,184 @@ +XMLParser v2.23 +=============== + +The library is composed by two files: "xmlParser.cpp" and "xmlParser.h". +These are the only 2 files that you need when using the library inside your own projects. +All the functions of the library are documented inside the comments of the file "xmlParser.h". + +To use the unicode version of the library, you need to define the "_UNICODE" preprocessor +definition variable (inside your project definition file). + +Some small test examples are also given: see the files "xmlTest.cpp" and "xmlTestUnicode.cpp". +The examples are described inside the html file "xmlParser.html". + +To build the examples: +- linux/unix: type "make" +- solaris: type "make -f makefile.solaris" +- windows: Visual Studio: double-click on xmlParser.dsw + (under Visual Studio .NET, the .dsp and .dsw files will be automatically converted to .vcproj and .sln files) + +In order to build the examples you need some project files: +- linux/unix: makefile +- solaris: makefile.solaris +- windows: Visual Studio: *.dsp, xmlParser.dsw + +WINDOWS: + Inside Visual C++, the "debug versions" of the memory allocation functions are + very slow: Do not forget to compile in "release mode" to get maximum speed. + When I have to debug a software that is using the XMLParser Library, it's usually + a nightmare because the library is sooOOOoooo slow in debug mode. To solve this + problem, during all the debugging session, I use a very fast DLL version of the + XMLParser Library (the DLL is compiled in release mode). Using the DLL version of + the XMLParser Library allows me to have lightening XML parsing speed even in debug! + Other than that, the DLL version is useless: In the release version of my tool, + I always use the normal, ".cpp"-based, XMLParser Library. +LINUX: + The speed of the debug version of the XMLParser library is tolerable. + +Change Log +---------- + +* V1.00: February 20, 2002: initial version. +* V1.01: February 13, 2005: first bug-free release. +* V1.02: March 6, 2005: 2 minor changes: + o "parseString" function declaration changed to allow easy parsing from memory buffer + o Minor changes to allow easy compilation under old GCC under QNX +* V1.03: April 2,2005: 3 minors changes: + o When parsing from a user-supplied memory buffer, the library was previously modifying the content of the memory buffer. This is not the case anymore + o Non-unicode Windows version: You can now work with unicode XML files: They are converted to ANSI charset before being processed + o Added Visual Studio 6.0 project files +* V1.04: May 16, 2005: 3 minors changes, 1 bug fix: + o FIX: When creating an xml string with no formatting, the formatting did not work always (due to an un-initialized variable) + o Improved parsing speed (try increasing the constant "memoryIncrease" if you need more speed) + o Minor changes to allow easy compilation under MSYS/MINGW under Windows + o Added more character entities +* V1.05: May 31, 2005: 2 minors changes: + o Changed some "char *" to "const char *" + o Improved robustness against badly formed xml strings +* V1.06: July 11, 2005: 1 change, 1 bug fix: + o FIX: Some character entities were not previously correctly processed. + o Major speed improvement. The library is now at least 10 times faster. (Try increasing the constant "memoryIncrease" if you need more speed) + o moved the log file out of the HTML file +* V1.07: July 25, 2005: 1 change + o Added a pre-compiler directive named "APPROXIMATE_PARSING". See header of xmlParser.cpp for more info. +* V1.08: September 8,2005: 1 bug fix: + o FIX: on special cases, non-matching quotes were causing malfunction +* V1.09: November 22, 2005: 1 addition + o Added some new functions to be able to easily create a XML structure in memory +* V1.10: December 29, 2005: 2 minor change. + o Changed some formatting when rendering a XML tree to a string + o added the STRICT_PARSING option +* V1.11: December 31, 2005: 1 bug fix: + o FIX: reduced memory consumption. +* V1.12: January 4, 2006: 1 addition. + o added the function "removeNodeContent" to delete a subtree +* V1.13: February 25, 2006: 1 addition. + o added a primitive UNICODE support under linux (thanks to Sunny Bains) +* V1.14: April 24, 2006: 1 bug fix: + o FIX: memory allocation errors when the XML tree is created from scratch using "addChild" method. +* V1.15: April 28, 2006: 2 additions + o added some methods to delete attributes,clearTags and textFields from an XMLNode tree. + o added the "addChild(XMLNode x)" method +* V1.16: May 17, 2006: 1 bug fix: + o FIX: memory allocation errors under linux +* V1.17: May 28, 2006: 1 bug fix, 2 additions: + o FIX: character entities not always processed inside text block + o position of the eXMLErrorMissingEndTag error is computed + o added the eXMLErrorUnknownEscapeSequence +* V1.18: June 8, 2006: 1 bug fix, minors changes + o FIX: the 'eXMLErrorFirstTagNotFound' error was not reported. + o changed license to BSD - added some examples of usage. +* V1.19: July 4, 2006: 3 addition. + o added automatic convertion from/to UNICODE/ANSI in linux (this was already done in windows) + o added getChildNodeWithAttribute() + o added support for SOLARIS unicode (Thanks to Joseph Vijay!). + o added support for 32 bit unicode (so that the library works on Redhat Enterprise v4 EMT64). +* V1.20: July 22, 2006: 13 additions. + o added 9 "update" functions (like updateAttribute(LPCTSTR lpszNewValue, LPCTSTR lpszNewName=NULL,LPCTSTR lpszOldName);) + o added 4 functions that allows you to include any binary data (images, sounds,...) into an XML file or string using "Base64 encoding". +* V2.01: July 24, 2006: 1 major change, 2 minor change, 3 additions + o added extended support for strict UTF-8 character encoding (The characters in UTF-8 have different lengths (from 1 byte to 4 bytes)). + Chinese, cyrilic and other extended characters are now processed successfully. + o new character entities: This is now equivalent: 'A' or 'A' or 'A' + (The ascci code of 'A' is 65 in decimal and 0x41 in hexadecimal). + o added a function that try to guess if the encoding is UTF-8. + o the code has been modified in order to allow easy inclusion of new entities and new clearTags (minor change). + o the "updateAttribute" function is now adding a new attribute if the one to update is missing. + (same behavior for "updateText" and "updateClear"). + o no more "stringDup" required for functions like "addText", "addAttribute",... + The old behavior is still accessible through functions like "addText_WOSD", "addAttribute_WOSD",... + ("_WSOD" stands for "WithOut StringDup"). + This change greatly simplifies the user's code (major update). + Unfortunately, old user's code must be updated to work with the new version. + Fortunately, all the user's code used to READ the content of an XML file is left unchanged: + Only the "creation of XML" and the "update of XML" user's code require a little updating work. +* V2.02: July 25, 2006: 1 minor change + o changed the function "createXMLTopNode()" to "createXMLTopNode(LPCTSTR lpszName, int isDeclaration=FALSE);". +* V2.03: July 28, 2006: 1 minor change + o changed LPTSTR to XMLSTR to avoid name-clash with the definitions in +* V2.04: August 6, 2006: 1 addition + o added one heuristic inside the function "guessUTF8ParsingParameterValue". +* V2.05: August 15, 2006: 1 addition + o now displays the error message inside the method "openFileHelper" in a MessageBox window (WIN32 only). +* V2.06: August 16, 2006: 2 additions + o added the method XMLNode::writeToFile to make it easier to write the content of an XMLNode to a file. + o added support for Byte-order marks (or BOM). +* V2.07: August 22, 2006: 1 additions + o added _XMLUNICODE preprocessor variable to make it easy to force the library into either utf16-mode or utf8-mode. +* V2.08: August 22, 2006: 1 bug fix + o inside the tag content, the ">" and "/>" strings are not reported as errors anymore. +* V2.09: August 31, 2006: 1 bug fix + o the character entities of type K were not working properly (thanks to Jos� Carlos Medeiros for notifying me!). +* V2.10: September 21, 2006: 1 bug fix + o two consecutive calls to the deleteNodeContent() function on the same node has now no effect (as it should be). + (Thanks to Hartmut Lemmel for notifying me!) + o improved compatibility to Borland C++ +* V2.11: October 24, 2006: 3 additions, 1 bug fix. + o added the function getParentNode(). Thanks to Jakub Siudzinski for notifying me a good way to do it easily. + o added one parameter to the deleteNodeContent() function to force the deletion of the underlying XMLNode tree. + This will release all the memory occupied by the XMLNode tree even if there still exist references to some part + of the tree. + o changed the usage of the base64Encode() function to reduce the number of malloc's (speed increase). + o FIX: when parsing an XML string, if the TOP tag has no closing tag, the library now correctly + reports "eXMLErrorMissingEndTag". +* V2.12: October 25, 2006: 2 additions + o refactoring of the Base64 functions to make things easier to use + o added the _XMLPARSER_NO_MESSAGEBOX_ preprocessor variable (see header of xmlParser.cpp for explanation) +* V2.13: October 31, 2006: 1 minor change, 1 bug fix + o changed the signature of _strnicmp to allow easy compilation under linux . + o FIX: size of buffer for the convertion from ascii/utf8 to utf-16 was incorrect. +* V2.14: November 13, 2006: 1 minor change, 1 bug fix + o changed the parseFile,openFileHelper,writeToFile functions so that the filename parameter is widechar when UNICODE=1 + o fixed a bug in openFileHelper when sizeof(wchar_t)=4 +* V2.15: December 22, 2006: 2 additions + o added the parameter 'pos' to the addChild,addText,addClear methods to allow insertion of new components anywhere in an already existing XMLNode structure + o added 'postionOf*' methods. +* V2.16: December 27, 2006: 1 minor change + o removed the un-necessary method "firstPosition()" & some code re-structuration. +* V2.17: January 9, 2007: 1 addition, 1 minor change + o added the preprocessor variable "XML_NO_WIDE_CHAR" to allow easy compilation on exotic compilers + o added the "const" method qualifier to some methods. +* V2.18: January 15, 2007: 1 bug fix + o FIX: addChild(XMLNode x,int pos) was sometime inserting at the wrong position when pos!=-1 +* V2.19: January 30, 2007: 1 bug fix, 3 additions. + o FIX: Unknown Character Entities are now always reported correctly. Thanks to Vincent Vanhoucke. + o The XML specification indicates that no white spaces should be lost when parsing the file. This is now possible setting the + new global parameter "dropWhiteSpaces" to false. + o The library now works under Windows CE 4.2, Windows Mobile (PPC) 2003(5) (xscale) and Mac OS X Tiger. Thanks to Zdenek Nemec. + o The " XML.c - implementation file for basic XML parser written in ANSI C++ +# * for portability. +# * It works by using recursion and a node tree for breaking down the elements +# * of an XML document.

    +# * +# * @version V2.23 +# * +# * @author Frank Vanden Berghen +# * based on original implementation by Martyn C Brown +# * +# * BSD license: +# * Copyright (c) 2002, Frank Vanden Berghen +# * All rights reserved. +# * Redistribution and use in source and binary forms, with or without +# * modification, are permitted provided that the following conditions are met: +# * +# * * Redistributions of source code must retain the above copyright +# * notice, this list of conditions and the following disclaimer. +# * * Redistributions in binary form must reproduce the above copyright +# * notice, this list of conditions and the following disclaimer in the +# * documentation and/or other materials provided with the distribution. +# * * Neither the name of the Frank Vanden Berghen nor the +# * names of its contributors may be used to endorse or promote products +# * derived from this software without specific prior written permission. +# * +# * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +# * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +# * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# * +# **************************************************************************** +# +#makefile for the xmlParser library +# +all : xmlEasyTest xmlTest xmlTestUnicode + +GPP=CC + +xmlEasyTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -DXML_NO_WIDE_CHAR -o xmlEasyTest \ + xmlParser.cpp xmlTest.cpp +xmlTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -o xmlTest \ + xmlParser.cpp xmlTest.cpp +xmlTestUnicode : xmlParser.cpp xmlParser.h xmlTestUnicode.cpp + $(GPP) -g -D_UNICODE -DUNICODE -o xmlTestUnicode -lw \ + xmlParser.cpp xmlTestUnicode.cpp + +clean: + -@rm xmlEasyTest >/dev/null 2>/dev/null + -@rm xmlTest >/dev/null 2>/dev/null + -@rm xmlTestUnicode >/dev/null 2>/dev/null + -@rm test.xml >/dev/null 2>/dev/null + -@rm testUnicode.xml >/dev/null 2>/dev/null + -@rm outputTestUTF8.xml >/dev/null 2>/dev/null + -@rm *~ >/dev/null 2>/dev/null + @echo "Clean OK." diff --git a/xmlParser/.svn/text-base/makefile.svn-base b/xmlParser/.svn/text-base/makefile.svn-base new file mode 100644 index 0000000..1323958 --- /dev/null +++ b/xmlParser/.svn/text-base/makefile.svn-base @@ -0,0 +1,66 @@ +# * +# **************************************************************************** +# *

    XML.c - implementation file for basic XML parser written in ANSI C++ +# * for portability. +# * It works by using recursion and a node tree for breaking down the elements +# * of an XML document.

    +# * +# * @version V2.23 +# * +# * @author Frank Vanden Berghen +# * based on original implementation by Martyn C Brown +# * +# * BSD license: +# * Copyright (c) 2002, Frank Vanden Berghen +# * All rights reserved. +# * Redistribution and use in source and binary forms, with or without +# * modification, are permitted provided that the following conditions are met: +# * +# * * Redistributions of source code must retain the above copyright +# * notice, this list of conditions and the following disclaimer. +# * * Redistributions in binary form must reproduce the above copyright +# * notice, this list of conditions and the following disclaimer in the +# * documentation and/or other materials provided with the distribution. +# * * Neither the name of the Frank Vanden Berghen nor the +# * names of its contributors may be used to endorse or promote products +# * derived from this software without specific prior written permission. +# * +# * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +# * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +# * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# * +# **************************************************************************** +# +#makefile for the xmlParser library +# +all : xmlEasyTest xmlTest xmlTestUnicode + +#GPP=/opt/intel/cc/9.1.039/bin/icpc +GPP=g++ + +xmlEasyTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -Wall -DXML_NO_WIDE_CHAR -o xmlEasyTest \ + xmlParser.cpp xmlTest.cpp +xmlTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -Wall -o xmlTest \ + xmlParser.cpp xmlTest.cpp +xmlTestUnicode : xmlParser.cpp xmlParser.h xmlTestUnicode.cpp + $(GPP) -g -Wall -D_UNICODE -DUNICODE -o xmlTestUnicode \ + xmlParser.cpp xmlTestUnicode.cpp + +clean: + -@rm xmlEasyTest >/dev/null 2>/dev/null + -@rm xmlTest >/dev/null 2>/dev/null + -@rm xmlTestUnicode >/dev/null 2>/dev/null + -@rm test.xml >/dev/null 2>/dev/null + -@rm testUnicode.xml >/dev/null 2>/dev/null + -@rm outputTestUTF8.xml >/dev/null 2>/dev/null + -@rm *~ >/dev/null 2>/dev/null + @echo "Clean OK." diff --git a/xmlParser/.svn/text-base/outputTestUTF8.xml.svn-base b/xmlParser/.svn/text-base/outputTestUTF8.xml.svn-base new file mode 100644 index 0000000..fc1ac30 --- /dev/null +++ b/xmlParser/.svn/text-base/outputTestUTF8.xml.svn-base @@ -0,0 +1,27 @@ + + + + The world has many languages + + + В мире множество языков + + + el mundo tiene muchos idiomas + + + 世界有很多语言 + + <Русский имя="name" значение="value"> + <Мир> + + <汉语 名字="name" 价值="value"> + 世界有很多语言 + + + "MetAl!" + + <ä> + Umlaut Element + + diff --git a/xmlParser/.svn/text-base/test.xml.svn-base b/xmlParser/.svn/text-base/test.xml.svn-base new file mode 100644 index 0000000..5c6edb2 --- /dev/null +++ b/xmlParser/.svn/text-base/test.xml.svn-base @@ -0,0 +1,4 @@ + + + + diff --git a/xmlParser/.svn/text-base/utf8test.xml.svn-base b/xmlParser/.svn/text-base/utf8test.xml.svn-base new file mode 100644 index 0000000..ab1e01d --- /dev/null +++ b/xmlParser/.svn/text-base/utf8test.xml.svn-base @@ -0,0 +1,11 @@ + + + The world has many languages + В мире множество языков + el mundo tiene muchos idiomas + 世界有很多语言 + <Русский имя="name" значение="value"><Мир> + <汉语 名字="name" 价值="value">世界有很多语言 + "MetAl!" + <ä>Umlaut Element + diff --git a/xmlParser/.svn/text-base/xmlParser.cpp.svn-base b/xmlParser/.svn/text-base/xmlParser.cpp.svn-base new file mode 100644 index 0000000..9e369ec --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.cpp.svn-base @@ -0,0 +1,2594 @@ +/** + **************************************************************************** + *

    XML.c - implementation file for basic XML parser written in ANSI C++ + * for portability. It works by using recursion and a node tree for breaking + * down the elements of an XML document.

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * NOTE: + * + * If you add "#define STRICT_PARSING", on the first line of this file + * the parser will see the following XML-stream: + * some textother text + * as an error. Otherwise, this tring will be equivalent to: + * some textother text + * + * NOTE: + * + * If you add "#define APPROXIMATE_PARSING" on the first line of this file + * the parser will see the following XML-stream: + * + * + * + * as equivalent to the following XML-stream: + * + * + * + * This can be useful for badly-formed XML-streams but prevent the use + * of the following XML-stream (problem is: tags at contiguous levels + * have the same names): + * + * + * + * + * + * + * NOTE: + * + * If you add "#define _XMLPARSER_NO_MESSAGEBOX_" on the first line of this file + * the "openFileHelper" function will always display error messages inside the + * console instead of inside a message-box-window. Message-box-windows are + * available on windows 9x/NT/2000/XP/Vista only. + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#include "xmlParser.h" +#ifdef _XMLWINDOWS +//#ifdef _DEBUG +//#define _CRTDBG_MAP_ALLOC +//#include +//#endif +#define WIN32_LEAN_AND_MEAN +#include // to have IsTextUnicode, MultiByteToWideChar, WideCharToMultiByte to handle unicode files + // to have "MessageBoxA" to display error messages for openFilHelper +#endif + +#include +#include +#include +#include +#include + +XMLCSTR XMLNode::getVersion() { return _T("v2.23"); } +void free_XMLDLL(void *t){free(t);} + +static char strictUTF8Parsing=1, guessUnicodeChars=1, dropWhiteSpace=1; + +inline int mmin( const int t1, const int t2 ) { return t1 < t2 ? t1 : t2; } + +// You can modify the initialization of the variable "XMLClearTags" below +// to change the clearTags that are currently recognized by the library. +// The number on the second columns is the length of the string inside the +// first column. The "") }, + { _T("") }, + { _T("
    ")    ,5,  _T("
    ") }, + { _T("")}, + { _T("") }, + { NULL ,0, NULL } +}; +ALLXMLClearTag* XMLNode::getClearTagTable() { return XMLClearTags; } + +// You can modify the initialization of the variable "XMLEntities" below +// to change the character entities that are currently recognized by the library. +// The number on the second columns is the length of the string inside the +// first column. Additionally, the syntaxes " " and " " are recognized. +typedef struct { XMLCSTR s; int l; XMLCHAR c;} XMLCharacterEntity; +static XMLCharacterEntity XMLEntities[] = +{ + { _T("&" ), 5, _T('&' )}, + { _T("<" ), 4, _T('<' )}, + { _T(">" ), 4, _T('>' )}, + { _T("""), 6, _T('\"')}, + { _T("'"), 6, _T('\'')}, + { NULL , 0, '\0' } +}; + +// When rendering the XMLNode to a string (using the "createXMLString" function), +// you can ask for a beautiful formatting. This formatting is using the +// following indentation character: +#define INDENTCHAR _T('\t') + +// The following function parses the XML errors into a user friendly string. +// You can edit this to change the output language of the library to something else. +XMLCSTR XMLNode::getError(XMLError xerror) +{ + switch (xerror) + { + case eXMLErrorNone: return _T("No error"); + case eXMLErrorMissingEndTag: return _T("Warning: Unmatched end tag"); + case eXMLErrorEmpty: return _T("Error: No XML data"); + case eXMLErrorFirstNotStartTag: return _T("Error: First token not start tag"); + case eXMLErrorMissingTagName: return _T("Error: Missing start tag name"); + case eXMLErrorMissingEndTagName: return _T("Error: Missing end tag name"); + case eXMLErrorNoMatchingQuote: return _T("Error: Unmatched quote"); + case eXMLErrorUnmatchedEndTag: return _T("Error: Unmatched end tag"); + case eXMLErrorUnmatchedEndClearTag: return _T("Error: Unmatched clear tag end"); + case eXMLErrorUnexpectedToken: return _T("Error: Unexpected token found"); + case eXMLErrorInvalidTag: return _T("Error: Invalid tag found"); + case eXMLErrorNoElements: return _T("Error: No elements found"); + case eXMLErrorFileNotFound: return _T("Error: File not found"); + case eXMLErrorFirstTagNotFound: return _T("Error: First Tag not found"); + case eXMLErrorUnknownCharacterEntity:return _T("Error: Unknown character entity"); + case eXMLErrorCharConversionError: return _T("Error: unable to convert between UNICODE and MultiByte chars"); + case eXMLErrorCannotOpenWriteFile: return _T("Error: unable to open file for writing"); + case eXMLErrorCannotWriteFile: return _T("Error: cannot write into file"); + + case eXMLErrorBase64DataSizeIsNotMultipleOf4: return _T("Warning: Base64-string length is not a multiple of 4"); + case eXMLErrorBase64DecodeTruncatedData: return _T("Warning: Base64-string is truncated"); + case eXMLErrorBase64DecodeIllegalCharacter: return _T("Error: Base64-string contains an illegal character"); + case eXMLErrorBase64DecodeBufferTooSmall: return _T("Error: Base64 decode output buffer is too small"); + }; + return _T("Unknown"); +} + +// Here is an abstraction layer to access some common string manipulation functions. +// The abstraction layer is currently working for gcc, Microsoft Visual Studio 6.0, +// Microsoft Visual Studio .NET, CC (sun compiler) and Borland C++. +// If you plan to "port" the library to a new system/compiler, all you have to do is +// to edit the following lines. +#ifdef XML_NO_WIDE_CHAR +char myIsTextUnicode(const void *b, int len) { return FALSE; } +#else + #if defined (UNDER_CE) || !defined(WIN32) + char myIsTextUnicode(const void *b, int len) // inspired by the Wine API: RtlIsTextUnicode + { +#ifdef sun + // for SPARC processors: wchar_t* buffers must always be alligned, otherwise it's a char* buffer. + if ((((unsigned long)b)%sizeof(wchar_t))!=0) return FALSE; +#endif + const wchar_t *s=(const wchar_t*)b; + + // buffer too small: + if (len<(int)sizeof(wchar_t)) return FALSE; + + // odd length test + if (len&1) return FALSE; + + /* only checks the first 256 characters */ + len=mmin(256,len/sizeof(wchar_t)); + + // Check for the special byte order: + if (*s == 0xFFFE) return FALSE; // IS_TEXT_UNICODE_REVERSE_SIGNATURE; + if (*s == 0xFEFF) return TRUE; // IS_TEXT_UNICODE_SIGNATURE + + // checks for ASCII characters in the UNICODE stream + int i,stats=0; + for (i=0; ilen/2) return TRUE; + + // Check for UNICODE NULL chars + for (i=0; i + int _tcsnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return wsncasecmp(c1,c2,l);} + int _tcsicmp(XMLCSTR c1, XMLCSTR c2) { return wscasecmp(c1,c2); } + #else + // for gcc + int _tcsnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return wcsncasecmp(c1,c2,l);} + int _tcsicmp(XMLCSTR c1, XMLCSTR c2) { return wcscasecmp(c1,c2); } + #endif + XMLSTR _tcsstr(XMLCSTR c1, XMLCSTR c2) { return (XMLSTR)wcsstr(c1,c2); } + XMLSTR _tcscpy(XMLSTR c1, XMLCSTR c2) { return (XMLSTR)wcscpy(c1,c2); } + FILE *_tfopen(XMLCSTR filename,XMLCSTR mode) + { + char *filenameAscii=myWideCharToMultiByte(filename,0); + FILE *f; + if (mode[0]==_T('r')) f=fopen(filenameAscii,"rb"); + else f=fopen(filenameAscii,"wb"); + free(filenameAscii); + return f; + } + #else + FILE *_tfopen(XMLCSTR filename,XMLCSTR mode) { return fopen(filename,mode); } + int _tcslen(XMLCSTR c) { return strlen(c); } + int _tcsnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return strncasecmp(c1,c2,l);} + int _tcsicmp(XMLCSTR c1, XMLCSTR c2) { return strcasecmp(c1,c2); } + XMLSTR _tcsstr(XMLCSTR c1, XMLCSTR c2) { return (XMLSTR)strstr(c1,c2); } + XMLSTR _tcscpy(XMLSTR c1, XMLCSTR c2) { return (XMLSTR)strcpy(c1,c2); } + #endif + int _strnicmp(const char *c1,const char *c2, int l) { return strncasecmp(c1,c2,l);} +#endif + +///////////////////////////////////////////////////////////////////////// +// Here start the core implementation of the XMLParser library // +///////////////////////////////////////////////////////////////////////// + +// You should normally not change anything below this point. +// For your own information, I suggest that you read the openFileHelper below: +XMLNode XMLNode::openFileHelper(XMLCSTR filename, XMLCSTR tag) +{ + // guess the value of the global parameter "strictUTF8Parsing" + // (the guess is based on the first 200 bytes of the file). + FILE *f=_tfopen(filename,_T("rb")); + if (f) + { + char bb[205]; + int l=(int)fread(bb,1,200,f); + setGlobalOptions(guessUnicodeChars,guessUTF8ParsingParameterValue(bb,l),dropWhiteSpace); + fclose(f); + } + + // parse the file + XMLResults pResults; + XMLNode xnode=XMLNode::parseFile(filename,tag,&pResults); + + // display error message (if any) + if (pResults.error != eXMLErrorNone) + { + // create message + char message[2000],*s1=(char*)"",*s3=(char*)""; XMLCSTR s2=_T(""); + if (pResults.error==eXMLErrorFirstTagNotFound) { s1=(char*)"First Tag should be '"; s2=tag; s3=(char*)"'.\n"; } + sprintf(message, +#ifdef _XMLUNICODE + "XML Parsing error inside file '%S'.\n%S\nAt line %i, column %i.\n%s%S%s" +#else + "XML Parsing error inside file '%s'.\n%s\nAt line %i, column %i.\n%s%s%s" +#endif + ,filename,XMLNode::getError(pResults.error),pResults.nLine,pResults.nColumn,s1,s2,s3); + + // display message +#if defined(WIN32) && !defined(UNDER_CE) && !defined(_XMLPARSER_NO_MESSAGEBOX_) + MessageBoxA(NULL,message,"XML Parsing error",MB_OK|MB_ICONERROR|MB_TOPMOST); +#else + printf("%s",message); +#endif + exit(255); + } + return xnode; +} + +#ifndef _XMLUNICODE +// If "strictUTF8Parsing=0" then we assume that all characters have the same length of 1 byte. +// If "strictUTF8Parsing=1" then the characters have different lengths (from 1 byte to 4 bytes). +// This table is used as lookup-table to know the length of a character (in byte) based on the +// content of the first byte of the character. +// (note: if you modify this, you must always have XML_utf8ByteTable[0]=0 ). +static const char XML_utf8ByteTable[256] = +{ + // 0 1 2 3 4 5 6 7 8 9 a b c d e f + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x00 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x10 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x20 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x30 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x40 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x50 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x60 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x70End of ASCII range + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x80 0x80 to 0xc1 invalid + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x90 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xa0 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xb0 + 1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xc0 0xc2 to 0xdf 2 byte + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xd0 + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,// 0xe0 0xe0 to 0xef 3 byte + 4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid +}; +static const char XML_asciiByteTable[256] = +{ + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +}; +static const char *XML_ByteTable=(const char *)XML_utf8ByteTable; // the default is "strictUTF8Parsing=1" +#endif + +XMLError XMLNode::writeToFile(XMLCSTR filename, const char *encoding, char nFormat) const +{ + int i; + XMLSTR t=createXMLString(nFormat,&i); + FILE *f=_tfopen(filename,_T("wb")); + if (!f) return eXMLErrorCannotOpenWriteFile; +#ifdef _XMLUNICODE + unsigned char h[2]={ 0xFF, 0xFE }; + if (!fwrite(h,2,1,f)) return eXMLErrorCannotWriteFile; + if (!isDeclaration()) + { + if (!fwrite(_T("\n"),sizeof(wchar_t)*40,1,f)) + return eXMLErrorCannotWriteFile; + } +#else + if (!isDeclaration()) + { + if ((!encoding)||(XML_ByteTable==XML_utf8ByteTable)) + { + // header so that windows recognize the file as UTF-8: + unsigned char h[3]={0xEF,0xBB,0xBF}; + if (!fwrite(h,3,1,f)) return eXMLErrorCannotWriteFile; + if (!fwrite("\n",39,1,f)) return eXMLErrorCannotWriteFile; + } + else + if (fprintf(f,"\n",encoding)<0) return eXMLErrorCannotWriteFile; + } else + { + if (XML_ByteTable==XML_utf8ByteTable) // test if strictUTF8Parsing==1" + { + unsigned char h[3]={0xEF,0xBB,0xBF}; if (!fwrite(h,3,1,f)) return eXMLErrorCannotWriteFile; + } + } +#endif + if (!fwrite(t,sizeof(XMLCHAR)*i,1,f)) return eXMLErrorCannotWriteFile; + if (fclose(f)!=0) return eXMLErrorCannotWriteFile; + free(t); + return eXMLErrorNone; +} + +// Duplicate a given string. +XMLSTR stringDup(XMLCSTR lpszData, int cbData) +{ + if (lpszData==NULL) return NULL; + + XMLSTR lpszNew; + if (cbData==0) cbData=(int)_tcslen(lpszData); + lpszNew = (XMLSTR)malloc((cbData+1) * sizeof(XMLCHAR)); + if (lpszNew) + { + memcpy(lpszNew, lpszData, (cbData) * sizeof(XMLCHAR)); + lpszNew[cbData] = (XMLCHAR)NULL; + } + return lpszNew; +} + +XMLNode XMLNode::emptyXMLNode; +XMLClear XMLNode::emptyXMLClear={ NULL, NULL, NULL}; +XMLAttribute XMLNode::emptyXMLAttribute={ NULL, NULL}; + +// Enumeration used to decipher what type a token is +typedef enum XMLTokenTypeTag +{ + eTokenText = 0, + eTokenQuotedText, + eTokenTagStart, /* "<" */ + eTokenTagEnd, /* "" */ + eTokenEquals, /* "=" */ + eTokenDeclaration, /* "" */ + eTokenClear, + eTokenError +} XMLTokenType; + +// Main structure used for parsing XML +typedef struct XML +{ + XMLCSTR lpXML; + XMLCSTR lpszText; + int nIndex,nIndexMissigEndTag; + enum XMLError error; + XMLCSTR lpEndTag; + int cbEndTag; + XMLCSTR lpNewElement; + int cbNewElement; + int nFirst; +} XML; + +typedef struct +{ + ALLXMLClearTag *pClr; + XMLCSTR pStr; +} NextToken; + +// Enumeration used when parsing attributes +typedef enum Attrib +{ + eAttribName = 0, + eAttribEquals, + eAttribValue +} Attrib; + +// Enumeration used when parsing elements to dictate whether we are currently +// inside a tag +typedef enum Status +{ + eInsideTag = 0, + eOutsideTag +} Status; + +// private (used while rendering): +XMLSTR toXMLString(XMLSTR dest,XMLCSTR source) +{ + XMLSTR dd=dest; + XMLCHAR ch; + XMLCharacterEntity *entity; + while ((ch=*source)) + { + entity=XMLEntities; + do + { + if (ch==entity->c) {_tcscpy(dest,entity->s); dest+=entity->l; source++; goto out_of_loop1; } + entity++; + } while(entity->s); +#ifdef _XMLUNICODE + *(dest++)=*(source++); +#else + switch(XML_ByteTable[(unsigned char)ch]) + { + case 4: *(dest++)=*(source++); + case 3: *(dest++)=*(source++); + case 2: *(dest++)=*(source++); + case 1: *(dest++)=*(source++); + } +#endif +out_of_loop1: + ; + } + *dest=0; + return dd; +} + +// private (used while rendering): +int lengthXMLString(XMLCSTR source) +{ + int r=0; + XMLCharacterEntity *entity; + XMLCHAR ch; + while ((ch=*source)) + { + entity=XMLEntities; + do + { + if (ch==entity->c) { r+=entity->l; source++; goto out_of_loop1; } + entity++; + } while(entity->s); +#ifdef _XMLUNICODE + r++; source++; +#else + ch=XML_ByteTable[(unsigned char)ch]; r+=ch; source+=ch; +#endif +out_of_loop1: + ; + } + return r; +} + +XMLSTR toXMLString(XMLCSTR source) +{ + XMLSTR dest=(XMLSTR)malloc((lengthXMLString(source)+1)*sizeof(XMLCHAR)); + return toXMLString(dest,source); +} + +XMLSTR toXMLStringFast(XMLSTR *dest,int *destSz, XMLCSTR source) +{ + int l=lengthXMLString(source)+1; + if (l>*destSz) { *destSz=l; *dest=(XMLSTR)realloc(*dest,l*sizeof(XMLCHAR)); } + return toXMLString(*dest,source); +} + +// private: +XMLSTR fromXMLString(XMLCSTR s, int lo, XML *pXML) +{ + // This function is the opposite of the function "toXMLString". It decodes the escape + // sequences &, ", ', <, > and replace them by the characters + // &,",',<,>. This function is used internally by the XML Parser. All the calls to + // the XML library will always gives you back "decoded" strings. + // + // in: string (s) and length (lo) of string + // out: new allocated string converted from xml + if (!s) return NULL; + + int ll=0,j; + XMLSTR d; + XMLCSTR ss=s; + XMLCharacterEntity *entity; + while ((lo>0)&&(*s)) + { + if (*s==_T('&')) + { + if ((lo>2)&&(s[1]==_T('#'))) + { + s+=2; lo-=2; + if ((*s==_T('X'))||(*s==_T('x'))) { s++; lo--; } + while ((*s)&&(*s!=_T(';'))&&((lo--)>0)) s++; + if (*s!=_T(';')) + { + pXML->error=eXMLErrorUnknownCharacterEntity; + return NULL; + } + s++; lo--; + } else + { + entity=XMLEntities; + do + { + if ((lo>=entity->l)&&(_tcsnicmp(s,entity->s,entity->l)==0)) { s+=entity->l; lo-=entity->l; break; } + entity++; + } while(entity->s); + if (!entity->s) + { + pXML->error=eXMLErrorUnknownCharacterEntity; + return NULL; + } + } + } else + { +#ifdef _XMLUNICODE + s++; lo--; +#else + j=XML_ByteTable[(unsigned char)*s]; s+=j; lo-=j; ll+=j-1; +#endif + } + ll++; + } + + d=(XMLSTR)malloc((ll+1)*sizeof(XMLCHAR)); + s=d; + while (ll-->0) + { + if (*ss==_T('&')) + { + if (ss[1]==_T('#')) + { + ss+=2; j=0; + if ((*ss==_T('X'))||(*ss==_T('x'))) + { + ss++; + while (*ss!=_T(';')) + { + if ((*ss>=_T('0'))&&(*ss<=_T('9'))) j=(j<<4)+*ss-_T('0'); + else if ((*ss>=_T('A'))&&(*ss<=_T('F'))) j=(j<<4)+*ss-_T('A')+10; + else if ((*ss>=_T('a'))&&(*ss<=_T('f'))) j=(j<<4)+*ss-_T('a')+10; + else { free((void*)s); pXML->error=eXMLErrorUnknownCharacterEntity;return NULL;} + ss++; + } + } else + { + while (*ss!=_T(';')) + { + if ((*ss>=_T('0'))&&(*ss<=_T('9'))) j=(j*10)+*ss-_T('0'); + else { free((void*)s); pXML->error=eXMLErrorUnknownCharacterEntity;return NULL;} + ss++; + } + } + (*d++)=(XMLCHAR)j; ss++; + } else + { + entity=XMLEntities; + do + { + if (_tcsnicmp(ss,entity->s,entity->l)==0) { *(d++)=entity->c; ss+=entity->l; break; } + entity++; + } while(entity->s); + } + } else + { +#ifdef _XMLUNICODE + *(d++)=*(ss++); +#else + switch(XML_ByteTable[(unsigned char)*ss]) + { + case 4: *(d++)=*(ss++); ll--; + case 3: *(d++)=*(ss++); ll--; + case 2: *(d++)=*(ss++); ll--; + case 1: *(d++)=*(ss++); + } +#endif + } + } + *d=0; + return (XMLSTR)s; +} + +#define XML_isSPACECHAR(ch) ((ch==_T('\n'))||(ch==_T(' '))||(ch== _T('\t'))||(ch==_T('\r'))) + +// private: +char myTagCompare(XMLCSTR cclose, XMLCSTR copen) +// !!!! WARNING strange convention&: +// return 0 if equals +// return 1 if different +{ + if (!cclose) return 1; + int l=(int)_tcslen(cclose); + if (_tcsnicmp(cclose, copen, l)!=0) return 1; + const XMLCHAR c=copen[l]; + if (XML_isSPACECHAR(c)|| + (c==_T('/' ))|| + (c==_T('<' ))|| + (c==_T('>' ))|| + (c==_T('=' ))) return 0; + return 1; +} + +// Obtain the next character from the string. +static inline XMLCHAR getNextChar(XML *pXML) +{ + XMLCHAR ch = pXML->lpXML[pXML->nIndex]; +#ifdef _XMLUNICODE + if (ch!=0) pXML->nIndex++; +#else + pXML->nIndex+=XML_ByteTable[(unsigned char)ch]; +#endif + return ch; +} + +// Find the next token in a string. +// pcbToken contains the number of characters that have been read. +static NextToken GetNextToken(XML *pXML, int *pcbToken, enum XMLTokenTypeTag *pType) +{ + NextToken result; + XMLCHAR ch; + XMLCHAR chTemp; + int indexStart,nFoundMatch,nIsText=FALSE; + result.pClr=NULL; // prevent warning + + // Find next non-white space character + do { indexStart=pXML->nIndex; ch=getNextChar(pXML); } while XML_isSPACECHAR(ch); + + if (ch) + { + // Cache the current string pointer + result.pStr = &pXML->lpXML[indexStart]; + + // First check whether the token is in the clear tag list (meaning it + // does not need formatting). + ALLXMLClearTag *ctag=XMLClearTags; + do + { + if (_tcsnicmp(ctag->lpszOpen, result.pStr, ctag->openTagLen)==0) + { + result.pClr=ctag; + pXML->nIndex+=ctag->openTagLen-1; + *pType=eTokenClear; + return result; + } + ctag++; + } while(ctag->lpszOpen); + + // If we didn't find a clear tag then check for standard tokens + switch(ch) + { + // Check for quotes + case _T('\''): + case _T('\"'): + // Type of token + *pType = eTokenQuotedText; + chTemp = ch; + + // Set the size + nFoundMatch = FALSE; + + // Search through the string to find a matching quote + while((ch = getNextChar(pXML))) + { + if (ch==chTemp) { nFoundMatch = TRUE; break; } + if (ch==_T('<')) break; + } + + // If we failed to find a matching quote + if (nFoundMatch == FALSE) + { + pXML->nIndex=indexStart+1; + nIsText=TRUE; + break; + } + +// 4.02.2002 +// if (FindNonWhiteSpace(pXML)) pXML->nIndex--; + + break; + + // Equals (used with attribute values) + case _T('='): + *pType = eTokenEquals; + break; + + // Close tag + case _T('>'): + *pType = eTokenCloseTag; + break; + + // Check for tag start and tag end + case _T('<'): + + // Peek at the next character to see if we have an end tag 'lpXML[pXML->nIndex]; + + // If we have a tag end... + if (chTemp == _T('/')) + { + // Set the type and ensure we point at the next character + getNextChar(pXML); + *pType = eTokenTagEnd; + } + + // If we have an XML declaration tag + else if (chTemp == _T('?')) + { + + // Set the type and ensure we point at the next character + getNextChar(pXML); + *pType = eTokenDeclaration; + } + + // Otherwise we must have a start tag + else + { + *pType = eTokenTagStart; + } + break; + + // Check to see if we have a short hand type end tag ('/>'). + case _T('/'): + + // Peek at the next character to see if we have a short end tag '/>' + chTemp = pXML->lpXML[pXML->nIndex]; + + // If we have a short hand end tag... + if (chTemp == _T('>')) + { + // Set the type and ensure we point at the next character + getNextChar(pXML); + *pType = eTokenShortHandClose; + break; + } + + // If we haven't found a short hand closing tag then drop into the + // text process + + // Other characters + default: + nIsText = TRUE; + } + + // If this is a TEXT node + if (nIsText) + { + // Indicate we are dealing with text + *pType = eTokenText; + while((ch = getNextChar(pXML))) + { + if XML_isSPACECHAR(ch) + { + indexStart++; break; + + } else if (ch==_T('/')) + { + // If we find a slash then this maybe text or a short hand end tag + // Peek at the next character to see it we have short hand end tag + ch=pXML->lpXML[pXML->nIndex]; + // If we found a short hand end tag then we need to exit the loop + if (ch==_T('>')) { pXML->nIndex--; break; } + + } else if ((ch==_T('<'))||(ch==_T('>'))||(ch==_T('='))) + { + pXML->nIndex--; break; + } + } + } + *pcbToken = pXML->nIndex-indexStart; + } else + { + // If we failed to obtain a valid character + *pcbToken = 0; + *pType = eTokenError; + result.pStr=NULL; + } + + return result; +} + +XMLCSTR XMLNode::updateName_WOSD(XMLCSTR lpszName) +{ + if (d->lpszName&&(lpszName!=d->lpszName)) free((void*)d->lpszName); + d->lpszName=lpszName; + return lpszName; +} + +// private: +XMLNode::XMLNode(struct XMLNodeDataTag *p){ d=p; (p->ref_count)++; } +XMLNode::XMLNode(XMLNodeData *pParent, XMLCSTR lpszName, char isDeclaration) +{ + d=(XMLNodeData*)malloc(sizeof(XMLNodeData)); + d->ref_count=1; + + d->lpszName=NULL; + d->nChild= 0; + d->nText = 0; + d->nClear = 0; + d->nAttribute = 0; + + d->isDeclaration = isDeclaration; + + d->pParent = pParent; + d->pChild= NULL; + d->pText= NULL; + d->pClear= NULL; + d->pAttribute= NULL; + d->pOrder= NULL; + + updateName_WOSD(lpszName); +} + +XMLNode XMLNode::createXMLTopNode_WOSD(XMLCSTR lpszName, char isDeclaration) { return XMLNode(NULL,lpszName,isDeclaration); } +XMLNode XMLNode::createXMLTopNode(XMLCSTR lpszName, char isDeclaration) { return XMLNode(NULL,stringDup(lpszName),isDeclaration); } + +#define MEMORYINCREASE 50 + +static inline void *myRealloc(void *p, int newsize, int memInc, int sizeofElem) +{ + if (p==NULL) { if (memInc) return malloc(memInc*sizeofElem); return malloc(sizeofElem); } + if ((memInc==0)||((newsize%memInc)==0)) p=realloc(p,(newsize+memInc)*sizeofElem); +// if (!p) +// { +// printf("XMLParser Error: Not enough memory! Aborting...\n"); exit(220); +// } + return p; +} + +// private: +int XMLNode::findPosition(XMLNodeData *d, int index, XMLElementType xtype) +{ + if (index<0) return -1; + int i=0,j=(int)((index<<2)+xtype),*o=d->pOrder; while (o[i]!=j) i++; return i; +} + +// private: +// update "order" information when deleting a content of a XMLNode +int XMLNode::removeOrderElement(XMLNodeData *d, XMLElementType t, int index) +{ + int n=d->nChild+d->nText+d->nClear, *o=d->pOrder,i=findPosition(d,index,t); + memmove(o+i, o+i+1, (n-i)*sizeof(int)); + for (;ipOrder=(int)realloc(d->pOrder,n*sizeof(int)); + // but we skip reallocation because it's too time consuming. + // Anyway, at the end, it will be free'd completely at once. + return i; +} + +void *XMLNode::addToOrder(int memoryIncrease,int *_pos, int nc, void *p, int size, XMLElementType xtype) +{ + // in: *_pos is the position inside d->pOrder ("-1" means "EndOf") + // out: *_pos is the index inside p + p=myRealloc(p,(nc+1),memoryIncrease,size); + int n=d->nChild+d->nText+d->nClear; + d->pOrder=(int*)myRealloc(d->pOrder,n+1,memoryIncrease*3,sizeof(int)); + int pos=*_pos,*o=d->pOrder; + + if ((pos<0)||(pos>=n)) { *_pos=nc; o[n]=(int)((nc<<2)+xtype); return p; } + + int i=pos; + memmove(o+i+1, o+i, (n-i)*sizeof(int)); + + while ((pos>2; + memmove(((char*)p)+(pos+1)*size,((char*)p)+pos*size,(nc-pos)*size); + + return p; +} + +// Add a child node to the given element. +XMLNode XMLNode::addChild_priv(int memoryIncrease, XMLCSTR lpszName, char isDeclaration, int pos) +{ + if (!lpszName) return emptyXMLNode; + d->pChild=(XMLNode*)addToOrder(memoryIncrease,&pos,d->nChild,d->pChild,sizeof(XMLNode),eNodeChild); + d->pChild[pos].d=NULL; + d->pChild[pos]=XMLNode(d,lpszName,isDeclaration); + d->nChild++; + return d->pChild[pos]; +} + +// Add an attribute to an element. +XMLAttribute *XMLNode::addAttribute_priv(int memoryIncrease,XMLCSTR lpszName, XMLCSTR lpszValuev) +{ + if (!lpszName) return &emptyXMLAttribute; + int nc=d->nAttribute; + d->pAttribute=(XMLAttribute*)myRealloc(d->pAttribute,(nc+1),memoryIncrease,sizeof(XMLAttribute)); + XMLAttribute *pAttr=d->pAttribute+nc; + pAttr->lpszName = lpszName; + pAttr->lpszValue = lpszValuev; + d->nAttribute++; + return pAttr; +} + +// Add text to the element. +XMLCSTR XMLNode::addText_priv(int memoryIncrease, XMLCSTR lpszValue, int pos) +{ + if (!lpszValue) return NULL; + d->pText=(XMLCSTR*)addToOrder(memoryIncrease,&pos,d->nText,d->pText,sizeof(XMLSTR),eNodeText); + d->pText[pos]=lpszValue; + d->nText++; + return lpszValue; +} + +// Add clear (unformatted) text to the element. +XMLClear *XMLNode::addClear_priv(int memoryIncrease, XMLCSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, int pos) +{ + if (!lpszValue) return &emptyXMLClear; + d->pClear=(XMLClear *)addToOrder(memoryIncrease,&pos,d->nClear,d->pClear,sizeof(XMLClear),eNodeClear); + XMLClear *pNewClear=d->pClear+pos; + pNewClear->lpszValue = lpszValue; + if (!lpszOpen) lpszOpen=getClearTagTable()->lpszOpen; + if (!lpszClose) lpszOpen=getClearTagTable()->lpszClose; + pNewClear->lpszOpenTag = lpszOpen; + pNewClear->lpszCloseTag = lpszClose; + d->nClear++; + return pNewClear; +} + +// private: +// Parse a clear (unformatted) type node. +char XMLNode::parseClearTag(void *px, ALLXMLClearTag *pClear) +{ + XML *pXML=(XML *)px; + int cbTemp=0; + XMLCSTR lpszTemp=NULL; + XMLCSTR lpXML=&pXML->lpXML[pXML->nIndex]; + static XMLCSTR docTypeEnd=_T("]>"); + + // Find the closing tag + // Seems the lpszOpen==XMLClearTags[1].lpszOpen) + { + XMLCSTR pCh=lpXML; + while (*pCh) + { + if (*pCh==_T('<')) { pClear->lpszClose=docTypeEnd; lpszTemp=_tcsstr(lpXML,docTypeEnd); break; } + else if (*pCh==_T('>')) { lpszTemp=pCh; break; } +#ifdef _XMLUNICODE + pCh++; +#else + pCh+=XML_ByteTable[(unsigned char)(*pCh)]; +#endif + } + } else lpszTemp=_tcsstr(lpXML, pClear->lpszClose); + + if (lpszTemp) + { + // Cache the size and increment the index + cbTemp = (int)(lpszTemp - lpXML); + + pXML->nIndex += cbTemp+(int)_tcslen(pClear->lpszClose); + + // Add the clear node to the current element + addClear_priv(MEMORYINCREASE,stringDup(lpXML,cbTemp), pClear->lpszOpen, pClear->lpszClose,-1); + return 0; + } + + // If we failed to find the end tag + pXML->error = eXMLErrorUnmatchedEndClearTag; + return 1; +} + +void XMLNode::exactMemory(XMLNodeData *d) +{ + if (d->pOrder) d->pOrder=(int*)realloc(d->pOrder,(d->nChild+d->nText+d->nClear)*sizeof(int)); + if (d->pChild) d->pChild=(XMLNode*)realloc(d->pChild,d->nChild*sizeof(XMLNode)); + if (d->pAttribute) d->pAttribute=(XMLAttribute*)realloc(d->pAttribute,d->nAttribute*sizeof(XMLAttribute)); + if (d->pText) d->pText=(XMLCSTR*)realloc(d->pText,d->nText*sizeof(XMLSTR)); + if (d->pClear) d->pClear=(XMLClear *)realloc(d->pClear,d->nClear*sizeof(XMLClear)); +} + +char XMLNode::maybeAddTxT(void *pa, XMLCSTR tokenPStr) +{ + XML *pXML=(XML *)pa; + XMLCSTR lpszText=pXML->lpszText; + if (!lpszText) return 0; + if (dropWhiteSpace) while (XML_isSPACECHAR(*lpszText)&&(lpszText!=tokenPStr)) lpszText++; + int cbText = (int)(tokenPStr - lpszText); + if (!cbText) { pXML->lpszText=NULL; return 0; } + if (dropWhiteSpace) { cbText--; while ((cbText)&&XML_isSPACECHAR(lpszText[cbText])) cbText--; cbText++; } + if (!cbText) { pXML->lpszText=NULL; return 0; } + lpszText=fromXMLString(lpszText,cbText,pXML); + if (!lpszText) return 1; + addText_priv(MEMORYINCREASE,lpszText,-1); + pXML->lpszText=NULL; + return 0; +} +// private: +// Recursively parse an XML element. +int XMLNode::ParseXMLElement(void *pa) +{ + XML *pXML=(XML *)pa; + int cbToken; + enum XMLTokenTypeTag type; + NextToken token; + XMLCSTR lpszTemp=NULL; + int cbTemp=0; + char nDeclaration; + XMLNode pNew; + enum Status status; // inside or outside a tag + enum Attrib attrib = eAttribName; + + assert(pXML); + + // If this is the first call to the function + if (pXML->nFirst) + { + // Assume we are outside of a tag definition + pXML->nFirst = FALSE; + status = eOutsideTag; + } else + { + // If this is not the first call then we should only be called when inside a tag. + status = eInsideTag; + } + + // Iterate through the tokens in the document + for(;;) + { + // Obtain the next token + token = GetNextToken(pXML, &cbToken, &type); + + if (type != eTokenError) + { + // Check the current status + switch(status) + { + + // If we are outside of a tag definition + case eOutsideTag: + + // Check what type of token we obtained + switch(type) + { + // If we have found text or quoted text + case eTokenText: + case eTokenCloseTag: /* '>' */ + case eTokenShortHandClose: /* '/>' */ + case eTokenQuotedText: + case eTokenEquals: + break; + + // If we found a start tag '<' and declarations 'error = eXMLErrorMissingTagName; + return FALSE; + } + + // If we found a new element which is the same as this + // element then we need to pass this back to the caller.. + +#ifdef APPROXIMATE_PARSING + if (d->lpszName && + myTagCompare(d->lpszName, token.pStr) == 0) + { + // Indicate to the caller that it needs to create a + // new element. + pXML->lpNewElement = token.pStr; + pXML->cbNewElement = cbToken; + return TRUE; + } else +#endif + { + // If the name of the new element differs from the name of + // the current element we need to add the new element to + // the current one and recurse + pNew = addChild_priv(MEMORYINCREASE,stringDup(token.pStr,cbToken), nDeclaration,-1); + + while (!pNew.isEmpty()) + { + // Callself to process the new node. If we return + // FALSE this means we dont have any more + // processing to do... + + if (!pNew.ParseXMLElement(pXML)) return FALSE; + else + { + // If the call to recurse this function + // evented in a end tag specified in XML then + // we need to unwind the calls to this + // function until we find the appropriate node + // (the element name and end tag name must + // match) + if (pXML->cbEndTag) + { + // If we are back at the root node then we + // have an unmatched end tag + if (!d->lpszName) + { + pXML->error=eXMLErrorUnmatchedEndTag; + return FALSE; + } + + // If the end tag matches the name of this + // element then we only need to unwind + // once more... + + if (myTagCompare(d->lpszName, pXML->lpEndTag)==0) + { + pXML->cbEndTag = 0; + } + + return TRUE; + } else + if (pXML->cbNewElement) + { + // If the call indicated a new element is to + // be created on THIS element. + + // If the name of this element matches the + // name of the element we need to create + // then we need to return to the caller + // and let it process the element. + + if (myTagCompare(d->lpszName, pXML->lpNewElement)==0) + { + return TRUE; + } + + // Add the new element and recurse + pNew = addChild_priv(MEMORYINCREASE,stringDup(pXML->lpNewElement,pXML->cbNewElement),0,-1); + pXML->cbNewElement = 0; + } + else + { + // If we didn't have a new element to create + pNew = emptyXMLNode; + + } + } + } + } + break; + + // If we found an end tag + case eTokenTagEnd: + + // If we have node text then add this to the element + if (maybeAddTxT(pXML,token.pStr)) return FALSE; + + // Find the name of the end tag + token = GetNextToken(pXML, &cbTemp, &type); + + // The end tag should be text + if (type != eTokenText) + { + pXML->error = eXMLErrorMissingEndTagName; + return FALSE; + } + lpszTemp = token.pStr; + + // After the end tag we should find a closing tag + token = GetNextToken(pXML, &cbToken, &type); + if (type != eTokenCloseTag) + { + pXML->error = eXMLErrorMissingEndTagName; + return FALSE; + } + pXML->lpszText=pXML->lpXML+pXML->nIndex; + + // We need to return to the previous caller. If the name + // of the tag cannot be found we need to keep returning to + // caller until we find a match + if (myTagCompare(d->lpszName, lpszTemp) != 0) +#ifdef STRICT_PARSING + { + pXML->error=eXMLErrorUnmatchedEndTag; + pXML->nIndexMissigEndTag=pXML->nIndex; + return FALSE; + } +#else + { + pXML->error=eXMLErrorMissingEndTag; + pXML->nIndexMissigEndTag=pXML->nIndex; + pXML->lpEndTag = lpszTemp; + pXML->cbEndTag = cbTemp; + } +#endif + + // Return to the caller + exactMemory(d); + return TRUE; + + // If we found a clear (unformatted) token + case eTokenClear: + // If we have node text then add this to the element + if (maybeAddTxT(pXML,token.pStr)) return FALSE; + if (parseClearTag(pXML, token.pClr)) return FALSE; + pXML->lpszText=pXML->lpXML+pXML->nIndex; + break; + + default: + break; + } + break; + + // If we are inside a tag definition we need to search for attributes + case eInsideTag: + + // Check what part of the attribute (name, equals, value) we + // are looking for. + switch(attrib) + { + // If we are looking for a new attribute + case eAttribName: + + // Check what the current token type is + switch(type) + { + // If the current type is text... + // Eg. 'attribute' + case eTokenText: + // Cache the token then indicate that we are next to + // look for the equals + lpszTemp = token.pStr; + cbTemp = cbToken; + attrib = eAttribEquals; + break; + + // If we found a closing tag... + // Eg. '>' + case eTokenCloseTag: + // We are now outside the tag + status = eOutsideTag; + pXML->lpszText=pXML->lpXML+pXML->nIndex; + break; + + // If we found a short hand '/>' closing tag then we can + // return to the caller + case eTokenShortHandClose: + exactMemory(d); + pXML->lpszText=pXML->lpXML+pXML->nIndex; + return TRUE; + + // Errors... + case eTokenQuotedText: /* '"SomeText"' */ + case eTokenTagStart: /* '<' */ + case eTokenTagEnd: /* 'error = eXMLErrorUnexpectedToken; + return FALSE; + default: break; + } + break; + + // If we are looking for an equals + case eAttribEquals: + // Check what the current token type is + switch(type) + { + // If the current type is text... + // Eg. 'Attribute AnotherAttribute' + case eTokenText: + // Add the unvalued attribute to the list + addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp), NULL); + // Cache the token then indicate. We are next to + // look for the equals attribute + lpszTemp = token.pStr; + cbTemp = cbToken; + break; + + // If we found a closing tag 'Attribute >' or a short hand + // closing tag 'Attribute />' + case eTokenShortHandClose: + case eTokenCloseTag: + // If we are a declaration element 'lpszText=pXML->lpXML+pXML->nIndex; + + if (d->isDeclaration && + (lpszTemp[cbTemp-1]) == _T('?')) + { + cbTemp--; + } + + if (cbTemp) + { + // Add the unvalued attribute to the list + addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp), NULL); + } + + // If this is the end of the tag then return to the caller + if (type == eTokenShortHandClose) + { + exactMemory(d); + return TRUE; + } + + // We are now outside the tag + status = eOutsideTag; + break; + + // If we found the equals token... + // Eg. 'Attribute =' + case eTokenEquals: + // Indicate that we next need to search for the value + // for the attribute + attrib = eAttribValue; + break; + + // Errors... + case eTokenQuotedText: /* 'Attribute "InvalidAttr"'*/ + case eTokenTagStart: /* 'Attribute <' */ + case eTokenTagEnd: /* 'Attribute error = eXMLErrorUnexpectedToken; + return FALSE; + default: break; + } + break; + + // If we are looking for an attribute value + case eAttribValue: + // Check what the current token type is + switch(type) + { + // If the current type is text or quoted text... + // Eg. 'Attribute = "Value"' or 'Attribute = Value' or + // 'Attribute = 'Value''. + case eTokenText: + case eTokenQuotedText: + // If we are a declaration element 'isDeclaration && + (token.pStr[cbToken-1]) == _T('?')) + { + cbToken--; + } + + if (cbTemp) + { + // Add the valued attribute to the list + if (type==eTokenQuotedText) { token.pStr++; cbToken-=2; } + XMLCSTR attrVal=token.pStr; + if (attrVal) + { + attrVal=fromXMLString(attrVal,cbToken,pXML); + if (!attrVal) return FALSE; + } + addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp),attrVal); + } + + // Indicate we are searching for a new attribute + attrib = eAttribName; + break; + + // Errors... + case eTokenTagStart: /* 'Attr = <' */ + case eTokenTagEnd: /* 'Attr = ' */ + case eTokenShortHandClose: /* "Attr = />" */ + case eTokenEquals: /* 'Attr = =' */ + case eTokenDeclaration: /* 'Attr = error = eXMLErrorUnexpectedToken; + return FALSE; + break; + default: break; + } + } + } + } + // If we failed to obtain the next token + else + { + if ((!d->isDeclaration)&&(d->pParent)) + { +#ifdef STRICT_PARSING + pXML->error=eXMLErrorUnmatchedEndTag; +#else + pXML->error=eXMLErrorMissingEndTag; +#endif + pXML->nIndexMissigEndTag=pXML->nIndex; + } + return FALSE; + } + } +} + +// Count the number of lines and columns in an XML string. +static void CountLinesAndColumns(XMLCSTR lpXML, int nUpto, XMLResults *pResults) +{ + XMLCHAR ch; + assert(lpXML); + assert(pResults); + + struct XML xml={ lpXML,lpXML, 0, 0, eXMLErrorNone, NULL, 0, NULL, 0, TRUE }; + + pResults->nLine = 1; + pResults->nColumn = 1; + while (xml.nIndexnColumn++; + else + { + pResults->nLine++; + pResults->nColumn=1; + } + } +} + +// Parse XML and return the root element. +XMLNode XMLNode::parseString(XMLCSTR lpszXML, XMLCSTR tag, XMLResults *pResults) +{ + if (!lpszXML) + { + if (pResults) + { + pResults->error=eXMLErrorNoElements; + pResults->nLine=0; + pResults->nColumn=0; + } + return emptyXMLNode; + } + + XMLNode xnode(NULL,NULL,FALSE); + struct XML xml={ lpszXML, lpszXML, 0, 0, eXMLErrorNone, NULL, 0, NULL, 0, TRUE }; + + // Create header element + xnode.ParseXMLElement(&xml); + enum XMLError error = xml.error; + if ((xnode.nChildNode()==1)&&(xnode.nElement()==1)) xnode=xnode.getChildNode(); // skip the empty node + + // If no error occurred + if ((error==eXMLErrorNone)||(error==eXMLErrorMissingEndTag)) + { + XMLCSTR name=xnode.getName(); + if (tag&&_tcslen(tag)&&((!name)||(_tcsicmp(xnode.getName(),tag)))) + { + XMLNode nodeTmp; + int i=0; + while (i=xnode.nChildNode()) + { + if (pResults) + { + pResults->error=eXMLErrorFirstTagNotFound; + pResults->nLine=0; + pResults->nColumn=0; + } + return emptyXMLNode; + } + xnode=nodeTmp; + } + } else + { + // Cleanup: this will destroy all the nodes + xnode = emptyXMLNode; + } + + + // If we have been given somewhere to place results + if (pResults) + { + pResults->error = error; + + // If we have an error + if (error!=eXMLErrorNone) + { + if (error==eXMLErrorMissingEndTag) xml.nIndex=xml.nIndexMissigEndTag; + // Find which line and column it starts on. + CountLinesAndColumns(xml.lpXML, xml.nIndex, pResults); + } + } + return xnode; +} + +XMLNode XMLNode::parseFile(XMLCSTR filename, XMLCSTR tag, XMLResults *pResults) +{ + if (pResults) { pResults->nLine=0; pResults->nColumn=0; } + FILE *f=_tfopen(filename,_T("rb")); + if (f==NULL) { if (pResults) pResults->error=eXMLErrorFileNotFound; return emptyXMLNode; } + fseek(f,0,SEEK_END); + int l=ftell(f),headerSz=0; + if (!l) { if (pResults) pResults->error=eXMLErrorEmpty; return emptyXMLNode; } + fseek(f,0,SEEK_SET); + unsigned char *buf=(unsigned char*)malloc(l+1); + fread(buf,l,1,f); + fclose(f); + buf[l]=0; +#ifdef _XMLUNICODE + if (guessUnicodeChars) + { + if (!myIsTextUnicode(buf,l)) + { + if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) headerSz=3; + XMLSTR b2=myMultiByteToWideChar((const char*)(buf+headerSz),l-headerSz); + free(buf); buf=(unsigned char*)b2; headerSz=0; + } else + { + if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; + if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; + } + } +#else + if (guessUnicodeChars) + { + if (myIsTextUnicode(buf,l)) + { + l/=sizeof(wchar_t); + if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; + if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; + char *b2=myWideCharToMultiByte((const wchar_t*)(buf+headerSz),l-headerSz); + free(buf); buf=(unsigned char*)b2; headerSz=0; + } else + { + if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) headerSz=3; + } + } +#endif + + if (!buf) { if (pResults) pResults->error=eXMLErrorCharConversionError; return emptyXMLNode; } + XMLNode x=parseString((XMLSTR)(buf+headerSz),tag,pResults); + free(buf); + return x; +} + +static inline void charmemset(XMLSTR dest,XMLCHAR c,int l) { while (l--) *(dest++)=c; } +// private: +// Creates an user friendly XML string from a given element with +// appropriate white space and carriage returns. +// +// This recurses through all subnodes then adds contents of the nodes to the +// string. +int XMLNode::CreateXMLStringR(XMLNodeData *pEntry, XMLSTR lpszMarker, int nFormat) +{ + int nResult = 0; + int cb; + int cbElement; + int nChildFormat=-1; + int nElementI=pEntry->nChild+pEntry->nText+pEntry->nClear; + int i,j; + + assert(pEntry); + +#define LENSTR(lpsz) (lpsz ? _tcslen(lpsz) : 0) + + // If the element has no name then assume this is the head node. + cbElement = (int)LENSTR(pEntry->lpszName); + + if (cbElement) + { + // "isDeclaration) lpszMarker[nResult++]=_T('?'); + _tcscpy(&lpszMarker[nResult], pEntry->lpszName); + nResult+=cbElement; + lpszMarker[nResult++]=_T(' '); + + } else + { + nResult+=cbElement+2+cb; + if (pEntry->isDeclaration) nResult++; + } + + // Enumerate attributes and add them to the string + XMLAttribute *pAttr=pEntry->pAttribute; + for (i=0; inAttribute; i++) + { + // "Attrib + cb = (int)LENSTR(pAttr->lpszName); + if (cb) + { + if (lpszMarker) _tcscpy(&lpszMarker[nResult], pAttr->lpszName); + nResult += cb; + // "Attrib=Value " + if (pAttr->lpszValue) + { + cb=(int)lengthXMLString(pAttr->lpszValue); + if (lpszMarker) + { + lpszMarker[nResult]=_T('='); + lpszMarker[nResult+1]=_T('"'); + if (cb) toXMLString(&lpszMarker[nResult+2],pAttr->lpszValue); + lpszMarker[nResult+cb+2]=_T('"'); + } + nResult+=cb+3; + } + if (lpszMarker) lpszMarker[nResult] = _T(' '); + nResult++; + } + pAttr++; + } + + if (pEntry->isDeclaration) + { + if (lpszMarker) + { + lpszMarker[nResult-1]=_T('?'); + lpszMarker[nResult]=_T('>'); + } + nResult++; + if (nFormat!=-1) + { + if (lpszMarker) lpszMarker[nResult]=_T('\n'); + nResult++; + } + } else + // If there are child nodes we need to terminate the start tag + if (nElementI) + { + if (lpszMarker) lpszMarker[nResult-1]=_T('>'); + if (nFormat!=-1) + { + if (lpszMarker) lpszMarker[nResult]=_T('\n'); + nResult++; + } + } else nResult--; + } + + // Calculate the child format for when we recurse. This is used to + // determine the number of spaces used for prefixes. + if (nFormat!=-1) + { + if (cbElement&&(!pEntry->isDeclaration)) nChildFormat=nFormat+1; + else nChildFormat=nFormat; + } + + // Enumerate through remaining children + for (i=0; ipOrder[i]; + switch((XMLElementType)(j&3)) + { + // Text nodes + case eNodeText: + { + // "Text" + XMLCSTR pChild=pEntry->pText[j>>2]; + cb = (int)lengthXMLString(pChild); + if (cb) + { + if (nFormat!=-1) + { + if (lpszMarker) + { + charmemset(&lpszMarker[nResult],INDENTCHAR,sizeof(XMLCHAR)*(nFormat + 1)); + toXMLString(&lpszMarker[nResult+nFormat+1],pChild); + lpszMarker[nResult+nFormat+1+cb]=_T('\n'); + } + nResult+=cb+nFormat+2; + } else + { + if (lpszMarker) toXMLString(&lpszMarker[nResult], pChild); + nResult += cb; + } + } + break; + } + + // Clear type nodes + case eNodeClear: + { + XMLClear *pChild=pEntry->pClear+(j>>2); + // "OpenTag" + cb = (int)LENSTR(pChild->lpszOpenTag); + if (cb) + { + if (nFormat!=-1) + { + if (lpszMarker) + { + charmemset(&lpszMarker[nResult], INDENTCHAR, sizeof(XMLCHAR)*(nFormat + 1)); + _tcscpy(&lpszMarker[nResult+nFormat+1], pChild->lpszOpenTag); + } + nResult+=cb+nFormat+1; + } + else + { + if (lpszMarker)_tcscpy(&lpszMarker[nResult], pChild->lpszOpenTag); + nResult += cb; + } + } + + // "OpenTag Value" + cb = (int)LENSTR(pChild->lpszValue); + if (cb) + { + if (lpszMarker) _tcscpy(&lpszMarker[nResult], pChild->lpszValue); + nResult += cb; + } + + // "OpenTag Value CloseTag" + cb = (int)LENSTR(pChild->lpszCloseTag); + if (cb) + { + if (lpszMarker) _tcscpy(&lpszMarker[nResult], pChild->lpszCloseTag); + nResult += cb; + } + + if (nFormat!=-1) + { + if (lpszMarker) lpszMarker[nResult] = _T('\n'); + nResult++; + } + break; + } + + // Element nodes + case eNodeChild: + { + // Recursively add child nodes + nResult += CreateXMLStringR(pEntry->pChild[j>>2].d, lpszMarker ? lpszMarker + nResult : 0, nChildFormat); + break; + } + default: break; + } + } + + if ((cbElement)&&(!pEntry->isDeclaration)) + { + // If we have child entries we need to use long XML notation for + // closing the element - "blah blah blah" + if (nElementI) + { + // "\0" + if (lpszMarker) + { + if (nFormat != -1) + { + if (nFormat) + { + charmemset(&lpszMarker[nResult], INDENTCHAR,sizeof(XMLCHAR)*nFormat); + nResult+=nFormat; + } + } + + _tcscpy(&lpszMarker[nResult], _T("lpszName); + nResult += cbElement; + + if (nFormat == -1) + { + _tcscpy(&lpszMarker[nResult], _T(">")); + nResult++; + } else + { + _tcscpy(&lpszMarker[nResult], _T(">\n")); + nResult+=2; + } + } else + { + if (nFormat != -1) nResult+=cbElement+4+nFormat; + else nResult+=cbElement+3; + } + } else + { + // If there are no children we can use shorthand XML notation - + // "" + // "/>\0" + if (lpszMarker) + { + if (nFormat == -1) + { + _tcscpy(&lpszMarker[nResult], _T("/>")); + nResult += 2; + } + else + { + _tcscpy(&lpszMarker[nResult], _T("/>\n")); + nResult += 3; + } + } + else + { + nResult += nFormat == -1 ? 2 : 3; + } + } + } + + return nResult; +} + +#undef LENSTR + +// Create an XML string +// @param int nFormat - 0 if no formatting is required +// otherwise nonzero for formatted text +// with carriage returns and indentation. +// @param int *pnSize - [out] pointer to the size of the +// returned string not including the +// NULL terminator. +// @return XMLSTR - Allocated XML string, you must free +// this with free(). +XMLSTR XMLNode::createXMLString(int nFormat, int *pnSize) const +{ + if (!d) { if (pnSize) *pnSize=0; return NULL; } + + XMLSTR lpszResult = NULL; + int cbStr; + + // Recursively Calculate the size of the XML string + if (!dropWhiteSpace) nFormat=0; + nFormat = nFormat ? 0 : -1; + cbStr = CreateXMLStringR(d, 0, nFormat); + assert(cbStr); + // Alllocate memory for the XML string + the NULL terminator and + // create the recursively XML string. + lpszResult=(XMLSTR)malloc((cbStr+1)*sizeof(XMLCHAR)); + CreateXMLStringR(d, lpszResult, nFormat); + if (pnSize) *pnSize = cbStr; + return lpszResult; +} + +XMLNode::~XMLNode() { deleteNodeContent(); } + +int XMLNode::detachFromParent(XMLNodeData *d) +{ + XMLNode *pa=d->pParent->pChild; + int i=0; + while (((void*)(pa[i].d))!=((void*)d)) i++; + d->pParent->nChild--; + if (d->pParent->nChild) memmove(pa+i,pa+i+1,(d->pParent->nChild-i)*sizeof(XMLNode)); + else { free(pa); d->pParent->pChild=NULL; } + return removeOrderElement(d->pParent,eNodeChild,i); +} + +void XMLNode::deleteNodeContent(char force) +{ + if (!d) return; + (d->ref_count) --; + if ((d->ref_count==0)||force) + { + int i; + if (d->pParent) detachFromParent(d); + for(i=0; inChild; i++) { d->pChild[i].d->pParent=NULL; d->pChild[i].deleteNodeContent(force); } + free(d->pChild); + for(i=0; inText; i++) free((void*)d->pText[i]); + free(d->pText); + for(i=0; inClear; i++) free((void*)d->pClear[i].lpszValue); + free(d->pClear); + for(i=0; inAttribute; i++) + { + free((void*)d->pAttribute[i].lpszName); + if (d->pAttribute[i].lpszValue) free((void*)d->pAttribute[i].lpszValue); + } + free(d->pAttribute); + free(d->pOrder); + free((void*)d->lpszName); + free(d); + d=NULL; + } +} + +XMLNode XMLNode::addChild(XMLNode childNode, int pos) +{ + XMLNodeData *dc=childNode.d; + if ((!dc)||(!d)) return childNode; + if (dc->pParent) { if ((detachFromParent(dc)<=pos)&&(dc->pParent==d)) pos--; } else dc->ref_count++; + dc->pParent=d; +// int nc=d->nChild; +// d->pChild=(XMLNode*)myRealloc(d->pChild,(nc+1),memoryIncrease,sizeof(XMLNode)); + d->pChild=(XMLNode*)addToOrder(0,&pos,d->nChild,d->pChild,sizeof(XMLNode),eNodeChild); + d->pChild[pos].d=dc; + d->nChild++; + return childNode; +} + +void XMLNode::deleteAttribute(int i) +{ + if ((!d)||(i<0)||(i>=d->nAttribute)) return; + d->nAttribute--; + XMLAttribute *p=d->pAttribute+i; + free((void*)p->lpszName); + if (p->lpszValue) free((void*)p->lpszValue); + if (d->nAttribute) memmove(p,p+1,(d->nAttribute-i)*sizeof(XMLAttribute)); else { free(p); d->pAttribute=NULL; } +} + +void XMLNode::deleteAttribute(XMLAttribute *a){ if (a) deleteAttribute(a->lpszName); } +void XMLNode::deleteAttribute(XMLCSTR lpszName) +{ + int j=0; + getAttribute(lpszName,&j); + if (j) deleteAttribute(j-1); +} + +XMLAttribute *XMLNode::updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,int i) +{ + if (!d) return NULL; + if (i>=d->nAttribute) + { + if (lpszNewName) return addAttribute_WOSD(lpszNewName,lpszNewValue); + return NULL; + } + XMLAttribute *p=d->pAttribute+i; + if (p->lpszValue&&p->lpszValue!=lpszNewValue) free((void*)p->lpszValue); + p->lpszValue=lpszNewValue; + if (lpszNewName&&p->lpszName!=lpszNewName) { free((void*)p->lpszName); p->lpszName=lpszNewName; }; + return p; +} + +XMLAttribute *XMLNode::updateAttribute_WOSD(XMLAttribute *newAttribute, XMLAttribute *oldAttribute) +{ + if (oldAttribute) return updateAttribute_WOSD(newAttribute->lpszValue,newAttribute->lpszName,oldAttribute->lpszName); + return addAttribute_WOSD(newAttribute->lpszName,newAttribute->lpszValue); +} + +XMLAttribute *XMLNode::updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName) +{ + int j=0; + getAttribute(lpszOldName,&j); + if (j) return updateAttribute_WOSD(lpszNewValue,lpszNewName,j-1); + else + { + if (lpszNewName) return addAttribute_WOSD(lpszNewName,lpszNewValue); + else return addAttribute_WOSD(stringDup(lpszOldName),lpszNewValue); + } +} + +int XMLNode::indexText(XMLCSTR lpszValue) const +{ + if (!d) return -1; + int i,l=d->nText; + if (!lpszValue) { if (l) return 0; return -1; } + XMLCSTR *p=d->pText; + for (i=0; i=d->nText)) return; + d->nText--; + XMLCSTR *p=d->pText+i; + free((void*)*p); + if (d->nText) memmove(p,p+1,(d->nText-i)*sizeof(XMLCSTR)); else { free(p); d->pText=NULL; } + removeOrderElement(d,eNodeText,i); +} + +void XMLNode::deleteText(XMLCSTR lpszValue) { deleteText(indexText(lpszValue)); } + +XMLCSTR XMLNode::updateText_WOSD(XMLCSTR lpszNewValue, int i) +{ + if (!d) return NULL; + if (i>=d->nText) return addText_WOSD(lpszNewValue); + XMLCSTR *p=d->pText+i; + if (*p!=lpszNewValue) { free((void*)*p); *p=lpszNewValue; } + return lpszNewValue; +} + +XMLCSTR XMLNode::updateText_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) +{ + if (!d) return NULL; + int i=indexText(lpszOldValue); + if (i>=0) return updateText_WOSD(lpszNewValue,i); + return addText_WOSD(lpszNewValue); +} + +void XMLNode::deleteClear(int i) +{ + if ((!d)||(i<0)||(i>=d->nClear)) return; + d->nClear--; + XMLClear *p=d->pClear+i; + free((void*)p->lpszValue); + if (d->nClear) memmove(p,p+1,(d->nText-i)*sizeof(XMLClear)); else { free(p); d->pClear=NULL; } + removeOrderElement(d,eNodeClear,i); +} + +int XMLNode::indexClear(XMLCSTR lpszValue) const +{ + if (!d) return -1; + int i,l=d->nClear; + if (!lpszValue) { if (l) return 0; return -1; } + XMLClear *p=d->pClear; + for (i=0; ilpszValue); } + +XMLClear *XMLNode::updateClear_WOSD(XMLCSTR lpszNewContent, int i) +{ + if (!d) return NULL; + if (i>=d->nClear) + { + return addClear_WOSD(XMLClearTags[0].lpszOpen,lpszNewContent,XMLClearTags[0].lpszClose); + } + XMLClear *p=d->pClear+i; + if (lpszNewContent!=p->lpszValue) { free((void*)p->lpszValue); p->lpszValue=lpszNewContent; } + return p; +} + +XMLClear *XMLNode::updateClear_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) +{ + if (!d) return NULL; + int i=indexClear(lpszOldValue); + if (i>=0) return updateClear_WOSD(lpszNewValue,i); + return addClear_WOSD(lpszNewValue,XMLClearTags[0].lpszOpen,XMLClearTags[0].lpszClose); +} + +XMLClear *XMLNode::updateClear_WOSD(XMLClear *newP,XMLClear *oldP) +{ + if (oldP) return updateClear_WOSD(newP->lpszValue,oldP->lpszValue); + return NULL; +} + +XMLNode& XMLNode::operator=( const XMLNode& A ) +{ + // shallow copy + if (this != &A) + { + deleteNodeContent(); + d=A.d; + if (d) (d->ref_count) ++ ; + } + return *this; +} + +XMLNode::XMLNode(const XMLNode &A) +{ + // shallow copy + d=A.d; + if (d) (d->ref_count)++ ; +} + +int XMLNode::nChildNode(XMLCSTR name) const +{ + if (!d) return 0; + int i,j=0,n=d->nChild; + XMLNode *pc=d->pChild; + for (i=0; id->lpszName, name)==0) j++; + pc++; + } + return j; +} + +XMLNode XMLNode::getChildNode(XMLCSTR name, int *j) const +{ + if (!d) return emptyXMLNode; + int i=0,n=d->nChild; + if (j) i=*j; + XMLNode *pc=d->pChild+i; + for (; id->lpszName, name)==0) + { + if (j) *j=i+1; + return *pc; + } + pc++; + } + return emptyXMLNode; +} + +XMLNode XMLNode::getChildNode(XMLCSTR name, int j) const +{ + if (!d) return emptyXMLNode; + int i=0; + while (j-->0) getChildNode(name,&i); + return getChildNode(name,&i); +} + +int XMLNode::positionOfText (int i) const { if (i>=d->nText ) i=d->nText-1; return findPosition(d,i,eNodeText ); } +int XMLNode::positionOfClear (int i) const { if (i>=d->nClear) i=d->nClear-1; return findPosition(d,i,eNodeClear); } +int XMLNode::positionOfChildNode(int i) const { if (i>=d->nChild) i=d->nChild-1; return findPosition(d,i,eNodeChild); } +int XMLNode::positionOfText (XMLCSTR lpszValue) const { return positionOfText (indexText (lpszValue)); } +int XMLNode::positionOfClear(XMLCSTR lpszValue) const { return positionOfClear(indexClear(lpszValue)); } +int XMLNode::positionOfClear(XMLClear *a) const { if (a) return positionOfClear(a->lpszValue); return positionOfClear(); } +int XMLNode::positionOfChildNode(XMLNode x) const +{ + if ((!d)||(!x.d)) return -1; + XMLNodeData *dd=x.d; + XMLNode *pc=d->pChild; + int i=d->nChild; + while (i--) if (pc[i].d==dd) return findPosition(d,i,eNodeChild); + return -1; +} +int XMLNode::positionOfChildNode(XMLCSTR name, int count) const +{ + if (!name) return positionOfChildNode(count); + int j=0; + do { getChildNode(name,&j); if (j<0) return -1; } while (count--); + return findPosition(d,j-1,eNodeChild); +} + +XMLNode XMLNode::getChildNodeWithAttribute(XMLCSTR name,XMLCSTR attributeName,XMLCSTR attributeValue, int *k) const +{ + int i=0,j; + if (k) i=*k; + XMLNode x; + XMLCSTR t; + do + { + x=getChildNode(name,&i); + if (!x.isEmpty()) + { + if (attributeValue) + { + j=0; + do + { + t=x.getAttribute(attributeName,&j); + if (t&&(_tcsicmp(attributeValue,t)==0)) { if (k) *k=i+1; return x; } + } while (t); + } else + { + if (x.isAttributeSet(attributeName)) { if (k) *k=i+1; return x; } + } + } + } while (!x.isEmpty()); + return emptyXMLNode; +} + +// Find an attribute on an node. +XMLCSTR XMLNode::getAttribute(XMLCSTR lpszAttrib, int *j) const +{ + if (!d) return NULL; + int i=0,n=d->nAttribute; + if (j) i=*j; + XMLAttribute *pAttr=d->pAttribute+i; + for (; ilpszName, lpszAttrib)==0) + { + if (j) *j=i+1; + return pAttr->lpszValue; + } + pAttr++; + } + return NULL; +} + +char XMLNode::isAttributeSet(XMLCSTR lpszAttrib) const +{ + if (!d) return FALSE; + int i,n=d->nAttribute; + XMLAttribute *pAttr=d->pAttribute; + for (i=0; ilpszName, lpszAttrib)==0) + { + return TRUE; + } + pAttr++; + } + return FALSE; +} + +XMLCSTR XMLNode::getAttribute(XMLCSTR name, int j) const +{ + if (!d) return NULL; + int i=0; + while (j-->0) getAttribute(name,&i); + return getAttribute(name,&i); +} + +XMLNodeContents XMLNode::enumContents(int i) const +{ + XMLNodeContents c; + if (!d) { c.type=eNodeNULL; return c; } + if (inAttribute) + { + c.type=eNodeAttribute; + c.attrib=d->pAttribute[i]; + return c; + } + i-=d->nAttribute; + c.type=(XMLElementType)(d->pOrder[i]&3); + i=(d->pOrder[i])>>2; + switch (c.type) + { + case eNodeChild: c.child = d->pChild[i]; break; + case eNodeText: c.text = d->pText[i]; break; + case eNodeClear: c.clear = d->pClear[i]; break; + default: break; + } + return c; +} + +XMLCSTR XMLNode::getName() const { if (!d) return NULL; return d->lpszName; } +int XMLNode::nText() const { if (!d) return 0; return d->nText; } +int XMLNode::nChildNode() const { if (!d) return 0; return d->nChild; } +int XMLNode::nAttribute() const { if (!d) return 0; return d->nAttribute; } +int XMLNode::nClear() const { if (!d) return 0; return d->nClear; } +int XMLNode::nElement() const { if (!d) return 0; return d->nAttribute+d->nChild+d->nText+d->nClear; } +XMLClear XMLNode::getClear (int i) const { if ((!d)||(i>=d->nClear )) return emptyXMLClear; return d->pClear[i]; } +XMLAttribute XMLNode::getAttribute (int i) const { if ((!d)||(i>=d->nAttribute)) return emptyXMLAttribute; return d->pAttribute[i]; } +XMLCSTR XMLNode::getAttributeName (int i) const { if ((!d)||(i>=d->nAttribute)) return NULL; return d->pAttribute[i].lpszName; } +XMLCSTR XMLNode::getAttributeValue(int i) const { if ((!d)||(i>=d->nAttribute)) return NULL; return d->pAttribute[i].lpszValue; } +XMLCSTR XMLNode::getText (int i) const { if ((!d)||(i>=d->nText )) return NULL; return d->pText[i]; } +XMLNode XMLNode::getChildNode (int i) const { if ((!d)||(i>=d->nChild )) return emptyXMLNode; return d->pChild[i]; } +XMLNode XMLNode::getParentNode ( ) const { if ((!d)||(!d->pParent )) return emptyXMLNode; return XMLNode(d->pParent); } +char XMLNode::isDeclaration ( ) const { if (!d) return 0; return d->isDeclaration; } +char XMLNode::isEmpty ( ) const { return (d==NULL); } + +XMLNode XMLNode::addChild(XMLCSTR lpszName, char isDeclaration, int pos) + { return addChild_priv(0,stringDup(lpszName),isDeclaration,pos); } +XMLNode XMLNode::addChild_WOSD(XMLCSTR lpszName, char isDeclaration, int pos) + { return addChild_priv(0,lpszName,isDeclaration,pos); } +XMLAttribute *XMLNode::addAttribute(XMLCSTR lpszName, XMLCSTR lpszValue) + { return addAttribute_priv(0,stringDup(lpszName),stringDup(lpszValue)); } +XMLAttribute *XMLNode::addAttribute_WOSD(XMLCSTR lpszName, XMLCSTR lpszValuev) + { return addAttribute_priv(0,lpszName,lpszValuev); } +XMLCSTR XMLNode::addText(XMLCSTR lpszValue, int pos) + { return addText_priv(0,stringDup(lpszValue),pos); } +XMLCSTR XMLNode::addText_WOSD(XMLCSTR lpszValue, int pos) + { return addText_priv(0,lpszValue,pos); } +XMLClear *XMLNode::addClear(XMLCSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, int pos) + { return addClear_priv(0,stringDup(lpszValue),lpszOpen,lpszClose,pos); } +XMLClear *XMLNode::addClear_WOSD(XMLCSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, int pos) + { return addClear_priv(0,lpszValue,lpszOpen,lpszClose,pos); } +XMLCSTR XMLNode::updateName(XMLCSTR lpszName) + { return updateName_WOSD(stringDup(lpszName)); } +XMLAttribute *XMLNode::updateAttribute(XMLAttribute *newAttribute, XMLAttribute *oldAttribute) + { return updateAttribute_WOSD(stringDup(newAttribute->lpszValue),stringDup(newAttribute->lpszName),oldAttribute->lpszName); } +XMLAttribute *XMLNode::updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,int i) + { return updateAttribute_WOSD(stringDup(lpszNewValue),stringDup(lpszNewName),i); } +XMLAttribute *XMLNode::updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName) + { return updateAttribute_WOSD(stringDup(lpszNewValue),stringDup(lpszNewName),lpszOldName); } +XMLCSTR XMLNode::updateText(XMLCSTR lpszNewValue, int i) + { return updateText_WOSD(stringDup(lpszNewValue),i); } +XMLCSTR XMLNode::updateText(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) + { return updateText_WOSD(stringDup(lpszNewValue),lpszOldValue); } +XMLClear *XMLNode::updateClear(XMLCSTR lpszNewContent, int i) + { return updateClear_WOSD(stringDup(lpszNewContent),i); } +XMLClear *XMLNode::updateClear(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) + { return updateClear_WOSD(stringDup(lpszNewValue),lpszOldValue); } +XMLClear *XMLNode::updateClear(XMLClear *newP,XMLClear *oldP) + { return updateClear_WOSD(stringDup(newP->lpszValue),oldP->lpszValue); } + +void XMLNode::setGlobalOptions(char _guessUnicodeChars, char _strictUTF8Parsing, char _dropWhiteSpace) +{ + guessUnicodeChars=_guessUnicodeChars; dropWhiteSpace=_dropWhiteSpace; strictUTF8Parsing=_strictUTF8Parsing; +#ifndef _XMLUNICODE + if (_strictUTF8Parsing) XML_ByteTable=XML_utf8ByteTable; else XML_ByteTable=XML_asciiByteTable; +#endif +} + +char XMLNode::guessUTF8ParsingParameterValue(void *buf,int l, char useXMLEncodingAttribute) +{ +#ifdef _XMLUNICODE + return 0; +#else + if (l<25) return 0; + if (myIsTextUnicode(buf,l)) return 0; + unsigned char *b=(unsigned char*)buf; + if ((b[0]==0xef)&&(b[1]==0xbb)&&(b[2]==0xbf)) return 1; + + // Match utf-8 model ? + int i=0; + while (i>2 ]; + *(curr++)=base64EncodeTable[(inbuf[0]<<4)&0x3F]; + *(curr++)=base64Fillchar; + *(curr++)=base64Fillchar; + } else if (eLen==2) + { + j=(inbuf[0]<<8)|inbuf[1]; + *(curr++)=base64EncodeTable[ j>>10 ]; + *(curr++)=base64EncodeTable[(j>> 4)&0x3f]; + *(curr++)=base64EncodeTable[(j<< 2)&0x3f]; + *(curr++)=base64Fillchar; + } + *(curr++)=0; + return (XMLSTR)buf; +} + +unsigned int XMLParserBase64Tool::decodeSize(XMLCSTR data,XMLError *xe) +{ + if (xe) *xe=eXMLErrorNone; + int size=0; + unsigned char c; + //skip any extra characters (e.g. newlines or spaces) + while (*data) + { +#ifdef _XMLUNICODE + if (*data>255) { if (xe) *xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } +#endif + c=base64DecodeTable[(unsigned char)(*data)]; + if (c<97) size++; + else if (c==98) { if (xe) *xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } + data++; + } + if (xe&&(size%4!=0)) *xe=eXMLErrorBase64DataSizeIsNotMultipleOf4; + if (size==0) return 0; + do { data--; size--; } while(*data==base64Fillchar); size++; + return (unsigned int)((size*3)/4); +} + +unsigned char XMLParserBase64Tool::decode(XMLCSTR data, unsigned char *buf, int len, XMLError *xe) +{ + if (xe) *xe=eXMLErrorNone; + int i=0,p=0; + unsigned char d,c; + for(;;) + { + +#ifdef _XMLUNICODE +#define BASE64DECODE_READ_NEXT_CHAR(c) \ + do { \ + if (data[i]>255){ c=98; break; } \ + c=base64DecodeTable[(unsigned char)data[i++]]; \ + }while (c==97); \ + if(c==98){ if(xe)*xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } +#else +#define BASE64DECODE_READ_NEXT_CHAR(c) \ + do { c=base64DecodeTable[(unsigned char)data[i++]]; }while (c==97); \ + if(c==98){ if(xe)*xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } +#endif + + BASE64DECODE_READ_NEXT_CHAR(c) + if (c==99) { return 2; } + if (c==96) + { + if (p==(int)len) return 2; + if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; + return 1; + } + + BASE64DECODE_READ_NEXT_CHAR(d) + if ((d==99)||(d==96)) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + if (p==(int)len) { if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; return 0; } + buf[p++]=(c<<2)|((d>>4)&0x3); + + BASE64DECODE_READ_NEXT_CHAR(c) + if (c==99) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + if (p==(int)len) + { + if (c==96) return 2; + if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; + return 0; + } + if (c==96) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + buf[p++]=((d<<4)&0xf0)|((c>>2)&0xf); + + BASE64DECODE_READ_NEXT_CHAR(d) + if (d==99 ) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + if (p==(int)len) + { + if (d==96) return 2; + if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; + return 0; + } + if (d==96) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + buf[p++]=((c<<6)&0xc0)|d; + } +} +#undef BASE64DECODE_READ_NEXT_CHAR + +void XMLParserBase64Tool::alloc(int newsize) +{ + if ((!buf)&&(newsize)) { buf=malloc(newsize); buflen=newsize; return; } + if (newsize>buflen) { buf=realloc(buf,newsize); buflen=newsize; } +} + +unsigned char *XMLParserBase64Tool::decode(XMLCSTR data, int *outlen, XMLError *xe) +{ + if (xe) *xe=eXMLErrorNone; + unsigned int len=decodeSize(data,xe); + if (outlen) *outlen=len; + if (!len) return NULL; + alloc(len+1); + if(!decode(data,(unsigned char*)buf,len,xe)){ return NULL; } + return (unsigned char*)buf; +} + diff --git a/xmlParser/.svn/text-base/xmlParser.dsp.svn-base b/xmlParser/.svn/text-base/xmlParser.dsp.svn-base new file mode 100644 index 0000000..2a6817c --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.dsp.svn-base @@ -0,0 +1,108 @@ +# Microsoft Developer Studio Project File - Name="xmlParser" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xmlParser - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParser.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParser.mak" CFG="xmlParser - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParser - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xmlParser - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParser - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseVS6" +# PROP Intermediate_Dir "ReleaseVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x813 /d "NDEBUG" +# ADD RSC /l 0x813 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "xmlParser - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugVS6" +# PROP Intermediate_Dir "DebugVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x813 /d "_DEBUG" +# ADD RSC /l 0x813 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "xmlParser - Win32 Release" +# Name "xmlParser - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlParser.cpp +# End Source File +# Begin Source File + +SOURCE=.\xmlTest.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/.svn/text-base/xmlParser.dsw.svn-base b/xmlParser/.svn/text-base/xmlParser.dsw.svn-base new file mode 100644 index 0000000..dcec5d1 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.dsw.svn-base @@ -0,0 +1,65 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "xmlParser"=.\xmlParser.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "xmlParserDLL"=.\xmlParserDLL.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "xmlParserTestDLL"=.\xmlParserTestDLL.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "xmlParserUnicode"=.\xmlParserUnicode.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/xmlParser/.svn/text-base/xmlParser.h.svn-base b/xmlParser/.svn/text-base/xmlParser.h.svn-base new file mode 100644 index 0000000..7da09a5 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.h.svn-base @@ -0,0 +1,529 @@ +/** + **************************************************************************** + *

    XML.c - implementation file for basic XML parser written in ANSI C++ + * for portability. It works by using recursion and a node tree for breaking + * down the elements of an XML document.

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifndef __INCLUDE_XML_NODE__ +#define __INCLUDE_XML_NODE__ + +#include + +#ifdef _UNICODE +// If you comment the next "define" line then the library will never "switch to" _UNICODE (wchar_t*) mode (16/32 bits per characters). +// This is useful when you get error messages like: +// 'XMLNode::openFileHelper' : cannot convert parameter 2 from 'const char [5]' to 'const wchar_t *' +// The _XMLUNICODE preprocessor variable force the XMLParser library into either utf16/32-mode (the proprocessor variable +// must be defined) or utf8-mode(the pre-processor variable must be undefined). +#define _XMLUNICODE +#endif + +#if defined(WIN32) || defined(UNDER_CE) +// comment the next line if you are under windows and the compiler is not Microsoft Visual Studio (6.0 or .NET) +#define _XMLWINDOWS +#endif + +#ifdef DLLENTRY +#undef DLLENTRY +#endif +#ifdef _USE_XMLPARSER_DLL +#ifdef _DLL_EXPORTS_ +#define DLLENTRY __declspec(dllexport) +#else +#define DLLENTRY __declspec(dllimport) +#endif +#else +#define DLLENTRY +#endif + +// uncomment the next line if you want no support for wchar_t* (no need for the or libraries anymore to compile) +//#define XML_NO_WIDE_CHAR + +#ifdef XML_NO_WIDE_CHAR +#undef _XMLWINDOWS +#undef _XMLUNICODE +#endif + +#ifdef _XMLWINDOWS +#include +#else +#define DLLENTRY +#ifndef XML_NO_WIDE_CHAR +#include // to have 'wcsrtombs' for ANSI version + // to have 'mbsrtowcs' for UNICODE version +#endif +#endif + +// Some common types for char set portable code +#ifdef _XMLUNICODE + #ifndef _T + #define _T(c) L ## c + #endif + #define XMLCSTR const wchar_t * + #define XMLSTR wchar_t * + #define XMLCHAR wchar_t +#else + #ifndef _T + #define _T(c) c + #endif + #define XMLCSTR const char * + #define XMLSTR char * + #define XMLCHAR char +#endif +#ifndef FALSE + #define FALSE 0 +#endif /* FALSE */ +#ifndef TRUE + #define TRUE 1 +#endif /* TRUE */ + + +// Enumeration for XML parse errors. +typedef enum XMLError +{ + eXMLErrorNone = 0, + eXMLErrorMissingEndTag, + eXMLErrorEmpty, + eXMLErrorFirstNotStartTag, + eXMLErrorMissingTagName, + eXMLErrorMissingEndTagName, + eXMLErrorNoMatchingQuote, + eXMLErrorUnmatchedEndTag, + eXMLErrorUnmatchedEndClearTag, + eXMLErrorUnexpectedToken, + eXMLErrorInvalidTag, + eXMLErrorNoElements, + eXMLErrorFileNotFound, + eXMLErrorFirstTagNotFound, + eXMLErrorUnknownCharacterEntity, + eXMLErrorCharConversionError, + eXMLErrorCannotOpenWriteFile, + eXMLErrorCannotWriteFile, + + eXMLErrorBase64DataSizeIsNotMultipleOf4, + eXMLErrorBase64DecodeIllegalCharacter, + eXMLErrorBase64DecodeTruncatedData, + eXMLErrorBase64DecodeBufferTooSmall +} XMLError; + +// Enumeration used to manage type of data. Use in conjunction with structure XMLNodeContents +typedef enum XMLElementType +{ + eNodeChild=0, + eNodeAttribute=1, + eNodeText=2, + eNodeClear=3, + eNodeNULL=4 +} XMLElementType; + +// Structure used to obtain error details if the parse fails. +typedef struct XMLResults +{ + enum XMLError error; + int nLine,nColumn; +} XMLResults; + +// Structure for XML clear (unformatted) node (usually comments) +typedef struct { + XMLCSTR lpszValue; XMLCSTR lpszOpenTag; XMLCSTR lpszCloseTag; +} XMLClear; + +// Structure for XML attribute. +typedef struct { + XMLCSTR lpszName; XMLCSTR lpszValue; +} XMLAttribute; + +// Structure for XML clear tags. +typedef struct { + XMLCSTR lpszOpen; int openTagLen; XMLCSTR lpszClose; +} ALLXMLClearTag; + +struct XMLNodeContents; + +typedef struct DLLENTRY XMLNode +{ + private: + + struct XMLNodeDataTag; + + // protected constructors: use one of these four methods to get your first instance of XMLNode: + // - parseString + // - parseFile + // - openFileHelper + // - createXMLTopNode + XMLNode(struct XMLNodeDataTag *pParent, XMLCSTR lpszName, char isDeclaration); + XMLNode(struct XMLNodeDataTag *p); + + public: + + // You can create your first instance of XMLNode with these 4 functions: + // (see complete explanation of parameters below) + + static XMLNode createXMLTopNode(XMLCSTR lpszName, char isDeclaration=FALSE); + static XMLNode parseString (XMLCSTR lpXMLString, XMLCSTR tag=NULL, XMLResults *pResults=NULL); + static XMLNode parseFile (XMLCSTR filename, XMLCSTR tag=NULL, XMLResults *pResults=NULL); + static XMLNode openFileHelper(XMLCSTR filename, XMLCSTR tag=NULL ); + + // The tag parameter should be the name of the first tag inside the XML file. + // If the tag parameter is omitted, the 3 functions return a node that represents + // the head of the xml document including the declaration term (). + + // The "openFileHelper" reports to the screen all the warnings & errors that occurred during + // parsing of the XML file. Since each application has its own way to report and deal with errors, + // you should rather use the "parseFile" function to parse XML files and program yourself thereafter + // an "error reporting" tailored for your needs (instead of using the very crude "error reporting" + // mechanism included inside the "openFileHelper" function). + + // If the XML document is corrupted: + // * The "openFileHelper" method will: + // - display an error message on the console (or inside a messageBox for windows). + // - stop execution (exit). + // I suggest that you write your own "openFileHelper" method tailored to your needs. + // * The 2 other methods will initialize the "pResults" variable with some information that + // can be used to trace the error. + // * If you still want to parse the file, you can use the APPROXIMATE_PARSING option as + // explained inside the note at the beginning of the "xmlParser.cpp" file. + // You can have a user-friendly explanation of the parsing error with this function: + static XMLCSTR getError(XMLError error); + static XMLCSTR getVersion(); + static ALLXMLClearTag* getClearTagTable(); + + XMLCSTR getName() const; // name of the node + XMLCSTR getText(int i=0) const; // return ith text field + int nText() const; // nbr of text field + XMLNode getParentNode() const; // return the parent node + XMLNode getChildNode(int i=0) const; // return ith child node + XMLNode getChildNode(XMLCSTR name, int i) const; // return ith child node with specific name + // (return an empty node if failing) + XMLNode getChildNode(XMLCSTR name, int *i=NULL) const; // return next child node with specific name + // (return an empty node if failing) + XMLNode getChildNodeWithAttribute(XMLCSTR tagName, // return child node with specific name/attribute + XMLCSTR attributeName, // (return an empty node if failing) + XMLCSTR attributeValue=NULL, // + int *i=NULL) const; // + int nChildNode(XMLCSTR name) const; // return the number of child node with specific name + int nChildNode() const; // nbr of child node + XMLAttribute getAttribute(int i=0) const; // return ith attribute + XMLCSTR getAttributeName(int i=0) const; // return ith attribute name + XMLCSTR getAttributeValue(int i=0) const; // return ith attribute value + char isAttributeSet(XMLCSTR name) const; // test if an attribute with a specific name is given + XMLCSTR getAttribute(XMLCSTR name, int i) const; // return ith attribute content with specific name + // (return a NULL if failing) + XMLCSTR getAttribute(XMLCSTR name, int *i=NULL) const; // return next attribute content with specific name + // (return a NULL if failing) + int nAttribute() const; // nbr of attribute + XMLClear getClear(int i=0) const; // return ith clear field (comments) + int nClear() const; // nbr of clear field + XMLSTR createXMLString(int nFormat=1, int *pnSize=NULL) const; // create XML string starting from current XMLNode + // if nFormat==0, no formatting is required + // otherwise this returns an user friendly XML string from a + // given element with appropriate white spaces and carriage returns. + // if pnSize is given it returns the size in character of the string. + XMLError writeToFile(XMLCSTR filename, const char *encoding=NULL, char nFormat=1) const; + // save the content of an xmlNode inside a file. + // the nFormat parameter has the same meaning as in the + // createXMLString function. If "strictUTF8Parsing=1", the + // the encoding parameter is ignored and always set to + // "utf-8". If "_XMLUNICODE=1", the encoding parameter is + // ignored and always set to "utf-16". + XMLNodeContents enumContents(int i) const; // enumerate all the different contents (attribute,child,text, + // clear) of the current XMLNode. The order is reflecting + // the order of the original file/string. + // NOTE: 0 <= i < nElement(); + int nElement() const; // nbr of different contents for current node + char isEmpty() const; // is this node Empty? + char isDeclaration() const; // is this node a declaration + +// to allow shallow/fast copy: + ~XMLNode(); + XMLNode(const XMLNode &A); + XMLNode& operator=( const XMLNode& A ); + + XMLNode(): d(NULL){}; + static XMLNode emptyXMLNode; + static XMLClear emptyXMLClear; + static XMLAttribute emptyXMLAttribute; + + // The following functions allows you to create from scratch (or update) a XMLNode structure + // Start by creating your top node with the "createXMLTopNode" function and then add new nodes with the "addChild" function. + // The parameter 'pos' gives the position where the childNode, the text or the XMLClearTag will be inserted. + // The default value (pos=-1) inserts at the end. The value (pos=0) insert at the beginning (Insertion at the beginning is slower than at the end). + // REMARK: 0 <= pos < nChild()+nText()+nClear() + XMLNode addChild(XMLCSTR lpszName, char isDeclaration=FALSE, int pos=-1); + XMLAttribute *addAttribute(XMLCSTR lpszName, XMLCSTR lpszValuev); + XMLCSTR addText(XMLCSTR lpszValue, int pos=-1); + XMLClear *addClear(XMLCSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, int pos=-1); + // default values: lpszOpen=XMLNode::getClearTagTable()->lpszOpen; + // lpszClose=XMLNode::getClearTagTable()->lpszClose; + XMLNode addChild(XMLNode nodeToAdd, int pos=-1); // If the "nodeToAdd" has some parents, it will be detached + // from it's parents before being attached to the current XMLNode + // Some update functions: + XMLCSTR updateName(XMLCSTR lpszName); // change node's name + XMLAttribute *updateAttribute(XMLAttribute *newAttribute, XMLAttribute *oldAttribute); // if the attribute to update is missing, a new one will be added + XMLAttribute *updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName=NULL,int i=0); // if the attribute to update is missing, a new one will be added + XMLAttribute *updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName); // set lpszNewName=NULL if you don't want to change the name of the attribute + // if the attribute to update is missing, a new one will be added + XMLCSTR updateText(XMLCSTR lpszNewValue, int i=0); // if the text to update is missing, a new one will be added + XMLCSTR updateText(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); // if the text to update is missing, a new one will be added + XMLClear *updateClear(XMLCSTR lpszNewContent, int i=0); // if the clearTag to update is missing, a new one will be added + XMLClear *updateClear(XMLClear *newP,XMLClear *oldP); // if the clearTag to update is missing, a new one will be added + XMLClear *updateClear(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); // if the clearTag to update is missing, a new one will be added + + // Some deletion functions: + void deleteNodeContent(char force=0); // delete the content of this XMLNode and the subtree. + // if force=0, while (references to this node still exist), no memory free occurs + // if force=1, always delete the content of this XMLNode and the subtree and free associated memory + void deleteAttribute(XMLCSTR lpszName); + void deleteAttribute(int i=0); + void deleteAttribute(XMLAttribute *anAttribute); + void deleteText(int i=0); + void deleteText(XMLCSTR lpszValue); + void deleteClear(int i=0); + void deleteClear(XMLClear *p); + void deleteClear(XMLCSTR lpszValue); + + // The strings given as parameters for the following add and update methods (all these methods have + // a name with the postfix "_WOSD" that means "WithOut String Duplication" ) will be free'd by the + // XMLNode class. For example, it means that this is incorrect: + // xNode.addText_WOSD("foo"); + // xNode.updateAttribute_WOSD("#newcolor" ,NULL,"color"); + // In opposition, this is correct: + // xNode.addText("foo"); + // xNode.addText_WOSD(stringDup("foo")); + // xNode.updateAttribute("#newcolor" ,NULL,"color"); + // xNode.updateAttribute_WOSD(stringDup("#newcolor"),NULL,"color"); + // Typically, you will never do: + // char *b=(char*)malloc(...); + // xNode.addText(b); + // free(b); + // ... but rather: + // char *b=(char*)malloc(...); + // xNode.addText_WOSD(b); + // ('free(b)' is performed by the XMLNode class) + + static XMLNode createXMLTopNode_WOSD(XMLCSTR lpszName, char isDeclaration=FALSE); + XMLNode addChild_WOSD(XMLCSTR lpszName, char isDeclaration=FALSE, int pos=-1); + XMLAttribute *addAttribute_WOSD(XMLCSTR lpszName, XMLCSTR lpszValue); + XMLCSTR addText_WOSD(XMLCSTR lpszValue, int pos=-1); + XMLClear *addClear_WOSD(XMLCSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, int pos=-1); + + XMLCSTR updateName_WOSD(XMLCSTR lpszName); + XMLAttribute *updateAttribute_WOSD(XMLAttribute *newAttribute, XMLAttribute *oldAttribute); + XMLAttribute *updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName=NULL,int i=0); + XMLAttribute *updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName); + XMLCSTR updateText_WOSD(XMLCSTR lpszNewValue, int i=0); + XMLCSTR updateText_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); + XMLClear *updateClear_WOSD(XMLCSTR lpszNewContent, int i=0); + XMLClear *updateClear_WOSD(XMLClear *newP,XMLClear *oldP); + XMLClear *updateClear_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); + + // These are some useful functions when you want to insert a childNode, a text or a XMLClearTag in the + // middle (at a specified position) of a XMLNode tree already constructed. The value returned by these + // methods is to be used as last parameter (parameter 'pos') of addChild, addText or addClear. + int positionOfText(int i=0) const; + int positionOfText(XMLCSTR lpszValue) const; + int positionOfClear(int i=0) const; + int positionOfClear(XMLCSTR lpszValue) const; + int positionOfClear(XMLClear *a) const; + int positionOfChildNode(int i=0) const; + int positionOfChildNode(XMLNode x) const; + int positionOfChildNode(XMLCSTR name, int i=0) const; // return the position of the ith childNode with the specified name + // if (name==NULL) return the position of the ith childNode + + // The setGlobalOptions function allows you to change two global parameters that affect string&file + // parsing. First of all, you most-probably will never have to change these 2 global parameters. + // About the "guessUnicodeChars" parameter: + // If "guessUnicodeChars=1" and if this library is compiled in UNICODE mode, then the + // "parseFile" and "openFileHelper" functions will test if the file contains ASCII + // characters. If this is the case, then the file will be loaded and converted in memory to + // UNICODE before being parsed. If "guessUnicodeChars=0", no conversion will + // be performed. + // + // If "guessUnicodeChars=1" and if this library is compiled in ASCII/UTF8 mode, then the + // "parseFile" and "openFileHelper" functions will test if the file contains UNICODE + // characters. If this is the case, then the file will be loaded and converted in memory to + // ASCII/UTF8 before being parsed. If "guessUnicodeChars=0", no conversion will + // be performed + // + // Sometime, it's useful to set "guessUnicodeChars=0" to disable any conversion + // because the test to detect the file-type (ASCII/UTF8 or UNICODE) may fail (rarely). + // + // About the "strictUTF8Parsing" parameter: + // If "strictUTF8Parsing=0" then we assume that all characters have the same length of 1 byte. + // If "strictUTF8Parsing=1" then the characters have different lengths (from 1 byte to 4 bytes) + // depending on the content of the first byte of the character. + // About the "dropWhiteSpace" parameter: + // + + static void setGlobalOptions(char guessUnicodeChars=1, char strictUTF8Parsing=1, char dropWhiteSpace=1); + + // The next function try to guess if the character encoding is UTF-8. You most-probably will never + // have to use this function. It then returns the appropriate value of the global parameter + // "strictUTF8Parsing" described above. The guess is based on the content of a buffer of length + // "bufLen" bytes that contains the first bytes (minimum 25 bytes; 200 bytes is a good value) of the + // file to be parsed. The "openFileHelper" function is using this function to automatically compute + // the value of the "strictUTF8Parsing" global parameter. There are several heuristics used to do the + // guess. One of the heuristic is based on the "encoding" attribute. The original XML specifications + // forbids to use this attribute to do the guess but you can still use it if you set + // "useXMLEncodingAttribute" to 1 (this is the default behavior and the behavior of most parsers). + + static char guessUTF8ParsingParameterValue(void *buffer, int bufLen, char useXMLEncodingAttribute=1); + + private: + +// these are functions and structures used internally by the XMLNode class (don't bother about them): + + typedef struct XMLNodeDataTag // to allow shallow copy and "intelligent/smart" pointers (automatic delete): + { + XMLCSTR lpszName; // Element name (=NULL if root) + int nChild, // Number of child nodes + nText, // Number of text fields + nClear, // Number of Clear fields (comments) + nAttribute; // Number of attributes + char isDeclaration; // Whether node is an XML declaration - '' + struct XMLNodeDataTag *pParent; // Pointer to parent element (=NULL if root) + XMLNode *pChild; // Array of child nodes + XMLCSTR *pText; // Array of text fields + XMLClear *pClear; // Array of clear fields + XMLAttribute *pAttribute; // Array of attributes + int *pOrder; // order of the child_nodes,text_fields,clear_fields + int ref_count; // for garbage collection (smart pointers) + } XMLNodeData; + XMLNodeData *d; + + char parseClearTag(void *px, ALLXMLClearTag *pa); + char maybeAddTxT(void *pa, XMLCSTR tokenPStr); + int ParseXMLElement(void *pXML); + void *addToOrder(int memInc, int *_pos, int nc, void *p, int size, XMLElementType xtype); + int indexText(XMLCSTR lpszValue) const; + int indexClear(XMLCSTR lpszValue) const; + XMLNode addChild_priv(int,XMLCSTR,char,int); + XMLAttribute *addAttribute_priv(int,XMLCSTR,XMLCSTR); + XMLCSTR addText_priv(int,XMLCSTR,int); + XMLClear *addClear_priv(int,XMLCSTR,XMLCSTR,XMLCSTR,int); + static inline int findPosition(XMLNodeData *d, int index, XMLElementType xtype); + static int CreateXMLStringR(XMLNodeData *pEntry, XMLSTR lpszMarker, int nFormat); + static int removeOrderElement(XMLNodeData *d, XMLElementType t, int index); + static void exactMemory(XMLNodeData *d); + static int detachFromParent(XMLNodeData *d); +} XMLNode; + +// This structure is given by the function "enumContents". +typedef struct XMLNodeContents +{ + // This dictates what's the content of the XMLNodeContent + enum XMLElementType type; + // should be an union to access the appropriate data. + // compiler does not allow union of object with constructor... too bad. + XMLNode child; + XMLAttribute attrib; + XMLCSTR text; + XMLClear clear; + +} XMLNodeContents; + +DLLENTRY void free_XMLDLL(void *t); // {free(t);} + +// Duplicate (copy in a new allocated buffer) the source string. This is +// a very handy function when used with all the "XMLNode::*_WOSD" functions. +// (If (cbData!=0) then cbData is the number of chars to duplicate) +DLLENTRY XMLSTR stringDup(XMLCSTR source, int cbData=0); + +// The 3 following functions are processing strings so that all the characters +// &,",',<,> are replaced by their XML equivalent: &, ", ', <, >. +// These 3 functions are useful when creating from scratch an XML file using the +// "printf", "fprintf", "cout",... functions. If you are creating from scratch an +// XML file using the provided XMLNode class you cannot use these functions (the +// XMLNode class does the processing job for you during rendering). The second +// function ("toXMLStringFast") allows you to re-use the same output buffer +// for all the conversions so that only a few memory allocations are performed. +// If the output buffer is too small to contain thee resulting string, it will +// be enlarged. +DLLENTRY XMLSTR toXMLString(XMLCSTR source); +DLLENTRY XMLSTR toXMLStringFast(XMLSTR *destBuffer,int *destSz, XMLCSTR source); + +// you should not use this one (there is a possibility of "destination-buffer-overflow"): +DLLENTRY XMLSTR toXMLString(XMLSTR dest,XMLCSTR source); + +// Below is a class that allows you to include any binary data (images, sounds,...) +// into an XML document using "Base64 encoding". This class is completely +// separated from the rest of the xmlParser library and can be removed without any problem. +// To include some binary data into an XML file, you must convert the binary data into +// standard text (using "encode"). To retrieve the original binary data from the +// b64-encoded text included inside the XML file use "decode". Alternatively, these +// functions can also be used to "encrypt/decrypt" some critical data contained inside +// the XML. + +class DLLENTRY XMLParserBase64Tool +{ +public: + XMLParserBase64Tool(): buf(NULL),buflen(0){} + ~XMLParserBase64Tool(); + + void freeBuffer(); + + // returns the length of the base64 string that encodes a data buffer of size inBufLen bytes. + // If "formatted" parameter is true, some space will be reserved for a carriage-return every 72 chars. + static int encodeLength(int inBufLen, char formatted=0); + + // The "base64Encode" function returns a string containing the base64 encoding of "inByteLen" bytes + // from "inByteBuf". If "formatted" parameter is true, then there will be a carriage-return every 72 chars. + // The string will be free'd when the XMLParserBase64Tool object is deleted. + // All returned strings are sharing the same memory space. + XMLSTR encode(unsigned char *inByteBuf, unsigned int inByteLen, char formatted=0); + + // returns the number of bytes which will be decoded from "inString". + static unsigned int decodeSize(XMLCSTR inString, XMLError *xe=NULL); + + // returns a pointer to a buffer containing the binary data decoded from "inString" + // If "inString" is malformed NULL will be returned + // The output buffer will be free'd when the XMLParserBase64Tool object is deleted. + // All output buffer are sharing the same memory space. + unsigned char* decode(XMLCSTR inString, int *outByteLen=NULL, XMLError *xe=NULL); + + // The next function is deprecated. + // decodes data from "inString" to "outByteBuf". You need to provide the size (in byte) of "outByteBuf" + // in "inMaxByteOutBuflen". If "outByteBuf" is not large enough or if data is malformed, then "FALSE" + // will be returned; otherwise "TRUE". + static unsigned char decode(XMLCSTR inString, unsigned char *outByteBuf, int inMaxByteOutBuflen, XMLError *xe=NULL); + +private: + void *buf; + int buflen; + void alloc(int newsize); +}; + +#undef DLLENTRY + +#endif diff --git a/xmlParser/.svn/text-base/xmlParser.html.svn-base b/xmlParser/.svn/text-base/xmlParser.html.svn-base new file mode 100644 index 0000000..b9f83e0 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.html.svn-base @@ -0,0 +1,374 @@ + + + + + +Small, simple, cross-platform, free and fast C++ XML Parser + + + + + + + + +

    +
    Small, simple, + cross-platform, free and fast +  C++ XML Parser +
    +

    + +

    This project started from my frustration that I could not find any simple, + portable XML Parser to use inside my tools (see CONDOR + for example). Let's look at the well-known Xerces C++ library: the complete + library is 53 MB! (12.1 MB compressed in a zipfile). I am currently developping + many small tools. I am using XML as standard for all my input /ouput configuration + and data files. The source code of my small tools is usually around 600KB. In + these conditions, don't you think that 53MB to be able to read an XML file is + a little bit "too much"? So I created my own XML parser. My XML parser + "library" is composed of only 2 files: a .cpp file and a .h file. + The total size is 104 KB.
    +
    + Here is how it works: The XML parser loads a full XML file in memory, it parses + the file and it generates a tree structure representing the XML file. Of course, + you can also parse XML data that you have already stored yourself into a memory + buffer. Thereafter, you can easily "explore" the tree to get your + data. You can also modify the tree using "add" and "delete" + functions and regenerate a formatted XML string from a subtree. Memory management + is totally transparent through the use of smart pointers (in other words, you + will never have to do any new, delete, malloc or free)("Smart pointers" + are a primitive version of the garbage collector in Java).
    +
    + Here are the characteristics of the XMLparser library: +

      +
    • Non-validating XML parser written in standard C++ (DTD's or XSD's informations + are ignored).
    • +
    • Cross-plateform: the library is currently used every day on Solaris, Linux + (32bit and 64bit) and Windows to manipulate "small" PMML + documents (10 MB).
      + The library has been tested and is working flawlessly using the following + compilers: gcc (under linux, Mac OS X Tiger and under many unix flavours), + Visual Studio 6.0, Visual Studio .NET (under Windows 9x,NT,2000,XP,Vista,CE,mobile), + Intel C/C++ compiler, SUN CC compiler, C++ Borland Compiler. The library is + also used under QNX.
    • +
    • The parser builds a tree structure that you can "explore" easily + (DOM-type parser).
    • +
    • The parser can be used to generate XML strings from subtrees (it's called + rendering). You can also save subtrees directly to files (automatic "Byte + Order Mark"-BOM support).
    • +
    • Modification or "from scratch creation" of large XML tree structures + in memory using funtions like addChild, + addAttribute,updateAttribute,deleteAttribute,...
    • +
    • It's SIMPLE: no need to learn how to use dozens of classes: + there is only one simple class: the 'XMLNode' class (that represents one node + of the XML tree).
    • +
    • Very efficient (Efficiency is required to be able to handle BIG + files): +
        +
      • The string parser is very efficient: It does only one + pass over the XML string to create the tree. It does the minimal amount + of memory allocations. For example: it does NOT use slow STL::String class + but plain, simple and fast C malloc 's. It also allocates large chunk + of memory instead of many small chunks. Inside Visual C++, the "debug + versions" of the memory allocation functions are very slow: Do not + forget to compile in "release mode" to get maximum speed.
      • +
      • The "tree exploration" is very efficient because + all operations on the 'XMLNode' class are handled through references: + there are no memory copy, no memory allocation, never.
      • +
      • The XML string rendering is very efficient: It does + one pass to compute the total memory size of the XML string and a second + pass to actually create the string. There is thus only one memory allocation + and no extra memory copy. Other libraries are slower because they are + using the string concatenation operator that requires many memory (re-)allocations + and memory copy.
      • +
      +
    • +
    • In-memory parsing
    • +
    • Supports XML namespaces
    • +
    • Very small and totally stand-alone (not built on top of something else). + Uses only standard <stdio.h> library (and only for the 'fopen' and the + 'fread' functions to load the XML file).
    • +
    • Easy to integrate into you own projects: it's only 2 files! The .h file + does not contain any implementation code. Compilation is thus very fast.
    • +
    • Robust (I used it every day at work since 2004).
      + Optionnally, if you define the C++ prepocessor directives STRICT_PARSING and/or + APPROXIMATE_PARSING, the library can be "forgiving" in case of errors + inside the XML.
      + I have tried to respect the XML-specs given at: http://www.w3.org/TR/REC-xml/ +
    • Fully integrated error handling : +
        +
      • The string parser gives you the precise position and + type of the error inside the XML string (if an error is detected).
      • +
      • The library allows you to "explore" a part + of the tree that is missing. However data extracted from "missing + subtrees" will be NULL. This way, it's really easy to code "error + handling" procedures.
      • +
      +
    • Thread-safe (however the global parameters "guessUnicodeChar" + and"strictUTF8Parsing" must be unique because they are shared by + all threads).
    • +
    • Full Supports for all character sets: ANSI / UTF-8 / Unicode 16bit / Unicode + 32bit characters support (Windows, Linux, Linux 64 bits & Solaris version + only) +
        +
      • For the unicode version of the library: Automatic conversion + to Unicode before parsing (if the input XML file is standard ansi 8bit + characters).
      • +
      • For the ascii version of the library: Automatic conversion + to ascii before parsing (if the input XML file is unicode 16 or 32bit + wide characters).
      • +
      + The library is now able to handle successfuly chinese, cyrilic and other extended + characters thanks to an extended UTF-8 support (see this UTF-8-demo + to show the characters available). If you are still experiencing character + encoding problems, I suggest you to convert your XML files to UTF-8 using + a tool like iconv + (precompiled + win32 binary).
    • +
    • Transparent memory management through the use of smart pointers.
    • +
    • Limited Support for character entities. The current known character entities + are:
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      &lt;< less than
      &gt;> greater than
      &amp; &ampersand
      &apos;' apostrophe
      &quot;"quotation mark
      &#x04B;Kdirect access to the ascii code of any + character
      + (in hexadecimal)
      &#75;Kdirect access to the ascii code of any + character
      + (in standard decimal)
      +
      +
    • +
    • Support for a wide range of clearTags that are containing unformatted text:
      + <![CDATA[ ... ]]>, + <!-- ... -->, <PRE> ... </PRE>, <Script> ... </Script>, + <!DOCTYPE ... >
      + Unformatted texts are not parsed by the library and can contain items that + are usually 'forbidden' in XML (for example: html code)
    • +
    • Support for inclusion of pure binary data (images, sounds,...) into the + XML document using the four provided ultrafast Base64 conversion functions.
    • +
    • The library is under the BSD LICENSE. It means that you can use it freely + in all your applications, even the commercial ones, without any restriction.
    • +
    • Easy to customize: The code is small, commented and written in a plain and + simple way. Thus, if you really need to change something (but I doubt of it), + it's easy.
    • +
    +

    Download

    +If you like this library, you can either add +a message in the guestbook +or create a URL-Link towards this page from your website (use this URL: http://www.applied-mathematics.net/tools/xmlParser.html). +If you want to help other people to produce better softwares using XML technology, +you can increase the visibility of this library by adding a URL-link toward this +page (so that its google-ranking increases ;-) ).
    +
    +Download here: small, +simple, multi-Plateform XMLParser library with examples (zipfile).
    +Inside the zip file, you will find 5 examples: +
      +
    • ansi unix/solaris project example (makefile based)
    • +
    • wide char unix/solaris project example (makefile based)
    • +
    • ansi windows project example (for Visual Studio 6 and .NET)
    • +
    • wide char windows project example (for Visual Studio 6 and .NET)
    • +
    • ansi windows .dll project with a small test project to check the + generated .dll
    • +
    +

    Log

    +Version changes: +
      +
    • V1.00: February 20, 2002: initial version.
    • +
    • V1.20: July 22, 2006: After 13 minor changes, 2 major changes, + 8 bug fixes and 23 functionality additions(at user's request), I decided to + switch to V2.01.
    • +
    • V2.01: July 24, 2006: 1 major change, 2 minor change, 3 + additions +
        +
      • Major Change: no more "stringDup" + required for functions like "addText", "addAttribute",... +
        + The old behavior is still accessible through functions like "addText_WOSD", + "addAttribute_WOSD",... ("_WSOD" stands for "WithOut + StringDup").
        + This change greatly simplifies the user's code. Unfortunately, old user's + code must be updated to work with the new version.
        + Fortunately, all the user's code used to READ the content of an XML file + is left unchanged: Only the "creation of XML" and the "update + of XML" user's code require a little updating work.
      • +
      +
    • +
    • V2.02: July 25, 2006: 1 minor change
    • +
    • V2.03: July 28, 2006: 1 minor change
    • +
    • V2.04: August 6, 2006: 1 addition
    • +
    • V2.05: August 15, 2006: 1 addition
    • +
    • V2.06: August 16, 2006: 2 additions
    • +
    • V2.07: August 22, 2006: 1 addition
    • +
    • V2.08: August 22, 2006: 1 bug fix
    • +
    • V2.09: August 31, 2006: 1 bug fix
    • +
    • V2.10: September 21, 2006: 1 bug fix
    • +
    • V2.11: October 24, 2006: 3 additions, 1 bug fix. +
        +
      • added the function getParentNode(). Thanks to Jakub + Siudzinski for notifying me a good way to do it easily.
      • +
      +
    • +
    • V2.12: October 25, 2006: 2 additions
    • +
    • V2.13: October 31, 2006: 1 minor change, 1 bug fix
    • +
    • V2.14: November 13, 2006: 1 minor change, 1 bug fix
    • +
    • V2.15: December 22, 2006: 2 additions
    • +
    • V2.16: December 27, 2006: 1 minor change
    • +
    • V2.17: January 9, 2007: 1 addition, 1 minor change +
    • +
    • V2.18: January 15, 2007: 1 bug fix
    • +
    • V2.19: January 30, 2007: 1 bug fix, 3 additions
    • +
    • V2.20: February 17, 2007: 1 addition +
        +
      • added a Visual Studio projet file to build a DLL version + of the library.
        + Under Windows, when I have to debug a software that is using the XMLParser + Library, it's usually a nightmare because the library is sooOOOoooo slow + in debug mode. To solve this problem, during all the debugging session, + I use a very fast DLL version of the XMLParser Library (the DLL is compiled + in release mode). Using the DLL version of the XMLParser Library allows + me to have lightening XML parsing speed, even in debug mode! Other than + that, the DLL version is useless: In the release version of my tool, I + always use the normal, ".cpp"-based, XMLParser Library.
      • +
      +
    • +
    • V2.21: Mars 1, 2007: 1 minor change, 1 bug fix
    • +
    • V2.22: Mars 6, 2007: 1 bug fix
    • +
    • V2.23: Mars 13, 2007: 1 bug fix +
        +
      • FIX: the library is now thread-safe.
      • +
      +
    • +
    +

    A small tutorial

    +Let's assume that you want to parse the XML file "PMMLModel.xml" +that contains:

    +
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <PMML version="3.0"
    xmlns="http://www.dmg.org/PMML-3-0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema_instance" >
    <Header copyright="Frank Vanden Berghen"> + Hello World!
    <Application name="&lt;Condor>" version="1.99beta" />
    </Header> + <Extension name="keys"> <Key name="urn"> </Key> </Extension>
    <DataDictionary>
    <DataField name="persfam" optype="continuous" dataType="double">
    <Value value="9.900000e+001" property="missing" />
    </DataField>
    <DataField name="prov" optype="continuous" dataType="double" />
    <DataField name="urb" optype="continuous" dataType="double" />
    <DataField name="ses" optype="continuous" dataType="double" />
    </DataDictionary>
    <RegressionModel functionName="regression" modelType="linearRegression">
    <RegressionTable intercept="0.00796037">
    <NumericPredictor name="persfam" coefficient="-0.00275951" />
    <NumericPredictor name="prov" coefficient="0.000319433" />
    <NumericPredictor name="ses" coefficient="-0.000454307" /> + <NONNumericPredictor name="testXmlExample" />
    </RegressionTable>
    </RegressionModel>
    </PMML>
    +

    Let's analyse line by line the following small example program: +

    #include <stdio.h>    // to get "printf" function
    +#include <stdlib.h>   // to get "free" function
    +#include "xmlParser.h"
    +
    +int main(int argc, char **argv)
    +{
    +  // this open and parse the XML file:
    XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml","PMML");
    + // this prints "<Condor>": + XMLNode xNode=xMainNode.getChildNode("Header"); + printf("Application Name is: '%s'\n", xNode.getChildNode("Application").getAttribute("name"));
    + // this prints "Hello world!": + printf("Text inside Header tag is :'%s'\n", xNode.getText());
    + // this gets the number of "NumericPredictor" tags:
    xNode=xMainNode.getChildNode("RegressionModel").getChildNode("RegressionTable"); + int n=xNode.nChildNode("NumericPredictor"); + + // this prints the "coefficient" value for all the "NumericPredictor" tags:
    for (int i=0; i<n; i++) + printf("coeff %i=%f\n",i+1,atof(xNode.getChildNode("NumericPredictor",i).getAttribute("coefficient"))); + + // this prints a formatted ouput based on the content of the first "Extension" tag of the XML file:
    char *t=xMainNode.getChildNode("Extension").createXMLString(true);
    printf("%s\n",t);
    free(t); + return 0;
    }
    +

    To manipulate the data contained inside the XML file, the first operation is + to get an instance of the class XMLNode that is representing the XML file in + memory. You can use: +

    XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml","PMML");
    +or, if you use the UNICODE windows version of the library: +
    XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml",_T("PMML"));
    +or, if the XML document is already in a memory buffer pointed by variable "char +*xmlDoc" : +
    XMLNode xMainNode=XMLNode::parseString(xmlDoc,"PMML");
    +This will create an object called xMainNode +that represents the first tag named PMML +found inside the XML document. This object is the top of tree structure representing +the XML file in memory. The following command creates a new object called xNode +that represents the "Header" +tag inside the "PMML" +tag.

    +
    XMLNode xNode=xMainNode.getChildNode("Header");
    +The following command prints on the screen "<Condor>" +(note that the "&lt;" +character entity has been replaced by "<"): +
    printf("Application Name is: '%S'\n", xNode.getChildNode("Application").getAttribute("name"));
    +The following command prints on the screen "Hello +World!": +
    printf("Text inside Header tag is :'%s'\n", xNode.getText());
    +Let's assume you want to "go to" the tag named "RegressionTable":

    +
    xNode=xMainNode.getChildNode("RegressionModel").getChildNode("RegressionTable");
    +

    Note that the previous value of the object named xNode + has been "garbage collected" so that no memory leak occurs. If you + want to know how many tags named "NumericPredictor" + are contained inside the tag named "RegressionTable":

    +
    int n=xNode.nChildNode("NumericPredictor");
    +

    The variable n now + contains the value 3. If you want to print the value of the coefficient + attribute for all the NumericPredictor + tags: +

    for (int i=0; i<n; i++)
    +  printf("coeff %i=%f\n",i+1,atof(xNode.getChildNode("NumericPredictor",i).getAttribute("coefficient")));
    +Or equivalently, but faster at runtime:
    +
    +int iterator=0;
    +for (int i=0; i<n; i++)
    +  printf("coeff %i=%f\n",i+1,atof(xNode.getChildNode("NumericPredictor",&iterator).getAttribute("coefficient")));
    +

    If you want to generate and print on the screen the following XML formatted + text:

    +
    <Extension name="keys">
    +  <Key name="urn" />
    +</Extension>
    +
    +

    You can use: +

    char *t=xMainNode.getChildNode("Extension").createXMLString(true);
    printf("%s\n",t);
    free(t);
    +

    Note that you must free the memory yourself (using the "free(t);" + function) : only the XMLNode objects and their contents are "garbage collected". + The parameter true to + the function createXMLString + means that we want formatted output.
    +
    + The XML Parser library contains many more other small usefull methods that are + not described here (The zip file contains some additional examples to explain + other functionalities). These methods allows you to: +

      +
    • navigate easily inside the structure of the XML document
    • +
    • create, update & save your own XML structure of XMLNode's.
    • +
    +That's all folks! With this basic knowledge, you should be able to retreive easily +any data from any XML file!


    + + diff --git a/xmlParser/.svn/text-base/xmlParser.ncb.svn-base b/xmlParser/.svn/text-base/xmlParser.ncb.svn-base new file mode 100644 index 0000000..8fdb43e --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.ncb.svn-base Binary files differ diff --git a/xmlParser/.svn/text-base/xmlParser.sln.svn-base b/xmlParser/.svn/text-base/xmlParser.sln.svn-base new file mode 100644 index 0000000..1c68c7c --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.sln.svn-base @@ -0,0 +1,45 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParser", "xmlParser.vcproj", "{475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParserDLL", "xmlParserDLL.vcproj", "{99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParserTestDLL", "xmlParserTestDLL.vcproj", "{7C050873-A259-4613-8D3A-978D42266E78}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParserUnicode", "xmlParserUnicode.vcproj", "{B2310CFF-124A-4DE6-A3BA-AEDC557443F0}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Debug.ActiveCfg = Debug|Win32 + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Debug.Build.0 = Debug|Win32 + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Release.ActiveCfg = Release|Win32 + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Release.Build.0 = Release|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Debug.ActiveCfg = Debug|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Debug.Build.0 = Debug|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Release.ActiveCfg = Release|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Release.Build.0 = Release|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Debug.ActiveCfg = Debug|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Debug.Build.0 = Debug|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Release.ActiveCfg = Release|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Release.Build.0 = Release|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Debug.ActiveCfg = Debug|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Debug.Build.0 = Debug|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Release.ActiveCfg = Release|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/xmlParser/.svn/text-base/xmlParser.suo.svn-base b/xmlParser/.svn/text-base/xmlParser.suo.svn-base new file mode 100644 index 0000000..c13e1f8 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.suo.svn-base Binary files differ diff --git a/xmlParser/.svn/text-base/xmlParser.vcproj.svn-base b/xmlParser/.svn/text-base/xmlParser.vcproj.svn-base new file mode 100644 index 0000000..9c00903 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParser.vcproj.svn-base @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/.svn/text-base/xmlParserDLL.dsp.svn-base b/xmlParser/.svn/text-base/xmlParserDLL.dsp.svn-base new file mode 100644 index 0000000..6b0ebb2 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParserDLL.dsp.svn-base @@ -0,0 +1,116 @@ +# Microsoft Developer Studio Project File - Name="xmlParserDLL" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=xmlParserDLL - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParserDLL.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParserDLL.mak" CFG="xmlParserDLL - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParserDLL - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "xmlParserDLL - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParserDLL - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDLL" +# PROP Intermediate_Dir "ReleaseDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XMLPARSERDLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_USE_XMLPARSER_DLL" /D "_DLL_EXPORTS_" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x80c /d "NDEBUG" +# ADD RSC /l 0x80c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /version:2.20 /dll /pdb:none /machine:I386 /out:"ReleaseDLL/xmlParser.dll" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=mkdir releaseTestDLL mkdir debugTestDLL copy releaseDLL\xmlParser.dll releaseTestDLL copy releaseDLL\xmlParser.dll debugTestDLL +# End Special Build Tool + +!ELSEIF "$(CFG)" == "xmlParserDLL - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDLL" +# PROP Intermediate_Dir "DebugDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XMLPARSERDLL_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USE_XMLPARSER_DLL" /D "_DLL_EXPORTS_" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x80c /d "_DEBUG" +# ADD RSC /l 0x80c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"DebugDLL/xmlParser.dll" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "xmlParserDLL - Win32 Release" +# Name "xmlParserDLL - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlParser.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/.svn/text-base/xmlParserDLL.vcproj.svn-base b/xmlParser/.svn/text-base/xmlParserDLL.vcproj.svn-base new file mode 100644 index 0000000..c9ce934 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParserDLL.vcproj.svn-base @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/.svn/text-base/xmlParserTestDLL.dsp.svn-base b/xmlParser/.svn/text-base/xmlParserTestDLL.dsp.svn-base new file mode 100644 index 0000000..f901ba5 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParserTestDLL.dsp.svn-base @@ -0,0 +1,106 @@ +# Microsoft Developer Studio Project File - Name="xmlParserTestDLL" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xmlParserTestDLL - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParserTestDLL.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParserTestDLL.mak" CFG="xmlParserTestDLL - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParserTestDLL - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xmlParserTestDLL - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParserTestDLL - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseTestDLL" +# PROP Intermediate_Dir "ReleaseTestDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x80c /d "NDEBUG" +# ADD RSC /l 0x80c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib xmlParser.lib /nologo /subsystem:console /machine:I386 /libpath:"releaseDLL" + +!ELSEIF "$(CFG)" == "xmlParserTestDLL - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "debugTestDLL" +# PROP Intermediate_Dir "debugTestDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_USE_XMLPARSER_DLL" /YX /FD /GZ /c +# ADD BASE RSC /l 0x80c /d "_DEBUG" +# ADD RSC /l 0x80c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib xmlParser.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"releaseDLL" + +!ENDIF + +# Begin Target + +# Name "xmlParserTestDLL - Win32 Release" +# Name "xmlParserTestDLL - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlTest.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/.svn/text-base/xmlParserTestDLL.vcproj.svn-base b/xmlParser/.svn/text-base/xmlParserTestDLL.vcproj.svn-base new file mode 100644 index 0000000..a7348ab --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParserTestDLL.vcproj.svn-base @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/.svn/text-base/xmlParserUnicode.dsp.svn-base b/xmlParser/.svn/text-base/xmlParserUnicode.dsp.svn-base new file mode 100644 index 0000000..cac1ff7 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParserUnicode.dsp.svn-base @@ -0,0 +1,108 @@ +# Microsoft Developer Studio Project File - Name="xmlParserUnicode" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xmlParserUnicode - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParserUnicode.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParserUnicode.mak" CFG="xmlParserUnicode - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParserUnicode - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xmlParserUnicode - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParserUnicode - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseUnicodeVS6" +# PROP Intermediate_Dir "ReleaseUnicodeVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x813 /d "NDEBUG" +# ADD RSC /l 0x813 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "xmlParserUnicode - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "xmlParserUnicode___Win32_Debug" +# PROP BASE Intermediate_Dir "xmlParserUnicode___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugUnicodeVS6" +# PROP Intermediate_Dir "DebugUnicodeVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /GZ /c +# ADD BASE RSC /l 0x813 /d "_DEBUG" +# ADD RSC /l 0x813 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "xmlParserUnicode - Win32 Release" +# Name "xmlParserUnicode - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlParser.cpp +# End Source File +# Begin Source File + +SOURCE=.\xmlTestUnicode.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/.svn/text-base/xmlParserUnicode.vcproj.svn-base b/xmlParser/.svn/text-base/xmlParserUnicode.vcproj.svn-base new file mode 100644 index 0000000..ce4ea12 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlParserUnicode.vcproj.svn-base @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/.svn/text-base/xmlTest.cpp.svn-base b/xmlParser/.svn/text-base/xmlTest.cpp.svn-base new file mode 100644 index 0000000..b5ffcfb --- /dev/null +++ b/xmlParser/.svn/text-base/xmlTest.cpp.svn-base @@ -0,0 +1,240 @@ +/** + **************************************************************************** + *

    XML.c - XML parser test example - char* version

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifdef WIN32 +#define _CRT_SECURE_NO_DEPRECATE +#endif + +#include +#include "xmlParser.h" + +void myfree(void *t); // {free(t);} + +int main(int argc, char **argv) +{ + /********************************************************************************* + * * + * Example 1: Basic operations to parse and collect data from a XML file * + * * + *********************************************************************************/ + + // this open and parse the XML file: + XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml","PMML"); + + // this prints "RANK For ": + XMLNode xNode=xMainNode.getChildNode("Header"); + printf("Application Name is: '%s' (note that < has been replaced by '<')\n", xNode.getChildNode("Application").getAttribute("name")); + + // this prints "Hello World!" + printf("Text inside Header tag is :'%s'\n", xNode.getText()); + + // this gets the number of "NumericPredictor" tags: + xNode=xMainNode.getChildNode("RegressionModel").getChildNode("RegressionTable"); + int n=xNode.nChildNode("NumericPredictor"); + + // this prints the "coefficient" value for all the "NumericPredictor" tags: + int i,myIterator=0; + for (i=0; i + // Hello universe. + // ... and we transform it into a standard C string that is printed on screen. + xMainNode=XMLNode::createXMLTopNode("xml",TRUE); + xMainNode.addAttribute("version","1.0"); + xNode=xMainNode.addChild("body"); + xNode.addText("Hello \"univ\"!"); + xNode.deleteText(); + xNode.addText("Hello \"universe\"!"); + xNode.addAttribute("color","#wrongcolor"); + xNode.updateAttribute("#FFFFFF",NULL,"color"); + + t=xMainNode.createXMLString(false); + printf("XMLString created from scratch:\n%s",t); + myfree(t); + + // we delete some parts: + xNode.deleteAttribute("color"); + t=xMainNode.createXMLString(false); + printf("\nWith the \"color\" attribute deleted:\n%s\n\n",t); + myfree(t); + + /********************************************************************************************************* + * * + * Example 4: by default, the XML parser is "forgiving" with respect to errors inside XML strings&files * + * * + *********************************************************************************************************/ + + // By default, the XML parser is "forgiving": + // (You can de-activate this behavior: see the header of the xmlParser.cpp file) + const char *t2="some textother text "; + XMLResults xe; + xMainNode=XMLNode::parseString(t2,NULL,&xe); + t=xMainNode.createXMLString(false); + printf("The following XML: %s\n ...is parsed as: %s\nwith the following info: '%s'\n",t2,t?t:"(null)",XMLNode::getError(xe.error)); + myfree(t); + + /******************************************************* + * * + * Example 5: deleting a part of the tree of XMLNode * + * * + *******************************************************/ + + // this deletes the "other text" subtree part: + xMainNode.getChildNode("b",1).deleteNodeContent(); + + // To perform the same "delete" as above, we can also do: + // xNode=xMainNode.getChildNode("a").getChildNode("b",1); xNode.deleteNodeContent(); xNode=XMLNode::emptyXMLNode; + // If you forget the last part of the delete ("xNode=XMLNode::emptyXMLNode"), then the XMLNode will NOT be deleted: + // In this case, as long as there exists a reference to the XMLNode, the smartPointer mechanism prevent the node to be deleted. + + // To perform the same "delete" as above, we can also do: + // xNode=xMainNode.getChildNode("a").getChildNode("b",1); xNode.deleteNodeContent(true); + // The "true" parameter will force the deletion, even if there still exists some references to the XMLNode. + + t=xMainNode.createXMLString(false); + printf("\n...with the wrong node deleted: %s\n",t); + myfree(t); + + /************************************************************************************************************ + * * + * Example 5: inserting (and moving) a new XMLNode in the middle of an already existing XMLNode structure * + * * + ************************************************************************************************************/ + + // This creates a XMLNode 'a' that is "some textother text": + xMainNode=XMLNode::parseString(t2); + // This creates a XMLNode 'c' that is "hello": + xNode=XMLNode::parseString("hello"); + + xMainNode.addChild(xNode,0); + t=xMainNode.createXMLString(false); + printf("\nWe inserted a new node 'c' as the first tag inside 'a':\n %s",t); + myfree(t); + + xMainNode.addChild(xNode,xMainNode.positionOfChildNode("b",1)); + t=xMainNode.createXMLString(false); + printf("\nWe moved the node 'c' at the position of the second 'b' tag:\n %s\n",t); + myfree(t); + + /******************************************* + * * + * Example 6: base 64 encoding/decoding * + * * + *******************************************/ + + unsigned char *originalBinaryData=(unsigned char *)"this is binary data."; + XMLParserBase64Tool b64; + t=b64.encode(originalBinaryData,21); + printf( + "\nTo be able to include any binary data into an xml file, some Base64 conversion" + "\nfunctions (binary data <--> ascii/utf8 text) are provided:\n" + " original binary data : %s\n" + " encoded as text : %s\n",originalBinaryData,t); + printf(" decoded as binary again: %s\n",b64.decode(t)); + + /*************************************************************** + * * + * Example 7: demonstration of multi-lingual XML file parsing * + * * + ****************************************************************/ + + printf("\nProcessing XML file containing chinese, cyrilic and other extended characters.\n"); + xMainNode=XMLNode::openFileHelper("utf8test.xml"); + xMainNode.writeToFile("outputTestUTF8.xml"); + printf("... resulting multi-lingual file is 'outputTestUTF8.xml'.\n"); + + /****************************************************** + * * + * Example 8: usage of the "getParentNode()" method * + * * + ******************************************************/ + + printf("\nTwo examples of usage of the \"getParentNode()\" method:\n"); + // let's consider these 2 examples (each example on a separate line): + xMainNode=XMLNode::parseString(t2); xNode=xMainNode.getChildNode(); xNode=xNode.getParentNode(); t=(char*) xNode.getName(); printf(" Ex1: Name of top node; '%s'\n",t?t:"null"); + xMainNode=XMLNode::parseString(t2); xMainNode=xMainNode.getChildNode(); xMainNode=xMainNode.getParentNode(); t=(char*)xMainNode.getName(); printf(" Ex2: Name of top node; '%s'\n",t?t:"null"); + // In these two examples, I create a tree of XMLNode based on the string + // "some textother text". After parsing this string + // I get a XMLNode that represents the tag. Thereafter I "go down" one + // level, using getChildNode: I now have a XMLNode that represents the tag. + // Thereafter I "go up" one level, using getParentNode(): I now have once again + // a XMLNode that represents the tag. Thereafter, I print the name ('a') of + // this last XMLNode. The first example is working as intended (it prints 'a' + // on the screen). However, the second example prints "null" because when we + // did "xMainNode=xMainNode.getChildNode()" we lost all references to the + // top node and thus it's automatically "garbage collected" (free memory). + + return 0; +} + +#ifdef _USE_XMLPARSER_DLL + // We are using the DLL version of the XMLParser library. + // NOTE: With visual studio .NET, you can always use the standard "free()" function: You don't + // need a special "DLL free" version. + void myfree(void *t){free_XMLDLL(t);} +#else + // we are using the normal, classical version of the XMLParser library (directly from C++ sources) + void myfree(void *t){free(t);} +#endif diff --git a/xmlParser/.svn/text-base/xmlTestUnicode.cpp.svn-base b/xmlParser/.svn/text-base/xmlTestUnicode.cpp.svn-base new file mode 100644 index 0000000..64121e5 --- /dev/null +++ b/xmlParser/.svn/text-base/xmlTestUnicode.cpp.svn-base @@ -0,0 +1,213 @@ +/** + **************************************************************************** + *

    XML.c - XML parser test example - wchar_t* version

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifdef WIN32 +#define _CRT_SECURE_NO_DEPRECATE +#endif + +#include +#include "xmlParser.h" + +int main(int argc, char **argv) +{ + /********************************************************************************* + * * + * Example 1: Basic operations to parse and collect data from a XML file * + * * + *********************************************************************************/ + + // this open and parse the XML file: + XMLNode xMainNode=XMLNode::openFileHelper(_T("PMMLModel.xml"),_T("PMML")); + + // this prints "RANK For ": + XMLNode xNode=xMainNode.getChildNode(_T("Header")); + printf("Application Name is: '%S'\n", xNode.getChildNode(_T("Application")).getAttribute(_T("name"))); + + // this prints "Hello World!" + printf("Text inside Header tag is :'%S'\n", xNode.getText()); + + // this gets the number of "NumericPredictor" tags: + xNode=xMainNode.getChildNode(_T("RegressionModel")).getChildNode(_T("RegressionTable")); + int n=xNode.nChildNode(_T("NumericPredictor")); + + // this prints the "coefficient" value for all the "NumericPredictor" tags: + int i,myIterator=0; + for (i=0; i + // Hello "universe". + // ... and we transform it into a standard C string that is printed on screen. + xMainNode=XMLNode::createXMLTopNode(_T("xml"),TRUE); + xMainNode.addAttribute(_T("version"),_T("1.0")); + xNode=xMainNode.addChild(_T("body")); + xNode.addText(_T("Hello \"univ\"!")); + xNode.deleteText(); + xNode.addText(_T("Hello \"universe\"!")); + xNode.addAttribute(_T("color"),_T("#wrongcolor")); + xNode.updateAttribute(_T("#FFFFFF"),NULL,_T("color")); + + t=xMainNode.createXMLString(false); + printf("XMLString created from scratch:\n%S",t); + free(t); + + // we delete some parts: + xNode.deleteAttribute(_T("color")); + t=xMainNode.createXMLString(false); + printf("\nWith the \"color\" attribute deleted:\n%S\n\n",t); + free(t); + + /********************************************************************************************************* + * * + * Example 4: by default, the XML parser is "forgiving" with respect to errors inside XML strings&files * + * * + *********************************************************************************************************/ + + // By default, the XML parser is "forgiving": + // (You can de-activate this behavior: see the header of xmlParser.cpp file) + wchar_t *t2=(wchar_t*)_T("
    some textother text "); + XMLResults xe; + xMainNode=XMLNode::parseString(t2,NULL,&xe); + t=xMainNode.createXMLString(false); + printf("The following XML: %S\n ...is parsed as: %S\nwith the following info: '%S'\n",t2,t?t:_T("(null)"),XMLNode::getError(xe.error)); + free(t); + + /******************************************************* + * * + * Example 5: deleting a part of the tree of XMLNode * + * * + *******************************************************/ + + // this deletes the "other text" subtree part: + xMainNode.getChildNode(_T("b"),1).deleteNodeContent(); + + // To perform the same "delete" as above, we can also do: + // xNode=xMainNode.getChildNode(_T("a")).getChildNode(_T("b"),1); xNode.deleteNodeContent(); xNode=XMLNode::emptyXMLNode; + // If you forget the last part of the delete ("xNode=XMLNode::emptyXMLNode"), then the XMLNode will NOT be deleted: + // As long as there exists a reference to an XMLNode, the smartPointer mechanism prevent the node to be deleted. + + t=xMainNode.createXMLString(false); + printf("\n...with the wrong node deleted: %S\n",t); + free(t); + + /************************************************************************************************************ + * * + * Example 5: inserting (and moving) a new XMLNode in the middle of an already existing XMLNode structure * + * * + ************************************************************************************************************/ + + // This creates a XMLNode 'a' that is "some textother text": + xMainNode=XMLNode::parseString(t2); + // This creates a XMLNode 'c' that is "hello": + xNode=XMLNode::parseString(_T("hello")); + + xMainNode.addChild(xNode,0); + t=xMainNode.createXMLString(false); + printf("\nWe inserted a new node 'c' as the first tag inside 'a':\n %S",t); + free(t); + + xMainNode.addChild(xNode,xMainNode.positionOfChildNode(_T("b"),1)); + t=xMainNode.createXMLString(false); + printf("\nWe moved the node 'c' at the position of the second 'b' tag:\n %S\n",t); + free(t); + + /******************************************* + * * + * Example 6: base 64 encoding/decoding * + * * + *******************************************/ + + unsigned char *originalBinaryData=(unsigned char *)"this is binary data."; + XMLParserBase64Tool b64; + t=b64.encode(originalBinaryData,21); + printf( + "\nTo be able to include any binary data into an xml file, some Base64 conversion" + "\nfunctions (binary data <--> ascii text) are provided:\n" + " original binary data : %s\n" + " encoded as text : %S\n",originalBinaryData,t); + printf(" decoded as binary again: %s\n",b64.decode(t)); + + /****************************************************** + * * + * Example 7: usage of the "getParentNode()" method * + * * + ******************************************************/ + + printf("\nTwo examples of usage of the \"getParentNode()\" method:\n"); + // let's consider these 2 examples (each example on a separate line): + xMainNode=XMLNode::parseString(t2); xNode=xMainNode.getChildNode(); xNode=xNode.getParentNode(); t=(wchar_t*) xNode.getName(); printf(" Ex1: Name of top node; '%S'\n",t?t:_T("null")); + xMainNode=XMLNode::parseString(t2); xMainNode=xMainNode.getChildNode(); xMainNode=xMainNode.getParentNode(); t=(wchar_t*)xMainNode.getName(); printf(" Ex2: Name of top node; '%S'\n",t?t:_T("null")); + // In these two examples, I create a tree of XMLNode based on the string + // "some textother text". After parsing this string + // I get a XMLNode that represents the tag. Thereafter I "go down" one + // level, using getChildNode: I now have a XMLNode that represents the tag. + // Thereafter I "go up" one level, using getParentNode(): I now have once again + // a XMLNode that represents the tag. Thereafter, I print the name ('a') of + // this last XMLNode. The first example is working as intended (it prints 'a' + // on the screen). However, the second example prints "null" because when we + // do xMainNode=xMainNode.getChildNode()" we lost all references to the + // top node and thus it's automatically "garbage collected" (free memory). + + return 0; +} diff --git a/xmlParser/PMMLModel.xml b/xmlParser/PMMLModel.xml new file mode 100644 index 0000000..65aebf3 --- /dev/null +++ b/xmlParser/PMMLModel.xml @@ -0,0 +1,31 @@ + + +
    + Hello World! + +
    + + + + + + + + + + + + + + + + + + This normally generates an unmatched tag error:
    + This normally generates an unknown escape sequence error: ' ' + +]]>
    +
    diff --git a/xmlParser/Readme.txt b/xmlParser/Readme.txt new file mode 100644 index 0000000..a6ff5df --- /dev/null +++ b/xmlParser/Readme.txt @@ -0,0 +1,184 @@ +XMLParser v2.23 +=============== + +The library is composed by two files: "xmlParser.cpp" and "xmlParser.h". +These are the only 2 files that you need when using the library inside your own projects. +All the functions of the library are documented inside the comments of the file "xmlParser.h". + +To use the unicode version of the library, you need to define the "_UNICODE" preprocessor +definition variable (inside your project definition file). + +Some small test examples are also given: see the files "xmlTest.cpp" and "xmlTestUnicode.cpp". +The examples are described inside the html file "xmlParser.html". + +To build the examples: +- linux/unix: type "make" +- solaris: type "make -f makefile.solaris" +- windows: Visual Studio: double-click on xmlParser.dsw + (under Visual Studio .NET, the .dsp and .dsw files will be automatically converted to .vcproj and .sln files) + +In order to build the examples you need some project files: +- linux/unix: makefile +- solaris: makefile.solaris +- windows: Visual Studio: *.dsp, xmlParser.dsw + +WINDOWS: + Inside Visual C++, the "debug versions" of the memory allocation functions are + very slow: Do not forget to compile in "release mode" to get maximum speed. + When I have to debug a software that is using the XMLParser Library, it's usually + a nightmare because the library is sooOOOoooo slow in debug mode. To solve this + problem, during all the debugging session, I use a very fast DLL version of the + XMLParser Library (the DLL is compiled in release mode). Using the DLL version of + the XMLParser Library allows me to have lightening XML parsing speed even in debug! + Other than that, the DLL version is useless: In the release version of my tool, + I always use the normal, ".cpp"-based, XMLParser Library. +LINUX: + The speed of the debug version of the XMLParser library is tolerable. + +Change Log +---------- + +* V1.00: February 20, 2002: initial version. +* V1.01: February 13, 2005: first bug-free release. +* V1.02: March 6, 2005: 2 minor changes: + o "parseString" function declaration changed to allow easy parsing from memory buffer + o Minor changes to allow easy compilation under old GCC under QNX +* V1.03: April 2,2005: 3 minors changes: + o When parsing from a user-supplied memory buffer, the library was previously modifying the content of the memory buffer. This is not the case anymore + o Non-unicode Windows version: You can now work with unicode XML files: They are converted to ANSI charset before being processed + o Added Visual Studio 6.0 project files +* V1.04: May 16, 2005: 3 minors changes, 1 bug fix: + o FIX: When creating an xml string with no formatting, the formatting did not work always (due to an un-initialized variable) + o Improved parsing speed (try increasing the constant "memoryIncrease" if you need more speed) + o Minor changes to allow easy compilation under MSYS/MINGW under Windows + o Added more character entities +* V1.05: May 31, 2005: 2 minors changes: + o Changed some "char *" to "const char *" + o Improved robustness against badly formed xml strings +* V1.06: July 11, 2005: 1 change, 1 bug fix: + o FIX: Some character entities were not previously correctly processed. + o Major speed improvement. The library is now at least 10 times faster. (Try increasing the constant "memoryIncrease" if you need more speed) + o moved the log file out of the HTML file +* V1.07: July 25, 2005: 1 change + o Added a pre-compiler directive named "APPROXIMATE_PARSING". See header of xmlParser.cpp for more info. +* V1.08: September 8,2005: 1 bug fix: + o FIX: on special cases, non-matching quotes were causing malfunction +* V1.09: November 22, 2005: 1 addition + o Added some new functions to be able to easily create a XML structure in memory +* V1.10: December 29, 2005: 2 minor change. + o Changed some formatting when rendering a XML tree to a string + o added the STRICT_PARSING option +* V1.11: December 31, 2005: 1 bug fix: + o FIX: reduced memory consumption. +* V1.12: January 4, 2006: 1 addition. + o added the function "removeNodeContent" to delete a subtree +* V1.13: February 25, 2006: 1 addition. + o added a primitive UNICODE support under linux (thanks to Sunny Bains) +* V1.14: April 24, 2006: 1 bug fix: + o FIX: memory allocation errors when the XML tree is created from scratch using "addChild" method. +* V1.15: April 28, 2006: 2 additions + o added some methods to delete attributes,clearTags and textFields from an XMLNode tree. + o added the "addChild(XMLNode x)" method +* V1.16: May 17, 2006: 1 bug fix: + o FIX: memory allocation errors under linux +* V1.17: May 28, 2006: 1 bug fix, 2 additions: + o FIX: character entities not always processed inside text block + o position of the eXMLErrorMissingEndTag error is computed + o added the eXMLErrorUnknownEscapeSequence +* V1.18: June 8, 2006: 1 bug fix, minors changes + o FIX: the 'eXMLErrorFirstTagNotFound' error was not reported. + o changed license to BSD - added some examples of usage. +* V1.19: July 4, 2006: 3 addition. + o added automatic convertion from/to UNICODE/ANSI in linux (this was already done in windows) + o added getChildNodeWithAttribute() + o added support for SOLARIS unicode (Thanks to Joseph Vijay!). + o added support for 32 bit unicode (so that the library works on Redhat Enterprise v4 EMT64). +* V1.20: July 22, 2006: 13 additions. + o added 9 "update" functions (like updateAttribute(LPCTSTR lpszNewValue, LPCTSTR lpszNewName=NULL,LPCTSTR lpszOldName);) + o added 4 functions that allows you to include any binary data (images, sounds,...) into an XML file or string using "Base64 encoding". +* V2.01: July 24, 2006: 1 major change, 2 minor change, 3 additions + o added extended support for strict UTF-8 character encoding (The characters in UTF-8 have different lengths (from 1 byte to 4 bytes)). + Chinese, cyrilic and other extended characters are now processed successfully. + o new character entities: This is now equivalent: 'A' or 'A' or 'A' + (The ascci code of 'A' is 65 in decimal and 0x41 in hexadecimal). + o added a function that try to guess if the encoding is UTF-8. + o the code has been modified in order to allow easy inclusion of new entities and new clearTags (minor change). + o the "updateAttribute" function is now adding a new attribute if the one to update is missing. + (same behavior for "updateText" and "updateClear"). + o no more "stringDup" required for functions like "addText", "addAttribute",... + The old behavior is still accessible through functions like "addText_WOSD", "addAttribute_WOSD",... + ("_WSOD" stands for "WithOut StringDup"). + This change greatly simplifies the user's code (major update). + Unfortunately, old user's code must be updated to work with the new version. + Fortunately, all the user's code used to READ the content of an XML file is left unchanged: + Only the "creation of XML" and the "update of XML" user's code require a little updating work. +* V2.02: July 25, 2006: 1 minor change + o changed the function "createXMLTopNode()" to "createXMLTopNode(LPCTSTR lpszName, int isDeclaration=FALSE);". +* V2.03: July 28, 2006: 1 minor change + o changed LPTSTR to XMLSTR to avoid name-clash with the definitions in +* V2.04: August 6, 2006: 1 addition + o added one heuristic inside the function "guessUTF8ParsingParameterValue". +* V2.05: August 15, 2006: 1 addition + o now displays the error message inside the method "openFileHelper" in a MessageBox window (WIN32 only). +* V2.06: August 16, 2006: 2 additions + o added the method XMLNode::writeToFile to make it easier to write the content of an XMLNode to a file. + o added support for Byte-order marks (or BOM). +* V2.07: August 22, 2006: 1 additions + o added _XMLUNICODE preprocessor variable to make it easy to force the library into either utf16-mode or utf8-mode. +* V2.08: August 22, 2006: 1 bug fix + o inside the tag content, the ">" and "/>" strings are not reported as errors anymore. +* V2.09: August 31, 2006: 1 bug fix + o the character entities of type K were not working properly (thanks to Jos� Carlos Medeiros for notifying me!). +* V2.10: September 21, 2006: 1 bug fix + o two consecutive calls to the deleteNodeContent() function on the same node has now no effect (as it should be). + (Thanks to Hartmut Lemmel for notifying me!) + o improved compatibility to Borland C++ +* V2.11: October 24, 2006: 3 additions, 1 bug fix. + o added the function getParentNode(). Thanks to Jakub Siudzinski for notifying me a good way to do it easily. + o added one parameter to the deleteNodeContent() function to force the deletion of the underlying XMLNode tree. + This will release all the memory occupied by the XMLNode tree even if there still exist references to some part + of the tree. + o changed the usage of the base64Encode() function to reduce the number of malloc's (speed increase). + o FIX: when parsing an XML string, if the TOP tag has no closing tag, the library now correctly + reports "eXMLErrorMissingEndTag". +* V2.12: October 25, 2006: 2 additions + o refactoring of the Base64 functions to make things easier to use + o added the _XMLPARSER_NO_MESSAGEBOX_ preprocessor variable (see header of xmlParser.cpp for explanation) +* V2.13: October 31, 2006: 1 minor change, 1 bug fix + o changed the signature of _strnicmp to allow easy compilation under linux . + o FIX: size of buffer for the convertion from ascii/utf8 to utf-16 was incorrect. +* V2.14: November 13, 2006: 1 minor change, 1 bug fix + o changed the parseFile,openFileHelper,writeToFile functions so that the filename parameter is widechar when UNICODE=1 + o fixed a bug in openFileHelper when sizeof(wchar_t)=4 +* V2.15: December 22, 2006: 2 additions + o added the parameter 'pos' to the addChild,addText,addClear methods to allow insertion of new components anywhere in an already existing XMLNode structure + o added 'postionOf*' methods. +* V2.16: December 27, 2006: 1 minor change + o removed the un-necessary method "firstPosition()" & some code re-structuration. +* V2.17: January 9, 2007: 1 addition, 1 minor change + o added the preprocessor variable "XML_NO_WIDE_CHAR" to allow easy compilation on exotic compilers + o added the "const" method qualifier to some methods. +* V2.18: January 15, 2007: 1 bug fix + o FIX: addChild(XMLNode x,int pos) was sometime inserting at the wrong position when pos!=-1 +* V2.19: January 30, 2007: 1 bug fix, 3 additions. + o FIX: Unknown Character Entities are now always reported correctly. Thanks to Vincent Vanhoucke. + o The XML specification indicates that no white spaces should be lost when parsing the file. This is now possible setting the + new global parameter "dropWhiteSpaces" to false. + o The library now works under Windows CE 4.2, Windows Mobile (PPC) 2003(5) (xscale) and Mac OS X Tiger. Thanks to Zdenek Nemec. + o The " XML.c - implementation file for basic XML parser written in ANSI C++ +# * for portability. +# * It works by using recursion and a node tree for breaking down the elements +# * of an XML document.

    +# * +# * @version V2.23 +# * +# * @author Frank Vanden Berghen +# * based on original implementation by Martyn C Brown +# * +# * BSD license: +# * Copyright (c) 2002, Frank Vanden Berghen +# * All rights reserved. +# * Redistribution and use in source and binary forms, with or without +# * modification, are permitted provided that the following conditions are met: +# * +# * * Redistributions of source code must retain the above copyright +# * notice, this list of conditions and the following disclaimer. +# * * Redistributions in binary form must reproduce the above copyright +# * notice, this list of conditions and the following disclaimer in the +# * documentation and/or other materials provided with the distribution. +# * * Neither the name of the Frank Vanden Berghen nor the +# * names of its contributors may be used to endorse or promote products +# * derived from this software without specific prior written permission. +# * +# * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +# * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +# * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# * +# **************************************************************************** +# +#makefile for the xmlParser library +# +all : xmlEasyTest xmlTest xmlTestUnicode + +#GPP=/opt/intel/cc/9.1.039/bin/icpc +GPP=g++ + +xmlEasyTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -Wall -DXML_NO_WIDE_CHAR -o xmlEasyTest \ + xmlParser.cpp xmlTest.cpp +xmlTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -Wall -o xmlTest \ + xmlParser.cpp xmlTest.cpp +xmlTestUnicode : xmlParser.cpp xmlParser.h xmlTestUnicode.cpp + $(GPP) -g -Wall -D_UNICODE -DUNICODE -o xmlTestUnicode \ + xmlParser.cpp xmlTestUnicode.cpp + +clean: + -@rm xmlEasyTest >/dev/null 2>/dev/null + -@rm xmlTest >/dev/null 2>/dev/null + -@rm xmlTestUnicode >/dev/null 2>/dev/null + -@rm test.xml >/dev/null 2>/dev/null + -@rm testUnicode.xml >/dev/null 2>/dev/null + -@rm outputTestUTF8.xml >/dev/null 2>/dev/null + -@rm *~ >/dev/null 2>/dev/null + @echo "Clean OK." diff --git a/xmlParser/makefile.solaris b/xmlParser/makefile.solaris new file mode 100644 index 0000000..d14c2ef --- /dev/null +++ b/xmlParser/makefile.solaris @@ -0,0 +1,65 @@ +# * +# **************************************************************************** +# *

    XML.c - implementation file for basic XML parser written in ANSI C++ +# * for portability. +# * It works by using recursion and a node tree for breaking down the elements +# * of an XML document.

    +# * +# * @version V2.23 +# * +# * @author Frank Vanden Berghen +# * based on original implementation by Martyn C Brown +# * +# * BSD license: +# * Copyright (c) 2002, Frank Vanden Berghen +# * All rights reserved. +# * Redistribution and use in source and binary forms, with or without +# * modification, are permitted provided that the following conditions are met: +# * +# * * Redistributions of source code must retain the above copyright +# * notice, this list of conditions and the following disclaimer. +# * * Redistributions in binary form must reproduce the above copyright +# * notice, this list of conditions and the following disclaimer in the +# * documentation and/or other materials provided with the distribution. +# * * Neither the name of the Frank Vanden Berghen nor the +# * names of its contributors may be used to endorse or promote products +# * derived from this software without specific prior written permission. +# * +# * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +# * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +# * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# * +# **************************************************************************** +# +#makefile for the xmlParser library +# +all : xmlEasyTest xmlTest xmlTestUnicode + +GPP=CC + +xmlEasyTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -DXML_NO_WIDE_CHAR -o xmlEasyTest \ + xmlParser.cpp xmlTest.cpp +xmlTest : xmlParser.cpp xmlParser.h xmlTest.cpp + $(GPP) -g -o xmlTest \ + xmlParser.cpp xmlTest.cpp +xmlTestUnicode : xmlParser.cpp xmlParser.h xmlTestUnicode.cpp + $(GPP) -g -D_UNICODE -DUNICODE -o xmlTestUnicode -lw \ + xmlParser.cpp xmlTestUnicode.cpp + +clean: + -@rm xmlEasyTest >/dev/null 2>/dev/null + -@rm xmlTest >/dev/null 2>/dev/null + -@rm xmlTestUnicode >/dev/null 2>/dev/null + -@rm test.xml >/dev/null 2>/dev/null + -@rm testUnicode.xml >/dev/null 2>/dev/null + -@rm outputTestUTF8.xml >/dev/null 2>/dev/null + -@rm *~ >/dev/null 2>/dev/null + @echo "Clean OK." diff --git a/xmlParser/outputTestUTF8.xml b/xmlParser/outputTestUTF8.xml new file mode 100644 index 0000000..fc1ac30 --- /dev/null +++ b/xmlParser/outputTestUTF8.xml @@ -0,0 +1,27 @@ + + + + The world has many languages + + + В мире множество языков + + + el mundo tiene muchos idiomas + + + 世界有很多语言 + + <Русский имя="name" значение="value"> + <Мир> + + <汉语 名字="name" 价值="value"> + 世界有很多语言 + + + "MetAl!" + + <ä> + Umlaut Element + + diff --git a/xmlParser/test.xml b/xmlParser/test.xml new file mode 100644 index 0000000..5c6edb2 --- /dev/null +++ b/xmlParser/test.xml @@ -0,0 +1,4 @@ + + + + diff --git a/xmlParser/utf8test.xml b/xmlParser/utf8test.xml new file mode 100644 index 0000000..ab1e01d --- /dev/null +++ b/xmlParser/utf8test.xml @@ -0,0 +1,11 @@ + + + The world has many languages + В мире множество языков + el mundo tiene muchos idiomas + 世界有很多语言 + <Русский имя="name" значение="value"><Мир> + <汉语 名字="name" 价值="value">世界有很多语言 + "MetAl!" + <ä>Umlaut Element + diff --git a/xmlParser/xmlParser.cpp b/xmlParser/xmlParser.cpp new file mode 100644 index 0000000..9e369ec --- /dev/null +++ b/xmlParser/xmlParser.cpp @@ -0,0 +1,2594 @@ +/** + **************************************************************************** + *

    XML.c - implementation file for basic XML parser written in ANSI C++ + * for portability. It works by using recursion and a node tree for breaking + * down the elements of an XML document.

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * NOTE: + * + * If you add "#define STRICT_PARSING", on the first line of this file + * the parser will see the following XML-stream: + *
    some textother text + * as an error. Otherwise, this tring will be equivalent to: + * some textother text + * + * NOTE: + * + * If you add "#define APPROXIMATE_PARSING" on the first line of this file + * the parser will see the following XML-stream: + * + * + * + * as equivalent to the following XML-stream: + * + * + * + * This can be useful for badly-formed XML-streams but prevent the use + * of the following XML-stream (problem is: tags at contiguous levels + * have the same names): + * + * + * + * + * + * + * NOTE: + * + * If you add "#define _XMLPARSER_NO_MESSAGEBOX_" on the first line of this file + * the "openFileHelper" function will always display error messages inside the + * console instead of inside a message-box-window. Message-box-windows are + * available on windows 9x/NT/2000/XP/Vista only. + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifndef _CRT_SECURE_NO_DEPRECATE +#define _CRT_SECURE_NO_DEPRECATE +#endif +#include "xmlParser.h" +#ifdef _XMLWINDOWS +//#ifdef _DEBUG +//#define _CRTDBG_MAP_ALLOC +//#include +//#endif +#define WIN32_LEAN_AND_MEAN +#include // to have IsTextUnicode, MultiByteToWideChar, WideCharToMultiByte to handle unicode files + // to have "MessageBoxA" to display error messages for openFilHelper +#endif + +#include +#include +#include +#include +#include + +XMLCSTR XMLNode::getVersion() { return _T("v2.23"); } +void free_XMLDLL(void *t){free(t);} + +static char strictUTF8Parsing=1, guessUnicodeChars=1, dropWhiteSpace=1; + +inline int mmin( const int t1, const int t2 ) { return t1 < t2 ? t1 : t2; } + +// You can modify the initialization of the variable "XMLClearTags" below +// to change the clearTags that are currently recognized by the library. +// The number on the second columns is the length of the string inside the +// first column. The "") }, + { _T("") }, + { _T("
    ")    ,5,  _T("
    ") }, + { _T("")}, + { _T("") }, + { NULL ,0, NULL } +}; +ALLXMLClearTag* XMLNode::getClearTagTable() { return XMLClearTags; } + +// You can modify the initialization of the variable "XMLEntities" below +// to change the character entities that are currently recognized by the library. +// The number on the second columns is the length of the string inside the +// first column. Additionally, the syntaxes " " and " " are recognized. +typedef struct { XMLCSTR s; int l; XMLCHAR c;} XMLCharacterEntity; +static XMLCharacterEntity XMLEntities[] = +{ + { _T("&" ), 5, _T('&' )}, + { _T("<" ), 4, _T('<' )}, + { _T(">" ), 4, _T('>' )}, + { _T("""), 6, _T('\"')}, + { _T("'"), 6, _T('\'')}, + { NULL , 0, '\0' } +}; + +// When rendering the XMLNode to a string (using the "createXMLString" function), +// you can ask for a beautiful formatting. This formatting is using the +// following indentation character: +#define INDENTCHAR _T('\t') + +// The following function parses the XML errors into a user friendly string. +// You can edit this to change the output language of the library to something else. +XMLCSTR XMLNode::getError(XMLError xerror) +{ + switch (xerror) + { + case eXMLErrorNone: return _T("No error"); + case eXMLErrorMissingEndTag: return _T("Warning: Unmatched end tag"); + case eXMLErrorEmpty: return _T("Error: No XML data"); + case eXMLErrorFirstNotStartTag: return _T("Error: First token not start tag"); + case eXMLErrorMissingTagName: return _T("Error: Missing start tag name"); + case eXMLErrorMissingEndTagName: return _T("Error: Missing end tag name"); + case eXMLErrorNoMatchingQuote: return _T("Error: Unmatched quote"); + case eXMLErrorUnmatchedEndTag: return _T("Error: Unmatched end tag"); + case eXMLErrorUnmatchedEndClearTag: return _T("Error: Unmatched clear tag end"); + case eXMLErrorUnexpectedToken: return _T("Error: Unexpected token found"); + case eXMLErrorInvalidTag: return _T("Error: Invalid tag found"); + case eXMLErrorNoElements: return _T("Error: No elements found"); + case eXMLErrorFileNotFound: return _T("Error: File not found"); + case eXMLErrorFirstTagNotFound: return _T("Error: First Tag not found"); + case eXMLErrorUnknownCharacterEntity:return _T("Error: Unknown character entity"); + case eXMLErrorCharConversionError: return _T("Error: unable to convert between UNICODE and MultiByte chars"); + case eXMLErrorCannotOpenWriteFile: return _T("Error: unable to open file for writing"); + case eXMLErrorCannotWriteFile: return _T("Error: cannot write into file"); + + case eXMLErrorBase64DataSizeIsNotMultipleOf4: return _T("Warning: Base64-string length is not a multiple of 4"); + case eXMLErrorBase64DecodeTruncatedData: return _T("Warning: Base64-string is truncated"); + case eXMLErrorBase64DecodeIllegalCharacter: return _T("Error: Base64-string contains an illegal character"); + case eXMLErrorBase64DecodeBufferTooSmall: return _T("Error: Base64 decode output buffer is too small"); + }; + return _T("Unknown"); +} + +// Here is an abstraction layer to access some common string manipulation functions. +// The abstraction layer is currently working for gcc, Microsoft Visual Studio 6.0, +// Microsoft Visual Studio .NET, CC (sun compiler) and Borland C++. +// If you plan to "port" the library to a new system/compiler, all you have to do is +// to edit the following lines. +#ifdef XML_NO_WIDE_CHAR +char myIsTextUnicode(const void *b, int len) { return FALSE; } +#else + #if defined (UNDER_CE) || !defined(WIN32) + char myIsTextUnicode(const void *b, int len) // inspired by the Wine API: RtlIsTextUnicode + { +#ifdef sun + // for SPARC processors: wchar_t* buffers must always be alligned, otherwise it's a char* buffer. + if ((((unsigned long)b)%sizeof(wchar_t))!=0) return FALSE; +#endif + const wchar_t *s=(const wchar_t*)b; + + // buffer too small: + if (len<(int)sizeof(wchar_t)) return FALSE; + + // odd length test + if (len&1) return FALSE; + + /* only checks the first 256 characters */ + len=mmin(256,len/sizeof(wchar_t)); + + // Check for the special byte order: + if (*s == 0xFFFE) return FALSE; // IS_TEXT_UNICODE_REVERSE_SIGNATURE; + if (*s == 0xFEFF) return TRUE; // IS_TEXT_UNICODE_SIGNATURE + + // checks for ASCII characters in the UNICODE stream + int i,stats=0; + for (i=0; ilen/2) return TRUE; + + // Check for UNICODE NULL chars + for (i=0; i + int _tcsnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return wsncasecmp(c1,c2,l);} + int _tcsicmp(XMLCSTR c1, XMLCSTR c2) { return wscasecmp(c1,c2); } + #else + // for gcc + int _tcsnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return wcsncasecmp(c1,c2,l);} + int _tcsicmp(XMLCSTR c1, XMLCSTR c2) { return wcscasecmp(c1,c2); } + #endif + XMLSTR _tcsstr(XMLCSTR c1, XMLCSTR c2) { return (XMLSTR)wcsstr(c1,c2); } + XMLSTR _tcscpy(XMLSTR c1, XMLCSTR c2) { return (XMLSTR)wcscpy(c1,c2); } + FILE *_tfopen(XMLCSTR filename,XMLCSTR mode) + { + char *filenameAscii=myWideCharToMultiByte(filename,0); + FILE *f; + if (mode[0]==_T('r')) f=fopen(filenameAscii,"rb"); + else f=fopen(filenameAscii,"wb"); + free(filenameAscii); + return f; + } + #else + FILE *_tfopen(XMLCSTR filename,XMLCSTR mode) { return fopen(filename,mode); } + int _tcslen(XMLCSTR c) { return strlen(c); } + int _tcsnicmp(XMLCSTR c1, XMLCSTR c2, int l) { return strncasecmp(c1,c2,l);} + int _tcsicmp(XMLCSTR c1, XMLCSTR c2) { return strcasecmp(c1,c2); } + XMLSTR _tcsstr(XMLCSTR c1, XMLCSTR c2) { return (XMLSTR)strstr(c1,c2); } + XMLSTR _tcscpy(XMLSTR c1, XMLCSTR c2) { return (XMLSTR)strcpy(c1,c2); } + #endif + int _strnicmp(const char *c1,const char *c2, int l) { return strncasecmp(c1,c2,l);} +#endif + +///////////////////////////////////////////////////////////////////////// +// Here start the core implementation of the XMLParser library // +///////////////////////////////////////////////////////////////////////// + +// You should normally not change anything below this point. +// For your own information, I suggest that you read the openFileHelper below: +XMLNode XMLNode::openFileHelper(XMLCSTR filename, XMLCSTR tag) +{ + // guess the value of the global parameter "strictUTF8Parsing" + // (the guess is based on the first 200 bytes of the file). + FILE *f=_tfopen(filename,_T("rb")); + if (f) + { + char bb[205]; + int l=(int)fread(bb,1,200,f); + setGlobalOptions(guessUnicodeChars,guessUTF8ParsingParameterValue(bb,l),dropWhiteSpace); + fclose(f); + } + + // parse the file + XMLResults pResults; + XMLNode xnode=XMLNode::parseFile(filename,tag,&pResults); + + // display error message (if any) + if (pResults.error != eXMLErrorNone) + { + // create message + char message[2000],*s1=(char*)"",*s3=(char*)""; XMLCSTR s2=_T(""); + if (pResults.error==eXMLErrorFirstTagNotFound) { s1=(char*)"First Tag should be '"; s2=tag; s3=(char*)"'.\n"; } + sprintf(message, +#ifdef _XMLUNICODE + "XML Parsing error inside file '%S'.\n%S\nAt line %i, column %i.\n%s%S%s" +#else + "XML Parsing error inside file '%s'.\n%s\nAt line %i, column %i.\n%s%s%s" +#endif + ,filename,XMLNode::getError(pResults.error),pResults.nLine,pResults.nColumn,s1,s2,s3); + + // display message +#if defined(WIN32) && !defined(UNDER_CE) && !defined(_XMLPARSER_NO_MESSAGEBOX_) + MessageBoxA(NULL,message,"XML Parsing error",MB_OK|MB_ICONERROR|MB_TOPMOST); +#else + printf("%s",message); +#endif + exit(255); + } + return xnode; +} + +#ifndef _XMLUNICODE +// If "strictUTF8Parsing=0" then we assume that all characters have the same length of 1 byte. +// If "strictUTF8Parsing=1" then the characters have different lengths (from 1 byte to 4 bytes). +// This table is used as lookup-table to know the length of a character (in byte) based on the +// content of the first byte of the character. +// (note: if you modify this, you must always have XML_utf8ByteTable[0]=0 ). +static const char XML_utf8ByteTable[256] = +{ + // 0 1 2 3 4 5 6 7 8 9 a b c d e f + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x00 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x10 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x20 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x30 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x40 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x50 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x60 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x70End of ASCII range + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x80 0x80 to 0xc1 invalid + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0x90 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xa0 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,// 0xb0 + 1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xc0 0xc2 to 0xdf 2 byte + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,// 0xd0 + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,// 0xe0 0xe0 to 0xef 3 byte + 4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid +}; +static const char XML_asciiByteTable[256] = +{ + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +}; +static const char *XML_ByteTable=(const char *)XML_utf8ByteTable; // the default is "strictUTF8Parsing=1" +#endif + +XMLError XMLNode::writeToFile(XMLCSTR filename, const char *encoding, char nFormat) const +{ + int i; + XMLSTR t=createXMLString(nFormat,&i); + FILE *f=_tfopen(filename,_T("wb")); + if (!f) return eXMLErrorCannotOpenWriteFile; +#ifdef _XMLUNICODE + unsigned char h[2]={ 0xFF, 0xFE }; + if (!fwrite(h,2,1,f)) return eXMLErrorCannotWriteFile; + if (!isDeclaration()) + { + if (!fwrite(_T("\n"),sizeof(wchar_t)*40,1,f)) + return eXMLErrorCannotWriteFile; + } +#else + if (!isDeclaration()) + { + if ((!encoding)||(XML_ByteTable==XML_utf8ByteTable)) + { + // header so that windows recognize the file as UTF-8: + unsigned char h[3]={0xEF,0xBB,0xBF}; + if (!fwrite(h,3,1,f)) return eXMLErrorCannotWriteFile; + if (!fwrite("\n",39,1,f)) return eXMLErrorCannotWriteFile; + } + else + if (fprintf(f,"\n",encoding)<0) return eXMLErrorCannotWriteFile; + } else + { + if (XML_ByteTable==XML_utf8ByteTable) // test if strictUTF8Parsing==1" + { + unsigned char h[3]={0xEF,0xBB,0xBF}; if (!fwrite(h,3,1,f)) return eXMLErrorCannotWriteFile; + } + } +#endif + if (!fwrite(t,sizeof(XMLCHAR)*i,1,f)) return eXMLErrorCannotWriteFile; + if (fclose(f)!=0) return eXMLErrorCannotWriteFile; + free(t); + return eXMLErrorNone; +} + +// Duplicate a given string. +XMLSTR stringDup(XMLCSTR lpszData, int cbData) +{ + if (lpszData==NULL) return NULL; + + XMLSTR lpszNew; + if (cbData==0) cbData=(int)_tcslen(lpszData); + lpszNew = (XMLSTR)malloc((cbData+1) * sizeof(XMLCHAR)); + if (lpszNew) + { + memcpy(lpszNew, lpszData, (cbData) * sizeof(XMLCHAR)); + lpszNew[cbData] = (XMLCHAR)NULL; + } + return lpszNew; +} + +XMLNode XMLNode::emptyXMLNode; +XMLClear XMLNode::emptyXMLClear={ NULL, NULL, NULL}; +XMLAttribute XMLNode::emptyXMLAttribute={ NULL, NULL}; + +// Enumeration used to decipher what type a token is +typedef enum XMLTokenTypeTag +{ + eTokenText = 0, + eTokenQuotedText, + eTokenTagStart, /* "<" */ + eTokenTagEnd, /* "" */ + eTokenEquals, /* "=" */ + eTokenDeclaration, /* "" */ + eTokenClear, + eTokenError +} XMLTokenType; + +// Main structure used for parsing XML +typedef struct XML +{ + XMLCSTR lpXML; + XMLCSTR lpszText; + int nIndex,nIndexMissigEndTag; + enum XMLError error; + XMLCSTR lpEndTag; + int cbEndTag; + XMLCSTR lpNewElement; + int cbNewElement; + int nFirst; +} XML; + +typedef struct +{ + ALLXMLClearTag *pClr; + XMLCSTR pStr; +} NextToken; + +// Enumeration used when parsing attributes +typedef enum Attrib +{ + eAttribName = 0, + eAttribEquals, + eAttribValue +} Attrib; + +// Enumeration used when parsing elements to dictate whether we are currently +// inside a tag +typedef enum Status +{ + eInsideTag = 0, + eOutsideTag +} Status; + +// private (used while rendering): +XMLSTR toXMLString(XMLSTR dest,XMLCSTR source) +{ + XMLSTR dd=dest; + XMLCHAR ch; + XMLCharacterEntity *entity; + while ((ch=*source)) + { + entity=XMLEntities; + do + { + if (ch==entity->c) {_tcscpy(dest,entity->s); dest+=entity->l; source++; goto out_of_loop1; } + entity++; + } while(entity->s); +#ifdef _XMLUNICODE + *(dest++)=*(source++); +#else + switch(XML_ByteTable[(unsigned char)ch]) + { + case 4: *(dest++)=*(source++); + case 3: *(dest++)=*(source++); + case 2: *(dest++)=*(source++); + case 1: *(dest++)=*(source++); + } +#endif +out_of_loop1: + ; + } + *dest=0; + return dd; +} + +// private (used while rendering): +int lengthXMLString(XMLCSTR source) +{ + int r=0; + XMLCharacterEntity *entity; + XMLCHAR ch; + while ((ch=*source)) + { + entity=XMLEntities; + do + { + if (ch==entity->c) { r+=entity->l; source++; goto out_of_loop1; } + entity++; + } while(entity->s); +#ifdef _XMLUNICODE + r++; source++; +#else + ch=XML_ByteTable[(unsigned char)ch]; r+=ch; source+=ch; +#endif +out_of_loop1: + ; + } + return r; +} + +XMLSTR toXMLString(XMLCSTR source) +{ + XMLSTR dest=(XMLSTR)malloc((lengthXMLString(source)+1)*sizeof(XMLCHAR)); + return toXMLString(dest,source); +} + +XMLSTR toXMLStringFast(XMLSTR *dest,int *destSz, XMLCSTR source) +{ + int l=lengthXMLString(source)+1; + if (l>*destSz) { *destSz=l; *dest=(XMLSTR)realloc(*dest,l*sizeof(XMLCHAR)); } + return toXMLString(*dest,source); +} + +// private: +XMLSTR fromXMLString(XMLCSTR s, int lo, XML *pXML) +{ + // This function is the opposite of the function "toXMLString". It decodes the escape + // sequences &, ", ', <, > and replace them by the characters + // &,",',<,>. This function is used internally by the XML Parser. All the calls to + // the XML library will always gives you back "decoded" strings. + // + // in: string (s) and length (lo) of string + // out: new allocated string converted from xml + if (!s) return NULL; + + int ll=0,j; + XMLSTR d; + XMLCSTR ss=s; + XMLCharacterEntity *entity; + while ((lo>0)&&(*s)) + { + if (*s==_T('&')) + { + if ((lo>2)&&(s[1]==_T('#'))) + { + s+=2; lo-=2; + if ((*s==_T('X'))||(*s==_T('x'))) { s++; lo--; } + while ((*s)&&(*s!=_T(';'))&&((lo--)>0)) s++; + if (*s!=_T(';')) + { + pXML->error=eXMLErrorUnknownCharacterEntity; + return NULL; + } + s++; lo--; + } else + { + entity=XMLEntities; + do + { + if ((lo>=entity->l)&&(_tcsnicmp(s,entity->s,entity->l)==0)) { s+=entity->l; lo-=entity->l; break; } + entity++; + } while(entity->s); + if (!entity->s) + { + pXML->error=eXMLErrorUnknownCharacterEntity; + return NULL; + } + } + } else + { +#ifdef _XMLUNICODE + s++; lo--; +#else + j=XML_ByteTable[(unsigned char)*s]; s+=j; lo-=j; ll+=j-1; +#endif + } + ll++; + } + + d=(XMLSTR)malloc((ll+1)*sizeof(XMLCHAR)); + s=d; + while (ll-->0) + { + if (*ss==_T('&')) + { + if (ss[1]==_T('#')) + { + ss+=2; j=0; + if ((*ss==_T('X'))||(*ss==_T('x'))) + { + ss++; + while (*ss!=_T(';')) + { + if ((*ss>=_T('0'))&&(*ss<=_T('9'))) j=(j<<4)+*ss-_T('0'); + else if ((*ss>=_T('A'))&&(*ss<=_T('F'))) j=(j<<4)+*ss-_T('A')+10; + else if ((*ss>=_T('a'))&&(*ss<=_T('f'))) j=(j<<4)+*ss-_T('a')+10; + else { free((void*)s); pXML->error=eXMLErrorUnknownCharacterEntity;return NULL;} + ss++; + } + } else + { + while (*ss!=_T(';')) + { + if ((*ss>=_T('0'))&&(*ss<=_T('9'))) j=(j*10)+*ss-_T('0'); + else { free((void*)s); pXML->error=eXMLErrorUnknownCharacterEntity;return NULL;} + ss++; + } + } + (*d++)=(XMLCHAR)j; ss++; + } else + { + entity=XMLEntities; + do + { + if (_tcsnicmp(ss,entity->s,entity->l)==0) { *(d++)=entity->c; ss+=entity->l; break; } + entity++; + } while(entity->s); + } + } else + { +#ifdef _XMLUNICODE + *(d++)=*(ss++); +#else + switch(XML_ByteTable[(unsigned char)*ss]) + { + case 4: *(d++)=*(ss++); ll--; + case 3: *(d++)=*(ss++); ll--; + case 2: *(d++)=*(ss++); ll--; + case 1: *(d++)=*(ss++); + } +#endif + } + } + *d=0; + return (XMLSTR)s; +} + +#define XML_isSPACECHAR(ch) ((ch==_T('\n'))||(ch==_T(' '))||(ch== _T('\t'))||(ch==_T('\r'))) + +// private: +char myTagCompare(XMLCSTR cclose, XMLCSTR copen) +// !!!! WARNING strange convention&: +// return 0 if equals +// return 1 if different +{ + if (!cclose) return 1; + int l=(int)_tcslen(cclose); + if (_tcsnicmp(cclose, copen, l)!=0) return 1; + const XMLCHAR c=copen[l]; + if (XML_isSPACECHAR(c)|| + (c==_T('/' ))|| + (c==_T('<' ))|| + (c==_T('>' ))|| + (c==_T('=' ))) return 0; + return 1; +} + +// Obtain the next character from the string. +static inline XMLCHAR getNextChar(XML *pXML) +{ + XMLCHAR ch = pXML->lpXML[pXML->nIndex]; +#ifdef _XMLUNICODE + if (ch!=0) pXML->nIndex++; +#else + pXML->nIndex+=XML_ByteTable[(unsigned char)ch]; +#endif + return ch; +} + +// Find the next token in a string. +// pcbToken contains the number of characters that have been read. +static NextToken GetNextToken(XML *pXML, int *pcbToken, enum XMLTokenTypeTag *pType) +{ + NextToken result; + XMLCHAR ch; + XMLCHAR chTemp; + int indexStart,nFoundMatch,nIsText=FALSE; + result.pClr=NULL; // prevent warning + + // Find next non-white space character + do { indexStart=pXML->nIndex; ch=getNextChar(pXML); } while XML_isSPACECHAR(ch); + + if (ch) + { + // Cache the current string pointer + result.pStr = &pXML->lpXML[indexStart]; + + // First check whether the token is in the clear tag list (meaning it + // does not need formatting). + ALLXMLClearTag *ctag=XMLClearTags; + do + { + if (_tcsnicmp(ctag->lpszOpen, result.pStr, ctag->openTagLen)==0) + { + result.pClr=ctag; + pXML->nIndex+=ctag->openTagLen-1; + *pType=eTokenClear; + return result; + } + ctag++; + } while(ctag->lpszOpen); + + // If we didn't find a clear tag then check for standard tokens + switch(ch) + { + // Check for quotes + case _T('\''): + case _T('\"'): + // Type of token + *pType = eTokenQuotedText; + chTemp = ch; + + // Set the size + nFoundMatch = FALSE; + + // Search through the string to find a matching quote + while((ch = getNextChar(pXML))) + { + if (ch==chTemp) { nFoundMatch = TRUE; break; } + if (ch==_T('<')) break; + } + + // If we failed to find a matching quote + if (nFoundMatch == FALSE) + { + pXML->nIndex=indexStart+1; + nIsText=TRUE; + break; + } + +// 4.02.2002 +// if (FindNonWhiteSpace(pXML)) pXML->nIndex--; + + break; + + // Equals (used with attribute values) + case _T('='): + *pType = eTokenEquals; + break; + + // Close tag + case _T('>'): + *pType = eTokenCloseTag; + break; + + // Check for tag start and tag end + case _T('<'): + + // Peek at the next character to see if we have an end tag 'lpXML[pXML->nIndex]; + + // If we have a tag end... + if (chTemp == _T('/')) + { + // Set the type and ensure we point at the next character + getNextChar(pXML); + *pType = eTokenTagEnd; + } + + // If we have an XML declaration tag + else if (chTemp == _T('?')) + { + + // Set the type and ensure we point at the next character + getNextChar(pXML); + *pType = eTokenDeclaration; + } + + // Otherwise we must have a start tag + else + { + *pType = eTokenTagStart; + } + break; + + // Check to see if we have a short hand type end tag ('/>'). + case _T('/'): + + // Peek at the next character to see if we have a short end tag '/>' + chTemp = pXML->lpXML[pXML->nIndex]; + + // If we have a short hand end tag... + if (chTemp == _T('>')) + { + // Set the type and ensure we point at the next character + getNextChar(pXML); + *pType = eTokenShortHandClose; + break; + } + + // If we haven't found a short hand closing tag then drop into the + // text process + + // Other characters + default: + nIsText = TRUE; + } + + // If this is a TEXT node + if (nIsText) + { + // Indicate we are dealing with text + *pType = eTokenText; + while((ch = getNextChar(pXML))) + { + if XML_isSPACECHAR(ch) + { + indexStart++; break; + + } else if (ch==_T('/')) + { + // If we find a slash then this maybe text or a short hand end tag + // Peek at the next character to see it we have short hand end tag + ch=pXML->lpXML[pXML->nIndex]; + // If we found a short hand end tag then we need to exit the loop + if (ch==_T('>')) { pXML->nIndex--; break; } + + } else if ((ch==_T('<'))||(ch==_T('>'))||(ch==_T('='))) + { + pXML->nIndex--; break; + } + } + } + *pcbToken = pXML->nIndex-indexStart; + } else + { + // If we failed to obtain a valid character + *pcbToken = 0; + *pType = eTokenError; + result.pStr=NULL; + } + + return result; +} + +XMLCSTR XMLNode::updateName_WOSD(XMLCSTR lpszName) +{ + if (d->lpszName&&(lpszName!=d->lpszName)) free((void*)d->lpszName); + d->lpszName=lpszName; + return lpszName; +} + +// private: +XMLNode::XMLNode(struct XMLNodeDataTag *p){ d=p; (p->ref_count)++; } +XMLNode::XMLNode(XMLNodeData *pParent, XMLCSTR lpszName, char isDeclaration) +{ + d=(XMLNodeData*)malloc(sizeof(XMLNodeData)); + d->ref_count=1; + + d->lpszName=NULL; + d->nChild= 0; + d->nText = 0; + d->nClear = 0; + d->nAttribute = 0; + + d->isDeclaration = isDeclaration; + + d->pParent = pParent; + d->pChild= NULL; + d->pText= NULL; + d->pClear= NULL; + d->pAttribute= NULL; + d->pOrder= NULL; + + updateName_WOSD(lpszName); +} + +XMLNode XMLNode::createXMLTopNode_WOSD(XMLCSTR lpszName, char isDeclaration) { return XMLNode(NULL,lpszName,isDeclaration); } +XMLNode XMLNode::createXMLTopNode(XMLCSTR lpszName, char isDeclaration) { return XMLNode(NULL,stringDup(lpszName),isDeclaration); } + +#define MEMORYINCREASE 50 + +static inline void *myRealloc(void *p, int newsize, int memInc, int sizeofElem) +{ + if (p==NULL) { if (memInc) return malloc(memInc*sizeofElem); return malloc(sizeofElem); } + if ((memInc==0)||((newsize%memInc)==0)) p=realloc(p,(newsize+memInc)*sizeofElem); +// if (!p) +// { +// printf("XMLParser Error: Not enough memory! Aborting...\n"); exit(220); +// } + return p; +} + +// private: +int XMLNode::findPosition(XMLNodeData *d, int index, XMLElementType xtype) +{ + if (index<0) return -1; + int i=0,j=(int)((index<<2)+xtype),*o=d->pOrder; while (o[i]!=j) i++; return i; +} + +// private: +// update "order" information when deleting a content of a XMLNode +int XMLNode::removeOrderElement(XMLNodeData *d, XMLElementType t, int index) +{ + int n=d->nChild+d->nText+d->nClear, *o=d->pOrder,i=findPosition(d,index,t); + memmove(o+i, o+i+1, (n-i)*sizeof(int)); + for (;ipOrder=(int)realloc(d->pOrder,n*sizeof(int)); + // but we skip reallocation because it's too time consuming. + // Anyway, at the end, it will be free'd completely at once. + return i; +} + +void *XMLNode::addToOrder(int memoryIncrease,int *_pos, int nc, void *p, int size, XMLElementType xtype) +{ + // in: *_pos is the position inside d->pOrder ("-1" means "EndOf") + // out: *_pos is the index inside p + p=myRealloc(p,(nc+1),memoryIncrease,size); + int n=d->nChild+d->nText+d->nClear; + d->pOrder=(int*)myRealloc(d->pOrder,n+1,memoryIncrease*3,sizeof(int)); + int pos=*_pos,*o=d->pOrder; + + if ((pos<0)||(pos>=n)) { *_pos=nc; o[n]=(int)((nc<<2)+xtype); return p; } + + int i=pos; + memmove(o+i+1, o+i, (n-i)*sizeof(int)); + + while ((pos>2; + memmove(((char*)p)+(pos+1)*size,((char*)p)+pos*size,(nc-pos)*size); + + return p; +} + +// Add a child node to the given element. +XMLNode XMLNode::addChild_priv(int memoryIncrease, XMLCSTR lpszName, char isDeclaration, int pos) +{ + if (!lpszName) return emptyXMLNode; + d->pChild=(XMLNode*)addToOrder(memoryIncrease,&pos,d->nChild,d->pChild,sizeof(XMLNode),eNodeChild); + d->pChild[pos].d=NULL; + d->pChild[pos]=XMLNode(d,lpszName,isDeclaration); + d->nChild++; + return d->pChild[pos]; +} + +// Add an attribute to an element. +XMLAttribute *XMLNode::addAttribute_priv(int memoryIncrease,XMLCSTR lpszName, XMLCSTR lpszValuev) +{ + if (!lpszName) return &emptyXMLAttribute; + int nc=d->nAttribute; + d->pAttribute=(XMLAttribute*)myRealloc(d->pAttribute,(nc+1),memoryIncrease,sizeof(XMLAttribute)); + XMLAttribute *pAttr=d->pAttribute+nc; + pAttr->lpszName = lpszName; + pAttr->lpszValue = lpszValuev; + d->nAttribute++; + return pAttr; +} + +// Add text to the element. +XMLCSTR XMLNode::addText_priv(int memoryIncrease, XMLCSTR lpszValue, int pos) +{ + if (!lpszValue) return NULL; + d->pText=(XMLCSTR*)addToOrder(memoryIncrease,&pos,d->nText,d->pText,sizeof(XMLSTR),eNodeText); + d->pText[pos]=lpszValue; + d->nText++; + return lpszValue; +} + +// Add clear (unformatted) text to the element. +XMLClear *XMLNode::addClear_priv(int memoryIncrease, XMLCSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, int pos) +{ + if (!lpszValue) return &emptyXMLClear; + d->pClear=(XMLClear *)addToOrder(memoryIncrease,&pos,d->nClear,d->pClear,sizeof(XMLClear),eNodeClear); + XMLClear *pNewClear=d->pClear+pos; + pNewClear->lpszValue = lpszValue; + if (!lpszOpen) lpszOpen=getClearTagTable()->lpszOpen; + if (!lpszClose) lpszOpen=getClearTagTable()->lpszClose; + pNewClear->lpszOpenTag = lpszOpen; + pNewClear->lpszCloseTag = lpszClose; + d->nClear++; + return pNewClear; +} + +// private: +// Parse a clear (unformatted) type node. +char XMLNode::parseClearTag(void *px, ALLXMLClearTag *pClear) +{ + XML *pXML=(XML *)px; + int cbTemp=0; + XMLCSTR lpszTemp=NULL; + XMLCSTR lpXML=&pXML->lpXML[pXML->nIndex]; + static XMLCSTR docTypeEnd=_T("]>"); + + // Find the closing tag + // Seems the lpszOpen==XMLClearTags[1].lpszOpen) + { + XMLCSTR pCh=lpXML; + while (*pCh) + { + if (*pCh==_T('<')) { pClear->lpszClose=docTypeEnd; lpszTemp=_tcsstr(lpXML,docTypeEnd); break; } + else if (*pCh==_T('>')) { lpszTemp=pCh; break; } +#ifdef _XMLUNICODE + pCh++; +#else + pCh+=XML_ByteTable[(unsigned char)(*pCh)]; +#endif + } + } else lpszTemp=_tcsstr(lpXML, pClear->lpszClose); + + if (lpszTemp) + { + // Cache the size and increment the index + cbTemp = (int)(lpszTemp - lpXML); + + pXML->nIndex += cbTemp+(int)_tcslen(pClear->lpszClose); + + // Add the clear node to the current element + addClear_priv(MEMORYINCREASE,stringDup(lpXML,cbTemp), pClear->lpszOpen, pClear->lpszClose,-1); + return 0; + } + + // If we failed to find the end tag + pXML->error = eXMLErrorUnmatchedEndClearTag; + return 1; +} + +void XMLNode::exactMemory(XMLNodeData *d) +{ + if (d->pOrder) d->pOrder=(int*)realloc(d->pOrder,(d->nChild+d->nText+d->nClear)*sizeof(int)); + if (d->pChild) d->pChild=(XMLNode*)realloc(d->pChild,d->nChild*sizeof(XMLNode)); + if (d->pAttribute) d->pAttribute=(XMLAttribute*)realloc(d->pAttribute,d->nAttribute*sizeof(XMLAttribute)); + if (d->pText) d->pText=(XMLCSTR*)realloc(d->pText,d->nText*sizeof(XMLSTR)); + if (d->pClear) d->pClear=(XMLClear *)realloc(d->pClear,d->nClear*sizeof(XMLClear)); +} + +char XMLNode::maybeAddTxT(void *pa, XMLCSTR tokenPStr) +{ + XML *pXML=(XML *)pa; + XMLCSTR lpszText=pXML->lpszText; + if (!lpszText) return 0; + if (dropWhiteSpace) while (XML_isSPACECHAR(*lpszText)&&(lpszText!=tokenPStr)) lpszText++; + int cbText = (int)(tokenPStr - lpszText); + if (!cbText) { pXML->lpszText=NULL; return 0; } + if (dropWhiteSpace) { cbText--; while ((cbText)&&XML_isSPACECHAR(lpszText[cbText])) cbText--; cbText++; } + if (!cbText) { pXML->lpszText=NULL; return 0; } + lpszText=fromXMLString(lpszText,cbText,pXML); + if (!lpszText) return 1; + addText_priv(MEMORYINCREASE,lpszText,-1); + pXML->lpszText=NULL; + return 0; +} +// private: +// Recursively parse an XML element. +int XMLNode::ParseXMLElement(void *pa) +{ + XML *pXML=(XML *)pa; + int cbToken; + enum XMLTokenTypeTag type; + NextToken token; + XMLCSTR lpszTemp=NULL; + int cbTemp=0; + char nDeclaration; + XMLNode pNew; + enum Status status; // inside or outside a tag + enum Attrib attrib = eAttribName; + + assert(pXML); + + // If this is the first call to the function + if (pXML->nFirst) + { + // Assume we are outside of a tag definition + pXML->nFirst = FALSE; + status = eOutsideTag; + } else + { + // If this is not the first call then we should only be called when inside a tag. + status = eInsideTag; + } + + // Iterate through the tokens in the document + for(;;) + { + // Obtain the next token + token = GetNextToken(pXML, &cbToken, &type); + + if (type != eTokenError) + { + // Check the current status + switch(status) + { + + // If we are outside of a tag definition + case eOutsideTag: + + // Check what type of token we obtained + switch(type) + { + // If we have found text or quoted text + case eTokenText: + case eTokenCloseTag: /* '>' */ + case eTokenShortHandClose: /* '/>' */ + case eTokenQuotedText: + case eTokenEquals: + break; + + // If we found a start tag '<' and declarations 'error = eXMLErrorMissingTagName; + return FALSE; + } + + // If we found a new element which is the same as this + // element then we need to pass this back to the caller.. + +#ifdef APPROXIMATE_PARSING + if (d->lpszName && + myTagCompare(d->lpszName, token.pStr) == 0) + { + // Indicate to the caller that it needs to create a + // new element. + pXML->lpNewElement = token.pStr; + pXML->cbNewElement = cbToken; + return TRUE; + } else +#endif + { + // If the name of the new element differs from the name of + // the current element we need to add the new element to + // the current one and recurse + pNew = addChild_priv(MEMORYINCREASE,stringDup(token.pStr,cbToken), nDeclaration,-1); + + while (!pNew.isEmpty()) + { + // Callself to process the new node. If we return + // FALSE this means we dont have any more + // processing to do... + + if (!pNew.ParseXMLElement(pXML)) return FALSE; + else + { + // If the call to recurse this function + // evented in a end tag specified in XML then + // we need to unwind the calls to this + // function until we find the appropriate node + // (the element name and end tag name must + // match) + if (pXML->cbEndTag) + { + // If we are back at the root node then we + // have an unmatched end tag + if (!d->lpszName) + { + pXML->error=eXMLErrorUnmatchedEndTag; + return FALSE; + } + + // If the end tag matches the name of this + // element then we only need to unwind + // once more... + + if (myTagCompare(d->lpszName, pXML->lpEndTag)==0) + { + pXML->cbEndTag = 0; + } + + return TRUE; + } else + if (pXML->cbNewElement) + { + // If the call indicated a new element is to + // be created on THIS element. + + // If the name of this element matches the + // name of the element we need to create + // then we need to return to the caller + // and let it process the element. + + if (myTagCompare(d->lpszName, pXML->lpNewElement)==0) + { + return TRUE; + } + + // Add the new element and recurse + pNew = addChild_priv(MEMORYINCREASE,stringDup(pXML->lpNewElement,pXML->cbNewElement),0,-1); + pXML->cbNewElement = 0; + } + else + { + // If we didn't have a new element to create + pNew = emptyXMLNode; + + } + } + } + } + break; + + // If we found an end tag + case eTokenTagEnd: + + // If we have node text then add this to the element + if (maybeAddTxT(pXML,token.pStr)) return FALSE; + + // Find the name of the end tag + token = GetNextToken(pXML, &cbTemp, &type); + + // The end tag should be text + if (type != eTokenText) + { + pXML->error = eXMLErrorMissingEndTagName; + return FALSE; + } + lpszTemp = token.pStr; + + // After the end tag we should find a closing tag + token = GetNextToken(pXML, &cbToken, &type); + if (type != eTokenCloseTag) + { + pXML->error = eXMLErrorMissingEndTagName; + return FALSE; + } + pXML->lpszText=pXML->lpXML+pXML->nIndex; + + // We need to return to the previous caller. If the name + // of the tag cannot be found we need to keep returning to + // caller until we find a match + if (myTagCompare(d->lpszName, lpszTemp) != 0) +#ifdef STRICT_PARSING + { + pXML->error=eXMLErrorUnmatchedEndTag; + pXML->nIndexMissigEndTag=pXML->nIndex; + return FALSE; + } +#else + { + pXML->error=eXMLErrorMissingEndTag; + pXML->nIndexMissigEndTag=pXML->nIndex; + pXML->lpEndTag = lpszTemp; + pXML->cbEndTag = cbTemp; + } +#endif + + // Return to the caller + exactMemory(d); + return TRUE; + + // If we found a clear (unformatted) token + case eTokenClear: + // If we have node text then add this to the element + if (maybeAddTxT(pXML,token.pStr)) return FALSE; + if (parseClearTag(pXML, token.pClr)) return FALSE; + pXML->lpszText=pXML->lpXML+pXML->nIndex; + break; + + default: + break; + } + break; + + // If we are inside a tag definition we need to search for attributes + case eInsideTag: + + // Check what part of the attribute (name, equals, value) we + // are looking for. + switch(attrib) + { + // If we are looking for a new attribute + case eAttribName: + + // Check what the current token type is + switch(type) + { + // If the current type is text... + // Eg. 'attribute' + case eTokenText: + // Cache the token then indicate that we are next to + // look for the equals + lpszTemp = token.pStr; + cbTemp = cbToken; + attrib = eAttribEquals; + break; + + // If we found a closing tag... + // Eg. '>' + case eTokenCloseTag: + // We are now outside the tag + status = eOutsideTag; + pXML->lpszText=pXML->lpXML+pXML->nIndex; + break; + + // If we found a short hand '/>' closing tag then we can + // return to the caller + case eTokenShortHandClose: + exactMemory(d); + pXML->lpszText=pXML->lpXML+pXML->nIndex; + return TRUE; + + // Errors... + case eTokenQuotedText: /* '"SomeText"' */ + case eTokenTagStart: /* '<' */ + case eTokenTagEnd: /* 'error = eXMLErrorUnexpectedToken; + return FALSE; + default: break; + } + break; + + // If we are looking for an equals + case eAttribEquals: + // Check what the current token type is + switch(type) + { + // If the current type is text... + // Eg. 'Attribute AnotherAttribute' + case eTokenText: + // Add the unvalued attribute to the list + addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp), NULL); + // Cache the token then indicate. We are next to + // look for the equals attribute + lpszTemp = token.pStr; + cbTemp = cbToken; + break; + + // If we found a closing tag 'Attribute >' or a short hand + // closing tag 'Attribute />' + case eTokenShortHandClose: + case eTokenCloseTag: + // If we are a declaration element 'lpszText=pXML->lpXML+pXML->nIndex; + + if (d->isDeclaration && + (lpszTemp[cbTemp-1]) == _T('?')) + { + cbTemp--; + } + + if (cbTemp) + { + // Add the unvalued attribute to the list + addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp), NULL); + } + + // If this is the end of the tag then return to the caller + if (type == eTokenShortHandClose) + { + exactMemory(d); + return TRUE; + } + + // We are now outside the tag + status = eOutsideTag; + break; + + // If we found the equals token... + // Eg. 'Attribute =' + case eTokenEquals: + // Indicate that we next need to search for the value + // for the attribute + attrib = eAttribValue; + break; + + // Errors... + case eTokenQuotedText: /* 'Attribute "InvalidAttr"'*/ + case eTokenTagStart: /* 'Attribute <' */ + case eTokenTagEnd: /* 'Attribute error = eXMLErrorUnexpectedToken; + return FALSE; + default: break; + } + break; + + // If we are looking for an attribute value + case eAttribValue: + // Check what the current token type is + switch(type) + { + // If the current type is text or quoted text... + // Eg. 'Attribute = "Value"' or 'Attribute = Value' or + // 'Attribute = 'Value''. + case eTokenText: + case eTokenQuotedText: + // If we are a declaration element 'isDeclaration && + (token.pStr[cbToken-1]) == _T('?')) + { + cbToken--; + } + + if (cbTemp) + { + // Add the valued attribute to the list + if (type==eTokenQuotedText) { token.pStr++; cbToken-=2; } + XMLCSTR attrVal=token.pStr; + if (attrVal) + { + attrVal=fromXMLString(attrVal,cbToken,pXML); + if (!attrVal) return FALSE; + } + addAttribute_priv(MEMORYINCREASE,stringDup(lpszTemp,cbTemp),attrVal); + } + + // Indicate we are searching for a new attribute + attrib = eAttribName; + break; + + // Errors... + case eTokenTagStart: /* 'Attr = <' */ + case eTokenTagEnd: /* 'Attr = ' */ + case eTokenShortHandClose: /* "Attr = />" */ + case eTokenEquals: /* 'Attr = =' */ + case eTokenDeclaration: /* 'Attr = error = eXMLErrorUnexpectedToken; + return FALSE; + break; + default: break; + } + } + } + } + // If we failed to obtain the next token + else + { + if ((!d->isDeclaration)&&(d->pParent)) + { +#ifdef STRICT_PARSING + pXML->error=eXMLErrorUnmatchedEndTag; +#else + pXML->error=eXMLErrorMissingEndTag; +#endif + pXML->nIndexMissigEndTag=pXML->nIndex; + } + return FALSE; + } + } +} + +// Count the number of lines and columns in an XML string. +static void CountLinesAndColumns(XMLCSTR lpXML, int nUpto, XMLResults *pResults) +{ + XMLCHAR ch; + assert(lpXML); + assert(pResults); + + struct XML xml={ lpXML,lpXML, 0, 0, eXMLErrorNone, NULL, 0, NULL, 0, TRUE }; + + pResults->nLine = 1; + pResults->nColumn = 1; + while (xml.nIndexnColumn++; + else + { + pResults->nLine++; + pResults->nColumn=1; + } + } +} + +// Parse XML and return the root element. +XMLNode XMLNode::parseString(XMLCSTR lpszXML, XMLCSTR tag, XMLResults *pResults) +{ + if (!lpszXML) + { + if (pResults) + { + pResults->error=eXMLErrorNoElements; + pResults->nLine=0; + pResults->nColumn=0; + } + return emptyXMLNode; + } + + XMLNode xnode(NULL,NULL,FALSE); + struct XML xml={ lpszXML, lpszXML, 0, 0, eXMLErrorNone, NULL, 0, NULL, 0, TRUE }; + + // Create header element + xnode.ParseXMLElement(&xml); + enum XMLError error = xml.error; + if ((xnode.nChildNode()==1)&&(xnode.nElement()==1)) xnode=xnode.getChildNode(); // skip the empty node + + // If no error occurred + if ((error==eXMLErrorNone)||(error==eXMLErrorMissingEndTag)) + { + XMLCSTR name=xnode.getName(); + if (tag&&_tcslen(tag)&&((!name)||(_tcsicmp(xnode.getName(),tag)))) + { + XMLNode nodeTmp; + int i=0; + while (i=xnode.nChildNode()) + { + if (pResults) + { + pResults->error=eXMLErrorFirstTagNotFound; + pResults->nLine=0; + pResults->nColumn=0; + } + return emptyXMLNode; + } + xnode=nodeTmp; + } + } else + { + // Cleanup: this will destroy all the nodes + xnode = emptyXMLNode; + } + + + // If we have been given somewhere to place results + if (pResults) + { + pResults->error = error; + + // If we have an error + if (error!=eXMLErrorNone) + { + if (error==eXMLErrorMissingEndTag) xml.nIndex=xml.nIndexMissigEndTag; + // Find which line and column it starts on. + CountLinesAndColumns(xml.lpXML, xml.nIndex, pResults); + } + } + return xnode; +} + +XMLNode XMLNode::parseFile(XMLCSTR filename, XMLCSTR tag, XMLResults *pResults) +{ + if (pResults) { pResults->nLine=0; pResults->nColumn=0; } + FILE *f=_tfopen(filename,_T("rb")); + if (f==NULL) { if (pResults) pResults->error=eXMLErrorFileNotFound; return emptyXMLNode; } + fseek(f,0,SEEK_END); + int l=ftell(f),headerSz=0; + if (!l) { if (pResults) pResults->error=eXMLErrorEmpty; return emptyXMLNode; } + fseek(f,0,SEEK_SET); + unsigned char *buf=(unsigned char*)malloc(l+1); + fread(buf,l,1,f); + fclose(f); + buf[l]=0; +#ifdef _XMLUNICODE + if (guessUnicodeChars) + { + if (!myIsTextUnicode(buf,l)) + { + if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) headerSz=3; + XMLSTR b2=myMultiByteToWideChar((const char*)(buf+headerSz),l-headerSz); + free(buf); buf=(unsigned char*)b2; headerSz=0; + } else + { + if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; + if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; + } + } +#else + if (guessUnicodeChars) + { + if (myIsTextUnicode(buf,l)) + { + l/=sizeof(wchar_t); + if ((buf[0]==0xef)&&(buf[1]==0xff)) headerSz=2; + if ((buf[0]==0xff)&&(buf[1]==0xfe)) headerSz=2; + char *b2=myWideCharToMultiByte((const wchar_t*)(buf+headerSz),l-headerSz); + free(buf); buf=(unsigned char*)b2; headerSz=0; + } else + { + if ((buf[0]==0xef)&&(buf[1]==0xbb)&&(buf[2]==0xbf)) headerSz=3; + } + } +#endif + + if (!buf) { if (pResults) pResults->error=eXMLErrorCharConversionError; return emptyXMLNode; } + XMLNode x=parseString((XMLSTR)(buf+headerSz),tag,pResults); + free(buf); + return x; +} + +static inline void charmemset(XMLSTR dest,XMLCHAR c,int l) { while (l--) *(dest++)=c; } +// private: +// Creates an user friendly XML string from a given element with +// appropriate white space and carriage returns. +// +// This recurses through all subnodes then adds contents of the nodes to the +// string. +int XMLNode::CreateXMLStringR(XMLNodeData *pEntry, XMLSTR lpszMarker, int nFormat) +{ + int nResult = 0; + int cb; + int cbElement; + int nChildFormat=-1; + int nElementI=pEntry->nChild+pEntry->nText+pEntry->nClear; + int i,j; + + assert(pEntry); + +#define LENSTR(lpsz) (lpsz ? _tcslen(lpsz) : 0) + + // If the element has no name then assume this is the head node. + cbElement = (int)LENSTR(pEntry->lpszName); + + if (cbElement) + { + // "isDeclaration) lpszMarker[nResult++]=_T('?'); + _tcscpy(&lpszMarker[nResult], pEntry->lpszName); + nResult+=cbElement; + lpszMarker[nResult++]=_T(' '); + + } else + { + nResult+=cbElement+2+cb; + if (pEntry->isDeclaration) nResult++; + } + + // Enumerate attributes and add them to the string + XMLAttribute *pAttr=pEntry->pAttribute; + for (i=0; inAttribute; i++) + { + // "Attrib + cb = (int)LENSTR(pAttr->lpszName); + if (cb) + { + if (lpszMarker) _tcscpy(&lpszMarker[nResult], pAttr->lpszName); + nResult += cb; + // "Attrib=Value " + if (pAttr->lpszValue) + { + cb=(int)lengthXMLString(pAttr->lpszValue); + if (lpszMarker) + { + lpszMarker[nResult]=_T('='); + lpszMarker[nResult+1]=_T('"'); + if (cb) toXMLString(&lpszMarker[nResult+2],pAttr->lpszValue); + lpszMarker[nResult+cb+2]=_T('"'); + } + nResult+=cb+3; + } + if (lpszMarker) lpszMarker[nResult] = _T(' '); + nResult++; + } + pAttr++; + } + + if (pEntry->isDeclaration) + { + if (lpszMarker) + { + lpszMarker[nResult-1]=_T('?'); + lpszMarker[nResult]=_T('>'); + } + nResult++; + if (nFormat!=-1) + { + if (lpszMarker) lpszMarker[nResult]=_T('\n'); + nResult++; + } + } else + // If there are child nodes we need to terminate the start tag + if (nElementI) + { + if (lpszMarker) lpszMarker[nResult-1]=_T('>'); + if (nFormat!=-1) + { + if (lpszMarker) lpszMarker[nResult]=_T('\n'); + nResult++; + } + } else nResult--; + } + + // Calculate the child format for when we recurse. This is used to + // determine the number of spaces used for prefixes. + if (nFormat!=-1) + { + if (cbElement&&(!pEntry->isDeclaration)) nChildFormat=nFormat+1; + else nChildFormat=nFormat; + } + + // Enumerate through remaining children + for (i=0; ipOrder[i]; + switch((XMLElementType)(j&3)) + { + // Text nodes + case eNodeText: + { + // "Text" + XMLCSTR pChild=pEntry->pText[j>>2]; + cb = (int)lengthXMLString(pChild); + if (cb) + { + if (nFormat!=-1) + { + if (lpszMarker) + { + charmemset(&lpszMarker[nResult],INDENTCHAR,sizeof(XMLCHAR)*(nFormat + 1)); + toXMLString(&lpszMarker[nResult+nFormat+1],pChild); + lpszMarker[nResult+nFormat+1+cb]=_T('\n'); + } + nResult+=cb+nFormat+2; + } else + { + if (lpszMarker) toXMLString(&lpszMarker[nResult], pChild); + nResult += cb; + } + } + break; + } + + // Clear type nodes + case eNodeClear: + { + XMLClear *pChild=pEntry->pClear+(j>>2); + // "OpenTag" + cb = (int)LENSTR(pChild->lpszOpenTag); + if (cb) + { + if (nFormat!=-1) + { + if (lpszMarker) + { + charmemset(&lpszMarker[nResult], INDENTCHAR, sizeof(XMLCHAR)*(nFormat + 1)); + _tcscpy(&lpszMarker[nResult+nFormat+1], pChild->lpszOpenTag); + } + nResult+=cb+nFormat+1; + } + else + { + if (lpszMarker)_tcscpy(&lpszMarker[nResult], pChild->lpszOpenTag); + nResult += cb; + } + } + + // "OpenTag Value" + cb = (int)LENSTR(pChild->lpszValue); + if (cb) + { + if (lpszMarker) _tcscpy(&lpszMarker[nResult], pChild->lpszValue); + nResult += cb; + } + + // "OpenTag Value CloseTag" + cb = (int)LENSTR(pChild->lpszCloseTag); + if (cb) + { + if (lpszMarker) _tcscpy(&lpszMarker[nResult], pChild->lpszCloseTag); + nResult += cb; + } + + if (nFormat!=-1) + { + if (lpszMarker) lpszMarker[nResult] = _T('\n'); + nResult++; + } + break; + } + + // Element nodes + case eNodeChild: + { + // Recursively add child nodes + nResult += CreateXMLStringR(pEntry->pChild[j>>2].d, lpszMarker ? lpszMarker + nResult : 0, nChildFormat); + break; + } + default: break; + } + } + + if ((cbElement)&&(!pEntry->isDeclaration)) + { + // If we have child entries we need to use long XML notation for + // closing the element - "blah blah blah" + if (nElementI) + { + // "\0" + if (lpszMarker) + { + if (nFormat != -1) + { + if (nFormat) + { + charmemset(&lpszMarker[nResult], INDENTCHAR,sizeof(XMLCHAR)*nFormat); + nResult+=nFormat; + } + } + + _tcscpy(&lpszMarker[nResult], _T("lpszName); + nResult += cbElement; + + if (nFormat == -1) + { + _tcscpy(&lpszMarker[nResult], _T(">")); + nResult++; + } else + { + _tcscpy(&lpszMarker[nResult], _T(">\n")); + nResult+=2; + } + } else + { + if (nFormat != -1) nResult+=cbElement+4+nFormat; + else nResult+=cbElement+3; + } + } else + { + // If there are no children we can use shorthand XML notation - + // "" + // "/>\0" + if (lpszMarker) + { + if (nFormat == -1) + { + _tcscpy(&lpszMarker[nResult], _T("/>")); + nResult += 2; + } + else + { + _tcscpy(&lpszMarker[nResult], _T("/>\n")); + nResult += 3; + } + } + else + { + nResult += nFormat == -1 ? 2 : 3; + } + } + } + + return nResult; +} + +#undef LENSTR + +// Create an XML string +// @param int nFormat - 0 if no formatting is required +// otherwise nonzero for formatted text +// with carriage returns and indentation. +// @param int *pnSize - [out] pointer to the size of the +// returned string not including the +// NULL terminator. +// @return XMLSTR - Allocated XML string, you must free +// this with free(). +XMLSTR XMLNode::createXMLString(int nFormat, int *pnSize) const +{ + if (!d) { if (pnSize) *pnSize=0; return NULL; } + + XMLSTR lpszResult = NULL; + int cbStr; + + // Recursively Calculate the size of the XML string + if (!dropWhiteSpace) nFormat=0; + nFormat = nFormat ? 0 : -1; + cbStr = CreateXMLStringR(d, 0, nFormat); + assert(cbStr); + // Alllocate memory for the XML string + the NULL terminator and + // create the recursively XML string. + lpszResult=(XMLSTR)malloc((cbStr+1)*sizeof(XMLCHAR)); + CreateXMLStringR(d, lpszResult, nFormat); + if (pnSize) *pnSize = cbStr; + return lpszResult; +} + +XMLNode::~XMLNode() { deleteNodeContent(); } + +int XMLNode::detachFromParent(XMLNodeData *d) +{ + XMLNode *pa=d->pParent->pChild; + int i=0; + while (((void*)(pa[i].d))!=((void*)d)) i++; + d->pParent->nChild--; + if (d->pParent->nChild) memmove(pa+i,pa+i+1,(d->pParent->nChild-i)*sizeof(XMLNode)); + else { free(pa); d->pParent->pChild=NULL; } + return removeOrderElement(d->pParent,eNodeChild,i); +} + +void XMLNode::deleteNodeContent(char force) +{ + if (!d) return; + (d->ref_count) --; + if ((d->ref_count==0)||force) + { + int i; + if (d->pParent) detachFromParent(d); + for(i=0; inChild; i++) { d->pChild[i].d->pParent=NULL; d->pChild[i].deleteNodeContent(force); } + free(d->pChild); + for(i=0; inText; i++) free((void*)d->pText[i]); + free(d->pText); + for(i=0; inClear; i++) free((void*)d->pClear[i].lpszValue); + free(d->pClear); + for(i=0; inAttribute; i++) + { + free((void*)d->pAttribute[i].lpszName); + if (d->pAttribute[i].lpszValue) free((void*)d->pAttribute[i].lpszValue); + } + free(d->pAttribute); + free(d->pOrder); + free((void*)d->lpszName); + free(d); + d=NULL; + } +} + +XMLNode XMLNode::addChild(XMLNode childNode, int pos) +{ + XMLNodeData *dc=childNode.d; + if ((!dc)||(!d)) return childNode; + if (dc->pParent) { if ((detachFromParent(dc)<=pos)&&(dc->pParent==d)) pos--; } else dc->ref_count++; + dc->pParent=d; +// int nc=d->nChild; +// d->pChild=(XMLNode*)myRealloc(d->pChild,(nc+1),memoryIncrease,sizeof(XMLNode)); + d->pChild=(XMLNode*)addToOrder(0,&pos,d->nChild,d->pChild,sizeof(XMLNode),eNodeChild); + d->pChild[pos].d=dc; + d->nChild++; + return childNode; +} + +void XMLNode::deleteAttribute(int i) +{ + if ((!d)||(i<0)||(i>=d->nAttribute)) return; + d->nAttribute--; + XMLAttribute *p=d->pAttribute+i; + free((void*)p->lpszName); + if (p->lpszValue) free((void*)p->lpszValue); + if (d->nAttribute) memmove(p,p+1,(d->nAttribute-i)*sizeof(XMLAttribute)); else { free(p); d->pAttribute=NULL; } +} + +void XMLNode::deleteAttribute(XMLAttribute *a){ if (a) deleteAttribute(a->lpszName); } +void XMLNode::deleteAttribute(XMLCSTR lpszName) +{ + int j=0; + getAttribute(lpszName,&j); + if (j) deleteAttribute(j-1); +} + +XMLAttribute *XMLNode::updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,int i) +{ + if (!d) return NULL; + if (i>=d->nAttribute) + { + if (lpszNewName) return addAttribute_WOSD(lpszNewName,lpszNewValue); + return NULL; + } + XMLAttribute *p=d->pAttribute+i; + if (p->lpszValue&&p->lpszValue!=lpszNewValue) free((void*)p->lpszValue); + p->lpszValue=lpszNewValue; + if (lpszNewName&&p->lpszName!=lpszNewName) { free((void*)p->lpszName); p->lpszName=lpszNewName; }; + return p; +} + +XMLAttribute *XMLNode::updateAttribute_WOSD(XMLAttribute *newAttribute, XMLAttribute *oldAttribute) +{ + if (oldAttribute) return updateAttribute_WOSD(newAttribute->lpszValue,newAttribute->lpszName,oldAttribute->lpszName); + return addAttribute_WOSD(newAttribute->lpszName,newAttribute->lpszValue); +} + +XMLAttribute *XMLNode::updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName) +{ + int j=0; + getAttribute(lpszOldName,&j); + if (j) return updateAttribute_WOSD(lpszNewValue,lpszNewName,j-1); + else + { + if (lpszNewName) return addAttribute_WOSD(lpszNewName,lpszNewValue); + else return addAttribute_WOSD(stringDup(lpszOldName),lpszNewValue); + } +} + +int XMLNode::indexText(XMLCSTR lpszValue) const +{ + if (!d) return -1; + int i,l=d->nText; + if (!lpszValue) { if (l) return 0; return -1; } + XMLCSTR *p=d->pText; + for (i=0; i=d->nText)) return; + d->nText--; + XMLCSTR *p=d->pText+i; + free((void*)*p); + if (d->nText) memmove(p,p+1,(d->nText-i)*sizeof(XMLCSTR)); else { free(p); d->pText=NULL; } + removeOrderElement(d,eNodeText,i); +} + +void XMLNode::deleteText(XMLCSTR lpszValue) { deleteText(indexText(lpszValue)); } + +XMLCSTR XMLNode::updateText_WOSD(XMLCSTR lpszNewValue, int i) +{ + if (!d) return NULL; + if (i>=d->nText) return addText_WOSD(lpszNewValue); + XMLCSTR *p=d->pText+i; + if (*p!=lpszNewValue) { free((void*)*p); *p=lpszNewValue; } + return lpszNewValue; +} + +XMLCSTR XMLNode::updateText_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) +{ + if (!d) return NULL; + int i=indexText(lpszOldValue); + if (i>=0) return updateText_WOSD(lpszNewValue,i); + return addText_WOSD(lpszNewValue); +} + +void XMLNode::deleteClear(int i) +{ + if ((!d)||(i<0)||(i>=d->nClear)) return; + d->nClear--; + XMLClear *p=d->pClear+i; + free((void*)p->lpszValue); + if (d->nClear) memmove(p,p+1,(d->nText-i)*sizeof(XMLClear)); else { free(p); d->pClear=NULL; } + removeOrderElement(d,eNodeClear,i); +} + +int XMLNode::indexClear(XMLCSTR lpszValue) const +{ + if (!d) return -1; + int i,l=d->nClear; + if (!lpszValue) { if (l) return 0; return -1; } + XMLClear *p=d->pClear; + for (i=0; ilpszValue); } + +XMLClear *XMLNode::updateClear_WOSD(XMLCSTR lpszNewContent, int i) +{ + if (!d) return NULL; + if (i>=d->nClear) + { + return addClear_WOSD(XMLClearTags[0].lpszOpen,lpszNewContent,XMLClearTags[0].lpszClose); + } + XMLClear *p=d->pClear+i; + if (lpszNewContent!=p->lpszValue) { free((void*)p->lpszValue); p->lpszValue=lpszNewContent; } + return p; +} + +XMLClear *XMLNode::updateClear_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) +{ + if (!d) return NULL; + int i=indexClear(lpszOldValue); + if (i>=0) return updateClear_WOSD(lpszNewValue,i); + return addClear_WOSD(lpszNewValue,XMLClearTags[0].lpszOpen,XMLClearTags[0].lpszClose); +} + +XMLClear *XMLNode::updateClear_WOSD(XMLClear *newP,XMLClear *oldP) +{ + if (oldP) return updateClear_WOSD(newP->lpszValue,oldP->lpszValue); + return NULL; +} + +XMLNode& XMLNode::operator=( const XMLNode& A ) +{ + // shallow copy + if (this != &A) + { + deleteNodeContent(); + d=A.d; + if (d) (d->ref_count) ++ ; + } + return *this; +} + +XMLNode::XMLNode(const XMLNode &A) +{ + // shallow copy + d=A.d; + if (d) (d->ref_count)++ ; +} + +int XMLNode::nChildNode(XMLCSTR name) const +{ + if (!d) return 0; + int i,j=0,n=d->nChild; + XMLNode *pc=d->pChild; + for (i=0; id->lpszName, name)==0) j++; + pc++; + } + return j; +} + +XMLNode XMLNode::getChildNode(XMLCSTR name, int *j) const +{ + if (!d) return emptyXMLNode; + int i=0,n=d->nChild; + if (j) i=*j; + XMLNode *pc=d->pChild+i; + for (; id->lpszName, name)==0) + { + if (j) *j=i+1; + return *pc; + } + pc++; + } + return emptyXMLNode; +} + +XMLNode XMLNode::getChildNode(XMLCSTR name, int j) const +{ + if (!d) return emptyXMLNode; + int i=0; + while (j-->0) getChildNode(name,&i); + return getChildNode(name,&i); +} + +int XMLNode::positionOfText (int i) const { if (i>=d->nText ) i=d->nText-1; return findPosition(d,i,eNodeText ); } +int XMLNode::positionOfClear (int i) const { if (i>=d->nClear) i=d->nClear-1; return findPosition(d,i,eNodeClear); } +int XMLNode::positionOfChildNode(int i) const { if (i>=d->nChild) i=d->nChild-1; return findPosition(d,i,eNodeChild); } +int XMLNode::positionOfText (XMLCSTR lpszValue) const { return positionOfText (indexText (lpszValue)); } +int XMLNode::positionOfClear(XMLCSTR lpszValue) const { return positionOfClear(indexClear(lpszValue)); } +int XMLNode::positionOfClear(XMLClear *a) const { if (a) return positionOfClear(a->lpszValue); return positionOfClear(); } +int XMLNode::positionOfChildNode(XMLNode x) const +{ + if ((!d)||(!x.d)) return -1; + XMLNodeData *dd=x.d; + XMLNode *pc=d->pChild; + int i=d->nChild; + while (i--) if (pc[i].d==dd) return findPosition(d,i,eNodeChild); + return -1; +} +int XMLNode::positionOfChildNode(XMLCSTR name, int count) const +{ + if (!name) return positionOfChildNode(count); + int j=0; + do { getChildNode(name,&j); if (j<0) return -1; } while (count--); + return findPosition(d,j-1,eNodeChild); +} + +XMLNode XMLNode::getChildNodeWithAttribute(XMLCSTR name,XMLCSTR attributeName,XMLCSTR attributeValue, int *k) const +{ + int i=0,j; + if (k) i=*k; + XMLNode x; + XMLCSTR t; + do + { + x=getChildNode(name,&i); + if (!x.isEmpty()) + { + if (attributeValue) + { + j=0; + do + { + t=x.getAttribute(attributeName,&j); + if (t&&(_tcsicmp(attributeValue,t)==0)) { if (k) *k=i+1; return x; } + } while (t); + } else + { + if (x.isAttributeSet(attributeName)) { if (k) *k=i+1; return x; } + } + } + } while (!x.isEmpty()); + return emptyXMLNode; +} + +// Find an attribute on an node. +XMLCSTR XMLNode::getAttribute(XMLCSTR lpszAttrib, int *j) const +{ + if (!d) return NULL; + int i=0,n=d->nAttribute; + if (j) i=*j; + XMLAttribute *pAttr=d->pAttribute+i; + for (; ilpszName, lpszAttrib)==0) + { + if (j) *j=i+1; + return pAttr->lpszValue; + } + pAttr++; + } + return NULL; +} + +char XMLNode::isAttributeSet(XMLCSTR lpszAttrib) const +{ + if (!d) return FALSE; + int i,n=d->nAttribute; + XMLAttribute *pAttr=d->pAttribute; + for (i=0; ilpszName, lpszAttrib)==0) + { + return TRUE; + } + pAttr++; + } + return FALSE; +} + +XMLCSTR XMLNode::getAttribute(XMLCSTR name, int j) const +{ + if (!d) return NULL; + int i=0; + while (j-->0) getAttribute(name,&i); + return getAttribute(name,&i); +} + +XMLNodeContents XMLNode::enumContents(int i) const +{ + XMLNodeContents c; + if (!d) { c.type=eNodeNULL; return c; } + if (inAttribute) + { + c.type=eNodeAttribute; + c.attrib=d->pAttribute[i]; + return c; + } + i-=d->nAttribute; + c.type=(XMLElementType)(d->pOrder[i]&3); + i=(d->pOrder[i])>>2; + switch (c.type) + { + case eNodeChild: c.child = d->pChild[i]; break; + case eNodeText: c.text = d->pText[i]; break; + case eNodeClear: c.clear = d->pClear[i]; break; + default: break; + } + return c; +} + +XMLCSTR XMLNode::getName() const { if (!d) return NULL; return d->lpszName; } +int XMLNode::nText() const { if (!d) return 0; return d->nText; } +int XMLNode::nChildNode() const { if (!d) return 0; return d->nChild; } +int XMLNode::nAttribute() const { if (!d) return 0; return d->nAttribute; } +int XMLNode::nClear() const { if (!d) return 0; return d->nClear; } +int XMLNode::nElement() const { if (!d) return 0; return d->nAttribute+d->nChild+d->nText+d->nClear; } +XMLClear XMLNode::getClear (int i) const { if ((!d)||(i>=d->nClear )) return emptyXMLClear; return d->pClear[i]; } +XMLAttribute XMLNode::getAttribute (int i) const { if ((!d)||(i>=d->nAttribute)) return emptyXMLAttribute; return d->pAttribute[i]; } +XMLCSTR XMLNode::getAttributeName (int i) const { if ((!d)||(i>=d->nAttribute)) return NULL; return d->pAttribute[i].lpszName; } +XMLCSTR XMLNode::getAttributeValue(int i) const { if ((!d)||(i>=d->nAttribute)) return NULL; return d->pAttribute[i].lpszValue; } +XMLCSTR XMLNode::getText (int i) const { if ((!d)||(i>=d->nText )) return NULL; return d->pText[i]; } +XMLNode XMLNode::getChildNode (int i) const { if ((!d)||(i>=d->nChild )) return emptyXMLNode; return d->pChild[i]; } +XMLNode XMLNode::getParentNode ( ) const { if ((!d)||(!d->pParent )) return emptyXMLNode; return XMLNode(d->pParent); } +char XMLNode::isDeclaration ( ) const { if (!d) return 0; return d->isDeclaration; } +char XMLNode::isEmpty ( ) const { return (d==NULL); } + +XMLNode XMLNode::addChild(XMLCSTR lpszName, char isDeclaration, int pos) + { return addChild_priv(0,stringDup(lpszName),isDeclaration,pos); } +XMLNode XMLNode::addChild_WOSD(XMLCSTR lpszName, char isDeclaration, int pos) + { return addChild_priv(0,lpszName,isDeclaration,pos); } +XMLAttribute *XMLNode::addAttribute(XMLCSTR lpszName, XMLCSTR lpszValue) + { return addAttribute_priv(0,stringDup(lpszName),stringDup(lpszValue)); } +XMLAttribute *XMLNode::addAttribute_WOSD(XMLCSTR lpszName, XMLCSTR lpszValuev) + { return addAttribute_priv(0,lpszName,lpszValuev); } +XMLCSTR XMLNode::addText(XMLCSTR lpszValue, int pos) + { return addText_priv(0,stringDup(lpszValue),pos); } +XMLCSTR XMLNode::addText_WOSD(XMLCSTR lpszValue, int pos) + { return addText_priv(0,lpszValue,pos); } +XMLClear *XMLNode::addClear(XMLCSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, int pos) + { return addClear_priv(0,stringDup(lpszValue),lpszOpen,lpszClose,pos); } +XMLClear *XMLNode::addClear_WOSD(XMLCSTR lpszValue, XMLCSTR lpszOpen, XMLCSTR lpszClose, int pos) + { return addClear_priv(0,lpszValue,lpszOpen,lpszClose,pos); } +XMLCSTR XMLNode::updateName(XMLCSTR lpszName) + { return updateName_WOSD(stringDup(lpszName)); } +XMLAttribute *XMLNode::updateAttribute(XMLAttribute *newAttribute, XMLAttribute *oldAttribute) + { return updateAttribute_WOSD(stringDup(newAttribute->lpszValue),stringDup(newAttribute->lpszName),oldAttribute->lpszName); } +XMLAttribute *XMLNode::updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,int i) + { return updateAttribute_WOSD(stringDup(lpszNewValue),stringDup(lpszNewName),i); } +XMLAttribute *XMLNode::updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName) + { return updateAttribute_WOSD(stringDup(lpszNewValue),stringDup(lpszNewName),lpszOldName); } +XMLCSTR XMLNode::updateText(XMLCSTR lpszNewValue, int i) + { return updateText_WOSD(stringDup(lpszNewValue),i); } +XMLCSTR XMLNode::updateText(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) + { return updateText_WOSD(stringDup(lpszNewValue),lpszOldValue); } +XMLClear *XMLNode::updateClear(XMLCSTR lpszNewContent, int i) + { return updateClear_WOSD(stringDup(lpszNewContent),i); } +XMLClear *XMLNode::updateClear(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue) + { return updateClear_WOSD(stringDup(lpszNewValue),lpszOldValue); } +XMLClear *XMLNode::updateClear(XMLClear *newP,XMLClear *oldP) + { return updateClear_WOSD(stringDup(newP->lpszValue),oldP->lpszValue); } + +void XMLNode::setGlobalOptions(char _guessUnicodeChars, char _strictUTF8Parsing, char _dropWhiteSpace) +{ + guessUnicodeChars=_guessUnicodeChars; dropWhiteSpace=_dropWhiteSpace; strictUTF8Parsing=_strictUTF8Parsing; +#ifndef _XMLUNICODE + if (_strictUTF8Parsing) XML_ByteTable=XML_utf8ByteTable; else XML_ByteTable=XML_asciiByteTable; +#endif +} + +char XMLNode::guessUTF8ParsingParameterValue(void *buf,int l, char useXMLEncodingAttribute) +{ +#ifdef _XMLUNICODE + return 0; +#else + if (l<25) return 0; + if (myIsTextUnicode(buf,l)) return 0; + unsigned char *b=(unsigned char*)buf; + if ((b[0]==0xef)&&(b[1]==0xbb)&&(b[2]==0xbf)) return 1; + + // Match utf-8 model ? + int i=0; + while (i>2 ]; + *(curr++)=base64EncodeTable[(inbuf[0]<<4)&0x3F]; + *(curr++)=base64Fillchar; + *(curr++)=base64Fillchar; + } else if (eLen==2) + { + j=(inbuf[0]<<8)|inbuf[1]; + *(curr++)=base64EncodeTable[ j>>10 ]; + *(curr++)=base64EncodeTable[(j>> 4)&0x3f]; + *(curr++)=base64EncodeTable[(j<< 2)&0x3f]; + *(curr++)=base64Fillchar; + } + *(curr++)=0; + return (XMLSTR)buf; +} + +unsigned int XMLParserBase64Tool::decodeSize(XMLCSTR data,XMLError *xe) +{ + if (xe) *xe=eXMLErrorNone; + int size=0; + unsigned char c; + //skip any extra characters (e.g. newlines or spaces) + while (*data) + { +#ifdef _XMLUNICODE + if (*data>255) { if (xe) *xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } +#endif + c=base64DecodeTable[(unsigned char)(*data)]; + if (c<97) size++; + else if (c==98) { if (xe) *xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } + data++; + } + if (xe&&(size%4!=0)) *xe=eXMLErrorBase64DataSizeIsNotMultipleOf4; + if (size==0) return 0; + do { data--; size--; } while(*data==base64Fillchar); size++; + return (unsigned int)((size*3)/4); +} + +unsigned char XMLParserBase64Tool::decode(XMLCSTR data, unsigned char *buf, int len, XMLError *xe) +{ + if (xe) *xe=eXMLErrorNone; + int i=0,p=0; + unsigned char d,c; + for(;;) + { + +#ifdef _XMLUNICODE +#define BASE64DECODE_READ_NEXT_CHAR(c) \ + do { \ + if (data[i]>255){ c=98; break; } \ + c=base64DecodeTable[(unsigned char)data[i++]]; \ + }while (c==97); \ + if(c==98){ if(xe)*xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } +#else +#define BASE64DECODE_READ_NEXT_CHAR(c) \ + do { c=base64DecodeTable[(unsigned char)data[i++]]; }while (c==97); \ + if(c==98){ if(xe)*xe=eXMLErrorBase64DecodeIllegalCharacter; return 0; } +#endif + + BASE64DECODE_READ_NEXT_CHAR(c) + if (c==99) { return 2; } + if (c==96) + { + if (p==(int)len) return 2; + if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; + return 1; + } + + BASE64DECODE_READ_NEXT_CHAR(d) + if ((d==99)||(d==96)) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + if (p==(int)len) { if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; return 0; } + buf[p++]=(c<<2)|((d>>4)&0x3); + + BASE64DECODE_READ_NEXT_CHAR(c) + if (c==99) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + if (p==(int)len) + { + if (c==96) return 2; + if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; + return 0; + } + if (c==96) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + buf[p++]=((d<<4)&0xf0)|((c>>2)&0xf); + + BASE64DECODE_READ_NEXT_CHAR(d) + if (d==99 ) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + if (p==(int)len) + { + if (d==96) return 2; + if (xe) *xe=eXMLErrorBase64DecodeBufferTooSmall; + return 0; + } + if (d==96) { if (xe) *xe=eXMLErrorBase64DecodeTruncatedData; return 1; } + buf[p++]=((c<<6)&0xc0)|d; + } +} +#undef BASE64DECODE_READ_NEXT_CHAR + +void XMLParserBase64Tool::alloc(int newsize) +{ + if ((!buf)&&(newsize)) { buf=malloc(newsize); buflen=newsize; return; } + if (newsize>buflen) { buf=realloc(buf,newsize); buflen=newsize; } +} + +unsigned char *XMLParserBase64Tool::decode(XMLCSTR data, int *outlen, XMLError *xe) +{ + if (xe) *xe=eXMLErrorNone; + unsigned int len=decodeSize(data,xe); + if (outlen) *outlen=len; + if (!len) return NULL; + alloc(len+1); + if(!decode(data,(unsigned char*)buf,len,xe)){ return NULL; } + return (unsigned char*)buf; +} + diff --git a/xmlParser/xmlParser.dsp b/xmlParser/xmlParser.dsp new file mode 100644 index 0000000..2a6817c --- /dev/null +++ b/xmlParser/xmlParser.dsp @@ -0,0 +1,108 @@ +# Microsoft Developer Studio Project File - Name="xmlParser" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xmlParser - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParser.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParser.mak" CFG="xmlParser - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParser - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xmlParser - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParser - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseVS6" +# PROP Intermediate_Dir "ReleaseVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x813 /d "NDEBUG" +# ADD RSC /l 0x813 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "xmlParser - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugVS6" +# PROP Intermediate_Dir "DebugVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x813 /d "_DEBUG" +# ADD RSC /l 0x813 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "xmlParser - Win32 Release" +# Name "xmlParser - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlParser.cpp +# End Source File +# Begin Source File + +SOURCE=.\xmlTest.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/xmlParser.dsw b/xmlParser/xmlParser.dsw new file mode 100644 index 0000000..dcec5d1 --- /dev/null +++ b/xmlParser/xmlParser.dsw @@ -0,0 +1,65 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "xmlParser"=.\xmlParser.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "xmlParserDLL"=.\xmlParserDLL.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "xmlParserTestDLL"=.\xmlParserTestDLL.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "xmlParserUnicode"=.\xmlParserUnicode.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/xmlParser/xmlParser.h b/xmlParser/xmlParser.h new file mode 100644 index 0000000..7da09a5 --- /dev/null +++ b/xmlParser/xmlParser.h @@ -0,0 +1,529 @@ +/** + **************************************************************************** + *

    XML.c - implementation file for basic XML parser written in ANSI C++ + * for portability. It works by using recursion and a node tree for breaking + * down the elements of an XML document.

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifndef __INCLUDE_XML_NODE__ +#define __INCLUDE_XML_NODE__ + +#include + +#ifdef _UNICODE +// If you comment the next "define" line then the library will never "switch to" _UNICODE (wchar_t*) mode (16/32 bits per characters). +// This is useful when you get error messages like: +// 'XMLNode::openFileHelper' : cannot convert parameter 2 from 'const char [5]' to 'const wchar_t *' +// The _XMLUNICODE preprocessor variable force the XMLParser library into either utf16/32-mode (the proprocessor variable +// must be defined) or utf8-mode(the pre-processor variable must be undefined). +#define _XMLUNICODE +#endif + +#if defined(WIN32) || defined(UNDER_CE) +// comment the next line if you are under windows and the compiler is not Microsoft Visual Studio (6.0 or .NET) +#define _XMLWINDOWS +#endif + +#ifdef DLLENTRY +#undef DLLENTRY +#endif +#ifdef _USE_XMLPARSER_DLL +#ifdef _DLL_EXPORTS_ +#define DLLENTRY __declspec(dllexport) +#else +#define DLLENTRY __declspec(dllimport) +#endif +#else +#define DLLENTRY +#endif + +// uncomment the next line if you want no support for wchar_t* (no need for the or libraries anymore to compile) +//#define XML_NO_WIDE_CHAR + +#ifdef XML_NO_WIDE_CHAR +#undef _XMLWINDOWS +#undef _XMLUNICODE +#endif + +#ifdef _XMLWINDOWS +#include +#else +#define DLLENTRY +#ifndef XML_NO_WIDE_CHAR +#include // to have 'wcsrtombs' for ANSI version + // to have 'mbsrtowcs' for UNICODE version +#endif +#endif + +// Some common types for char set portable code +#ifdef _XMLUNICODE + #ifndef _T + #define _T(c) L ## c + #endif + #define XMLCSTR const wchar_t * + #define XMLSTR wchar_t * + #define XMLCHAR wchar_t +#else + #ifndef _T + #define _T(c) c + #endif + #define XMLCSTR const char * + #define XMLSTR char * + #define XMLCHAR char +#endif +#ifndef FALSE + #define FALSE 0 +#endif /* FALSE */ +#ifndef TRUE + #define TRUE 1 +#endif /* TRUE */ + + +// Enumeration for XML parse errors. +typedef enum XMLError +{ + eXMLErrorNone = 0, + eXMLErrorMissingEndTag, + eXMLErrorEmpty, + eXMLErrorFirstNotStartTag, + eXMLErrorMissingTagName, + eXMLErrorMissingEndTagName, + eXMLErrorNoMatchingQuote, + eXMLErrorUnmatchedEndTag, + eXMLErrorUnmatchedEndClearTag, + eXMLErrorUnexpectedToken, + eXMLErrorInvalidTag, + eXMLErrorNoElements, + eXMLErrorFileNotFound, + eXMLErrorFirstTagNotFound, + eXMLErrorUnknownCharacterEntity, + eXMLErrorCharConversionError, + eXMLErrorCannotOpenWriteFile, + eXMLErrorCannotWriteFile, + + eXMLErrorBase64DataSizeIsNotMultipleOf4, + eXMLErrorBase64DecodeIllegalCharacter, + eXMLErrorBase64DecodeTruncatedData, + eXMLErrorBase64DecodeBufferTooSmall +} XMLError; + +// Enumeration used to manage type of data. Use in conjunction with structure XMLNodeContents +typedef enum XMLElementType +{ + eNodeChild=0, + eNodeAttribute=1, + eNodeText=2, + eNodeClear=3, + eNodeNULL=4 +} XMLElementType; + +// Structure used to obtain error details if the parse fails. +typedef struct XMLResults +{ + enum XMLError error; + int nLine,nColumn; +} XMLResults; + +// Structure for XML clear (unformatted) node (usually comments) +typedef struct { + XMLCSTR lpszValue; XMLCSTR lpszOpenTag; XMLCSTR lpszCloseTag; +} XMLClear; + +// Structure for XML attribute. +typedef struct { + XMLCSTR lpszName; XMLCSTR lpszValue; +} XMLAttribute; + +// Structure for XML clear tags. +typedef struct { + XMLCSTR lpszOpen; int openTagLen; XMLCSTR lpszClose; +} ALLXMLClearTag; + +struct XMLNodeContents; + +typedef struct DLLENTRY XMLNode +{ + private: + + struct XMLNodeDataTag; + + // protected constructors: use one of these four methods to get your first instance of XMLNode: + // - parseString + // - parseFile + // - openFileHelper + // - createXMLTopNode + XMLNode(struct XMLNodeDataTag *pParent, XMLCSTR lpszName, char isDeclaration); + XMLNode(struct XMLNodeDataTag *p); + + public: + + // You can create your first instance of XMLNode with these 4 functions: + // (see complete explanation of parameters below) + + static XMLNode createXMLTopNode(XMLCSTR lpszName, char isDeclaration=FALSE); + static XMLNode parseString (XMLCSTR lpXMLString, XMLCSTR tag=NULL, XMLResults *pResults=NULL); + static XMLNode parseFile (XMLCSTR filename, XMLCSTR tag=NULL, XMLResults *pResults=NULL); + static XMLNode openFileHelper(XMLCSTR filename, XMLCSTR tag=NULL ); + + // The tag parameter should be the name of the first tag inside the XML file. + // If the tag parameter is omitted, the 3 functions return a node that represents + // the head of the xml document including the declaration term (). + + // The "openFileHelper" reports to the screen all the warnings & errors that occurred during + // parsing of the XML file. Since each application has its own way to report and deal with errors, + // you should rather use the "parseFile" function to parse XML files and program yourself thereafter + // an "error reporting" tailored for your needs (instead of using the very crude "error reporting" + // mechanism included inside the "openFileHelper" function). + + // If the XML document is corrupted: + // * The "openFileHelper" method will: + // - display an error message on the console (or inside a messageBox for windows). + // - stop execution (exit). + // I suggest that you write your own "openFileHelper" method tailored to your needs. + // * The 2 other methods will initialize the "pResults" variable with some information that + // can be used to trace the error. + // * If you still want to parse the file, you can use the APPROXIMATE_PARSING option as + // explained inside the note at the beginning of the "xmlParser.cpp" file. + // You can have a user-friendly explanation of the parsing error with this function: + static XMLCSTR getError(XMLError error); + static XMLCSTR getVersion(); + static ALLXMLClearTag* getClearTagTable(); + + XMLCSTR getName() const; // name of the node + XMLCSTR getText(int i=0) const; // return ith text field + int nText() const; // nbr of text field + XMLNode getParentNode() const; // return the parent node + XMLNode getChildNode(int i=0) const; // return ith child node + XMLNode getChildNode(XMLCSTR name, int i) const; // return ith child node with specific name + // (return an empty node if failing) + XMLNode getChildNode(XMLCSTR name, int *i=NULL) const; // return next child node with specific name + // (return an empty node if failing) + XMLNode getChildNodeWithAttribute(XMLCSTR tagName, // return child node with specific name/attribute + XMLCSTR attributeName, // (return an empty node if failing) + XMLCSTR attributeValue=NULL, // + int *i=NULL) const; // + int nChildNode(XMLCSTR name) const; // return the number of child node with specific name + int nChildNode() const; // nbr of child node + XMLAttribute getAttribute(int i=0) const; // return ith attribute + XMLCSTR getAttributeName(int i=0) const; // return ith attribute name + XMLCSTR getAttributeValue(int i=0) const; // return ith attribute value + char isAttributeSet(XMLCSTR name) const; // test if an attribute with a specific name is given + XMLCSTR getAttribute(XMLCSTR name, int i) const; // return ith attribute content with specific name + // (return a NULL if failing) + XMLCSTR getAttribute(XMLCSTR name, int *i=NULL) const; // return next attribute content with specific name + // (return a NULL if failing) + int nAttribute() const; // nbr of attribute + XMLClear getClear(int i=0) const; // return ith clear field (comments) + int nClear() const; // nbr of clear field + XMLSTR createXMLString(int nFormat=1, int *pnSize=NULL) const; // create XML string starting from current XMLNode + // if nFormat==0, no formatting is required + // otherwise this returns an user friendly XML string from a + // given element with appropriate white spaces and carriage returns. + // if pnSize is given it returns the size in character of the string. + XMLError writeToFile(XMLCSTR filename, const char *encoding=NULL, char nFormat=1) const; + // save the content of an xmlNode inside a file. + // the nFormat parameter has the same meaning as in the + // createXMLString function. If "strictUTF8Parsing=1", the + // the encoding parameter is ignored and always set to + // "utf-8". If "_XMLUNICODE=1", the encoding parameter is + // ignored and always set to "utf-16". + XMLNodeContents enumContents(int i) const; // enumerate all the different contents (attribute,child,text, + // clear) of the current XMLNode. The order is reflecting + // the order of the original file/string. + // NOTE: 0 <= i < nElement(); + int nElement() const; // nbr of different contents for current node + char isEmpty() const; // is this node Empty? + char isDeclaration() const; // is this node a declaration + +// to allow shallow/fast copy: + ~XMLNode(); + XMLNode(const XMLNode &A); + XMLNode& operator=( const XMLNode& A ); + + XMLNode(): d(NULL){}; + static XMLNode emptyXMLNode; + static XMLClear emptyXMLClear; + static XMLAttribute emptyXMLAttribute; + + // The following functions allows you to create from scratch (or update) a XMLNode structure + // Start by creating your top node with the "createXMLTopNode" function and then add new nodes with the "addChild" function. + // The parameter 'pos' gives the position where the childNode, the text or the XMLClearTag will be inserted. + // The default value (pos=-1) inserts at the end. The value (pos=0) insert at the beginning (Insertion at the beginning is slower than at the end). + // REMARK: 0 <= pos < nChild()+nText()+nClear() + XMLNode addChild(XMLCSTR lpszName, char isDeclaration=FALSE, int pos=-1); + XMLAttribute *addAttribute(XMLCSTR lpszName, XMLCSTR lpszValuev); + XMLCSTR addText(XMLCSTR lpszValue, int pos=-1); + XMLClear *addClear(XMLCSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, int pos=-1); + // default values: lpszOpen=XMLNode::getClearTagTable()->lpszOpen; + // lpszClose=XMLNode::getClearTagTable()->lpszClose; + XMLNode addChild(XMLNode nodeToAdd, int pos=-1); // If the "nodeToAdd" has some parents, it will be detached + // from it's parents before being attached to the current XMLNode + // Some update functions: + XMLCSTR updateName(XMLCSTR lpszName); // change node's name + XMLAttribute *updateAttribute(XMLAttribute *newAttribute, XMLAttribute *oldAttribute); // if the attribute to update is missing, a new one will be added + XMLAttribute *updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName=NULL,int i=0); // if the attribute to update is missing, a new one will be added + XMLAttribute *updateAttribute(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName); // set lpszNewName=NULL if you don't want to change the name of the attribute + // if the attribute to update is missing, a new one will be added + XMLCSTR updateText(XMLCSTR lpszNewValue, int i=0); // if the text to update is missing, a new one will be added + XMLCSTR updateText(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); // if the text to update is missing, a new one will be added + XMLClear *updateClear(XMLCSTR lpszNewContent, int i=0); // if the clearTag to update is missing, a new one will be added + XMLClear *updateClear(XMLClear *newP,XMLClear *oldP); // if the clearTag to update is missing, a new one will be added + XMLClear *updateClear(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); // if the clearTag to update is missing, a new one will be added + + // Some deletion functions: + void deleteNodeContent(char force=0); // delete the content of this XMLNode and the subtree. + // if force=0, while (references to this node still exist), no memory free occurs + // if force=1, always delete the content of this XMLNode and the subtree and free associated memory + void deleteAttribute(XMLCSTR lpszName); + void deleteAttribute(int i=0); + void deleteAttribute(XMLAttribute *anAttribute); + void deleteText(int i=0); + void deleteText(XMLCSTR lpszValue); + void deleteClear(int i=0); + void deleteClear(XMLClear *p); + void deleteClear(XMLCSTR lpszValue); + + // The strings given as parameters for the following add and update methods (all these methods have + // a name with the postfix "_WOSD" that means "WithOut String Duplication" ) will be free'd by the + // XMLNode class. For example, it means that this is incorrect: + // xNode.addText_WOSD("foo"); + // xNode.updateAttribute_WOSD("#newcolor" ,NULL,"color"); + // In opposition, this is correct: + // xNode.addText("foo"); + // xNode.addText_WOSD(stringDup("foo")); + // xNode.updateAttribute("#newcolor" ,NULL,"color"); + // xNode.updateAttribute_WOSD(stringDup("#newcolor"),NULL,"color"); + // Typically, you will never do: + // char *b=(char*)malloc(...); + // xNode.addText(b); + // free(b); + // ... but rather: + // char *b=(char*)malloc(...); + // xNode.addText_WOSD(b); + // ('free(b)' is performed by the XMLNode class) + + static XMLNode createXMLTopNode_WOSD(XMLCSTR lpszName, char isDeclaration=FALSE); + XMLNode addChild_WOSD(XMLCSTR lpszName, char isDeclaration=FALSE, int pos=-1); + XMLAttribute *addAttribute_WOSD(XMLCSTR lpszName, XMLCSTR lpszValue); + XMLCSTR addText_WOSD(XMLCSTR lpszValue, int pos=-1); + XMLClear *addClear_WOSD(XMLCSTR lpszValue, XMLCSTR lpszOpen=NULL, XMLCSTR lpszClose=NULL, int pos=-1); + + XMLCSTR updateName_WOSD(XMLCSTR lpszName); + XMLAttribute *updateAttribute_WOSD(XMLAttribute *newAttribute, XMLAttribute *oldAttribute); + XMLAttribute *updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName=NULL,int i=0); + XMLAttribute *updateAttribute_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszNewName,XMLCSTR lpszOldName); + XMLCSTR updateText_WOSD(XMLCSTR lpszNewValue, int i=0); + XMLCSTR updateText_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); + XMLClear *updateClear_WOSD(XMLCSTR lpszNewContent, int i=0); + XMLClear *updateClear_WOSD(XMLClear *newP,XMLClear *oldP); + XMLClear *updateClear_WOSD(XMLCSTR lpszNewValue, XMLCSTR lpszOldValue); + + // These are some useful functions when you want to insert a childNode, a text or a XMLClearTag in the + // middle (at a specified position) of a XMLNode tree already constructed. The value returned by these + // methods is to be used as last parameter (parameter 'pos') of addChild, addText or addClear. + int positionOfText(int i=0) const; + int positionOfText(XMLCSTR lpszValue) const; + int positionOfClear(int i=0) const; + int positionOfClear(XMLCSTR lpszValue) const; + int positionOfClear(XMLClear *a) const; + int positionOfChildNode(int i=0) const; + int positionOfChildNode(XMLNode x) const; + int positionOfChildNode(XMLCSTR name, int i=0) const; // return the position of the ith childNode with the specified name + // if (name==NULL) return the position of the ith childNode + + // The setGlobalOptions function allows you to change two global parameters that affect string&file + // parsing. First of all, you most-probably will never have to change these 2 global parameters. + // About the "guessUnicodeChars" parameter: + // If "guessUnicodeChars=1" and if this library is compiled in UNICODE mode, then the + // "parseFile" and "openFileHelper" functions will test if the file contains ASCII + // characters. If this is the case, then the file will be loaded and converted in memory to + // UNICODE before being parsed. If "guessUnicodeChars=0", no conversion will + // be performed. + // + // If "guessUnicodeChars=1" and if this library is compiled in ASCII/UTF8 mode, then the + // "parseFile" and "openFileHelper" functions will test if the file contains UNICODE + // characters. If this is the case, then the file will be loaded and converted in memory to + // ASCII/UTF8 before being parsed. If "guessUnicodeChars=0", no conversion will + // be performed + // + // Sometime, it's useful to set "guessUnicodeChars=0" to disable any conversion + // because the test to detect the file-type (ASCII/UTF8 or UNICODE) may fail (rarely). + // + // About the "strictUTF8Parsing" parameter: + // If "strictUTF8Parsing=0" then we assume that all characters have the same length of 1 byte. + // If "strictUTF8Parsing=1" then the characters have different lengths (from 1 byte to 4 bytes) + // depending on the content of the first byte of the character. + // About the "dropWhiteSpace" parameter: + // + + static void setGlobalOptions(char guessUnicodeChars=1, char strictUTF8Parsing=1, char dropWhiteSpace=1); + + // The next function try to guess if the character encoding is UTF-8. You most-probably will never + // have to use this function. It then returns the appropriate value of the global parameter + // "strictUTF8Parsing" described above. The guess is based on the content of a buffer of length + // "bufLen" bytes that contains the first bytes (minimum 25 bytes; 200 bytes is a good value) of the + // file to be parsed. The "openFileHelper" function is using this function to automatically compute + // the value of the "strictUTF8Parsing" global parameter. There are several heuristics used to do the + // guess. One of the heuristic is based on the "encoding" attribute. The original XML specifications + // forbids to use this attribute to do the guess but you can still use it if you set + // "useXMLEncodingAttribute" to 1 (this is the default behavior and the behavior of most parsers). + + static char guessUTF8ParsingParameterValue(void *buffer, int bufLen, char useXMLEncodingAttribute=1); + + private: + +// these are functions and structures used internally by the XMLNode class (don't bother about them): + + typedef struct XMLNodeDataTag // to allow shallow copy and "intelligent/smart" pointers (automatic delete): + { + XMLCSTR lpszName; // Element name (=NULL if root) + int nChild, // Number of child nodes + nText, // Number of text fields + nClear, // Number of Clear fields (comments) + nAttribute; // Number of attributes + char isDeclaration; // Whether node is an XML declaration - '' + struct XMLNodeDataTag *pParent; // Pointer to parent element (=NULL if root) + XMLNode *pChild; // Array of child nodes + XMLCSTR *pText; // Array of text fields + XMLClear *pClear; // Array of clear fields + XMLAttribute *pAttribute; // Array of attributes + int *pOrder; // order of the child_nodes,text_fields,clear_fields + int ref_count; // for garbage collection (smart pointers) + } XMLNodeData; + XMLNodeData *d; + + char parseClearTag(void *px, ALLXMLClearTag *pa); + char maybeAddTxT(void *pa, XMLCSTR tokenPStr); + int ParseXMLElement(void *pXML); + void *addToOrder(int memInc, int *_pos, int nc, void *p, int size, XMLElementType xtype); + int indexText(XMLCSTR lpszValue) const; + int indexClear(XMLCSTR lpszValue) const; + XMLNode addChild_priv(int,XMLCSTR,char,int); + XMLAttribute *addAttribute_priv(int,XMLCSTR,XMLCSTR); + XMLCSTR addText_priv(int,XMLCSTR,int); + XMLClear *addClear_priv(int,XMLCSTR,XMLCSTR,XMLCSTR,int); + static inline int findPosition(XMLNodeData *d, int index, XMLElementType xtype); + static int CreateXMLStringR(XMLNodeData *pEntry, XMLSTR lpszMarker, int nFormat); + static int removeOrderElement(XMLNodeData *d, XMLElementType t, int index); + static void exactMemory(XMLNodeData *d); + static int detachFromParent(XMLNodeData *d); +} XMLNode; + +// This structure is given by the function "enumContents". +typedef struct XMLNodeContents +{ + // This dictates what's the content of the XMLNodeContent + enum XMLElementType type; + // should be an union to access the appropriate data. + // compiler does not allow union of object with constructor... too bad. + XMLNode child; + XMLAttribute attrib; + XMLCSTR text; + XMLClear clear; + +} XMLNodeContents; + +DLLENTRY void free_XMLDLL(void *t); // {free(t);} + +// Duplicate (copy in a new allocated buffer) the source string. This is +// a very handy function when used with all the "XMLNode::*_WOSD" functions. +// (If (cbData!=0) then cbData is the number of chars to duplicate) +DLLENTRY XMLSTR stringDup(XMLCSTR source, int cbData=0); + +// The 3 following functions are processing strings so that all the characters +// &,",',<,> are replaced by their XML equivalent: &, ", ', <, >. +// These 3 functions are useful when creating from scratch an XML file using the +// "printf", "fprintf", "cout",... functions. If you are creating from scratch an +// XML file using the provided XMLNode class you cannot use these functions (the +// XMLNode class does the processing job for you during rendering). The second +// function ("toXMLStringFast") allows you to re-use the same output buffer +// for all the conversions so that only a few memory allocations are performed. +// If the output buffer is too small to contain thee resulting string, it will +// be enlarged. +DLLENTRY XMLSTR toXMLString(XMLCSTR source); +DLLENTRY XMLSTR toXMLStringFast(XMLSTR *destBuffer,int *destSz, XMLCSTR source); + +// you should not use this one (there is a possibility of "destination-buffer-overflow"): +DLLENTRY XMLSTR toXMLString(XMLSTR dest,XMLCSTR source); + +// Below is a class that allows you to include any binary data (images, sounds,...) +// into an XML document using "Base64 encoding". This class is completely +// separated from the rest of the xmlParser library and can be removed without any problem. +// To include some binary data into an XML file, you must convert the binary data into +// standard text (using "encode"). To retrieve the original binary data from the +// b64-encoded text included inside the XML file use "decode". Alternatively, these +// functions can also be used to "encrypt/decrypt" some critical data contained inside +// the XML. + +class DLLENTRY XMLParserBase64Tool +{ +public: + XMLParserBase64Tool(): buf(NULL),buflen(0){} + ~XMLParserBase64Tool(); + + void freeBuffer(); + + // returns the length of the base64 string that encodes a data buffer of size inBufLen bytes. + // If "formatted" parameter is true, some space will be reserved for a carriage-return every 72 chars. + static int encodeLength(int inBufLen, char formatted=0); + + // The "base64Encode" function returns a string containing the base64 encoding of "inByteLen" bytes + // from "inByteBuf". If "formatted" parameter is true, then there will be a carriage-return every 72 chars. + // The string will be free'd when the XMLParserBase64Tool object is deleted. + // All returned strings are sharing the same memory space. + XMLSTR encode(unsigned char *inByteBuf, unsigned int inByteLen, char formatted=0); + + // returns the number of bytes which will be decoded from "inString". + static unsigned int decodeSize(XMLCSTR inString, XMLError *xe=NULL); + + // returns a pointer to a buffer containing the binary data decoded from "inString" + // If "inString" is malformed NULL will be returned + // The output buffer will be free'd when the XMLParserBase64Tool object is deleted. + // All output buffer are sharing the same memory space. + unsigned char* decode(XMLCSTR inString, int *outByteLen=NULL, XMLError *xe=NULL); + + // The next function is deprecated. + // decodes data from "inString" to "outByteBuf". You need to provide the size (in byte) of "outByteBuf" + // in "inMaxByteOutBuflen". If "outByteBuf" is not large enough or if data is malformed, then "FALSE" + // will be returned; otherwise "TRUE". + static unsigned char decode(XMLCSTR inString, unsigned char *outByteBuf, int inMaxByteOutBuflen, XMLError *xe=NULL); + +private: + void *buf; + int buflen; + void alloc(int newsize); +}; + +#undef DLLENTRY + +#endif diff --git a/xmlParser/xmlParser.html b/xmlParser/xmlParser.html new file mode 100644 index 0000000..b9f83e0 --- /dev/null +++ b/xmlParser/xmlParser.html @@ -0,0 +1,374 @@ + + + + + +Small, simple, cross-platform, free and fast C++ XML Parser + + + + + + + + +

    +
    Small, simple, + cross-platform, free and fast +  C++ XML Parser +
    +

    + +

    This project started from my frustration that I could not find any simple, + portable XML Parser to use inside my tools (see CONDOR + for example). Let's look at the well-known Xerces C++ library: the complete + library is 53 MB! (12.1 MB compressed in a zipfile). I am currently developping + many small tools. I am using XML as standard for all my input /ouput configuration + and data files. The source code of my small tools is usually around 600KB. In + these conditions, don't you think that 53MB to be able to read an XML file is + a little bit "too much"? So I created my own XML parser. My XML parser + "library" is composed of only 2 files: a .cpp file and a .h file. + The total size is 104 KB.
    +
    + Here is how it works: The XML parser loads a full XML file in memory, it parses + the file and it generates a tree structure representing the XML file. Of course, + you can also parse XML data that you have already stored yourself into a memory + buffer. Thereafter, you can easily "explore" the tree to get your + data. You can also modify the tree using "add" and "delete" + functions and regenerate a formatted XML string from a subtree. Memory management + is totally transparent through the use of smart pointers (in other words, you + will never have to do any new, delete, malloc or free)("Smart pointers" + are a primitive version of the garbage collector in Java).
    +
    + Here are the characteristics of the XMLparser library: +

      +
    • Non-validating XML parser written in standard C++ (DTD's or XSD's informations + are ignored).
    • +
    • Cross-plateform: the library is currently used every day on Solaris, Linux + (32bit and 64bit) and Windows to manipulate "small" PMML + documents (10 MB).
      + The library has been tested and is working flawlessly using the following + compilers: gcc (under linux, Mac OS X Tiger and under many unix flavours), + Visual Studio 6.0, Visual Studio .NET (under Windows 9x,NT,2000,XP,Vista,CE,mobile), + Intel C/C++ compiler, SUN CC compiler, C++ Borland Compiler. The library is + also used under QNX.
    • +
    • The parser builds a tree structure that you can "explore" easily + (DOM-type parser).
    • +
    • The parser can be used to generate XML strings from subtrees (it's called + rendering). You can also save subtrees directly to files (automatic "Byte + Order Mark"-BOM support).
    • +
    • Modification or "from scratch creation" of large XML tree structures + in memory using funtions like addChild, + addAttribute,updateAttribute,deleteAttribute,...
    • +
    • It's SIMPLE: no need to learn how to use dozens of classes: + there is only one simple class: the 'XMLNode' class (that represents one node + of the XML tree).
    • +
    • Very efficient (Efficiency is required to be able to handle BIG + files): +
        +
      • The string parser is very efficient: It does only one + pass over the XML string to create the tree. It does the minimal amount + of memory allocations. For example: it does NOT use slow STL::String class + but plain, simple and fast C malloc 's. It also allocates large chunk + of memory instead of many small chunks. Inside Visual C++, the "debug + versions" of the memory allocation functions are very slow: Do not + forget to compile in "release mode" to get maximum speed.
      • +
      • The "tree exploration" is very efficient because + all operations on the 'XMLNode' class are handled through references: + there are no memory copy, no memory allocation, never.
      • +
      • The XML string rendering is very efficient: It does + one pass to compute the total memory size of the XML string and a second + pass to actually create the string. There is thus only one memory allocation + and no extra memory copy. Other libraries are slower because they are + using the string concatenation operator that requires many memory (re-)allocations + and memory copy.
      • +
      +
    • +
    • In-memory parsing
    • +
    • Supports XML namespaces
    • +
    • Very small and totally stand-alone (not built on top of something else). + Uses only standard <stdio.h> library (and only for the 'fopen' and the + 'fread' functions to load the XML file).
    • +
    • Easy to integrate into you own projects: it's only 2 files! The .h file + does not contain any implementation code. Compilation is thus very fast.
    • +
    • Robust (I used it every day at work since 2004).
      + Optionnally, if you define the C++ prepocessor directives STRICT_PARSING and/or + APPROXIMATE_PARSING, the library can be "forgiving" in case of errors + inside the XML.
      + I have tried to respect the XML-specs given at: http://www.w3.org/TR/REC-xml/ +
    • Fully integrated error handling : +
        +
      • The string parser gives you the precise position and + type of the error inside the XML string (if an error is detected).
      • +
      • The library allows you to "explore" a part + of the tree that is missing. However data extracted from "missing + subtrees" will be NULL. This way, it's really easy to code "error + handling" procedures.
      • +
      +
    • Thread-safe (however the global parameters "guessUnicodeChar" + and"strictUTF8Parsing" must be unique because they are shared by + all threads).
    • +
    • Full Supports for all character sets: ANSI / UTF-8 / Unicode 16bit / Unicode + 32bit characters support (Windows, Linux, Linux 64 bits & Solaris version + only) +
        +
      • For the unicode version of the library: Automatic conversion + to Unicode before parsing (if the input XML file is standard ansi 8bit + characters).
      • +
      • For the ascii version of the library: Automatic conversion + to ascii before parsing (if the input XML file is unicode 16 or 32bit + wide characters).
      • +
      + The library is now able to handle successfuly chinese, cyrilic and other extended + characters thanks to an extended UTF-8 support (see this UTF-8-demo + to show the characters available). If you are still experiencing character + encoding problems, I suggest you to convert your XML files to UTF-8 using + a tool like iconv + (precompiled + win32 binary).
    • +
    • Transparent memory management through the use of smart pointers.
    • +
    • Limited Support for character entities. The current known character entities + are:
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      &lt;< less than
      &gt;> greater than
      &amp; &ampersand
      &apos;' apostrophe
      &quot;"quotation mark
      &#x04B;Kdirect access to the ascii code of any + character
      + (in hexadecimal)
      &#75;Kdirect access to the ascii code of any + character
      + (in standard decimal)
      +
      +
    • +
    • Support for a wide range of clearTags that are containing unformatted text:
      + <![CDATA[ ... ]]>, + <!-- ... -->, <PRE> ... </PRE>, <Script> ... </Script>, + <!DOCTYPE ... >
      + Unformatted texts are not parsed by the library and can contain items that + are usually 'forbidden' in XML (for example: html code)
    • +
    • Support for inclusion of pure binary data (images, sounds,...) into the + XML document using the four provided ultrafast Base64 conversion functions.
    • +
    • The library is under the BSD LICENSE. It means that you can use it freely + in all your applications, even the commercial ones, without any restriction.
    • +
    • Easy to customize: The code is small, commented and written in a plain and + simple way. Thus, if you really need to change something (but I doubt of it), + it's easy.
    • +
    +

    Download

    +If you like this library, you can either add +a message in the guestbook +or create a URL-Link towards this page from your website (use this URL: http://www.applied-mathematics.net/tools/xmlParser.html). +If you want to help other people to produce better softwares using XML technology, +you can increase the visibility of this library by adding a URL-link toward this +page (so that its google-ranking increases ;-) ).
    +
    +Download here: small, +simple, multi-Plateform XMLParser library with examples (zipfile).
    +Inside the zip file, you will find 5 examples: +
      +
    • ansi unix/solaris project example (makefile based)
    • +
    • wide char unix/solaris project example (makefile based)
    • +
    • ansi windows project example (for Visual Studio 6 and .NET)
    • +
    • wide char windows project example (for Visual Studio 6 and .NET)
    • +
    • ansi windows .dll project with a small test project to check the + generated .dll
    • +
    +

    Log

    +Version changes: +
      +
    • V1.00: February 20, 2002: initial version.
    • +
    • V1.20: July 22, 2006: After 13 minor changes, 2 major changes, + 8 bug fixes and 23 functionality additions(at user's request), I decided to + switch to V2.01.
    • +
    • V2.01: July 24, 2006: 1 major change, 2 minor change, 3 + additions +
        +
      • Major Change: no more "stringDup" + required for functions like "addText", "addAttribute",... +
        + The old behavior is still accessible through functions like "addText_WOSD", + "addAttribute_WOSD",... ("_WSOD" stands for "WithOut + StringDup").
        + This change greatly simplifies the user's code. Unfortunately, old user's + code must be updated to work with the new version.
        + Fortunately, all the user's code used to READ the content of an XML file + is left unchanged: Only the "creation of XML" and the "update + of XML" user's code require a little updating work.
      • +
      +
    • +
    • V2.02: July 25, 2006: 1 minor change
    • +
    • V2.03: July 28, 2006: 1 minor change
    • +
    • V2.04: August 6, 2006: 1 addition
    • +
    • V2.05: August 15, 2006: 1 addition
    • +
    • V2.06: August 16, 2006: 2 additions
    • +
    • V2.07: August 22, 2006: 1 addition
    • +
    • V2.08: August 22, 2006: 1 bug fix
    • +
    • V2.09: August 31, 2006: 1 bug fix
    • +
    • V2.10: September 21, 2006: 1 bug fix
    • +
    • V2.11: October 24, 2006: 3 additions, 1 bug fix. +
        +
      • added the function getParentNode(). Thanks to Jakub + Siudzinski for notifying me a good way to do it easily.
      • +
      +
    • +
    • V2.12: October 25, 2006: 2 additions
    • +
    • V2.13: October 31, 2006: 1 minor change, 1 bug fix
    • +
    • V2.14: November 13, 2006: 1 minor change, 1 bug fix
    • +
    • V2.15: December 22, 2006: 2 additions
    • +
    • V2.16: December 27, 2006: 1 minor change
    • +
    • V2.17: January 9, 2007: 1 addition, 1 minor change +
    • +
    • V2.18: January 15, 2007: 1 bug fix
    • +
    • V2.19: January 30, 2007: 1 bug fix, 3 additions
    • +
    • V2.20: February 17, 2007: 1 addition +
        +
      • added a Visual Studio projet file to build a DLL version + of the library.
        + Under Windows, when I have to debug a software that is using the XMLParser + Library, it's usually a nightmare because the library is sooOOOoooo slow + in debug mode. To solve this problem, during all the debugging session, + I use a very fast DLL version of the XMLParser Library (the DLL is compiled + in release mode). Using the DLL version of the XMLParser Library allows + me to have lightening XML parsing speed, even in debug mode! Other than + that, the DLL version is useless: In the release version of my tool, I + always use the normal, ".cpp"-based, XMLParser Library.
      • +
      +
    • +
    • V2.21: Mars 1, 2007: 1 minor change, 1 bug fix
    • +
    • V2.22: Mars 6, 2007: 1 bug fix
    • +
    • V2.23: Mars 13, 2007: 1 bug fix +
        +
      • FIX: the library is now thread-safe.
      • +
      +
    • +
    +

    A small tutorial

    +Let's assume that you want to parse the XML file "PMMLModel.xml" +that contains:

    +
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <PMML version="3.0"
    xmlns="http://www.dmg.org/PMML-3-0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema_instance" >
    <Header copyright="Frank Vanden Berghen"> + Hello World!
    <Application name="&lt;Condor>" version="1.99beta" />
    </Header> + <Extension name="keys"> <Key name="urn"> </Key> </Extension>
    <DataDictionary>
    <DataField name="persfam" optype="continuous" dataType="double">
    <Value value="9.900000e+001" property="missing" />
    </DataField>
    <DataField name="prov" optype="continuous" dataType="double" />
    <DataField name="urb" optype="continuous" dataType="double" />
    <DataField name="ses" optype="continuous" dataType="double" />
    </DataDictionary>
    <RegressionModel functionName="regression" modelType="linearRegression">
    <RegressionTable intercept="0.00796037">
    <NumericPredictor name="persfam" coefficient="-0.00275951" />
    <NumericPredictor name="prov" coefficient="0.000319433" />
    <NumericPredictor name="ses" coefficient="-0.000454307" /> + <NONNumericPredictor name="testXmlExample" />
    </RegressionTable>
    </RegressionModel>
    </PMML>
    +

    Let's analyse line by line the following small example program: +

    #include <stdio.h>    // to get "printf" function
    +#include <stdlib.h>   // to get "free" function
    +#include "xmlParser.h"
    +
    +int main(int argc, char **argv)
    +{
    +  // this open and parse the XML file:
    XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml","PMML");
    + // this prints "<Condor>": + XMLNode xNode=xMainNode.getChildNode("Header"); + printf("Application Name is: '%s'\n", xNode.getChildNode("Application").getAttribute("name"));
    + // this prints "Hello world!": + printf("Text inside Header tag is :'%s'\n", xNode.getText());
    + // this gets the number of "NumericPredictor" tags:
    xNode=xMainNode.getChildNode("RegressionModel").getChildNode("RegressionTable"); + int n=xNode.nChildNode("NumericPredictor"); + + // this prints the "coefficient" value for all the "NumericPredictor" tags:
    for (int i=0; i<n; i++) + printf("coeff %i=%f\n",i+1,atof(xNode.getChildNode("NumericPredictor",i).getAttribute("coefficient"))); + + // this prints a formatted ouput based on the content of the first "Extension" tag of the XML file:
    char *t=xMainNode.getChildNode("Extension").createXMLString(true);
    printf("%s\n",t);
    free(t); + return 0;
    }
    +

    To manipulate the data contained inside the XML file, the first operation is + to get an instance of the class XMLNode that is representing the XML file in + memory. You can use: +

    XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml","PMML");
    +or, if you use the UNICODE windows version of the library: +
    XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml",_T("PMML"));
    +or, if the XML document is already in a memory buffer pointed by variable "char +*xmlDoc" : +
    XMLNode xMainNode=XMLNode::parseString(xmlDoc,"PMML");
    +This will create an object called xMainNode +that represents the first tag named PMML +found inside the XML document. This object is the top of tree structure representing +the XML file in memory. The following command creates a new object called xNode +that represents the "Header" +tag inside the "PMML" +tag.

    +
    XMLNode xNode=xMainNode.getChildNode("Header");
    +The following command prints on the screen "<Condor>" +(note that the "&lt;" +character entity has been replaced by "<"): +
    printf("Application Name is: '%S'\n", xNode.getChildNode("Application").getAttribute("name"));
    +The following command prints on the screen "Hello +World!": +
    printf("Text inside Header tag is :'%s'\n", xNode.getText());
    +Let's assume you want to "go to" the tag named "RegressionTable":

    +
    xNode=xMainNode.getChildNode("RegressionModel").getChildNode("RegressionTable");
    +

    Note that the previous value of the object named xNode + has been "garbage collected" so that no memory leak occurs. If you + want to know how many tags named "NumericPredictor" + are contained inside the tag named "RegressionTable":

    +
    int n=xNode.nChildNode("NumericPredictor");
    +

    The variable n now + contains the value 3. If you want to print the value of the coefficient + attribute for all the NumericPredictor + tags: +

    for (int i=0; i<n; i++)
    +  printf("coeff %i=%f\n",i+1,atof(xNode.getChildNode("NumericPredictor",i).getAttribute("coefficient")));
    +Or equivalently, but faster at runtime:
    +
    +int iterator=0;
    +for (int i=0; i<n; i++)
    +  printf("coeff %i=%f\n",i+1,atof(xNode.getChildNode("NumericPredictor",&iterator).getAttribute("coefficient")));
    +

    If you want to generate and print on the screen the following XML formatted + text:

    +
    <Extension name="keys">
    +  <Key name="urn" />
    +</Extension>
    +
    +

    You can use: +

    char *t=xMainNode.getChildNode("Extension").createXMLString(true);
    printf("%s\n",t);
    free(t);
    +

    Note that you must free the memory yourself (using the "free(t);" + function) : only the XMLNode objects and their contents are "garbage collected". + The parameter true to + the function createXMLString + means that we want formatted output.
    +
    + The XML Parser library contains many more other small usefull methods that are + not described here (The zip file contains some additional examples to explain + other functionalities). These methods allows you to: +

      +
    • navigate easily inside the structure of the XML document
    • +
    • create, update & save your own XML structure of XMLNode's.
    • +
    +That's all folks! With this basic knowledge, you should be able to retreive easily +any data from any XML file!


    + + diff --git a/xmlParser/xmlParser.ncb b/xmlParser/xmlParser.ncb new file mode 100644 index 0000000..8fdb43e --- /dev/null +++ b/xmlParser/xmlParser.ncb Binary files differ diff --git a/xmlParser/xmlParser.sln b/xmlParser/xmlParser.sln new file mode 100644 index 0000000..1c68c7c --- /dev/null +++ b/xmlParser/xmlParser.sln @@ -0,0 +1,45 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParser", "xmlParser.vcproj", "{475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParserDLL", "xmlParserDLL.vcproj", "{99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParserTestDLL", "xmlParserTestDLL.vcproj", "{7C050873-A259-4613-8D3A-978D42266E78}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xmlParserUnicode", "xmlParserUnicode.vcproj", "{B2310CFF-124A-4DE6-A3BA-AEDC557443F0}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Debug.ActiveCfg = Debug|Win32 + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Debug.Build.0 = Debug|Win32 + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Release.ActiveCfg = Release|Win32 + {475FDDA5-6EA6-48B8-AFE7-23BAA6ECA139}.Release.Build.0 = Release|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Debug.ActiveCfg = Debug|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Debug.Build.0 = Debug|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Release.ActiveCfg = Release|Win32 + {99EDB2C0-93FB-45E5-AC90-6CF2F2F40AE3}.Release.Build.0 = Release|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Debug.ActiveCfg = Debug|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Debug.Build.0 = Debug|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Release.ActiveCfg = Release|Win32 + {7C050873-A259-4613-8D3A-978D42266E78}.Release.Build.0 = Release|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Debug.ActiveCfg = Debug|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Debug.Build.0 = Debug|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Release.ActiveCfg = Release|Win32 + {B2310CFF-124A-4DE6-A3BA-AEDC557443F0}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/xmlParser/xmlParser.suo b/xmlParser/xmlParser.suo new file mode 100644 index 0000000..c13e1f8 --- /dev/null +++ b/xmlParser/xmlParser.suo Binary files differ diff --git a/xmlParser/xmlParser.vcproj b/xmlParser/xmlParser.vcproj new file mode 100644 index 0000000..9c00903 --- /dev/null +++ b/xmlParser/xmlParser.vcproj @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/xmlParserDLL.dsp b/xmlParser/xmlParserDLL.dsp new file mode 100644 index 0000000..6b0ebb2 --- /dev/null +++ b/xmlParser/xmlParserDLL.dsp @@ -0,0 +1,116 @@ +# Microsoft Developer Studio Project File - Name="xmlParserDLL" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=xmlParserDLL - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParserDLL.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParserDLL.mak" CFG="xmlParserDLL - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParserDLL - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "xmlParserDLL - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParserDLL - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseDLL" +# PROP Intermediate_Dir "ReleaseDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XMLPARSERDLL_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_USE_XMLPARSER_DLL" /D "_DLL_EXPORTS_" /FD /c +# SUBTRACT CPP /YX +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x80c /d "NDEBUG" +# ADD RSC /l 0x80c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /version:2.20 /dll /pdb:none /machine:I386 /out:"ReleaseDLL/xmlParser.dll" +# Begin Special Build Tool +SOURCE="$(InputPath)" +PostBuild_Cmds=mkdir releaseTestDLL mkdir debugTestDLL copy releaseDLL\xmlParser.dll releaseTestDLL copy releaseDLL\xmlParser.dll debugTestDLL +# End Special Build Tool + +!ELSEIF "$(CFG)" == "xmlParserDLL - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugDLL" +# PROP Intermediate_Dir "DebugDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XMLPARSERDLL_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USE_XMLPARSER_DLL" /D "_DLL_EXPORTS_" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x80c /d "_DEBUG" +# ADD RSC /l 0x80c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"DebugDLL/xmlParser.dll" /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "xmlParserDLL - Win32 Release" +# Name "xmlParserDLL - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlParser.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/xmlParserDLL.vcproj b/xmlParser/xmlParserDLL.vcproj new file mode 100644 index 0000000..c9ce934 --- /dev/null +++ b/xmlParser/xmlParserDLL.vcproj @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/xmlParserTestDLL.dsp b/xmlParser/xmlParserTestDLL.dsp new file mode 100644 index 0000000..f901ba5 --- /dev/null +++ b/xmlParser/xmlParserTestDLL.dsp @@ -0,0 +1,106 @@ +# Microsoft Developer Studio Project File - Name="xmlParserTestDLL" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xmlParserTestDLL - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParserTestDLL.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParserTestDLL.mak" CFG="xmlParserTestDLL - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParserTestDLL - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xmlParserTestDLL - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParserTestDLL - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseTestDLL" +# PROP Intermediate_Dir "ReleaseTestDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x80c /d "NDEBUG" +# ADD RSC /l 0x80c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib xmlParser.lib /nologo /subsystem:console /machine:I386 /libpath:"releaseDLL" + +!ELSEIF "$(CFG)" == "xmlParserTestDLL - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "debugTestDLL" +# PROP Intermediate_Dir "debugTestDLL" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_USE_XMLPARSER_DLL" /YX /FD /GZ /c +# ADD BASE RSC /l 0x80c /d "_DEBUG" +# ADD RSC /l 0x80c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib xmlParser.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"releaseDLL" + +!ENDIF + +# Begin Target + +# Name "xmlParserTestDLL - Win32 Release" +# Name "xmlParserTestDLL - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlTest.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/xmlParserTestDLL.vcproj b/xmlParser/xmlParserTestDLL.vcproj new file mode 100644 index 0000000..a7348ab --- /dev/null +++ b/xmlParser/xmlParserTestDLL.vcproj @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/xmlParserUnicode.dsp b/xmlParser/xmlParserUnicode.dsp new file mode 100644 index 0000000..cac1ff7 --- /dev/null +++ b/xmlParser/xmlParserUnicode.dsp @@ -0,0 +1,108 @@ +# Microsoft Developer Studio Project File - Name="xmlParserUnicode" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xmlParserUnicode - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "xmlParserUnicode.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "xmlParserUnicode.mak" CFG="xmlParserUnicode - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xmlParserUnicode - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xmlParserUnicode - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xmlParserUnicode - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ReleaseUnicodeVS6" +# PROP Intermediate_Dir "ReleaseUnicodeVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c +# ADD BASE RSC /l 0x813 /d "NDEBUG" +# ADD RSC /l 0x813 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "xmlParserUnicode - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "xmlParserUnicode___Win32_Debug" +# PROP BASE Intermediate_Dir "xmlParserUnicode___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "DebugUnicodeVS6" +# PROP Intermediate_Dir "DebugUnicodeVS6" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /GZ /c +# ADD BASE RSC /l 0x813 /d "_DEBUG" +# ADD RSC /l 0x813 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "xmlParserUnicode - Win32 Release" +# Name "xmlParserUnicode - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\xmlParser.cpp +# End Source File +# Begin Source File + +SOURCE=.\xmlTestUnicode.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\xmlParser.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/xmlParser/xmlParserUnicode.vcproj b/xmlParser/xmlParserUnicode.vcproj new file mode 100644 index 0000000..ce4ea12 --- /dev/null +++ b/xmlParser/xmlParserUnicode.vcproj @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xmlParser/xmlTest.cpp b/xmlParser/xmlTest.cpp new file mode 100644 index 0000000..b5ffcfb --- /dev/null +++ b/xmlParser/xmlTest.cpp @@ -0,0 +1,240 @@ +/** + **************************************************************************** + *

    XML.c - XML parser test example - char* version

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifdef WIN32 +#define _CRT_SECURE_NO_DEPRECATE +#endif + +#include +#include "xmlParser.h" + +void myfree(void *t); // {free(t);} + +int main(int argc, char **argv) +{ + /********************************************************************************* + * * + * Example 1: Basic operations to parse and collect data from a XML file * + * * + *********************************************************************************/ + + // this open and parse the XML file: + XMLNode xMainNode=XMLNode::openFileHelper("PMMLModel.xml","PMML"); + + // this prints "RANK For ": + XMLNode xNode=xMainNode.getChildNode("Header"); + printf("Application Name is: '%s' (note that < has been replaced by '<')\n", xNode.getChildNode("Application").getAttribute("name")); + + // this prints "Hello World!" + printf("Text inside Header tag is :'%s'\n", xNode.getText()); + + // this gets the number of "NumericPredictor" tags: + xNode=xMainNode.getChildNode("RegressionModel").getChildNode("RegressionTable"); + int n=xNode.nChildNode("NumericPredictor"); + + // this prints the "coefficient" value for all the "NumericPredictor" tags: + int i,myIterator=0; + for (i=0; i + // Hello universe. + // ... and we transform it into a standard C string that is printed on screen. + xMainNode=XMLNode::createXMLTopNode("xml",TRUE); + xMainNode.addAttribute("version","1.0"); + xNode=xMainNode.addChild("body"); + xNode.addText("Hello \"univ\"!"); + xNode.deleteText(); + xNode.addText("Hello \"universe\"!"); + xNode.addAttribute("color","#wrongcolor"); + xNode.updateAttribute("#FFFFFF",NULL,"color"); + + t=xMainNode.createXMLString(false); + printf("XMLString created from scratch:\n%s",t); + myfree(t); + + // we delete some parts: + xNode.deleteAttribute("color"); + t=xMainNode.createXMLString(false); + printf("\nWith the \"color\" attribute deleted:\n%s\n\n",t); + myfree(t); + + /********************************************************************************************************* + * * + * Example 4: by default, the XML parser is "forgiving" with respect to errors inside XML strings&files * + * * + *********************************************************************************************************/ + + // By default, the XML parser is "forgiving": + // (You can de-activate this behavior: see the header of the xmlParser.cpp file) + const char *t2="some textother text "; + XMLResults xe; + xMainNode=XMLNode::parseString(t2,NULL,&xe); + t=xMainNode.createXMLString(false); + printf("The following XML: %s\n ...is parsed as: %s\nwith the following info: '%s'\n",t2,t?t:"(null)",XMLNode::getError(xe.error)); + myfree(t); + + /******************************************************* + * * + * Example 5: deleting a part of the tree of XMLNode * + * * + *******************************************************/ + + // this deletes the "other text" subtree part: + xMainNode.getChildNode("b",1).deleteNodeContent(); + + // To perform the same "delete" as above, we can also do: + // xNode=xMainNode.getChildNode("a").getChildNode("b",1); xNode.deleteNodeContent(); xNode=XMLNode::emptyXMLNode; + // If you forget the last part of the delete ("xNode=XMLNode::emptyXMLNode"), then the XMLNode will NOT be deleted: + // In this case, as long as there exists a reference to the XMLNode, the smartPointer mechanism prevent the node to be deleted. + + // To perform the same "delete" as above, we can also do: + // xNode=xMainNode.getChildNode("a").getChildNode("b",1); xNode.deleteNodeContent(true); + // The "true" parameter will force the deletion, even if there still exists some references to the XMLNode. + + t=xMainNode.createXMLString(false); + printf("\n...with the wrong node deleted: %s\n",t); + myfree(t); + + /************************************************************************************************************ + * * + * Example 5: inserting (and moving) a new XMLNode in the middle of an already existing XMLNode structure * + * * + ************************************************************************************************************/ + + // This creates a XMLNode 'a' that is "some textother text": + xMainNode=XMLNode::parseString(t2); + // This creates a XMLNode 'c' that is "hello": + xNode=XMLNode::parseString("hello"); + + xMainNode.addChild(xNode,0); + t=xMainNode.createXMLString(false); + printf("\nWe inserted a new node 'c' as the first tag inside 'a':\n %s",t); + myfree(t); + + xMainNode.addChild(xNode,xMainNode.positionOfChildNode("b",1)); + t=xMainNode.createXMLString(false); + printf("\nWe moved the node 'c' at the position of the second 'b' tag:\n %s\n",t); + myfree(t); + + /******************************************* + * * + * Example 6: base 64 encoding/decoding * + * * + *******************************************/ + + unsigned char *originalBinaryData=(unsigned char *)"this is binary data."; + XMLParserBase64Tool b64; + t=b64.encode(originalBinaryData,21); + printf( + "\nTo be able to include any binary data into an xml file, some Base64 conversion" + "\nfunctions (binary data <--> ascii/utf8 text) are provided:\n" + " original binary data : %s\n" + " encoded as text : %s\n",originalBinaryData,t); + printf(" decoded as binary again: %s\n",b64.decode(t)); + + /*************************************************************** + * * + * Example 7: demonstration of multi-lingual XML file parsing * + * * + ****************************************************************/ + + printf("\nProcessing XML file containing chinese, cyrilic and other extended characters.\n"); + xMainNode=XMLNode::openFileHelper("utf8test.xml"); + xMainNode.writeToFile("outputTestUTF8.xml"); + printf("... resulting multi-lingual file is 'outputTestUTF8.xml'.\n"); + + /****************************************************** + * * + * Example 8: usage of the "getParentNode()" method * + * * + ******************************************************/ + + printf("\nTwo examples of usage of the \"getParentNode()\" method:\n"); + // let's consider these 2 examples (each example on a separate line): + xMainNode=XMLNode::parseString(t2); xNode=xMainNode.getChildNode(); xNode=xNode.getParentNode(); t=(char*) xNode.getName(); printf(" Ex1: Name of top node; '%s'\n",t?t:"null"); + xMainNode=XMLNode::parseString(t2); xMainNode=xMainNode.getChildNode(); xMainNode=xMainNode.getParentNode(); t=(char*)xMainNode.getName(); printf(" Ex2: Name of top node; '%s'\n",t?t:"null"); + // In these two examples, I create a tree of XMLNode based on the string + // "some textother text". After parsing this string + // I get a XMLNode that represents the tag. Thereafter I "go down" one + // level, using getChildNode: I now have a XMLNode that represents the tag. + // Thereafter I "go up" one level, using getParentNode(): I now have once again + // a XMLNode that represents the tag. Thereafter, I print the name ('a') of + // this last XMLNode. The first example is working as intended (it prints 'a' + // on the screen). However, the second example prints "null" because when we + // did "xMainNode=xMainNode.getChildNode()" we lost all references to the + // top node and thus it's automatically "garbage collected" (free memory). + + return 0; +} + +#ifdef _USE_XMLPARSER_DLL + // We are using the DLL version of the XMLParser library. + // NOTE: With visual studio .NET, you can always use the standard "free()" function: You don't + // need a special "DLL free" version. + void myfree(void *t){free_XMLDLL(t);} +#else + // we are using the normal, classical version of the XMLParser library (directly from C++ sources) + void myfree(void *t){free(t);} +#endif diff --git a/xmlParser/xmlTestUnicode.cpp b/xmlParser/xmlTestUnicode.cpp new file mode 100644 index 0000000..64121e5 --- /dev/null +++ b/xmlParser/xmlTestUnicode.cpp @@ -0,0 +1,213 @@ +/** + **************************************************************************** + *

    XML.c - XML parser test example - wchar_t* version

    + * + * @version V2.23 + * @author Frank Vanden Berghen + * + * BSD license: + * Copyright (c) 2002, Frank Vanden Berghen + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Frank Vanden Berghen nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + **************************************************************************** + */ +#ifdef WIN32 +#define _CRT_SECURE_NO_DEPRECATE +#endif + +#include +#include "xmlParser.h" + +int main(int argc, char **argv) +{ + /********************************************************************************* + * * + * Example 1: Basic operations to parse and collect data from a XML file * + * * + *********************************************************************************/ + + // this open and parse the XML file: + XMLNode xMainNode=XMLNode::openFileHelper(_T("PMMLModel.xml"),_T("PMML")); + + // this prints "RANK For ": + XMLNode xNode=xMainNode.getChildNode(_T("Header")); + printf("Application Name is: '%S'\n", xNode.getChildNode(_T("Application")).getAttribute(_T("name"))); + + // this prints "Hello World!" + printf("Text inside Header tag is :'%S'\n", xNode.getText()); + + // this gets the number of "NumericPredictor" tags: + xNode=xMainNode.getChildNode(_T("RegressionModel")).getChildNode(_T("RegressionTable")); + int n=xNode.nChildNode(_T("NumericPredictor")); + + // this prints the "coefficient" value for all the "NumericPredictor" tags: + int i,myIterator=0; + for (i=0; i + // Hello "universe". + // ... and we transform it into a standard C string that is printed on screen. + xMainNode=XMLNode::createXMLTopNode(_T("xml"),TRUE); + xMainNode.addAttribute(_T("version"),_T("1.0")); + xNode=xMainNode.addChild(_T("body")); + xNode.addText(_T("Hello \"univ\"!")); + xNode.deleteText(); + xNode.addText(_T("Hello \"universe\"!")); + xNode.addAttribute(_T("color"),_T("#wrongcolor")); + xNode.updateAttribute(_T("#FFFFFF"),NULL,_T("color")); + + t=xMainNode.createXMLString(false); + printf("XMLString created from scratch:\n%S",t); + free(t); + + // we delete some parts: + xNode.deleteAttribute(_T("color")); + t=xMainNode.createXMLString(false); + printf("\nWith the \"color\" attribute deleted:\n%S\n\n",t); + free(t); + + /********************************************************************************************************* + * * + * Example 4: by default, the XML parser is "forgiving" with respect to errors inside XML strings&files * + * * + *********************************************************************************************************/ + + // By default, the XML parser is "forgiving": + // (You can de-activate this behavior: see the header of xmlParser.cpp file) + wchar_t *t2=(wchar_t*)_T("
    some textother text "); + XMLResults xe; + xMainNode=XMLNode::parseString(t2,NULL,&xe); + t=xMainNode.createXMLString(false); + printf("The following XML: %S\n ...is parsed as: %S\nwith the following info: '%S'\n",t2,t?t:_T("(null)"),XMLNode::getError(xe.error)); + free(t); + + /******************************************************* + * * + * Example 5: deleting a part of the tree of XMLNode * + * * + *******************************************************/ + + // this deletes the "other text" subtree part: + xMainNode.getChildNode(_T("b"),1).deleteNodeContent(); + + // To perform the same "delete" as above, we can also do: + // xNode=xMainNode.getChildNode(_T("a")).getChildNode(_T("b"),1); xNode.deleteNodeContent(); xNode=XMLNode::emptyXMLNode; + // If you forget the last part of the delete ("xNode=XMLNode::emptyXMLNode"), then the XMLNode will NOT be deleted: + // As long as there exists a reference to an XMLNode, the smartPointer mechanism prevent the node to be deleted. + + t=xMainNode.createXMLString(false); + printf("\n...with the wrong node deleted: %S\n",t); + free(t); + + /************************************************************************************************************ + * * + * Example 5: inserting (and moving) a new XMLNode in the middle of an already existing XMLNode structure * + * * + ************************************************************************************************************/ + + // This creates a XMLNode 'a' that is "some textother text": + xMainNode=XMLNode::parseString(t2); + // This creates a XMLNode 'c' that is "hello": + xNode=XMLNode::parseString(_T("hello")); + + xMainNode.addChild(xNode,0); + t=xMainNode.createXMLString(false); + printf("\nWe inserted a new node 'c' as the first tag inside 'a':\n %S",t); + free(t); + + xMainNode.addChild(xNode,xMainNode.positionOfChildNode(_T("b"),1)); + t=xMainNode.createXMLString(false); + printf("\nWe moved the node 'c' at the position of the second 'b' tag:\n %S\n",t); + free(t); + + /******************************************* + * * + * Example 6: base 64 encoding/decoding * + * * + *******************************************/ + + unsigned char *originalBinaryData=(unsigned char *)"this is binary data."; + XMLParserBase64Tool b64; + t=b64.encode(originalBinaryData,21); + printf( + "\nTo be able to include any binary data into an xml file, some Base64 conversion" + "\nfunctions (binary data <--> ascii text) are provided:\n" + " original binary data : %s\n" + " encoded as text : %S\n",originalBinaryData,t); + printf(" decoded as binary again: %s\n",b64.decode(t)); + + /****************************************************** + * * + * Example 7: usage of the "getParentNode()" method * + * * + ******************************************************/ + + printf("\nTwo examples of usage of the \"getParentNode()\" method:\n"); + // let's consider these 2 examples (each example on a separate line): + xMainNode=XMLNode::parseString(t2); xNode=xMainNode.getChildNode(); xNode=xNode.getParentNode(); t=(wchar_t*) xNode.getName(); printf(" Ex1: Name of top node; '%S'\n",t?t:_T("null")); + xMainNode=XMLNode::parseString(t2); xMainNode=xMainNode.getChildNode(); xMainNode=xMainNode.getParentNode(); t=(wchar_t*)xMainNode.getName(); printf(" Ex2: Name of top node; '%S'\n",t?t:_T("null")); + // In these two examples, I create a tree of XMLNode based on the string + // "some textother text". After parsing this string + // I get a XMLNode that represents the tag. Thereafter I "go down" one + // level, using getChildNode: I now have a XMLNode that represents the tag. + // Thereafter I "go up" one level, using getParentNode(): I now have once again + // a XMLNode that represents the tag. Thereafter, I print the name ('a') of + // this last XMLNode. The first example is working as intended (it prints 'a' + // on the screen). However, the second example prints "null" because when we + // do xMainNode=xMainNode.getChildNode()" we lost all references to the + // top node and thus it's automatically "garbage collected" (free memory). + + return 0; +}